Procesos Ingeniería del Software
Informe Ejecutivo
Julio Wladdimir Criollo Cabrera
Conceptos de Gestión de Proyecto (Ingeniería del Software un enfoque práctico)
Introducción
El presente Informe científico tiene como objetivo el estudio de los conceptos básicos de la gestión de Proyectos de Software, basándose en la cuatro P (Personal, Producto, Proceso y proyecto).
Lo que se busca es dar un enfoque general de los conceptos para logar una mejor comprensión y puesta en práctica de dichos conceptos, los cuales nos servirá para lograr desarrollar de mejor manera la Gestión de proyecto de Software. Este informe nos dará las bases para poder definir las tres principales bases en un proyecto de calidad (Tiempo, Costo y Esfuerzo).
Desarrollo del Tema
La gestión de proyectos busca las técnicas necesarias para planificar, organizar, supervisar y controlar proyectos de software.
El objetivo de gestionar proyectos es tener un producto de calidad, para lo cual enfocado principalmente a las cuatro P (Personal, Producto, Proceso y Proyecto).
Personal
Uno de los factores mas importantes en la gestión de proyectos es el factor huma. Para lo cual se debe tener la capacidad de lograr una integración adecuada del personal por lo que se debe buscar una manera adecuada:
Escoger el personal.
Dividirlo de acuerdo a sus habilidades
Motivar al personal.
Lograr una atmósfera adecuada.
Para lo cual el SEI, ha desarrollado el MMCGP con el fin de: “Aumentar la rapidez con la cual las organizaciones de sw acometen las aplicaciones cada vez más complejas al ayudar a atraer, aumentar, motivar, desplegar y retener el talento necesario para mejorar su capacidad de desarrollo de sw” [1]
Los participantes
Ø Gestores Ejecutivos: Definen aspectos del negocio.
Ø Gestores (Técnicos) del proyecto: Planifican, motivan, organizan y controlan a los profesionales que realizan el trabajo de SW.
Ø Profesionales: Proporcionan las habilidades técnicas necesarias para realizar un producto o aplicación.
Ø Clientes: Los que especifican los requerimientos y necesidades del producto.
Ø Usuario Final: Son los que interactúan con el producto.
Estructura de un Equipo
Para formar un Equipo de Software se debe tener en cuenta algunos factores como son:[2]
Ø La dificultad del problema que se resolverá.
Ø El tamaño del programa resultante en líneas de código.
Ø Tiempo de vida del equipo.
Ø El grado en el que el problema puede separarse en módulos.
Ø La calidad y confiabilidad requeridas del sistema que se construirá.
Ø La rigidez de la fecha de entrega.
Ø El grado de comunicación que requiere el proyecto.
Paradigmas Organizacionales
Ø Un Paradigma Cerrado: Realiza una jerarquía tradicional de autoridades y es mas usado para producir Software muy similar a proyectos anteriores.
Ø Un Paradigma Aleatorio: Estructura equipos Libremente, dependen de la iniciativa individual y se utiliza cuando se requiere innovaciones o adelantos tecnológicos.
Ø Un Paradigma Abierto: Es una mezcla de los anteriores, ya que usa controles del cerrado e innovación del aleatorio. El trabajo se realiza en colaboración ya que tienen una sólida comunicación y la toma de decisiones basada en el consenso.
Ø Un Paradigma Sincrónico: Se caracteriza por la organización de los miembros para trabajar en partes del problema. Una desventaja es la poca comunicación entre los miembros.
Producto
Desde el principio el gestor de un proyecto de Software se enfrenta a un dilema, el cuales definir los requerimientos, Objetivos, alcance para lo cual se debe definir el ámbito del producto en el cual identifica los datos primarios, funciones y comportamientos que caracterizan al producto, y, más importante, intenta abordar estas características de una manera cuantitativa. En el proyecto se pueden crean productos entregables únicos, Informes o artículos de productos existentes con el cual se trabajo o solo presentar un informe de algunos proyectos de investigación con opciones de solución.
Ámbito del Software
Para definir el ámbito se debe tener en cuentas lo siguiente:
Ø Contexto: Como encaja el proyecto en el negocio y que restricciones debe cumplir.
Ø Objetivo de Información: Que datos serán visibles para el usuarios y que datos requiere el proyecto como entrada.
Ø Función y Desempeño: Que funciones realiza el software para transformar los datos de entrada en salida y especificar características especiales de desempeño que se deba tener en cuenta.
Además de debe tener en cuenta la división del problema cuando este es muy grande o complejo, por cuestiones de mejor manejo y resolución del problema.
La descomposición se aplica en dos grandes áreas:
1. La funcionalidad que debe entregarse
2. el proceso que se empleara para entregarlo.
Proceso
En el proceso de software proporciona la estructura desde la que se puede establecer un detallado plan para el desarrollo del software. Las actividades estructurales se pueden aplicar a todos los proyectos de software de forma genérica, sin tener en cuenta su tamaño o complejidad, además permiten a las actividades estructurales adaptarse a las características del proyecto de software y a los requisitos del equipo del proyecto.
Con todo esto el gestor del proyecto debe decidir cuál modelo de proceso es más adecuado para:
- Los clientes que han solicitado el producto y el personal que hará el trabajo.
- Las características del producto.
- El ambiente del proyecto en que trabaja el equipo de software.
El proyecto
La gestión de un proyecto de Software exitoso requiere entender qué puede salir mal, por locuaz se indican 10 señales de que un proyecto esta en peligro.
- El personal de software no entiende las necesidades de sus clientes.
- El ámbito del producto está mas definido
- Los cambios se gestionan mal
- La tecnología elegida cambia
- Las necesidades comerciales cambian
- Los plazos de entrega no son realistas
- Los usuarios se resisten
- Se pierde el patrocinio
- El equipo de proyecto carece de personal con las habilidades apropiadas
- Los gestores evitan las mejores practicas y las lecciones aprendidas
Para evitar esto se sugiere un enfoque de sentido común de 5 partes para proyectos de Software que son las siguientes:
- Comience con el pie derecho
Se logra trabajando duro, entender muy bien el problema, establecer objetivos y expectativa realistas y darle al equipo autonomía, autoridad y tecnología necesaria.
- Mantenga el ímpetu
Para esto hay que proporcionar Motivación adecuada para mantener al máximo el ímpetu, con lo cual se puede resaltar la calidad en cada tarea y también los gestores ejecutivos deben estar fuera del camino del equipo de desarrollo.
- Rastree el proyecto
Realizar revisiones técnica formales para asegurar la calidad y utilizar procesos de Software, medidas para valorar el progreso.
- Tome decisiones inteligentes
Lograr ¨ mantenerlo simple ¨, utilizar en donde se pueda componentes ya desarrollados, evitar fases personalizadas y evitar riesgos obvios.
- Realice un análisis de resultados
Recolección y análisis de métricas de proyectos de Software, lograr una retroalimentación del equipo y clientes y documentar todos los hallazgos hechos.
Conclusiones:
Ø Para lograr un buen proyecto se debe tener claro y lograr una correcta aplicación de los conceptos aprendidos.
Ø Se debe gestionar todos los proyectos.
Ø Los requerimientos, objetivos y limitaciones del proyecto deben estar bien claros y delimitadas.
Ø Se debe tener bien definidas y clasificados los roles de cada personal del quipo.
Ø Procurar establecer un buen equipo que este de acorde a las necesidades del proyecto.
Ø Tener bien claro algunos puntos para lograr un buen desempeño a la hora de desarrollar el proyecto, tales puntos son los descritos en la sección de proyecto.
Bibliografía
Roger S. Presuman, Ingeniería del Software un enfoque práctico, Sexta edición, McGraw-Hill Interamericana, 1980
Jiménez Garzon, Gestionde Proyectos de Software (oline). 24 Oct. 2007. (4 Abril. 2008) www.ingenieriadjg.blogsport.com
www.members.fortunecity.es/analisissw/trabajo_01_parte_1.htm
www.Wikipedia.com
[1] Curtis, B. et al, People Management Capability Maturity Model, Software Engineering Institute, 1994.
[2]Mantei, M. ¨The Effect of Programming Team structures on Programming Tasks ¨, en CACM, vol. 24, núm. 3, marzo de 1981, pp 106-113.