SlideShare uma empresa Scribd logo
1 de 54
Arquitetura de Software
Questões relevantes, geralmente não abordadas
Fábio Nogueira de Lucena
Instituto de Informática (UFG)
XVI Jornada Goiana em Engenharia de Software
Direitos autorais
Imagens obtidas da internet
Uso interno apenas
Vamos “limpar” nossa mente e
esclarecer algumas questões...
Isso não é uma introdução!
Arquitetura de Software é meio
Objetivos do
negócio
Implementação
do 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 da
Arquitetura de Software
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
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ção
da arquitetura
Arquitetura
de Software
Existe independente da documentação
Como registrar a “motivação” de uma decisão?
Documenting Architecture Decisions
Michael 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 servir
como restrição para a futura construção."
On Architecture: The Accidental Architecture
Grady 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 das
relaçõ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:2011
Systems and Software
Engineering --
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
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 Server
2. Apache
3. Application Server
4. Tomcat
5. Servlet (aplicação)
6. JVM (omitida)
7. JDBC
8. Database Server
9. MySQL
Qual é o problema?
Web Server
Apache
Application Server
Tomcat
Servlet (aplicação)
JVM (omitida)
JDBC
Database Server
MySQL
● Configuração complexa
● Monitoramento
● Instalação
● Atualização
Resposta para configurar e instalar
Deploy. Manage systems. Crush complexity.
Web Server
Apache
Application Server
Tomcat
Servlet (aplicação)
JVM (omitida)
JDBC
Database Server
MySQL
Distribuição (“sem instalação”)
Web Server
Apache
Application Server
Tomcat
Servlet (aplicação)
JVM (omitida)
JDBC
Database Server
MySQL
Monitorar (antecipar problemas, manter em operação)
Web Server
Apache
Application Server
Tomcat
Servlet (aplicação)
JVM (omitida)
JDBC
Database Server
MySQL
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)
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 Implementation
Molina, Ullman e Widom
Prentice-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 elementos
Mais 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 Fowler
Reliability engineer at Uber
Alegrem-se na esperança, sejam
pacientes na tribulação.
Romanos 12:12

Mais conteúdo relacionado

Mais procurados

A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - IntroduçãoSergio Crespo
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwarePeter Jandl Junior
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareJairo Junior
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANEFco Edilson Nascimento
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareTiago Sciencia
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
Processo de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidadeProcesso de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidadeLuiz Matos
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Javaarmeniocardoso
 

Mais procurados (20)

A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - Introdução
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Análise de Sistemas Orientado a Objetos - 01
Análise de Sistemas Orientado a Objetos - 01Análise de Sistemas Orientado a Objetos - 01
Análise de Sistemas Orientado a Objetos - 01
 
Arquitetura de Sofware
Arquitetura de SofwareArquitetura de Sofware
Arquitetura de Sofware
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de software
 
Análise de Sistemas Orientado a Objetos - 05
Análise de Sistemas Orientado a Objetos - 05Análise de Sistemas Orientado a Objetos - 05
Análise de Sistemas Orientado a Objetos - 05
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Processo de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidadeProcesso de Desenvolvimento MDA: metodologias e agilidade
Processo de Desenvolvimento MDA: metodologias e agilidade
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Java
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 

Destaque

03 Modelo de processo de software
03 Modelo de processo de software03 Modelo de processo de software
03 Modelo de processo de softwareWaldemar Roberti
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureSARCCOM
 
Android N, Java 8, Android Studio 2.2?
Android N, Java 8, Android Studio 2.2?Android N, Java 8, Android Studio 2.2?
Android N, Java 8, Android Studio 2.2?Marcelo Quinta
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture IntroductionSARCCOM
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoFábio Nogueira de Lucena
 

Destaque (6)

Gestão de Equipes de Projetos
Gestão de Equipes de ProjetosGestão de Equipes de Projetos
Gestão de Equipes de Projetos
 
03 Modelo de processo de software
03 Modelo de processo de software03 Modelo de processo de software
03 Modelo de processo de software
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Android N, Java 8, Android Studio 2.2?
Android N, Java 8, Android Studio 2.2?Android N, Java 8, Android Studio 2.2?
Android N, Java 8, Android Studio 2.2?
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógico
 

