E-Clases
Ingenieria de Software VII
Home
SIA: Definiciones
SIA: Centros de Cómputo
SIA: Areas de Administracion de un CC
SIA: Técnicas y sistemas de gestión de la innovación
Matematicas
SIA II - Proyecto
Códigos para Programadores
Bases de Datos I
Diseño Páginas Web
Curso de Ingles Diciembre 2003
Ingles Tecnico
CENAFOM - Computación 02076
Ingenieria de Software I
Ingenieria de Software II
Ingenieria de Software III
Ingenieria de Software IV
Ingenieria de Software V
Ingenieria de Software VI
Ingenieria de Software VII
Ingenieria de Software VIII
Ingenieria de Software IX
Ingenieria de Software X
Ingenieria de Software XI
Encuestas y Libro de Visitas
Sitios Web
De todo Un Poco
Servicio Tecnico
Nuestros Clientes
Trabajos
Introducción a la Programación

clases2.jpg

Planeación temporal y seguimiento del proyecto:

  • Distribuye el esfuerzo estimado a lo largo de la duración prevista del proyecto, asignando el esfuerzo a las tareas específicas.
  • Define todas las tareas del proyecto e identifica las que son críticas.
  • Hace un seguimiento para asegurarse de que el retraso se reconozca de inmediato. Algunas razones son:
    • Una fecha de entrega poco realista, establecida por alguien ajeno al grupo de ingeniería de software.
    • Cambios de los requisitos del cliente que no se reflejan en la planeación temporal.
    • Una subestimación honesta del esfuerzo o recursos.
    • Errores predecibles e impredecibles que no se consideraron al comenzar el proyecto.
    • Dificultades técnicas o humanas que no pudieron ser previstas de antemano.
    • Falta de comunicación entre los miembros del equipo.
  • Evoluciona con el tiempo.
    • Planeación macroscópica. Se desarrolla en las primeras etapas de la planeación e identifica las principales actividades y las funciones del producto a las que se aplican.
    • Planeación detallada. Se desarrolla al avanzar el proyecto e identifica y programa las tareas específicas.
  • La fecha de entrega se establece de dos formas:
    • En forma irrevocable por decisión corporativa o presiones del mercado. Es la más común.
    • Después de un análisis y planeación detallados buscando optimizar costos y recursos.

Principios de la planeación temporal.

  • Partición. El proyecto debe dividirse en un número de actividades y tareas manejables. Es necesario descomponer el producto y/o el proceso.
  • Dependencia. Determinar la dependencia de cada actividad, algunas son secuenciales y otras paralelas.
  • Asignación de tiempo. Asignar a cada tarea un cierto número de unidades de tiempo (p.e. hombres-dia) y una fecha de inicio y otra de terminación.
  • Validación de esfuerzo. Checar que no se ha asignado mas trabajo del que pueda realizarse.
  • Responsabilidades definidas. Cada tarea debe tener un responsable.
  • Resultados definidos. Cada tarea debe tener un resultado definido.
  • Milestones definidos. Las tareas deben asociarse con un milestone, éste se consigue cuando se ha revisado la calidad de uno o más productos.

Personas y esfuerzo

  • La relación número de personas/productividad no es lineal. Si se juntan 4 programadores, y cada uno produce 500 LOC por mes, el equipo no producirá 2,000 LOC por mes. La comunicación cuesta.
  • La relación esfuerzo/tiempo no es lineal. Usando la ecuacion del software de Putnam-Myers, con LOC = 40,000, B = 0.28, P = 12,000 y T = 1 año, se obtiene el esfuerzo E.

    E = (40,000 * 0.280.333 / 12,000)3 * (1 / 1)4 = 11 hombres-año

    Si se extendiera la fecha de entrega a 1.5 años, el esfuerzo es:

    E = (40,000 * 0.280.333 / 12,000)3 * (1 / 1.5)4 = 2 hombres-año

    Aumentando el tiempo en 6 meses, el esfuerzo se redujo a la quinta parte.

  • Regla del 40-20-40. Una distribución recomendada es dedicar el 40% a las tareas de análisis y desarrollo, el 20% a la codificación y el 40% a las pruebas. Esta distribución sólo marca directrices, no es ley.

Definición del conjunto de tareas

  • Es una colección de tareas, milestones (metas intermedias) y entregas que deben realizarse para completar un proyecto particular.
  • Debe proporcionar disciplina para alcanzar una alta calidad para el software.
  • No debe cargar al equipo con trabajo innecesario.
  • No existe un solo conjunto de tareas apropiado para todos los proyectos.
  • Se propone el concepto de selector de conjunto de tareas o TSS, como un mecanismo de ayuda para decidir el conjunto de tareas apropiado a cada proyecto. El TSS depende del tipo de proyecto y del grado de rigor que se definen a continuación.

Tipos de proyectos

