Engenharia de software
Nos últimos 20 anos, o hardware deixou de ser o item mais caro na implementação de um sistema, enquanto que o custo relacionado ao software cresceu e se tornou o principal item no orçamento da computação. Isso se deve principalmente pela crescente complexidade dos problemas a serem resolvidos pelos softwares. Aliado a isso, alguns problemas inerentes ao processo de desenvolvimento de um software começaram a surgir: as estimativas de prazo e de custo frequentemente são imprecisas, a produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços e, a qualidade de software às vezes é menos que adequada, ocorrendo frequentemente a insatisfação do usuário. A chave para se vencer esses problemas e dificuldades acima relatados é a larga utilização de uma abordagem de engenharia ao desenvolvimento de software, aliada a uma contínua melhoria das técnicas e ferramentas, no intuito também de melhorar a produtividade da equipe.
Assim, podemos destacar duas tendências para justificar o uso da Engenharia de Software: primeiro, o software é um item de alto custo e em progressivo aumento; segundo, que os softwares têm um importante papel no bem-estar da sociedade. Dessa forma, a Engenharia de Software assume papel crítico para garantir que tarefas, dados, pessoas e tecnologias estejam apropriadamente alinhadas para produzir um sistema efetivo e eficiente.
2. Processo de Desenvolvimento Caótico
Em uma conferência em 1968 - Software Engineering: Concepts and Techniques. Proceedings of the NATO Conferences - Ronald Graham comentou "construímos sistemas como os irmãos Wright construíam aviões - constrói-se de uma vez só, empurra-se para o despenhadeiro, deixa bater e começa tudo outra vez" (NAUR & RANDELL, 1968). Vemos que após 38 anos muito se parece a maneira como são feitos os softwares em grande parte das empresas, principalmente pequenas empresas, onde frequentemente o programador é também o condutor do projeto. A