Disciplina: Arquitetura de Software

Carga Horária: 60 horas

Professora: Carla Rocha (www.carlarocha.org)

Contato: caguiar@unb.br

Ementa: Esta disciplina oferece uma visão abrangente sobre os conceitos, princípios e práticas de arquitetura de software. Aborda estilos arquiteturais, padrões, documentação, avaliação de arquiteturas e estudos de caso de sistemas complexos. Visa capacitar os alunos a projetar, avaliar e evoluir arquiteturas de software robustas e escaláveis.

Objetivos:

Conteúdo Programático:

Módulo 1: Introdução à Arquitetura de Software

  1. Definição e Importância da Arquitetura de Software
  2. Diferença entre Design e Arquitetura de Software
  3. Visão Geral dos Estilos Arquiteturais
  4. Ciclo de Vida da Arquitetura de Software

Módulo 2: Estilos Arquiteturais

  1. Arquitetura em Camadas
  2. Arquitetura de Microserviços
  3. Arquitetura Orientada a Serviços (SOA)
  4. Arquitetura de Eventos
  5. Arquitetura de Sistemas Distribuídos

Módulo 3: Padrões Arquiteturais

  1. Padrões de Criação (Singleton, Factory, Builder)
  2. Padrões Estruturais (Adapter, Composite, Decorator)
  3. Padrões Comportamentais (Observer, Strategy, Command)
  4. Padrões de Integração (Broker, Bridge, Façade)

Módulo 4: Planejamento e Documentação de Arquitetura de Software

  1. Domain Driven Design (DDD)
  2. Importância da Documentação
  3. Modelagem de Arquitetura com UML e outros Diagramas
  4. Ferramentas para Documentação Arquitetural

Módulo 5: Avaliação de Arquitetura de Software

  1. Métodos e Técnicas de Avaliação
  2. Estudos de Caso - arquitetura de engenharia de dados

Módulo 6: Desafios e Tendências em Arquitetura de Software

  1. Escalabilidade e Desempenho
  2. Segurança Arquitetural
  3. Manutenção e Evolução de Arquiteturas
  4. Arquiteturas Emergentes e Futuras Tendências

Metodologia de Trabalho:

  1. Apresentações: Cada aula, um aluno/Dupla apresenta discussão de artigos e trabalhos de um tema específico de arquitetura de software.
  2. Estudo de Caso: Análise e crítica de arquiteturas de sistemas reais.

Aulas (semanas):

Projeto Final* O projeto final consiste na escrita de um artigo, no formato do IEEE (template ICSE), de 6 páginas, escritas preferencialmente em ingles (pode ser em portugues também), com os seguintes requisitos:

Seminário* A cada aula, uma pessoa/dupla vai fazer um seminário na segunda metade da aula. Os temas serão alocados de acordo com o interesse, ou por sorteio. Para cada seminário, a pessoa que vai apresentar o seminário deve compartilhar um artigo referência (com boa reputação) para toda a turma com 1 semana de antecedência para que TODOS possam ler o artigo com antecedência. Aqui estão os temas propostos:

Método de Avaliação:

Bibliografia Básica:

  1. Bass, L., Clements, P., & Kazman, R. (2013). Software Architecture in Practice (3rd ed.). Addison-Wesley.
  2. Richards, M., & Ford, N. (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media.
  3. Shaw, M., & Garlan, D. (1996). Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall.
  4. Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., & Stal, M. (1996). Pattern-Oriented Software Architecture: A System of Patterns. Wiley.

Bibliografia Complementar:

  1. Rozanski, N., & Woods, E. (2011). Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives (2nd ed.). Addison-Wesley.
  2. Kruchten, P. (2004). The Rational Unified Process: An Introduction (3rd ed.). Addison-Wesley.
  3. Taylor, R. N., Medvidovic, N., & Dashofy, E. M. (2009). Software Architecture: Foundations, Theory, and Practice. Wiley.