Você está na página 1de 44

Arquitetura de Software

Silvia Regina Vergilio

Atividades de Projeto
Projeto Geral ou Preliminar: fase que traduz a especificao
do sistema em termos da arquitetura de dados e de mdulos.
Descreve a organizao fundamental do sistema,
identificando seus diversos mdulos (e sua
relaes entre si e com o ambiente) para que se
alcancem os objetivos propostos pelo cliente
Projeto da arquitetura do software.
Projeto Detalhado: descrio detalhada/ refinamento de cada
mdulo, visando codificao e especificao dos programas

Projeto da Arquitetura de
Software
Arranjo do sistema para fazer corresponder
os requisitos tanto funcionais quanto no
funcionais - aos subsistemas e
componentes.

Arquitetura
Toda obra da humanidade
apresenta um projeto
arquitetural.
O projeto arquitetural precede
a etapa de construo da obra.
O projeto arquitetural
determina as partes de uma
construo e como estas devem
interagir.
A arquitetura garante a
unidade da obra, ou seja, a
consistncia entre as suas
partes.

O que arquitetura de software?


O que arquitetura?
do grego: arkh (chefe ou mestre) + tkton
(trabalhador ou construtor)
tekhne arte ou habilidade
do dicionrio: 1. Arte de projetar e construir prdios,
edifcios ou outras estruturas; arquitetnica. 2
Constituio do edifcio. 3 Contextura de um todo. 4
Inteno, projeto.

O que arquitetura de Software?


O conceito de Arquitetura de Software surgiu nos anos 60
(com Dijkstra), mas se tornou popular nos anos 90.
Perry e Wolf (92)
Arquitetura = {Elementos, Organizao,
Decises}
um conjunto de elementos arquiteturais (de dados, de
processamento, de conexo) que possuem alguma
organizao. Os elementos e sua organizao so
definidos por decises tomadas para satisfazer objetivos e
restries.
D.E. Perry and A. L. Wolf. Foundations for the study of software architecture. SIGSOFT Software Engineering
Notes, 17(4):408211;52, October 1992.

O que arquitetura de Software?


Shaw e Garlan (96) a arquitetura define o que o
sistema em termos de componentes computacionais e,
os relacionamentos entre estes componentes, os
padres que guiam a sua composio e restries.
Alm da escolha dos algoritmos e estruturas de dados, a
arquitetura envolve: decises sobre as estruturas que
formaro o sistema, controle, protocolos de comunicao,
sincronizao e acesso a dados, atribuio de funcionalidade a
elementos do sistema, distribuio fsica dos elementos
escalabilidade e desempenho e outros atibutos de qualidade; e
seleo de alternativas de projeto.
M. Shaw, D. Garlan; Software Architecture. Perspectives on an Emerging
Discipline, Prentice Hall, 1996.
D. Garlan and Mary Shaw. An introduction to software architecture.
Technical Report- CMU-CS-94166,Carnegie Mellon University, January 1994.

O que arquitetura de Software?


Bass (98) 2003: a estrutura (ou estruturas) do
sistema, a qual composta de elementos de
software, das propriedades externamente visveis
desses elementos, e dos relacionamentos entre eles;
a abstrao do sistema.

Len Bass, Paul Clements, and Rick Kazman. Software Architecture in


Practice. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA,
1998., 2nd edition, April 2003.

Arquitetura de Software outras


definies.
Astudillo (1998): a interface entre o problema do negcio
e a soluo tcnica.
Jazayere et al (2000): conjunto de componentes e seus
relacionamentos, que deve satisfazer os requisitos
funcionais e no funcionais do sistema.
ISO/IEEE 1471-2000 - Arquitetura a organizao
fundamental de um sistema incorporada em seus
componentes, seus relacionamentos com o ambiente, e os
princpios que conduzem seu design e evoluo.

Uma Viso da Arquitetura de


