Para produzirmos software temos que ter fundamentalmente três tipos de conhecimento: conhecimento da engenharia de software, conhecimento do contexto (Universo de Informações) em que o software será aplicado e conhecimento da máquina computacional da qual o software fará parte.
O conhecimento da engenharia de software permite que o engenheiro tenha proficiência no uso de métodos, técnicas e ferramentas.
O conhecimento do contexto é adquirido com a ajuda das MTFs.
O conhecimento da máquina computacional é proporcionada pela fundamentação teórica em várias disciplinas da ciência da computação.
O grande desafio da engenharia de software é prover MTFs que ajudem os engenheiros de software entenderem o contexto onde o software irá atuar e as limitações da máquina computacional em que o software irá residir. Para isso é inevitável que o engenheiro de software trate o problema da transição de descrições informais para descrições formais e que também modele adequadamente as restrições da máquina escolhida. Essa máquina computacional é uma combinação de hardware e software. Portanto, vale notar que quando produzimos software, temos que levar em consideração outros software já pre-existentes na máquina computacional escolhida.
Essa idéia é fundamentada na visão de Peter Freeman sobre os conhecimentos necessários ao engenheiro de software.
…………
Leia sobre Sistemas de Informação.
Veja a página do autor.

