Arquitetura de software - conceitos e tendências
Transcript of Arquitetura de software - conceitos e tendências
Arquitetura de Software:
conceitos e tendências
Prof. Dra. Ana Paula Terra Bacelo
[email protected] - FACIN/PUCRS
Jornada Acadêmica – FACIN
25 a 27 de agosto de 2010
Agenda
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software 2
Motivação
Arquitetura de Software (AS): o que é?
Estilos de Arquiteturas de Software Camadas (Layered-based Architecture)
SOA (Service Oriented Architecture)
CBD (Component-based Development)
Linguagens de Descrição Arquitetural (ADL)
Estilos X Linguagens X Padrões Arquiteturais
Abordagens de Desenvolvimento baseado em Arquitetura: Model-Driven Architecture- MDA (Arquitetura orientada a modelos)
Arquitetura de Software e os currículos do Bacharelado em CC, SI e EC
Considerações Finais
Motivação
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 3
Engenharia de Software
Ciclo de vida de um produto
Modelo CascataModelo EspiralProcesso Unificado
Por que usar processos de desenvolvimento
arquitetura de software?
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 4
Cada vez é maior a complexidade do software a ser
construído
É necessária a redução de tempo e custo de
desenvolvimento e manutenção do software
A Arquitetura do Software - AS desempenha um
papel fundamental para gerenciar a complexidade
inerente ao software a ser desenvolvido
Processos de Desenvolvimento e AS
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 5
Desenvolvimento Incremental
Processo Genérico de Desenvolvimento de Software - Projeto
Arquitetura de Software: o que é?
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 6
Diversos conceitos (PFLEEGER, 1998; FIELDING, 2000; GARLAN, 2000)
“Uma arquitetura de software envolve a descrição de elementos
arquiteturais dos quais os sistemas serão construídos, interações entre
esses elementos, padrões que guiam suas composições e restrições sobre
estes padrões”.
A arquitetura de um software define em termos computacionais quais são
seus elementos arquiteturais e como ocorre a interação entre eles.
Elementos arquiteturais: bancos de dados, servidores, clientes, filtros, um ou
mais componentes, dentre outros, e a interação entre eles pode ocorrer
através de chamadas de procedimentos, acesso a variáveis, uso de
protocolos para acesso a clientes e servidores, bancos de dados, e outros
eventos quaisquer (GARLAN, 2000).
Arquitetura de Software: o que é?
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 7
Rational Unified Process (RUP):
A arquitetura de um software envolve o conjunto de decisões que definem a organização do sistema objetivando:
definir os elementos estruturais e suas interfaces de modo a estabelecer a composição do sistema;
estabelecer o comportamento pela colaboração entre estes elementos;
compor estes elementos estruturais e comportamentais em subsistemas (agregação).
Arquitetura de Software: o que é?
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 8
RUP
A arquitetura é também influenciada por fatores de implementação: arquitetura de computador;
sistema operacional;
SGBD;
protocolos de rede;
linguagem de programação;
ambiente de interface gráfica;
bibliotecas de funções disponíveis;
sistemas legados;
necessidades de performance, portabilidade etc.
Papel do Arquiteto de Software
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 9
Conhecimento profundo:
dos requisitos das aplicações;
das tecnologias disponíveis para apoio à construção da
arquitetura e
dos processos de desenvolvimento adequados para a aplicação
a ser desenvolvida.
Jornada Acadêmica - FACIN - PUCRS -
Arquitetura de Software – 25/8/2010
10
Estilos Arquiteturais,
Padrões Arquiteturais e
Linguagens de Descrição
Arquitetural
Estilos Arquiteturais
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 11
Definem um conjunto de regras de projeto que
identificam tipos de componentes, seus conectores e
restrições existentes para a sua composição, os quais
podem ser usados para compor uma família de sistemas e
subsistemas
Exemplos:
Pipes and Filters,
Camadas,
Baseado em Eventos
Organização Orientada a Objetos
Estilo Pipe-and-Filter
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 12
Processamento Sequencial
Componentes: Filters realiza um processamento de dados
Conectores: Pipers são condutores que transmitem as saídas de um filter para outro
Útil para aplicações de processamento de informações queinteragem pouco com os usuários
Não é apropriado para aplicações interativas
Estilo Arquitetural em Camadas
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 13
Componentes são alocados a camadas que controlam a
interação
Cada componente se comunica com os das camadas
vizinhas
Exemplo: sistema de gerenciamento de
versões
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 14
Camadas: vantagens e desvantagens
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 15
Vantagens
Facilidade de compreensão
Facilidade de manutenção
Desenvolvimento independente
Facilidade de Reutilização
Desvantagens
Duplicação de funcionalidade
Às vezes é difícil estruturar um sistema através de camadas
É comum que a estruturação seja violada
Padrão Arquitetural
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 16
Expressa a estrutura fundamental de um esquema de
software
Estrutural : Camadas, Pipes and Filters
Sistemas Distribuídos: Broker
Sistemas Interativos: MVC
Sistemas Adaptáveis: Reflexão, Micro Kernel
Exemplo de Padrão Arquitetural: MVC
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 17
MVC – Model–View-Controller – sistemas interativos
Model: define a semântica da aplicação e define seu
comportamento.
View: viabilizam uma apresentação visual da aplicação.
Controller: gerencia as interações do usuário com os modelos
e visões da aplicação
ControlInteração do usuário
com Disp. Entrada
ViewExibição e Interação
entre visões
ModelEstado e Comportamento
do Domínio da Aplicação
Entrada
USR
mensagens de interface saídas de
apresentação
Mensagens deconsulta e alteração
do modeloMensagens demodificações de estado para dependentes
Mensagens de
modificações de
estado para
dependentes
Arquiteturas Orientadas a Serviços
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 18
SOA: Software Oriented Architecture
funcionalidades implementadas pelas aplicações devem ser
disponibilizadas na forma de serviços
serviços são conectados através de um "barramento de
serviços“ – Enterprise Service Bus - ESB
ESB disponibiliza interfaces, ou contratos, acessíveis através de
web services
BEA Aqualogic Service Bus – Oracle
WebLogic
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 19
Arquiteturas baseadas em Componentes
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 20
Linguagens de Descrição Arquitetural
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 21
Architecture Description Language (ADL)
Linguagens que expressam características estruturais e
comportamentais dos sistemas
Viabilizam a reutilização
Possibilita o registro de fatores implementacionais
Oferecem primitivas para composição do sistema
Elementos básicos:
Componentes
Conectores
Configurações
ADLS
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 22
Exemplos:
ADAGE (Avionics Domain Application Generative Environmet) [Cog93],
Darwin [Mag95],
Rapide [Luc96],
Aesop,
MetaH,
C2,
SADL,
ACME (Architectural Description Language - Carnegie Mellon University) [Gar97],
Wright [All97],
ADLARS [Bas05],
EAADL (Extended Architecture Analysis Description Language) [Oh07].
Exemplo de ADL
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 23
Exemplo de ADL - Linguagem C2
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 24
Componentes
Conectores
Configurações
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/201025
Desenvolvimento de software
orientado a arquitetura
MDA – Model Driven Architecture
Jornada Acadêmica - FACIN - PUC - Arquitetura de Software 26
Abordagem para construção de Arquitetura de Software proposta
pela OMG – Padrões MOF, JMI, XMI
Objetivos
Especificar um sistema independentemente da
plataforma de software de execução;
Especificar plataformas de execução;
Escolher uma plataforma específica de execução
para um sistema e
Transformar a especificação do sistema em uma
especificação voltada para uma plataforma de
execução específica
27
Model Driven Architecture
Principais conceitos (MDA)
Plataforma: Conjunto de subsistemas e tecnologias que
disponibilizam serviços através de interfaces e padrões de
utilização
CIM – Computation Independent Model (ex: documento de
requisitos, use case)
PIM – Platform Independent Model (ex: modelo de classes)
PSM – Platform Specific Model (ex: modelo de classes EJB)
Tipos de Transformações de Modelo
PIM PIM PIM PSM
PSM PSM PSMCódigo Fonte
Jornada Acadêmica - FACIN - PUC - Arquitetura de Software
Model Driven Architecture
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 28
Exemplo de Transformação PIM PSM (EJBComponents)
<< component >>
<< EJBEntityBeanComponent >>
ClienteBean
-idCliente:String
-nome:String
-endereco:String
#entityContext:EntityContext
<< EJBEntityBean >>
ClienteBean
+ejbCreate():ClientePK
+ejbPostCreate():void
+ejbActivate():void
+ejbLoad():void
+ejbPassivate():void
+ejbRemove():void
+ejbStore():void
+getNome():String
+setNome(nome:String):void
+getEndereco():String
+setEndereco(endereco:String):void
-idCliente:String
ClientePK
+hashCode():int
+equals(other:Object):boolean
+getNome():String
+setNome(nome:String):void
+getEndereco():String
+setEndereco(endereco:String):void
ClienteLocal
<< EJBLocalInterface >>
+create():Cliente
+findByPrimaryKey(...):...
ClienteHome
<< EJBLocalHomeInterface >>
+create():ClienteLocal
+findByPrimaryKey(...):...
ClienteLocalHome
<< EJBHomeInterface >>
+getNome():String
+setNome(nome:String):void
+getEndereco():String
+setEndereco(endereco:String):void
Cliente
<< EJBRemoteInterface >>
- nome : String
- endereco : String
Cliente
Model Driven Architecture
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 29
Exemplo de Transformação PSM Código fonte (Java)
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/201030
Arquitetura de Software e os
Currículos dos Cursos da
FACIN
Bacharelado em SI
Jornada Acadêmica - FACIN - PUC - Arquitetura de Software 31
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 32
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 33
Considerações Finais
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 34
Arquitetura de software: Estilos Arquiteturais
Padrões Arquiteturais
Arquiteturas orientadas a serviços (SOA), componentes
Linguagens de Descrição Arquitetural (ADLs)
Apoio à diferentes fases do processo de desenvolvimento de software –papéis específicos
Não existe uma formalização quanto a sua representação, exceto por meio das ADLS
Forte ênfase atual nas arquiteturas orientadas a serviços (SOA) e Camadas
Tendência: serviços disponibilizados através de Cloud Computing
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 35
Referências
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 36
CLEMENTS, P., BACHMANN, F., BASS, L., et al., 2002a, Documenting Software
Architectures: Views and Beyond, New York, Addison-Wesley
GARLAN, D., 2000, "Software Architecture: a Roadmap". In: International Conference
on Software engineering: Future of SE Track, pp. 91-101, Limerick, Ireland.
KRUCHTEN, P., 1995, "The 4+1 View Model of Architecture", IEEE Software, v. 12, n.
6 (November), pp. 42-50
MENDES, A., 2002, Arquitetura de Software: desenvolvimento orientado a arquitetura, Rio
de Janeiro, Editora Campus.
SHAW, M., GARLAN, D., 1996, Software Architecture: Perspectives on an Emerging
Discipline, New Jersey, Prentice-Hall.
FOWLER, M. Padrões de arquitetura de aplicações corporativas .Porto Alegre:
Bookmann, 2008, 493p.
GASEVIC, D. Model driven architecture and ontology development. New York (NY):
Springer, c2006. 311 p.
BRAUDE, E. Projeto de software : da programação à arquitetura : uma abordagem
baseada em java. Porto Alegre : Bookman, 2005. 619 p.
Referências da WEB
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 37
http://www.sei.cmu.edu/architecture/
http://www.oracle.com/bea/index.html
http://www.omg.org/mda/
Conferências Nacionais e Internacionais
SBCARS - IV Brazilian Symposium on Components, Software
Architecture and Software Reuse - http://wiki.dcc.ufba.br/CBSOFT/
4th European Conference on Software Architecture–
http://www.ecsa2010.org/
Models Conference - http://models2010.ifi.uio.no/
Profa. Ana Paula Terra Bacelo
Contato: [email protected]
Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010
Obrigado!