La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ingeniería de Software Conceptos básicos

Presentaciones similares


Presentación del tema: "Ingeniería de Software Conceptos básicos"— Transcripción de la presentación:

1 Ingeniería de Software Conceptos básicos de Estimación Costo y Precio Métricas Métodos de Estimación Prof. Pedro G. Campos

2 2 Componentes del costo del software Costos de hardware y software Costos de hardware y software Costos de viajes y capacitación Costos de viajes y capacitación Costos de esfuerzo (el factor dominante en la mayoría de proyectos) Costos de esfuerzo (el factor dominante en la mayoría de proyectos) –Salarios de los ingenieros involucrados en el proyecto –Costos sociales y de seguros Los costos de esfuerzo deben considerar overheads Los costos de esfuerzo deben considerar overheads –Costos de mobiliario, calefacción, iluminación –Costos de comunicaciones, redes –Costos de recursos compartidos (biblioteca, alimentación del personal, etc.)

3 3 Costo y precio Las estimaciones se realizan para “descubrir” el costo, para el desarrollador, de producir un sistema software Las estimaciones se realizan para “descubrir” el costo, para el desarrollador, de producir un sistema software No existe una relación simple entre el costo de desarrollo y el precio cobrado a un cliente No existe una relación simple entre el costo de desarrollo y el precio cobrado a un cliente Existen grandes consideraciones organizacionales, económicas, políticas y de negocio que influencian el precio a cobrar Existen grandes consideraciones organizacionales, económicas, políticas y de negocio que influencian el precio a cobrar

4 4 Métricas de Software : Productividad de programadores Es una medida de la tasa a la cual individualmente los ingenieros involucrados en el desarrollo producen software y la documentación asociada Es una medida de la tasa a la cual individualmente los ingenieros involucrados en el desarrollo producen software y la documentación asociada No tiene una orientación hacia la calidad, aunque el aseguramiento de calidad es un factor en la medición de la productividad No tiene una orientación hacia la calidad, aunque el aseguramiento de calidad es un factor en la medición de la productividad Esencialmente, se desea medir la funcionalidad útil producida por unidad de tiempo Esencialmente, se desea medir la funcionalidad útil producida por unidad de tiempo

5 5 Métricas (medidas) de productividad Métricas relacionadas con el tamaño: se basan en algunas salidas (productos) generados en el proceso de software. Métricas relacionadas con el tamaño: se basan en algunas salidas (productos) generados en el proceso de software. –Pueden ser líneas de código entregadas, instrucciones en código objeto, etc. Métricas relacionadas con la funcionalidad: se basan en una estimación de la funcionalidad del software entregado Métricas relacionadas con la funcionalidad: se basan en una estimación de la funcionalidad del software entregado –Puntos de función es la más conocida de estas medidas

6 6 Líneas de código (LOC) ¿Qué es una línea de código? ¿Qué es una línea de código? –Esta medida fue propuesta cuando los programas eran escritos en tarjetas, con una línea por tarjeta –Cómo corresponde esto con sentencias en Java, en donde una instrucción puede ocupar varias líneas, o se pueden poner varias instrucciones en una línea ¿Qué programas se deben considerar como parte del sistema? ¿Qué programas se deben considerar como parte del sistema? Se asume una relación lineal entre el tamaño del sistema y el volumen de documentación Se asume una relación lineal entre el tamaño del sistema y el volumen de documentación

7 7 Líneas de código (LOC)

8 8 Puntos de función Se basa en una combinación de características del programa Se basa en una combinación de características del programa –Entradas y salidas –Interacciones con el usuario –Interfaces externas –Archivos usados por el sistema Se asocia un peso (ponderación) a cada una de ellas Se asocia un peso (ponderación) a cada una de ellas El conteo de puntos de función se calcula multiplicando cada conteo por su ponderación y luego sumando todos los valores El conteo de puntos de función se calcula multiplicando cada conteo por su ponderación y luego sumando todos los valores

9 9 Puntos de función TipoDescripción Complejidad Total SimplePromedioComplejo EIEntradas Externas× 3× 4× 6 EOSalidas Externas× 4× 5× 7 EQConsultas Externas× 3× 4× 6 LIFArchivos Lógicos Internos× 7× 10× 15 EIFInterfaces Lógicas Externas× 5× 7× 10

10 10 Puntos de función El conteo de puntos de función es modificado por la complejidad del proyecto El conteo de puntos de función es modificado por la complejidad del proyecto Se definen factores para determinar la complejidad total del sistema: Se definen factores para determinar la complejidad total del sistema: –Comunicación de datos –Funciones distribuidas –Tasa de transacciones –Etc.

11 11 Puntos de función

12 12

13 13 Puntos de función La escala de evaluación tiene el siguiente significado: La escala de evaluación tiene el siguiente significado: –0 factor no presente o sin influencia –1 influencia insignificante –2 influencia moderada –3 influencia promedio –4 influencia significativa –5 influencia fuerte

14 14 Puntos de función El procedimiento para calcular el factor de ajuste es el siguiente: El procedimiento para calcular el factor de ajuste es el siguiente: –asignar una evaluación individual a cada uno de los 14 factores –sumar las evaluaciones (esta dará un valor entre 0 y 70) –multiplicar la suma de evaluaciones por 0.01 para obtener un valor decimal –sumar 0.65 al valor decimal para crear un factor de complejidad (un valor entre 0.65 y 1.35) Suponga una aplicación con 10 entradas, 10 salidas, 10 consultas, 1 archivo de datos y 1 archivo de interfaz, todos ellos de complejidad promedio. Suponga una aplicación con 10 entradas, 10 salidas, 10 consultas, 1 archivo de datos y 1 archivo de interfaz, todos ellos de complejidad promedio.

15 Puntos de función Suponga que los factores de influencia se determinaron de la siguiente manera: Suponga que los factores de influencia se determinaron de la siguiente manera: FactorValor C10 C20 C34 C43 C53 C64 C74 C82 C93 C100 C114 C124 C135 C144 Total40 15

16 16 Puntos de función Cálculo de puntos de función no ajustados: – –Cálculo de factor de complejidad: 40 * 0,01 + 0,65 = 1,05 – –Cálculo del valor final de puntos de función ajustados:: 147 * 1,05 = 154

17 17 Puntos de función Los FP’s pueden ser usados para estimar LOC’s dependiendo del número promedio de LOC’s por FP para un lenguaje dado Los FP’s pueden ser usados para estimar LOC’s dependiendo del número promedio de LOC’s por FP para un lenguaje dado –LOC = AVC * número de FP’s –AVC es un factor dependiente de cada lenguaje que varía desde 200 a 300 para lenguaje ensamblador a 2-4 para lenguajes de 4ta. Generación Los FP’s son muy subjetivos. Dependen del estimador Los FP’s son muy subjetivos. Dependen del estimador –El conteo automático de FP es imposible

18 18 Calidad y productividad Todas las métricas basadas en volumen/unidad de tiempo tienen un defecto ya que no toman en cuenta la calidad Todas las métricas basadas en volumen/unidad de tiempo tienen un defecto ya que no toman en cuenta la calidad A menudo la productividad se puede incrementar a costa de la calidad A menudo la productividad se puede incrementar a costa de la calidad No es clara la relación entre métricas de productividad y calidad No es clara la relación entre métricas de productividad y calidad Si se realizan constantes mejoras, entonces un enfoque basado en contar líneas de código no tiene significado Si se realizan constantes mejoras, entonces un enfoque basado en contar líneas de código no tiene significado

19 19 Técnicas de estimación No existe una forma fácil de realizar una estimación precisa del esfuerzo requerido para desarrollar un sistema software No existe una forma fácil de realizar una estimación precisa del esfuerzo requerido para desarrollar un sistema software –Las estimaciones iniciales se basan en información inadecuada de una definición de requerimientos de usuario –El software puede ser ejecutado en computadores desconocidos o usar nueva tecnología –Las personas en el proyecto pueden ser desconocidas Las estimaciones de costo del proyecto pueden ser “auto-complacientes” Las estimaciones de costo del proyecto pueden ser “auto-complacientes” –La estimación define el presupuesto y el producto es ajustado al presupuesto

