quinta-feira, março 16, 2006

As Leis da Evolução de Software



Conforme discutimos em aula, as leis de Lehman, sumarizadas abaixo, são fundamentalmente centradas no conceito de retro-alimentação.

Vale também lembrar que essas leis são válidas para software que não podem ser considerados sistemas fechados, ou seja simples programas que tem especificação bem definida e que portanto podem ser verificados formalmente, se essa especificação for socialmente aceita como completa. Vejam exemplos desse tipo de software (chamado por Lehman de S-type) aqui e aqui.

As leis de Lehman, apresentadas a seguir, foram traduzidas do artigo Rules and Tools for Software Evolution Planning and Management (a tradução usou partes da tradução feita por Roberto Holanda de outro artigo de Lehman e usou o termo software em substituição a E-type Software):

I - Mudança contínua.
Um software deve ser continuamente adaptado, caso contrário se torna progressivamente menos satisfatório.

II - Complexidade crescente.
À medida que um software é alterado, sua complexidade cresce, a menos que um trabalho seja feito para mantê-la ou diminuí-la.

III - Auto-regulação.
O processo de evolução de software é auto-regulado próximo à distribuição normal com relação às medidas dos atributos de produtos e processos.

IV - Conservação da estabilidade organizacional .
A não ser que mecanismos de retro-alimentação tenham sido ajustados de maneira apropriada, a taxa media de atividade global efetiva num software em evolução tende a ser manter constante durante o tempo de vida do produto.

V - Conservação da Familiaridade.
De maneira geral, a taxa de crescimento incremental e taxa crescimento a longo prazo tende a declinar.

VI - Crescimento contínuo.
O conteúdo funcional de um software deve ser continuamente aumentado durante seu tempo de vida para para manter a satisfação do usuário.

VII - Qualidade decrescente.
A qualidade do software será entendida como declinante a menos que o software seja rigorosamente adaptado às mudanças no ambiente operacional.

VIII - Sistema de Retro-alimentação.
Processos de evolução de software são sistemas de retro-alimentação em múltiplos níves, em múltiplos laços (loops) e envolvendo múltiplos agentes.


A próxima leitura pode ser encontrada aqui.

Nenhum comentário: