SlideShare uma empresa Scribd logo
Arquitetura de Software
Compreendendo o livro
Software Architecture in Practice
Len Bass et al., Addison-Wesley, 3rd edition, 2013
Fábio Nogueira de Lucena
Instituto de Informática (UFG)
2017
Direitos autorais
Slides produzidos a partir do conteúdo do livro
Software Architecture in Practice
Len Bass, Paul Clements e Rick Kazman
Addion-Wesley, 3rd edition, 2013.
Direitos autorais
As imagens contidas nos slides foram obtidas via Google Search, com a opção
avançada de direitos autorais definidas para
noncommercial reuse
O que é
arquitetura de software?
Páginas 3-24
Sistemas de software são construídos para
satisfazer objetivos de negócio de organizações.
Objetivo de negócio
Business goal define o propósito
pelo qual um sistema é construído.
A arquitetura é projetada para
satisfazer esse propósito.
Objetivo de negócio fomenta
requisito de qualidade (arquitetural)...
Ampliar a presença no mercado
Software mais “rápido” e “mais eficiente”.
Objetivos
(negócio) Software
Arquitetura de
Software
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
Arquitetura de Software
Requisitos
(entrada)
Projeto arquitetural
(processo)
Documentação da arquitetura
(saída)
Documentação pode ser utilizada para a
implementação ou para a avaliação.
Uma arquitetura de software pode ser...
Documentada Projetada Analisada
O que é
arquitetura de software?
Como “pensar” uma solução de software?
Como analisar ou entender uma solução existente?
O que é arquitetura de software?
“É o conjunto de estruturas,
compostas de elementos e das
relações entre eles.”
Quais são os tipos de estruturas?
Módulos
Componente-e-conector
Alocação
Módulos
Módulo
Divide o sistema em unidade de implementação
Possui uma responsabilidade computacional
Define a unidade de trabalho de equipes de programação
Unidade estática (ênfase está na divisão da funcionalidade do sistema)
Exemplos
Banco de dados
Regras de negócio
Interface com o usuário, ...
Módulo
Registra as decisões acerca de como o sistema será estruturado como um
conjunto de unidades de código e dados.
Um módulo é uma classe, camadas ou simples divisão da funcionalidade, cada
um deles uma unidade de implementação.
Questões que são respondidas por módulos
Quais as principais responsabilidades atribuídas a cada módulo?
Qual a relação de uso entre os módulos?
Qual a relação de herança entre os módulos?
Qual a relação de composição entre os módulos?
Módulos
(exemplos)
Divisão de responsabilidade, uso, decomposição
Módulos (exemplo) (1/18)
HealthDB
(camadas)
Módulos (exemplo) (2/18)
HealthDB
Módulos (exemplo) (3/18)
Módulos (exemplo) (4/18)
Módulos (exemplo) (5/18)
Módulos (exemplo) (6/18)
Módulos (exemplo) (7/18)
Módulos (exemplo) (8/18)
Módulos (exemplo) (9/18)
Módulos (exemplo) (10/18)
Módulos (exemplo) (11/18)
Módulos (exemplo) (12/18)
Módulos (exemplo) (13/18)
Módulos (exemplo) (14/18)
Módulos (exemplo) (15/18)
Módulos (exemplo) (16/18)
Imagem obtida de
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
Módulos (exemplo) (17/18)
Imagem obtida de
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
Módulos (exemplo) (18/18)
Módulos
(exemplos)
Classes (típicas de análise e projeto orientado a objetos)
Módulos (exemplo) (1/4)
Módulos (exemplo) (2/4)
Módulos (exemplo) (3/4)
Módulos (exemplo) (4/4)
Módulos
(exemplos)
Modelo de dados
Módulos (exemplo) (18/18)
Módulos (exemplo) (18/18)
Módulos (exemplo) (18/18)
Módulos (exemplo) (4/4)
Módulos
(revisão)
Verifique as respostas para as questões abaixo?
Quais as principais responsabilidades atribuídas a cada módulo?
Pode ser necessário um breve texto
Qual a relação de uso entre os módulos?
Provavelmente um diagrama de classes com dependências
Qual a relação de herança entre os módulos?
Um diagrama de classes com as heranças entre os módulos
Qual a relação de composição entre os módulos?
Novamente um diagrama de classes com packages que são refinados
(decompostos) para ilustrar a composição.
Componente-e-Conector
Componente-e-Conector
Explicita decisões arquiteturais nas quais o
sistema é estruturado como um conjunto de
elementos que possuem comportamento em
tempo de execução (componentes) e interações
(conectores)
Componentes (exemplos)
Serviço (pagamento online)
Serviço (verificação de endereço com base em CEP)
Serviço (emissão de nota fiscal eletrônica)
Clientes (interface gráfica em smartphone, em browser, …)
Servidor de arquivos, banco de dados, ...
Quais as questões respondidas?
Quais as principais componentes e como eles interagem em tempo de
execução?
Quais são os principais “shared data stores”?
Quais partes do sistema podem ser replicadas?
Quais partes do sistema podem ser executadas em paralelo?
Disponível em https://github.com/kyriosdata/bsus
Disponível em http://www.uml-diagrams.org/component-diagrams.html
Disponível em
http://www.site.uottawa.ca/~tcl/gradtheses/mnojoumian/ThesisFiles/FinalSpec/UML/images/UML_img_167.jpg
Disponível em https://distrinet.cs.kuleuven.be/software/digitalpublishing/html/architectureP1.png
Táticas
Lidando com requisitos “clássicos”
Disponibilidade (availability)
99%, 3 dias e 15.6 horas indisponíveis em um ano
1% de 365 * 24 = 8760 horas é 87,6 horas, 72 horas (3 dias) + 15.6 horas
99.9%, 8 horas, 0 minutos e 46 segundos indisponíveis em um ano
99.99%, 52 minutos, 34 segundos
99.999%, 5 minutos, 15 segundos
99.9999%, 32 segundos indisponíveis por ano
Disponibilidade (tática)
Detectar falha
Recuperar (da falha)
Prevenir
Disponibilidade (tática “detectar”)
Ping/Echo
Monitor
Heartbeat
Timestamp
Sanity Checking
Condition monitoring
Voting
Exception detection

