Introdução à Arquitetura de Software

Slides:



Advertisements
Apresentações semelhantes
Introdução à Análise de Sistemas
Advertisements

Engenharia de Software
Modelagem de Software Orientado a Objetos
UML Visões – Parte 2.
Rational Unified Process(RUP)
Centrado na arquitetura
RUP - Rational Unified Process
Componentes e Frameworks
Component-Based Frameworks for E-Commerce Agnaldo Kiyoshi Noda.
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Arquitetura de Aplicações Web
Componentes: A Abordagem Catalysis
APSI III Aline Vasconcelos
Análise e Projeto de Sistemas
Prof. Jorge Luis Risco Becerra Auxiliares:Prof. Eduardo Lobo
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
RUP Prof.ª Elaine B. Figueiredo.
Engenharia de Software Respostas do Questionário 01
RUP - Cap. 2 – Os 4 P’s (Pessoas, Projeto, Produto e Processo)
Metodologia de Desenvolvimento de Software – RUP 2. Requisitos
Unibratec Análise e Gerencia de Projetos Profº Henrique Vila Nova
Planejamento e Gerenciamento de Projetos
Visão Geral PRO.NET.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Arquitetura de software
O Fluxo de Implementação
Modelagem de Software.
Arquiteturas de Referência
Fase de Elaboração: Fluxo de Requisitos
Engenharia de Software
UML Modelagem e Programação Orientada a Objetos
Planejamento e Gerenciamento
Referências: Booch, G. et al. The Unified Modeling Language User Guide
Otimizando sua TI, maximizando seus negócios
Análise e Desenvolvimento de Software
PSBD II Projeto de Sistemas de Banco de Dados II
(Open Unified Process)
Projeto de Arquitetura de Software Visão Geral
O Processo de desenvolvimento de software
Especificação em Projeto de Sistemas
Análise e Projeto Orientados a Objetos
Modelagem Arquitetural e a Visão 4+1
Representação Arquitetural
Engenharia de Software
Engenharia de Software
Arquitetura de Software
RUP - Cap. 4 – Processo Centrado na Arquitetura
Padrões de Interação com o Usuário
Como elaborar seu currículo? 04/2006 Um currículo bem feito não garante sua contratação mas um currículo mal elaborado elimina-o do processo seletivo.
Fluxos secundários Só devem ser analisados e descritos após a descrição dos fluxos básicos. Fluxos alternativos situações especiais (desconto para um cliente)
Engenharia de Software Aula 02 – Introdução Prof. Adriana M. Martins.
Abr-17 Projetar Processos Projetar distribuição.
Processo Centrado na Arquitetura
Gestão de projetos de Software GTI-16
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
CIn-UFPE1 © 2003, Alexandre Vasconcelos Visão Geral do RUP.
Infra-Estrutura para Computação Distribuída
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Análise e Projeto de Sistemas Unified Modeling Language Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
/ de Julho de UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática Pós-Graduação em Ciência da Computação Tópicos Avançados.
Projeto de Arquitetura de Software
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Uma Extensão do Fluxo de Análise e Projeto do RUP com suporte a Desenvolvimento Baseado em Componentes Eduardo Almeida
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/41 Análise e Projeto de Sistemas Arquitetura de Software.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Introdução à Arquitetura de Software Mestrado em Informática PUC Minas Prof. Humberto Torres Marques Neto Abril / 2009

Objetivos Apresentar os conceitos básicos de arquitetura de software Definir o papel do Arquiteto de Software Descrever um processo simples de arquitetura de software Promover discussões e reflexões para construção de uma arquitetura de software ubíquo

Referências Bibliográficas Básicas JACOBSON, Ivar, BOOCH, Grady, RUMBAUGH, James. The unified software development process. Addison Wesley, 1998. BOOCH, Grady. Handbook of software architecture. IBM Corporation, 2004. PRESSMAN, Roger S. Engenharia de Software. 6 ed. McGraw-Hill, 2006.

Como a falta de definição arquitetural pode comprometer... ... a promoção de venda on-line de passagens aéreas; ... o uso do comércio eletrônico na véspera do Dia das Mães; ... a declaração anual de imposto de renda; ... a criação de um e-mail para cada aluno de graduação da PUC; ... o acesso externo às bases de dados da ACM e do IEEE.