Los proyectos de software se puede clasificar de esta forma:

  • Proyectos de desarrollo de concepto. Exploran un concepto nuevo o una aplicacion de alguna nueva tecnología.
  • Proyectos de desarrollo de una nueva aplicación. Crean un producto por encargo de un cliente.
  • Proyectos de mejoras de aplicaciones. Modifican el producto para mejorar su funcionamiento, rendimiento o interfaces que son observables por el usuario.
  • Proyectos de mantenimiento de aplicaciones. Corrigen, adaptan o amplían un software existente de maneras que pueden no ser obvias para el usuario final.
  • Proyectos de reingeniería. Reconstruyen un sistema existente en su totalidad o parte.

Grado de rigor

Se pueden definir cuatro grados de rigor.

  • Informal.
    • Se aplican las actividades estructurales del proceso.
    • Se requiere un conjunto de tareas mínimos.
    • Las actividades de calidad se minimiza.
    • Los requisitos de documentación se reducen.
  • Estructurado.
    • Se aplican las actividades estructurales del proceso.
    • Se requiere un conjunto de tareas mayor.
    • Las actividades de calidad garantizarán una alta calidad.
    • Hay actividades de SQA (aseguramiento de la calidad del software), SCM (administración de versiones), documentación y tareas de medición de manera fluida.
  • Estricto.
    • Se aplica el proceso completo con un grado de disciplina tal que garantice una alta calidad.
    • Se aplican todas las actividades de calidad y se producirá una amplia documentación.
  • Reacción rápida. Es el clásico bomberazo.
    • Se aplican aquellas tareas esenciales para mantener una alta calidad.
    • La documentación y las revisiones adicionales se hacen después de entregar la aplicación al cliente.
    • Estas situaciones no deberían ocurrir en más de un 10% al 20% de las ocasiones.

Cálculo del TSS

Para calcular el TSS de un proyecto se llena una tabla parecida a la siguiente:

Criterios de adaptación Grado Peso Multiplicador Subtotal
Desarr. Concep. Nvo. Desarr. Mejoras Mtto Reing.
Tamaño del proyecto   1.20 0 1 1 1 1  
Número de usuarios   1.10 0 1 1 1 1  
Importancia para el negocio   1.10 0 1 1 1 1  
Longevidad de la aplicación   0.90 0 1 1 0 0  
Estabilidad de los requisitos   1.20 0 1 1 1 1  
Facilidad de comunicación   0.90 1 1 1 1 1  
Madurez de la tecnología aplicable   0.90 1 1 0 0 1  
Limitaciones de rendimiento   0.80 0 1 1 0 1  
Empotrado/no empotrado   1.20 1 1 1 0 1  
Personal del proyecto   1.00 1 1 1 1 1  
Interoperatividad   1.10 0 1 1 1 1  
Factores de reingeniería   1.20 0 0 0 0 1  
Selector de conjuntos de tareas (TSS)  

Instrucciones:

  • En la primera columna están listados los criterios que influyen en el rigor de una tarea, y por lo tanto, en su conjunto de tareas.
  • En la segunda columna se le asigna un valor a cada criterio entre 1 y 5.
  • En la tercera columna están los pesos de cada criterio. El peso indica la importancia de un criterio en particular a los tipos de software desarrollados por la empresa. Se pueden variar segun las circunstancias locales.
  • Se toma un multiplicador de acuerdo al tipo de proyecto
  • Se multiplica el grado por el peso por el multiplicador de la columa que corresponda según el tipo de proyecto y se escribe en la columna de subtotal.
  • Se saca el promedio de los subtotales y ese es el selector del conjunto de tareas (TSS)
  • El grado de rigor lo determina el TSS de acuerdo a la siguiente tabla:

    Valor del TSS Grado de rigor
    TSS < 1.2 Informal
    1.0 < TSS < 3.0 Estructurado
    TSS > 2.4 Estricto

Los límites entre los rangos del TSS no tienen fronteras bien definidas, indicando que no es posible tener reglas estrictas para seleccionar conjuntos de tareas. Si por ejemplo, después de hacer el análisis anterior, se obtiene un TSS de 2.6, queda a criterio del administrador del proyecto seleccionar un conjunto de tareas acorde a un grado de rigor estructurado o estricto.

Selección de las tareas

El conjunto de tareas depende del tipo de proyecto y grado de rigor. Cada uno de los tipos de proyectos puede enfocarse usando un modelo de vida lineal (cascada), iterativo (ej. prototipos) o evolutivo (ej. espiral de Boehm).

Si, por ejemplo, se elige el modelo incremental, hay cuatro fases en cada incremento:

  • Análisis.
  • Diseño.
  • Código.
  • Prueba.

Aplicando este modelo de ciclo de vida a un software de tipo nuevo desarrollo podemos plantear las siguientes tareas generales.

  • Entrevista con el cliente.
  • Entrega de una propuesta inicial.
  • Hacer los cambios.
  • Seleccionar miembros del equipo.
  • Investigar recursos.
  • Diseñar la interface de usuario.
  • Desarrollar el plan del proyecto.
  • Programar la aplicación.
  • Integración de módulos.
  • Depurar la aplicación.
  • Pruebas.
  • Calendario de entregas finales (aplicación, documentación, entrenamiento, etc.)

