El reciente aumento de aplicaciones en donde se utiliza la
computadora ha sido posible debido a un hardware de bajo
costo, por lo cual la demanda de software ha crecido de forma exponencial. Esto implica que son necesarias tcnicas y tecnologas eficientes de Ingeniera de Software para resolver los mltiples problemas que se derivan de las aplicaciones en donde se desarrollan sistemas de software de gran tamao. Cada proyecto de software presenta distintos problemas en su desarrollo, los cuales involucran personas, equipo, usuarios del software y ambiente de la aplicacin. Por estas razones, cada proyecto debe resolver el problema de la produccin del software.
Aunque existen muchas razones por las cuales el software se entrega con retrazo, entre ellas:
fechas lmite irrealizables cambios en requisitos Riesgos predecibles o impredecibles que no se consideraron al iniciar el proyecto Subestimacin razonable de la cantidad de esfuerzo o de recursos que se requerirn para realizar el trabajo dificultades humanas, tcnicas, falta de comunicacin fallas en la gestin del proyecto.
Rechazar el proyecto -NO Ordenar al cliente que cambie la fecha -NO
Se debe realizar una estimacin detallada, aplicar un proceso incremental, reunirse con el cliente y explicarle la estimacin detallada y decirle por que la fecha es irrealizable, ofrezca una estrategia de desarrollo incremental como alternativa. Las tcnicas de estimacin son pobremente desarrolladas. Se confunde esfuerzo con progreso, suponiendo que hombres y meses son intercambiables. El progreso de la calendarizacin es pobremente monitoreado. Cuando un resbaln en la calendarizacin es reconocido, la respuesta tradicional es aadir mano de obra.
Es una actividad que distribuye estimaciones de esfuerzo a travs de la duracin planificada del proyecto, al asignar el esfuerzo a tareas especficas de ingeniera del software. Compartimentacin Interdependencia Asignacin de tiempo Validacin del esfuerzo Definicin de responsabilidades Definicin de resultados Definicin de hitos. Existe el mito que al agregar personas a un proyecto atrasado este puede finalizarse en el tiempo estimado con exito, esto es muchas veces mentira ya que las nuevas personas primero deben ponerse al corriente y los que previamente estan involucrados deben ensear a los nuevos, si se desea agregar personas a un proyecto se debe observar que la tarea sea altamente compartimentada.
Esta es una regla que usualmente se sigue, en la cual se asigna el 40% del esfuerzo al anlisis y diseo de software, el 20% del esfuerzo a la codificacin y el ultimo 40% a la realizacin de pruebas del sistema, esta distribucin se utiliza como gua, la distribucin final del proceso la dictan las caractersticas del proyecto
existen distintos tipos de proyectos de software entre ellos
Proyectos de desarrollo de concepto Proyectos de desarrollo de nuevas aplicaciones Proyectos de mejora de aplicacin Proyectos de mantenimiento de aplicacin Proyectos de reingeniera
Dependiendo del tipo de proyecto y actividades dentro del proyecto se pueden seleccionar el tipo de tareas que se realizaran
Una red de tarea es una representacin grafico de flujo de tareas del proyecto Es importante siempre encontrar la ruta critica estas son las tareas que se deben completar la calendarizacin si el proyecto como un todo se debe completar a tiempo.
Un cronograma o grafico de Gantt permite determinar que tareas se realizan en un punto de tiempo dado, es posible crear un cronograma general y luego crear cronogramas para cada actividad o tarea.
El seguimiento del calendario puede hacerse de diferentes maneras
Realizando reuniones peridicas Haciendo evaluaciones de los resultados de todas las revisiones realizadas a lo largo del proceso de ingeniera de software Determinando si se han logrado los hitos en las fechas establecidas comprobando la fecha real con la fecha de inicio prevista para cada actividad Pueden utilizar tcnicas/herramientas calendarizacin de proyectos. PERT (Tcnica de evaluacin y revisin de programa) CPM (Mtodo de la Ruta Crtica) Informacin etapas tempranas: Estimacin de esfuerzo Descomposicin de la funcin del producto Seleccin del modelo de proceso y conjunto de tareas apropiadas. Descomposicin de Tareas. Calendarizacin Diagrama de Gantt. Uno por proyecto uno por cada funcin. Diamantes (rombos) marcan hitos. Seguimiento de la Calendarizacin realizado: Reuniones valorar estado. Evaluacin de resultados proceso de ingeniera software. Hitos. Comparar fechas: tentativa-real inicio tarea usando tabla de tareas. Cronogramas
Hitos Tcnicos: anlisis OO completado Se han detenido y revisado todas las clases y la jerarqua de clase. Se han detenido y revisado los atributos de clase y las operaciones asociadas con una clase. Se han establecido y revisado las relaciones de clase. Se ha creado y revisado un modelo de comportamiento. Se han anotado las clases reutilizables. Seguimiento del Proyecto OO (1/*) Hitos Tcnicos: diseo OO completado Se han definido y el conjunto de subsistemas. Las clases de han revisado y asignado a los subsistemas. Se han identificado las responsabilidades y colaboraciones. Se ha creado y revisado un modelo de comportamiento. Seguimiento del Proyecto OO (1/*) Hitos Tcnicos: anlisis OO completado Se han definido y revisado todas las clases y la jerarqua de clase. Se han definido y revisado los atributos de clase y las operaciones asociadas con una clase. Se ha creado y revisado el diseo de las clases. Se ha creado y revisado el modelo de comunicacin. 17. Seguimiento del Proyecto OO (1/*) Hitos Tcnicos: programacin OO completada Cada nueva clase se ha implementado en cdigo a travs del modelo de diseo. Se han implementado las clases obtenidas (de una librera de reutilizacin). Se ha construido el prototipo o incremento. Seguimiento del Proyecto OO (1/*) Hitos Tcnicos: prueba OO Se ha revisado la correccin y que estn completos el anlisis OO y los modelos de diseo. Se ha desarrollado y revisado una red clase- responsabilidad-colaboracin. Se han diseado casos de prueba y se han llevado a cabo pruebas al nivel de clase. Se han diseado casos de prueba, se han completado pruebas de agrupamientos y se han integrado las clases. Se han completado las pruebas al nivel de sistema. Muchas veces nos pasa que los profesionales no tienen muy en claro lo que es un hito en el proyecto, entonces ac va una explicacin simple. Un hito es una tarea de duracin cero que simboliza el haber conseguido un logro importante en el proyecto. Los hitos son una forma de conocer el avance del proyecto sin estar familiarizado con el proyecto y constituyen un trabajo de duracin cero porque simbolizan un logro, un punto, un momento en el proyecto. En el cronograma de nuestro proyecto deberan existir varios hitos que informen la fecha estimada en que pensamos cumplirlos, y que luego en la ejecucin compararemos con la fecha real. En muchos proyectos, se hace mencin solamente de los hitos y es muy comn que slo los hitos le interesen a un comit de directores que revisa proyectos en una gran organizacin. En tal sentido, los hitos son la forma ms abarcativa de monitorear la ejecucin de un proyecto. Si alguien se est construyendo una casa, inmediatamente toda la familia habla de los hitos y no del cronograma: el lunes completaron los cimientos, la semana que viene terminan de colocar los pisos, ese da estar finalizada la instalacin de gas, etc. Dentro de los consejos tpicos, se recomienda colocar algunos hitos dentro del plan solamente como seal de que llegamos a un punto importante en el proyecto. Estos hitos servirn como herramientas de comunicacin para los patrocinadores y dems involucrados. De esa manera se define un tablero de control para todos los proyectos, en el cual se indican, por ejemplo, los hitos que hemos atravesado, cul se encuentra cerca, cul est atrasado, etc.