Implementação de Projetos de Software Prof. Leandro Buss Becker Email: [email protected] Copyright Leandro Becker Tópicos Visão geral da implementação Conceitos Fundamentais Elementos Envolvidos na Implementação Fluxo de Trabalho Copyright Leandro Becker 1. Visão geral da implementação Organizar o código em subsistemas e camadas Implementar classes e objetos em termos de componentes (fonte, binário, executável, etc) Testar componentes como unidades (units) Integrar sub-partes em único executável Copyright Leandro Becker 2. Conceitos Fundamentais 1. Builds 2. Integration 3. Prototypes Copyright Leandro Becker 2.1. Builds Representa uma versão operacional do sistema ou sua sub-parte Durante a impl. são gerados vários builds Devem ser devidamente documentados, permitindo o regresso para versões anteriores Projetos (devem) produzir builds em intervalos regulares (max. 1 / semana) Auxiliado pelo controle de versões (e.g. programa CVS) Copyright Leandro Becker 2.2 Integration Integração de componentes de sw distintos em unidade única: Integra sub-partes de um mesmo subsistema Integra subsistemas distintos Incremental integration: código é escrito em pequenas partes e depois integrado Phased integration: integração de múltiplas partes simultaneamente Copyright Leandro Becker 2.2.1. Incremental Integration Facilita localização de falhas Componentes são testados exaustivamente Permite a execução de sub-parte do sistema Plano de integração: define as classes e objetos definidos no projeto que devem ser implementadas em cada fase Copyright Leandro Becker 2.3 Prototypes Usados como alternativa para reduzir os riscos do projeto Viabilidade de negócio do produto Estabilidade ou performance de tecnologia Financiamento ou acertos sobre projeto Entendimento dos requisitos Teste de usabilidade (“look and feel”) Copyright Leandro Becker 2.3.1 Behavioral Prototype Propósito explicativo NÃO reproduz a arquitetura real do sistema Foca no que o sistema deverá fazer sob a visão do usuário Chamado de “skin” Copyright Leandro Becker 2.3.2 Structural Prototype Voltados para a utilização da infraestrutura do sistema final (“bones”) Útil para evoluir na versão final Pode ser gerado a partir de ambientes integrados de desenvolvimento (IDEs) ou ferramentas CASE: Rational Rose, RealTime Studio, etc Copyright Leandro Becker 2.3.3 Exploratory Prototype Serve para testar hipóteses relacionada com funcionalidade e tecnologia (ou ambos) Caracteriza-se por ter poucas linhas de código É do tipo “descartável” Criado com o mínimo de esforço Copyright Leandro Becker 2.3.4 Evolutionary Prototype Usado como base para o sistema final Evolui a cada interação da implementação Para tornarem-se “gerenciáveis”, necessitam de formalidades de desenvolvimento e testes Copyright Leandro Becker 3. Elementos Envolvidos na Implementação Implementador: desenvolve os comp. Integrador do sistema: gera os ‘build’ Arquiteto do sw: define a estruturação e o modelo de implementação (camadas) Revisor do código: inspeciona o código para qualidade e conformidade com padrões adotados Copyright Leandro Becker 4. Fluxo de Trabalho Estruturar modelo de implementação Implementar componentes Planejar integração [mais componentes a implementar nesta iteração] Integrar cada subsistema [mais subsistemas a integrar nesta iteração] Acabado Acabado [mais builds nesta iteração] Integrar sistema Acabado Copyright Leandro Becker Bibliografia Kruchten, P. The Rational Unified Process: An Introduction. Addison Wesley, 2003 – cap. 11: Implementation Discipline Copyright Leandro Becker