Skip to content

Fases de la ingeniería de software

software
Fases de la ingeniería de software
Desafortunadamente se ha visto muchos proyectos de software fracasar miserablemente porque no siguieron ninguna metodología. Con muy buenas intenciones se empieza a construir rápidamente con sólo una idea aproximada de lo que se quiere desarrollar y con un plan aún más vago de cómo hacerlo. Aplicar las etapas de la ingeniería de software suele ser una buena idea que te permite estructurar el producto y enfocar su construcción con éxito

Fases de la ingeniería de software

La ingeniería de programas informáticos es el proceso formal de desarrollo de programas informáticos en el que las necesidades de los usuarios se traducen en requisitos, éstos se transforman en un diseño que se aplica en un código que se prueba, documenta y certifica para su uso operacional.

El proceso requiere una metodología de cinco pasos:

  • Análisis de los requisitos: Se extraen los requisitos del producto de software. En esta etapa, la habilidad y la experiencia en ingeniería de software es fundamental para reconocer los requisitos incompletos, ambiguos o contradictorios. Por lo general, el cliente/usuario tiene una visión incompleta/inexacta de lo que necesita y es necesario ayudarle a obtener la visión completa de los requisitos. El contenido de la comunicación en esta etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la medida de lo posible.
  • Especificación: Es la tarea de describir en detalle el software que se va a escribir, de forma rigurosa. Describe el comportamiento esperado del software y su interacción con los usuarios y/u otros sistemas.
  • Diseño y arquitectura: Determinar cómo funcionará de manera general sin entrar en detalles, incorporando consideraciones de implementación tecnológica, como el hardware, la red, etc. Consiste en el diseño de los componentes del sistema que responden a las funcionalidades descritas en la segunda etapa, también conocidas como entidades empresariales. Generalmente se realiza en base a diagramas que permiten describir las interacciones entre las entidades y su secuenciación.
  • Programación: El diseño se traduce en código. Es la parte más obvia del trabajo de ingeniería de software y la primera en la que se obtienen resultados “tangibles”. No es necesariamente la etapa más larga ni la más compleja, aunque una especificación o diseño incompleto/ambiguo puede requerir que las tareas de las etapas anteriores se lleven a cabo en ésta.
  • Prueba: Consiste en comprobar que el programa informático responde correctamente / realiza las tareas indicadas en la especificación. Es una buena práctica realizar pruebas a diferentes niveles (por ejemplo, primero a nivel de unidad y luego de forma integrada para cada componente) y por equipos diferentes al de desarrollo (pruebas cruzadas entre programadores o realizadas por un área de pruebas independiente).
  • Documentación: Elaboración del manual de usuario y, posiblemente, de un manual técnico para el mantenimiento y las futuras ampliaciones del sistema. Las tareas de esta etapa comienzan ya en la primera fase, pero sólo terminan una vez terminadas las pruebas.
  • Mantenimiento: En esta etapa se realiza un mantenimiento correctivo (para solucionar errores) y un mantenimiento evolutivo (para mejorar las funcionalidades y/o dar respuesta a nuevos requerimientos).

Etapas de la ingeniería de software

  • Análisis de los requisitos: La extracción de los requisitos de un producto de software es el primer paso para crearlo. Mientras que los clientes piensan que saben lo que el software tiene que hacer, se necesita habilidad y experiencia en ingeniería de software para reconocer los requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de los requisitos con el cliente está plasmado en el documento de la ERS, la Especificación de los Requisitos del Sistema, cuya estructura puede ser definida por varios estándares, como el CMM-I. Asimismo, se define un diagrama de Entidad/Relación, en el que se muestran las principales entidades que participarán en el desarrollo del software. La captura, el análisis y la especificación de los requisitos (incluidas las pruebas de los mismos), es una parte crucial; el logro de los objetivos finales depende en gran medida de esta etapa. Se han elaborado modelos y diversos procesos de trabajo para estos fines. Aunque todavía no está formalizado, ya estamos hablando de la Ingeniería de Requisitos. La norma IEEE Std. 830-1998 estandariza la creación de la Especificación de Requisitos de Software.
  • Diseño y arquitectura: Se refiere a determinar cómo funcionará en general sin entrar en detalles. Consiste en incorporar consideraciones de implementación tecnológica, como el hardware, la red, etc. Se definen los casos de uso para cubrir las funciones que el sistema realizará, y las entidades definidas en el análisis de requerimientos se transforman 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 parte más larga. La complejidad y la duración de esta etapa está íntimamente ligada a los lenguajes de programación utilizados.
  • Prueba: Consiste en comprobar que el software realiza correctamente las tareas indicadas en la especificación. Una técnica de prueba consiste en probar cada módulo de software por separado, y luego probarlo exhaustivamente, para alcanzar el objetivo. Se considera una buena práctica que las pruebas sean realizadas por alguien que no sea el desarrollador que lo programó, idealmente un área de pruebas; sin embargo, el programador debe hacer sus propias pruebas. En general hay dos formas principales de organizar un área de pruebas, la primera es que está compuesta por personal inexperto que no conoce el tema de las pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos sean tan claros que cualquiera pueda entenderlos y que el software haga las cosas como se describen. El segundo enfoque consiste en contar con un área de pruebas compuesta por programadores experimentados, personas que saben sin más indicación en qué condiciones puede fallar una aplicación y que pueden prestar atención a detalles que el personal inexperto no consideraría.
  • Documentación: Todo lo relativo a la documentación del desarrollo del software en sí y la gestión del proyecto, incluyendo la modelización (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc.; todo ello con el fin de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones del sistema.
  • Mantenimiento: Mantener y mejorar el software para hacer frente a los errores descubiertos y a los nuevos requisitos Esto puede llevar incluso más tiempo que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con el mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores. La mayor parte consiste en extender el sistema para hacer nuevas cosas. Del mismo modo, cerca de 2/3 de todo el trabajo de ingeniería civil, arquitectura y construcción es mantenimiento.

Metodologías de desarrollo de software

La metodología de desarrollo de programas informáticos se refiere a un marco que se utiliza para estructurar, planificar y controlar el proceso de desarrollo de los sistemas de información.

A lo largo del tiempo se han desarrollado un gran número de métodos que difieren en sus puntos fuertes y débiles.

El marco de la metodología de desarrollo de programas informáticos consiste en

  • Una filosofía de desarrollo de software con un enfoque en el proceso de desarrollo de software
  • Herramientas, modelos y métodos para ayudar al proceso de desarrollo de programas informáticos
  • Estos marcos suelen estar vinculados a algún tipo de organización, que también desarrolla, apoya el uso y promueve la metodología.