RESOLUÇÃO Nº 001/2003, de 04 de agosto de 2003.
Art. 37 A aplicação dos fundamentos da engenharia de software deve favorecer a utilização das melhores práticas de desenvolvimento, envolvendo o uso de modelos abstratos e precisos, permitindo especificar, projetar, implementar e manter os aplicativos de software, avaliando e garantido suas qualidades, tendo por base nos seguintes critérios:
I – Desenvolvimento iterativo: deve permitir que as funcionalidades do aplicativo sejam liberadas para o usuário em uma série sucessiva de versões, onde cada versão é desenvolvida em um determinado tempo chamado iteração, focada em definir, analisar, projetar, construir e testar os requisitos, possibilitando: a) solução dos riscos maiores antes que sejam efetuados grandes investimentos; b) a análise de viabilidade por parte do usuário; c) a continua execução de testes e integração dos módulos desenvolvidos; e d) a implementação através de implementações parciais do aplicativo. II – Gerenciamento de requisitos ativo: deve envolver as atividades de elucidação, organização e documentação das funcionalidades do aplicativo; avaliação das mudanças solicitadas; e rastreamento e documentação de acordos e decisões, possibilitando: a) analisar o problema; b) entender as necessidades do usuário; c) definir o aplicativo; d) manter o escopo do aplicativo; e) refinar as definições do aplicativo; e f) construir o aplicativo certo. III – Arquitetura componentizada: deve possibilitar a reutilização de código mediante um instrumento de desenvolvimento denominado componentização, simplificando as etapas do incremento de novos aplicativos e manutenção dos existentes e proporcionando economia no tempo de execução do projeto, possibilitando: a) a organização do software; b) a seleção dos elementos da estrutura e suas interfaces no qual o aplicativo é composto; c) os comportamentos dos elementos do software; d) o comportamento da estrutura e dos elementos no aumento progressivo dos subsistemas; e e) os modelos arquiteturais que guiam a organização, seus elementos e interfaces, seus colaboradores e sua composição. IV – Modelagem visual: deve ser utilizada para a simplificação da realidade através de modelos que descrevam um aplicativo, tornando mais fácil sua compreensão e possibilitando: a) capturar a estrutura e o comportamento do aplicativo; b) mostrar como os elementos do aplicativo se comportam juntos; c) elaborar um projeto e implementação consistente; d) proteger e expor os detalhes apropriados; e e) evitar uma comunicação ambígua. V – Verificação contínua da qualidade: deve ser utilizada para evitar que problemas de software permaneçam durante o processo de desenvolvimento, minimizando os custos com problemas descobertos tardiamente, tendo em vista: a) testar os principais cenários, assegurando que todos os requisitos são implementados da maneira correta; b) verificar a confiabilidade do software; e c) testar todas as iterações. VI – Gerenciamento de mudanças: deve garantir o controle das atividades que envolvem os procedimentos repetitivos para gerenciamento de mudanças de software e outros artefatos de desenvolvimento, facilitando a alocação dos recursos baseados nas prioridades e riscos do projeto e permitindo: a) que os procedimentos de mudanças de requisitos sejam definidos e que sejam passíveis de repetição; b) maior facilidade na comunicação de mudança de requisitos; c) criação de áreas de trabalho que contenham todos os artefatos, facilitando a consistência; d) que as mudanças possam ser mantidas em um aplicativo robusto e customizável; e e) que a propagação das mudanças seja passível de avaliação e controle.