La ingeniería del software es una de las disciplinas que, junto a la ingeniería de computadores, los sistemas de información y las tecnologías de información, conforman el campo de la computación como un área de conocimiento debidamente establecida. En este sentido, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) (2010) define a la ingeniería del software como “la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software; esto es, la aplicación de la ingeniería al software. Este libro es una introducción a los conceptos, fundamentos, principios, métodos y prácticas que los ingenieros de software emplean para desarrollar, operar y mantener sistemas de software que resuelvan problemas de información, conocimiento y automatización en diferentes contextos o dominios de aplicación.
¿Qué hace a este libro diferente?
Este libro representa una visión particular de los autores, que es el resultado de una amplia experiencia docente de más de treinta y cinco años en la enseñanza de asignaturas vinculadas con la ingeniería del software y de una larga experiencia profesional asociada a la capacitación, consultoría y desarrollo de soluciones informáticas para un vasto número de empresas latinoamericanas.
Esta visión enfatiza dos aspectos que son fundamentales en el aprendizaje de una disciplina. Por un lado, el libro identifica, describe y relaciona todos aquellos conceptos esenciales para comprender los fundamentos de la ingeniería del software y de sus dos procesos más relevantes: el desarrollo y el mantenimiento. Entender estos conceptos y establecer sus relaciones es una condición necesaria en todo proceso de aprendizaje. Para ello, hemos construido una ontología de dominio, es decir, una descripción o especificación de los conceptos que comúnmente usamos los ingenieros de software para desarrollar y mantener este tipo de producto tecnológico. Por otro lado, el libro enfatiza y le da la debida importancia a los procesos que distinguen a la ingeniería del software como ingeniería, para lo cual se acudió al modelado de procesos de negocios para representar el desarrollo, operación y mantenimiento de software como procesos que se dan en un contexto empresarial, es decir, como parte de las actividades que se desarrollan en organizaciones. Para modelar estos procesos, utilizamos la extensión del lenguaje UML para negocios de Eriksson y Penker (2000), la cual facilita la representación y descripción gráfica de procesos de negocio en función de sus entradas, salidas, transformaciones, medios de control y descomposición funcional.
Ver estos procesos como conjuntos de actividades propias de una empresa u organización, le da al libro un carácter práctico indispensable para aplicar los métodos aquí descritos y asociar la teoría con la práctica. De allí la aplicabilidad que tienen los contenidos de este libro para orientar tanto a estudiantes, en sus procesos de aprendizaje de esta disciplina, como a los profesionales de la computación e informática, en los aspectos metodológicos que facilitan el manejo de la complejidad inherente al desarrollo, operación y mantenimiento de software.
¿A quién está dirigido este libro?
Una primera versión fue publicada como manual en línea de la asignatura Fundamentos de Ingeniería del Software de la carrera de Ingeniería Informática de la Universidad Internacional de Valencia, España.
La edición actual es una extensión y actualización del mencionado manual al que se le ampliaron los capítulos originales y agregaron capítulos nuevos para darle a esta edición una aplicabilidad más allá del contexto universitario y facilitar su uso en ámbitos organizacionales asociados al desarrollo y mantenimiento de sistemas de software. El libro está, por lo tanto, dirigido a dos tipos de lectores:
- Estudiantes de Computación e Informática que cursen la asignatura Ingeniería del Software o cualquier otra relacionada con los procesos de desarrollo y mantenimiento de software, tales como: análisis de sistemas, diseño de software, arquitectura de software, programación y pruebas de software.
- Profesionales dedicados al desarrollo y mantenimiento de software que deseen mejorar o actualizar sus conocimientos y adquirir nuevas competencias en la aplicación de métodos, mejores prácticas y técnicas ampliamente utilizadas en la industria del software.
¿Cómo está organizado este libro?
Los cuatro primeros capítulos introducen los conceptos sobre los cuales se basa el resto del contenido y que permiten comprender mejor los conceptos y términos empleados. El primero de ellos describe la disciplina de la ingeniería de software en el contexto de las ciencias de la computación, el cuerpo de conocimientos que respalda la formación en competencias profesionales incluidas en esta disciplina y los diferentes roles que los profesionales formados pueden ejecutar; igualmente, presenta el concepto de software como producto abstracto, las reglas que rigen su evolución pasando por diferentes fases de su ciclo de vida, así como los enfoques y paradigmas que definen su ciclo de desarrollo.
Los capítulos 5, 6 y 7 se centran en los procesos técnicos de desarrolloasociados con las etapas típicas del ciclo de desarrollo de software: análisis y especificación de requisitos, diseño de software, implementación y pruebas.
Los capítulos 8 y 9 describen los procesos de gestión de proyectos y apoyo a los procesos técnicos del desarrollo de software. Primero, se introducen conceptos y procesos asociados con la calidad del producto, su relación con los procesos técnicos de desarrollo; luego se detalla el proceso de gestión que incluye la planificación, la dirección, el seguimiento, el control y el cierre de proyectos de software. Especial énfasis se hace en: (1) la organización y estructuración de los procesos, (2) la elaboración de documentos esenciales para desarrollar y mantener un sistema, (3) la gestión de recursos claves implicados en la ejecución del proyecto y (4) la interacción entre el cliente y el equipo de trabajo.
El capítulo 10 presenta de manera general el proceso de mantenimiento de productos de software llevándonos a completar la descripción de las etapas del ciclo de vida de un producto de software. Este proceso es fundamental para asegurar y prolongar la utilidad del producto de software desarrollado y se describe desde las perspectivas técnica y gerencial.
Finalmente, el capítulo 11 presenta el método Blue Watch, como ejemplo de una guía metodológica actualizada, sencilla y adaptable que integra los procesos técnicos de desarrollo y operación de productos de software con el proceso de gestión de proyectos. Este método se fundamenta en un conjunto selecto de prácticas de amplio uso en la industria del software, incluyendo las prácticas ágiles del modelo de procesos SCRUM y el enfoque unificado de desarrollo y operación conocido como DevOps.

