arquitetura software
TRANSCRIPT
![Page 1: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/1.jpg)
Arquitetura de SoftwareQuestões relevantes, geralmente não abordadas
Fábio Nogueira de LucenaInstituto de Informática (UFG)
XVI Jornada Goiana em Engenharia de Software
![Page 2: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/2.jpg)
Direitos autorais
Imagens obtidas da internet
Uso interno apenas
![Page 3: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/3.jpg)
Vamos “limpar” nossa mente eesclarecer algumas questões...
Isso não é uma introdução!
![Page 4: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/4.jpg)
Arquitetura de Software é meio
Objetivos do negócio
Implementaçãodo software
Arquitetura de Software
Requisitos Projeto Construção
![Page 5: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/5.jpg)
Visão funcional
Definir a Arquitetura de Software
Requisitos
Conhecimento; Experiência; “Plágio”; Intuição; Restrições; ...
Representação daArquitetura de Software
Processo definido por
![Page 6: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/6.jpg)
Especificações de Requisitos de Software
Quem lê?
![Page 7: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/7.jpg)
Especificações de área, volume, dimensões,...
Pessoas preferem “navegar” pelo domínio da solução
![Page 8: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/8.jpg)
Por que usar “documentação executável”?
Estratégia para reduzir riscos.
Requisitos “compreendidos” e executáveis!
Arquitetura que admite testes “facilmente”
![Page 9: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/9.jpg)
Representação (apresentadas como arquitetura)
![Page 10: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/10.jpg)
Mais ilustrações
![Page 11: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/11.jpg)
Mais ilustrações
![Page 12: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/12.jpg)
Mais ilustrações
![Page 13: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/13.jpg)
Outra exemplo
![Page 14: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/14.jpg)
Mais uma representação “bonita”
![Page 15: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/15.jpg)
“Diagrama conceitual” (antes era “arquitetura”)
Java 8(JDK 1.8)
![Page 16: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/16.jpg)
Contexto (escopo)
Arquitetura Corporativa
Arquitetura de Sistema
Arquitetura de
Software
Impõe restrições
Impõe restrições
hardware + software + pessoas
Como software apoia objetivos do negócio?
Sistema. LZFSE oferece baixo consumo de energia.
Corporativa. Departamento ocioso, que usa Python é agregado ao projeto.
![Page 17: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/17.jpg)
Todo software possui uma arquitetura
Qualquer software pode ser “pensado” pelos seus elementos e relações.
Todo software possui uma arquitetura,mesmo que seja desconhecida
Documentaçãoda arquitetura
Arquitetura de
Software
Existe independente da documentação
![Page 18: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/18.jpg)
Como registrar a “motivação” de uma decisão?
Documenting Architecture DecisionsMichael Nygard
![Page 19: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/19.jpg)
Nem todas arquiteturas são iguais
Arquitetura pode permitir ou inibir um requisito
Dadas duas arquiteturas, uma pode ser“melhor” que a outra
Tentativa & Erro Design Avaliação
Inaceitável
![Page 20: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/20.jpg)
De fato, uma arquitetura de software pode ser...
Documentada
Projetada
Analisada
![Page 21: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/21.jpg)
"Arquitetos devem tomar decisões, ...que devem ser documentadas,revisadas e aprovadas, além de servircomo restrição para a futura construção."
![Page 22: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/22.jpg)
On Architecture: The Accidental ArchitectureGrady Booch,IEEE Podcast
“Arquitetura acidental surge como resultado de numerosas decisões ao longo do desenvolvimento.”
“Arquitetura intencional é uma arquitetura explicitamente identificada e só então implementada.”
![Page 23: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/23.jpg)
O que é arquitetura de software?
“É o conjunto de estruturas, compostas de elementos e dasrelações entre eles.”
![Page 24: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/24.jpg)
Modelagem da definição de arquitetura
![Page 25: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/25.jpg)
Estruturas e visões
Estruturas
Visões
Documentadas por
Visão A Visão B
Representações distintas (por exemplo, stakeholders distintos)
![Page 26: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/26.jpg)
ISO/IEC/IEEE 42010:2011Systems and SoftwareEngineering -- Architecture Description
![Page 27: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/27.jpg)
Categorias de estruturas(estática) Módulos
Divide o sistema em unidades de implementação, distribui responsabilidades
Base para atribuição de tarefas a equipes de programação
Estrutura estática (classes, camadas, …)
(dinâmica) C&C (component-and-conector)
Componente = entidade que existe apenas em tempo de execução
Estrutura dinâmica
Foco na interação entre os elementos da estrutura
Alocação
Mapeamento das estruturas em:
Ambientes de execução
Instalação
Desenvolvimento
![Page 28: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/28.jpg)
Estruturas de módulos (estática)
Qual a principal responsabilidade?
Quais elementos um módulo pode usar?
Quais os módulos usados por um módulo?
Quais os relacionamentos entre módulos? (herança)
![Page 29: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/29.jpg)
Exemplo de módulos (SGBD)
![Page 30: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/30.jpg)
Outros exemplos (outros SGBDs)
![Page 31: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/31.jpg)
Estruturas C&C
Quais os principais componentes em execução?
Como interagem em tempo de execução?
Quais partes do sistema são executadas em paralelo?
![Page 32: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/32.jpg)
Alocação
Em qual processador cada elemento de software é executado?
Em quais diretórios cada elemento é armazenado durante o desenvolvimento?
E durante os testes e building?
Qual equipe desenvolve cada elemento?
![Page 33: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/33.jpg)
Exemplo de “alocação”
O que esse diagrama diz?
![Page 34: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/34.jpg)
Se tivermos “muitos” usuários?
Instalar e configurar Adobe Flash => Suporte
![Page 35: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/35.jpg)
Quais são os demais elementos?
1. Web Server2. Apache3. Application Server4. Tomcat5. Servlet (aplicação)6. JVM (omitida)7. JDBC8. Database Server9. MySQL
![Page 36: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/36.jpg)
Qual é o problema?
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
● Configuração complexa● Monitoramento● Instalação● Atualização
![Page 37: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/37.jpg)
Resposta para configurar e instalar
Deploy. Manage systems. Crush complexity.
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
![Page 38: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/38.jpg)
Distribuição (“sem instalação”)
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
![Page 39: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/39.jpg)
Monitorar (antecipar problemas, manter em operação)
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
Pode exigir uso de JMX
![Page 40: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/40.jpg)
Ligação com tecnologia
Por que Tomcat?
● Java○ Jetty, WebLogic, Glassfish,
JBoss, JOnAS, Resin, WildFly, …○ GAE (Google)○ Netty○ Spray○ Grizzly○ Vert.x○ Mina
● Windows○ .Net Core (Web API)○ .Net Framework
● C○ libmicrohttpd, facil.io, libuv,
nanomsg, lighttpd, ...
Algumas opções:
Arquiteturas lógicas e físicas.
![Page 41: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/41.jpg)
Estrutura “preferida”: decomposição
Tende a “dirigir” a estrutura do projeto por “espelhar” a estrutura de equipes de desenvolvimento.
“Organizações que projetam sistemas… tendem a produzir projetos que são cópias das estruturas de comunicação dessas organizações.” Lei de Conway.
Pesquisadores do MIT e Harvard Business School“Equipes distribuídas tendem a desenvolver software mais modular”
![Page 42: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/42.jpg)
“Uma equipe” vs “Várias” (influência na arquitetura)
Especialização de tarefas Equipes multidisciplinares
![Page 43: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/43.jpg)
Requisitos de qualidade (como me orientar?)
34 páginas!
![Page 44: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/44.jpg)
Nem todos os requisitos de qualidade são RARs
RAR: Requisito Arquiteturalmente Relevante
Stakeholders distintos, interferências distintas.
Stakeholder “relevante” (SR) r1, r2, …, rn (definidos pelo SR)
Subconjunto relevante = { si, sj, sk }(priorizados)
![Page 45: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/45.jpg)
“Prática” (SGBD)
Database System ImplementationMolina, Ullman e WidomPrentice-Hall, 2000
Componentes de um SGBD(página 7, figura 1.1)
![Page 46: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/46.jpg)
SGBD (recorte para análise)
Query compiler
Execution engine
Simplificação?
![Page 47: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/47.jpg)
Recorte Query compiler para query compilation
![Page 48: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/48.jpg)
Módulos de um compilador
![Page 49: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/49.jpg)
Módulos de um compilador
![Page 50: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/50.jpg)
O que o “mundo” está falando sobre o assunto?
DevOps, Entrega Contínua
![Page 51: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/51.jpg)
Compreender cenários “complexos”
Menos elementosMais elementos, combinação mais complexa, maiores riscos
![Page 52: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/52.jpg)
Visualização (CodeCity) (raio X para software)
![Page 53: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/53.jpg)
Seria bom estar lá...
Um dos mini-cursos:We’ll focus on the eight core principles
stability, reliability, performance, scalability, fault-tolerance, catastrophe-preparedness, monitoring, and documentation.
Susan FowlerReliability engineer at Uber
![Page 54: Arquitetura software](https://reader036.vdocuments.mx/reader036/viewer/2022070600/58cefe221a28abab738b6127/html5/thumbnails/54.jpg)
Alegrem-se na esperança, sejam pacientes na tribulação. Romanos 12:12