arquitetura de software - conceitos e tendências

38
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

Upload: duongliem

Post on 09-Jan-2017

222 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 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

Page 2: Arquitetura de software - conceitos e tendências

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

Page 3: Arquitetura de software - conceitos e tendências

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

Page 4: Arquitetura de software - conceitos e tendências

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

Page 5: Arquitetura de software - conceitos e tendências

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

Page 6: Arquitetura de software - conceitos e tendências

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).

Page 7: Arquitetura de software - conceitos e tendências

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).

Page 8: Arquitetura de software - conceitos e tendências

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.

Page 9: Arquitetura de software - conceitos e tendências

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.

Page 10: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS -

Arquitetura de Software – 25/8/2010

10

Estilos Arquiteturais,

Padrões Arquiteturais e

Linguagens de Descrição

Arquitetural

Page 11: Arquitetura de software - conceitos e tendências

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

Page 12: Arquitetura de software - conceitos e tendências

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

Page 13: Arquitetura de software - conceitos e tendências

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

Page 14: Arquitetura de software - conceitos e tendências

Exemplo: sistema de gerenciamento de

versões

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 14

Page 15: Arquitetura de software - conceitos e tendências

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

Page 16: Arquitetura de software - conceitos e tendências

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

Page 17: Arquitetura de software - conceitos e tendências

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

Page 18: Arquitetura de software - conceitos e tendências

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

Page 19: Arquitetura de software - conceitos e tendências

BEA Aqualogic Service Bus – Oracle

WebLogic

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 19

Page 20: Arquitetura de software - conceitos e tendências

Arquiteturas baseadas em Componentes

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 20

Page 21: Arquitetura de software - conceitos e tendências

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

Page 22: Arquitetura de software - conceitos e tendências

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,

Meta­H,

C2,

SADL,

ACME (Architectural Description Language - Carnegie Mellon University) [Gar97],

Wright [All97],

ADLARS [Bas05],

EAADL (Extended Architecture Analysis Description Language) [Oh07].

Page 23: Arquitetura de software - conceitos e tendências

Exemplo de ADL

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 23

Page 24: Arquitetura de software - conceitos e tendências

Exemplo de ADL - Linguagem C2

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 24

Componentes

Conectores

Configurações

Page 25: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/201025

Desenvolvimento de software

orientado a arquitetura

Page 26: Arquitetura de software - conceitos e tendências

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

Page 27: Arquitetura de software - conceitos e tendências

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

Page 28: Arquitetura de software - conceitos e tendências

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

Page 29: Arquitetura de software - conceitos e tendências

Model Driven Architecture

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 29

Exemplo de Transformação PSM Código fonte (Java)

Page 30: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/201030

Arquitetura de Software e os

Currículos dos Cursos da

FACIN

Page 31: Arquitetura de software - conceitos e tendências

Bacharelado em SI

Jornada Acadêmica - FACIN - PUC - Arquitetura de Software 31

Page 32: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 32

Page 33: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 33

Page 34: Arquitetura de software - conceitos e tendências

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

Page 35: Arquitetura de software - conceitos e tendências

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010 35

Page 36: Arquitetura de software - conceitos e tendências

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.

Page 37: Arquitetura de software - conceitos e tendências

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/

Page 38: Arquitetura de software - conceitos e tendências

Profa. Ana Paula Terra Bacelo

Contato: [email protected]

Jornada Acadêmica - FACIN - PUCRS - Arquitetura de Software – 25/8/2010

Obrigado!