# Arquitetura de Software * Curso: Tecnologia em Sistemas para Internet * Disciplina: Arquitetura de Software * Carga-Horária: 60h (80h/a) Pré-Requisito(s): Análise e Projeto Orientados a Objetos Número de créditos: 4 ## EMENTA Definições (arquitetura de software, componente, desenvolvimento baseado com Componentes). Arquitetura de software (AS): elementos básicos de AS, definição de linguagens de descrição arquitetural, padrões arquiteturais, estilos arquiteturais, visões arquiteturais. Propostas de padronização de modelagem. Propostas de padronização de documentação de arquiteturas. ## PROGRAMA ### Objetivos Estimular no estudante o uso de técnicas modernas de desenvolvimento de software. Para este fim serão ensinados os elementos básicos de arquitetura de software e de padrões e estilos de arquiteturas assim como serão apresentadas algumas propostas de padronização de documentação de software. ### Bases Científico-Tecnológicas (Conteúdos) 1. Introdução 1.1. Conceitos e definições 2. Modelagem de Software com UML 2.1. Visão geral da UML 2.2. Diagramas de Casos de uso 2.3. Pacotes, Módulos e Subsistemas 2.4. Diagramas Implantação e Componentes 2.5. Diagramas de Atividades e Estados 2.6. Diagramas de Classes 2.7. Diagramas de Objetos, Sequência e Colaboração 3. Padrões de Projeto 3.1. Conceitos. Tipos e categorias de padrões. 3.2. Padrões Observer, MVC, Proxy, Broker 3.3. Padrões, Adapter, Facace, Factory, Builder, Command 4. Estilos e Padrões arquiteturais 4.1. Cliente-servidor 4.2. Camadas 4.3. Tubos-e-filtros 4.4. Blackboard 4.5. Broker 5. Arquitetura de Software e Atributos de Qualidade 5.1. Atributos de qualidade: modificabilidade, disponibilidade, desempenho, segurança, escalabilidade, usabilidade e outros. 5.2. Táticas e estratégias 5.3. Estilos e padrões e suas relações com atributos e táticas 6. Visões Arquiteturais 6.1. As 4+1 visões de Krutchen 6.2. As 4 visões da Siemens (Hofmeister e outros) 6.3. As 3 visões do SEI 7. Modelos de design arquitetural 7.1. Um modelo geral para o design arquitetural 7.2. Design arquitetural no RUP 7.3. O modelo do SEI 7.4. O modelo da Siemens 8. Linguagens de Descrição Arquitetural 8.1. ADLs 8.2. ACME 8.3. UML 2.0 9. Abordagens para Arquiteturas de Software 9.1. Arquitetura Dirigida por Modelos (MDA) 9.2. Arquitetura Orientada a Serviços (SOA) 9.3. Arquitetura Orientada a Aspectos (AOSD) 9.4. Arquiteturas para Linhas de Produtos de Software (SPL) 10. Tecnologias de desenvolvimento (opcional) 10.1. CORBA 10.2. Arquitetura JEE/EJB 10.3. .Net ### Procedimentos Metodológicos Serão desenvolvidos por meio de aulas expositivas teórico-práticos, seminários, relatórios, integrando com os diferentes saberes. ### Recursos Didáticos Quadro branco e pincel, projetor multimídia, computador, TV/DVD e vídeos. ### Avaliação • Avaliação dos conhecimentos adquiridos pela disciplina. • Trabalhos realizados em grupo e individual por meio de aulas práticas ou teóricas. • Relatórios de pesquisa. ### Bibliografia Básica 1. FREEMAN, E.; et al. Use a cabeça!: Padrões de projetos. 2. ed. rev. Rio de Janeiro: Alta Books, 2009. 2. BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: guia do usuário. Rio de Janeiro: Elsevier, 2012. 3. LARMAN C. Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007. ### Bibliografia Complementar 1. BELL, M. Modelação orientada ao serviço - soa: análise, design e arquitetura de serviços. Rio de Janeiro, RJ: Alta Books, 2008. 2. FOWLER, M. UML essencial: um breve guia para a linguagem-padrão de modelagem de objetos. 3. ed. Porto Alegre: Bookman, 2005. 3. GAMMA, E. et al. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos. Makron Books, 2000 4. KEITH, M; SCHINCARIOL, M. EJB 3 Profissional: Java Persistence API. Rio de Janeiro: Ciência Moderna, 2008. 5. PANDA, D.; RAHMAN, R.; LANE, D. EJB 3 em ação. 2. ed. rev. Rio de Janeiro: Alta Books, 2009. 6. RICHARDS, M. Software Architecture Patterns. O’Reilly, 2015. Disponível em http://www.oreilly.com/programming/free/software-architecture-patterns.csp. Software(s) de Apoio: • Astah Community, Netbeans, Eclipse.