Fundamentos de la Ingeniería de Software: Producción, Mantenimiento y Parámetros de Calidad
Clasificado en Informática
Escrito el en
español con un tamaño de 11,25 KB
Definición y Alcance de la Ingeniería de Software
Ingeniería de Software (IS): Disciplina científica y tecnológica que se preocupa de la producción sistemática y la mantención de productos de software dentro de un tiempo y presupuesto determinados.
Que sea una disciplina científica y tecnológica se refiere a que se trata de una ciencia con fundamento teórico y con aplicación de tecnologías.
La producción sistemática implica el desarrollo de productos de software siguiendo un método estructurado (algún modelo de desarrollo).
De acuerdo con esta definición, cualquier cambio realizado en un software es considerado Ingeniería de Software, lo que implica que, bajo este punto de vista, la producción y la mantención tienden a confundirse, llegando a ser sinónimos.
Diferenciación entre Producción y Mantenimiento: El Hito de la Entrega
El término Entrega separa lo que es producción de lo que es mantención. La entrega es una etapa que debe estar bien marcada en el desarrollo. Se debe establecer un Recibí Conforme, un documento firmado por el usuario y por el programador. Esto asegura que, desde ese momento en adelante, cada acción realizada sobre el software en cuestión es parte de la mantención y no del desarrollo, con los consiguientes detalles de manejo económico de la situación.
PRODUCCIÓN MANTENCIÓN
------------------> | ------------------->
ENTREGA
Tipos de Mantenimiento de Software
Los distintos tipos de mantención que se pueden realizar son:
Mantenimiento Correctivo
Se considera un error cuando no se cumple con los requerimientos planteados por el usuario y aceptados por el programador o desarrollador del sistema; es decir, no se traducen fielmente en el sistema los requerimientos o expectativas del usuario.
Se habla de requerimiento cuando este es conocido y aceptado por ambas partes. El documento formal que reúne la lista de requerimientos del usuario es un documento llamado Levantamiento, el cual es firmado por el usuario y al que se remite el programador para la construcción del sistema.
Una mantención correctiva pretende reparar errores detectados en el sistema durante su uso habitual. Si estos errores corresponden a diferencias basadas en los requerimientos del usuario, la forma en que sean reparados queda a criterio del desarrollador, especialmente en el aspecto económico, ya que este tipo de errores normalmente son de responsabilidad del desarrollador.
Otro tipo de errores son los concernientes a Hardware, otros Softwares, errores por falta de mantención de las máquinas, etc. Estos errores no son de responsabilidad del programador y su solución debe ser pactada económicamente según la cantidad de trabajo a realizar.
Mantenimiento Adaptativo
Consiste en modificaciones hechas al sistema ante cambios en el entorno.
Aspectos modificables en una mantención de este tipo serían: Sistemas Operativos, Lenguajes, Hardware, Códigos, Algoritmos, etc.
Mantenimiento Expansivo (o Evolutivo)
Una mantención de este tipo consiste en agregar nuevas funcionalidades al programa.
Entre estas nuevas funcionalidades encontramos: Funciones, procedimientos, tablas al MER (Modelo Entidad-Relación), o nuevos requerimientos del usuario.
Conceptos Clave: Datos vs. Información
Importante: Vale la pena mencionar que un software no produce información, solo produce datos.
La diferencia fundamental entre datos e información es:
UNO O MÁS DATOS SON INFORMACIÓN SI LE SIRVEN A ALGUIEN.
Características de un Producto de Software
Un buen producto de software debe ser entregado en un paquete que contenga los siguientes elementos o características:
- Software propiamente dicho.
- Calidad.
- Capacidad de ser usado por personas ajenas al desarrollo del mismo.
- Documentación.
- Costo y Precio.
- Uso objetivo (utilidad), que sirva para lo que fue hecho.
Siempre, y por definición de Ingeniería de Software, un producto está sujeto a restricciones de tiempo y de presupuesto.
Usos Comunes del Software
- Almacenar, administrar y controlar datos.
- Realizar transformaciones de forma rápida y segura.
- Control de dispositivos externos.
- Resolver problemas imitando el razonamiento humano.
- Manipular datos de forma flexible.
- Almacenar grandes volúmenes de información.
Clasificación de los Tipos de Software
- Software de Sistema (Asisten a otros softwares).
- Software de Tiempo Real (Control de dispositivos).
- Software de Gestión (Se logran primero con la organización y luego con la creación de sistemas).
- Software de Ingeniería o Científicos.
- Sistemas Empotrados (Ej. microondas).
- Sistemas de Inteligencia Artificial.
- Sharewares: Software de uso masivo y de bajo o ningún costo.
Proceso de Elaboración de un Producto de Software
Fase 1: Definición del Espacio Problema y Modelado
Primero, es necesario conocer el Espacio Problema. Este espacio nunca está bien definido y es de importancia relevante tratar de encasillarlo en límites determinados.
A partir del análisis de este espacio problema, debemos generar un Modelo del Problema a resolver. Este modelo es una representación del espacio problema, ya con las reglas y requerimientos del usuario claros. Las partes principales de un modelo para el desarrollo de un software pueden incluir:
- Modelo de Datos.
- Modelo de Procesos.
- Modelo de Flujos Administrativos, etc., dependiendo del espacio problema en cuestión.
En este modelo deben considerarse los puntos importantes en los que debemos centrar el cuidado en el desarrollo del sistema. Una referencia para esto son los parámetros de correctitud o Parámetros de Calidad.
En realidad, el concepto de calidad es bastante subjetivo. En términos computacionales, sobre todo en lo que respecta al desarrollo de sistemas para empresas, calidad significa Cliente Satisfecho.
Parámetros de Calidad del Software
Los resultados del desarrollo deben estar ligados fielmente a los objetivos y requerimientos planteados al principio del desarrollo.
Parámetro 1: Utilidad (Requisito Fundamental)
Se refiere a si el producto sirve finalmente para lo que fue hecho (si cumple con los objetivos o requerimientos del usuario). Este parámetro, así como todos los otros, depende estrictamente de cada caso en particular. En realidad, no se considera un parámetro de evaluación, ya que todo software DEBE servir para lo que fue hecho.
Los parámetros a considerar en la práctica serían:
- Eficiencia: Se refiere al grado de aprovechamiento de los recursos disponibles para el desarrollo (memoria, tiempo, administración de los dispositivos, dinero). Siempre se debe tener en cuenta la definición de Ingeniería de Software. En el desarrollo informático, el tiempo es el recurso más valioso.
- Confiabilidad: Se refiere a que los datos entregados sean correctos y que el software no falle, ya sea por error o por datos incorrectos. Deben existir condiciones preestablecidas como normales para el funcionamiento del sistema, y este parámetro se preocupa de la evaluación del software en condiciones normales de funcionamiento.
- Robustez: Se refiere a cómo reacciona el software ante condiciones anormales de funcionamiento, y está ligado de forma inversa al parámetro de la confiabilidad.
- Costeabilidad: Se refiere a todo lo que tenga que ver con el manejo de los costos de desarrollo, precio de venta del producto y restricciones en los costos de mantención del producto durante su funcionamiento habitual. Es necesario aplicar este parámetro durante el desarrollo del producto, ya que no es agradable encontrarse después con que no hay recursos económicos para la sustentación del producto. Este parámetro se utiliza en ambientes de desarrollo; si un usuario decide comprar un software de los ofrecidos en el mercado abierto normal, no es aplicable.
- Mantenibilidad: Se refiere a la capacidad del producto de software de recibir cambios o mantención, de acuerdo con las características antes mencionadas de un proceso de mantención (Corrección, Adaptación, Extensiones).
- Reusabilidad: Grado en el que se puede reutilizar este software en la construcción de otro software similar, siempre considerando el marco de la legalidad vigente en lo que se refiere a la duplicación de programas.
- Operatividad (Usabilidad): Se refiere a la facilidad de uso para los usuarios ajenos al desarrollo del sistema. Puntualmente, lo que se busca es una claridad en la interfaz de usuario.
- Compatibilidad: Se refiere a la capacidad de comunicarse internamente con otros productos o sistemas, compartir datos o tomar datos de bases de datos creadas previamente y usadas en otros softwares.
- Conectividad: Se refiere a la capacidad de conectarse con otros sistemas, pero habiendo redes de por medio; es decir, con otros sistemas en otras máquinas, incluso con otros entornos o sistemas operativos.
- Portabilidad: Capacidad de un software de ejecutarse en máquinas distintas (se refiere principalmente a la portabilidad del código fuente).
- Integridad: Capacidad del software para prevenir el manejo indebido (uso con propósitos ajenos al funcionamiento habitual del mismo). Este parámetro trabaja bajo el concepto de cortafuego (Firewall).
- Verificabilidad: Capacidad de un programa para realizarle pruebas.
Los parámetros de calidad se usan para evaluar un software existente o para considerarlos en la construcción de un nuevo programa.
No tiene sentido, y desde el punto de vista de la Ingeniería de Software es imposible e incorrecto, intentar cumplir con todos los parámetros simultáneamente.
Dificultades Típicas en el Desarrollo de Software
Las dificultades más comunes incluyen:
- Incumplimiento de los plazos.
- Baja calidad: No se cumple con alguno de los parámetros de calidad establecidos.
Las causas de estos problemas radican en las características esenciales del software:
- El software es intangible (No tiene propiedades físicas, es impredecible).
- El software es complejo por naturaleza.
- El software es inconsistente, es decir, en situaciones iguales puede entregar respuestas distintas.
- El software es variable, evoluciona, cambiando en relación a variaciones en el medio.
En general, el software es una creación intelectual, producto de la persona, y está sujeta a estas cuatro características que son propias del ser humano.