Análise e Gerenciamento de Requisitos com Casos de Uso Módulo 1 Melhores Práticas da Engenharia de Software Objetivos • Lista de sintomas dos problemas encontrados no Desenvolvimento de Software. • Definição das Seis Melhores Práticas. • Descrição das Atividades para resolver os problemas da Engenharia de Software para cada Melhor Prática. • Apresentação do Processo Unificado (UP), dentro do contexto das Seis Melhores Práticas. Problemas do Desenvolvimento de Software SINTOMAS: Necessidades de Negócio e Usuário não atendem. Muitas mudanças de requisitos. Módulos não integram. Difícil de manter. Descoberta tardia das falhas. Baixa qualidade e iteratividade com o usuário. Baixa performance sob condições normais. Esforço não coordenado da equipe. Problemas de build-e-release (construção e lançamento de versão). Mapeamento dos Sintomas para causas raiz Sintomas Causas Raiz Necessidades erradas Requisitosinsuficientes insuficientes Requisitos mutantes Requisitos Mutantes ComunicaçãoAmbígua ambígua Comunicação Módulos isolados Arquiteturas fragmentadas Difícil manter Complexidade desnecessária Tarde demais Inconsistências Baixa qualidade Testes insuficientes Baixa performance Avaliação subjetiva Equipe descoordenada Desenvolvimento em cascata Problemas de Build-erelease Mudançasnão nãocontroladas controladas Mudanças Automação Insuficiente Melhores Práticas Desenvolver iterativamente Gerenciar Requisitos Arquiteturas componentizadas Modelar Visualmente (UML) de Qualidade Verificação da Gerenciar Gerenciar Mudanças Mudanças Desenvolver Iterativamente Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modelar Visualmente (UML) Verificar Qualidade Gerenciar Mudanças Características do Desenvolvimento em Cascata Processo Cascata Planejamento Análise de Requisitos Design Código e Teste • Demora na confirmação e resolução de Riscos. • Mensura progresso por produto-entregue que são indicadores ruins. • Demora nas integrações e testes. • Implantações só no final. • A maioria dos resultados ocorre em iterações não planejadas. Integração dos Módulos Teste de Sistema Características do Desenvolvimento Iterativo • • • • • Resolve os maiores riscos antes que haja custos elevados. Facilita maior participação e feedback do usuário. Faz testes e integração contínua. Foca em marcos de projeto curtos e objetivos. Torna possível a entrega parcial de executáveis. Iteração 1 Iteração 2 P Iteração 3 P R P R D D C D C I C I T TEMPO R I T T Desenvolvimento Iterativo Comportamento dos Riscos Risco Risco no Processo Cascata Redução de Risco Risco no Processo Iterativo Tempo Gerenciar Requisitos Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modelar Visualmente (UML) Verificar Qualidade Gerenciar Mudanças Gerenciamento de Requisitos • Tenha certeza que está resolvendo o problema certo e entregando o sistema certo. • Para ter uma ação completa: – Entenda o Problema. – Detalhe, organize, e documente os requisitos. – Gerencie mudanças de requisitos do sistema. Use Arquiteturas Componentizadas Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modelar Visualmente (UML) Verificar Qualidade Gerenciar Mudanças Arquitetura Robusta Baseada em Componentes • Robusta – – – – Atende aos requisitos atuais e futuros. Melhora a extensibilidade da aplicação. Permite reuso de funcionalidades. Encapsula funções e dados do sistema. • Baseado em componentes – Reuso e customização de componentes. – Escolha de componentes comerciais disponíveis. – Integra o sistema existente incrementalmente. Arquitetura Baseada Em Componentes • Base para Reuso – Componentes – Bibliotecas de Componentes • Base para Gerência de Projetos – Planejamento – Otimização de Recursos – Entregas • Controle Intelectual – Emcapsulamento – Mantém integridade das regras Arquitetura baseada em componentes distribuídos em camadas Escopo de Aplicação Escopo de Negócio Integração Repositórios Modelar Visualmente (UML) Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modele Visualmente (UML) Verificar Qualidade Gerenciar Mudanças Por que modelar visualmente? • • • • • • Captura estrutura e comportamento. Apresenta a colaboração entre os elementos. Mantém design e implementação consistentes. Esconde ou expõe detalhes. Promove a comunicação não ambígua. Facilita a evolução do conhecimento. Diagramas de Seqüência Diagramas de Colaboração Diagramas Dinâmicos Diagramas de Estado Diagramas de Casos de Uso Diagramas de Classes Modelos Diagramas de Atividade Diagramas de Objetos Diagramas de Componente Diagramas de Deployment Diagramas Estáticos UML, uma linguagem padronizada. Verificar Qualidade Continuamente Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modelar Visualmente (UML) Verificar Qualidade Continuamente Gerenciar Mudanças Teste das Dimensões de Qualidade Usabilidade Teste a aplicação sob a perspectiva de conveniência de uso pelo usuário. Funcionalidade Teste a aderência de cada cenário de caso de uso. Confiabilidade Teste a aplicação em sua consistência de comportamento. Suportabilidade Performance Teste a capacidade da aplicação ser mantida Teste o tempo de resposta da aplicação em produção. on-line e com picos elevados de uso. Custo Verificação Contínua da Qualidade do Software Problemas de Software são de 100 a 1000 vezes mais caros se encontrados e consertados depois de instalados Custo para consertar Software Custo com a perda de oportunidades Custo com a perda de clientes Concepção Elaboração Construção Transição Teste cada iteração Iteração 2 Iteração 3 Iteração 4 Test Suite 1 Test Suite 2 Test Suite 3 Test Suite 4 Testes Modelo UML e Aplicação Iteração 1 Gerenciar Mudanças Melhores Práticas Processo Prático Desenvolver Iterativamente Gerenciar Requisitos Arquiteturas Componentizadas Modelar Visualmente (UML) Verificar Qualidade Gerenciar Mudanças Gerenciamento das Requisições de Mudanças Requisições de Mudanças vêm de várias fontes durante o ciclo de vida do sistema. Canal Único de Aprovação Nova Característica Entradas dos Usuários e Clientes Req Marketing Processo de Aprovação das Requisições de Mudança Comitê de Controle (CCM) Novo Requisito Bug Requisição de Mudança (RM) Design Código Teste Entradas dos Desenvolvedores e Testadores Entradas do Help Desk Manut Weinberg, ‘95 As melhores práticas reforçam umas as outras Melhores Práticas Desenvolver Iterativamente Gerenciar Requisitos Utilizar Arquiteturas Componentizadas Modelar Visualmente (UML) Envolvimento dos usuários no desenv. dos requisitos Validação antecipada das decisões arquiteturais Ataca complexidade de Design / Implementação incrementalmente Verificar Qualidade Mede qualidade freqüentemente Gerenciar Mudanças Desenvolvimento incremental de baselines Processo Unificado e as Melhores Práticas • • • • Abordagem Iterativa Guias para atividades e artefatos Foco do Processo na Arquitetura Casos de uso que direcionam o projeto de arquitetura e a implementação • Modelos que abstraem o sistema Definição de Processo O processo define Quem está fazendo O que, Quando, e Como a fim de chegar a um determinado objetivo. Novo ou alterado Processo de Novo ou alterado Requisitos Requisitos Sistema Estrutura do Processo – Fases Concepção Elaboração Construção Lidar com riscos relacionados ao negócio. (notação financeira do projeto) Lidar com riscos relacionados aos assuntos técnicos do projeto. Lidar com riscos relacionados a “ter a massa de trabalho pronta” Tempo Transição Lidar com riscos relacionados à logística de entrega da aplicação para o ambiente de produção Fronteiras (ou Marcos) das Fases Concepção Elaboração Construção Objetivos do Ciclo de Vida Ciclo de Vida e da Arquitetura Decisão de Validada Viabilidade do Projeto Transição Capacidade Release Operacional Final do Inicial Produto Iterações e Fases Concepção Iteração Preliminar Elaboração Iteração Arquitetural Iteração Arquitetural Construção Transição Iteração de Iteração de Iteração de Iteração Construção Construção Transição de Trans. Marcos e Objetivos Menores: Releases Uma iteração é uma seqüência distinta de atividades baseadas em um plano existente e critérios de avaliação, resultando na liberação de um artefato (produto - interno ou externo). Evolução dos Artefatos Através do Ciclo de Vida Artefatos do Projeto são produzidos iterativamente. Colocando tudo junto Em uma iteração, você passa por todas as disciplinas. Disciplinas agrupam atividades logicamente. Disciplinas produzem modelos Disciplinas Modelagem de Negócio Requisitos Análise & Implementação Design Modelos Modelo de Caso de Uso Realizado de Negócio por Modelo de Caso de Uso Automatizado por Modelo de Objetos de Negócio Realizado por Modelo de Design Implementado por Modelo de Implementação Guia das Disciplinas Workflow da Modelagem de Negócios Workflow de Requisitos Visão Geral dos Conceitos do Processo Unificado Revisão • As melhores práticas são guias da Engenharia de Software para atacar as causas dos problemas do Desenvolvimento de Software; • As melhores práticas reforçam umas as outras; • Um processo guia a equipe de quem, o que, quando e como fazer as atividades; • Processo Unificado é uma forma de colocar em ação as Melhores Práticas.