La Ingeniería del Software

Enviado por Javi y clasificado en Informática

Escrito el en español con un tamaño de 8,4 KB

La Ingeniería del Software es una disciplina que integra métodos, herramientas y procedimientos para el desarrollo del software, de manera que se produzcan programas de calidad, desarrollados a tiempo, documentados y dentro de un presupuesto.

Gestión de la calidad del Software

Los elementos que forman parte de la calidad del software son:

  • Las metodologías que controlan todo el proceso y permiten analizarlo y mejorarlo
  • Herramientas y técnicas, como casos de uso o diagramas UML
  • Las personas, son los elementos clave como creadores y ejecutores de Software
  • Las medidas que nos permiten evaluar el estado actual de desarrollo y mejorar los fallos.

Aspectos de la calidad

  • Interna: medible a partir de características internas, como el código fuente.
  • Externa: medible según el comportamiento del producto.
  • En uso: observada por el usuario con su utilización.

Propiedades del software de calidad

  • Mantenible: Debe escribir de forma que pueda evolucionar para satisfacer nuevas necesidades.
  • Confiable: el software debe ser fiable, seguro, sin fallos que puedan causar daños físicos o económicos.
  • Eficiente: realiza un uso adecuado de los recursos.
  • Usable: debe ser fácil de usar, con interfaz y documentación adecuadas.

Procesos y modelos del software

Un proceso de software es un conjunto de actividades para desarrollar, mantener y gestionar la producción del software.

La calidad de un producto está determinada en gran medida por la calidad de los procesos empleados en su desarrollo y mantenimiento.

Un modelo de procesos es una colección estructurada de prácticas que han demostrado ser eficaces. Dicen QUÉ hacer, como CÓMO hacerlo.

CMMI

Es un modelo para la mejora y evaluación de procesos que proporciona los elementos esenciales para llegar a procesos más eficaces. Se compone de varios niveles, según el grado de madurez en los procesos de desarrollo:

  • Inicial: no hay control sobre el estado del proyecto, el desarrollo es opaco.
  • Repetible: el proyecto es gestionado y controlado durante el desarrollo del mismo.
  • Definido: además de ser un proceso gestionado se ajusta a la política de procesos que existe en la organización.
  • Cuantitativamente gestionado: además de ser un proceso definido se controla utilizando técnicas cuantitativas.
  • Optimizando: de forma sistemática se revisa y modifica o cambia para adaptarlo a los objetivos del negocio. Mejora continua.

Algunos principios del software

  • Abstracción: olvidar aspectos irrelevantes, centrarse en la funcionalidad.
  • Encapsulamiento: ocultar los detalles que no afectan a otros módulos.
  • Modularidad: división de la solución en módulos independientes.
  • Localización: los elementos similares o relacionados deben estar agrupados.
  • Uniformidad: los módulos deben tener una notación similar.
  • Completitud: deben estar desarrollados todos los aspectos del sistema
  • Validación: comprobar que el desarrollo es correcto.

Ciclo de Vida del Software

Definición o análisis: se planifica el proyecto, se analizan su viabilidad y riesgos y se gestionan los requisitos que éste debe tener.

Desarrollo: se diseñan las estructuras de datos y la interfaz, se codifica y prueba el sistema.

Mantenimiento: se corrigen errores, añaden nuevos requisitos y funcionalidades.

Tipos de ciclos de vida

En cascada: se pasa de una fase a otra de manera secuencial, por lo que a pesar de ser simple, es poco realista y conlleva a que los errores se propaguen.

En V: se divide el desarrollo en capas que se verifican y prueban, por lo que los errores se detectan en etapas tempranas sin esperar a un producto acabado.

Manifiesto de las Metodologías ágiles

  • Se centran en el equipo de desarrollo y sus interacciones.
  • Buscan un software funcional más que una documentación extensa.
  • Una estrecha colaboración con el cliente.
  • Responder a los cambios aunque impliquen cambiar el plan.

Algunas metodologías ágiles

  • RUP
  • XP (eXtremme Programing): diseñada para entornos dinámicos y equipos pequeños.
    • Enfatiza la comunicación verbal.
    • Diseño simple.
    • Entregas pequeñas (2-3 semanas).
    • Uso de estándares.
    • Cliente muy implicado.

Requisitos del Software

Una de las principales causas que llevan un proceso al fracaso es debido a no comprender correctamente a los usuarios y sus necesidades.

Un requisito es una funcionalidad del software que el usuario necesita para resolver un problema o cumplir su objetivo.

La administración de requisitos es el descubrimiento, organización y documentación de dichas necesidades del usuario.

Técnicas de recogida de información

  • Entrevistas: su objetivo es extraer información a partir de un usuario.
  • Observación: examinar a los usuarios mientras realizan sus tareas cotidianas.
  • Taller de Requerimientos: consiste en reunir a múltiples usuarios para diseñar conjuntamente los requisitos de la aplicación.
  • Tormenta de ideas
  • Cuestionarios
  • Juegos de rol: enfrentar al equipo de desarrollo a ocupar las tareas de los usuarios.
  • Prototipos

Pasos

Paso 1: Definir el problema

El primer paso en la elaboración de un proyecto es definir, consensuar y comprender el problema.

Paso 2: Identificar a los interesados

Un interesado es cualquiera que puede verse afectado por la implementación del sistema.

Paso 3: Definir los límites del sistema

Definir la frontera entre el software que va a ser construido y otros elementos a su alrededor que interactúan con él.

Paso 4: Las necesidades

El descubrimiento de requerimientos suele comenzar estudiando las necesidades de la aplicación. Estas necesidades deben ser genéricas, dan una visión global del problema a resolver.

Paso 5: Las Características

Son las propiedades y funcionalidades específicas que debe tener un sistema, expresadas con frases sencillas y breves, obtenidas de los usuarios.

Paso 6: Los Requisitos

A partir de las características, se van precisando cada vez más, hasta llegar a los requisitos.

  • Requisitos funcionales: describen la funcionalidad que se espera del sistema, sus entradas y salidas, excepciones, etc.
  • Requisitos no funcionales: no se refieren a funciones ofrecidas al usuario, sino que son propiedades del sistema como usabilidad, fiabilidad, rendimiento, etc. (UFRM)

Entradas relacionadas: