Engenharia de Software Slide 06 – Modelos de Processos (Continuação) Juliano Amorim de Oliveira [email protected] Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas Vimos nas aulas anteriores Engenharia de Software: uma tecnologia em camadas (ferramentas, métodos, processos, qualidade) Modelos de processo de sofware Modelo cascata Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração O Modelo de Prototipação Objetivo: entender os requisitos do usuário possibilita que o desenvolvedor crie um modelo (protótipo) do software que deve ser construído apropriado quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou detalhadamente esses requisitos O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Construir Protótipo Avaliar Protótipo Prototipação Simplificando construa/revise protótipo ouça o cliente teste do protótipo pelo cliente O Modelo de Prototipação Obter Requisitos Desenvolvedor e cliente: Elaborar Projeto Rápido definem os objetivos gerais do software Refinamento do Protótipo identificam quais requisitos são conhecidos identificam as áreas que necessitam de definições adicionais Construir Protótipo Avaliar Protótipo O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Representação dos aspectos do software que são visíveis ao usuário abordagens de entrada e Construir Protótipo formatos de saída Avaliar Protótipo O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Implementação rápida do projeto Construir Protótipo Avaliar Protótipo O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Avaliar Protótipo Cliente e desenvolvedor Construir Protótipo avaliam o protótipo O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Cliente e desenvolvedor refinam os Construir Protótipo requisitos do software a ser desenvolvido Avaliar Protótipo O Modelo de Prototipação Obter Requisitos CONSTRUÇÃO DO PRODUTO Elaborar Projeto Rápido Identificados os requisitos, o protótipo deve Protótipo ser descartado e a versãoConstruir de produção deve Avaliar Protótipo ser construída considerando os critérios de qualidade Prototipação Dificuldades: cliente não sabe que o software que ele vê, não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia de “jogar fora” o que foi feito desenvolvedor freqüentemente desenvolve o protótipo de forma comprometida (utilizando o que está disponível). Depois de um tempo ele se familiariza com essas escolhas, e pode ser que esqueça que elas não são apropriadas para o produto final; Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração O Modelo Incremental Combina elementos do modelo cascata (aplicado repetidamente) com a filosofia iterativa Usado quando é difícil estabelecer a priori uma especificação detalhada dos requisitos Objetivo: trabalhar junto do usuário a fim de descobrir seus requisitos, de maneira incremental, até que o produto final seja obtido O Modelo Incremental Atividades Paralelas Engenharia de Sistemas Versão Inicial Análise de Requisitos Descrição geral Projeto Versões Descrição Descrição Intermediárias geral geral Codificação Testes Versão Final O Modelo Incremental Atividades Paralelas A versão inicial é, freqüentemente, o Versão Inicial núcleo do produto Engenharia de Sistemas Análise de Requisitos Descrição geral • o desenvolvimento começa com as partes do produto que Projeto são mais bem entendidas Codificação Versões Descrição Descrição Intermediárias geral geral • um plano é desenvolvido para o próximo Testes incremento, como resultado do uso e/ou avaliação por parte do cliente são Versão adicionadas novas características à medida Final que são sugeridas pelo usuário O Modelo Incremental objetiva a elaboração de um produto operacional a cada incremento os testes podem ser mais efetivos é mais fácil testar cada versão do sistema do que o sistema todo no final O Modelo Incremental Engenharia de Sistemas / Informação Projeto Análise incremento 2 incremento 4 Análise Análise Testes Codificação Projeto Projeto produto liberado do incremento 1 Testes Codificação Projeto Análise incremento 3 incremento 1 Codificação Testes produto liberado do incremento 2 produto liberado do incremento 3 Testes Codificação tempo produto liberado do incremento 4 O Modelo Incremental Diferentemente do paradigma da prototipação, tem o objetivo de apresentar um produto operacional a cada incremento É útil quando não há mão de obra disponível para uma implementação completa. Extreme Programming (XP) Programação Extrema (Programação Ágil) evolução, recente,da abordagem incremental. Desenvolvida por Beck em 1999 Voltada para equipes de até 20 pessoas engajadas no desenvolvimento de software cujos requisitos são vagos ou se encontram em constante mudança Principal atividade codificação Principal contribuição aplicação extrema das práticas num modelo coeso e sinérgico Extreme Programming (XP) Algumas características: o desenvolvimento e a entrega de incrementos de funcionalidade muito pequenos diálogo constante e evolutivo entre programadores e clientes a constante melhoria de código Extreme Programming (XP) Algumas características: a programação em pares 40 horas de trabalho (muita hora-extra é sinal de problemas com o projeto) requisitos são criados pelo cliente estórias Refactoring abordagem disciplinada para tornar o código de um software mais claro e de fácil manutenção, minimizando a probabilidade de inclusão de erros Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração O Modelo Espiral Engloba as melhores características do modelo Cascata e da Prototipação, adicionando um novo elemento: a Análise de Risco Segue a abordagem de passos sistemáticos do modelo Cascata incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real O Modelo Espiral Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos O modelo espiral é dividido em uma série de atividades de trabalho ou regiões de tarefa O Modelo Espiral (com 6 regiões) Planejamento Análise de Riscos Comunicação com Cliente Engenharia Avaliação do Cliente Construção e Liberação O Modelo Espiral (com 6 regiões) Planejamento Análise de Riscos Comunicação com Cliente As tarefas das regiões são adaptadas às características do projeto Engenharia Avaliação do Cliente Construção e Liberação Comentários sobre o Ciclo de Vida em Espiral Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração O que são componentes? Componentes fornecem funcionalidadesalvo com interfaces bem definidas que permitem que sejam integrados ao software Componentes possuem documentação O Modelo de Montagem de Componentes O modelo de montagem de componentes incorpora características de tecnologias Orientadas a Objetos no modelo espiral Demanda uma abordagem iterativa para a criação do software O modelo compõe aplicações a partir de componentes de software “empacotados” O Modelo de Montagem de Componentes Planejamento Análise de Riscos Comunicação com Cliente Avaliação do Cliente Engenharia Construção e Liberação O ModeloIdentificar de Montagem de componentes Componentes candidatos Procurar Planejamento Construir a 1a componentes iteração do na biblioteca sistema Extrair Comunicação componentes com Cliente se disponíveis Análise de Riscos Colocar os novos componentes na biblioteca Construir os componentes não disponíveis Avaliação do Cliente Engenharia Construção e Liberação O Modelo de Montagem de Componentes O modelo de montagem de componentes conduz ao reuso do software A Reusabilidade fornece uma série de benefícios: redução de 70% no tempo de desenvolvimento redução de 84% no custo do projeto Esses resultados dependem da robustez da biblioteca de componentes Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração Técnicas de 4a Geração Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem de alto nível e o código fonte seja gerado automaticamente a partir dessas especificações Ferramentas do Ambiente das Técnicas de 4a Geração O ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4a geração inclui as ferramentas: linguagens não procedimentais para consulta de banco de dados geração de relatórios, planilhas e manipulação de dados interação e definição de telas geração de código capacidade gráfica de alto nível geração automática de HTML e linguagens similares para criação de páginas Web Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL Testes Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do • o cliente descreve os requisitos os quais “Projeto” Implementação são traduzidos para um protótipo usando 4GL operacional Testes •o cliente pode estar inseguro quanto aos requisitos •as 4GLs atuais não são sofisticadas suficientemente para acomodar a verdadeira "linguagem natural" Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL • Pequenas aplicações: é possível mover-se do passo Testes de Obtenção dos Requisitos para o de Implementação usando uma linguagem de quarta geração • Grandes projetos: é necessário desenvolver uma estratégia de projeto. De outro modo ocorrerão os mesmos problemas encontrados quando se usa abordagem ad-hoc (baixa qualidade) Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL • Os resultados desejados são representados de modo que haja geração automática de código Testes Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL Testes O desenvolvedor deve efetuar testes e desenvolver uma documentação significativa Comentários sobre as Técnicas de 4a Geração PROPONENTES: redução dramática no tempo de desenvolvimento do software (aumento de produtividade) Quando combinado com a abordagem de desenvolvimento baseada em componentes, o paradigma 4GT pode se transformar na abordagem predominante para o desenvolvimento de software Comentários sobre as Técnicas de 4a Geração OPONENTES: as 4GL atuais não são mais fáceis de usar do que as linguagens de programação o código fonte produzido é ineficiente a manutenibilidade de sistemas usando técnicas 4G ainda é questionável Exercício! Faça uma análise dos modelos de processo de software que já foram vistos em aula: Modelo Cascata Paradigma de prototipação Modelo incremental Programação extrema Modelo espiral Modelo de montagem de componentes Técnicas de quarta geração Bibliografia PRESSMAN, ROGER S. Engenharia de Software. 6ª edição. Rio de Janeiro: McGraw-Hill, 2006. SOMERVILLE, IAN. Engenharia de Software. 8ª edição. São Paulo: Addison Wesley, 2007. Slides da professora Debora Paiva da UFMS