Software
uma representao da informao (ou parte dela)
contida na arquitetura de forma que se adque s
necessidades de um ou mais interessados.
Ela facilita o entendimento por parte do
interessado, uma vez que vai filtrar e formatar a
informao.
Por exemplo, a viso fornecida pelos casos de uso do
sistema, pode interessar ao cliente/usurio.
A viso de implementao aos programadores, etc.

O arquiteto pode usar as diferentes vises para lidar


com complexidade.

Arquitetura de Software
O termo arquitetura de software usado para
designar processo e produto.
Produto representao da estrutura de software
rea da engenharia de software que trata de
produzir as estruturas de software, visando a
reduzir complexidade.

O Processo de Arquitetura de
Software
Elaborao do modelo de negcio envolve analisar
custo, tempo de desenvolvimento, restries de mercado,
interfaces com outros sistemas, etc
Entendimento dos requisitos: levantamento de requisitos
e modelo do domnio
Criao ou seleo de uma arquitetura: identificao dos
componentes e suas interaes, das dependncias de
construo e tecnologias que apoiam a implementao.

O Processo de Arquitetura de
Software
Representao da arquitetura e divulgao: para
permitir aos desenvolvedores e testadores o
entendimento da arquitetura
Implementao da arquitetura, seguindo seus
protocolos e estruturas.
Anlise e avaliao: verificar a adequao da
arquitetura, registrando impactos, riscos e
dificuldades, o que servir para evoluao da
arquitetura.

O Processo de Arquitetura de
Software - Stakeholders
Participantes (interessados)
- Analista de requisitos identifica os requisitos
- Arquiteto de software cria a arquitetura - pode ser
um time com um arquiteto lder.
- Projetista ou Desenvolvedor implementa os
componentes
Outros: cliente/usurio, testador, gerente de projeto,
programador, secretrios, etc.

O Arquiteto de Software
ser capaz de reconhecer estruturas comuns em
sistemas j desenvolvidos
usar o conhecimento sobre arquiteturas existentes
para tomar decises de projeto em novos sistemas
ser capaz de realizar uma descrio formal da
arquitetura de um sistema a fim de analisar as
propriedades do sistema
apresentar a arquitetura para outras pessoas

O Arquiteto de Software
Habilidades:
compreender profundamente o domnio e as
tecnologias pertinentes
dominar tcnicas de modelagem e metodologias
de desenvolvimento
entender as estratgias de negcios da instituio
onde atua
conhecer produtos, processos e estratgias de
concorrentes

O Arquiteto de Software
Tarefas:
Especificao da arquitetura do software e das
bases para o sistema de acordo com os requisitos
do cliente.
modelagem
anlise de trade-offs e viabilidade
prototipao, simulao e realizao de
experimentos
anlise de tendncias tecnolgicas
atuao como mentor de arquitetos novatos

Importncia da Arquitetura
Como construir uma casa sem a planta?
- Atua como uma estrutura a fim de checar o atendimento aos
requisitos do sistema
- Suporte na estimao de custos e gerncia da complexidade
do sistema
- Suporte ao reso
- Reduz o intervalo entre especificao e implementao
- Permite considerar alternativas arquitetnicas em estgios
iniciais do desenvolvimento
- Reduz riscos associados construo do software

Importncia da Arquitetura
- A arquitetura abstrao que serve como
base para criar um entendimento mtuo, para
comunicao entre os participantes.
- Sua representao serve como guia para o
projeto de sua implementao, teste e
implantao do sistema.

A Definio da Arquitetura
Para o arquiteto, a fase de engenharia de
requisitos subsdio para a definio da
arquitetura da qual se obtm:
- processo de negcio modelado
- planejamento estratgico das verses
- requisitos de cada verso, etc.

A Definio da Arquitetura
- Deve facilitar reso em diferentes nveis.
necessrio que o sistema possa sofrer alteraes de
forma localizada, sem afetar outras partes.
necessrio que novas funcionalidades sejam
adicionadas sem causar impacto nas j existentes.
A vida til do sistema depende de uma boa
arquitetura que facilite modificaes, e permita sua
evoluo.

