Planeación y calendarización en proyectos de software

La administración de software abarca la planeación, calendarización, administración de riegos, manejo del personal, estimación de los costos de software y la administración de calidad.

En este artículo se cubre la planeación y la calendarización de proyectos de software. Muchas son las causas para el fracaso de proyectos de software, se pueden mencionar: entrega tardía, no fiable, costo superior al estimado, características de ejecución pobres. Muchas veces la falla estaba en el enfoque de administración utilizado.

La necesidad de administrar es una distinción importante entre un desarrollo profesional de software y la programación no profesional. La administración de proyectos de software es necesaria debido a que la ingeniería de software profesional siempre está sujeta a restricciones de presupuesto y calendarización; a las que debe ajustarse la organización que desarrolla el software. El trabajo del administrador de proyectos de software es asegurar que éstos cumplan dichas restricciones y entregar software que contribuya a las metas del negocio. Una buena administración no garantiza el éxito del proyecto, sin embrago la mala siempre asegura el fracaso del mismo.

Las características del software hace su administración particularmente difícil, estás características son:

  • El producto es intangible, el administrador de un proyecto de construcción de un barco puede ver el producto mientras se está desarrollando. Si hay desfase en el calendario, el efecto en el producto es visible. Es software es intangible, no se puede ver ni tocar. Los administradores no pueden ver el progreso, confían en otros para producir la documentación necesaria para revisar el progreso.
  • – No existen procesos del software estándar, no se puede predecir con certeza cuándo un proceso particular tiende a desarrollar problemas.
  • – A menudo los proyectos grandes de software son “únicos”, por lo general los proyectos grandes de software son diferentes de proyectos previos. En consecuencia, los administradores aun cuando cuenten con una amplia experiencia que pueda ser utilizada para reducir la incertidumbre de planes, ésta no es suficiente para anticipar los problemas.

Los rápidos cambios en las computadoras y en las comunicaciones hacen parecer obsoleta la experiencia previa. Las lecciones aprendidas en esas experiencias pueden no ser transferibles a los nuevos proyectos.

Debido a estos problemas, no es sorprendente que algunos proyectos de software se retrasen, sobrepasen el presupuesto y estén fuera de tiempo. A menudo los sistemas de software son nuevos y tecnológicamente innovadores. Frecuentemente los proyectos de ingeniería innovadores también tienen problemas de calendarización. Dadas las mezclas de dificultades, es notable que muchos productos de software sean entregados a tiempo y en presupuesto.

Es imposible redactar una descripción estándar del trabajo de un administrador de software. El trabajo difiere enormemente dependiendo de la organización y del producto de software a desarrollar. Sin embargo, en algún momento, muchos administradores son responsables de algunas o todas de las siguientes actividades:

La primera etapa de un proyecto de software implica redactar una propuesta para realizar ese proyecto. La propuesta describe los objetivos del proyecto y cómo se llevará a cabo. La misma incluye estimado de costo y calendarización. Justifica por qué el contrato del proyecto se le debe dar a una organización o a un equipo en particular. La planeación de proyectos se refiere a la identificación de actividades, hitos y entregas producidas por un proyecto. Por lo tanto se debe bosquejar un plan para guiar el desarrollo hacia las metas del proyecto. La estimación del costo es una actividad relacionada que se refiere al estimado de los recursos requeridos para llevar a cabo el plan del proyecto.

La supervisión del proyecto es una actividad continua. El administrador debe tener conocimiento del progreso del proyecto, y comparar los progresos y costos reales con los planeados. Aunque muchas organizaciones tienen mecanismos formales para supervisar, un administrador hábil podría formarse una imagen clara de lo que pasa llevando a cabo una entrevista informal con el personal del proyecto. Con frecuencia, la supervisión informal predice problemas importantes del proyecto y revela dificultades en su momento. Por ejemplo, las entrevistas diarias con el personal del proyecto pueden exteriorizar un problema en una falla del software. Más que esperar un informe de atraso del proyecto, el administrador de software podría asignar un experto para resolver el problema o podría decir si este problema se vuelve a calendarizar.

Durante el proyecto, es normal tener varias revisiones formales de su administración. Se hace la revisión completa del progreso y de los desarrollos técnicos del proyecto, y se toma en cuenta el estado del proyecto junto con los propósitos de la organización encargada del software. El tiempo de desarrollo para un proyecto grande de software puede ser de varios años. Durante ese tiempo los objetivos organizacionales tienden obviamente a cambiar.

Estos cambios pueden significar que el software ya no se requiere más o que los requerimientos originales del proyecto son inapropiados. La administración puede decidir detener el desarrollo del software o cambiar el proyecto para adecuarlo a los cambios de los objetivos de la organización.

La metodología del Proceso Unificado de Desarrollo (RUP) traza pautas muy concretas para el desarrollo de proyecto de software, define en un enfoque de alta colaboración, evolutivo y flexible para asimilar los cambios en los requerimientos del software en un ambiente de negocios dinámico. De igual forma define claramente los hitos donde son necesarias la revisiones formales del proyecto, las cuales incluyen la aprobación por parte del cliente. A continuación se puede apreciar en el diagrama el ciclo de vida de un proyecto de software basado en RUP:

administradores-software

