El principio de Software Peter se utiliza en ingeniería de software para describir un proyecto moribundo que se ha vuelto demasiado complejo para ser entendido incluso por sus propios desarrolladores.
Es bien conocido en la industria [ cita requerida ] como un asesino silencioso de proyectos, pero cuando surgen los síntomas, a menudo es demasiado tarde para hacer algo al respecto [ cita requerida ] . Los buenos gerentes pueden evitar este desastre estableciendo prácticas de codificación claras en las que se evite un código y un diseño innecesariamente complicados.
El nombre se usa en el libro C ++ FAQs (ver más abajo) y se deriva del principio de Peter , una teoría sobre la incompetencia en organizaciones jerárquicas.
Causas
Pérdida de integridad conceptual
La integridad conceptual del software es una medida de qué tan bien se ajusta a un conjunto simple y único de principios de diseño, según The Mythical Man Month de Fred Brooks [ cita requerida ] . Cuando se hace correctamente, proporciona la mayor funcionalidad utilizando los modismos más simples . Hace que el software sea más fácil de usar al simplificar la creación y el aprendizaje [ cita requerida ] .
La integridad conceptual se logra cuando el diseño del software procede de un pequeño número de personas que están de acuerdo [ cita requerida ] . Para que el software mantenga la integridad conceptual, el diseño debe ser controlado por un solo grupo pequeño de personas que comprendan el código (incluida la naturaleza de cómo interactúan todas las subrutinas y variables) en profundidad.
En proyectos sin un equipo de arquitectura de software sólido , la tarea de diseño a menudo se combina con la tarea de implementación y se delega implícitamente entre los desarrolladores de software individuales . En estas circunstancias, es menos probable que los desarrolladores sacrifiquen sus intereses personales en favor de los intereses del producto. La complejidad del producto crece como resultado de que los desarrolladores agregan nuevos diseños y alteran los anteriores para reflejar los cambios en la moda y el gusto individual.
Incompetencia del programador
Los buenos desarrolladores de software comprenden la importancia de comunicarse con las personas en lugar de comunicarse con la computadora, según Code Complete de Steve McConnell . En promedio, el 85 por ciento del tiempo de un programador se dedica a comunicarse con las personas, mientras que solo el 15 por ciento se dedica a comunicarse con la computadora. [ cita requerida ] Los programadores de mantenimiento pasan del 50 al 60 por ciento de su tiempo tratando de entender el código que tienen que mantener y un programa de software tendrá, en promedio, 10 generaciones de programadores de mantenimiento en su vida.
Inexperiencia del programador
Los programadores a veces toman decisiones de implementación que funcionan pero tienen consecuencias negativas no deseadas. Los más comunes de estos errores se catalogan y se denominan olores en el libro Refactorización de Martin Fowler . Con el tiempo, muchas de estas opciones de implementación degradan el diseño del software, lo que hace que sea cada vez más difícil de entender.
Ver también
Referencias
- Preguntas frecuentes sobre C ++ de Cline, Lomow y Girou, Addison-Wesley 1999 ISBN 0-201-30983-1
- Brooks, F., El mes del hombre mítico , Addison-Wesley Longman Inc., 1995.
- McConnell, S., Código completo , Microsoft Press, 1993
- Fowler, M., Refactorización , Addison-Wesley, 2000