SlideShare uma empresa Scribd logo
1 de 46
Arquitetura de Software
Visão Geral
Copyright © 2017
Fábio Nogueira de Lucena
fabio@inf.ufg.br
O que é arquitetura de software?
• Nível de projeto preocupado com
• Questões além de algoritmos e estruturas de dados
• Projeto e especificação a estrutura do sistema
• Estrutura de controle global
• Protocolos de comunicação, sincronização
• Acesso a dados
• Atribuição de funcionalidade a elementos de projeto
• Distribuição física de elementos
• Desempenho e escala
Onde obter mais informações ...
• ARQUITETURA DE SOFTWARE
• Excelente ponto de partida:
• www2.umassd.edu/SECenter/SAResources.html
O que não é?
• Não é projeto “detalhado”
• Não é projeto de algoritmos
• Não é implementação
• Não é o modelo de dados
• Usa para assinatura de interfaces
• Não é o sistema físico (processadores, rede, ...)
• Usa para impacto de desempenho, confiabilidade, ...
• Não é a arquitetura de hardware
Representação
• Visão
• Descrição simplificada de uma perspectiva
• Construção civil
• Planta baixa
• Projeto elétrico
• Projeto hidráulico, ...
• Construção de software (segundo o RUP: “4+1”)
• Visão de UC
• Visão Lógica
• Visão de processos
• Visão de implementação
• Visão de implantação
Visões de Arquitetura
• Visão de Casos de Uso
• Ucs e cenários que ilustram itens “arquiteturalmente significantes”, riscos
técnicos, ...
• Visão lógica
• Classes + relevantes organizadas em subsistemas, packages e estes em
camadas. Realizações de Ucs.
• Visão de implementação
• Organização de componentes, executáveis, fontes,...
• Visão de processos
• Configuração e interação entre processos e threads
• Visão de implantação
• Alocação de tarefas a nós físicos, interação entre estes
Arquitetura concentra-se ...
• Na estrutura (subsistemas, camadas)
• Nos elementos essenciais (UC críticos, classes principais, mecanismos
comuns)
• Em cenários principais (fluxo de controle principal por todo o
sistema)
• Em serviços (captura modularidade, elementos opcionais, ...)
Visões de arquitetura são abstrações de todo o projeto
Por que é importante?
• Evolução do sistema
• Reutilização da arquitetura ou parte
• Avaliação de desempenho, disponibilidade, ...
• Organização do trabalho de construção
• Decisões acerca aquisição de componentes existentes
• Inserção em um sistema maior
Como descrever em UML?
• Visão lógica
• Diagramas de classes, DTEs e diagramas de objetos
• Visão de processos
• Diagramas de classes e objetos (processos,threads)
• Visão de implementação
• Diagramas de componentes
• Visão de implantação
• Diagramas de implantação
• Visão de casos de uso
• Diagramas de ucs, atores, diagramas de seqüência.
Visão de Caso de Uso
• Fornece base para planejamento de iterações
Visão de UC (exemplo)
Modelo de Processo
do Negócio
Casos de Uso
Vision Document
(SAD)
Arquitetura do sistema conforme
"percebida" pelos clientes.
Atores
Visão de UC
(Modelo de Processo do Negócio)
Aluno não
matriculado
Requisita
matrícula
Comprovante
de Matrícula
Requisicao
Matricula
Avalia Requisicao de
Candidato
Efetua
matrícula
Candidato apto
Requisicao
Matricula
Efetua
matrícula
Avalia Requisição
de Aluno
Aluno
matriculado
Fim de período
Requisita
matrícula
Comprovante
de Matrícula
[ aluno apto? ]
[ aluno inapto? ]
Fulano : Aluno (from Criar Programa)Sistema (from Criar Programa)Candidato (from Criar Programa)
Visão lógica
• Base para compreensão da estrutura e organização do projeto
Visão Lógica (exemplo)
Presentation
<<layer>>
Data
<<layer>>
Business
<<layer>>
DataCapes
(from Software)
Lattes
(from Software)
CAPES
(from Logical View)
CNPQ
(from Logical View)
Use-Case
Realizations
Visão de processos
• Base para compreensão da organização de processos
NetScape 6.0
<<thread>>
Internet Explorer 5.5
<<thread>>
Apache Server
(from Software)
Browser
<<thread>>
1 n1 n
<<http>>
Refinamento da Visão de Processos
CORBA Server
(from Software)
JVM
(from Software)
JMS broker
(from Software)
Java Plug-In 1.3
<<thread>>
NetScape 6.0
<<thread>>
Internet Explorer 5.5
<<thread>>
Browser
<<thread>>
Apache Server
(from Software)
1 n1 n
<<http>>
Database
(from Software)
1
1
1
1
Servidor de Aplicação
<<process>>
1
n
1
n
Beans
(from beans)
<<thread>>
Visão de implantação
• Base para compreensão da distribuição física do sistema entre nós
Servidor SISPG
preemptive
Servidor Apache
Banco de Dados
Servidor de Aplicações Java
Coordenação de
Programa
Laser Printer
<<UFGNet>>
Câmera
Digital
Impressão de
DiplomasImpressora
de Diplomas
Navegante
<<Internet>>
Usuário
<<Internet>>
Servidor
CCPFJ
<<UFGNet>>
<<UFGNet>>
Desenvolvimento de
Arquitetura de Software
• Como produzir uma arquitetura de software?
• Como obter as visões de arquitetura?
• Quando ocorre?
• Quais as tarefas?
• Qual o processo?
• Quais os artefatos?
• ...
Quando ocorre?
• (após)
Requisitos (gera entrada para A&P)
• (início) Análise & Projeto
• Transformar req em projeto
• Obter uma arquitetura robusta
• (durante)
Fase de elaboração
Concepção
Quais as tarefas?
• Definir arquitetura candidata
• Criar uma versão inicial da arquitetura
• Definir elementos de arquitetura significantes
• Definir camadas e organização do sistema
• Definir realizações de casos de uso
• Identificar classes de análise
• Refinar a arquitetura
• Identificar elementos de projeto daqueles de análise
• Manter consistência e integridade da arquitetura
• Descrever elementos de implantação e execução do sistema
• Organizar o modelo de implementação
Definir arquitetura candidata
Refinar a arquitetura
Definir arquitetura candidata
• Compreende
• Análise de arquitetura
• Análise de casos de uso
• Processo
• Após início com a análise de arquitetura
• Escolha casos de uso significantes
• Realize a análise de casos de uso em cada UC
• Atualize a arquitetura concomitantemente
Análise de Arquitetura
• Desenvolver visão geral da arquitetura
• Definir organização de subsistemas (high-level)
• Identificar mecanismos de análise
• Identificar abstrações principais
• Criar realizações de casos de uso
• Desenvolver modelo de implantação (high-level)
• Revisar resultados
1Definirarquiteturacandidata
INCLUI:
Análise de Casos de Uso
• Suplementar descrições de casos de uso
• Identificar classes de análise
• Distribuir comportamento em classes de análise
• Descrever responsabilidades
• Descrever atributos e associações
• Estabelecer associações entre classes
• Descrever dependências de eventos entre classes
• Avaliar resultados
1Definirarquiteturacandidata
INCLUI:
Visão geral da arquitetura
• Objetivo
• Explorar e avaliar opções de arquitetura
• Fornecer compreensão de alto nível da estrutura
• Pode ser criada cedo (fase de concepção)
• Reflete decisões e suposições acerca da implementação da Visão
• Decisões acerca da arquitetura lógica e física
• Ilustra “essência” da solução proposta
• Fornece “grandes blocos”
1.1AnálisedeArquitetura
Exemplo (visão geral da arquitetura)
Visão apresentada aos usuários
1.1.1AnálisedeArquitetura
DataCapes
(from Software)
StrictoSensu
<<subsystem>>
LatoSensu
<<subsystem>>
Pi
<<subsystem>>
Financeiro
<<subsystem>>
CCPFJ
<<sistema>>
Lattes
(from Software)
Projetos
<<subsystem>>
CAPES
CNPQ
CCPFJ
<<sistema>>
Definir organização de subsistemas
• Objetivo
• Criar estrutura inicial para o modelo de projeto
• Modelo de projeto
• Geralmente organizado em camadas
• Neste ponto, focalize as camadas de aplicação e a camada específica ao
negócio
1.1.1AnálisedeArquitetura
Visão Lógica (Top-Level)
1.1.1AnálisedeArquitetura
Presentation
<<layer>>
Data
<<layer>>
Business
<<layer>>
DataCapes
(from Software)
Lattes
(from Software)
CAPES
(from Logical View)
CNPQ
(from Logical View)
Use-Case
Realizations
Visão Lógica (Presentation Layer)
1.1.1AnálisedeArquitetura
Browser Java Applet
HTTP
<<provider>>
(from Business)
HTML Pages
Server Pages
(from Business)
IIOP
<<provider>>
(from Business)
JavaScript
XML docs
Visão Lógica (Business Objects Layer)
• Sabe-se que as interfaces CNPQ e CAPES são utilizadas por um
subconjunto dos objetos
• Na visão de implementação teremos componentes que
implementam estas interfaces
1.1.1AnálisedeArquitetura
Visão Lógica (Business Objects Layer)
1.1.1AnálisedeArquitetura
HTTP
<<provider>>
Web Server Server Pages
Application Server
<<provider>>
IIOP
<<provider>>
JavaBeans Mapeamento
Persistência
(from Data)
Business
Objects
CAPES
(from Logical View)
CNPQ
(from Logical View)
Visão Lógica (Data Layer)
1.1.1AnálisedeArquitetura
Persistência Mapeamento
Persistência
PostgreSQLInterbaseJDBC-Interbase JDBC-PostgreSQL
Identificar mecanismos de análise
• Identificação de padrões
• Persistência, gerência de transação, ...
• Identificar problemas possivelmente implícitos
• Não diretamente fornece funcionalidade
• Veja Design Patterns para detalhes.
1.1.1AnálisedeArquitetura
Exemplo (mecanismo de análise)
• Persistência (um mecanismo identificado)
• Analysis Patterns
Chapter 12 (Layered Architecture for Information Systems)
Martin Fowler
Addison-Wesley, 1997
• Object-Oriented Modeling and Design for Database Applications
Chapter 13 (Relational Databases: Basics)
Michael Blaha & Wiliam Premerlani
Prentice-Hall, 1998
• Mostra como implementar modelos orientados a objetos com bancos de dados
relacionais.
1.1AnálisedeArquitetura
Exemplo (observer pattern)
• Objeto deve notificar outros sem conhecer quem são estes outros
• Enviar e-mail após alteração, ...
1.1AnálisedeArquitetura
Identificar abstrações principais
• Identificar classes de análise oriundas de ...
• Requisitos
• Glossário
• Defina relacionamentos entre as classes
• Em geral, vários diagramas são utilizados
• Durante o projeto, tais classes sofrerão alterações
 Poderão se tornar “classes”
