Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Complejidad innecesaria El avión de carga C-17 de McDonnell Douglas se excedió 500 millones
de dólares en el presupuesto a causa de problemas en su software de electrónica de aviación.
El C-17 incluía 19 computadoras a bordo, 80 microprocesadores y seis lenguajes de
programación diferentes.
Cada una de las fallas descritas antes se debió a un problema relacionado con software. En
algunos casos los desarrolladores no anticiparon situaciones que ocurren rara vez (una
persona que vive más de cien años, años bisiestos que tienen un impacto en las fechas de
caducidad). En otros casos los desarrolladores no anticiparon que el usuario haría mal uso del
sistema (la opresión de un botón, la exploración de las facilidades de depuración del envío de
correo). En otros casos las fallas del sistema resultaron por fallas de administración (entrega
tardía y con presupuesto excedido, entrega a tiempo de un sistema incorrecto, complejidad
innecesaria).
Los proyectos de desarrollo de software están sujetos a cambios constantes. Debido a que los
requerimientos son complejos, necesitan ser actualizados cuando se descubren errores y
cuando los desarrolladores tienen una mejor comprensión de la aplicación. Si el proyecto dura
muchos años, la rotación de personal es alta y requiere entrenamiento constante. El tiempo
entre los cambios tecnológicos con frecuencia es más corto que la duración del proyecto.
(Bern Bruegge, 2012)
INGENIERÍA DE SOFTWARE
Debido a lo anterior es importante que se conozcan todos los aspectos que involucran a
la Ingeniería de Software, comenzando con la definición y sus objetivos los cuales se
presentan a continuación.
El objetivo es formar a los ingenieros para que estén capacitados en la utilización de los
conocimientos tecnológicos generados por la ciencia de la computación para construir
productos de software.
Tales objetivos pueden ser fácilmente atribuibles a la ingeniería de software. Según este
criterio, los objetivos primordiales de la ingeniería de software (por lo menos algunos)
son:
Sin embargo, no todos los productos de software cumplen con estos requisitos, ya
que priorizan uno u otro dependiendo del uso que se le dará. Por ejemplo, el software
de un lavarropas no requiere priorizar la seguridad, ya que no protege ningún tipo de
información importante. (Características del Software, 2019)
INGENIERÍA DE SOFTWARE
Otras Características
El software es un elemento del sistema que es lógico, en lugar de físico. Por tanto el
software tiene unas características considerablemente distintas a las del hardware:
Cuando surgieron con fuerza las bases de datos, se le atribuyeron a ellas la solución a
todos los problemas del software. Lo mismo ocurrió con las tecnologías de lenguajes de
cuarta generación (4GL), la programación visual y la programación orientada a objeto.
Aunque los avances tecnológicos contribuyen a solucionar problemas del desarrollo de
software, es real que sólo pueden contribuir con una parte de la solución. La ingeniería
de software, y los desarrolladores, deben trabajar a un nivel más integral,
correlacionando métodos, técnicas y herramientas, y logrando soluciones globales a los
problemas del desarrollo. Los últimos años, los expertos se han dado cuenta que no
existen métodos o técnicas infalibles y que cada uno de los métodos sólo pueden ser
aplicados con alto grado de éxito en determinados tipos de problemas. Las nuevas
tendencias buscan aprovechar la experiencia que se ha obtenido y buscar nuevos tipos
de soluciones. Las nuevas soluciones implican, entre otros, nuevos criterios para la
selección de métodos, nuevas teorías de selección de requerimientos, mejores
mecanismos de control, mejores técnicas de detección y corrección de errores,
mecanismos de métricas y nuevas técnicas para el mejoramiento continuo de los
métodos y los departamentos de sistemas de las organizaciones.
INGENIERÍA DE SOFTWARE
Las técnicas requieren, cada vez más, de herramientas de apoyo cada vez más flexibles
y versátiles. Una nueva generación de herramientas CASE está gestándose paralela a la
nueva visión de ingeniería de software que se está difundiendo. La ingeniería de software
puede ofrecer ahora un entorno y una visión más global del proceso de desarrollo y los
problemas asociados a él. La ingeniería de software parece estar cada vez más cerca de
su cometido (Roa, 2015)
Análisis de requisitos
Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras
que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de
habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos,
ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en
el documento ERS, Especificación de Requerimientos del Sistema, cuya estructura puede venir
definida por varios estándares, tales como CMM-I. Asimismo, se define un diagrama de
Entidad/Relación, en el que se plasman las principales entidades que participarán en el
desarrollo del software.
Diseño y arquitectura
Se refiere a determinar cómo funcionará de forma general sin entrar en detalles. Consiste en
incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc.
Se definen los Casos de Uso para cubrir las funciones que realizará el sistema, y se transforman
las entidades definidas en el análisis de requisitos en clases de diseño, obteniendo un modelo
cercano a la programación orientada a objetos.
Programación
Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software,
pero no es necesariamente la porción más larga. La complejidad y la duración de esta etapa
está íntimamente ligada al o a los lenguajes de programación utilizados.
INGENIERÍA DE SOFTWARE
Pruebas
Documentación
Mantenimiento
Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto
puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de
toda la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de
este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el
sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniería
civil, arquitectura y trabajo de construcción es dar mantenimiento.
INGENIERÍA DE SOFTWARE
Referencias: