Desarrollo de Software: Metodologías, Ciclo de Vida y Factibilidad

Factibilidad en Proyectos de Software

Factibilidad Operativa

La factibilidad operativa evalúa si el nuevo sistema operará eficientemente y será utilizado una vez instalado. Debe proporcionar información sobre el conocimiento de los usuarios respecto al sistema a desarrollar, la cultura empresarial, los procedimientos y sus responsables.

Se debe establecer:

  • El procedimiento que llevan a cabo las personas encargadas.
  • Identificar a los responsables y sus funciones.
  • Identificar el conocimiento que tienen las personas sobre el uso de sistemas de información.
  • Establecer el nivel de compromiso de las personas con la incorporación de un sistema de información.

Factibilidad Técnica

La factibilidad técnica determina si los recursos actuales son adecuados o si se deben adquirir nuevos recursos para desarrollar la solución. El análisis de la situación actual debe proporcionar información sobre el hardware, software y recurso humano con que cuenta la empresa actualmente.

Se debe establecer:

  • Si la empresa posee computadores y cuáles son sus características.
  • Si tiene impresora.
  • Si tiene conexión a internet y sus características.
  • Si tiene una red implementada.
  • Qué sistema operativo usa.
  • Qué software utiliza para el desarrollo de su trabajo.

Factibilidad Legal

La factibilidad legal considera las implicaciones legales que surgen de normas, leyes o cláusulas contractuales. Debe considerar licencias del software que se emplea, normativas que involucran el proceso o procedimiento, y reglas de negocio involucradas.

Se debe establecer:

  • Las licencias de los software que utiliza.
  • Normas de negocio de la empresa.
  • Normas nacionales e internacionales.
  • Leyes nacionales.
  • Normativas de calidad.

Factibilidad Económica

La factibilidad económica determina los costos y beneficios asociados a la alternativa de solución propuesta. Establece si se cuenta con los recursos económicos y financieros para llevar a cabo la solución. Se puede considerar como la factibilidad más importante porque justifica la viabilidad del proyecto.

Se debe establecer:

  • Costos de compra de software y/o hardware de aplicación.
  • Costos de modificaciones del software para adaptación.
  • Costos del personal de desarrollo.
  • Costos de la formación del personal en el uso de la aplicación.
  • Costos de preparación de documentación.
  • Costos de gestión del desarrollo de la alternativa de solución.

Factibilidad Implementativa

La factibilidad implementativa determina los recursos con que debe contar la empresa para la instalación y funcionamiento del sistema informático que se desea instalar.

Se debe establecer:

  • Las configuraciones que el hardware debe poseer.
  • Las configuraciones que el software debe poseer.
  • Las especificaciones mínimas a considerar.
  • Medidas de seguridad.
  • Tipo de conexiones.
  • Requerimientos mínimos de servicios externos.

Ciclo de Vida del Desarrollo de Software

El desarrollo de un sistema de información atraviesa una serie de etapas que van desde el reconocimiento de una necesidad hasta la operación del sistema. La cantidad y orden de las etapas puede variar de acuerdo a los distintos enfoques metodológicos.

Etapas del Ciclo de Vida

  1. Análisis
    • Análisis de la situación actual.
    • Técnicas de recolección de datos.
    • Análisis de datos recolectados.
    • Requerimientos identificados.
    • Generación de idea de desarrollo.
    • Documentación.
  2. Diseño
    • Descripción detallada del sistema.
    • Diseño conceptual de la solución.
    • Aplicación de la prueba.
    • Documentación.
  3. Desarrollo
    • Establecer estándares de programación.
    • Aplicación de pruebas.
    • Control de versiones.
    • Documentación.
  4. Prueba
    • Aplicación de prueba.
    • Informe de resultado de pruebas.
    • Documentación de pruebas.
  5. Implantación
    • Especificaciones técnicas de instalación.
    • Planes de contingencia.
    • Plan de revisión.
    • Informe de instalación.
    • Carta de aceptación.
  6. Mantenimiento
    • Mantenimiento correctivo: Cambiar el software para corregir errores.
    • Mantenimiento adaptativo: Cambiar el software para adaptarlo a su entorno.
    • Mantenimiento perfectivo: Cambiar el software para mejorarlo y obtener nuevos beneficios.
    • Mantenimiento preventivo: Se suele llevar a cabo un proceso de reingeniería para producir un nuevo software con la misma funcionalidad pero de mejor calidad.

Metodologías de Desarrollo de Software

El proceso de desarrollo de un software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo.

Metodologías Duras o Clásicas

1. Modelo Cascada

Es el primer modelo de desarrollo. Sugiere un enfoque sistemático, que se inicia con la especificación de requerimientos, planeación, modelado, construcción y despliegue para terminar con el soporte del software terminado.

