Skip to main content
Desarrollo del Software

Desarrollo del Software

Haz clic en cada sección para expandir la información detallada.

Ciclo de Vida del Software

El desarrollo de software es un proceso complejo que requiere un marco de referencia común para todos los participantes. Este proceso se conceptualiza a través del ciclo de vida del software, que abarca desde la definición de requisitos hasta la finalización de su uso.

Modelos de Ciclo de Vida

Los modelos de ciclo de vida del software proporcionan una aproximación lógica. Los más conocidos son:

Modelo en Cascada

Se caracteriza por su secuencialidad. Cada fase debe completarse antes de pasar a la siguiente. Ha sido criticado por su rigidez y la detección tardía de errores, aunque se han propuesto mejoras como la participación activa del usuario y la reutilización de código.

Modelo en Espiral

Destaca por su énfasis en la gestión de riesgos. Cada ciclo incluye una revisión exhaustiva con las partes interesadas del proyecto para identificar y gestionar riesgos, lo que permite una especificación más detallada de los elementos de alto riesgo.

Fases Principales del Desarrollo
  • Planificación: Se define el alcance, métodos, calendario y recursos del proyecto.
  • Especificación de Requisitos: Se recogen las necesidades del usuario, divididas en funcionales (lo que el sistema debe hacer) y no funcionales (características del sistema).
  • Diseño (Análisis Orgánico): Se crea la solución a partir de las especificaciones, diseñando estructuras de datos, arquitectura, interfaz, etc.
  • Codificación (Construcción): Se genera el código fuente del software.
  • Pruebas e Integración: Se verifica la calidad del software a través de pruebas unitarias, de integración, de sistema, de implantación y de aceptación.
  • Implantación y Aceptación: Se busca la aprobación final del sistema y su puesta en producción.
  • Mantenimiento: Se realizan actividades para obtener nuevas versiones o corregir problemas.
Documentación

La documentación es un producto esencial en todas las fases del ciclo de vida del software, ayudando a construir el sistema con éxito y facilitando el mantenimiento.

Ingeniería de Requerimientos y Análisis Estructurado

La Ingeniería de Requerimientos (IR) se enfoca en definir lo que se desea producir, generando especificaciones correctas y claras. El análisis estructurado es un método para normalizar y estructurar este proceso, utilizando:

  • Símbolos gráficos: Íconos y convenciones para describir componentes.
  • Diagramas de Flujo de Datos (DFD): Muestran la relación entre procesos y datos.
  • Diccionario de Datos (DD): Contiene las características lógicas de los datos.
  • Diagrama Entidad-Relación (E/R): Describe la relación entre entidades del sistema.
Diseño de Bases de Datos

El diseño de bases de datos pasa por varias etapas:

Diseño Lógico

Traduce el modelo conceptual a un modelo lógico, aplicando la normalización para evitar redundancias y anomalías en la actualización de datos.

Diseño Físico

Se orienta a optimizar el funcionamiento de la base de datos, incluyendo la selección de organizaciones de almacenamiento y la desnormalización controlada.

Gestión de la Concurrencia

Es crucial en entornos multiusuario para mantener la integridad de los datos, resolviendo problemas como la lectura sucia y la lectura fantasma.

Estructuras de Datos y Algoritmos

Se utilizan Tipos Abstractos de Datos (TAD) para modelar la realidad, incluyendo:

  • Listas: Estructuras de datos ordenadas.
  • Árboles: TADs jerárquicos.
  • Grafos: Estructuras más generales que representan redes.

También se emplean algoritmos de ordenación y búsqueda.

Tipos de Software
  • Software de sistema: Gestiona y controla el hardware del ordenador.
  • Software de aplicación: Diseñado para tareas específicas. Puede ser:
    • Propietario: Código fuente cerrado.
    • De código abierto: Código fuente accesible públicamente.
  • Software en la nube (SaaS): Alojado en servidores de terceros.
Tendencias Actuales en Software
  • Desarrollo y automatización impulsados por IA.
  • Plataformas Low-Code y No-Code: Hacen la creación de software accesible a un público más amplio, permitiendo prototipado e implementación rápida.
  • Desarrollo híbrido y multiplataforma.
  • Big Data: Gestión y análisis de grandes volúmenes de datos.
  • Minería de Datos (MD): Descubrimiento de patrones en bases de datos.
  • OLAP: Sistemas para el análisis multidimensional de datos.
Seguridad en el Desarrollo de Aplicaciones

La seguridad es una necesidad básica para protegerse de ciberamenazas. Implica incorporar requisitos de seguridad desde el diseño, verificar parámetros de entrada, usar herramientas de escaneo y realizar pruebas de seguridad manuales.