Projeto de Arquitetura
Autor: Paranóias.. | Publicado: 2011-10-21T07:05:00-07:00

Projeto de Arquitetura é&nbsp;o processo inicial da construção de um sistema. O sistema é dividido em subsistemas menores, sendo o projeto de software responsável por identificar esses subsistemas e estabelecer um Framework para o controle e a comunicação dos sistemas.Framework é quem identifica os componentes e os fazem se comunicar.
Existem três vantagens para projetar e documentar uma arquitetura de software:Comunicação com os Stakeholders (Interessados no      Sistema) 
&nbsp;A Arquitetura pode ser utilizada como um ponto de discussão pelos stakeholders.Análise do Sistema
Significa que alguma análise pode ser realizada. Verifica se o sistema pode suprir requisitos não-funcionais.Reutilização em larga      Escala
&nbsp;A arquitetura pode ser reutilizada em grande escala.
Cada projetista trabalha de uma maneira diferente, mas todos eles desenvolvem três atividades em comum:
Estruturação do sistemaO sistema é decomposto em subsistemas principais e a comunicação entre estes é identificada.
Modelagem de controleÉ estabelecido um modelo dos relacionamentos de controle entre as partes do sistema.
Decomposição modularOs subsistemas identificados são decompostos em módulos.
Há uma diferença entre Subsistema e Módulo.
Um Subsistema é um sistema cuja operação não depende dos serviços fornecidos por outros subsistemas. São compostos por módulos. E um Módulo é geralmente um componente de sistema que fornece um ou mais serviços para outros serviços, mas não é considerado um sistema independente. Um módulo precisa de outro módulo para formar um subsistema.
Diferentes modelos arquiteturais podem ser produzidos durante o processo de projeto. Cada modelo apresenta diferentes perspectivas sobre a arquitetura.
Modelo Estrutural Estático mostra os principais componentes do sistema;Modelo de Processo Dinâmico mostra a estrutura do processo do sistema (processos em run-time “tempo de execução”);Modelo de Interface define as interfaces de subsistemas (serviços oferecidos);Modelos de Relacionamentos mostra como vai ser a relação entre os subsistemas para que forme o sistema final.
A Estrutura e o Estilo específico escolhido para um aplicação, podem depender dos requisitos não funcionais do sistema.
Desempenho: Se o desempenho for um requisito importante, isso sugere que a arquitetura deve ser projetada dentro de um pequeno número de subsistemas.Proteção: Se a proteção for um requisito fundamental, isso vai sugerir que uma estrutura em camadas para a arquitetura deve ser utilizada com os itens mais&nbsp; importantes protegidos nas camadas mais internas e com um alto nível de validação de proteção aplicado a essa camada.Segurança: Se a segurança for o requisito mais importante, sugere que as operações relacionadas com a segurança fiquem todas em um único subsistema ou em um pequeno número de subsistemas. Essa opção reduz os custos e os problemas de validação de segurança.Disponibilidade: Se esse for o requisito fundamental, sugere que a arquitetura seja projetada para incluir componentes possíveis de substituição e atualização, sem a interrupção do sistema.Facilidade de Manutenção: Esse requisito sugere que a arquitetura deve ser projetada utilizando componentes com poucas divisões, que possam ser rapidamente modificados. Dessa maneira os dados compartilhados devem ser evitados.

Estruturação do Sistema
A primeira fase da atividade de projeto de arquitetura é geralmente voltada para a decomposição do sistema em um conjunto de subsistemas. Um projeto de arquitetura pode ser representado como um diagrama de blocos e de linhas. Mas certamente não devem ser as únicas representações de arquitetura a serem utilizadas. Modelos mais específicos da estrutura podem ser desenvolvidos, os quais mostram como os subsistemas compartilham dados, como estão distribuídos e como atuam como interface entre si.
Modelos – Padrão
Modelo de RepositórioÉ um modelo de sistema com base em um banco de dados compartilhado. Esse modelo é adequado a aplicações em que os dados são gerados por um subsistema e utilizados por outro. Exemplos de sistemas com modelo repositório são os Sistemas de Comando e Controle, Sistemas de Informações Gerenciais, Conjuntos de ferramentas CASE e os Sistemas de CAD.
Vantagens e desvantagens de um Modelo repositório
* É uma maneira eficiente de compartilhar grandes quantidades de dados. Não há necessidade de transmitir os dados explicitamente de um subsistema para outro.* Contudo, os subsistemas devem concordar com o modelo de dados de repositório. Pode ser difícil ou impossível integrar novos subsistemas, se seus modelos de dados não se adequarem ao esquema estabelecido.* Os subsistemas que produzem dados não precisam saber como esses dados são utilizados pelo outro subsistema.* Contudo, a evolução pode ser difícil, uma vez que um grande volume de informações é gerado de acordo com um modelo de dados estabelecido.* As atividades como backup, segurança, controle de acesso e recuperação a partir de erros, são centralizados e de responsabilidade do gerente de repositório. As ferramentas podem focalizar suas principais funções, em vez de se ocuparem com essas questões. * * Contudo, diferentes subsistemas podem ter diferentes requisitos para políticas de proteção, recuperação e backup. O modelo de repositório impõe a mesma política a todos os subsistemas.* O modelo de compartilhamento é visível por meio de esquema de repositório. É simples e direto integrar novas ferramentas, considerando que eles são compatíveis com o modelo de dados estabelecidos.* Contudo, pode ser difícil distribuir o repositório em uma série de máquinas. Embora seja possível distribuir um repositório logicamente centralizado, pode haver problemas de redundância e inconsistência de dados.

