Última alteração: 18-09-2018
Resumo
A Engenharia de Software é uma área da Computação que faz aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software (IEEE, 1993 apud PRESSMAN, 2011, p.38), É o “emprego de princípios e técnicas de modo a obter software de maneira econômica, que seja confiável e funcione de forma eficiente em máquinas reais” (Naur & Randall, 1969 apud PRESSMAN, 2011, p.38). Alguns problemas como mudanças de requisitos durante o desenvolvimento, perda de credibilidade pela não entrega do produto no prazo, aumento da complexidade e diminuição da eficiência, podem trazer grandes impactos ao processo de desenvolvimento de software. Assim, optou-se pelo uso de técnicas a fim de criar padrões e melhores práticas que pudessem favorecer e aperfeiçoar o processo de desenvolvimento, desde a escolha de um modelo de ciclo de vida, o qual nada mais é que uma estrutura que define como se dará a relação entre as fases do desenvolvimento de software - análise de requisitos, projeto, implementação, testes e implantação. Um modelo trivial, que é usado até hoje é o modelo de vida cascata, que tornou o desenvolvimento estruturado e ordenado, porém é considerado rígido por não aceitar iterações, tendo a relação entre as fases da seguinte forma: o término de uma etapa é a entrada para a próxima etapa. Uma alternativa ao cascata é o modelo iterativo/incremental. Um processo de desenvolvimento de software é incremental quando a cada fase é desenvolvido um pedaço inteiro do software. Já no iterativo, a cada iteração, se avança no conhecimento do projeto, novos requisitos são elicitados e a arquitetura do software é revisada. No modelo incremental, necessariamente teremos entrega de software ao término de uma iteração, não sendo verdade para o modelo iterativo. Com o uso desses modelos de ciclo de vida, desenvolvedores e clientes decidem conjuntamente a cada etapa do processo, prevenindo erros e aumentando a qualidade do software para atender as necessidades dos usuários. O cliente pode ter uma versão prévia do produto mais rapidamente do que no modelo cascata, verificando se os requisitos foram atingidos e dando seu feedback. Entretanto, softwares com muitas iterações podem acabar mudando a ideia original e com o incremento demasiado de requisitos, o tornam um sistema sem fim. Existem os processos Iconix, OpenUp, e métodos ágeis como Scrum que fazem uso deste modelo, o qual torna o desenvolvimento de novos produtos muito mais transparente e benéfico.