O que é evolução de software?
A evolução do software é um processo pelo qual um programa de computador comercial requer atualização, manutenção e aprimoramento contínuos ao longo do tempo para permanecer um produto viável. Nesse sentido, a evolução do software é impulsionada pelas necessidades externas de negócios e consumidores que mudam à medida que outros softwares e tecnologias avançam em torno dele. O fator determinante da evolução do software, no entanto, é geralmente interno, focado na equipe de engenharia que produziu o produto e na empresa que depende do sucesso da lucratividade. O Imperial College de Londres, Inglaterra, promulgou três leis fundamentais da evolução do software no início dos anos 1970, que foram ampliadas para um total de oito leis a partir de 2011. Outras tentativas também foram feitas para quantificar o processo utilizando modelos como o Modelo Sequencial Linear e o Modelo de Protótipo, mas o paradigma que parece mais adequado aos ciclos de vida da entropia de software é o de um que se assemelha à evolução darwiniana para os seres vivos.
Os fatores básicos por trás das mudanças na arquitetura de software se assemelham às mesmas forças que motivam as empresas a atualizar máquinas industriais ou procedimentos operacionais padrão conforme as necessidades da sociedade mudam. À medida que o software é cada vez mais usado, novas necessidades ou funções tornam-se aparentes, que devem ser trabalhadas em versões posteriores do produto. Todos os softwares também são lançados com erros anteriormente desconhecidos; portanto, patches e procedimentos de manutenção periódicos devem ser realizados para corrigir situações como brechas de segurança que podem tornar uma empresa vulnerável a ataques através do próprio software. Uma chave para a evolução do software também é o fato de que esses programas precisam ser cada vez mais adaptados para trabalhar em diferentes tipos de equipamentos de informática emergentes e dentro de várias arquiteturas de sistema operacional, para que o programa tenha um apelo mais amplo.
Atender a todas essas necessidades é crucial para determinar se um programa de software permanece viável e, como os ativos de software são um aspecto crucial da economia da informação a partir de 2011, a evolução do software se tornou um aspecto fundamental da adaptação e crescimento dos negócios. Meir Lehman, cientista da computação do Imperial College de Londres, é creditado com a criação das Leis de Lehman, que definiram sucintamente o processo de evolução de software e orientaram os desenvolvedores na visão de futuro da visualização de software. As leis de Lehman são baseadas na premissa de que o software evolui à medida que o feedback sobre seu desempenho aumenta e que sua tendência inevitável é se tornar cada vez mais complexa.
Lehman afirmou que a natureza da evolução do software reflete mudanças naturais, como a mutação nas moscas da fruta, a maneira como as cidades se expandem ao longo do tempo e como as estruturas militares melhoram progressivamente os sistemas de armas. As três primeiras leis do processo emulam essas tendências ao detalhar a mudança contínua, o aumento da complexidade e o que é conhecido como grande evolução do programa. Mudança contínua refere-se ao fato de que o programa deve ser adaptado para atender às condições atuais de negócios do mundo real, e isso reflete a crescente complexidade, pois o programa deve atender a uma diversidade cada vez maior de necessidades inesperadas. A grande evolução do programa refere-se à necessidade de correção de erros e novos lançamentos do programa que estão inexoravelmente ligados às demandas do mercado.
Das cinco leis restantes na evolução do software, o número quatro é a Estabilidade Organizacional e refere-se ao fato de que o crescimento de um programa ganha vida própria, independentemente do nível de recursos intencionalmente dedicado a ele, e o número cinco é a Conservação da Familiaridade que afirma que o crescimento incremental do programa é inevitável. O número seis nas oito Leis do Lehman é Crescimento Contínuo, necessário para satisfazer a demanda do consumidor, e o número sete é Declining Quality, que enfatiza o fato de que todo software eventualmente enfrenta limites de funcionalidade que não pode atender. A lei final de Lehman para a evolução do software é o próprio sistema de feedback, que une todas as forças que afetam a viabilidade de um programa de software para conduzi-lo rapidamente ao maior sucesso ou à obsolescência e morte inevitáveis.