Descreveremos
o que é um processo de software e elencaremos os principais modelos de
processo que apoiam o desenvolvimento de software e são classificados
como prescritivos. Aqui vamos estudar o Modelo em Cascata, os Modelos
Evolucionários (Modelo de Prototipagem, Modelo Espiral e Modelo
Concorrente) e os Modelos Incrementais de Processo (Modelo RAD e Modelo
Incremental).
Modelo de processo
Fonte: NicoElNino/shutterstock
Processo de software e suas fases
Todo projeto de software se
inicia a partir de alguma necessidade do negócio. Assim que esta
necessidade é identificada, costuma ser expressa de forma informal, por
meio de uma conversa. Mas esta informalidade deve parar por aí. Até
mesmo a especificação da necessidade do cliente é abrangida pelos
métodos e técnicas da Engenharia de Software. Este é um processo
bastante complexo, então vamos começar a entendê-lo, conhecendo
exatamente do que se trata um processo de software.
Para que as necessidades da empresa ou de um
cliente possa se transformar em uma solução de software, todo o diálogo
e a interação entre usuários, projetistas, ferramentas de
desenvolvimento e tecnologias devem ser transformados em um processo.
Assim, processo de software é, segundo Pressman (2006), um arcabouço (framework) das tarefas requeridas para se construir um software de alta qualidade.
Mas, você pode estar se
perguntando: processo e engenharia de software são a mesma coisa? A
resposta é “sim” e “não”. Processo de software define a abordagem que é
adotada quando o software é elaborado. A Engenharia de Software engloba
também as tecnologias que constituem um processo, como métodos, técnicas
e ferramentas de desenvolvimento. Assim, a Engenharia de Software
engloba os processos de software.
Curiosidade
Antes mesmo de existir o primeiro
computador, já havia a programação. Foi percebendo um padrão de
movimento no tear para fabricar tecidos que o francês Joseph-Marie
Jacquard criou o tear mecânico, que possibilitava a modificação dos
desenhos no tecido por meio de cartões perfurados – considerado por
muitos o primeiro programa.
Para que a Engenharia de Software possa ser
aplicada como uma abordagem disciplinada para o desenvolvimento,
operação e manutenção de um software, um processo deve ser definido.
Sommerville (2011, p. 18) afirma que um
processo de software, em geral, inclui quatro fases: Especificação do
software; Projeto e Implementação do software; Validação do software; e
Evolução do software.
Processo de Software. Fonte: adaptado de SOMMERVILLE (2011)
Requisitos de sistema. Fonte: Scott Maxwell LuMaxArt/shutterstock
Fase de Especificação: esta fase se concentra no “quê” o sistema de software irá realizar, isto é, identifica:
- que informação deve ser processada;
- que função e desempenho são desejados;
- que comportamento deve ser esperado do sistema;
- que interfaces devem ser estabelecidas;
- que restrições de projeto existem;
- que critérios de validação são necessários.
Nessa fase, os requisitos-chave do
sistema são identificados e suas funcionalidades e as restrições ao seu
funcionamento são definidas. Esta fase engloba etapas importantes:
- Engenharia de sistemas ou de informação;
- Planejamento do projeto;
- Análise de requisitos.
Fase de Projeto e Implementação: esta fase focaliza “como” o projeto de desenvolvimento será realizado, isto é, define:
- como os dados devem ser estruturados;
- como as funções devem ser implementadas;
- como os detalhes procedimentais devem ser implementados;
- como as interfaces devem ser caracterizadas;
- como o projeto deve ser traduzido em uma linguagem de programação.
Nesta fase, as seguintes etapas técnicas ocorrerão:
- Projeto e arquitetura do software;
- Geração de código.
Fase de Validação: esta
fase busca verificar se o sistema atende aos requisitos do cliente e
deve ser, para isso, validado. As estratégias de teste são definidas e
as atividades ligadas ao teste são realizadas. Aqui ocorre a verificação
e a validação, que são atividades que se destinam a mostrar que o
sistema está de acordo com a especificação e que atende às expectativas
de clientes e usuários. A validação visa assegurar que o programa está
fazendo o que foi definido na sua especificação. A verificação visa
certificar se o programa está correto, isto é, se não possui erros de
execução e está fazendo de forma correta suas funcionalidades. Existem
diferentes formas de verificação e validação. Os testes de correção,
desempenho, confiabilidade, robustez, usabilidade, dentre outros, podem
ser usados para avaliar diversos fatores de qualidade a partir da
execução do software.
Nesta fase, ocorrem as seguintes etapas técnicas:
- Teste de software
- Homologação do sistema
Fase de Evolução: esta fase
tem como alvo gerenciar as modificações e manutenções que o software
sofrerá de forma a atender as necessidades evolutivas dos clientes.
Quatro tipos de modificações podem ocorrer:
- Manutenção Corretiva: modifica o software para corrigir defeitos.
- Manutenção Adaptativa: modifica o
software para acomodar mudanças no seu ambiente externo (processador,
sistema operacional etc.).
- Manutenção de Aperfeiçoamento: aprimora o
software além dos requisitos funcionais originais (cliente/usuário
reconhece e solicita funcionalidades adicionais que trarão benefícios, à
medida que o software é usado).
- Manutenção Preventiva: faz modificações
nos programas de modo que eles possam ser mais facilmente corrigidos,
adaptados e melhorados.
Estas quatro fases são complementadas por atividades “guarda-chuva”, como:
- Controle e Rastreamento do Projeto;
- Gestão de Riscos;
- RevisõesTécnicas Formais;
- Garantia de Qualidade;
- Gestão de Configuração de Software;
- Produção e Preparação de Produtos do Trabalho (documentos);
- Gestão de Reusabilidade;
- Medição.
Essas atividades são aplicadas ao longo do processo de software.
Ciclo de vida do software.
Fonte: Skynavin/shutterstock
O ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua concepção até a descontinuidade de seu uso.
Para que você entenda melhor as fases do
ciclo de vida, caro aluno, considere as elencadas no modelo em cascata,
que são consideradas como referência.
O conceito de ciclo de vida de um
software é muitas vezes confundido com o de modelo de processo, mas são
conceitos bem diferentes.
Sommerville (2011, p. 19) define modelo de processo como
“uma representação simplificada de um
processo de software. Cada modelo representa uma perspectiva particular
de um processo. Você pode vê-los como frameworks de processos que podem
ser ampliados e adaptados para criar processos de software mais
específicos.”
Como vimos, a Engenharia de
Software é uma disciplina que integra processo, métodos e ferramentas
para o desenvolvimento de projetos de software. Há diversos modelos de
processo, mas todos possuem algumas características em comum, definindo
um conjunto de atividades de arcabouço, uma coleção de tarefas para que
se consiga realizar as atividades, produtos de trabalho produzidos nas
tarefas e um conjunto de atividades guarda-chuva que apoiam as
atividades de todo o processo.