Fundamentos de la Ingeniería de Software: Conceptos, Costos y Calidad
Clasificado en Diseño e Ingeniería
Escrito el en español con un tamaño de 5,83 KB
Conceptos Fundamentales del Software
Definición de Software
El software se refiere a los programas computacionales y su documentación asociada. Los productos de software pueden ser desarrollados para un cliente particular o para un mercado generalizado. Estos productos se clasifican en:
- Genéricos: Desarrollados para ser vendidos a un grupo de clientes diferentes.
- Personalizados: Desarrollados para un cliente determinado, de acuerdo con sus necesidades y especificaciones.
Ingeniería de Software: Disciplina Clave
La Ingeniería de Software es la disciplina que comprende todos los aspectos de la producción de software. Los ingenieros de software deben adoptar enfoques sistemáticos y organizados para su trabajo, utilizando herramientas y técnicas apropiadas para:
- El problema a resolver.
- Las restricciones de desarrollo.
- Los recursos disponibles.
Economía del Software y su Impacto
Las economías de todas las naciones desarrolladas son cada vez más dependientes del software. Cada vez más sistemas son controlados por software. La Ingeniería de Software se ocupa de teorías, métodos y herramientas para el desarrollo profesional de software. El gasto en Ingeniería de Software representa una fracción importante del PIB en los países desarrollados.
Desafíos y Complejidad en el Desarrollo de Software
La Complejidad en el Desarrollo
Un enfoque informal en el desarrollo de software puede llevar a:
- Retrasos en el tiempo de entrega.
- Costos superiores a lo presupuestado.
- Dificultad de mantenimiento.
- Rendimiento deficiente.
- Incluso a proyectos irrealizables.
Todo esto tiene un impacto significativo en las aplicaciones.
Impacto de la Complejidad en las Aplicaciones
La complejidad puede afectar la capacidad de las aplicaciones para:
- Permitir una interacción natural con humanos.
- Desarrollar sistemas expertos.
- Imitar capacidades humanas típicas.
- Crear software con capacidad de autoaprendizaje.
La Inteligencia Artificial y Nuevas Aplicaciones
La Inteligencia Artificial (IA) habilita nuevos tipos de aplicaciones, permitiendo:
- Hacer las aplicaciones existentes más conversacionales y fluidas.
- Mejorar la comprensión, el razonamiento y la toma de decisiones mediante una combinación adecuada de datos y ontologías.
- Construir software que va más allá de las aplicaciones tradicionales; estas darán paso a los bots y agentes inteligentes.
Gestión de Costos y Procesos en Software
Costos Asociados al Software
Los costos del software a menudo dominan los costos del sistema. Los costos de mantenimiento del software son a veces mayores que los costos de desarrollo. Para sistemas de larga vida útil, los costos de mantenimiento pueden ser varias veces los costos de desarrollo. A la Ingeniería de Software le compete lograr un desarrollo de software efectivo en relación con los costos.
El Proceso de Desarrollo de Software
El proceso de software es un conjunto de actividades cuya meta es el desarrollo o la evolución del software. Existen cuatro actividades fundamentales:
- Especificación: Define qué debe hacer el sistema y cuáles son sus restricciones de desarrollo.
- Desarrollo: Incluye el diseño y la programación de un sistema de software.
- Validación: Verificación de que el software cumple con los deseos del cliente.
- Evolución: Realización de cambios en el software en respuesta a demandas cambiantes.
Costos Específicos de la Ingeniería de Software
Aproximadamente el 60% de los costos corresponden al desarrollo, y el 40% a las pruebas. Para el software personalizado, los costos de evolución a menudo exceden los de desarrollo. Los costos varían dependiendo del tipo de sistema a desarrollar y los requisitos de atributos del sistema, tales como rendimiento y confiabilidad. La distribución de costos depende del modelo de proceso utilizado.
Calidad y Evolución del Software
Atributos de un Software de Calidad
El software debería brindar la funcionalidad y el rendimiento requeridos por el usuario. La norma ISO 9126 (Calidad del Producto Software) fue un estándar internacional para la evaluación de la calidad del software. Fue reemplazado en 2005 por el conjunto de normas SQuaRE, ISO 25000:2014, que desarrolla los mismos conceptos y también reemplaza a la ISO/IEC 14598 (Evaluación del Producto Software).
Desafíos Actuales de la Ingeniería de Software
La Ingeniería de Software enfrenta varios desafíos importantes:
- Sistemas Heredados: Sistemas antiguos pero valiosos que deben ser mantenidos y actualizados.
- Heterogeneidad: Los sistemas están distribuidos e incluyen diversos hardware y software.
- Tiempo de Entrega: Presión para entregar el software más rápido.
- Confianza: Demostrar que el software puede ser confiable para los usuarios.
- Técnicas Inteligentes: Son el corazón de muchas aplicaciones de software modernas.
Modelos de Proceso de Software
Un modelo de proceso de software es una representación abstracta de un proceso de software, presentada desde una perspectiva específica. Algunos modelos generales de procesos incluyen:
- Cascada (Waterfall)
- Desarrollo iterativo
- Transformación formal
- Integración desde componentes reutilizables