• QUAL O OBJETIVO?
• Identificar “conceitos principais” que o sistema manipulará
• Ao analisar UCs outras classes e relacionamentos surgirão
1.1AnálisedeArquitetura
Exemplo (abstrações principais)
1.1AnálisedeArquitetura
ItemCalendárioCalendário
1..n1..n
Atividade
ncreditos
nome : String
TipoDisciplina
tipo
Programa
EstagioDocencia
OutraAtividade
descricao : String
AreaConcentracao
AtividadeCredito
minimo
maximo
obrigatoria
nome
1
n
1
n
Estrutura Curricular
11 11
Disciplina
ementa
1..n 1..n1..n 1..n
Classifica
nn
Executa
periodo
conceito
frequencia
Aluno
(from Academia)
n nn n
Requerimento Comprovante
Documento
Data : Date
Diploma Certificado
Informe
DataInicio : Date
DataFim : Date
Criar realizações de casos de uso
• Para cada UC, crie realização do UC
• O nome da realização deve ser o mesmo
• Crie uma dependência da realização para o UC
• É bom lembrar ...
• UC especifica funcionalidade visível externamente
• UC não fornece uma implementação
• Colaboração descreve
• Objetos que implementam o comportamento do UC
• Forma que interagem para obter este efeito
1.1AnálisedeArquitetura
Exemplo (realizações de UCs)
1.1AnálisedeArquitetura
Limpar base de informes
(from Informes)
Excluir informe
(from Excluir informe)
Excluir informe
(from Informes)
Editar informe
(from Editar informe)
Limpar base de informes
(from Limpar base de informes)
Criar informe
(from Criar informe)
Consultar informes
(from Consultar informes)
Consultar informes
(from Informes)
Criar informe
(from Informes)
Editar informe
(from Informes)
Desenvolver modelo de implantação
• Objetivo
• Visão da distribuição geográfica
• Entendimento da complexidade operacional do sistema
• Insumos
• Usuários (localizações)
• Dados do negócio
• Especificação Suplementar
• Requisitos não-funcionais
• Restrições
• Processo
• Atender usuários, casos de uso, acesso a dados, ...
1.1AnálisedeArquitetura
Exemplo (diagrama de implantação)
1.1AnálisedeArquitetura
Servidor
CCPFJ
Servidor SISPG
preemptive
Servidor Apache
Banco de Dados
Servidor de Aplicações Java
Coordenação de
Programa
Laser Printer
<<UFGNet>>
Câmera
Digital
Impressão de
Diplomas
<<UFGNet>>
Impressora
de Diplomas
Navegante
<<Internet>>
Usuário
<<Internet>>
<<UFGNet>>
Classe de Análise
• “Coisas” no sistema que possuem
• Responsabilidade
• Comportamento
• Abstração de um papel
• PAPEL: definição de comportamento e responsabilidade
• Pode se referir a mais de um papel
• Evolui em um ou mais elementos de projeto
• Classes
• Subsistemas
1.2AnálisedeUC
Classes de Análise (representação)
• Boundary class
• Interação entre ator e sistema
• Control class
• Comportamento específico de um ou mais UCs
• Objetos que controlam outros objetos
• Representa a dinâmica do sistema (fluxo de controle)
• Entity class
• Modela informação e comportamento associado
Classes de análise (exemplo)
: Gerencia Informes : Elemento de
Informação
: Tela Informes: Usuário
1: Requisita informes 2: Obtem Informes 3: Obtem descrição
4: Mostra descrição de informes
Considerações finais
• Arquitetura de software (item muito importante)
• concepção e ELABORAÇÃO
• Definição do “raio-x da organização do sistema”
• Faz uso de várias visões
• Orienta posteriores atividades de análise & projeto
• Fase de Elaboração
• Protótipo executável da arquitetura pode ser construído
• Provavelmente na primeira iteração
• Arquitetura estável deve ser atingida nesta fase

