Problemas y calidad del software
Problemas del software
La ingeniería del software: Trata de ser la respuesta a la crisis y a los problemas del software.
• El producto debe ser confiable y realizar sólo las tareas especificadas en los requerimientos.
• El producto debe ser robusto. Esto quiere decir que el software se comporta de manera razonable, incluso en circunstancias no anticipadas desde el principio.
• El producto de software debe ser lo más reutilizable posible, de manera tal que pueda ser incorporado en otro producto de software si se requiere.
• El producto de software debe ser eficiente en el uso de los recursos del sistema.
• Se requiere desarrollar el software en una manera que lo haga evolutivo, de forma tal que se pueda agregar funcionalidad adicional sin efectos perjudiciales.
• El producto de software debe cumplir con los requerimientos de rendimiento especificados, es decir, debe cumplir algunas de las restricciones relacionadas al rendimiento.
• El producto de software tendrá mayor valor si es portable, es decir que puede trabajar bajo diferentes plataformas de software y ambientes (hardware, sistemas operativos, etc.).
• El producto de software debe ser utilizable, es decir, el aprendizaje de su uso debe ser los suficientemente sencillo por parte de personas no especialistas.
Factores que afectan la calidad del software
1. Escasa o tardía validación con el cliente.
2. Inadecuada gestión de los requisitos.
3. No existe medición del proceso ni registro de datos históricos.
4. Estimaciones imprevistas de plazos y costos.
5. Excesiva e irracional presión en los plazos.
6. Escaso o deficiente control en el progreso del proceso de desarrollo.
7. No se hace gestión de riesgos formalmente.
8. No se realiza un proceso formal de pruebas.
9. No se realizan revisiones técnicas formales e inspecciones de código.
Complejidad
• El sistema es tan complejo que ningún programador puede entenderlo.
• La introducción de una solo corrección de error puede hacer que otro se genere
Cambios
• La "Entropía" de un sistema de software se incrementa con cada cambio: Cada cambio implementado erosiona la estructura del sistema lo cual hace que el siguiente cambio sea aún más costoso ("Segunda Ley de la Dinámica de Software").
• Conforme pasa el tiempo, el costo de implementar un cambio será demasiado alto, y el sistema entonces no podrá soportar la tarea prevista.
Por que el software es tan complejo
El dominio del problema es difícil
1. Es decir, puede que no sea un desafío intelectual, sino porque usted no es un experto en ella, hay que aprenderlo.
2. Si unimos esto con el aprendizaje de varios dominios de problemas, y eso es lo que usted tendrá que hacer como ingeniero de software, y el problema se hace evidente.
El proceso de desarrollo es muy difícil de gestionar
Uno de los supuestos que los administradores han hecho en el pasado, es que el desarrollo de software puede ser gestionado como un conjunto de pasos en forma lineal, por ejemplo: Especificación de Requisitos, seguido de Diseño de Sistemas seguido de Ejecución seguido de pruebas y de entrega.
En realidad esto no es tan fácil. Desarrollo de software no se sigue un proceso lineal. Es altamente no lineal. Hay dependencias entre la forma en que se diseña un sistema y la funcionalidad. Por otra parte, y eso hace que sea muy difícil, algunas de estas dependencias no se pueden formular a menos que pruebe el diseño.
En realidad esto no es tan fácil. Desarrollo de software no se sigue un proceso lineal. Es altamente no lineal. Hay dependencias entre la forma en que se diseña un sistema y la funcionalidad. Por otra parte, y eso hace que sea muy difícil, algunas de estas dependencias no se pueden formular a menos que pruebe el diseño.
El software ofrece una flexibilidad extrema
Si bien es difícil de cambiar el diseño de una lavadora, es muy fácil de cambiar el programa antes de ejecutarlo.
El software es un sistema discreto (formas particulares de codificación)
Esto puede suceder con los sistemas digitales. Una de las razones:
1.Si bien se puede descomponer el sistema en subsistemas (Azafata, Control de Vuelo), si usted no sigue las buenas reglas de diseño, que podrían haber utilizado alguna variable global para cada uno de estos subsistemas.
2.Una de estas variables utilizadas por el subsistema de control de vuelo podrían haber sido sobrescritos por el módulo de Azafata.
Comentarios
Publicar un comentario