Parte 1 - Software e Ingeniería de software
Definición de software
Cuando hablamos de software hacemos referencia a aquellos programas de computadora y también todos aquellos documentos asociados y configuraciones de datos, para que dichos programas funcionen correctamente.
Sommerville: Cuando se habla de software en el campo de la ingeniería de software, además de refirse a los programas en sí, también lo hace a toda la documentación asociada y los datos de configuración requeridos para hacer que estos programas operen de manera correcta.
Pressman: El software de computadora es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo. Incluye programas que se ejecutan en una computadora de cualquier tamaño y arquitectura, contenido que se presenta a medida de que se ejecutan los programas de cómputo e información descriptiva tanto en una copia dura como en formatos virtuales que engloban virtualmente a cualesquiera medios electrónicos
Productos genéricos y personalizados
Los ingenieros de software están interesados por el desarrollo de productos de software (es decir, software que puede venderse a un cliente). Existen dos tipos de productos de software:
- Productos genéricos: Consisten en sistemas independientes que se producen por una organización de desarrollo y se venden en el mercado abierto a cualquier cliente que desee comprarlos. Ejemplos de este tipo de productos incluyen software para PC, como bases de datos, procesadores de texto, paquetes de dibujo y herramientas de administración de proyectos. También abarcan las llamadas aplicaciones verticales diseñadas para cierto propósito específico, tales como sistemas de información de librería, sistemas de contabilidad o sistemas para mantener registros dentales.
- Productos personalizados (o a la medida): Son sistemas que están destinados para un cliente en particular. Un contratista de software desarrolla el programa especialmente para dicho cliente. Ejemplos de este tipo de software incluyen los sistemas de control para dispositivos electrónicos, sistemas escritos para apoyar cierto proceso empresarial y los sistemas de control de tráfico aéreo
Definición de Ingeniería de software
Según IEEE: Es la aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, operación y mantenimiento del software
Según Bauer: Es el establecimiento y uso de principios de ingeniería para desarrollar en forma económica software que sea confiable y que funcione de manera eficiente sobre
máquinas reales.
La ingeniería de software provee métodos, técnicas y herramientas para llevar a cabo el proceso de producción del software, en forma eficiente y en los plazos adecuados, obteniendo un software de calidad
Actividades genéricas de la ingeniería de software
La estructura del proceso establece el fundamento para el proceso completo de la ingeniería
de software por medio de la identificación de un número pequeño de actividades estructurales
que sean aplicables a todos los proyectos de software, sin importar su tamaño o complejidad.
Una estructura de proceso general para la ingeniería de software consta de cinco actividades:
- Comunicación: Antes de que comience cualquier trabajo técnico, tiene importancia crítica comunicarse y colaborar con el cliente (y con otros participantes). Se busca entender
los objetivos de los participantes respecto del proyecto, y reunir los requerimientos que
ayuden a definir las características y funciones del software.
- Planeación: Cualquier viaje complicado se simplifica si existe un mapa. Un proyecto de
software es un viaje difícil, y la actividad de planeación crea un “mapa” que guía al equipo
mientras viaja. El mapa -llamado plan del proyecto de software- define el trabajo de ingeniería de software al describir las tareas técnicas por realizar, los riesgos probables, los recursos que se requieren, los productos del trabajo que se obtendrán y una programación de las actividades.
- Modelado: Ya sea usted diseñador de paisaje, constructor de puentes, ingeniero aeronáutico, carpintero o arquitecto, a diario trabaja con modelos. Crea un “bosquejo” del objeto por
hacer a fin de entender el panorama general -cómo se verá arquitectónicamente, cómo
ajustan entre sí las partes constituyentes y muchas características más-. Si se requiere, refina el bosquejo con más y más detalles en un esfuerzo por comprender mejor el problema y
cómo resolverlo. Un ingeniero de software hace lo mismo al crear modelos a fin de entender
mejor los requerimientos del software y el diseño que los satisfará.
- Construcción: Esta actividad combina la generación de código (ya sea manual o automatizada) y las pruebas que se requieren para descubrir errores en éste.
- Despliegue: El software (como entidad completa o como un incremento parcialmente
terminado) se entrega al consumidor que lo evalúa y que le da retroalimentación, misma
que se basa en dicha evaluación