Mais conteúdo relacionado

Mais procurados

Principais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosPrincipais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosNorton Guimarães
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareFelipe Goulart
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIgor Takenami
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareAricelio Souza
 

Mais procurados (20)

Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Principais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosPrincipais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de Requisitos
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
Uml
UmlUml
Uml
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de Configuração
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Destaque (8)

Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 
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
 
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?
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
 
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 de Software

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
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)elliando dias
 
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 de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Renato Groffe
 
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)Rafael Targino
 
Processo Unificado de Desenvolvimento de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Unificado de Desenvolvimento de Softwareelliando dias
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanHalan Ridolphi
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsRenato Groff
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwarejamersonlima
 
8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdfgabriel-colman
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoClaudio Martins
 

Semelhante a Arquitetura de Software (20)

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
 
ES4.ppt
ES4.pptES4.ppt
ES4.ppt
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)
 
Aula Gestão de Projetos
Aula Gestão de ProjetosAula Gestão de Projetos
Aula Gestão de Projetos
 
Processo e Processo de Software
Processo e Processo de SoftwareProcesso e Processo de Software
Processo e Processo de Software
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertido
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
 
347842.ppt
347842.ppt347842.ppt
347842.ppt
 
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)
Proposta de um Processo de Arquitetura Corporativa (Enterprise Architecture)
 
