domingo, 26 de febrero de 2012

Ingeniería del software

Ingeniería de software es aquella que ofrece métodos y técnicas para desarrollar y mantener software de calidad.

Una definición precisa aún no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los más prestigiosos autores:

  • Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
  • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
  • Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).

Metodología

Un objetivo de décadas ha sido el encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software.

Etapas del proceso

La ingeniería de software requiere llevar a cabo numerosas tareas, dentro de etapas como las siguientes:

Análisis: Técnicas de recolección de hechos. Extraer los requisitos y requerimientos de un producto de software es la primera etapa para crearlo. La captura, análisis y especificación de requerimientos (incluso pruebas de ellos), es una parte crucial; de esta etapa depende en gran medida el logro de los objetivos finales. La recolección de Hechos se realizan mediante Entrevistas, Cuestionarios, Observancia, revisión de documentos.

La especificación de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.

Diseño:

El Diseño de software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia.

Para ello se documenta utilizando diagramas, por ejemplo:

  • Diagramas de clases
  • Diagramas de base de datos
  • Diagrama de despliegue
  • Diagrama de secuencia

Desarrollo: Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Implementación: Prueba y Mantenimiento

Prueba: Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo.

Mantenimiento: Fase dedicada a mantener y mejorar el software para corregir errores descubiertos e incorporar nuevos requisitos. Una pequeña parte de este trabajo consiste eliminar errores (bugs); siendo que la mayor parte recide en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su evolución.

Métodos y filosofías de desarrollo de software

La ingeniería de software dispone de varios modelos, paradigmas y filosofías de desarrollo, en los cuales se apoya para la construcción del software, entre ellos se puede citar:

  • Modelo en cascada o Clásico (modelo tradicional)
  • Modelo de prototipos
  • Modelo en espiral
  • Desarrollo por etapas
  • Desarrollo iterativo y creciente o Iterativo e Incremental
  • RAD (Rapid Application Development)
  • Desarrollo concurrente
  • Proceso Unificado
  • RUP (Proceso Unificado de Rational)

No hay comentarios:

Publicar un comentario