3. Ingeniería del software. Etapas

Etapas
Imagen en pixabay de IB306660 bajo licencia Creative Commons

En la práctica, los sistemas de información, también llamados sistemas informáticos (cuando parte o toda la gestión del sistema de información se realiza con ordenadores), son grandes y complejos, es decir, no son simples programas abordables por una única persona. Se hace necesario disponer de:

  • Tiempo y recursos materiales suficientes, lo que obliga a planificar previamente el trabajo a desarrollar.
  • Un equipo de informáticos especializados y jerarquizados (jefes de proyecto, analistas, programadores, etc).
  • Una serie de métodos o técnicas de resolución de problemas para desarrollar los distintos pasos a seguir en todo el proceso de desarrollo del sistema, esto es, el desarrollo de un software apropiado.

Para este cometido nace la ingeniería del software, la idea es convertir el proceso artesanal de construcción de programas informáticos en una ingeniería, para así producir software industrial en serie y de calidad.

Como cualquier rama o disciplina dentro de la Informática, la ingeniería del software ha ido evolucionando en el tiempo hasta la fecha actual. Las etapas o generaciones por las que ha ido pasando se asemejan al desarrollo de un programador desde que se inicia en el mundo de la programación hasta que se hace más o menos experto en el análisis, diseño y construcción de programas informáticos de un nivel aceptable.

.

Etapas de la ingeniería del software

En ingeniería del software se consideran cuatro etapas o generaciones claramente diferenciadas:

En la primera generación de desarrollo de software, la construcción de programas informáticos se llevaba a cabo de una forma directa, esto es, planificando a groso modo las partes de un programa sin entrar a detallar el proceso de análisis y diseño previos. Se carecía de una metodología específica y la experiencia del programador era clave en la construcción de software. Esta etapa se prolongó hasta mediados de la década de los 70.

La segunda generación nace con la idea de centrarse más en el análisis del problema para afrontar con mayor garantías la programación. Aparecen las primeras metodologías de programación estructurada. El ya clásico "divide y vencerás" es el referente para diseñar programas más legibles.

El desarrollo orientado a objetos aparece en la tercera generación como alternativa a las técnicas clásicas de programación estructurada. Ello supuso una forma distinta de representar la realidad para representar y tratar los problemas de programación a través del concepto de clase. Dicha manera de representar la realidad supuso un mayor acercamiento a la forma más natural de pensar del ser humano. El lenguaje UML (Unified Modeling Languaje) es el elegido para modelar la realidad y resolver problemas según esta filosofía.

Por último, en la cuarta generación surgen las llamadas herramientas CASE (Computer Aided Software Engineering) y los lenguajes de cuarta generación (centrados en el concepto de evento) como verdaderas herramientas para desarrollar software de una forma más rápida y eficaz, construyendo cada parte del software final según una herramienta gráfica cómoda y amigable, y automatizando el proceso de generación de código.

Objetivos

El lenguaje UML
Imagen en Wikimedia bajo licencia Creative Commons

El lenguaje UML

El lenguaje unificado de modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el Object Management Group (OMG).

Se puede aplicar en el desarrollo de software gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional, Rational Unified Process o RUP), pero no especifica en sí mismo qué metodología o proceso usar.

UML no puede compararse con la programación estructurada, pues UML significa Lenguaje Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en un requerimiento. Mientras que, programación estructurada, es una forma de programar como lo es la orientación a objetos, la programación orientada a objetos viene siendo un complemento perfecto de UML, pero no por eso se toma UML solo para lenguajes orientados a objetos.