jueves, 6 de noviembre de 2008

La importancia de una Metodologia de Gestión en el Desarrollo de Software


Introducción
Cuando empezamos a desarrollarnos dentro del perverso mundo del desarrollo de software algunos lo hacemos de la mano de un buen guía o mentor que nos enseña buenas practicas en el momento de desarrollar software, muchos otros solo siguen su instinto recordando en cada traspié palabras y consejos de algunos maestros o profesores que tuvimos en nuestra formación profesional, bueno eso si recordamos lo que dijeron alguna vez y si en verdad tuvieron algo que decirnos.
Es así como luego de mucho sufrimiento y momentos traumáticos nos damos cuenta de la necesidad de ser "un poco organizados" :o) en el momento de desarrollar software, lo primero que hacemos en ese momento es seguir y aprender de alguien que ya la sufrió y en base a su experiencia estuvo dispuesto a dejarnos una propuesta de metodología de desarrollo de software.
Por lo tanto actualmente tenemos muchas de ellas, unas mejores, peores, populares , queridas y no muy queridas pero propuestas metodologicas al fin y al cabo.. debo señalar casi obligado a las mas populares como: RUP, XP y MSF, pero no son las únicas ni las que yo he encontrado se ajusten mejor al momento de ponerme a hacer software. En algún articulo posterior les contare el porque de lo ultimo que digo, ahora nos centraremos en revisar el porque es importante tener alguna metodología para hacer gestión de nuestros proyectos de desarrollo de software.

Algunas metodologías de gestión

Empezaremos creo preguntándonos que es “Gestión”, esa palabrita que tanto se usa y mal usa para justificar jefaturas, gerencias y demás cargos de dirección, muchas veces mal llevados por falta de no saber hacer justamente eso: “gestión”. Según la Real Academia de la Lengua Española (RAE) gestión es : “Acción o efecto de gestionar o Administrar” :o) entonces que es administrar o gestionar algo.. vayamos al grano, gestionar es “el proceso mediante el cual se obtiene, despliega o utiliza una variedad de recursos básicos para apoyar los objetivos de la organización.”, para nuestro caso seria objetivos de un proyecto de software.
Entonces ya sabemos que es y para que no ayudara… simplemente (si se le puede decir así) para llevar adelante un proyecto de desarrollo de software tratando de que el resultado de este sea de calidad cumpliendo con los plazos y recursos que nos hayamos planteado al inicio de nuestra titánica tarea de hacer un software.

Bueno y que hago ahora entonces:

1. Cuales hay? Daré una pequeña referencia a algunas, las mas populares a mi parecer (por favor si alguien considera que alguna otra mas debería estar, encantado de sus criticas)

  • PERT (Program Evaluation and Review Technique). Inventado en 1958 por la Oficina de Proyectos Especiales de la Marina de Guerra del Departamento de Defensa de los EE. UU. PERT es básicamente un método para analizar las tareas involucradas en completar un proyecto dado, especialmente el tiempo para completar cada tarea, e identificar el tiempo mínimo necesario para completar el proyecto total.

  • La parte más famosa de PERT son las Redes PERT, diagramas de líneas de tiempo que se interconectan. PERT está diseñado para proyectos de gran escala, que se ejecutan de una vez, complejos y no rutinarios.


  • CCPM (Critical Chain Project Management) la Gestión de proyectos por Cadena Crítica (CCPM por sus siglas en inglés) nace en el 97 a raiz del libro de Eliyahu M. Goldrat, padre putativo no solo de esta criatura sino de la famosa Teoría de las Limitaciones.

  • En la gestión de proyectos, la cadena crítica es la secuencia de precedencias y elementos terminales dependientes de recursos que evitan que un proyecto, al que se le dan recursos limitados, pueda ser completado en un tiempo menor. Si los recursos de un proyecto estuviesen siempre disponibles en cantidades ilimitadas, entonces la cadena crítica de un proyecto sería igual a su ruta crítica.

    Se basa en dos principios bastante elementales (si obviamos las partes que no son específicas de CCPM sino generales de TOC):

    • Empieza las cosas cuanto antes, no las dejes para el último momento (lo que Goldratt bautiza adecuadamente como el “síndrome del estudiante”).
    • Reservar una fracción de la duración estimada de cada tarea, intentando acabarla antes y posponiendo esa fracción al final del diagrama de Gantt para crear un denominado “buffer de proyecto”

  • La Guía del PMBOK®, desarrollada por el Project Management Institute, contiene una descripción general de los fundamentos de la Gestión de Proyectos reconocidos como buenas prácticas. Actualmente en su tercera edición, es el único estándar ANSI para la gestión de proyectos. Todos los programas educativos y certificaciones brindadas por el PMI están estrechamente relacionadas con el PMBOK. El PMI ha publicado los borradores para revisión de la Cuarta Edición de la Guía del PMBOK®, que será publicada a fines del año 2008.

