CONTRIBUIÇÕES PARA A ENGENHARIA DE SOFTWARE
Neste tópico serão examinadas as contribuições que o paradigma da programação orientada para objetos pode trazer para a solução de alguns problemas da Engenharia de Software, mostrando que muitos desses problemas podem advir do uso de modelos inadequados de programação. Esas considerações foram apresentadas anteriormente em [Jonathan 87].
Smalltalk (e outras LOO's) estimula de forma natural a reutilização de software. Sendo um ambiente integrado de programação, todos os recursos do sistema estão disponíveis de maneira uniforme para qualquer aplicação. A partir do momento em que uma classe é definida e implementada, qualquer aplicação pode utilizá-la diretamente, ou definir subclasses específicas para a aplicação, com custo marginal. Por exemplo, basta definir uma vez uma classe ArvoreBinaria, e qualquer aplicação pode gerar quantas instâncias dessa classe forem necessárias, e utilizar suas propriedades, sem necessidade de escrever uma única linha de código.
Essa facilidade permite abordar um projeto de software de forma semelhante à construção de sistemas físicos, isto é, como um objeto complexo constituído pela reunião de diversos objetos pré-fabricados de uso geral, cada qual com estrutura e funcionalidade bem definidas.
Como consequência, os custos de produção de cada classe são divididos entre todas as aplicações que dela se utilizam, com redução considerável do custo por aplicação. Por outro lado, aplicações podem ser implementadas em menor prazo devido à redução do esforço de especificação e programação, e os produtos resultantes apresentam um maior grau de confiabilidade, já que utilizam classes previamente testadas. Por fim, a manutenção, tanto corretiva como evolutiva, fica grandemente simplificada como resultado do uso de componentes padronizados, e pela total modularidade da arquitetura do sistema.
Embora as implementações de Smalltalk e outras LOO's ainda não sejam eficientes o bastante para competir com as linguagens convencionais, são por outro lado potencialmente úteis para a construção de protótipos rápidos, para uso na depuração das especificações de aplicações. Sistemas funcionalmente corretos podem ser implementados rapidamente em Smalltalk e colocados à disposição dos usuários para utilização experimental. Modificações nas especificações podem ser facilmente implementadas e testadas realisticamente em muitos casos. Dessa forma torna-se possível convergir mais rapidamente para um produto idealmente próximo das expectativas do usuário