Arquitetura de Software

22
Arquitetura de Software

description

Arquitetura de Software

Transcript of Arquitetura de Software

Page 1: Arquitetura de Software

Arquitetura de Software

Page 2: Arquitetura de Software

Definição

• 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 conexão) que possuem alguma organização. Os elementos e sua organização são definidos por decisões tomadas para satisfazer objetivos e restrições.

Page 3: Arquitetura de Software

Definição

• “Uma arquitetura é um conjunto de decisões significativas sobre a organização de um sistema de software, a seleção dos elementos estruturais e suas interfaces pelas quais o sistema é composto, juntamente com seu comportamento, como especificado nas colaborações entre esses elementos, a composição desses elementos estruturais e comportamentais em subsistemas progressivamente maiores, e o estilo arquitetural que dirige essa organização – esses elementos e suas interfaces, suas colaborações e sua composição”. (Larman).

Page 4: Arquitetura de Software

Definição

• O artigo Working Group on Architecture da IEEE define a arquitetura como "o conceito de nível mais alto de um sistema em seu ambiente”.

• Nessa definição o artigo não se limita a um enfoque interno, mas leva em consideração o sistema como um todo em seu ambiente de usuário e de desenvolvimento.

Page 5: Arquitetura de Software

Definição

• “A arquitetura de software é um nível de design voltado para questões que vão além dos algoritmos e das estruturas de dados da computação. A projeção e a especificação da estrutura geral do sistema emergem como um novo tipo de problema. As questões estruturais incluem organização total e estrutura de controle global; protocolos de comunicação, sincronização e acesso a dados; atribuição de funcionalidade a elementos de design; distribuição física; composição de elementos de design; escalonamento e desempenho; e seleção entre as alternativas de design." (Garlan e Shaw)

Page 6: Arquitetura de Software

Definição

• No RUP, a arquitetura de um sistema de software é a organização ou a estrutura dos componentes significativos do sistema que interagem por meio de interfaces, com elementos constituídos de componentes e interfaces sucessivamente menores.

Page 7: Arquitetura de Software

Outras Definições

• Astudillo (1998): é a interface entre o problema do negócio e a solução técnica.

• Jazayere et al (2000): conjunto de componentes e seus relacionamentos, que deve satisfazer os requisitos funcionais e não funcionais do sistema.

• ISO/IEEE 1471-2000 - Arquitetura é a organização fundamental de um sistema incorporada em seus componentes, seus relacionamentos com o ambiente, e os princípios que conduzem seu design e evolução.

Page 8: Arquitetura de Software

Documento da Arquitetura de Software

• Fornece uma visão geral de arquitetura abrangente do sistema, usando diversas visões de arquitetura para descrever diferentes aspectos do sistema;

• A documentação da arquitetura do software facilita a comunicação entre os stakeholders, registra as decisões iniciais acerca do projeto de alto-nível, e permite o reúso;

• O Documento de Arquitetura de Software é desenvolvido basicamente durante a fase de elaboração;

• O arquiteto de software é o responsável pela elaboração da documentação da arquitetura de software;

Page 9: Arquitetura de Software

Stakeholders

• Todas as partes interessadas no projeto;

• Acionistas, donos, investidores, concorrentes, governos, empregados, imprensa, etc.

Page 10: Arquitetura de Software

Visão da Arquitetura de Software

• É uma representação da informação, ou parte dela, para facilitar o entendimento em relação às necessidades de um ou mais interessados.

• Ela facilita o entendimento por parte do interessado, uma vez que vai filtrar e formatar a informação. – Por exemplo, a visão fornecida pelos casos de uso do sistema, pode interessar ao cliente/usuário. A visão de implementação aos programadores, etc.

Page 11: Arquitetura de Software

Modelo de Visão (RUP)

• Visão de Casos de Uso: obrigatória

• Visão Lógica: obrigatória

• Visão de Implementação: opcional

• Visão de Processos: opcional

• Visão de Implantação: opcional

Page 12: Arquitetura de Software

Visão de Casos de Uso

• Mostra subconjunto do Modelo de Casos de Uso;

• Mostra os atores significativos para o sistema.

Page 13: Arquitetura de Software

Visão Lógica

• Permite compreender a estrutura e a organização do design do sistema;

• É utilizada no fluxo de trabalho, na qual existe somente uma visão lógica do sistema, que ilustra as principais realizações de caso de uso, subsistemas, pacotes e classes que abrangem o comportamento significativo em termos de arquitetura;

• Subconjunto das classes, subsistemas, pacotes e realizações de caso de uso;

• Refinada a cada iteração.

Page 14: Arquitetura de Software

Visão de Implementação

• Mostrar decisões de arquitetura tomadas para a implementação;

• Usa diagramas de componentes que ilustram como os subsistemas são organizados em camadas e hierarquias;

• Atribuir o trabalho de implementação a indivíduos e equipes;

• Avaliar a quantidade de código que será desenvolvida, modificada ou excluída;

• Discutir a reutilização.

Page 15: Arquitetura de Software

Visão de Processos

• Usa diagramas de classes, diagramas de interação, 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 são dependentes entre si.

Page 16: Arquitetura de Software
Page 17: Arquitetura de Software

Visão de Implantação

• Usado para sistema distribuído;

• Subconjunto do Modelo de Implantação;

• Mostra a distribuição física do processamento no sistema.

Page 18: Arquitetura de Software
Page 19: Arquitetura de Software

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 líder;

• Projetista ou Desenvolvedor: implementa os componentes.

Page 20: Arquitetura de Software

Focos da Arquitetura

• Evolução do sistema: passagem para o próximo ciclo de desenvolvimento;

• Reutilização da arquitetura, ou de partes dela, no contexto de uma linha de produto;

• Avaliação das qualidades suplementares, como desempenho, disponibilidade, portabilidade e segurança;

• Atribuição do trabalho de desenvolvimento a equipes ou subcontratantes;

• Decisões sobre a inclusão dos componentes desenvolvidos internamente e adquiridos prontos para serem usados;

• Inserção em um sistema mais amplo.

Page 21: Arquitetura de Software

Habilidades de um Arquiteto de Software

• Compreender as tecnologias disponíveis na atualidade;

• Dominar técnicas de modelagem e metodologias de desenvolvimento;

• Entender as estratégias de negócios da instituição onde trabalha;

• Conhecer produtos, processos e estratégias de concorrentes;

• Reconhecer estruturas comuns em sistemas já desenvolvidos;

Page 22: Arquitetura de Software

Habilidades de um Arquiteto de Software

• Usar o conhecimento sobre arquiteturas existentes para tomar decisões de projeto em novos sistemas;

• Realizar uma descrição formal da arquitetura de um sistema a fim de analisar as propriedades do sistema;

• Apresentar a arquitetura para outras pessoas.