Análise e Desenho de Software

Código

01063036

Créditos ECTS

6

Objetivos

  • A. Identificar, analisar, especificar e validar requisitos funcionais de sistemas de software.
  • B. Construir e relacionar modelos de análise e desenho orientados a objetos, utilizando adequadamente a notação UML.
  • C. Conceber soluções de software orientadas a objetos que satisfaçam os requisitos especificados, atribuindo responsabilidades e definindo colaborações entre objetos.
  • D. Selecionar, aplicar e justificar princípios GRASP e padrões GoF adequados à resolução de problemas de desenho orientado a objetos, identificando as suas principais vantagens e limitações.

Programa

  1. Desenvolvimento iterativo de software
    1.1 Abordagens iterativas e incrementais
    1.2 Enquadramento da análise e do desenho no processo de desenvolvimento de software
    1.3 Evolução dos requisitos e dos modelos ao longo das iterações
    1.4 Requisitos funcionais e requisitos não funcionais
    1.5 Identificação, especificação e validação de requisitos
  2. Análise orientada a objetos
    2.1 Modelo de casos de uso e especificações textuais
    2.2 Modelo de domínio
    2.3 Diagramas de sequência do sistema e contratos de operações
  3. Desenho orientado a objetos
    3.1 Diagramas de interação
    3.2 Diagramas de classes de desenho
    3.3 Princípios de desenho GRASP
    3.4 Atribuição de responsabilidades e realização dos casos de uso
  4. Padrões de desenho
    4.1 Conceito, seleção e aplicação de padrões
    4.2 Padrões GoF de criação, estrutura e comportamento
    4.3 Vantagens, limitações e adequação dos padrões aos problemas de desenho

Métodos de Ensino

Ao longo da unidade curricular são utilizadas metodologias de ensino-aprendizagem diversificadas, articulando a apresentação dos fundamentos com a resolução de problemas, a modelação e a análise crítica de soluções.

Nas aulas teórico-práticas são apresentados e discutidos os conceitos fundamentais, recorrendo a exemplos, resolução orientada de exercícios e análise de casos. Estas atividades promovem a participação ativa, a argumentação técnica e o feedback formativo.

Nas aulas práticas laboratoriais, os estudantes constroem, interpretam e relacionam modelos UML, aplicam princípios GRASP e padrões GoF e resolvem problemas de complexidade progressiva com recurso a ferramentas de modelação. As atividades seguem uma abordagem de aprendizagem baseada em problemas, promovendo a mobilização integrada dos conhecimentos, o pensamento crítico e a fundamentação das decisões de desenho.

As horas de contacto assíncronas decorrem através do Moodle e incluem atividades orientadas de preparação e consolidação, designadamente recursos multimédia, leitura orientada, quizzes com feedback automático, resolução de problemas, exercícios de modelação e revisão por pares. Estas atividades promovem a autorregulação e a consolidação progressiva das aprendizagens.

Sempre que adequado, são apresentados exemplos de implementação em Python e Java, valorizando os conhecimentos adquiridos anteriormente e promovendo a articulação com a unidade curricular de Programação Centrada em Objetos, lecionada em simultâneo. Esta estratégia reforça a relação entre modelação e implementação, mantendo a autonomia pedagógica de cada unidade curricular.

No último terço do semestre, os estudantes desenvolvem, em pequenos grupos, um projeto de aplicação centrado na análise e no desenho iterativo de uma solução orientada a objetos. O projeto é acompanhado através de entregas faseadas, discussão e feedback. Quando adequado, pode incidir sobre um problema comum ao projeto de Programação Centrada em Objetos, mantendo-se independentes os resultados de aprendizagem e a avaliação de cada unidade curricular.

O Moodle suporta a disponibilização de recursos, comunicação, submissões, acompanhamento do progresso e feedback formativo.

Bibliografia

Essencial:
- Larman, C. (2004) Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Prentice Hall. ISBN: 978-013-148-906-6
- Freeman, E., Robson, E. (2020). Head first design patterns: Building Extensible and Maintainable Object-Oriented Software. O'Reilly. ISBN: 978-1-492-07800-5

Complementar:
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns: Elements of reusable object-oriented software. Addison-Wesley. ISBN: 978-0-201-63361-0.
- Rumbaugh, J., Jacobson, I., & Booch, G. (2004). The unified modeling language reference manual (2nd ed.). Addison-Wesley. ISBN: 978-0-321-24562-5.

Método de Avaliação