Arquitetura software

Post on 12-Apr-2017

105 views 0 download

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