Processo de desenvolvimento de software

Autor: Vanderlei Vilhanova Ortêncio


Uma das características mais marcantes da Engenharia de Software, é o fato de encarar o software como produto, em todas acepção da palavra.

A Adoção desta analogia permitiu que um grande acervo de conhecimento técnico e científico da área industrial fosse incorporado e adaptado para produção de software.

Este avanço significativo traz para a informática um poderio novo e oportuniza uma revisão completa nos usos e costumes de quem desenvolve software, com a máxima urgência, sob pena de sucumbir um mercado cada vez mais exigente.

Até bem pouco tempo, a ênfase tem sido na conscientização e emprego de técnicas, ferramentas, boas práticas, demandando portanto uma metodologia que cada organização adota ou desenvolve, dedicando um esforço hercúleo para implantar, adaptar e consolidar.

Entretanto, isso não tem se mostrado suficiente e diversas discussões foram acalentadas em torno de propostas metodológicas revolucionárias, sem que se tivesse uma clara idéia da constituição básica de uma metodologia ou de um processo de desenvolvimento de software, ou até mesmo do que se pode considerar como produto de software.

Uma base conceitual importante foi proposta por Peter Freeman e Arnd Von Staa, no trabalho "Towards a Theory of Software Engineering", onde se procurou estabelecer uma teoria que contemple os elementos de um processo de desenvolvimento de software.

Do ponto de vista desta teoria, o desenvolvimento de software pode ser visto como um processo de criar e manipular representações. O software é então uma sucessão de representações. O software é então uma sucessão de representações desde o início do processo até o fim. É conhecimento em todos os níveis do projeto, e também no produto final. O produto de software não é apenas o código do programa, mas todo conjunto formado por código, dados e documentos necessários para utilizar, manter, avaliar e entender o sistema e os resultados por ele produzidos.

Assim sendo, em um processo de desenvolvimento existem dois elementos; atividades e representações.

As representações contêm informações sobre um sistema específico e são consideradas modelos daquele sistema. As informações são conhecimentos sobre um sistema, que desejamos comunicar a outras pessoas ou a nós mesmos, posteriormente. Para isso são empregadas formas de representação que são modelos de representações que especificam os formatos das informações para um tipo particular de representação (por exemplo, um PDF é uma forma de representação através da qual se faz uma representação através da qual se faz uma representação que informa o modelo funcional de um sistema).

As atividades fundamentais são aquelas envolvidas na criação e manipulação das representações, podendo ser divididas em cinco classes: levantamento de informações externas, mudança de representação, avaliação, reflexão e controle. Qualquer procedimento definido deverá pertencer a uma destas classes.

Um aspecto importante da base conceitual proposta, é que ela além de especificar claramente os componentes do processo, incorpora firmemente os conceitos de garantia da qualidade e controle da qualidade, estabelecendo genericamente uma estrutura para as medidas de qualidade que um processo de desenvolvimento deve ter. Isto possibilita um referencial importante, tanto para a definição como para a avaliação de um processo de desenvolvimento, podendo vir a ser adotado como um paradigma para a definição, avaliação e evolução de uma metodologia de desenvolvimento de software.

É importante salientar que o eixo das atenções está se voltando, cada vez mais, para a qualidade dos produtos. E qualidade não é algo que possa ser incorporado em alguma fase da construção. A qualidade do produto é obtida como resultado da qualidade em todo processo de desenvolvimento, em conformidade com as expectativas de qualidade definidas nos requisitos da especificação do produto.

Conclusão

Qualquer que seja o resultado das discussões em torno de "down-sizing", "out-sourcing", etc, uma coisa é certa: produção de software é, cada vez mais, coisa de profissional. A avaliação possível da capacidade de um fornecedor ou desenvolvedor de software passará, em breve, a ser obtida na observação do processo de desenvolvimento por ele empregado, segundo os preceitos da engenharia de software. Isto significa que o candidato a cliente, antes de contratar serviços, vai analisar o processo de desenvolvimento e avaliar se as garantias de qualidade que aquele processo apresenta são aceitáveis.

Portanto, estou convicto de que este é o ponto onde devem ser canalizados investimentos, por quem pretende continuar neste segmento de mercado, para a conquista da qualidade como propriedade fundamental da competitividade num mercado que começa a ter plena consciência de seus direitos e, tenha certeza, não deixará de exercê-los.