====== Análise e Projeto de Sistemas - 2024.2 ====== * [[https://docs.google.com/spreadsheets/d/e/2PACX-1vSj5mSu54Fw5Hk-xV7SSdmK5O_ZeN9bLyTZU0NVkl3bc02qwZJUXtsfOrgXGotg9-EhC-InLXTUrZj2/pubhtml?gid=1631512145|Plano de curso e controle de faltas]] * Registro de presença: [[https://forms.gle/VkFqmfRKVkKouJyeA]] * Canal no Discord: [[https://discord.gg/JBAkd2fdhn]] * [[..:..:configure_discord|Configure o Discord]] === Ementa === Técnicas avançadas de Análise e Projeto de Software empregadas no desenvolvimento de software. Técnicas utilizadas para melhorar o reuso de software usando o paradigma de Orientação a Objeto. Projeto de arquitetura de software. Padrões para atribuição de responsabilidades. Padrões de projeto. === Objetivos === Capacitar os alunos a utilizar técnicas avançadas de análise e projeto de software no desenvolvimento de sistemas robustos, reutilizáveis e de fácil manutenção. O curso busca proporcionar uma compreensão profunda do paradigma de orientação a objetos, promovendo o uso de boas práticas como princípios SOLID, padrões GRASP e padrões de projeto, além de abordar a modelagem de arquiteturas de software. Por meio de um projeto prático integrado, os alunos aplicam os conceitos em cenários reais, consolidando o aprendizado teórico na prática. === Conteúdo === - Revisão de Java e introdução ao desenvolvimento de projetos: Conceitos fundamentais de Java, Git, controle de versão e persistência de dados. - Padrões GRASP: Atribuição de responsabilidades com foco em coesão, acoplamento e boas práticas de design. - Princípios SOLID: Técnicas para garantir reuso, extensibilidade e manutenção de código. - Arquitetura de software: Modelos arquiteturais, camadas, microsserviços, APIs RESTful e modelagem com C4Model. - Padrões de projeto: Aplicação prática de padrões comportamentais, estruturais e criacionais. === Habilidades e Competências === Ao final da disciplina, os alunos serão capazes de: - Analisar requisitos de sistemas e projetar soluções orientadas a objetos. - Utilizar padrões GRASP, princípios SOLID e padrões de projeto para melhorar a qualidade do código. - Desenvolver software reutilizável, coeso e com baixo acoplamento. - Projetar arquiteturas de software em camadas, aplicando conceitos de APIs RESTful e microsserviços. - Aplicar padrões de projeto comportamentais, estruturais e criacionais em soluções práticas. === Metodologia === A disciplina será conduzida de forma prática e dinâmica, com atividades de laboratório realizadas em todas as aulas. A cada encontro, os alunos terão contato com conteúdos teóricos que serão imediatamente aplicados no desenvolvimento de um projeto individual. Esse projeto será incrementado ao longo do curso, permitindo a aplicação direta de conceitos como princípios de design, padrões de responsabilidade, modelagem arquitetural e padrões de projeto. A integração entre teoria e prática visa fortalecer o aprendizado por meio da experimentação e resolução de problemas reais. === Procedimentos de Avaliação da Aprendizagem === A avaliação será realizada de forma contínua e prática, com foco no progresso e na qualidade do projeto individual. Durante as apresentações agendadas, o professor solicitará que os alunos realizem alterações e implementações específicas no projeto em tempo real, avaliando sua compreensão, capacidade de adaptação e domínio dos conceitos aplicados. A avaliação considerará critérios como a correta aplicação de padrões, coesão do código, reuso, e alinhamento com boas práticas de desenvolvimento, além da clareza na apresentação das soluções propostas.