Características:

  • Requerimientos bien definidos o mejoras a un sistema existente.
  • Es muy raro que los proyectos reales sigan un flujo secuencial.
  • Es difícil para el cliente establecer todos los requisitos de manera explícita.
  • El cliente debe tener paciencia.

Ventajas:

  • Los modelos lineales son más simples de ser implementados.
  • La documentación se produce en cada etapa del desarrollo.

Desventajas:

  • No se puede volver atrás.
  • Si el cliente no es muy claro, los futuros cambios pueden causar confusión.
  • El cliente recibe el software hasta después de terminada la etapa final de desarrollo.

2. Modelo Prototipo

Identificar los requerimientos conocidos – Desarrollar modelo que funcione – Utilizar el prototipo – Revisar el prototipo – Si no está terminado el prototipo se vuelve a desarrollar el modelo – Si está terminado el prototipo se avanza.

Características:

  • El cliente ve lo que parece ser una versión funcional del software, pero solo es un prototipo.
  • La gestión del desarrollo es muy lenta.
  • Se establece desde el comienzo que solo se hará un prototipo y no el producto final.

Ventajas:

  • Permite desarrollar un sistema a partir de requisitos poco claros.
  • El usuario participa más activamente.
  • Se reduce el riesgo o incertidumbre sobre la implementación del software.
  • El usuario termina conociendo mejor el sistema antes de implementarlo.

Desventajas:

  • El usuario pierde tiempo participando activamente de un prototipo que no será el producto final.

3. Modelo Espiral

Combina la naturaleza iterativa de la construcción de prototipos con los aspectos controlados y sistemáticos del modelo cascada.

Características:

  • Hay riesgos técnicos en todas las etapas del proyecto.
  • Es un enfoque realista para el desarrollo de software y sistemas de gran escala.
  • El desarrollador y el cliente entienden y reaccionan de mejor manera ante los riesgos.

Ventajas:

  • El desarrollo repetitivo ayuda en la gestión de riesgos.
  • Es fácil estimar los costos al ir realizando prototipos en pequeños fragmentos o trozos.

Desventajas:

  • Funcionan mejor para los grandes proyectos.
  • Deben seguir el mismo protocolo.

4. Modelo Incremental

Este modelo combina elementos del modelo cascada en forma iterativa. Se centra en entregar un producto operacional con cada incremento.

Características:

  • Los primeros incrementos pueden ser implementados con menos gente.
  • Los clientes pueden comenzar a usarlo desde el primer incremento.
  • No es igual al prototipo ya que entrega un producto operacional.
  • Cada incremento debe aumentar su funcionalidad.

Ventajas:

  • Reduce el tiempo de desarrollo inicial.
  • Impacto ventajoso ante el cliente por entregas tempranas y operativas.
  • Es más sencillo acomodar cambios.

Desventajas:

  • Requiere de mucha planeación.
  • Requiere de metas claras.

5. Métrica V3

Es un modelo promovido por el Ministerio de Hacienda y Administraciones Públicas de España para sistematizar las actividades del ciclo de vida de los proyectos software en el ámbito de la administración pública.

Metodologías Ágiles

1. Scrum

Es un método con un enfoque iterativo e incremental. Genera un contexto relacional e iterativo de inspección y adaptación constante para que los involucrados vayan creando su propio proceso. Está especialmente indicado para proyectos con un rápido cambio de requisitos.

Ventajas:

  • Se pueden ir enviando entregables al cliente mientras se van atacando los objetivos más sencillos.
  • El ScrumMaster tiene el conocimiento necesario para ir delegando roles.
  • Cada persona sabe lo que tiene que hacer.
  • Se involucra a los Stakeholders (partes interesadas).

Desventajas:

  • Algunos integrantes del equipo pueden saltarse pasos.
  • Demasiadas reuniones para poco avance.
  • Es complicado cuando una persona renuncia, es complicado reemplazar ese rol.

2. XP (Programación Extrema)

Es una metodología ágil centrada en potenciar las relaciones interpersonales, promueve el trabajo en equipo. Se basa en la realimentación continua entre el cliente y el equipo de desarrollo. Es especial para requisitos imprecisos y muy cambiantes.

Ventajas:

  • Da lugar a una programación sumamente organizada.
  • Ocasiona eficiencias en el proceso de planificación y pruebas.
  • Tasa muy pequeña de errores.
  • Fomenta la comunicación entre los clientes y los desarrolladores.
  • Facilita los cambios.
  • Ahorra mucho tiempo y dinero.
  • Es la mejor para la implementación de nuevas tecnologías.

Desventajas:

  • Es recomendable solo para proyectos a corto plazo.
  • No siempre es más fácil que el desarrollo tradicional.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.