Dimensões da Complexidade de Software Higher technical complexity - Embedded, real-time, distributed, fault-tolerant - Custom, unprecedented, architecture reengineering - High performance An average software project - 5-10 people - 3-9 month duration - 3-5 external interfaces - Some unknowns & risks Defense Weapon System Telecom Switch National Air Traffic Control System Commercial Compiler Embedded Automotive Software Large-Scale Organization/Entity Simulation Lower management complexity - Small scale - Informal - Single stakeholder - “Products” CASE Tool Higher management complexity - Large scale - Contractual - Many stake holders - “Projects” Small Scientific Simulation IS Application Distributed Objects (Order Entry) Enterprise IS (Family of IS Applications) Defense MIS System IS Application GUI/RDB (Order Entry) Business Spreadsheet Lower technical complexity - Mostly 4GL, or component-based - Application reengineering - Interactive performance Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Ilusão de simplicidade Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Conceitos errados sobre Arquitetura de Software Arquitetura são modelos e papéis. <Minha tecnologia favorita> é arquitetura. Trabalho unicamente do arquiteto de software. Arquitetura é uma ciência exata. Arquitetura é uma arte. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

O que é Arquitetura de Software?

O que é Arquitetura de Software? A arquitetura de software direciona decisões significativas sobre a organização do sistema de software os elementos estruturais e suas interfaces que irão compor o sistema, bem como os seus respectivos comportamentos especificados a partir da colaboração entre esses elementos a composição dos elementos estruturais e comportamentais em cada sub-sistema o estilo arquitetural que direciona a organização desses elementos, suas colaborações e composições.

O que é Arquitetura de Software? Entretanto, de acordo com os autores do Processo Unificado (Jacobson, et. al.) A arquitetura de software não está interessada apenas na estrutura e no comportamento do sistema, mas, também no seu uso, na sua funcionalidade, na sua performance, na sua resiliência, na sua capacidade de reuso, na sua compreensibilidade, na sua economia, nas restrições tecnológicas e trade-offs, e, por fim, na estética do software.

O que é Arquitetura de Software? “A arquitetura de um software é a estrutura ou estruturas do sistema, o que compreende componentes de software, propriedades desses componentes que são visíveis externamente e o relacionamento entre eles”, Paul Clements, et. al. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

O que é Arquitetura de Software? “A arquitetura de um sistema de software compreende um conjunto de componentes, conexões e restrições de sistema e de software; um conjunto de necessidades de stakeholders; uma lógica que demonstra que se os componentes, conexões e restrições definem um sistema que se implementando irá atender as necessidades dos stakeholders”, Barry Boehm, et. al. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

O que é Arquitetura de Software? “A Arquitetura de Software é a organização fundamental de um sistema, incluindo seus componentes, o relacionamento entre esses componentes e com o ambiente e os princípios que definem o desenho e a evolução dos componentes.”, IEEE 1471/2000 Recommended Practice for Architectural Description of Software-Intensive Systems. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

O que é Arquitetura de Software? “A Arquitetura de Software inclui o conjunto de decisões significativas sobre a organização de um software, tais como, a seleção dos elementos estruturais e suas interfaces; o comportamento entre esses elementos; a composição destes elementos estruturais e de comportamento em subsistemas maiores e o estilo arquitetural que guia esta organização.”, Booch, Kruchten, Reitman, Bittner, and Shaw. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Por que é necessário definir a Arquitetura de um Software? Todo sistema em produção possui uma arquitetura de software. Se você não investiu tempo e cuidado para construí-la, ela pode ser muito diferente do que você esperava! “Arquitetura de software é o conjunto de decisões que, se feitas incorretamente, podem causar o cancelamento do projeto.”  – Eoin Woods Palace 2, Rio de Janeiro. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Por que é necessário definir a Arquitetura de um Software? Precisamos de uma arquitetura para: Entender o sistema Organizar o desenvolvimento Promover o reuso Evoluir o sistema

Por que é necessário definir a Arquitetura de um Software? Entender os sistemas modernos é uma atividade desafiadora porque: eles possuem comportamentos complexos eles funcionam em ambientes complexos eles são tecnologicamente complexos eles frequentemente combinam sistemas distribuídos, plataformas e produtos comerciais (SO e SGBDs, por exemplo) e também reusam componentes e frameworks eles precisam satisfazer a demanda de indivíduos e organizações em alguns casos, eles são tão grandes que precisam ser divididos em vários projetos

