A Qualidade do Sofware e da Matemática em Movimento (Exame Informática)

Investigador do Laboratório de Sofware Confiável (HASLab) do Instituto de Engenharia de Sistemas e Computadores, Tecnologia e Ciência (INESC TEC) e Professor Catedrático na Universidade do Minho.

José Nuno Oliveira




A produção de bens em larga escala tem aperfeiçoado o conceito de qualidade, que cumpre o papel de "interface" entre o consumidor e o produtor_ ao primeiro garante o que compra, ao segundo valoriza o que produz. A chamada "revolução digital" automatizou ainda mais a produção e promoveu a "desmaterialização", libertando indústria e serviços de limitações dos tradicionais sistemas físicos de suporte. Isto conseguiu-se à custa de um ingrediente novo: o software, "l'enfant terrible" da era das TI.

Contudo, se colocarmos software em parelelo com hardware, ou outro qualquer produto industrial, há diferenças que comprometem a importação "tout court" dos processos de qualidade da indústria tradicional. O software não tem peso, é quimicamente neutro, não aquece (quem o faz é o hardware onde ele corre), enfim: é imaterial e não se rege pelas leis da física. Não era isto de esperar, afinal, do ingrediente novo que potenciou a desmaterialização dos nossos tempos?

Qual é então a base científica do software enquanto produto de uma engenharia? Por estranho que possa parecer, o software rege-se por leis matemáticas e, como costumo dizer nas aulas, mais não é do que "matemática em movimento". Talvez desconcertante para muitos, esta explicação simples ajuda a perceber a afirmação de há 50 anos de Edsger Dijkstra, um dos maiores cientistas da programação: "Software engineering seems to be the activity for the Mathematical Engineer par Excellence".

Ironicamente talvez, em software os problemas concretos resolvem-se recorrendo à abstração, algo que afinal não é nada fora do comum (leia-se o artigo Is Abstraction the Key to Computing? por J. Kramer, Com. ACM, 2007). Os últimos anos tem assistido a um notável desenvolvimento de ferramentas que permitem lidar com tais abstrações e ajudam a aplica-las ao desenho científico do software, prevenindo erros e permitindo verificação. Tendo a área do teste evoluído entretanto como disciplina sistemática, o trio modelação, verificação e teste é a base da qualidade do software enquanto produto. O problema reside aqui e não na qualidade dos processos, onde se conheceram avanços significativos (normalização, certificação de empresas, etc) e onde a própria maleabilidade do software inspirou técnicas de produção novas, dotadas de maior agilidade.

Infelizmente, o problema não é de solução fácil por serem poucas as instituições que ensinam modelação matemática em projeto de software. Em suma, acaba por ser (como tantos outros) um problema de educação. Tal como aconteceu há 50 anos na primeira conferência sobre engenharia de software (1968, Garmish, Alemanha), indústria e universidades precisam de voltar a discutir o assunto. O laboratório de Software Confiável (INESC TEC / U. Minho) desenvolve há anos trabalho nesta área, que estará em discurssão proximamente no seu Open Day (8 de setembro) no edifício sede do INESC TEC, no Campus da FEUP.

(Versão PDF)