GESTION DE PROYECTOS Una buena gestión de proyectos de software no asegura el éxito del proyecto, proyecto, sin embargo una mala gestión gestión general generalmen mente te lleva al fracaso fracaso el proyecto proyecto.. Estos Estos gestore gestores s hacen hacen el mismo mismo trabajo trabajo que cualquier otro gestor con diferencia de que el software es un producto intangible, es decir que no se puede ver ni tocar por lo tanto no se puede ver el progreso. No existen procesos de software estándar aplicable a cualquier proyecto ya que cada uno varía de acuerdo a la organización y no se puede predecir con certeza cuando un proceso particular puede generar problemas. Los gestores de software generalmente son responsables de las siguientes actividades: Redacción de la propuest propuesta, a, planifica planificación ción y calenda calendariza rización ción del proyecto proyecto,, estimac estimación ión y costes costes del proyecto proyecto,, supervisión y revisión del proyecto, selección y evaluación evaluación del personal y la redacción redacción y presentación presentación de informes. Pero las siguientes actividades son las más importantes durante el desarrollo de software:
Planificación del proyecto: Un gestor de proyectos debe anticiparse a los problemas que puedan surgir en el desarrollo, por eso es importante que se tenga un plan que sirva como conductor del proyecto, este plan se va modificando durante el proceso de acuerdo a como se va generando la información, el principal factor que hay que tomar en cuenta en la elaboración del plan del proyecto son las metas globales del negocio. En este plan se fijan los recursos disponibles, se divide el trabajo y crea un calendario de trabajo. Los detalles del plan varían de acuerdo al tipo del proyecto pero generalmente incluyen los siguientes puntos: introducción, organización del proyecto, análisis de riesgo, requerimientos de recursos de hardware y software, división del trabajo, programa del proyecto y mecanismos de supervisión e informe.
Calendarización del proyecto: Esta es una de las tareas más difíciles pues aquí es donde se hacen las estimaciones de tiempo y de recursos para completar las actividades y organizarlas. Al realizar las estimaciones se ha de tomar en cuenta en cada una de las actividades no sabemos si habrá problemas problemas por lo que hay que dar unos días para esto en caso de que se necesite y no generar un retraso. Esta es una parte fundamental en el éxito del proyecto porque depende de las estimaciones que se realizan, tanto de requerimientos como de tiempo de desarrollo y si no se realizan de forma adecuada se da un riesgo potencial de fracaso porque puede generar que el proyecto se finalice a destiempo o que el presupuesto se exceda, por eso es que al realizar la estimación deben tomarse en cuenta los siguie siguient ntes es punt puntos os:: tama tamaño ño del del produ producto cto,, esfue esfuerzo rzo reque requerid rido, o, durac duració ión n del del proye proyecto cto,, recurs recursos os neces necesari arios os y calid calidad ad espe esperad rada. a. Es impo importa rtante nte no guiar guiarse se de proye proyecto ctos s pasa pasados dos porque porque la complejidad y requerimientos no son los mismos de una organización a otra y eso en lugar de ayudar generalmente retrasa el avance. Medir el tamaño: El tamaño se podría medir de acuerdo a la cantidad de bytes que ocupa en el disco, el numero de programa, el número de líneas de código, el número de líneas de código, la cantidad de reportes.
Sandra del Carmen Ventura Ventura García
Mariela Suriano Marroquín
Una métrica mejor para establecer el tamaño del software es la basada en los requerimientos del usuario y no en la tecnología que se va a utilizar, y tiene las siguientes características: Independiente de tecnología; Se debe escoger la tecnología que no haga más productivos para lograr una mejor funcionalidad ya que basarnos en las líneas de código nos dan resultados que no se pueden comparar. Simple; No se debe requerir grandes esfuerzos para obtener una medida, Enfocada a la funcionalidad; Las nuevas capacidades con las que contara el negocio con la implementación del software, Basada en los requerimientos del usuario; Esta característica da un amplio panorama del tamaño que tendrá el software sin necesidad de ser terminado, además que no se necesita ser un experto para entender lo que el software contendrá, Consistentes; los resultados obtenidos deben ser consistentes. El tamaño del software es un factor determinante en el esfuerzo de un proyecto de desarrollo de software ya que es necesario tomarlo en cuenta en las estimaciones de tiempo y requerimientos. El tamaño basado en la funcionalidad que se obtiene y centra las decisiones en obtener más funcionalidad por la inversión es por ello que se torna conveniente elegir las tecnologías que nos hagan más productivos. La métrica de Puntos Función: “Es una métrica para establecer el tamaño y complejidad de los sistemas informáticos basada en la cantidad de funcionalidad requerida y entregada a los usuarios”. En esta métrica se realiza el método de análisis de puntos función la cual consiste en identificar los componentes del sistema que requiere el negocio y se le asigna un número de puntos de acuerdo a la funcionalidad y complejidad del componente y la sumatoria de estos puntos los ajustamos basándonos en las características generales del sistema a realizar. Es importante recalcar que algunas veces aun teniendo una buena estimación de tiempos hay ciertos aspectos que pueden generar un atraso en las actividades asignadas, por ejemplo: 1.- El síndrome del estudiante: En algunos casos al saber que se cuentan con días extras por si en la actividad surgen problemas, se comienza con las tareas tiempo después y si en la actividad surge algún problema el proyecto se atrasa ya que los días designados para esos probables riesgos fueron utilizados anticipadamente. En los mejores casos la actividad es finalizada según lo previsto. 2.- La ley de Parkinson: Silos adelantos no son reconocidos o recompensados de cierta manera, cualquier actividad la realizan hasta la fecha límite, por lo tanto no se gana tiempo. 3.- Multitareas: Es un grave problema que se genera si un administrador de proyectos asigna múltiples tareas a una misma persona y peor aun si tienen la misma prioridad. Es por ello que no deben manejarse las fechas límite sino únicamente, una duración estimada por actividad, así evitamos la pérdida de tiempo en cada una de las actividades y de esta manera ganamos tiempo en caso de tener algún problema durante el desarrollo y no surge retraso en la liberación del software. Así como también es importante no designar distintas tareas con la misma prioridad a una sola persona o recurso ya que eso nos puede generar un retraso considerable. Generalmente el calendario de proyectos se representa como un conjunto de gráficos que muestre la división del trabajo, las actividades y la asignación del personal.
Sandra del Carmen Ventura García
Mariela Suriano Marroquín
Gestión de riesgos: Esta es una tarea muy importante ya que no podemos suponer que no surgirán problemas sino anticipar los riesgos que puedan surgir para así tener opciones para evitar esos problemas o solucionarlos en caso de ya estar en ellos. Los riegos son una amenaza para el proyecto, el software a desarrollar y para la organización es por ello que los están categorizados de esta manera: riesgos del proyecto, riesgos del producto y riesgos del negocio. El proceso de gestión de riesgos se comprende en cuatro etapas: Identificación de riesgos; que es en donde se identifican los riesgos posibles, Análisis de riesgos; se valoran las posibilidades y consecuencias de los riesgos identificados, Planificación de riesgos; planes para abordar los riesgos o si se pueden evitarlos y por último la supervisión de riesgos; valorar los riegos de forma constante y revisar los planes.
GUÍA DE LOS FUNDAMENTOS DE LA DIRECCIÓN DE PROYECTOS La finalidad principal de la guía del PMBOK es identificar el subconjunto de fundamentos de la creación de proyectos generalmente reconocido como buenas prácticas. Todo proyecto se debe dividir en procesos:
Iniciación: en donde se define y autoriza el proyecto o una fase del mismo. Planificación: Define los objetivos y planifica el curso de acción requerido para lograr los objetivos y el alcance pretendido del proyecto. También se define el alcance y costo del proyecto. Ejecución: se integran personas y otros recursos para poder llevar el plan del proyecto. Seguimiento y Control: mide y supervisa regularmente el proyecto a fin de identificar desviaciones, además de que se lleva el control de los cambios del proyecto, contro de calidad, recopilación y distribución acerca del rendimiento. Cierre: formaliza la aceptación del producto, servicio o resultado y determina de manera ordena el proyecto. Estos procesos se clasifican por áreas de conocimiento como son: *Gestión e integración *Gestión del alcance *Gestión del tiempo *Gestión de los costos *Gestión de la calidad *Gestión de los recursos humanos *Gestión de las comunicaciones *Gestión de los riesgos *Gestión de las adquisiciones. Otros de los procesos que se pueden llevar a cabo son la gestión de las configuraciones (CM), que es el desarrollo y aplicación de estándares y procedimientos para gestionar un sistema Software Evolutivo. Estos definen como registrar, procesar los cambios propuestos al sistema, como relacionar éstos con los componentes del sistema y los métodos utilizados para identificar las diversas versiones del sistema. La CM en el desarrollo ágil y desarrollo rápido no pueden basarse en rígidos procedimientos y papeleo burocrático. Aunque éstos pueden ser necesarios para proyectos grandes o complejos pueden ralentizar el proceso de desarrollo.
Sandra del Carmen Ventura García
Mariela Suriano Marroquín
Para llevar a cabo la gestión de la configuración hay ciertos procesos como son: Planificación de la gestión la cual describe los estándares y procedimientos utilizados para la gestión de la configuración. Se organiza en varios capítulos que incluyen: La definición de lo que se debe gestionar, un enunciado de quien toma la responsabilidad de los procedimientos de gestión de configuraciones, las politícas de CM utilizadas, una descripción de las herramientas a utilizar para la gestión de configuraciones además de una definición de la BD de la configuración. Dos puntos muy importantes en la planificación de la gestión de la configuración son: La identificación de los elementos de configuración en donde se debe saber cuales son todos los documentos que se utilizan para con ello llevar un control de las configuraciones y la base de datos de configuraciones en la cual se debe registrar toda la información relacionada con las configuraciones y sus elementos. Gestión del cambio los cuales se ocupan del análisis de costes y beneficios de los cambios propuestos, aprobando aquellos que valen la pena y registrando los componentes del sistema que se tienen que cambiar. Gestión de versiones y entregas que son el proceso de identificar y mantener los registros de las diversas versiones y entregas de un sistema. Con lo cual se debe recalcar que por versión entendemos una instancia que difiere, de alguna manera, de otras instancias. Para poder llevar a cabo la gestión de versiones y entregas debe existir: Identificación de versiones por medio de numeración de las versiones, identificación basada en atributos como son: el cliente, lenguaje de desarrollo, estado del desarrollo, plataforma de hardware y fecha de creación, identificación orientada al cambio. La gestión de entregas es una versión del sistema que se distribuye a los clientes las cuales incluyen: 1.- Archivos de configuración 2.- Los archivos de datos necesarios 3.- La documentación electrónica y en papel 4.- El embalaje y la publicidad asociados. La toma de decisiones de la entrega que son las decisiones para entregar una nueva versión del sistema las cuales están dirigidas por varios factores técnico y organizacionales: calidad técnica, cambios en la plataforma, quinta ley de lehman, competencia, requerimientos de marketing y propuestas de cambios el cliente. Creación de la entrega, cuando se crea una colección de archivos y documentación que incluyen todos los componentes de la entrega del sistema. Documentación de las entregas porque debe estar documentada toda la información para asegurar que se puede reconstruir exactamente en el futuro. Construcción del sistema que es el proceso de compilar y vincular los componentes del software en un programa que se ejcuta en una configuración particular, es decir, que este la versión apropiada para cada componente.
Sandra del Carmen Ventura García
Mariela Suriano Marroquín
Herramientas CASE combinadas para crear entornos de trabajo como son: 1.- Entornos de trabajo abiertos: Herramientas para cada etapa del proceso CM, son integradas de acuerdo con procedimientos organizacionales estándar. 2.- Entornos integrados: Que ofrecen facilidades integradas para gestión de versiones, construcción del sistema o seguimiento de los cambios. Estás apoyan a la gestión de los cambios, para los cuales proporciona herramientas como son: editor de formularios, sistema de flujo de trabajo, base de datos de cambios y un sistema de gestión de informes. Además soporte para gestión de versiones las cuales gestionan grandes cantidades de información para asegurar que los cambios en el sistema se registren y controlen, por medio de la identificación de versiones y entregas, gestión del almacenamiento, registro del historial del cambio, desarrollo independiente y apoyo al proyecto. También apoyo a la contrucción del sistema, como la construcción de sistemas es un proceso intensivo, las herramientas CASE suministran ciertas características como: dependencia del lenguaje de especificación o del interprete asociado, selección de herramientas y apoyo a la instanciación, compilación distribuída y gestión de los objetos derivados. En lo que respecta a la administración de la configuración (organización y control), se dice que la administración de configuración de software es el arte de identificar, relacionar, almacenar y trabajar con los productos de trabajo, es decir, planes, código fuente, librerías, etc., osea todo lo que se genera en el ciclo de desarrollo de software. La mejor organización de los productos nos ayuda a tener un control sobre las versiones de lo que vamos desarrollando, es por ello que es recomendable tener una buena administración de la configuración no sólo porque nos ayuda a controlar más rápidamente algún producto sino que también nos da orden sobre la manera en como organizamos los archivos. Lo cual trae consigo los beneficios como son: disminución de los costos de mantenimiento, aseguramiento de la calidad, reducción de errores entre otros. La administración de la configuración nos provee de un nivel de servicio el cual ofrece a aquellos que están relacionados con el desarrollo de software, control a los productos de trabajo como información, documentos, versiones, requerimientos, herramientas, soporte, el cual proporciona ayuda a desarrolladores, ingenieros y personas que están relacionadas con el ciclo de desarrollo. También esta el entendimiento del cambio lo cual dice que la efectividad de un cambio depende de distintos factores como son: insatisfacción sentida (IS), diagnóstico del estado actual (DEA), diagnóstico del estado futuro (DEF), energía metida al cambio (EMC). Lo cual lleva a una fórmula: ECP=ISxDEAxDEFxEMC
Sandra del Carmen Ventura García
Mariela Suriano Marroquín
Es por ello que los modelos para el cambio normalmente se basan en 4 aspectos: 1.- Patrones, flujos y estilos de comunicación. 2.- Establecimiento de metas. 3.- Solución de problemas y toma de decisiones. 4.- Planificación de acciones (de cambio). En conclusión podemos decir que es bueno tener bien administrado todo lo que vamos desarrollando con un software tanto las versiones como toda la documentación que se generé con ello, puesto que en el futuro esto nos facilitará el trabajo al momento de querer modificar un software.
Sandra del Carmen Ventura García
Mariela Suriano Marroquín