Su enfoque evolutivo comprende un desarrollo iterativo e incremental. La naturaleza iterativa está presente en las actividades ubicadas en la parte izquierda del diagrama (requerimientos, análisis, diseño, etc.); mientras que el desarrollo incremental lo constituye la creación de prototipos en el tiempo, desarrollados a través del ciclo de vida, una vez para cada prototipo. Durante la Fase de Elaboración se desarrolla un prototipo con la arquitectura que involucra los casos de uso de mayor riesgo técnico. A su vez, también se produce software al final de cada iteración en la Fase de Construcción, de igual forma que en la Fase de Elaboración, el mismo puede ser utilizado con propósitos de pruebas o software demostrativo para el cliente. Cada vez que termina una iteración marca un hito donde es necesaria la revisión con el cliente, donde se analiza el cumplimiento de los requerimientos, el progreso del proyecto, el análisis de los costos reales y los planeados. En el caso de la última iteración correspondiente a cada fase del proyecto, se debe crear el acta de aprobación por el cliente, en la cual el mismo plantea su acuerdo con los desarrollos alcanzados por el proyecto, aceptando así el sentido financiero y técnico del software que se desarrolla.

Generalmente los administradores de proyectos tienen que seleccionar a las personas para trabajar en su proyecto. De forma ideal, estará disponible personal con habilidades y experiencia apropiada para trabajar en el proyecto. Sin embargo en muchos casos, los administradores tienen que establecer un equipo ideal mínimo para el proyecto. Las razones para esto son:

  • – El presupuesto del proyecto no cubre la contratación del personal con salarios altos. Se tiene que contratar personal con menor experiencia y menos salario pero mejor aprovechados.
  • – El personal con experiencia apropiada no está disponible dentro o fuera de la organización. Es imposible reclutar nuevo personal para el proyecto. Dentro de la organización, las mejores personas ya se han asignado a otros proyectos.
  • – La organización desea desarrollar las habilidades de sus empleados. El personal inexperto puede ser asignado al proyecto para aprender y adquirir experiencia.

El administrador de software tiene que trabajar con estas restricciones al seleccionar el personal del proyecto. Sin embargo, estos problemas son probables a menos que exista un miembro del proyecto que cuente con algo de experiencia en el tipo de sistema a desarrollar. Sin esta experiencia, probablemente se cometerán muchos errores pequeños.

Por lo general, el administrador del proyecto es responsable de dar informes del mismo tanto al cliente como a las organizaciones contratantes. Dichos administradores deben redactar documentos concisos y coherentes que resuman la información crítica de los informes detallados del proyecto. En consecuencia, comunicarse efectivamente de forma oral y escrita es una habilidad esencial que un administrador de proyectos debe tener.

La administración efectiva de un proyecto de software depende replanear completamente el progreso del proyecto. El administrador debe anticiparse a los problemas que podrían surgir, así como plantear soluciones tentativas a esos problemas. Un plan preparado al inicio del proyecto debe utilizarse como un conductor para el proyecto. Este plan evolucionará conforme el proyecto progrese y la información disponible sea mejor. A continuación se propone una estructura que puede poseer este plan de proyecto:

  • Objetivos: una breve descripción del propósito del plan del proyecto.
  • Alcance: una breve descripción sobre qué se aplicará este plan.
  • Plan de Fase: en base al desarrollo por fases planteado por RUP, muestra el tiempo de cada fase y que se pretende alcanzar al final de cada una.
  • Análisis Económico.
  • Operaciones y Soporte: el personal que va estar a cargo de las operaciones y el personal que se encargará del soporte. Así como los recursos necesarios para llevar a cabo el proyecto y una vez finalizado el mismo que sea funcional.
  • Mejora Continua: estrategia para recoger nuevos requerimientos para futuras versiones, una vez finalizado el proyecto.
  • Análisis de Riesgos.

La calendarización de un proyecto implica separar todo el trabajo en actividades complementarias y considerar el tiempo requerido para completar dichas actividades. Por lo general, algunas de éstas se llevan a cabo en paralelo, por lo que el calendario de trabajo debe organizarlas para que la mano de obra se utilice de forma óptima. Como regla, para los problemas previstos siempre debe agregarse un 30 por ciento a la estimación original y otro 20 por ciento para cubrir algunas cosas no previstas. Las herramientas de administración de software, como Microsoft Project, se utilizan para automatizar el proceso de calendarización y asignación de recursos. Si los proyectos de software desean desarrollarse en tiempo y presupuesto, es esencial una buena administración.

Bibliografía

– Ian Sommerville, “Ingeniería de Software”, 6ta Edición. Pearson Educación, 2002.

– I. Archer Pupo, “Fases del Proceso Unificado de Desarrollo”. http://www.avatar.com.pe

.

Cita esta página

Galindo González Carlos. (2009, julio 13). Planeación y calendarización en proyectos de software. Recuperado de https://www.gestiopolis.com/planeacion-calendarizacion-proyectos-software/
Galindo González Carlos. "Planeación y calendarización en proyectos de software". gestiopolis. 13 julio 2009. Web. <https://www.gestiopolis.com/planeacion-calendarizacion-proyectos-software/>.
Galindo González Carlos. "Planeación y calendarización en proyectos de software". gestiopolis. julio 13, 2009. Consultado el . https://www.gestiopolis.com/planeacion-calendarizacion-proyectos-software/.
Galindo González Carlos. Planeación y calendarización en proyectos de software [en línea]. <https://www.gestiopolis.com/planeacion-calendarizacion-proyectos-software/> [Citado el ].
Copiar

Escrito por:

Imagen del encabezado cortesía de 21648441@N07 en Flickr