A Definio da Arquitetura
A definio est baseada na escolha de
alternativas mais adequadas ao domnio da
aplicao.
importante reutilizar e adotar estratgias
previamente validadas.
Utilizam-se frameworks, estilos, padres e
linguagens de descrio de componentes,
previamente definidos.

Arquitetura: frameworks, padres


e estilos arquiteturais.

Conceito de Padro
-

Um template (formulrio) de soluo para um


problema recorrente que seja comprovadamente
til em um determinado contexto.
Um padro de software instanciado atravs da
vinculao de valores a seus parmetros.
Os padres podem existir em vrias escalas e
nveis de abstrao; por exemplo, como padres
de arquitetura, padres de anlise, padres de
projeto, padres de teste e idiomas ou padres
de implementao.

Histrico
Arquiteto ->Christopher Alexander.
Linguagem de padres em arquitetura.
Christopher Alexander --> catlogo com 253
padres para edificaes ligadas a regies,
cidades, transportes, casas, escritrios, paredes,
jardins, etc.

Definio

um padro expressa uma soluo reutilizvel descrita


atravs de trs partes: um contexto, um problema e uma
soluo. (GAMMA et al., 1995).
Contexto: estende o problema a ser solucionado,
apresentando situaes de ocorrncia desses problemas.
Problema: determinado por um sistema de foras, onde estas
foras estabelecem os aspectos do problema que devem ser
considerados.
Soluo: mostra como resolver o problema recorrente e
como balancear as foras associadas a ele.

Padres em ES
padres em ES permitem que desenvolvedores
possam recorrer a solues j existentes para
solucionar problemas que normalmente ocorrem em
desenvolvimento de software;
Surgimento: incio dos anos 90;
Padres capturam experincia existente e comprovada
em desenvolvimento de software, ajudando a
promover boa prtica de projeto.

Categorias de Padres
Padres Arquiteturais: expressam
um esquema de organizao estrutural
fundamental para sistemas de software.
(BUSCHMANN et al., 1996)

Padres de Projeto: disponibilizam


um esquema para refinamento de subsistemas
ou componentes de um sistema de software
(GAMMA et al., 1995)
public void runServer()

Idiomas: descrevem como implementar


aspectos particulares de componentes ou de
relacionamentos entre eles, usando as
caractersticas de uma dada linguagem

