Informática para no informáticos #2

22 de enero, 2021

Continuemos con el ejemplo del post anterior: te hacen jefe de una unidad de informática en un centro de medicina, y tu primera medida es implementar un software de gestión para el centro.

Finalmente decidiste contratar una empresa de desarrollo de software.

¿Ahora qué? te preguntas…

En este post, veremos las etapas típicas de un proyecto de creación de software, de manera de que te enteres en qué consiste y qué responsabilidades tendrías tú como “cliente”.

Etapas en un proyecto de desarrollo de software

Un proyecto de desarrollo de software es parecido a otros tipos de proyectos. La diferencia central es que el resultado del proyecto es un software o programa.

Este tipo de proyectos se realizan bajo un proceso, el cual define la forma en la cual se llevará a cabo el proyecto.

Es importante que el proceso que utilice la empresa que contrates te involucre a ti y a los usuarios finales. Si no es así, ¡tu proyecto está destinado a fallar!

¿Cómo saber sí la empresa de software me involucrará a mí y a los usuarios finales?

La forma fácil es preguntar “¿Cuándo podremos tener una versión inicial?”

Si te dicen que en 1 año más, lo más probable es que utilicen un proceso en cascada, donde se intenta definir TODO el proyecto en un principio, parecido a la construcción de un edificio.

El problema es que al comienzo uno no tiene muy claro lo que quiere ni las características que debe tener el software para que sea fácil de usar por los usuarios. A lo más puedes tener ideas (hipótesis) de una posible solución. Incluso cuando todos los involucrados (proveedor, cliente y usuarios) consideren que una solución “en papel” es perfecta, la única manera de saberlo con seguridad es utilizando el software. Así que mientras antes lo probemos, mejor.

Idealmente, la empresa que contrates utilizará una “metodología ágil”. Recordando el post anterior, este tipo de metodología busca entregar software que te ayude lo más rápido posible de manera que en un par de semanas ya veas y uses la primera versión. Las siguientes versiones se hacen paso a pasito (cada 2 ó 6 semanas). El plus de estas metodologías es que buscan involucrar al cliente y los usuarios finales a lo largo de todo el proyecto.

Aquí hay una imagen que revela el “paso a pasito” que es ideal en proyectos de software:

Paso a pasito

Imagen extraida de "What is Minimum Viable (Data) Product?"

¿Cuáles son las etapas en un proyecto de software?

Independiente del proceso que la empresa utilice, existen actividades claves que son transversales y comunes. Las voy a definir como etapas secuenciales porque así es más fácil entender. Sin embargo, en la práctica son actividades que se realizan a lo largo de todo el proyecto.

Las actividades base son las siguientes:

  1. Etapa de concepción: descubrir el objetivo principal del proyecto y riesgos asociados.
  2. Etapa de elaboración: definir un software mínimo que cumpla con el objetivo del proyecto.
  3. Etapa de construcción: construir el software mínimo rápido y manteniendo la calidad. El objetivo es tener un software usable.
  4. Etapa de estabilización: el software está instalado y los usuarios ya lo están usando. Existen algunas observaciones que requieren ser atendidas (por ejemplo: errores o problemas de uso). Puede haber una fase de transición, donde el proveedor capacita a los usuarios, y una fase de garantía, donde el proveedor se asegura que el sistema no tenga problemas ni bugs.

Etapa 1: Concepción

Tú como cliente tienes un problema que requiere solución. Así que tu labor es tener más o menos una idea de cuáles son los problemas que quieres que el software te ayude a solucionar.

Es normal que no tengas conocimientos para definir una solución ni que tengas total claridad del problema de fondo.

Un buen proveedor te ayudará a descubrirlo en un proceso que los informáticos llaman “levantamiento de requisitos”.

En el levantamiento de requisitos las empresas evalúan la situación actual, te ayudan a descubrir una situación deseada (meta) y comienzan a pensar sobre posibles caminos que te permiten llegar a la meta. Puede darse el caso de que el camino NO SEA construir un software a la medida (lo que quieres), sino que sea utilizar uno ya existente (lo que realmente necesitas).

