Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Software Fabíola Yunes Tanisue fabiola.yunes@gmail.com Processo de Desenvolvimento Software ∗ “Um processo define quem está fazendo o quê, quando e como alcançar um certo objetivo.” Processo de Desenvolvimento Software e como alcançar um certo objetivo.” (Ivan Jacobson) ∗ “É um roteiro que determina quais são as tarefas necessárias e em que ordem elas devem ser executadas para construir Processo de Desenvolvimento Software e em que ordem elas devem ser executadas para construir softwares de alta qualidade. ∗ Ele organiza uma atividade que pode, sem controle, tornar- se caótica. ∗ O processo adotado deve ser adaptado ao tipo de software que se está construindo. ∗ É o alicerce ou esqueleto de um processo de software completo. ∗ Contém as atividades de arcabouço que são Arcabouço de Processo Contém as atividades de arcabouço que são aplicáveis a todos os projetos de software. ∗ Engloba um conjunto de atividades guarda-chuva que são exercidas durante todo o processo ∗ Quais são as atividades de arcabouço aplicáveis à maioria dos projetos de software? Arcabouço de Processo maioria dos projetos de software? ∗ Comunicação ∗ Planejamento ∗Modelagem ∗ Construção ∗ Implantação ∗ Quais são as atividades guarda-chuva típicas que ocorrem ao longo de um processo? Arcabouço de Processo ∗ Acompanhamento e controle do projeto de software. ∗ Gestão de risco. ∗ Garantia de qualidade de software. ∗ Revisões técnicas formais. ∗ Medição. ∗ Gestão de configuração de software. ∗ Gestão de reusabilidade. ∗ Preparação e produção do produto de trabalho. ∗ Atrasos na entrega ∗ Custos crescentes ∗ Problemas de qualidade Sintomas de Falha de Processo ∗ Problemas de qualidade ∗ Funções não funcionam corretamente ∗ Reclamações de clientes ∗ O trabalho tem que ser refeito ∗ Funcionários frustrados ∗ Descrevem as características de processos efetivos. ∗ Definem quais ações devem ser priorizadas e quais Modelos de Maturidade ∗ Definem quais ações devem ser priorizadas e quais objetivos devem ser atingidos. ∗ Reúnem conhecimento e experiências diversas num único modelo. ∗ Podem ser usados para comparar organizações diferentes quanto a eficácia dos seus processos. ∗ O CMMI é um metamodelo de processo, ele define as características de processo que devem existir quando uma organização deseja estabelecer um processo de software CMMI (Capability Maturity Model Integration) organização deseja estabelecer um processo de software que seja completo. ∗ É uma realização significativa em engenharia de software. Ele oferece uma discussão abrangente das atividades e ações que devem estar presentes quando uma organização constrói software de computadores. Mesmo que uma organização apte pro não adota-lo em detalhes. ∗ Cada área de processo é avaliada e classificada de acordo com os seguintes níveis: CMMI (Capability Maturity Model Integration) ∗ Nível 1: Inicial. ∗ Nível 2: gerenciado. ∗ Nível 3: definido. ∗ Nível 4: quantitativamente gerenciado. ∗ Nível 5: otimização. CMMI (Capability Maturity Model Integration) ∗ A existência de um processo não é garantia de que o software será entregue no prazo, de Avaliação de Processo entregue no prazo, de que satisfaça as necessidades do cliente. ∗ O processo deve ser avaliado para garantir que ele satisfaça a um conjunto de critérios básicos. ∗ SCAMPI ∗ CBA IPI Avaliação de Processo ∗ Norma SPICE (ISO/IEC 15504) ∗ Norma ISO 9001:2000 para Software Modelo o de Desenvolvimento Software ∗ Um modelo de prescritivo de processo preenche o arcabouço de processo com conjuntos explícitos de Modelos Prescritivos de Processo arcabouço de processo com conjuntos explícitos de tarefas para ações de engenharia de software. ∗ Cascata; ∗ Incremental; ∗ RAD ∗ Também chamado de ciclo de vida clássico ∗ Sugere uma abordagem sistemática e sequencial para Modelo em Cascata ∗ Sugere uma abordagem sistemática e sequencial para o desenvolvimento de software ∗ Por que o modelo de cascata frequentemente falha? ∗ Projetos reais raramente seguem o fluxo sequencial que o Modelo em Cascata ∗ Projetos reais raramente seguem o fluxo sequencial que o modelo propõe, as modificações podem causar confusão à medida que a equipe de projeto prossegue; ∗ É difícil para estabelecer todos os requisitos inicialmente; ∗ O cliente precisa ter paciência porque uma versão executável do programa só ficará disponível no final do processo; ∗ O modelo leva a “estados de bloqueio”, nos quais membros da equipe ficam esperando outros membros terminar a sua parte ∗ Combina elementos do modelo em cascata aplicado de maneira iterativa; Modelo Incremental de maneira iterativa; ∗ Aplica a sequências lineares de forma racional à medida que o tempo passa. A cada sequência linear produz “incrementos” do software passiveis de serem entregues, que fornecem Modelo Incremental software passiveis de serem entregues, que fornecem progressivamente mais funcionalidade; ∗ O primeiro incremento é chamado de núcleo do produto; ∗ O modelo incremental é particularmente útil quando não há mão-de-obra/recursos disponíveis para uma implementação completa. ∗ É um modelo de processo de software incremental que enfatiza um ciclo de desenvolvimento curto; Modelo RAD ∗ Recomendável quando uma aplicação pode ser modularizada de maneira que a função principal possa ser implementada emmenos de 3 meses. Modelo RAD ∗ Quais são as desvantagens do modelo RAD? ∗ Exige pessoal suficientes para criar um número de Modelo RAD ∗ Exige pessoal suficientes para criar um número de ∗ equipes RAD; ∗ Denvolvedores e clientes têm que estar comprometidos com as atividades rápidas; ∗ Exige que o sistema seja modularizável; ∗ Não é adequado quando os riscos técnicos são altos. ∗ São explicitamente projetados para acomodar um produto que evolui com o tempo. Modelos Evolucionários de Processo produto que evolui com o tempo. ∗ A cada iteração, produzem uma versão cada vez mais completa do software. ∗ Prototipagem; ∗ Espiral; ∗ Modelo de desenvolvimento concorrente. ∗ Auxilia o engenheiro de software e o cliente a entenderem melhor o que deve ser construído quando Prototipagem entenderem melhor o que deve ser construído quando os requisitos estão confusos; Prototipagem ∗ Quais são os problemas da prototipagem? ∗ O cliente vê o que parece uma versão executável do Prototipagem ∗ O cliente vê o que parece uma versão executável do software, ignorando que consiga funcionar de forma precária. Na pressa de fazê-lo rodar não foi considerado qualidade global e manutenibilidade. ∗ Apresar de problemas poderem ocorrer, a prototipagem pode ser um paradigma efetivo para a engenharia de Prototipagem pode ser um paradigma efetivo para a engenharia de software. O importante é definir as regras do jogo no inicio, é o cliente concordar que o protótipo será usado apenas para levantamento de requisitos, depois será descartado. ∗ Esse modelo foi proposto originalmente por Barry Boehm. Espiral Boehm. ∗ A idéia básica é desenvolver um produto a partir de pequenas versões incrementais, que pode iniciar com um modelo em papel e evoluir até versões do sistema completamente funcionais. ∗ Uma comparação com o modelo em cascata: uma volta na espiral equivale à execução do modelo em cascata Espiral na espiral equivale à execução do modelo em cascata para uma pequena parte do software. Espiral ∗ Todas as atividades ocorrem em paralelo mas estão em diferentes estados. ∗ O modelo define uma série deeventos que vão disparar Desenvolvimento Concorrente ∗ O modelo define uma série de eventos que vão disparar transições de estado para estado, para cada uma das atividades. ∗ Em vez de usar uma sequência como o modelo cascata, ele define uma rede de atividades. ∗ Pode ser aplicado a todo tipo de desenvolvimento de software e fornece uma visão exata de como está o estado do projeto Desenvolvimento Concorrente Exemplo: Começo de projeto A atividade de “comunicação” completou sua primeira iteração e está no estadoiteração e está no estado aguardandomodificações. A atividade de modelagem passa do estado nenhum para o estado em desenvolvimento. Se o cliente requere mudança nos requisitos, a modelagem passa de em desenvovimento para aguardan- do modificações e a comunicação passa de aguardando modificações para em revisão ∗ Modelo em cascata ∗ Modelos incrementais Modelo o de Desenvolvimento Software – Modelo incremental – Modelo RAD ∗ Modelos evolucionários – Modelo de prototipagem –Modelo espiral – Modelo de desenvolvimento concorrente Comparação Modelo o de Desenvolvimento Software Modelo Incremental Modelo Espiral ∗ Atividades fixas do modelo em ∗ As atividades não são fixas, cada∗ Atividades fixas do modelo em cascata são usadas em cada incremento. ∗ As atividades não são fixas, cada “loop” se concentra mais em uma determinada atividade. ∗ Objetiva a elaboração de um produto operacional a cada incremento, que pode ser testado. ∗ A análise de riscos é uma atividade essencial no modelo.
Compartilhar