Las cinco etapas de ingeniería del software

¿ Es necesaria la ingeniería del software ?

Ingenieria del software
Desafortunadamente he visto muchos proyectos de software fallar estrepitosamente por no seguir ninguna metodología. Con muy buenas intenciones se empieza rápidamente a construir con sólo una idea aproximada de lo que se quiere desarrollar y con un plan aún más impreciso de cómo hacerlo. Aplicar las etapas de la ingeniería del software acostumbra ser una buena idea que te permite estructurar el producto y enfocar su construcción con éxito.

La ingeniería del software es el proceso formal de desarrollo de software en el que las necesidades del usuario se traducen en requerimientos, estos se transforman en diseño que se implementa en código que se prueba, documenta y se certifica para su uso operativo. Según la definición del IEEE la ingeniería del software se define como «(1) la aplicación de un método sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, esto es, la aplicación de la ingeniería al software» y «(2) el estudio de los métodos de (1)»

El proceso requiere una metodología con 5 etapas:

  1.  Análisis de requerimientos: Se extraen los requisitos del producto de software. En esta etapa la habilidad y experiencia en la ingeniería del software es crítica para reconocer requisitos incompletos, ambiguos o contradictorios. Usualmente el cliente/usuario tiene una visión incompleta/inexacta de lo que necesita y es necesario ayudarle para obtener la visión completa de los requerimientos.  El contenido de comunicación en esta etapa es muy intenso ya que el objetivo es eliminar la ambigüedad en la medida de lo posible.
  2. Especificación: Es la tarea de describir detalladamente el software a ser escrito, de una forma rigurosa. Se describe el comportamiento esperado del software y su interacción con los usuarios y/o otros sistemas.
  3. Diseño y arquitectura: Determinar como funcionará de forma general sin entrar en detalles incorporando consideraciones de la implementación tecnológica, como el hardware, la red, etc.  Consiste en el diseño de los componentes del sistema que dan respuesta a las funcionalidades descritas en la segunda etapa también conocidas como las entidades de negocio. Generalmente se realiza en base a diagramas que permitan describir las interacciones entre las entidades y su secuenciado.
  4. Programación: Se traduce el diseño a código. Es la parte más obvia del trabajo de ingeniería de software y la primera en que se obtienen resultados «tangibles». No necesariamente es la etapa más larga ni la más compleja aunque una especificación o diseño incompletos/ambiguos pueden exigir que, tareas propias de las etapas anteriores se tengan que realizarse en esta.
  5. Prueba: Consiste en comprobar que el software responda/realice correctamente las tareas indicadas en la especificación. Es una buena praxis realizar pruebas a distintos niveles (por ejemplo primero a nivel unitario y después de forma integrada de cada componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas entre los programadores o realizadas por un área de test independiente).
  6. Documentación: Realización del manual de usuario, y posiblemente un manual técnico con el propósito de mantenimiento futuro y ampliaciones al sistema. Las tareas de esta etapa se inician ya en el primera fase pero sólo finalizan una vez terminadas las pruebas.
  7. Mantenimiento: En esta etapa se realizan un mantenimiento correctivo (resolver errores) y un mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos requisitos).

Los más atentos habéis contado 7 en lugar de 5. No es un error. La sexta etapa, documentar, se tiene que llevar a cabo absolutamente en todas y aunque no es una etapa propiamente dicha pero es tan importante que debe ser mencionada explícitamente.

Por último la etapa del mantenimiento, sobretodo para ampliar el sistema con nuevas funciones, debe tener las «sub-etapas» 1 a 5 si se quiere abordar con garantías.

¿ Qué opinas ? ¿ Es posible desarrollar con garantías sin seguir estas etapas ?

6 Responses to Las cinco etapas de ingeniería del software

  1. Josep M 07/09/2014 at 20:40 #

    molt adequat, cinc etapes, o són set?

    • Xavi 07/10/2014 at 20:42 #

      Estrictament parlant 5.
      Ara bé si no cuides la documentació en totes tindràs molts maldecaps, en la construicció i en el manteniment del sistema.

  2. Jenny 07/10/2014 at 19:23 #

    DE TODOS MODOS SON DEMASIADOS PASOS 🙂

    • Xavi 07/10/2014 at 20:38 #

      No te digo que no! Ojalá fueran menos. 😉

      Siempre se puede hacer en bucle del tipo:
      «Cuéntame lo que quieres, construiré lo que entienda y en la revisión de la entrega descubriremos lo que en realidad necesitabas y volveremos a empezar«,
      que también consigue resultados. Eso si, este enfoque no es ingeniería del software.

      Otra cuestión es si es necesario (o conveniente) aplicar la ingeniería del software en todos los proyectos…

      • juana2013 01/27/2016 at 13:17 #

        Xavi, no es necesario realizar ingeniería del software en todos los proyectos, eso es subjetivo. Por ejemplo para un proyecto pequeño en el que queda claro las 3 cosas que quiere el cliente no hace falta aplicar ingeniería del software.

  3. Gandalf 01/31/2017 at 15:34 #

    Es muy bueno tener esa filosofía de trabajo porque asegura que al menos se escapen menos detalles y se loghre mejor efectividad, pero creo que en proyectos pequeños no es tan necesario, y sobre todo, cuando el cliente lo tiene claro… y nostros el conocimiento que hace falta…

Deja un comentario