Processo Unificado de Desenvolvimento de Software
Processo Unificado de Desenvolvimento de SoftwareProcesso Unificado de Desenvolvimento de Software
Processo Unificado de Desenvolvimento de Software
 
Apresentação RUP
Apresentação RUPApresentação RUP
Apresentação RUP
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halan
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application Insights
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de função
 

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 2
Cs 2Cs 2
Cs 2
 
Cs 1
Cs 1Cs 1
Cs 1
 

Arquitetura de Software

  • 1. Arquitetura de Software Visão Geral Copyright © 2017 Fábio Nogueira de Lucena fabio@inf.ufg.br
  • 2. O que é arquitetura de software? • Nível de projeto preocupado com • Questões além de algoritmos e estruturas de dados • Projeto e especificação a estrutura do sistema • Estrutura de controle global • Protocolos de comunicação, sincronização • Acesso a dados • Atribuição de funcionalidade a elementos de projeto • Distribuição física de elementos • Desempenho e escala
  • 3. Onde obter mais informações ... • ARQUITETURA DE SOFTWARE • Excelente ponto de partida: • www2.umassd.edu/SECenter/SAResources.html
  • 4. O que não é? • Não é projeto “detalhado” • Não é projeto de algoritmos • Não é implementação • Não é o modelo de dados • Usa para assinatura de interfaces • Não é o sistema físico (processadores, rede, ...) • Usa para impacto de desempenho, confiabilidade, ... • Não é a arquitetura de hardware
  • 5. Representação • Visão • Descrição simplificada de uma perspectiva • Construção civil • Planta baixa • Projeto elétrico • Projeto hidráulico, ... • Construção de software (segundo o RUP: “4+1”) • Visão de UC • Visão Lógica • Visão de processos • Visão de implementação • Visão de implantação
  • 6. Visões de Arquitetura • Visão de Casos de Uso • Ucs e cenários que ilustram itens “arquiteturalmente significantes”, riscos técnicos, ... • Visão lógica • Classes + relevantes organizadas em subsistemas, packages e estes em camadas. Realizações de Ucs. • Visão de implementação • Organização de componentes, executáveis, fontes,... • Visão de processos • Configuração e interação entre processos e threads • Visão de implantação • Alocação de tarefas a nós físicos, interação entre estes
  • 7. Arquitetura concentra-se ... • Na estrutura (subsistemas, camadas) • Nos elementos essenciais (UC críticos, classes principais, mecanismos comuns) • Em cenários principais (fluxo de controle principal por todo o sistema) • Em serviços (captura modularidade, elementos opcionais, ...) Visões de arquitetura são abstrações de todo o projeto
  • 8. Por que é importante? • Evolução do sistema • Reutilização da arquitetura ou parte • Avaliação de desempenho, disponibilidade, ... • Organização do trabalho de construção • Decisões acerca aquisição de componentes existentes • Inserção em um sistema maior
  • 9. Como descrever em UML? • Visão lógica • Diagramas de classes, DTEs e diagramas de objetos • Visão de processos • Diagramas de classes e objetos (processos,threads) • Visão de implementação • Diagramas de componentes • Visão de implantação • Diagramas de implantação • Visão de casos de uso • Diagramas de ucs, atores, diagramas de seqüência.
  • 10. Visão de Caso de Uso • Fornece base para planejamento de iterações
  • 11. Visão de UC (exemplo) Modelo de Processo do Negócio Casos de Uso Vision Document (SAD) Arquitetura do sistema conforme "percebida" pelos clientes. Atores
  • 12. Visão de UC (Modelo de Processo do Negócio) Aluno não matriculado Requisita matrícula Comprovante de Matrícula Requisicao Matricula Avalia Requisicao de Candidato Efetua matrícula Candidato apto Requisicao Matricula Efetua matrícula Avalia Requisição de Aluno Aluno matriculado Fim de período Requisita matrícula Comprovante de Matrícula [ aluno apto? ] [ aluno inapto? ] Fulano : Aluno (from Criar Programa)Sistema (from Criar Programa)Candidato (from Criar Programa)
  • 13. Visão lógica • Base para compreensão da estrutura e organização do projeto
  • 14. Visão Lógica (exemplo) Presentation <<layer>> Data <<layer>> Business <<layer>> DataCapes (from Software) Lattes (from Software) CAPES (from Logical View) CNPQ (from Logical View) Use-Case Realizations
  • 15. Visão de processos • Base para compreensão da organização de processos NetScape 6.0 <<thread>> Internet Explorer 5.5 <<thread>> Apache Server (from Software) Browser <<thread>> 1 n1 n <<http>>
  • 16. Refinamento da Visão de Processos CORBA Server (from Software) JVM (from Software) JMS broker (from Software) Java Plug-In 1.3 <<thread>> NetScape 6.0 <<thread>> Internet Explorer 5.5 <<thread>> Browser <<thread>> Apache Server (from Software) 1 n1 n <<http>> Database (from Software) 1 1 1 1 Servidor de Aplicação <<process>> 1 n 1 n Beans (from beans) <<thread>>
  • 17. Visão de implantação • Base para compreensão da distribuição física do sistema entre nós Servidor SISPG preemptive Servidor Apache Banco de Dados Servidor de Aplicações Java Coordenação de Programa Laser Printer <<UFGNet>> Câmera Digital Impressão de DiplomasImpressora de Diplomas Navegante <<Internet>> Usuário <<Internet>> Servidor CCPFJ <<UFGNet>> <<UFGNet>>
  • 18. Desenvolvimento de Arquitetura de Software • Como produzir uma arquitetura de software? • Como obter as visões de arquitetura? • Quando ocorre? • Quais as tarefas? • Qual o processo? • Quais os artefatos? • ...
  • 19. Quando ocorre? • (após) Requisitos (gera entrada para A&P) • (início) Análise & Projeto • Transformar req em projeto • Obter uma arquitetura robusta • (durante) Fase de elaboração Concepção
  • 20. Quais as tarefas? • Definir arquitetura candidata • Criar uma versão inicial da arquitetura • Definir elementos de arquitetura significantes • Definir camadas e organização do sistema • Definir realizações de casos de uso • Identificar classes de análise • Refinar a arquitetura • Identificar elementos de projeto daqueles de análise • Manter consistência e integridade da arquitetura • Descrever elementos de implantação e execução do sistema • Organizar o modelo de implementação
  • 23. Definir arquitetura candidata • Compreende • Análise de arquitetura • Análise de casos de uso • Processo • Após início com a análise de arquitetura • Escolha casos de uso significantes • Realize a análise de casos de uso em cada UC • Atualize a arquitetura concomitantemente
  • 24. Análise de Arquitetura • Desenvolver visão geral da arquitetura • Definir organização de subsistemas (high-level) • Identificar mecanismos de análise • Identificar abstrações principais • Criar realizações de casos de uso • Desenvolver modelo de implantação (high-level) • Revisar resultados 1Definirarquiteturacandidata INCLUI:
  • 25. Análise de Casos de Uso • Suplementar descrições de casos de uso • Identificar classes de análise • Distribuir comportamento em classes de análise • Descrever responsabilidades • Descrever atributos e associações • Estabelecer associações entre classes • Descrever dependências de eventos entre classes • Avaliar resultados 1Definirarquiteturacandidata INCLUI:
  • 26. Visão geral da arquitetura • Objetivo • Explorar e avaliar opções de arquitetura • Fornecer compreensão de alto nível da estrutura • Pode ser criada cedo (fase de concepção) • Reflete decisões e suposições acerca da implementação da Visão • Decisões acerca da arquitetura lógica e física • Ilustra “essência” da solução proposta • Fornece “grandes blocos” 1.1AnálisedeArquitetura
  • 27. Exemplo (visão geral da arquitetura) Visão apresentada aos usuários 1.1.1AnálisedeArquitetura DataCapes (from Software) StrictoSensu <<subsystem>> LatoSensu <<subsystem>> Pi <<subsystem>> Financeiro <<subsystem>> CCPFJ <<sistema>> Lattes (from Software) Projetos <<subsystem>> CAPES CNPQ CCPFJ <<sistema>>
  • 28. Definir organização de subsistemas • Objetivo • Criar estrutura inicial para o modelo de projeto • Modelo de projeto • Geralmente organizado em camadas • Neste ponto, focalize as camadas de aplicação e a camada específica ao negócio 1.1.1AnálisedeArquitetura
  • 29. Visão Lógica (Top-Level) 1.1.1AnálisedeArquitetura Presentation <<layer>> Data <<layer>> Business <<layer>> DataCapes (from Software) Lattes (from Software) CAPES (from Logical View) CNPQ (from Logical View) Use-Case Realizations
  • 30. Visão Lógica (Presentation Layer) 1.1.1AnálisedeArquitetura Browser Java Applet HTTP <<provider>> (from Business) HTML Pages Server Pages (from Business) IIOP <<provider>> (from Business) JavaScript XML docs
  • 31. Visão Lógica (Business Objects Layer) • Sabe-se que as interfaces CNPQ e CAPES são utilizadas por um subconjunto dos objetos • Na visão de implementação teremos componentes que implementam estas interfaces 1.1.1AnálisedeArquitetura
  • 32. Visão Lógica (Business Objects Layer) 1.1.1AnálisedeArquitetura HTTP <<provider>> Web Server Server Pages Application Server <<provider>> IIOP <<provider>> JavaBeans Mapeamento Persistência (from Data) Business Objects CAPES (from Logical View) CNPQ (from Logical View)
  • 33. Visão Lógica (Data Layer) 1.1.1AnálisedeArquitetura Persistência Mapeamento Persistência PostgreSQLInterbaseJDBC-Interbase JDBC-PostgreSQL
  • 34. Identificar mecanismos de análise • Identificação de padrões • Persistência, gerência de transação, ... • Identificar problemas possivelmente implícitos • Não diretamente fornece funcionalidade • Veja Design Patterns para detalhes. 1.1.1AnálisedeArquitetura
  • 35. Exemplo (mecanismo de análise) • Persistência (um mecanismo identificado) • Analysis Patterns Chapter 12 (Layered Architecture for Information Systems) Martin Fowler Addison-Wesley, 1997 • Object-Oriented Modeling and Design for Database Applications Chapter 13 (Relational Databases: Basics) Michael Blaha & Wiliam Premerlani Prentice-Hall, 1998 • Mostra como implementar modelos orientados a objetos com bancos de dados relacionais. 1.1AnálisedeArquitetura
  • 36. Exemplo (observer pattern) • Objeto deve notificar outros sem conhecer quem são estes outros • Enviar e-mail após alteração, ... 1.1AnálisedeArquitetura
  • 37. Identificar abstrações principais • Identificar classes de análise oriundas de ... • Requisitos • Glossário • Defina relacionamentos entre as classes • Em geral, vários diagramas são utilizados • Durante o projeto, tais classes sofrerão alterações  Poderão se tornar “classes” • QUAL O OBJETIVO? • Identificar “conceitos principais” que o sistema manipulará • Ao analisar UCs outras classes e relacionamentos surgirão 1.1AnálisedeArquitetura
  • 38. Exemplo (abstrações principais) 1.1AnálisedeArquitetura ItemCalendárioCalendário 1..n1..n Atividade ncreditos nome : String TipoDisciplina tipo Programa EstagioDocencia OutraAtividade descricao : String AreaConcentracao AtividadeCredito minimo maximo obrigatoria nome 1 n 1 n Estrutura Curricular 11 11 Disciplina ementa 1..n 1..n1..n 1..n Classifica nn Executa periodo conceito frequencia Aluno (from Academia) n nn n Requerimento Comprovante Documento Data : Date Diploma Certificado Informe DataInicio : Date DataFim : Date
  • 39. Criar realizações de casos de uso • Para cada UC, crie realização do UC • O nome da realização deve ser o mesmo • Crie uma dependência da realização para o UC • É bom lembrar ... • UC especifica funcionalidade visível externamente • UC não fornece uma implementação • Colaboração descreve • Objetos que implementam o comportamento do UC • Forma que interagem para obter este efeito 1.1AnálisedeArquitetura
  • 40. Exemplo (realizações de UCs) 1.1AnálisedeArquitetura Limpar base de informes (from Informes) Excluir informe (from Excluir informe) Excluir informe (from Informes) Editar informe (from Editar informe) Limpar base de informes (from Limpar base de informes) Criar informe (from Criar informe) Consultar informes (from Consultar informes) Consultar informes (from Informes) Criar informe (from Informes) Editar informe (from Informes)
  • 41. Desenvolver modelo de implantação • Objetivo • Visão da distribuição geográfica • Entendimento da complexidade operacional do sistema • Insumos • Usuários (localizações) • Dados do negócio • Especificação Suplementar • Requisitos não-funcionais • Restrições • Processo • Atender usuários, casos de uso, acesso a dados, ... 1.1AnálisedeArquitetura
  • 42. Exemplo (diagrama de implantação) 1.1AnálisedeArquitetura Servidor CCPFJ Servidor SISPG preemptive Servidor Apache Banco de Dados Servidor de Aplicações Java Coordenação de Programa Laser Printer <<UFGNet>> Câmera Digital Impressão de Diplomas <<UFGNet>> Impressora de Diplomas Navegante <<Internet>> Usuário <<Internet>> <<UFGNet>>
  • 43. Classe de Análise • “Coisas” no sistema que possuem • Responsabilidade • Comportamento • Abstração de um papel • PAPEL: definição de comportamento e responsabilidade • Pode se referir a mais de um papel • Evolui em um ou mais elementos de projeto • Classes • Subsistemas 1.2AnálisedeUC
  • 44. Classes de Análise (representação) • Boundary class • Interação entre ator e sistema • Control class • Comportamento específico de um ou mais UCs • Objetos que controlam outros objetos • Representa a dinâmica do sistema (fluxo de controle) • Entity class • Modela informação e comportamento associado
  • 45. Classes de análise (exemplo) : Gerencia Informes : Elemento de Informação : Tela Informes: Usuário 1: Requisita informes 2: Obtem Informes 3: Obtem descrição 4: Mostra descrição de informes
  • 46. Considerações finais • Arquitetura de software (item muito importante) • concepção e ELABORAÇÃO • Definição do “raio-x da organização do sistema” • Faz uso de várias visões • Orienta posteriores atividades de análise & projeto • Fase de Elaboração • Protótipo executável da arquitetura pode ser construído • Provavelmente na primeira iteração • Arquitetura estável deve ser atingida nesta fase