Es importante notar que:

  1. Cada tarea produce a su vez documentación específica.
  2. Se pueden programar uno o más incrementos cada uno con sus cuatro fases de análisis, desarrollo, código y pruebas.
      Refinamiento de las tareas

      Las tareas generales pueden emplearse para definir una planeación temporal a nivel macro, por ejemplo, para una red de tareas, y luego refinarse para crear una planeación temporal detallada. Cada tarea general se descompone en subtareas, cada una con entregas y metas intermedias.

      Por ejemplo, la tarea de entrevista con el cliente se puede descomponer en:

      • Identificar necesidades y limitaciones del producto. Meta intermedia: definir el producto.
      • Definir las OCI (entradas, control y salidas) del sistema. Meta intermedia: documento OCI.
      • Definir las funciones principales. Meta intermedia: propuesta inicial.

      Planeación temporal

      Definición de una red de tareas

      Para cada tarea o subtarea, se hace una representación gráfica dibujando cuando una tarea se puede hacer en paralelo con otras o cuando debe esperar a que termine alguna o algunas tareas. Como ejemplo, la siguiente tabla muestra el tiempo (esfuerzo) en semanas asignado a cada tarea general, y la(s) tarea(s) que deben completarse antes de que esa tarea pueda comenzar:

      Clave Tarea Tiempo Antecesor(es)
      A Entrevista con el cliente 2  
      B Entrega de una propuesta inicial 1 A
      C Hacer los cambios 2 B
      D Seleccionar miembros del equipo 1 C
      E Investigar recursos 1 C, D
      F Diseñar la interface de usuario 2 E
      G Desarrollar el plan del proyecto 1 E, F
      H Programar la aplicación 2 G
      I Integración de módulos 1 H
      J Depurar la aplicación 2 H
      K Pruebas 3 J
      L Calendario de entregas finales 1 K

      Con esta información se puede sacar la red de tareas:

      [aqui iría el dibujo de la red de tareas]

      El camino crítico

      El camino crítico es el conjunto de tareas que hay que terminar a tiempo si se quiere que un proyecto termine a tiempo. Si alguna de esas tareas se atrasa, todo el proyecto se atrasa.

      Gráficas de tiempo o de Gantt

      Las gráficas de Gantt muestran para cada tarea, la fecha de inicio, y de terminación. Usando el ejemplo anterior:

      Tarea Semana
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
      Entrevista con el cliente X X                                
      Entrega de una propuesta inicial     X                              
      Hacer los cambios       X X                          
      Seleccionar miembros del equipo           X                        
      Investigar recursos             X                      
      Diseñar la interface de usuario               X X                  
      Desarrollar el plan del proyecto                   X                
      Programar la aplicación                     X X            
      Integración de módulos                         X          
      Depurar la aplicación                         X X        
      Pruebas                             X X X  
      Calendario de entregas finales                                   X

      Seguimiento de la planeación temporal

      El seguimiento se puede realizar de varias formas:

      • Haciendo juntas periódicas del estado del proyecto en las que todos los miembros del equipo informan del progreso y los problemas.
      • Evaluando los resultados de todas las revisiones realizadas a lo largo de todo el proceso.
      • Determinando si se han conseguido las metas intermedias (milestones) en la fecha programada.
      • Comparando la fecha real de inicio con la prevista para cada tarea.

      Plan del proyecto

      Objetivos

      • Comunicar el medio ambiente y los recursos a los administradores, al personal técnico y al cliente.
      • Definir riesgos y sugerir técnicas para hacerles frente.
      • Definir costos y planeación temporal para la revisión de la administración.
      • Proporcionar un enfoque general del desarrollo del software a todo el personal relacionado con el proyecto.
      • Describir cómo se garantizará la calidad y la administración de cambios.

      Esquema de un plan de proyecto de software.

        1. Introducción.
          1. Propósito del plan.
          2. Medio ambiente del proyecto y objetivos.
            1. Declaración del medio ambiente.
            2. Funciones principales.
            3. Aspectos de rendimientos.
            4. Restricciones técnicas y de administración.
        2. Estimaciones del proyecto.
          1. Datos históricos usados para las estimaciones.
          2. Técnicas de estimación.
          3. Estimaciones de esfuerzo, costo y duración.
        3. Estrategias de administración del riesgo.
          1. Tabla de riesgo.
          2. Estudio de los riesgos a tratar.
          3. Plan RM3 para cada riesgo:
            1. Reducción del riesgo.
            2. Supervisión del riesgo.
            3. Administración del riesgo (planes de contingencia).
        4. Planeación temporal.
          1. Estructura de descomposición del trabajo del proyecto.
          2. Red de tareas.
          3. Gráfica de tiempo (gráfica de Gantt).
          4. Tabla de recursos.
        5. Recursos del proyecto.
          1. Personal.
          2. Hardware y software.
          3. Tabla de recursos.
        6. Organización de personal.
          1. Estructura de equipo (si procede).
          2. Informes de administración.
        7. Mecanismos de seguimiento de control.
          1. Garantía de calidad y control.
          2. Administración y control de cambios.
        8. Apéndices.

    WorldPrime Computacion (C) 2004