As engenharias mais tradicionais lidam com artefatos materiais onde propriedades físicas estão fundamentadas em teorias das ciências.
Nas engenharias tradicionais, o design é tratado separadamente pelas disciplinas de desenho industrial e arquitetura (na civil). Na engenharia de software, o design, isto é a transformação de requisitos em solução, ocorre de forma integra à engenharia de requisitos, à arquitetura de software e ao design de interfaces de usuário.
Nas engenharias tradicionais, o processo de verificação é quase sempre nas qualidades do artefato. O aspecto humano, quando considerado, é tratado pelo profissional de fatores humanos ou ergonomia. Em um software, o ser humano e a sua capacidade de interpretar informações, da racionar sobre elas para interagir e resolver problemas, é parte integrante do produto. Um software interativo não funciona sem o componente humano, tal como um software embutido não funciona sem a máquina na qual ele está embarcado. Dessa forma, a avaliação da interação usuário-sistema precisa ser parte necessária e não complementar da verificação. Métodos de desenvolvimento iterativos, com prototipagem e experimentação com usuário ao longo do ciclo é fundamental.
Por fim, lidar com sistemas legados, robustos e confiáveis, é um grande desafio e um outro aspecto diferencial da engenharia de software. Como o software não se desgasta ou sofre fadiga material, o processo de reforma ou reciclagem também é diferente. Técnicas de migração por transformação de código é algo particular da indústria de software.
Assim, engenharia de software tem em comum com qualquer engenharia a necessidade de compreender problemas, desenvolver soluções criativas e garantir a qualidade do seus produtos, aliada aos aspectos gerenciais e econômicos. Mas as características do artefato software requer uma engenharia com fundamentos, métodos, técnicas e ferramentas próprios.
Comentários