Semelhante a Arquitetura software

Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkMatteus Barbosa
 
Construindo uma arquitetura com REST, HTML 5 e JSF 2
Construindo uma arquitetura com REST, HTML 5 e JSF 2Construindo uma arquitetura com REST, HTML 5 e JSF 2
Construindo uma arquitetura com REST, HTML 5 e JSF 2Raphael Adrien
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Elton Minetto
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Alessandro Almeida
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docxJulioCesar371362
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoftMarcius Brandão
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAna Claudia Annunciação
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a AspectoBenicio Ávila
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Lenin Abadie
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Opencadd Advanced Technology
 

Semelhante a Arquitetura software (20)

Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity Framework
 
Construindo uma arquitetura com REST, HTML 5 e JSF 2
Construindo uma arquitetura com REST, HTML 5 e JSF 2Construindo uma arquitetura com REST, HTML 5 e JSF 2
Construindo uma arquitetura com REST, HTML 5 e JSF 2
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
UMLIntro.pptx
UMLIntro.pptxUMLIntro.pptx
UMLIntro.pptx
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6Engenharia de Software I - Aula 6
Engenharia de Software I - Aula 6
 
06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx06-engenharia de softwere Análise e Projeto de Software.docx
06-engenharia de softwere Análise e Projeto de Software.docx
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertido
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
UMLIntro.pdf
UMLIntro.pdfUMLIntro.pdf
UMLIntro.pdf
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
Openday PUC-RIO - Ferramenta gráfica para modelagem e análise em Engenharia E...
 

Mais de Fábio Nogueira de Lucena

Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Fábio Nogueira de Lucena
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Fábio Nogueira de Lucena
 

Mais de Fábio Nogueira de Lucena (20)

CSS
CSSCSS
CSS
 
Fundamentos de Programação Front-End
Fundamentos de Programação Front-EndFundamentos de Programação Front-End
Fundamentos de Programação Front-End
 
JavaScript: Aprendendo a programar
JavaScript: Aprendendo a programarJavaScript: Aprendendo a programar
JavaScript: Aprendendo a programar
 
HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)HTML5: Primeiros Contatos (visão geral)
HTML5: Primeiros Contatos (visão geral)
 
HTTP: Um Curso Básico
HTTP: Um Curso BásicoHTTP: Um Curso Básico
HTTP: Um Curso Básico
 
Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08Apresentacao curso-2017-08-08
Apresentacao curso-2017-08-08
 
Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017Jornada Goiana em Engenharia de Software 2017
Jornada Goiana em Engenharia de Software 2017
 
Arquétipos
ArquétiposArquétipos
Arquétipos
 
Introducao integracao
Introducao integracaoIntroducao integracao
Introducao integracao
 
Healthdb Visão Geral
Healthdb Visão GeralHealthdb Visão Geral
Healthdb Visão Geral
 
Prontuário Eletrônico do Paciente
Prontuário Eletrônico do PacienteProntuário Eletrônico do Paciente
Prontuário Eletrônico do Paciente
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 
Introducao
IntroducaoIntroducao
Introducao
 
Uml
UmlUml
Uml
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Orientação a Objetos (3)
Orientação a Objetos (3)Orientação a Objetos (3)
Orientação a Objetos (3)
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Orientação a Objetos (1)
Orientação a Objetos (1)Orientação a Objetos (1)
Orientação a Objetos (1)
 
Cs 1
Cs 1Cs 1
Cs 1
 
Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)Orientação a objetos (tecnologias)
Orientação a objetos (tecnologias)
 

Último

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Arquitetura software

  • 1. Arquitetura de Software Questões relevantes, geralmente não abordadas Fábio Nogueira de Lucena Instituto de Informática (UFG) XVI Jornada Goiana em Engenharia de Software
  • 2. Direitos autorais Imagens obtidas da internet Uso interno apenas
  • 3. Vamos “limpar” nossa mente e esclarecer algumas questões... Isso não é uma introdução!
  • 4. Arquitetura de Software é meio Objetivos do negócio Implementação do software Arquitetura de Software Requisitos Projeto Construção
  • 5. Visão funcional Definir a Arquitetura de Software Requisitos Conhecimento; Experiência; “Plágio”; Intuição; Restrições; ... Representação da Arquitetura de Software
  • 6. Especificações de Requisitos de Software Quem lê?
  • 7. Especificações de área, volume, dimensões,... Pessoas preferem “navegar” pelo domínio da solução
  • 8. Por que usar “documentação executável”? Estratégia para reduzir riscos. Requisitos “compreendidos” e executáveis! Arquitetura que admite testes “facilmente”
  • 14. Mais uma representação “bonita”
  • 15. “Diagrama conceitual” (antes era “arquitetura”) Java 8 (JDK 1.8)
  • 16. Contexto (escopo) Arquitetura Corporativa Arquitetura de Sistema Arquitetura de Software 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.
  • 17. 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ção da arquitetura Arquitetura de Software Existe independente da documentação
  • 18. Como registrar a “motivação” de uma decisão? Documenting Architecture Decisions Michael Nygard
  • 19. 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
  • 20. De fato, uma arquitetura de software pode ser... Documentada Projetada Analisada
  • 21. "Arquitetos devem tomar decisões, ... que devem ser documentadas, revisadas e aprovadas, além de servir como restrição para a futura construção."
  • 22. On Architecture: The Accidental Architecture Grady 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.”
  • 23. O que é arquitetura de software? “É o conjunto de estruturas, compostas de elementos e das relações entre eles.”
  • 24. Modelagem da definição de arquitetura
  • 25. Estruturas e visões Estruturas Visões Documentadas por Visão A Visão B Representações distintas (por exemplo, stakeholders distintos)
  • 27. 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
  • 28. 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)
  • 31. 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?
  • 32. 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?
  • 33. Exemplo de “alocação” O que esse diagrama diz?
  • 34. Se tivermos “muitos” usuários? Instalar e configurar Adobe Flash => Suporte
  • 35. Quais são os demais elementos? 1. Web Server 2. Apache 3. Application Server 4. Tomcat 5. Servlet (aplicação) 6. JVM (omitida) 7. JDBC 8. Database Server 9. MySQL
  • 36. Qual é o problema? Web Server Apache Application Server Tomcat Servlet (aplicação) JVM (omitida) JDBC Database Server MySQL ● Configuração complexa ● Monitoramento ● Instalação ● Atualização
  • 37. Resposta para configurar e instalar Deploy. Manage systems. Crush complexity. Web Server Apache Application Server Tomcat Servlet (aplicação) JVM (omitida) JDBC Database Server MySQL
  • 38. Distribuição (“sem instalação”) Web Server Apache Application Server Tomcat Servlet (aplicação) JVM (omitida) JDBC Database Server MySQL
  • 39. Monitorar (antecipar problemas, manter em operação) Web Server Apache Application Server Tomcat Servlet (aplicação) JVM (omitida) JDBC Database Server MySQL Pode exigir uso de JMX
  • 40. 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.
  • 41. 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”
  • 42. “Uma equipe” vs “Várias” (influência na arquitetura) Equipes multidisciplinares
  • 43. Requisitos de qualidade (como me orientar?) 34 páginas!
  • 44. 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)
  • 45. “Prática” (SGBD) Database System Implementation Molina, Ullman e Widom Prentice-Hall, 2000 Componentes de um SGBD (página 7, figura 1.1)
  • 46. SGBD (recorte para análise) Query compiler Execution engine Simplificação?
  • 47. Recorte Query compiler para query compilation
  • 48. Módulos de um compilador
  • 49. Módulos de um compilador
  • 50. O que o “mundo” está falando sobre o assunto? DevOps, Entrega Contínua
  • 51. Compreender cenários “complexos” Menos elementos Mais elementos, combinação mais complexa, maiores riscos
  • 53. 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 Fowler Reliability engineer at Uber
  • 54. Alegrem-se na esperança, sejam pacientes na tribulação. Romanos 12:12