Professor Ariel da Silva Dias Modelos de Processo de Software Conjunto de atividades que leva à produção de um produto de Software [Sommerville,2011]; Podemos contar com ferramentas de apoio com o objetivo de automatizar esses processos, conhecidas como ferramentas CASE (Computer- Aided Software Engineering); Não existe um processo ideal; 1
Como visto na primeira aula, existem atividades comuns aos processos de software: Especificação; Projeto e Implementação de Software; Validação; Evolução Trata-se de uma representação abstrata de um processo de software; Representa um processo sob uma dada perspectiva; Existem vários modelos de processo de software Modelo Sequencial (Cascata); Desenvolvimento Evolucionário (Exploratório e Prototipação); Modelo Evolutivo (Incremental e Espiral). Cada um representa uma tentativa de colocar ordem em uma atividade inerentemente caótica. 2
Razões para a utilização de um modelo de processo de software Padronizar o processo de desenvolvimento; Padronizar os artefatos (Ex. documentação); Melhora a comunicação da equipe. Resultado = software com qualidade. Mais antigo e mais usado em engenharia de software; Trata-se de um modelo sequencial, modelado em função do ciclo da engenharia convencional; Suas cinco fases são encadeadas, daí vem o nome modelo cascata ; Uma nova fase só pode ser iniciada com a finalização da anterior; O resultado de uma fase se constitui na entrada da outra; 3
Análise e Definição de Requisitos: Os serviços, restrições e metas do sistema são estabelecidos por meio de consulta aos usuários. Em seguida, são definidos em detalhes e funcionam como uma especificação do sistema; Projeto de Sistema e Software: aloca os requisitos tanto para sistemas de hardware como para sistemas de software, por meio da definição de uma arquitetura geral do sistema; 4
Implementação e teste unitário: o projeto do software é desenvolvido como um conjunto de programas ou unidades de programa. O teste unitário envolve a verificação de que cada unidade atenda a sua especificação; Integração e teste de sistema: As unidades individuais do programa ou programas são integradas e testadas como um sistema completo para assegurar que os requisitos do software tenham sido atendidos. Após o teste, o sistema de software e entregue ao cliente. Integração e teste de sistema: Fase mais longa do ciclo de vida do software. O sistema é instalado e colocado em uso. A manutenção envolve a correção de erros que não foram descobertos em estágios iniciais do ciclo de vida. Ocorre, não necessariamente, a descoberta de novos requisitos. 5
Vantagens Documentação rígida em cada fase do processo; Imposição de disciplina, planejamento e gerenciamento; Pode ser combinado com outros modelos; Desvantagens Projetos reais raramente seguem um fluxo sequencial; É difícil para o cliente definir todos os requisitos no início do processo; Difícil adequação à mudanças de requisitos. Tem como base uma implementação inicial e realizar aprimoramentos por meio de várias versões; Rápido retorno para o cliente. Dois tipos Desenvolvimento exploratório; Prototipação; 6
Trabalha diretamente com o cliente; Possui início com os requisitos compreendidos; O sistema evolui com o acréscimo de características propostas pelo cliente. Tem por objetivo entender melhor os requisitos dos usuários; O desenvolvedor cria um modelo do software que será construído; Apropriado para quando o cliente não definiu corretamente ou detalhadamente os requisitos. 7
Obter Requisitos Obter Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificando os requisitos; Refinamento do Protótipo Avaliar Protótipo Elaborar Projeto Rápido Construir Protótipo Projeto Rápido: representação dos aspectos do software que serão visíveis ao usuário; Construção do Protótipo: implementação rápida do projeto; Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo; Refinamento do protótipo: cliente e desenvolvedor refinam os requisitos do software; 8
Construção do Produto Obter Requisitos Construção do Produto: identificado os requisitos, o protótipo é descartado e iniciasse o desenvolvimento da versão de produção; Refinamento do Protótipo Elaborar Projeto Rápido Avaliar Protótipo Construir Protótipo 9
Atividades simultâneas ocorrem durante o processo de desenvolvimento; Vantagens Rápido feedback para o cliente; Desvantagens Dificulta a gerência da documentação do projeto; A implementação fica comprometida pois, para a rápida entrega do protótipo, o desenvolvedor utiliza das ferramentas que estão disponíveis. 10
Em algumas situações, haverá necessidade do produto de software evoluir com o tempo; Para isso, é necessário que a Engenharia de Software acompanhe essa evolução; Situações: Quando os requisitos de software e negócio mudam durante o desenvolvimento; Quando a data de entrega está apertada; Quando os requisitos são bem conhecidos, porém ainda não foram definidos os detalhes de cada um. 11
Modelos Evolutivos são também chamados de Iterativos Possibilitam o desenvolvimento de versões do software cada vez mais completas; Mistura conceitos dos modelos vistos anteriormente. Principais modelos iterativos Incremental; Espiral. Combina elementos do modelo cascata com o conceito iterativo da prototipação; Surge com o objetivo de reduzir o retrabalho no processo de desenvolvimento de software; O cliente não precisa detalhar todos os requisitos na fase inicial; A prioridade aqui é o kernel do sistema, ou seja, as partes mais importantes; Este modelo é indicado para sistemas pequenos; 12
Vantagens O cliente não precisa esperar até que todo o sistema seja entregue; Priorização das funcionalidades mais importantes; Desvantagens Os incrementos devem ser relativamente pequenos; Dificuldade no mapeamento de funcionalidades com dependência. União do conceito de iteratividade da prototipação com os aspectos controlados e sistemáticos do modelo em cascata; O processo é representado em formato de espiral, e não como uma sequência de atividades; Cada volta da espiral representa uma fase do processo de software; Existem tipicamente de 3 a 6 regiões de tarefas, mas o modelo mais empregado possuem 4 regiões; Não existem fases fixas no modelo; A gerência decide como estruturar o projeto em fases. 13
Modelo em espiral de processo de software de Boehm (4 regiões) Cada loop na espiral representa uma fase; O loop mais interno está concentrado nas possibilidades do sistema; O próximo loop está concentrado na definição dos requisitos; o loop um pouco mais externo está concentrado no projeto do sistema; um loop ainda mais externo está concentrado na construção do sistema. 14
Determinar objetivos, alternativas e restrições Levantamento dos objetivos específicos para cada fase do processo; Identificadas restrições sobre o processo e o produto. Avaliar alternativas, identificar e resolver riscos Identificar os riscos do projeto; Para cada risco, uma análise detalhada é executada; Passos são tomados para reduzir os riscos. Desenvolver e verificar próximo nível do produto Depois de avaliado o risco, um modelo de desenvolvimento é escolhido para o sistema; Desenvolvimento e validação. Planejar próxima fase Ocorre a revisão do projeto; Se ainda não estiver concluído, é tomada decisão de continuidade, planejando planos para a próxima fase (próximo loop). 15
Adiciona um novo elemento: Análise de Risco; Usa a prototipação em qualquer etapa como mecanismo de redução de riscos; O modelo é relativamente novo e não tem sido amplamente aplicado. SOMMERVILLE, I. Engenharia de Software. 9a edição. Pearson Addison Wesley. 2011 16