Por que é necessário definir a Arquitetura de um Software? Organização do desenvolvimento uma boa arquitetura de software é aquela que explicitamente define as interfaces entre os envolvidos no projeto para reduzir os possíveis problemas de comunicação Promoção do reuso uma boa arquitetura de software ajuda o desenvolvedor conhecer onde procurar e como encontrar elementos reutilizáveis

Por que é necessário definir a Arquitetura de um Software? Evolução do sistema softwares devem ser resilientes e tolerantes a mudança uma arquitetura ruim pode prejudicar a evolução do sistema decorrente das mudanças do ambiente

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Arquiteto de Software Pessoa, time ou organização responsável pela arquitetura de um software Responsável por decisões, realizadas, normalmente em retaguarda Não é um designer de auto nível precisa avaliar a viabilidade da solução Não é o gerente de projeto Não é um especialista de tecnologia Não é um “lobo solitário” deve ter liderança e habilidade de comunicação Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Responsabilidades do Arquiteto de Software Definir e validar a arquitetura do sistema Manter a integridade conceitual do sistema Avaliar e atacar os riscos do sistema Propor a ordem e o conteúdo dos releases do software (planos de iteração) Facilitar a comunicação entre os membros da equipe e resolver conflitos Orientar os membros da equipe Em conjunto com o gerente de projeto, deve ser a referência do sistema Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Atividades do Arquiteto de Software 22

Atividades do Arquiteto de Software: gerenciar escopo do sistema 23

Atividades do Arquiteto de Software: definir arquitetura candidata 24

Atividades do Arquiteto de Software: realizar a síntese arquitetural 25

Atividades do Arquiteto de Software: refinar a arquitetura 26

Atividades do Arquiteto de Software: estruturar o modelo de implementação 27

Atividades do Arquiteto de Software: analisar o comportamento do software 28

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Arquitetura de Software: “Visão 4+1” (Clements, et. al. Documenting Software Architectures) Logical View Implementation View End-user Programmers Configuration management Functionality Use Case View Process View Deployment View Performance Scalability Throughput System integrators System engineering System topology Communication Provisioning Conceptual Physical Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Adaptação das Visões Nem todos os sistemas requerem todas as visões Processo simples (ignorar a visão de processo) Programa pequeno (ignorar a visão de implementação) Processamento simples (ignorar a visão de implantação) Alguns sistemas requerem visões adicionais Visão de dados Visão de segurança Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Visão Lógica ou Visão de Projeto Visão da arquitetura de software que engloba o vocabulário do problema e o espaço de solução, as colaborações que realizam os casos de uso, os sub-sistemas que permitem a decomposição do sistema e as interfaces com outros sistemas e com o próprio sistema como um todo. Foco em: Funcionalidades Abstrações chaves Mecanismos Separação de interesses e distribuição de responsabilidades Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Visão de Processo Visão da arquitetura de software que engloba as threads e processos que formam a concorrência do sistema e a sincronização de mecanismos. Foco em: Performance Escalabilidade Throughput Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Visão de Implementação Visão da arquitetura de software que engloba os componentes utilizados na compilação e o “versionamento” do software. Foco em: Gerência de configuração Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Visão de Implantação Visão da arquitetura de software que engloba os nós que formam a topologia de hardware utilizada pelo sistema. Foco em: Distribuição Comunicação Provisionamento Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Visão de Implantação Visão da arquitetura de software que engloba os nós que formam a topologia de hardware utilizada pelo sistema. Foco em: Distribuição Comunicação Provisionamento Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Adaptação de transparência elaborada por Grady Booch (IBM Fellow) Visão de Caso de Uso Visão da arquitetura de software que engloba os casos de uso que descrevem o comportamento do sistema como ele visto pelos usuários finais e demais envolvidos. Adaptação de transparência elaborada por Grady Booch (IBM Fellow)

