►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: [email protected] 1 Introduzir os principais processos de software; Discutir as vantagens e desvantagens de cada um dos processos; 2 Modelos de Processos de Software; Modelo em Cascata Prototipação Modelo Iterativo Modelo em Espiral Métodos Ágeis Desenvolvimento Dirigido por Modelos 3 Um conjunto estruturado de atividades que são necessárias para se desenvolver um sistema de software • Especificação; • Projeto; • Implementação; • Validação; • Evolução. Um modelo de processo de software é uma representação abstrata de um processo. Ele apresenta uma descrição do processo a partir de uma dada perspectiva 4 Definição de Requisitos Projeto do Software Implementação e Teste de Unidades Integração e teste do Sistema Implantação e Manutenção 5 Definição dos Requisitos e Análise do Problema Projeto do Software Implementação e Teste de Unidades Integração e Teste do Sistema Operação e Manutenção A principal desvantagem do modelo em cascata é a dificuldade em se acomodar mudanças uma vez que o processo se iniciou. Uma fase deve terminar antes que a fase seguinte possa se iniciar 6 Difícil atender a mudança de requisitos dos usuários Apropriado apenas quando os requisitos são claros desde o início do projeto Poucos sistemas possuem requisitos estáveis O modelo em cascata é principalmente usado em processos de engenharia onde o sistema é desenvolvido em diversas localidades (modularização) Ainda assim, cerca de 40% de todos os projetos utilizam este modelo! 7 Descrição em Alto Nível Especificação Versão Inicial Desenvolvimento Versão Intermediária Validação Versão Final 8 Desenvolvimento Exploratório • O objetivo é trabalhar com os clientes (stackholders) para criar iterativamente um sistema final a partir de uma especificação inicial. • Deve-se iniciar o processo com um conjunto de requisitos muito bem entendidos e novas características são adicionadas a medida que vão sendo propostas pelo usuário Protótipo Descartável • Tem como objetivo o entendimento dos requisitos do sistema 9 Problemas • Falta de visibilidade; • Sistemas possuem geralmente uma estrutura pobre; • Habilidades especiais (i.e. Em linguagens de prototipação rápida) podem ser necessárias. Aplicabilidade • Em projetos de pequenos e de médio tamanho; • Em partes de sistemas mais complexos(i.e. As interfaces do usuário); • Em programas de curto ciclo de vida. 10 Definição de requisitos iniciais Desenvolvimento do incremento do sistema Atribuição de requisitos à iterações Validação do Incremento Integração do Incremento Projeto da arquitetura do sistema Validação do Sistema Sistema Final 11 Uma parte usável do sistema é entregue ao cliente a cada iteração (incremento); Incrementos iniciais podem ser usados como protótipos para clarificação de requisitos; Baixo risco de falha geral do projeto; Os sub-sistemas de mais alta prioridade tendem a passar por testes mais intensos. 12 CUSTO ACUMULADO AVANÇO Determina objetivos alternativas e restrições Análise de Riscos Avalia alternativas, identifica e resolve riscos Análise de Riscos Revisão Próximas etapas do plano Análise de Riscos ProtóProtó- tipo Análise de Riscos Protó- tipo 3 Operacional tipo 2 Protótipo 1 Plano de Requisitos Simulações, modelos, ... Plano de Ciclo Conceito de de Vida Operação Requisitos de Software Projeto Projeto do pro- DetalhaPlano de duto de do Validação dos Desenvolvimento software Requisitos Código Plano de Teste Validação e VeriIntegração e Testes de ficação do Prounijeto Inte- dade Desenvolve e verifica Teste gração Produto do Próximo Imple- de acei- e teste Nível menta- tação ção 13 O Processo é representado por meio de uma espiral ao invés de uma sequência de atividades com retro-alimentação; Não existem fases fixas tal como especificação ou projeto – loops na espiral são escolhidos dependendo do que é requerido; Riscos são avaliados explicitamentee resolvidos durante todo o processo; 14 Definição dos objetivos • Especificação dos objetivos para a fase corrente são identificados; Avaliação e redução de riscos • Riscos são avaliados e atividades são especificadas para reduzir os riscos chave; Desenvolvimento e validação • Um modelo de desenvolvimento é escolhido para o projeto que pode ser qualquer dos modelos vistos anteriormente Planejamento • O projeto é revisto e a próxima fase da espiral é planejada 15 Baseado modelo interativo, porém mais “leve” e centrado no ponto de vista das pessoas envolvidas • Cada fase demora dias e não semanas • Envolvidos ficam presentes numa mesma sala Enfatizam trabalho no software como uma medida primária de progresso • Utiliza feedback ao invés de planejamento como mecanismo primário de controle • Disponibilização regular de versões do software 16 Extreme Programming (XP) • Fases pequenas e rápidas (alguns dias) • Testes são automatizados: metas p/ desenvolvimento • Programação feita em duplas • Projeto e arquitetura surgem por refactoring SCRUM • Usado no gerenciamento de projetos de software • Ciclos formados por várias interações (sprint) • Breves reuniões diárias (daily scrum) SCRUM é um termo usado no jogo de Rúgbi, que significa quando os jogadores se amontoam 17 Mais adequados quando os requisitos estão emergindo e mudando rapidamente Mais adequados para projetos com pequenos times, em torno de 20 pessoas Não são aplicáveis em sistemas críticos 18 Definir visões abstratas para o projeto até chegar no código Modelos são refinados através de transformações sucessivas (Greenfield and Short 2003) Modelo Específico de Domínio (modelos em XML) MetaCASE DSLTools Modelo WEB Modelo Desktop Modelo Celular JSP+Spring+Hibe Swing + Spring MIDP + Burlap Código WEB Código Desktop Código Celular JSP+Spring+Hibe Swing + Spring Plataforma (WEB + Desktop + Celular) MIDP + Burlap Processos de Software são conjuntos de atividades envolvidas na criação de um software; Modelos de processo de software são representações abstratas destes processos; As atividades comuns a todos os modelos são: especificação, projeto, implementação, validação e evolução; Modelos gerais de processo descrevem a organização do processo de software. Exemplos incluem o modelo em cascata, prototipagem, iterativo, modelos ágeis e baseado em componentes; 21 R. S. Pressman, Engenharia de Software, McGraw Hill, 6a Ed., 2002. Chap. 3. I. Sommerville. Software Engineering. 7th Ed. Addison-Wesley, 2004. Chap. 4. 22