A norma IEEE-1074 (1997) recomenda padrões na criação de processos de ciclo de vida de software, sendo útil a qualquer organização que seja responsável pela gestão e desenvolvimento de projetos envolvendo software. A metodologia explicitada na norma seleciona um modelo apropriado para construção de software e recomenda uma série de grupos de atividades organizados nas seguintes fases: i) gerência de projeto; ii) pré- desenvolvimento; iii) desenvolvimento; iv) pós-desenvolvimento; e v) processos integrais. Tais fases, juntamente com suas atividades, são descritas a seguir.
Na fase de gerência de projeto ocorrem atividades relacionadas ao início de um projeto, ao planejamento da gestão de um projeto e ao monitoramento e controle do projeto de software em todo o seu ciclo de vida.
As tarefas de início de projeto são focadas na criação e atualização da infra-estrutura do projeto de desenvolvimento ou gerenciamento de um software, tais como criação do processo de ciclo de vida do software, estimativas de desempenho, alocação de recursos (orçamento, pessoas, equipamentos, recursos computacionais) e definição de métricas (aplicadas aos produtos e processos que afetam o projeto).
As atividades de planejamento devem ser direcionadas para toda a gestão do projeto, incluindo planos de contingências. Tais atividades podem possibilitar iterações quando da revisão de uma fase do projeto, e são organizadas da seguinte forma: a) avaliação (inclui auditoria, revisões e testes); b) gestão de configuração (recomenda-se um guia para descrever como e quando um determinado procedimento é executado); c) transição de sistema (somente nos casos em que sistemas antigos estão sendo substituídos); d) instalação (hardware requerido, registro do software, tipo de software a ser instalado e guia de instalação); e)
87 “[…] ontologies are part (sometimes only potentially) of software products. […] ontologies should be developed according to the standards proposed for software generally, which should be adapted to the special characteristics of ontologies.”
documentação (produção de documentos para registro do conhecimento acerca do projeto); f) treinamento dos usuários; e g) integração com outros sistemas (caso for necessário).
As atividades de monitoramento e controle objetivam rastrear e gerenciar todo o projeto, englobando gestão de riscos inerentes ao mesmo (fatores que podem afetar ou prejudicar o alcance dos objetivos), identificação de melhorias para os processos de software e organização e tratamento dos registros sobre o projeto (histórico do projeto na organização, como auditorias e planejamento de projetos futuros).
A fase pré-desenvolvimento consiste em analisar88 idéias ou conceitos de um sistema e, em função de problemas observados no ambiente, alocar requisitos para o sistema antes do início de desenvolvimento do software. A fase inclui atividades de estudo de viabilidade e análise de requisitos89 do sistema. O estudo de viabilidade objetiva analisar o custo-benefício para se decidir pela modificação de aplicações existentes ou por um novo desenvolvimento a partir de uma necessidade de solução para algum problema formulado (além de decidir pelo desenvolvimento interno ou pela compra da solução). A justificativa para cada recomendação deve ser documentada e formalmente aprovada por todos os participantes do projeto (incluindo usuários e desenvolvedores). Tal documento pode ser a base de um contrato de desenvolvimento. A análise de requisitos do sistema objetiva fazer um estudo do ambiente atual e produzir um plano de desenvolvimento de software, indicando em detalhes os recursos necessários (humanos, materiais, de software e de hardware), bem como as estimativas de prazos e custos (cronograma e orçamento). Tais requisitos também precisam ser documentados.
A fase de desenvolvimento consiste na execução de atividades durante o desenvolvimento de um produto de software, a saber: requisitos, projeto e implementação. Tais atividades sãoconduzidas de acordo com os requisitos funcionais de software, hardware e pessoas, especificados na etapa pré-desenvolvimento.
As atividades de requisitos de software abrangem as restrições ou regras que o software deve cumprir em função da definição das necessidades do requisitante. Os requisitos devem servir como documento inicial para a realização das tarefas de modelagem e prototipação, e é geralmente iterativa. O uso de uma metodologia abrangente é recomendado para assegurar que os requisitos permaneçam completos e consistentes. Além disso, técnicas advindas da análise estruturada podem auxiliar na atividade de definição de requisitos. Além
88 A análise de alto nível inclui um conjunto de necessidades a nível estratégico e a nível da área de negócios (PRESSMAN, 2002).
89 Os requisitos dessa etapa não são os mesmos discutidos na etapa de desenvolvimento. São requisitos voltados ao ambiente ou sistema no qual o software será instalado.
dos requisitos de software, os requisitos de interface do sistema também são demandados nessa etapa, os quais serão determinantes para a usabilidade do sistema (grau de satisfação na interação entre usuário e sistema).
As atividades de projeto objetivam desenvolver uma representação bem organizada e coerente do sistema, e que satisfaça os requisitos de software especificados nas atividades de requisitos. Tal representação inclui o projeto da arquitetura do software, no qual se recomenda o uso de técnicas de modelagem de sistemas (modelagem orientada a objetos, modelagem de dados no caso da aplicação de banco de dados, dentre outras), além da especificação de algoritmos envolvidos e interfaces relacionadas ao usuário, ao software e ao hardware.
As atividades de implementação resultam na transformação da representação do projeto da arquitetura do software em uma linguagem de programação. Os códigos fonte e executável resultantes da linguagem empregada serão utilizados para execução de testes de qualidade no software, a fim de verificar e validar o produto de acordo com os requisitos demandados.
A fase pós-desenvolvimento consiste em atividades de instalação (avaliação da aceitação por parte dos usuários, possíveis modificações), operação e suporte (interação entre o usuário e o sistema, assistência técnica e consultoria quando necessário), manutenção (identificação de problemas, identificação de melhorias podendo ocasionar novas versões) e, quando pertinente, desativação do produto de software (substituição do sistema ou atualização de versão).
E, finalmente, a fase de processos integrais, utilizada para assegurar que todas as atividades envolvidas no projeto possam ser concluídas com êxito, e, ainda, suas atividades são executadas ao mesmo tempo com atividades dos processos orientados ao desenvolvimento do software. Algumas dessas atividades seriam: a) avaliação dos processos em todo o ciclo de vida do produto de software (condução de revisões e auditorias nos processos, desenvolvimento de procedimento de testes, execução de testes, avaliação de resultados); b) gerenciamento de configuração do software (controle da configuração de produtos específicos como código do programa, documentação, planos e especificações); c) desenvolvimento e distribuição de documentação para desenvolvedores e usuários envolvidos nos processos, a fim de fornecer, em tempo hábil, informações sobre o software; e d) atividade de treinamento (desenvolver material, validar o programa de treinamento e implementar o programa de treinamento), cujo sucesso do software está ligado ao bom conhecimento que as pessoas têm sobre o mesmo.