Engenharia de Software Processo de Software
Professor Marcio A. Queiroz
PROCESSO DE SOFTWARE O que é um Processo de Software? Processo de Software é um conjunto de atividades e resultados associados que levam a produção de produto de software. As atividades comuns em um processo de software são: Especificação de software: É preciso definir a funcionalidade do software e as restrições em sua operação. Projeto em implementação de software: Deve ser produzido o software de modo que cumpra sua especificação. Validação de software: O software precisa ser validado para garantir que ele faz o cliente deseja. Evolução de software: O software precisa evoluir para atender às necessidades mutáveis do cliente.
PROCESSO DE SOFTWARE O que é um MODELO de Processo de Software? É uma descrição simplificada de um processo de software, que é apresentada a partir de uma perspectiva específica. Alguns exemplos dos tipos de modelos de processo de software que podem ser produzidos: Workflow (Fluxo de Trabalho): Seqüência de atividades no processo (representações de ações humanas). Fluxo de dados ou de atividade: Representa o processo com um conjunto de atividades. Maiores detalhes: Página 08 – Capítulo 01 – ES 6ª Edição - Summerville
MODELOS DE PROCESSO DE SOFTWARE Paradigmas de desenvolvimento de software:
Modelos Seqüências
Modelos incrementais
Modelo Cascata Modelo Incremental Modelos R.A.D
Modelo Evolucionário – Prototipação
Modelo Espiral
Modelos Ágeis
Modelo XP Modelos SCRUM
MODELOS DE PROCESSO DE SOFTWARE Modelo Cascata/Seqüencial (Waterfall) A proposta do modelo Cascata consiste na execução das atividades de desenvolvimento de software em uma seqüência ordenada. Desta forma, a passagem para determinada atividade exige como critério a finalização da atividade imediatamente anterior. As principais atividades do modelo são: Levantamento de requisitos, Análise de requisitos, projeto, implementação, teste e implantação.
MODELOS DE PROCESSO DE SOFTWARE
Modelo Cascata/Seqüencial (Waterfall)
Vantagens: Facilidade no gerenciamento, pois todas as etapas são bem definidas e sem sobreposição; Muito eficiente em casos nos quais o domínio do problema é bem entendido, por exemplo, projetos em quais vários sistemas semelhantes foram construídos anteriormente. Desvantagens: Em função da dificuldade de se obter todos os requisitos do sistema no início do projeto, geralmente esse processo resulta em um atraso para o início da fase de projeto, cumulativa ao prazo final; Obtenção do produto final apenas no final do projeto, deixando margens de correção menores.
MODELOS DE PROCESSO DE SOFTWARE Modelo Incremental Divide o projeto em “construções”, onde os requerimentos com maior prioridade são construídos nos primeiros incrementos. Como são entregues parte por parte, corre-se o risco de alguma das partes não estarem sincronizadas com as demais. Conhecida como Entrega por Estágio (estratégia de desenvolvimento por estágios)
MODELOS DE PROCESSO DE SOFTWARE Modelo Incremental – R.A.D. RAD – Desenvolvimento Rápido de Aplicação É utilizado em projetos de grande porte e devem ser entregue em prazos curtos há grande interação entre equipes.
MODELOS DE PROCESSO DE SOFTWARE Modelo Incremental Vantagens:
Disponibilidade de módulos do sistema mais em menor tempo; Maior facilidade nos testes, sendo que na maioria das vezes, testar cada parte do processo (incremento) é mais fácil do que testar o software pronto como um todo; A resposta (feedback) com do cliente a cada incremento executado (pronto).
MODELOS DE PROCESSO DE SOFTWARE Modelo Incremental Desvantagens:
Dificuldade na integração dos módulos desenvolvidas do sistema; Difícil mapeamento dos requisitos dos clientes dentro dos incrementos.
MODELOS DE PROCESSO DE SOFTWARE Modelo Evolucionário - Prototipação O modelo de prototipação surge para tentar atender a dois grandes aspectos pertinentes ao desenvolvimento de software: o primeiro diz respeito à velocidade de desenvolvimento, no sentido de propiciar-se ao usuário uma visão mais real do software que está sendo projetado.
MODELOS DE PROCESSO DE SOFTWARE Modelo Evolucionário - Prototipação Vantagens:
Recomendado para sistemas nos quais os requisitos mudam rapidamente; Favorece uma resposta (feedback) constante do cliente a respeito do protótipo (sistema); Melhor visibilidade do produto que está sendo desenvolvido; Recomendado para sistemas nos quais nem você nem seu cliente conhecem bem o domínio da aplicação;
MODELOS DE PROCESSO DE SOFTWARE Modelo Evolucionário - Prototipação Desvantagens:
Dificuldade em se prever o tempo que será necessário para produzir um produto aceitável; Tendência em desenvolver no modo implementação-implantação (code-and-fix), causando o esquecimento das fases de análise, projeto e testes; Maior complexidade de gerenciar o projeto, os riscos e a qualidade do produto final.
MODELOS DE PROCESSO DE SOFTWARE
Modelo Espiral O modelo espiral induz a um desenvolvimento evolucionário de software (o que também se verifica no modelo de prototipação), sem perder a abordagem de execução de etapas sistemáticas, mas que sobrepõe cada iteração do modelo apresentado na figura a seguir:
MODELOS DE PROCESSO DE SOFTWARE Modelo Espiral Em vez de representar o processo de software em uma seqüência de atividades o processo é representado em espiral.
Cada loop na espiral representa uma fase do processo de software. Assim, o loop mais interno pode estar relacionado a viabilidade do sistema; o loop seguinte, à definição de requisitos do sistema; o próximo loop, ao projeto do sistema, e assim por diante.
MODELOS DE PROCESSO DE SOFTWARE Modelo Espiral Vantagens: Combinação entre outros modelos de ciclo de vida; Melhoria na qualidade a partir do planejamento e análise dos riscos em cada fase; Melhor visibilidade para a gerência, principalmente na gerência de riscos. Desvantagens: O processo de gerência é mais complexa; Necessidade de maior experiência da equipe de desenvolvimento, sobretudo dos responsáveis pela gerência; Exige maior experiência da equipe envolvida e maior esforço para o desenvolvimento, dessa forma, podendo aumentar consideravelmente os custos.
MODELOS DE PROCESSO DE SOFTWARE Modelo Ágil O termo metodologia ágeis tornou-se popular em 2001, quando 17 especialistas em processos de desenvolvimento de software estabeleceram princípios comuns compartilhados por várias metodologias. O resultado foi a criação de Aliança Ágil e o estabelecimento do manifesto Ágil [http://agilemanifesto.org]. Existem várias metodologias que podem ser consideradas como abordagens ágeis, entre elas: Scrum, Programação Extrema (XP), FDD entre outras. Falaremos um pouco mais desse novo modelo de processo no próximo material.