{
ServerSocket server;
Socket connection;
try { connection =
server = new ServerSocket(7000,
100);
.........
server.accept();
.......................

Padres de arquiteturas (ou


arquiteturais)
-

So templates prontos que solucionam


problemas arquiteturais recorrentes
Expressam um esquema fundamental de
organizao estrutural para sistemas de
software.
Fornecem um conjunto de subsistemas prdefinidos, especificando suas
responsabilidades e incluindo regras e
diretrizes para organizar as relaes entre
eles.

Padres de arquiteturas
Os templates contm as seguintes informaes:
Nome do padro
Contexto
Problema
Impe a descrio de vrios aspectos
problemticos que devem ser considerados
Soluo
Fundamentos
Contexto resultante
Exemplos

Nome do
Padro
Broker
Contexto
Ambiente distribuido
Problema
Como os componentes do sistema devem se comunicar entre si.
Soluo
Crie um intermediri entre um componente-cliente e um componente servidor,
o broker. Um cilente envia uma mensaem parao Broker contendo todas as
informaes apropriads para que a comunicao seja efetuada. O Broker
responsvel por completar a conexo

Vantagens e Benefcios
Padres reduzem a complexidade
da soluo
Padres promovem o reso
Padres facilitam a gerao de
alternativas
Padres facilitam a comunicao

Estilos de Arquitetura
Uma arquitetura de software, ou somente uma viso de
arquitetura, pode ter um atributo chamado estilo de
arquitetura, que reduz o conjunto de formulrios que
podem ser escolhidos e impe um determinado grau de
uniformidade arquitetura.
O estilo pode ser definido por um conjunto de padres,
ou pela escolha de componentes ou conectores
especficos que funcionaro como os tijolos bsicos da
construo.

Estilos de Arquitetura

Expressam esquemas de organizao estrutural de


sistemas, fornecendo um conjunto de componentes
do sistema, suas responsabilidades e a forma de
interao entre eles.

Cada estilo de arquitetura lida com diferentes tipos


de atributos de qualidade. Para obter a definio de
uma arquitetura a partir dos estilos existentes, basta
saber quais os atributos mais relevantes para a
soluo e confront-los com os atributos que o estilo
atende.

Estilos Arquiteturais

A arquitetura de um sistema pode aderir a um ou mais


estilos arquiteturais.

Um estilo define os tipos de elementos que podem aparecer


em uma arquitetura e as regras que regem a interconexo
entre estes elementos.

Esses estilos podem simplificar o problema de


definio de arquiteturas de sistema.
A maioria dos sistemas de grande porte adere a vrios
estilos
Estilos arquiteturais = modelos arquiteturais

Exemplos de Estilos
Arquiteturais

Cliente-Servidor
Camadas
Filtros e dutos (pipes and filters)
Repositrio
Orientado a eventos (publisher/subscriber)
Objetos distribudos, etc

Estilos Arquiteturais e Escolhas


de Projeto

Um estilo arquitetural representa um conjunto de


escolhas de projeto

Conjunto de caractersticas comuns a diversos sistemas nos


quais as mesmas escolhas foram feitas
Padres arquiteturais
Um sistema aderente a determinado estilo ganha" as
caractersticas a ele inerentes

Estilos podem ser usados para descrever uma


determinada arquitetura

Foco nas solues de projeto e no em sua documentao

Organizao de sistema
Reflete a estratgia bsica que usada para
estruturar um sistema.
Exemplos:

O estilo de repositrio de dados compartilhados


Estilo de servios e servidores compartilhados
Estilo de mquina virtual ou em camadas
Orientado a objetos (ou Objetos Distribudos)
Pipes and Filters ou Pipelining

Modelo de referncia da
Arquitetura
Consiste na decomposio padronizada do
problema em partes conhecidas que cooperam
entre si em prol de uma soluo.
Geralmente, estes problemas so de domnio
bastante amadurecido e trazem a experincia de
analistas de negcio em conjunto com
desenvolvedores [Bass98].
O modelo de referncia de um determinado
domnio surge durante o processo de
amadurecimento da soluo em funo da
necessidade de representaes mais abstratas que
caracterizam o domnio.

Arquitetura de Referncia

Consiste em componentes de software e nos


relacionamentos
entre
eles
que
implementam
funcionalidades relativas s partes definidas no modelo de
referncia.

Cada uma destas partes pode ser implementada em


apenas um ou vrios componentes de software, ou seja, o
mapeamento das funcionalidades do modelo de referncia
em componentes da arquitetura de referncia nem sempre
um para um.

As arquiteturas de referncia so aplicveis a um


domnio particular.

Arquiteturas de Referncia

Derivadas de um estudo de domnio de aplicao, ao


invs de sistemas existentes.
Podem ser usadas como base para a implementao de
sistemas ou comparao de sistemas diferentes.

Atuam como um padro com relao ao qual os sistemas


podem ser avaliados.

Exs.

Modelo OSI para sistemas de comunicao


Organizao tradicional de compiladores em vanguarda e
retaguarda (e seus elementos internos)

Modelo de referncia OSI

Frameworks de Arquitetura
Um framework de arquitetura ou uma infraestrutura de arquitetura um conjunto de
componentes com os quais pode-se criar um
determinado tipo de arquitetura.
Vrias das maiores dificuldades arquiteturais devem ser
resolvidas no framework ou na infra-estrutura,
geralmente, direcionadas a um domnio especfico:
comando e controle, sistema de controle, etc.

Relacionamento entre eles


Modelo
de
Referncia

Estilos de
arquitetura

Padres de
arquitetura

Arquitetura
de
Referncia

Arquitetura
de software

Arquitetura
do sistema

Você também pode gostar