Mais conteúdo relacionado

Mais procurados

Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
Nécio de Lima Veras
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
Sérgio Souza Costa
 
Sistemas operativos ficha formativa nº3 - resolução
Sistemas operativos   ficha formativa nº3 - resoluçãoSistemas operativos   ficha formativa nº3 - resolução
Sistemas operativos ficha formativa nº3 - resolução
teacherpereira
 

Mais procurados (20)

Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Sistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dadosSistema de gerenciamento de banco de dados
Sistema de gerenciamento de banco de dados
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
 
Modelo TCP/IP
Modelo TCP/IPModelo TCP/IP
Modelo TCP/IP
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
Aula 3 - Redes de Computadores A - Administração da Internet. Modelo TCP/IP.
 
Introdução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de DadosIntrodução a modelagem de dados - Banco de Dados
Introdução a modelagem de dados - Banco de Dados
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Modelagem de Dados
Modelagem de DadosModelagem de Dados
Modelagem de Dados
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
 
Sistemas operativos ficha formativa nº3 - resolução
Sistemas operativos   ficha formativa nº3 - resoluçãoSistemas operativos   ficha formativa nº3 - resolução
Sistemas operativos ficha formativa nº3 - resolução
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 

Destaque

Final copy lra conflict uganda
Final copy lra conflict ugandaFinal copy lra conflict uganda
Final copy lra conflict uganda
Kelli Kling
 
LRA Presentation 1
LRA Presentation 1LRA Presentation 1
LRA Presentation 1
ildikoscurr
 
