As engenharias mais tradicionais lidam com artefatos materiais onde propriedades fisicas estao fundamentadas em teorias das ciencias.O software e um artefato intelectual cuja materia prima e a informacao e o conhecimento humanos representados por codigos e linguagens. A sua construcao e um processo de transformacao e comunicacao de representacoes atraves de seus codigos e linguagens que envolve todos os stakeholders (clientes, desenvolvedores, usuarios). Nenhuma outra engenharia tem estas peculiaridades. Isto torna a ES diferenciada com processos bem particulares.Nas engenharias tradicionais, o design e tratado separadamente pelas disciplinas de desenho industrial e arquitetura (na civil). Na engenharia de software, o design, isto e a transformacao de requisitos em solucao, ocorre de forma integra a engenharia de requisitos, a arquitetura de software e ao design de interfaces de usuario.Nas engenharias tradicionais, o processo de verificacao e quase sempre nas qualidades do artefato. O aspecto humano, quando considerado, e tratado pelo profissional de fatores humanos ou ergonomia. Em um software, o ser humano e a sua capacidade de interpretar informacoes, da racionar sobre elas para interagir e resolver problemas, e parte integrante do produto. Um software interativo nao funciona sem o componente humano, tal como um software embutido nao funciona sem a maquina na qual ele esta embarcado. Dessa forma, a avaliacao da interacao usuario-sistema precisa ser parte necessaria e nao complementar da verificacao. Metodos de desenvolvimento iterativos, com prototipagem e experimentacao com usuario ao longo do ciclo e fundamental.Por fim, lidar com sistemas legados, robustos e confiaveis, e um grande desafio e um outro aspecto diferencial da engenharia de software. Como o software nao se desgasta ou sofre fadiga material, o processo de reforma ou reciclagem tambem e diferente. Tecnicas de migracao por transformacao de codigo e algo particular da industria de software.Assim, engenharia de software tem em comum com qualquer engenharia a necessidade de compreender problemas, desenvolver solucoes criativas e garantir a qualidade do seus produtos, aliada aos aspectos gerenciais e economicos. Mas as caracteristicas do artefato software requer uma engenharia com fundamentos, metodos, tecnicas e ferramentas proprios. A maioria das engenharias tem seus fundamentos em ciencias. As engenharias civil, mecanica e eletrica, para citar as mais tradicionais, estao fundamentas nas leis da fisica. Estes fundamentos permitem a construcao de artefatos que, obedecendo a estas leis, possuem a qualidade desejada pelas pessoas.Queremos qualidade em software. Queremos sistemas que funcionem corretamente e que atendam as necessidades das pessoas. Que sejam confiaveis, robustos, com bom desempenho e seguros. E quais sao os fundamentos que garantem isso?Parte destes fundamentos estao na ciencia da computacao. Ha modelos matematicos que permitem identificar problemas de funcionamento em um software apenas pela analise do codigo fonte. Pode-se prever o desempenho de um programa que processa uma quantidade enorme de dados com analise matematica. Varios fundamentos ja sao conhecidos e devem ser usados pelos engenheiros para que seus produtos atendam os requisitos de qualidade.Mas esses fundamentos nao podem negligenciar que dados e programas sao uma invencao da mente humana. O software e um artefato conceitual cuja utilidade depende do uso que as pessoas fazem dele. O funcionamento de um software e