segunda-feira, 4 de agosto de 2008

O que é Projeto de Software?

Contextualizar “Projeto de Software” requer compreender diferentes propostas apresentadas pela comunidade científica. Assim, de forma sintetizada, entende-se aqui por “Projeto de Software” como um processo de planejamento e resolução de problemas para a construção de um software. Ou seja, foca o concepção e o desenvolvimento de um software, onde desenvolvedores de softwares devem colaborativamente contribuir com artefatos (requisitos, documentação, etc) de maneira organizada, seguindo as regras definidas por um processo de desenvolvimento de software.

Segundo [1], o “Projeto de Software” ocorre quando os requisitos do software
são obtidos e o software é desenvolvido e testado. Ainda salienta que, uma das principais falhas no desenvolvimento de um software está relacionada coma inabilidade de projetistas lidar corretamente com clientes e suas necessidades de mudanças. Além disso, projetistas de software possuem dificuldades de analisar seus projetos e demonstrar que estes estão corretos e que representam os requisitos adquiridos. De fato, os problemas supracitados podem ser parcialmente “corrigidos” com novos processos de desenvolvimento de software, tais como Desenvolvimento de Software Orientado a Aspectos (AOSD) e Desenvolvimento Orientado a Modelos (Model-Driven Development - MDD). No primeiro caso, existe um ganho no poder de expressar requisitos não-funcionais. Já no segundo, projetistas passam a ter uma abstração maior das funcionalidades do software provendo maneiras automatizadas para zeração do código.

Reeves [2] tenta propor que o projeto de software apenas ocorre no processo de codificação do software. Ou seja, o código-fonte do software é, de fato, o projeto de software. Gerou-se muitas polêmicas em torno desta tentativa de definir “Projeto de Software”, pois, se o código-fonte é o “projeto”, entãodesenvolvedores são projetistas (o que não é verdade). Ou seja, o código-fonte não pode ser o projeto de software.

Apesar das controvérsias na definição de “Projeto de Software”, pode-se observar que projetar um software requer definir de forma consistente os processos do ciclo de desenvolvimento de software (an´alise, projeto, codificação, etc), gerando e atualizando artefatos em cada etapa do desenvolvimento e organizando as interações entre os envolvidos.

Thiago Sales

[1] Kruchten, P. 2005. Software Design in a Postmodern Era. IEEE Software.
22, 2 (Mar. 2005), 16-18.

[2] Reeves, J. W. 1992. What is Software Design. The C++ Journal. No. 2
Vol. 2.

Nenhum comentário: