1 / 40

Ingeniería de Software

Ingeniería de Software. Administración de proyectos. Composición de un Proyecto. ¿Qué es un proyecto? Es un esfuerzo temporal emprendido para crear un producto o servicio único para lograr un objetivo Tiene un objetivo o beneficio a obtener que guía el proyecto

spence
Download Presentation

Ingeniería de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ingeniería de Software Administración de proyectos

  2. Composición de un Proyecto • ¿Qué es un proyecto? • Es un esfuerzo temporal emprendido para crear un producto o servicio único para lograr un objetivo • Tiene un objetivo o beneficio a obtener que guía el proyecto • Temporal: porque tiene principio y fin • Único: No es recurrente, cada proyecto es diferente al otro • Posee Recursos limitados • Consta de una sucesión de actividades o fases en las que se coordinan los distintos recursos

  3. Planificación • ¿Por qué es importante planificar los proyectos? • Un estudio hecho por KPMG sobre 252 empresas revela que las causas más comunes son: • Fallas en PM, planeamiento y control 32% • Fallas en Comunicación 20% • Fallas en la definición de objetivos y alcance 17% • Insuficiente conocimiento sobre el negocio 17% • Otras causas menos relevantes son: • Hardware/Software 7% • Tamaño del proyecto 2% • Otros 5%

  4. Project Management • ¿Qué es hacer “Project Management”? • La administración de proyectos es una disciplina que consiste en planificar, organizar, obtener y controlar recursos, utilizando recursos herramientas y técnicas para logar que el proyecto logre sus objetivos en tiempo y forma. • Existe hace cientos de años, pero formalmente arranca en 1920 con Taylor, donde Gantt y Fayol (discípulos) hacen sus aportes teóricos. • En 1969, se forma el PMI (Project Management Institute) publicando el PMBOK (PM Body Of Knowledge) donde aparecen las áreas que comprende la administración de proyectos, comunes a la mayoría de los proyectos.

  5. Dimensiones • Al ser limitados en recursos, la relación entre los elementos que impulsan al proyecto pueden verse de la siguiente forma: • Enfoque 5 Dimensiones • Alcance (Funcionalidad) • Calidad • Recursos • Costo • Tiempo (Plazo) • Enfoque 3 Dimensiones (Triple Constraint) • Alcance • Tiempo • Costo • No se puede cumplir con todas a la vez !!

  6. Plan de proyecto • Objetivos (de negocio / de proyecto) • Alcance • Riesgos del proyecto (prox. Clase) • Calendario • WBS • Gantt • Recursos asignados a las tareas • Estimaciones • Técnicas, supuestos,historia • Resultados de la estimación • Recursos • Estructura y roles • Procedimientos de tracking y control

  7. Objetivos y alcance • Objetivo • Describe los resultados de negocio esperados a los cuales contribuye la concreción del proyecto • El éxito del proyecto deberá medirse en el grado de cumplimiento de dichos objetivos • Los objetivos deben ser precisos (de lo contrario no se podrá corroborar si se alcanzaron) • Recordar no confundir la solución con el objetivo del proyecto • La solución es el curso de acción para alcanzar el objetivo • El objetivo no es la forma en que vamos a hacer algo sino el resultado que esperamos • Alcance • Define los límites del sistema • Lo que incluye • Si es necesario se aclaran especialmente que “no” incluye (con el objetivo de despejar dudas)

  8. Calendario • Armado del plan • ¿Qué debemos hacer? • Descomponer el proyecto que estamos planificando en: • Fases / Etapas • Tareas / Subtareas / Actividades • Determinar las relaciones de precedencia en la descomposición anterior • Asignar los recursos del proyecto a las tareas • Revisar el plan resultante con el objetivo de asegurar el cumplimiento de los plazos esperados y resolver conflictos de asignaciones de recursos a las tareas

  9. WBS • ¿ Qué es una WBS ? • Método para representar en forma jerárquica los componentes de un proceso (en nuestro caso el plan de proyecto) o un producto • La WBS no determina dependencias, solo jerarquía • La WBS tiene que tener todas las tareas o entregables para cumplir con el alcance. • ¿ Cómo se define una WBS ? • Definir el nodo raíz de la jerarquía (Por lo general es el nombre del proyecto) • Dividirlo en los componentes principales que lo conforman • Continuar con la apertura de los componentes principales en otras sub-partes • Finalizar el proceso de división cuando se llegue a un nivel donde se pueda trabajar con el nivel de granularidad alcanzado • En nuestro caso, hasta que podamos para cada tarea estimar su esfuerzo, su duración y asignarle recursos

  10. Tipos de WBS • WBS por Proceso • Análisis • Desarrollo • Construcción • Testing • Implementación • WBS por Producto (por funciones) • WBS Híbridas (ciclo de vida en el alto nivel con detalle de características de productos en el bajo nivel)

  11. Dependencias • En el siguiente paso debemos definir las dependencias de todas las tareas • No olvidarse las dependencias con terceras partes (otros proyectos relacionados) • Asegurar que cada tarea tenga un entregable preciso (que permita definir cuando la tarea finalizó) y a su vez los que se necesitan para otras tareas sucesoras • Incluir milestones (hitos / puntos de revisión) • Todo proyecto debe tener puntos de revisión periódicos • Identificar el camino crítico • Secuencia de tareas cuyo atraso provoca atrasos en la fecha de fin del proyecto • Cuidado con las tareas no críticas que tienen un límite a partir del cual se transforman en críticas

  12. Asignación de recursos • Debemos conocer los recursos con los que podemos contar y cuál es su disponibilidad real para asignarlos al proyecto • Acordar disponibilidad y confirmar asignación • Resolver conflictos de sobreasignación que puedan surgir • Por lo general cuando se hace la descomposición y se define las dependencias, la duración de las tareas se realiza teniendo en cuenta la dedicación completa de los recursos y en la práctica no es real !! • Podemos resolverlo (siempre que la tarea lo permita): • Alargando la duración de la tarea • Asignando recursos para su ejecución • Alterando el orden de la misma • No olvidar la asignación de los roles cubiertos por el usuario • El usuario “campeón” suele ser un recurso con alta demanda en su “día a día” y puede comprometer su participación en el proyecto • Recomendación: evitar caer en la “dedicación completa” • No hay recurso que esté disponible el 100% del tiempo para un proyecto • Tener en cuenta vacaciones, enfermedades, emergencias de otros proyectos, training, etc...

  13. Asignación de recursos • Conformación del equipo de trabajo: • A la hora de construir un equipo tener en cuenta: • La complementación técnica y social de los participantes • La cantidad de gente (cuidado con los canales de comunicación en grupos grandes) • La posibilidad de crecimiento futuro del equipo • El skill de las personas (fortalezas y debilidades) • Todos los recursos tienen que tener un backup asignado • Debidamente asignado y notificado • Especial cuidado con los que están asignados a las tareas críticas! • Un buen equipo ... • Comparte el objetivo y se compromete • Tiene una identidad propia • Compromiso con el equipo • Confianza mutua • Comunicación efectiva • Tiene un sentido de autonomía • Tiene un sentido de empowerment

  14. Estimaciones • Por qué fallan las estimaciones? • Optimismo • Estimaciones informales ( estomacales ) • No hay historia • Mala definición del alcance • Novedad / Falta de Experiencia • Complejidad del problema a resolver • No se estima el tamaño • Porque la estimación fue buena pero cuando empieza el proyecto: • Mala administración de los requerimientos • No hay seguimiento y control • Se confunde progreso con esfuerzo

  15. Estimaciones • Variables a estimar • Tamaño • Esfuerzo • Costo • La estimación del desarrollo de SW vs la estimación de todo el proyecto • La estimación del desarrollo de SW es un componente de la estimación del proyecto. • “Nivel de incertidumbre” • El “cono de la incertidumbre” define niveles estadísticos predecibles de la incertidumbre de las estimaciones en cada etapa del proyecto • Cuanto más refinada la definición, mas exacta será la estimación

  16. Consideraciones importantes • Diferenciar entre estimaciones, objetivos y compromisos • Asociar a las estimaciones un % de confiabilidad • Es recomendable presentar las estimaciones como rangos en lugar de un único valor • Siempre presentar junto con la estimación, los supuestos que se tuvieron en cuenta para llegar a la misma • Tener presente la Ley de Parkinson: “Toda tarea se expande hasta ocupar el tiempo que tiene asignado” • Considerar todas las actividades relacionadas al desarrollo de sw, no solamente codificación y testing (Análisis, diseño, actividades de SCM, etc.) • No asumir que solo por el paso del tiempo y de las fases de un proyecto se avanza con menor incertidumbre en las estimaciones (Cono de la incertidumbre) • Recolectar datos históricos para tener como referencia • Considerar que puede haber enfoques para estimar “Top Down” y “Bottom-Up”

  17. Ciclo dorado de la estimación • Estimar: Comenzar x estimar el tamaño para derivar el esfuerzo y el costo • Medir: Mientras evoluciona el proyecto, medir el tamaño, el esfuerzo y costo incurrido • Registrar: Dejar claras las mediciones tomadas • Comparar: Estimaciones vs. Mediciones • Analizar: Razones de desvíos supuestos que quizás variaron, temas no contemplados, etc... • Calibrar: Ajustar c/u de las variables y parámetros que intervienen en el proceso de estimación • Volver a estimar el mismo proyecto pero ahora con mas información que al comienzo del mismo • Nuevos proyectos con el proceso ajustado por la “calibración”

  18. Métodos para estimar • Métodos subjetivos • Juicio Experto • Pert (también conocido como Clark) • PlanningPoker • WidebandDelphi • • Métodos mássofisticados • EarnedValue • FunctionPoints • Use case points • ObjectPoints

  19. Estimaciones - Recomendaciones • ¿ Qué hacer ? • Juntar historia de todos los proyectos • Registrar todas las lecciones aprendidas • Tener en cuanta la importancia de la comunicación • Desarrollar un método de estimación adecuado a la instalación • Basarse en los conocidos y crear el propio • Lo importante es su eficacia • Apoyarnos en herramientas • Permiten ayudarnos en la implementación del ciclo dorado • ¿ Qué “no” hacer ? • Descartar los métodos • Rechazarlos porque los consideramos inaplicables • Utilizar métodos elaborados sin experiencia o información suficiente • Los métodos elaborados requieren de habilidades que hay que desarrollar • Ignorar los supuestos • Siempre deben estar claro al comienzo dejando claro el nivel de certidumbre de la estimación

  20. Juicio Experto & PERT/Clark • Juicio Experto • Depende de la persona que haga la estimación • Se basa en la experiencia personal • Por lo general se recurre a analogías • Método Pert (ProgramEvaluation and ReviewTechnique) • Se basa en el juicio experto • Incluye los factores optimistas y pesimistas en su estimación • Estimación = (Optimista + 4 x Medio + Pesimista) / 6 • Se puede usar para estimar tamaño y esfuerzo • También se conoce como el método Clark

  21. PlanningPoker • Da lugar a la participación de todos los involucrados • Ventajas • Fácil de implementar y da sentido de propiedad sobre la estimación

  22. WidebandDelphi • Es el juicio experto en grupos • Da lugar a la participación de todos los involucrados • Ventajas • Fácil de implementar y da sentido de propiedad sobre la estimación • Se puede utilizar en etapas tempranas del proyecto • Se recomienda utilizarlo en proyectos poco conocidos en donde no se cuenta con historia

  23. EarnedValue • Es una herramienta que permite controlar el costo durante todo el proceso • No se encarga de realizar la estimación inicial de las tareas, sino en actualizar la estimación total del proyecto teniendo en cuenta los retrasos • No se suele utilizar en metodologías ágiles • Es caro de implementar pero en proyectos que requieren control exhaustivo de los gastos y en metodologías mas duras donde las estimaciones se hacen al inicio puede servir

  24. Functionpoints • Miden el tamaño del SW en base a la funcionalidad capturada en los requerimientos • Usa el modelo lógico o conceptual para trabajar • En general son aceptados en la industria a pesar de su complejidad y antigüedad • Hay muchas heurísticas en el mercado basadas en PFs • Los PFs son independientes de la tecnología • Requieren un análisis de requerimientos avanzado

  25. Functionpoints - Elementos • Archivos lógicos internos (ALI o ILF) • Grupo de datos lógicos de información o de control, identificables por el usuario, mantenidos a través de procesos elementales de la aplicación dentro de los límites de la misma. • Archivo de interface externa (AIE o EIF) • Grupo de datos lógicos de información o de control, identificables por el usuario, referenciados por la aplicación pero mantenidos a través de procesos elementales de una aplicación diferente. Los EIF no son mantenidos por la aplicación. • Entradas externas (EE o EI) • Proceso elemental de la aplicación que procesa datos o información de control que entran desde el exterior del sistema. Los datos procesados mantienen uno o más ILFs.La información de control puede o no ser mantenida en un ILF. • Salidas externas (SE o EO) • Es un proceso elemental de la aplicación que envía datos o información de control fuera de los límites del sistema. Puede hacer update de un ILF. Dicho procesamiento de información debe contener al menos una fórmula matemática o cálculo, o crear datos derivados. Una EO puede también mantener uno o más ILFs y/o alterar el comportamiento del sistema. • Consultas Externas (CE o EQ) • Es un proceso elemental de la aplicación que envía datos o información de control fuera de los límites del sistema. El proceso elemental NO posee fórmulas matemáticas ni cálculos. Y no crea datos derivados.Una EQ no mantiene ILFs durante su procesamiento, ni altera el comportamiento del sistema.

  26. Functionpoints – Sin ajuste

  27. Functionpoints – Factores de Influencia • Technical Complexity Factor TCF = 0.65 + ( sum de factores ) / 100 • Hay 14 factores de complejidad técnica. Cada uno se evalua de acuerdo al grado deinfluencia (0-5). • Data communications • Performance • Heavilyusedconfiguration • Transactionrate • Online data entry • Enduserefficiency • Online update • Complexprocessing • Reusability • Installationease • Operationsease • Multiplesites • Facilitatechange • Distributedfunctions • El TCF también se conoce como el CGS, Características Generales del Sistema

  28. Functionpoints – Ajustando • Cálculo de puntos de función • Puntos de función netos  PFN = UFP * TCF • Conversión de FP a LOC (Lines of Code) • En base a estandares del Mercado 1 FP equivale a:

  29. Use case points - Características • El número de Use Case Points depende de : • Cantidad y complejidad de los casos de uso • Cantidad y complejidad de los actores intervinientes en el sistema • Factores técnicos y ambientales • El método requiere que sea posible contar el número de transacciones en cada caso de uso. Una transacción es un evento que ocurre entre el actor y el sistema. • Basado en el método de FunctionPoints • Elementos del sistema • Casos de Uso • Transacciones de Casos de Uso • Actores

  30. Use case points – Clasif. actores • Actores Simples • Son sistemas externos, son muy predecibles, todo sistema con interfaz de aplicación bien definida. • Actores Promedio • Dispositivos de Hardware. Requieren más esfuerzo controlarlos, son más propensos a errores. Personas interactuando a través de una interfaz basada en texto • Actores Complejos: • Son humanos, son impredecibles y difíciles de controlar. Personas que interactúan a través de una GUI • Se cuenta el número de actores en cada categoría, multiplicando ese número por el correspondiente peso y se obtiene el UAW (Unadjusted Actor Weigth).

  31. Use case points – Clasif. Casos de uso • Los casos de uso también se clasifican en Simple, Medio y Complejo • Simple: 3 o menos transacciones. • Medio: 4 a 7 transacciones • Complejo: Más de 7 transacciones • Se cuenta el número de casos de uso en cada categoría, multiplicando ese número por el correspondiente peso y se obtiene el UUCW (Unadjusted Use Case Weigth). • El UAW + UUCW = UUPC El unadjusted use case points

  32. Use case points – Clasif. Casos de uso • Se trata de asignar un peso a los factores técnicos o del entorno que pueden influir en el costo de desarrollar el software • A cada factor se le asigna un valor entre 0 y 5 dependiendo de la influencia que tiene

  33. Use case points – Terminando • El TechnicalComplexity Factor (TCF) es calculado en base a multiplicar cada factor de la tabla anterior por su peso y luego sumar todos estos valores para obtener el llamado TFactor. • Finalmente se aplica la siguiente fórmula: TCF = 0.6 + (.01*TFactor) • El Environmental Factor (EF) es calculado en base a multiplicar cada factor de la tabla 2 por su peso y luego sumar todos estos valores para obtener el llamado Efactor. • Finalmente se aplica la siguiente fórmula: EF = 1.4+(-0.03*EFactor) • El adjusted use case points (UCP) se calcula por la siguiente formula: • UCP = UUCP*TCF*EF • Karner propone un valor de 20 horas /hombre por UCP para cada proyecto • UCP * 20 HH = Costo en HH del proyecto • Enfoque de KirsteinRubi (2001): • 15 a 30 hs x UCP

  34. Objectpoints • Basado en Functionpoints • Objectpoints no está relacionado necesariamente con programación orientada a objetos. • Se asigna a cada componente un peso, de acuerdo a la clasificación peso por su complejidad. • Considera como factor de ajuste el porcentaje de reutilización de código. • Propuesto por Banker (1994) • [Banker(1994) Kauffman, Wright, Zweig, Automating Output Size and ReuseMetrics in a Repository-BasedComputerAided Software Engineering ( CASE ) Environment IEEE Trans. Software Eng, 20(3), pp 169-186,1994.]

  35. Objectpoints – Identificar elementos • Elementos del sistema • Pantallas • Reportes • Módulos 3 GL (lenguaje de 3ra generación) • El método original contempla solo esos tres tipos de objetos • Las implementaciones ad hoc del método consideran otros tipos de componentes, ej: • Clases Java • Páginas Jsp • Programa Cobol • Script SQL • etc

  36. Objectpoints • srvr es el número de tablas de datos utilizadas en un servidor ( mainframe o equivalente ) utilizadas en conjunto con las pantallas o reportes. • clnt es el número de clientes (personal workstation) utilizadas en conjunto con las pantallas o Reportes • Luego, se le asigna un peso de acuerdo a la siguiente tabla. El peso refleja el esfuerzo necesario para cada componente de acuerdo al nivel de complejidad:

  37. Objectpoints • Calcular el porcentaje de reusabilidad • ObjectPoints brutos = OPB • OP = [ OPB * (100 - % Reutilización) ] : 100 • Luego se debe transformar el esfuerzo en personas por mes : • NOP(new objectpoints) = OP (100-%reusabilidad)/100 • Esfuerzo = NOP/PROD • PROD (nivel de productividad) puede ser tomado de la siguiente tabla como referencia:

  38. Preguntas

  39. Sugerencias

  40. Aplausos

More Related