Engenharia Múltipla Escolha

Entre as leis da evolução de software propostas por Lehman, destaca-se a Lei da Complexidade Crescente, que aponta que, à medida que sistemas evoluem, sua estrutura interna tende a se tornar mais complexa. Essa complexidade resulta de modificações sucessivas realizadas para atender novas demandas, corrigir falhas e adaptar o sistema ao ambiente em mudança. Avalie a Lei da Complexidade Crescente e identifique a alternativa que melhor expressa sua implicação para a manutenção de software.

Entre as leis da evolução de software propostas por Lehman, destaca-se a Lei da Complexidade Crescente, que aponta que, à medida que sistemas evoluem, sua estrutura interna tende a se tornar mais complexa. Essa complexidade resulta de modificações sucessivas realizadas para atender novas demandas, corrigir falhas e adaptar o sistema ao ambiente em mudança. Avalie a Lei da Complexidade Crescente e identifique a alternativa que melhor expressa sua implicação para a manutenção de software.

  1. A evolução natural do software reduz sua complexidade estrutural.
  2. A manutenção elimina a necessidade de reengenharia.
  3. Medidas sistemáticas são necessárias para controlar a complexidade.
  4. A complexidade aumenta apenas em sistemas mal projetados.

Resolução completa

Explicação passo a passo

C
Alternativa C

Alternativa C - Medidas sistemáticas são necessárias para controlar a complexidade.

Introdução

A questão aborda as Leis da Evolução do Software propostas por Manny Lehman. Especificamente, foca na Lei da Complexidade Crescente, um conceito fundamental na engenharia de software que descreve como os sistemas mudam ao longo do tempo.

O enunciado deixa claro que a complexidade não é estática; ela cresce naturalmente conforme o software sofre modificações para atender novas demandas ou corrigir falhas.

Desenvolvimento

Quando um software é mantido (atualizado, corrigido ou expandido), cada alteração adicionada pode introduzir novas dependências ou acoplamentos no código. Com o passar do tempo, essa acumulação de mudanças faz com que a estrutura interna se torne mais difícil de entender e gerenciar.

Essa tendência de crescimento da complexidade implica que a manutenção pura e simples, sem gestão ativa, levará o sistema a um estado de alta entropia (caos), onde novas alterações se tornam arriscadas e custosas.

Análise das Alternativas

Para identificar a resposta correta, avaliamos cada alternativa com base na definição da lei apresentada:

  • Alternativa A (Incorreta): Afirma que a evolução reduz a complexidade. Isso contradiz diretamente o texto, que diz que a estrutura "tende a se tornar mais complexa".
  • Alternativa B (Incorreta): Diz que a manutenção elimina a necessidade de reengenharia. Pelo contrário, quando a complexidade atinge níveis críticos devido à manutenção acumulada, a reengenharia torna-se necessária para reduzir essa complexidade e restaurar a qualidade.
  • Alternativa C (Correta): Propõe que medidas sistemáticas são necessárias para controlar a complexidade. Como a lei prevê o aumento inevitável da complexidade durante a evolução, é preciso adotar práticas proativas (como refatoração, revisão de código e arquitetura sólida) para manter o sistema viável.
  • Alternativa D (Incorreta): Limita o aumento da complexidade a sistemas mal projetados. Na verdade, mesmo sistemas bem projetados sofrem esse aumento devido às mudanças obrigatórias no ambiente de negócios e requisitos ao longo do tempo.

Conclusão

A implicação lógica da Lei da Complexidade Crescente é que, se não houver ação deliberada para gerenciar o crescimento da complexidade, o software se tornará insustentável. Portanto, a alternativa C é a única que apresenta uma solução adequada para o problema descrito pela teoria.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Engenharia

Ver mais Engenharia resolvidas

Tem outra questão de Engenharia?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.