20 20 Incertidumbre de estimaciones

21 21 Técnicas de estimación Modelado algorítmico de costos Modelado algorítmico de costos Juicio experto Juicio experto Estimación por analogía Estimación por analogía Ley de Parkinson Ley de Parkinson Pricing to win Pricing to win

22 22 Método Wideband-Delphi Un grupo de expertos tanto en el desarrollo de sw. como el dominio de la aplicación usan su experiencia para predecir los costos del sw. Se itera sobre el proceso hasta que se alcanza un consenso Un grupo de expertos tanto en el desarrollo de sw. como el dominio de la aplicación usan su experiencia para predecir los costos del sw. Se itera sobre el proceso hasta que se alcanza un consenso Ventajas: Método de estimación relativamente barato. Puede ser preciso si los expertos tienen experiencia directa con sistemas similares Ventajas: Método de estimación relativamente barato. Puede ser preciso si los expertos tienen experiencia directa con sistemas similares Desventajas: Muy impreciso si no hay expertos Desventajas: Muy impreciso si no hay expertos

23 23 Planning Pocker Técnica de estimación derivada de Wideband- Delphi usada en desarrollo ágil Técnica de estimación derivada de Wideband- Delphi usada en desarrollo ágil Se usan cartas con la estimación de días requeridos para desarrollar una determinada funcionalidad (historia de usuario) Se usan cartas con la estimación de días requeridos para desarrollar una determinada funcionalidad (historia de usuario) –Todo el equipo participa –Se repite hasta llegar a un consenso –Los números suelen seguir la sucesión de Fibonacci

24 24 Modelos algorítmicos: COCOMO Constructive Cost Model, Barry W. Boehm. Constructive Cost Model, Barry W. Boehm. Modelo empírico basado en la experiencia. Modelo empírico basado en la experiencia. Es un modelo bien documentado e “independiente”, el cual no está ligado a un desarrollador de sw particular. Es un modelo bien documentado e “independiente”, el cual no está ligado a un desarrollador de sw particular. Tiene una larga historia desde su versión inicial publicada en 1981 (COCOMO-I o COCOMO-81), pasando por varias versiones hasta llegar a COCOMO II. Tiene una larga historia desde su versión inicial publicada en 1981 (COCOMO-I o COCOMO-81), pasando por varias versiones hasta llegar a COCOMO II.

25 25 COCOMO I

26 COCOMO I Nivel Básico 26

27 27 Duración del proyecto y personal Así como deben estimar el esfuerzo, los administradores deben estimar el tiempo calendario requerido para completar un proyecto y cuando se requerirá del personal Así como deben estimar el esfuerzo, los administradores deben estimar el tiempo calendario requerido para completar un proyecto y cuando se requerirá del personal El tiempo calendario puede ser estimado usando las fórmulas COCOMO El tiempo calendario puede ser estimado usando las fórmulas COCOMO El tiempo requerido es independiente del número de personas que trabajan en el proyecto El tiempo requerido es independiente del número de personas que trabajan en el proyecto

28 28 Requerimientos de personal El número de personas que trabajan en un proyecto varía dependiendo de la etapa del proyecto El número de personas que trabajan en un proyecto varía dependiendo de la etapa del proyecto Mientras más personas trabajan en un proyecto, usualmente se requiere un mayor esfuerzo total Mientras más personas trabajan en un proyecto, usualmente se requiere un mayor esfuerzo total Un acumulamiento rápido de personal usualmente se relaciona con un “estiramiento” de la agenda Un acumulamiento rápido de personal usualmente se relaciona con un “estiramiento” de la agenda

29 29 Conclusiones Es posible estimar el costo o esfuerzo del desarrollo de software. Es posible estimar el costo o esfuerzo del desarrollo de software. Las estimaciones no son precisas, pero nos permiten tener una aproximación inicial. Las estimaciones no son precisas, pero nos permiten tener una aproximación inicial. Muchas veces la estimación determina el costo. Muchas veces la estimación determina el costo.

30 30 ¿Preguntas?


Descargar ppt "Ingeniería de Software Conceptos básicos"

Presentaciones similares


Anuncios Google