Gj Sue Tr Policy
Gj Sue Tr PolicyGj Sue Tr Policy
Gj Sue Tr Policy
CallieO
 
C-LRA Program Evaluation and Needs Assessment
C-LRA Program Evaluation and Needs AssessmentC-LRA Program Evaluation and Needs Assessment
C-LRA Program Evaluation and Needs Assessment
Robert Grossman-Vermaas
 
LRA Investor Presentation 13 05-17
LRA Investor Presentation 13 05-17 LRA Investor Presentation 13 05-17
LRA Investor Presentation 13 05-17
Lara_Exploration
 

Destaque (20)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 
Cs 2
Cs 2Cs 2
Cs 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?
Android N, Java 8, Android Studio 2.2?
 
Engenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógicoEngenharia de Software - planejamento pedagógico
Engenharia de Software - planejamento pedagógico
 
ingenieria del software
ingenieria del softwareingenieria del software
ingenieria del software
 
Calidad De Software Diapositivas
Calidad De Software DiapositivasCalidad De Software Diapositivas
Calidad De Software Diapositivas
 
Final copy lra conflict uganda
Final copy lra conflict ugandaFinal copy lra conflict uganda
Final copy lra conflict uganda
 
LRA Presentation 1
LRA Presentation 1LRA Presentation 1
LRA Presentation 1
 
LRA Presentation (1)
LRA Presentation (1)LRA Presentation (1)
LRA Presentation (1)
 
Social Software und Web 2.0: Semantic Wikis, Social Tagging und eLearning 2.0
Social Software und Web 2.0: Semantic Wikis, Social Tagging und eLearning 2.0Social Software und Web 2.0: Semantic Wikis, Social Tagging und eLearning 2.0
Social Software und Web 2.0: Semantic Wikis, Social Tagging und eLearning 2.0
 
Gj Sue Tr Policy
Gj Sue Tr PolicyGj Sue Tr Policy
Gj Sue Tr Policy
 
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Desenhando Componentes de Software com UML
Desenhando Componentes de Software com UMLDesenhando Componentes de Software com UML
Desenhando Componentes de Software com UML
 
C-LRA Program Evaluation and Needs Assessment
C-LRA Program Evaluation and Needs AssessmentC-LRA Program Evaluation and Needs Assessment
C-LRA Program Evaluation and Needs Assessment
 
LRA Investor Presentation 13 05-17
LRA Investor Presentation 13 05-17 LRA Investor Presentation 13 05-17
LRA Investor Presentation 13 05-17
 

Semelhante a Arquitetura de Software EXPLICADA

ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO Metodologia
Marcos Yonamine
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
elliando dias
 
Geracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo MrackGeracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo Mrack
Marcelo Mrack
 

Semelhante a Arquitetura de Software EXPLICADA (20)

Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Artc 1249307788 43
Artc 1249307788 43Artc 1249307788 43
Artc 1249307788 43
 
Zachman framework
Zachman frameworkZachman framework
Zachman framework
 
Aula4-modelagem e uml
Aula4-modelagem e umlAula4-modelagem e uml
Aula4-modelagem e uml
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
Sql01 final
Sql01 finalSql01 final
Sql01 final
 
ApresentaçãO Metodologia
ApresentaçãO MetodologiaApresentaçãO Metodologia
ApresentaçãO Metodologia
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade 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ão
 
Geracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo MrackGeracao Automatica Assistida Iu Marcelo Mrack
Geracao Automatica Assistida Iu Marcelo Mrack
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Artigo c#
Artigo c#Artigo c#
Artigo c#
 
Logica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxLogica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptx
 
1.pdf
1.pdf1.pdf
1.pdf
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Merlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginasMerlinferramentassbc2006 Revisado Em6paginas
Merlinferramentassbc2006 Revisado Em6paginas
 

Mais de 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)
 

Arquitetura de Software EXPLICADA