quinta-feira, 29 de outubro de 2009

Diferenças entre engenharia de software e as engenharias de artefatos físicos.

As engenharias mais tradicionais lidam com artefatos materiais onde propriedades físicas estão fundamentadas em teorias das ciências.

O software é um artefato intelectual cuja matéria prima é a informação e o conhecimento humanos representados por códigos e linguagens. A sua construção é um processo de transformação e comunicação de representações através de seus códigos e linguagens que envolve todos os stakeholders (clientes, desenvolvedores, usuários). Nenhuma outra engenharia tem estas peculiaridades. Isto torna a ES diferenciada com processos bem particulares.

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.

Nenhum comentário: