Anda di halaman 1dari 22

Arquitetura de Software

Definio
O conceito de Arquitetura de Software surgiu nos anos 60 (com Dijkstra),
mas se tornou popular nos anos 90.

Perry e Wolf (92) Arquitetura 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.

Definio
Uma arquitetura um conjunto de decises significativas sobre a
organizao de um sistema de software, a seleo dos elementos
estruturais e suas interfaces pelas quais o sistema composto, juntamente
com seu comportamento, como especificado nas colaboraes entre esses
elementos, a composio desses elementos estruturais e comportamentais
em subsistemas progressivamente maiores, e o estilo arquitetural que
dirige essa organizao esses elementos e suas interfaces, suas
colaboraes e sua composio. (Larman).

Definio
O artigo Working Group on Architecture da IEEE define a arquitetura
como "o conceito de nvel mais alto de um sistema em seu ambiente.

Nessa definio o artigo no se limita a um enfoque interno, mas leva em


considerao o sistema como um todo em seu ambiente de usurio e de
desenvolvimento.

Definio
A arquitetura de software um nvel de design voltado para questes que
vo alm dos algoritmos e das estruturas de dados da computao. A
projeo e a especificao da estrutura geral do sistema emergem como um
novo tipo de problema. As questes estruturais incluem organizao total e
estrutura de controle global; protocolos de comunicao, sincronizao e
acesso a dados; atribuio de funcionalidade a elementos de design;
distribuio fsica; composio de elementos de design; escalonamento e
desempenho; e seleo entre as alternativas de design." (Garlan e Shaw)

Definio
No RUP, a arquitetura de um sistema de software a organizao ou a
estrutura dos componentes significativos do sistema que interagem por
meio de interfaces, com elementos constitudos de componentes e
interfaces sucessivamente menores.

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.

Documento da Arquitetura de Software


Fornece uma viso geral de arquitetura abrangente do sistema, usando diversas vises
de arquitetura para descrever diferentes aspectos do sistema;

A documentao da arquitetura do software facilita a comunicao entre os


stakeholders, registra as decises iniciais acerca do projeto de alto-nvel, e permite o
reso;

O Documento de Arquitetura de Software desenvolvido basicamente durante a fase de


elaborao;

O arquiteto de software o responsvel pela elaborao da documentao da arquitetura


de software;

Stakeholders
Todas as partes interessadas no projeto;
Acionistas, donos, investidores, concorrentes, governos, empregados,
imprensa, etc.

Viso da Arquitetura de Software


uma representao da informao, ou parte dela, para facilitar o
entendimento em relao 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.

Modelo de Viso (RUP)

Viso de Casos de Uso: obrigatria


Viso Lgica: obrigatria
Viso de Implementao: opcional
Viso de Processos: opcional
Viso de Implantao: opcional

Viso de Casos de Uso


Mostra subconjunto do Modelo de Casos de Uso;
Mostra os atores significativos para o sistema.

Viso Lgica
Permite compreender a estrutura e a organizao do design do sistema;
utilizada no fluxo de trabalho, na qual existe somente uma viso lgica
do sistema, que ilustra as principais realizaes de caso de uso,
subsistemas, pacotes e classes que abrangem o comportamento
significativo em termos de arquitetura;

Subconjunto das classes, subsistemas, pacotes e realizaes de caso de


uso;

Refinada a cada iterao.

Viso de Implementao
Mostrar decises de arquitetura tomadas para a implementao;
Usa diagramas de componentes que ilustram como os subsistemas so
organizados em camadas e hierarquias;

Atribuir o trabalho de implementao a indivduos e equipes;


Avaliar a quantidade de cdigo que ser desenvolvida, modificada ou
excluda;

Discutir a reutilizao.

Viso de Processos
Usa diagramas de classes, diagramas de interao, diagramas de
atividades e diagramas de estados, com enfoque nas classes que
representam threads e processos;

Indicado quando o sistema possui mais de um thread de controle e se os


threads separados interagem ou so dependentes entre si.

Viso de Implantao
Usado para sistema distribudo;
Subconjunto do Modelo de Implantao;
Mostra a distribuio fsica do processamento no sistema.

Participantes da Arquitetura de Software


(Stakeholders)
Analista de requisitos: identifica os requisitos do sistema;
Arquiteto de software: cria a arquitetura, pode ser uma equipe com um
arquiteto lder;

Projetista ou Desenvolvedor: implementa os componentes.

Focos da Arquitetura
Evoluo do sistema: passagem para o prximo ciclo de desenvolvimento;
Reutilizao da arquitetura, ou de partes dela, no contexto de uma linha de produto;
Avaliao das qualidades suplementares, como desempenho, disponibilidade,
portabilidade e segurana;

Atribuio do trabalho de desenvolvimento a equipes ou subcontratantes;


Decises sobre a incluso dos componentes desenvolvidos internamente e adquiridos
prontos para serem usados;

Insero em um sistema mais amplo.

Habilidades de um Arquiteto de Software

Compreender as tecnologias disponveis na atualidade;


Dominar tcnicas de modelagem e metodologias de desenvolvimento;
Entender as estratgias de negcios da instituio onde trabalha;
Conhecer produtos, processos e estratgias de concorrentes;
Reconhecer estruturas comuns em sistemas j desenvolvidos;

Habilidades de um Arquiteto de Software


Usar o conhecimento sobre arquiteturas existentes para tomar decises de
projeto em novos sistemas;

Realizar uma descrio formal da arquitetura de um sistema a fim de


analisar as propriedades do sistema;

Apresentar a arquitetura para outras pessoas.