Todas las mencionadas anteriormente son metodologías de gestión de proyectos, que con algunos ajustes se pueden aplicar de manera muy efectiva y eficiente a proyectos de software.

Veamos ahora algunas específicas para proyectos de software.
  • Métricas, es una metodología de planificación, desarrollo y mantenimiento de sistemas de información. Promovida por el Ministerio de Administraciones Públicas del Gobierno de España para la sistematización de actividades del ciclo de vida de los proyectos software en el ámbito de las administraciones públicas. Esta metodología propia está basada en el modelo de procesos del ciclo de vida de desarrollo ISO/IEC 12207 (Information Technology - Software Life Cycle Processes) así como en la norma ISO/IEC 15504 SPICE (Software Process Improvement And Assurance Standards Capability Determination).

  • Al igual que ISO/IEC 12207, MÉTRICA está orientada al proceso y, en su versión 3, estos procesos son:
    • Planificación de Sistemas de Información (PSI).
    • Desarrollo de Sistemas de Información (DSI). Debido a su complejidad, está a su vez dividido en cinco procesos:
      • Estudio de Viabilidad del Sistema (EVS).
      • Análisis del Sistema de Información (ASI).
      • Diseño del Sistema de Información (DSI).
      • Construcción del Sistema de Información (CSI).
      • Implantación y Aceptación del Sistema (IAS).
    • Mantenimiento de Sistemas de Información (MSI).

  • RUP (Rational Unified Process), El Proceso Unificado de Rational es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización.

  • SCRUM. Es un proceso de desarrollo de software iterativo e incremental utilizado comúnmente en entornos basado en la metodología Agile de desarrollo de software. Aunque Scrum estaba enfocado a la gestión de procesos de desarrollo de software, puede ser utilizado en equipos de mantenimiento de software, o en una aproximación de gestión de programas: Scrum de Scrums.

  • La verdad es que SCRUM nació como una metodología de gestión de proyectos de uso general y ha sido adaptada con mucho éxito a proyectos de desarrollo de software. Por ello la considero como una metodología especifica para desarrollo de software pero se puede usar también y de una forma muy eficaz para cualquier tipo de proyecto.
2. Cual usar? Mi pequeño consejo es que uses aquella con la que te sientas mas cómodo, todas y cada una de ellas tienen sus pros y sus contras, prueba en la medida de lo posible cada una, tal vez con pequeños proyectos donde puedas ver su agilidad en respuesta a cambios de requisitos y la que te brinde la mejor información que tu consideres necesaria al momento de tomar decisiones para poder gestionar tu proyecto. Si lo ves necesario apóyate en una de metodología de gestión general y usa herramientas de alguna orientada al desarrollo de software (eso es lo que yo siempre hago).

Pero SIEMPRE APOYATE EN UNA METODOLOGIA DE GESTION sea cual sea, hará que logres proyectos de mejor calidad, cumpliendo tus tiempos y usando solo los recursos necesarios.

Espero sirva de algo este pequeño articulo, en alguna otra entrega posterior hablare sobre la metodología que mas me gusta y con la que mejores resultados he tenido : SCRUM.
Hasta otra oportunidad.

1 comentario: