Escolar Documentos
Profissional Documentos
Cultura Documentos
Finalidade
1
Como Definir a Equipe
Essas atividades são melhor realizadas por uma equipe pequena composta por
participantes de várias funções. As questões que, em geral, são significativas em termos de
arquitetura incluem o desempenho, o escalonamento, a sincronização de processos e threads, e
a distribuição. A equipe deve também incluir membros que tenham experiência em domínio e
que possam identificar as principais abstrações. Além disso, a equipe deve ter experiência na
organização do modelo e na disposição em camadas. Ela precisará reunir todos esses threads
discrepantes em uma arquitetura coesa e coerente (embora preliminar).
Orientações de Trabalho
O trabalho é melhor realizado em várias sessões, talvez executado em alguns dias (ou
em semanas e meses, no caso de sistemas grandes).
2
Desenvolver a Visão Geral da Arquitetura
CONCEITOS
ARQUITETURA DE SOFTWARE
• Introdução
3
Para falar e tirar conclusões sobre a arquitetura do software, primeiro defina uma
representação de arquitetura, uma forma de descrever aspectos importantes de uma
arquitetura. No RUP, essa descrição é capturada em Visões de Arquitetura
Os
Categoria Padrão
Estrutura Camadas
Pipes e Filtros
Quadro-negro
Sistemas Distribuídos Broker
Sistemas Interativos Modelo-Visão-Controlador
Apresentação-Abstração-Controle
Sistemas Adaptáveis Reflexo
Microkernel
Duas dessas categorias são apresentadas mais detalhadamente aqui, a fim de esclarecer essas
idéias. Para obter uma abordagem completa, consulte [Um sistema que deve resolver as
questões em diferentes níveis de abstração. Por exemplo: as questões de controle de
hardware, as questões de serviços comuns e as questões específicas de domínio. Seria
extremamente indesejável escrever componentes verticais que lidem com essas questões em
todos os níveis. Uma mesma questão deveria ser resolvida (possivelmente de maneira
inconsistente) várias vezes em diferentes componentes.
Força
4
• As alterações efetuadas nos componentes não devem ser irregulares
• Responsabilidades similares devem ser agrupadas juntas
• Tamanho dos componentes—componentes complexos talvez precisem ser
decompostos
Solução
Exemplos:
1. Camadas Genéricas
5
O diagrama acima mostra um outro exemplo de divisão em camadas, onde há camadas
verticais específicas de aplicativo e camadas horizontais de infra-estrutura. Observe que a
meta é ter "chaminés" de negócios muito curtas e estimular a freqüência entre aplicativos. Do
contrário, é provável que várias pessoas resolvam o mesmo problema, possivelmente de
maneira diferente.
Quadro-negro
Contexto
Problema
Força
6
• A colaboração de vários agentes (resultados ou soluções parciais) pode ter diferentes
representações
• Os agentes não sabem da existência de cada um dos outros agentes, mas podem avaliar
as contribuições divulgadas de cada um deles
Solução
Exemplo:
Este exemplo mostra a visão estrutural ou estática modelada através da UML. Ele será parte
de uma colaboração parametrizada, que será restringida a parâmetros reais para instanciar o
padrão.
Estilo da Arquitetura
7
Abordagens Comuns da Divisão em Camadas
8
Uma estrutura dividida em camadas, desde o nível mais genérico de funcionalidade
até os níveis mais específicos de funcionalidade.
9
Número de Classes Número de Camadas
0 - 10 A divisão em camadas não é necessária
10 - 50 2 camadas
25 - 150 3 camadas
100 - 1000 4 camadas
Padrões de Particionamento
10
exemplos incluem gerenciamento de chamadas de telecomunicações, negociação de
valores mobiliários, processamento de indenizações de seguro, controle de tráfego aéreo,
etc.
o Distribuição do sistema. Em qualquer uma das camadas do sistema, é
possível particioná-las "horizontalmente" para refletir a distribuição física da
funcionalidade.
O particionamento para refletir a distribuição pode ajudar a visualizar a
comunicação de rede que ocorrerá assim que o sistema for executado.
No entanto, esse particionamento também pode dificultar a realização
de mudanças no sistema, se o Modelo de Implantação for alterado de forma
significativa.
o Áreas de sigilo. Alguns aplicativos, principalmente aqueles que exigem
autorização de segurança especial para serem desenvolvidos e/ou suportados, requerem
partições adicionais nas linhas de privilégio de acesso à segurança. O software que
controla o acesso a áreas de sigilo deve ser desenvolvido e mantido por pessoal
autorizado. Se o número de pessoas no projeto com esse conhecimento for limitado, a
funcionalidade que exige autorização especial deverá ser particionada em subsistemas
que serão desenvolvidos sem depender de outros subsistemas, sendo as interfaces para as
áreas de sigilo o único aspecto visível desses subsistemas.
o Áreas de variabilidade. A funcionalidade que tende a ser opcional e, portanto,
liberada apenas em algumas variantes do sistema, deve ser organizada em subsistemas
independentes que são desenvolvidos e apresentados sem depender da funcionalidade
obrigatória do sistema.
ARQUITETO DE SOFTWARE
11
Equipe
12
uma longa série de decisões insatisfatórias, tomadas com incerteza e sob pressão. Somente
aqueles que se concentram em fazer o que deve ser feito terão êxito nesse ambiente do
projeto.
13