Modelo Cliente-Servidor&nbsp;É um modelo de sistema distribuído, que mostra como os dados e o processamento são distribuídos em uma série de processadores. A vantagem mais importante do Modelo Cliente-Servidor é que ele é uma arquitetura distribuída, permitindo o uso efetivo de sistemas de rede com muitos processadores distribuídos.
Principais componentes deste modelo
* Um conjunto de servidores em stand-alone, que oferece serviços a outros sistemas. * Um conjunto de clientes que solicita os serviços oferecidos pelos servidores. Estes são, normalmente, subsistemas em si. * Uma rede que permite aos clientes acessar esses serviços.
Modelo de Máquina AbstrataModela a interface de subsistemas e organiza um sistema em uma série de camadas, cada uma das quais fornecem um conjunto de serviços. À medida que uma camada é desenvolvida, alguns serviços fornecidos por aquela camada podem se tornar disponíveis para os usuários. Se sua interface for preservada, uma camada poderá ser substituida por outra. Quando as interfaces em camadas se modificam, somente a camada adjacente é afetada.

Modelo de Controle
Controlam os subsistemas de modo que seus serviços sejam fornecidos no local certo e no tempo certo. Em nível de arquitetura dizem respeito ao controle de fluxo entre subsistemas.
Duas abordagens gerais de controle podem ser identificadas
Controle CentralizadoUm subsistema tem a responsabilidade geral pelo controle, e iniciar e interromper os outros subsistemas, os modelos de Controle Centralizado se dividem em duas classes:
Modelo retorno de chamadas: Esse é o modelo de sub-rotina top-dawn, em que o controle começa na parte superior de uma hierarquia de sub-rotina e, por meio de chamadas de sub-rotina, passa para vários níveis mais fortes na árvore. O modelo de sub-rotina aplica-se apenas a sistemas seqüenciais.
Modelo gerenciador: Neste modelo um componente é designado como um gerenciador do sistema e controla o início, a interrupção e a coordenação de outros processos de sistema.Um processo é um subsistema ou um módulo que pode ser executado em paralelo com outros processos. Pode ser aplicado a sistemas concorrentes. Uma variação desse modelo também pode ser aplicada em sistemas seqüenciais, em que uma rotina de gerenciamento chama determinados subsistemas.
A natureza rígida e restrita do modelo retorno de chamadas é, ao mesmo tempo, um ponto forte e&nbsp; fraco. É um ponto forte porque é relativamente simples analisar fluxos de controle e concluir como o sistema responderá a estrada específica. É um ponto fraco porque é difícil lidar com as exceções feitas à operação normal. O modelo gerenciador é, freqüentemente, utilizado em sistemas em tempo real simples, que não tem restrições de tempo muito rígidas. De modo geral o controlador está em um loop contínuo, verificando sensores e outros processos para eventos e mudanças de estado. Por esta razão, esse modelo é, algumas vezes, chamado de loop de eventos.
Sistemas Orientados a EventosSão baseados em eventos gerados externamente. O termo evento, não significa somente um sinal binário, ele pode ser um sinal capaz de assumir uma gama de valores. Existe tipos diferentes de sistemas orientados a eventos, que podem ser desenvolvidos. Eles podem ser planilhas de cálculos, em que a mudança de valor de uma célula faz com que outras células sejam modificadas; objetos ativos,em que a mudança de um valor de atributo de um objeto inicia uma ação.Podemos citar dois modelos de controle orientado a objeto
Modelo de transmissão: Onde um evento é, em principio, transmitido para todos os subsistemas. Qualquer subsistema que puder manipular esse evento responderá a ele.
Modelo orientado a interrupções: Eles são exclusivamente utilizados em sistemas de tempo real, em que interrupções externas são detectadas por um manipulador de interrupções.
Decomposição em módulos
É o processo do projeto de arquitetura que decompõe os subsistemas em módulos. Não há uma distinção rígida entre a decomposição de sistemas e a decomposição em módulos.Contudo os componentes em módulos são geralmente menores do que os subsistemas, e isso permite que sejam utilizados modelos alternativos de decomposição.
Modelos utilizados na decomposição de um sistema em módulos
Modelo orientado a objeto: É decomposto em um conjunto de objetos que se comunicam.Uma decomposição orientada a objeto diz respeito a classes de objetos, seus atributos e suas operações. Quando ela é implementada, os objetos são criados a partir dessas classes e algum modelo de controle é utilizado para coordenar as operações de objetos. Suas vantagens é que uma vez que os objetos são inadequadamente acoplados, a implementação de objetos pode ser modificada, sem afetar outros objetos.
Modelo de fluxo de dados: É decomposto em módulos funcionais que aceitam a entrada de dados e os transformam em dados de saída. Em um modelo de fluxo de dados, as transformações funcionais processam suas entradas e produzem saídas. Os dados fluem de uma para outra e são transformados à medida que se movimentam ao longo da seqüência.As transformações podem ser executadas seqüencialmente ou em paralelo. As vantagens dessa arquitetura é que ela suporta o reuso de transformações e ela é intuitiva, no sentido de que muitas pessoas pensam em seu trabalho em termos de processamento de entrada e saída, ela é simples de ser implementada, e a evolução do sistema pela adição de novas transformações é geralmente simples e direta.
Arquitetura de domínio específico
Existem dois tipos de modelo de arquitetura de domínio específico:
Modelos GenéricosModelos genéricos são abstrações a partir de uma série de sistemas reais. Talvez, o exemplo mais conhecido de um modelo genérico de arquitetura seja um modelo de compilador. Eles devem ter os seguintes módulos:
Um analisador léxico
Uma tabela de símbolos
Um analisador sintático

Modelos de ReferênciaOs modelos de referência são, de modo geral, derivados de um estudo do domínio da aplicação. Eles representam uma arquitetura idealizada que inclui todas as características que o sistema pode incorporar.