Um exemplo: Sistema dos Hotéis ACME Sistema para evolução da rede de hotéis ACME, que ganhou um financiamento do BNDES. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME Um processo didático e simplificado: Alinhar o projeto com a visão, objetivos, requisitos e restrições dos interessados. Desenvolver os requisitos arquiteturalmente significativos Identificar e atacar riscos e restrições técnicas. Modelar a arquitetura. Construir fisicamente a arquitetura. Avaliar a arquitetura. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 01. Alinhar o projeto com os princípios, visão, objetivos, requisitos e restrições dos interessados. Visão: Suportar o crescimento do hotel ACME e a automação dos principais processos de negócio que envolvem potenciais clientes e hóspedes. Princípios: Simplicidade, flexibilidade, alinhamento com negócio. Requisitos Funcionais: Reserva self-service Reserva Pagamento Login Check-in Check-out Cadastro de hóspede Registro de serviços Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 02. Desenvolver os requisitos arquiteturalmente significativos Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 02. Desenvolver os requisitos arquiteturalmente significativos Requisitos de qualidade/não-funcionais. O hóspede pode fazer sua reserva remotamente (WWW) e de forma segura. Pico de 1000 acessos simultâneos em alta temporada. Tempo de resposta para reserva pelo hóspede: 8 seg. Tempo de resposta para reserva por funcionário: 5 seg. A interface para o funcionário deve ser rica (gráfica, drag-n-drop , Ajax) e acessível pela intranet. Requisitos de infra-estrutura Disponibilidade do sistema de 99,9%. Estimativa de crescimento de 20% ao ano. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 02. Desenvolver os requisitos arquiteturalmente significativos Classificando requisitos de qualidade. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 02. Desenvolver os requisitos arquiteturalmente significativos Classificando requisitos funcionais. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 03. Identificar e atacar riscos e restrições técnicas. O sistema de autorização de cartões de crédito (SACC) é provido por terceiros e as transações serão realizadas através de webservices. O servidor de aplicações deve ser o Sun GlassFish. O SGBD deve ser o Oracle 10G. A aplicação web deve ser compatível com IE 6 e Firefox 2 ou versões superiores. Principais riscos identificados:Apesar de ser compatível com Java EE, o servidor de aplicações não é conhecido pelos desenvolvedores. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 03. Identificar e atacar riscos e restrições técnicas. Ações de mitigação de riscos e aos requisitos de qualidade mais severos (POC – Provas de Conceito) Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Explorar e avaliar opções arquiteturais de alto-nível.Prover um entendimento da estrutura para os patrocinadores e demais interessados. Levar em consideração: Desenho da rede pré-existente. Bancos de dados pré-existentes. Ambiente web. Configuração dos servidores. Uso de padrões. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Criar uma estrutura inicial para o modelo de design. Mostrar pacotes de desenho arquiteturalmente significativos. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Mecanismos de análise e desenho. Decisões táticas que irão realizar a arquitetura. Alguns mecanismos de análise: Persistência. Segurança. Gerência de transações. Troca de informações/Interoperabilidade. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 04. Modelar a Arquitetura Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 05. Construir fisicamente a arquitetura. Time (arquitetos, projetistas e desenvolvedores) escolhem cenários de risco e constroem juntos a arquitetura executável do sistema. Em processos como o UP, entre 5 a 20% dos requisitos mais prioritários e complexos são endereçados até o 3/10 do tempo do projeto. Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 05. Construir fisicamente a arquitetura. Objetivo: Reduzir os riscos do projeto. 1/10 do tempo do projeto. Arquitetura candidata 3/10 do tempo do projeto. Arquitetura executável Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes

Um exemplo: Sistema dos Hotéis ACME 06. Avaliar a Arquitetura O objetivo é rever o resultado e analisar alternativas. Avaliação do grau de atendimento dos requisitos de qualidade. Testabilidade da arquitetura. Utilização de checklists para validação. Métodos clássicos: ATAM, CBAM, SAAM e ARID (SEI / Carnegie Mellon). Ferramentas de análise estrutural e arquitetural podem auxiliar na avaliação arquitetura e conformidade do código. Rational Software Architect, SA4J, Metrics (plugin do Eclipse), SourceMonitor, Jdepend. ARID http://www.sei.cmu.edu/architecture/arid.html ATAM http://www.sei.cmu.edu/publications/documents/00.reports/00tr004.html CBAM http://www.sei.cmu.edu/architecture/cbam.html SAAM http://www.sei.cmu.edu/publications/articles/saam-metho-propert-sas.html Adaptação de transparência elaborada pelo Prof. Marco Aurélio S. Mendes