Arquitetura software
-
Upload
fabio-nogueira-de-lucena -
Category
Technology
-
view
105 -
download
0
Transcript of Arquitetura software
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
Direitos autorais
Imagens obtidas da internet
Uso interno apenas
Vamos “limpar” nossa mente eesclarecer algumas questões...
Isso não é uma introdução!
Arquitetura de Software é meio
Objetivos do negócio
Implementaçãodo software
Arquitetura de Software
Requisitos Projeto Construção
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
Especificações de Requisitos de Software
Quem lê?
Especificações de área, volume, dimensões,...
Pessoas preferem “navegar” pelo domínio da solução
Por que usar “documentação executável”?
Estratégia para reduzir riscos.
Requisitos “compreendidos” e executáveis!
Arquitetura que admite testes “facilmente”
Representação (apresentadas como arquitetura)
Mais ilustrações
Mais ilustrações
Mais ilustrações
Outra exemplo
Mais uma representação “bonita”
“Diagrama conceitual” (antes era “arquitetura”)
Java 8(JDK 1.8)
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.
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
Como registrar a “motivação” de uma decisão?
Documenting Architecture DecisionsMichael Nygard
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
De fato, uma arquitetura de software pode ser...
Documentada
Projetada
Analisada
"Arquitetos devem tomar decisões, ...que devem ser documentadas,revisadas e aprovadas, além de servircomo restrição para a futura construção."
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.”
O que é arquitetura de software?
“É o conjunto de estruturas, compostas de elementos e dasrelações entre eles.”
Modelagem da definição de arquitetura
Estruturas e visões
Estruturas
Visões
Documentadas por
Visão A Visão B
Representações distintas (por exemplo, stakeholders distintos)
ISO/IEC/IEEE 42010:2011Systems and SoftwareEngineering -- Architecture Description
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
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)
Exemplo de módulos (SGBD)
Outros exemplos (outros SGBDs)
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?
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?
Exemplo de “alocação”
O que esse diagrama diz?
Se tivermos “muitos” usuários?
Instalar e configurar Adobe Flash => Suporte
Quais são os demais elementos?
1. Web Server2. Apache3. Application Server4. Tomcat5. Servlet (aplicação)6. JVM (omitida)7. JDBC8. Database Server9. MySQL
Qual é o problema?
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
● Configuração complexa● Monitoramento● Instalação● Atualização
Resposta para configurar e instalar
Deploy. Manage systems. Crush complexity.
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
Distribuição (“sem instalação”)
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
Monitorar (antecipar problemas, manter em operação)
Web ServerApacheApplication ServerTomcatServlet (aplicação)JVM (omitida)JDBCDatabase ServerMySQL
Pode exigir uso de JMX
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.
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”
“Uma equipe” vs “Várias” (influência na arquitetura)
Especialização de tarefas Equipes multidisciplinares
Requisitos de qualidade (como me orientar?)
34 páginas!
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)
“Prática” (SGBD)
Database System ImplementationMolina, Ullman e WidomPrentice-Hall, 2000
Componentes de um SGBD(página 7, figura 1.1)
SGBD (recorte para análise)
Query compiler
Execution engine
Simplificação?
Recorte Query compiler para query compilation
Módulos de um compilador
Módulos de um compilador
O que o “mundo” está falando sobre o assunto?
DevOps, Entrega Contínua
Compreender cenários “complexos”
Menos elementosMais elementos, combinação mais complexa, maiores riscos
Visualização (CodeCity) (raio X para software)
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
Alegrem-se na esperança, sejam pacientes na tribulação. Romanos 12:12