Algunas empresas cobran por esto, parecido a una consulta médica. Hay otras que lo hacen gratis como parte de su estrategia de ventas.

Al final de esta etapa, tú y el proveedor tendrán una idea si el proyecto es factible, considerando costos, plazos y el objetivo del proyecto.

¿Cómo se ve esto en la práctica? Tienes una o varias reuniones con el equipo del proveedor, donde con un screening te van haciendo preguntas para descubrir que es lo que realmente necesitas (la meta). Luego, es posible que te llegue una propuesta de trabajo que indique el paso a paso, plazos y cuánto va a costar. Esta propuesta puede involucrar crear el software o ser un ante proyecto para definir mejor el software a construir. Luego tu opción es aceptar la propuesta o rechazarla.

Etapa 2: Elaboración

La etapa de concepción es el por qué, mientras que la de elaboración es el cómo.

En esta etapa, tú y tu equipo junto a el proveedor trabajan en definir un producto mínimo viable (MVP): un producto bien chiquito que cumpla con el objetivo más importante del proyecto.

Es importante que en esta etapa se involucren todos los interesados: tú, los usuarios finales y el equipo proveedor. Muchas veces el proveedor no sabe nada sobre tu contexto, y si ellos diseñan el sistema sin tu ayuda, es probable que el resultado sea un software para informáticos y no para clínicos (¿suena familiar?).

El resultado de esta etapa puede ser bocetos, diseños o mockups del sistema. El nivel de involucramiento de los participantes de tu lado debe ser al menos de dar feedback sobre los bocetos.

Es posible que esta etapa considere solo una parte de todo el sistema, dejando para “más adelante” la definición del resto. Recuerda que estas etapas pueden irse repitiendo a lo largo del proyecto, es normal y deseable hacerlo “paso a paso” en vez de definir todo de un golpe.

Nota: Muchas veces esta etapa de “Elaboración” es lo que algunas empresas venden como “ante proyecto”.

Una vez ya están validados los bocetos, pasamos a…

Etapa 3: Construcción

En construcción el proveedor hará su “magia” y luego de un tiempo razonable (2 a 6 semanas) te entregarán un software funcional.

El software que construyan va en línea con el por qué (concepción) y con el cómo (elaboración). Pueden haber diferencias, y es posible que algo que visualizaron en un inicio no funcione muy bien en la práctica.

Durante la construcción, el equipo podrá preguntarte cosas o darte alternativas para ciertos escenarios.

Etapa 4: Estabilización

La estabilización es la etapa en la cual el software ya está instalado y los usuarios finales lo están usando.

Es posible que existan errores o fallas. Lo importante es que la empresa que construyó el software te ofrezca un periodo de garantía donde se comprometa a solucionar los problemas que surjan con el uso. Existen 2 grandes clases de problemas:

  1. Bug: existe un error o un defecto que hace que el programa no funcione correctamente. Generalmente ocurren por secuencia de pasos que el programador no consideró (casos bordes) pero que el usuario ejecutó.
  2. Problema de usabilidad: es cuando existe una acción que es difícil de realizar en el sistema.

La gracia de pasar por un proceso de “elaboración” donde involucre a los usuarios finales y además de construir el software en iteraciones, es que estos problemas aparecen antes.

Palabras finales

Espero que este post te haya sido de ayuda para entender cuáles son las etapas de un proyecto de software y para que te hagas una idea de cuál es tu nivel de involucramiento.

La verdad es que los proyectos de software son colaborativos. Y como tal, no es algo que mandas a construir y luego te olvidas. Es importante que tú y tu equipo tengan una colaboración activa en el proceso de construcción, así que tienes que considerar esto como parte de la inversión de recursos.

En futuras publicaciones continuaremos explicando términos utilizados en el ambiente de la informática, para seguir creando puentes entre ambos mundos.



Hecho por Codeness con ❤️
© 2024 Codeness