O conteúdo da disciplina seguirá a ordem abaixo. Alguns pontos serão apresentados em mais de uma aula.
- Apresentação da disciplina
- Introdução ao projeto de software; princípios de um projeto bem elaborado; estrutura de módulos de software
- Métodos de especificação de um projeto; formato de modelos de especificação
- Projeto de arquitetura de software; participantes; arquiteto de software
- Estilos de arquitetura de software (fluxo de dados; chamada e retorno; componentes independentes; máquinas virtuais; centrados em dados)
- Padrão MVC (Modelo-Visão-Controlador)
- Serviços SOA e RESTful
- Projeto SOA e composição de serviços
- Microserviços web
- Demonstração de APIs REST
- Projeto orientado a objetos
- Geração de código orientado a objetos
- UML (Unified Modeling Language): descrição, objetivos, principais diagramas
- Diagramas de classe (aulas teóricas e práticas, utilizando Eclipse)
- Diagrams de interação: colaboração e sequência (aulas teóricas e práticas, utilizando Eclipse)
- Padrões GRASP (General Responsibility Assignment Patterns)
- Padrões GoF (Gang of Four; Design Patterns)
- Linguagens de projeto de software: uso e projeto de linguagens
- Gestão de elementos de um projeto
- Aulas práticas utilizando framework Loopback
A bibliografia da disciplina está disponível na página principal. Todos os livros da lista contém material sobre design de software. Entretanto, 3 livros bases principais foram usados na organização do conteúdo.
- Arquitetura de projeto de software, estilos, MVC: Sommerville, I., Software Engineering. Addison-Wesley, 1996
- UML, padrões GRASP, GoF: Larman, C. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design Prentice-Hall, New Jersey – USA, 1997
- Geração de código, gestão de modelos: Model-Driven Software Engineering in Practiceby Marco Brambilla, Jordi Cabot, Manuel Wimmer Morgan & Claypool, 2012, 182 pages