44
Software Engineering Notas J. Navarro/2004 Lec01. Introducción Un poco de historia Originalmente la mayor parte de los esfuerzos estaban concentrados en el desarrollo del hardware Segunda generación de computadoras: • primeros sistemas operativos • primeros lenguajes de alto nivel • Se comenzaron a separar las aplicaciones de las máquinas en donde se implementan. Desarrollo de sistemas de multiprogramación: • aumento en la complejidad de los programas • aumento en la complejidad de los programas Definición de software Un programa • Simple • Sin documentación • Los errores no importan mucho • Usado por su creador

Software Engineering

Embed Size (px)

DESCRIPTION

Software Engineering. Lec01. Introducción Un poco de historia Originalmente la mayor parte de los esfuerzos estaban concentrados en el desarrollo del hardware Segunda generación de computadoras: primeros sistemas operativos primeros lenguajes de alto nivel - PowerPoint PPT Presentation

Citation preview

Software Engineering

Notas J. Navarro/2004

Lec01. Introducción

Un poco de historia Originalmente la mayor parte de los esfuerzos estaban concentrados en el desarrollo del hardware

Segunda generación de computadoras: • primeros sistemas operativos• primeros lenguajes de alto nivel• Se comenzaron a separar las aplicaciones de las máquinas en donde se implementan.

Desarrollo de sistemas de multiprogramación:• aumento en la complejidad de los programas • aumento en la complejidad de los programas

Definición de software

Un programa• Simple • Sin documentación• Los errores no importan mucho• Usado por su creador

Software Engineering

Notas J. Navarro/2004

Definición de software

La IEEE define software como la colección de programas, procedimientos, reglas y la documentación y data asociada. Por lo tanto, un software no es solamente un conjunto de programas.

Costo del software

0%

20%

40%

60%

80%

100%

120%

1955 1970 1985

SoftwareMaintenance

HardwareMaintenance

SoftwareDevelopment

Software Engineering

Notas J. Navarro/2004

Un desarrollador de software genera un promedio de 300 a 1000 líneas de código por mes. Las compañías cobran alrededor de $100,000 por desarrollador/año lo que es alrededor de $8000 por desarrollador/mes o $50 por desarrollador/hora o entre $8 a $25 por línea de código.

Problemas con el desarrollo del software

Según estudios que se han realizado en las empresas en los Estados Unidos, más del 35% reportaron tener proyectos de software que se encontraban fuera de control en términos de calendario y de presupuesto. Muchos de estos proyectos terminan muy tarde y en ocasiones terminan costando más de 10 veces el estimado inicial. Muchos nunca se terminan.

En un reporte del departamento de defensa se informó que más del 70% de las fallas fueron causadas por problemas en el software.

Costos de la modificación del software

Mantenimiento correctivo: en el que se realizan cambios en el software para corregir errores descubiertos

Software Engineering

Notas J. Navarro/2004

Mantenimiento adaptativo: se realizan cambios en el software para atemperarlo a las nuevas condiciones y requisitos del ambiente en que se utiliza.

Pruebas de regresión: las que se realizan cuando se hacen cambios en un software para verificar que no se introducen efectos secundarios no deseados

• Las fallas en los equipos pueden deberse al desgaste pero las del software están en el sistema desde el principio.

• Algunos estudiosos del área indican que la razón de costos entre el mantenimiento y el desarrollo del software va desde 60:40 hasta 80:20.

• Resulta difícil estableces los requisitos

• Los cambios que se realizan en el desarrollo, debido a los cambios en las especificaciones consumen entre el 30 y el 40% de los recursos.

Software Engineering

Notas J. Navarro/2004

Lec02 Consideraciones en el Desarrollo del Software

En muchas ocasiones el desarrollo se hace por métodos ad hoc en lugar de formales y lo que funciona para aplicaciones pequeñas no pude ser extendido para aplicaciones grandes.

Algunas definiciones de Ingeniería de Software

Ingeniería de software es enfoque sistemático para el desarrollo, operación, mantenimiento y retiro del software

Ingeniería de software es la aplicación de las ciencias y las matemáticas por las cuales las capacidades de un equipo de computadora se vuelven útiles al hombre vía los programas de computadoras, procedimientos y la documentación asociada.

Estas definiciones implican que • la ingeniería de programación tiene que apartarse de ser un arte y convertirse en un método científico • el producto tiene que poder ser utilizable por el hombre

Software Engineering

Notas J. Navarro/2004

Implicaciones del tamaño del proyecto en el enfoque para resolverlo

Lo que aplica para sistemas pequeños no necesariamente aplica para problemas grandes

Figura 1.2 Problema de expansión en el desarrollo de software

Cantidad de líneas

Tamañoel proyecto

2000 Pequeño

8000 Intermedio

32000 Mediano

128000 Grande

Tabla 2.1 Tamaño del proyecto según el número de líneas de código que requiere

Software Engineering

Notas J. Navarro/2004

Parámetros que afectan la ingeniería de software Costos

costo del equipoaplicacionesmano de obra (más costoso)

programación de tiempo (scheduling)ventanas de tiempodesarrollo rápido de aplicaciones (RAD

CalidadOperación del Producto

correcciónconfiabilidadeficienciausabilidad

Transición del Productoportabilidadinteroperabilidad

Revisión del productofacilidad para mantenimientofacilidad para realizar pruebas

Consistenciapredicciones desarrollo de un softwareestabilidad y aceptación de la compañía

La confiabilidad es el factor más importanteSe mide en defectos por líneas de código

Software Engineering

Notas J. Navarro/2004

Lección 03: Fases de la ingeniería de software Objetivo de la ingeniería de programación El objetivo de la ingeniería de programación es: Desarrollar métodos y procedimientos para el desarrollo de software que se puedan expandir para sistemas grandes y que se puedan utilizar para producir consistentemente software de lata calidad a bajo costo y con un ciclo de tiempo corto.

Análisis de requisitos

Producto final de esta fase es un documento de especificaciones de requisitos para el software (SRS)

Diseño del software

Establece cómo se solucionará el problema

documento de diseño diseño del sistemadiseño detallado

Software Engineering

Notas J. Navarro/2004

Codificación

El objetivo del código debe ser reducir los costos de las pruebas de verificación y validación y del mantenimiento ya que estos son muchos más costosos que la codificación.

Fase de pruebas

El objetivo de esta fase es detectar los errores que se cometieron en todas las fases anteriores

Tipos de pruebas

pruebas de módulos individuales (parte de esto se realiza durante la codificación)

pruebas de integración e interacción de módulos

pruebas del sistema

pruebas de aceptación (con el cliente)

Documentos

documento de especificaciones de pruebas

reporte de pruebas

reporte de errores

Software Engineering

Notas J. Navarro/2004

Gerencia del proyecto

Es necesario conocer si el proyecto está corriendo en el tiempo esperado, conocer si se está dentro del presupuesto, determinar la necesidad de recursos y determinar que ajustes se necesitan, entre otros.

Medidas de software

medidas del producto para cuantificar las características del producto

medidas del sistema para cuantificar las características del proceso de desarrollo del software.

Software Engineering

Notas J. Navarro/2004

Procesos de Software

El proceso de software se refiere al método para desarrollar software .• actividades de desarrollo • actividades de gerencia

Tres entidades importantes de ingeniería de software• procesos de software• proyectos de software • productos de software • relación entre ellos

Software Engineering

Notas J. Navarro/2004

Procesos de Software de Componentes

El proceso de desarrollo del producto (software) tiene como meta desarrollar un producto que satisfaga al cliente

Para los proyectos muy complejos, la gerencia es más importante que los métodos técnicos

Componentes principales en el proceso de softwareProceso de desarrollo Proceso de gerencia del proyecto

Software Engineering

Notas J. Navarro/2004

Gerencia de configuración

Otro proceso necesario en del desarrollo del producto es del de gerencia de configuración del software.

Objetivo: manejar los cambios que ocurren durante el desarrollo del producto de forma que los costos y la calidad se mantengan dentro de los límites aceptables sin alterar la integridad del producto.

Características de un proceso de software

PredecibilidadFacilitar la realización de pruebas Facilitar el mantenimiento

Distribución del esfuerzo en el desarrollo de un software

Requerimientos 10%Diseño 20%Codificación 20%Pruebas 50%

Software Engineering

Notas J. Navarro/2004

Distribución del tiempo de los programadores 

Escribir programas 13%Leer programas y manuales 16%Comunicación relacionada

con el trabajo 32%Otras actividades,incluyendo las personales 39%

 

Distribución de la ocurrencia de errores 

Análisis de requisitos 20%Diseño 30%Codificación 50%

Software Engineering

Notas J. Navarro/2004

Implicaciones

Es necesario detectar y corregir los errores tempranoEs necesario prevenir la ocurrencia de erroes

Software Engineering

Notas J. Navarro/2004

Proceso de desarrollo de software - Se encarga, principalmente, del diseño, codificación y pruebas. -Cada paso debe acercar más al proceso al objetivo final del proyecto

- El producto final de cada paso debe ser la entrada del próximo

- Al final de cada fase se necesitan mecanismos de verificación y validación

- En la verificación se coteja que el producto de la fase esté en acorde con las entradas de la fase- En la validación se verifica que se cumplan con los requisitos del usuario del producto

- Los productos de las fases del desarrollo del software tienen que ser formales y cuantificables

- Los pasos no dan detalles de cómo se debe realizar las actividades sino cuáles deben ser sus entradas y salidas

Software Engineering

Notas J. Navarro/2004

ModelosCon el objetivo de realizar el proceso de desarrollo de software se han desarrollado varios modelos

Modelo de cascada -El más simple y utilizado -Sigue una estructura lineal estricta

Fase Producto

Estudio de viabilidad Reporte de viabilidad

Análisis de requisitos Doc. de especificaciones de requisitos

Planif. del proyecto Plan del proyecto

Diseño del sistema Documento de diseño del sistema

Diseño detallado Documento del diseño detallado

Codif. y prueba de la unidad

Código del programa

Integración del sistema Docs. de proceso y pruebas de integración

Pruebas Plan y resultados de las pruebas y manuales

Instalación Reporte de la instalación

Oper. y mantenimiento  

Software Engineering

Notas J. Navarro/2004

Justificación del modelo de cascada - De una u otra forma todas las fases se tienen que realizar- La organización de las fases es óptima Limitaciones del modelo de cascada - Asume requisitos estáticos .- Implica seleccionar el hardware desde el comienzo.- Los requisitos tienen que estar establecidos completamente antes de proseguir el resto del proceso.- Requiere mucha documentación

El modelo de cascada es, a pesar de sus limitaciones, el más utilizado, sobretodo en el desarrollo de aplicaciones cuyas especificaciones se conocen bastante bien.

Modelo de prototipo En este modelo se desarrolla un prototipo desechable del sistema con el objeto de comprender mejor sus requisitos.

Análisis derequisitos

Diseño

Codificación

Pruebas

Análisis derequisitos

Diseño

Codificación

Pruebas

DiseñoDiseño CodificaciónCodificación PruebasPruebas

Software Engineering

Notas J. Navarro/2004

Características del modelo de prototipo

- Adecuado para sistemas complejos y en donde no se tienen sistemas previos- Sólo aquellos componentes que provean un resultado costo-efectivos son implementados- Aquellas partes que se conozcan bien o que resulten triviales no se implementan- El proceso se termina cuando se considera que seguir desarrollando prototipos resultará más costoso que seguir adelante con el proceso sin desarrollarlos.

Ventajas del modelo de prototipo - Los conocimientos que se adquieren durante el desarrollo del prototipo pueden reducir el costo del desarrollo del software más adelante- Se ajusta mejor que el modelo de cascada a situaciones en donde los requisitos sufren muchos cambios.- Se logra congelar los requisitos más tarde en el proceso, cuando es de esperar que sean más estables.- Como tanto los desarrolladores como el cliente trabajan en el desarrollo de los prototipos es más probable que las especificaciones de los mismos se acerquen más a la realidad

Software Engineering

Notas J. Navarro/2004

Modelo de mejoramiento iterativo - Se desarrolla el software de forma incremental.- En primer lugar se desarrolla el núcleo del sistema, dándole prioridad a las especificaciones que se conocen bien- El proceso contiene una lista de las tareas que se desean realizar (lista de control del proyecto) las cuáles se van eliminando en orden con cada iteración- El propósito de cada iteración es eliminar la próxima entrada en la lista - Luego de cada iteración se pueden realizar modificaciones, las cuáles se utilizarán en el desarrollo de la próxima iteración- Al final de cada etapa se realizan las pruebas de integración del sistema. - Cuando todas las tareas se remueven de la lista de control el sistema está terminado. Útil cuando los desarrolladores tienen bastante control sobre los requisitos del sistema ya que pueden establecer la lista de control ellos mismos. El modelo iterativo básicamente lo que hace es aplicar el modelo de prototipos de forma iterativa.

Análisis de requisitos

Diseño

Codificación

Pruebas

Análisis de requisitos

Diseño

Codificación

Pruebas

DiseñoDiseño CodificaciónCodificación PruebasPruebas

Software Engineering

Notas J. Navarro/2004

Modelo de espiral En este modelo se trazan diferentes objetivos y se hace pasar cada uno por diferentes fases:  

- determinar los objetivos, alternativas y restricciones- evaluar las alternativas, identificar y resolver los riesgos- desarrollar y verificar el producto de ese nivel del espiral- planear la siguiente fase

 Las actividades se organizan en secuencia como en un espiral en donde la dimensión angular representa el progreso alcanzado y la dimensión radial representa el costo incurrido hasta el momento.

Software Engineering

Notas J. Navarro/2004

Software Engineering

Notas J. Navarro/2004

Proceso de Gerencia del Proyecto Objetivo: presentar, de forma detallada, las tareas que se tienen que realizar para que el desarrollo del software cumpla con los estándares de calidad y costos establecidos. Sus actividades se pueden organizar en tres grupos: Planificación:Desarrolla un plan mediante el cual se pueda implantar el proceso de desarrollo de software de forma que se pueda cumplir con los objetivos del proyecto de forma exitosa y eficiente.

Monitoreo y control:La mayor parte de esta actividad (que es la más larga de las tres) gira alrededor de los factores de costo, programación de tiempo y calidad ya que estos son los más importantes del proceso. Esta actividad puede detectar la necesidad de tomar acciones correctivas con respecto al proceso. Estas actividades pueden incluir el reducir el alcance del proyecto, renegociar los costos, renegociar la programación del tiempo, añadir mano de obra y utilizar otros tipos de herramientas.

Análisis de la finalización del proyecto:Esta actividad se realiza luego de la terminación del proyecto. La importancia de esta actividad estriba en que puede proveer valiosa información que nos permita determinar que ocurrió durante el proyecto. Esta información podrá ayudar a planificar mejor futuros proyectos.

Software Engineering

Notas J. Navarro/2004

Proceso de Gerencia de Configuración del Software IEEE :: ‘es el proceso de identificar y definir las entidades de un sistema, controlar los cambios en esas entidades durante su ciclo de vida, grabar y reportar el estado de las entidades y peticiones de cambio y verificar que estén completos y correctos” - La ocurrencia de cambios durante el proceso de software es inevitable

- Los modelos de desarrollo de software no proveen métodos efectivos para manejar los cambios

- Es necesario tener una entidad externa que maneje los cambios

- La gerencia de configuración de software es quien aprueba que cambios se deben realizar, determina su impacto, decide que acciones se deben tomar para poder realizar los cambios, etc.

- Los cambios los implementarán los desarrolladores del software

- El uso de la gerencia de configuración de software es beneficiosa en términos costos y calidad.

Software Engineering

Notas J. Navarro/2004

Especificaciones de los Requisitos del Sistema

Actividades Básicas

• Análisis del Dominio del Problema• Especificaciones de los Requisitos

Software Engineering

Notas J. Navarro/2004

Análisis del Problema

Comienza con la recolección de información

• aplicar ingeniería del conocimiento con los clientes y usuarios• documentar el modo actual de realizar el proceso (si existe)• tratar de llegar a un consenso en los conflictos que surjan• definir el dominio de interés

Continuar estructurando la información que se obtiene

Ejemplo de una problema

The Puerto Rico department of transportation has requested a proposal for the development of a computer controlled system to control traffic at the entrance of Plaza Ferrán in Aguadilla. The hardware includes a set of sensors, the traffic lights and a controller. The software reads the state of the sensors, determines the state of traffic in the intersection, and signals the lights to change state. The system has a test mode and a default state in which all lights flash red. The sensors detect the presence of vehicles and pedestrians. All the sensors are interrupt-driven and a bit is set when the sensor is tripped. The reset function is under software control. Traffic lights are of the 3 color type and turn signals and pedestrian signals will also be used. The controller contains the light relays, a data store for the sensors, a power supply and a microprocessor.

Someta su Propuesta

Software Engineering

Notas J. Navarro/2004

Estructuración de la Información de los Procesos

• Descomposición del problema• Abstracción del problema• Proyección del problema• Utilizar Diagramas de Flujo de Data para representar los resultados del análisis

Ejemplo de un Diagrama de Flujo de Data para el proceso de pago de nómina de un empleado

Software Engineering

Notas J. Navarro/2004

Diccionario de Data

weekly timesheet = Employee_name +Employee_ID[Regular_hours + Overtime_hours]*

Pay_rate =[hourly | daily | weekly]Dollar_amount

Employee_name =Last + First + Middle_initial

Employee_Id =digit + digit + digit + digit

Software Engineering

Notas J. Navarro/2004

El Paradigma de Movernos hacia la Programación Orientada a Objetos

Procedural Structuring:

• Descomposición “Top-

Down” de la solución

propuesta

• La arquitectura es fijada

junto con la solución

algorítmica

• El proceso es dividido en

fases con interfaces

establecidas por los

diagramas de flujo de data

• La implementación es una

serie de llamadas a funciones

• La data es separada de los

procesos

Object-oriented Structuring

• Se repasa el espacio total del problema

• La arquitectura se basa en las relaciones del dominio del problema

• El proceso es una iteración incremental de elaboración

• La implementación se descompone en objetos conteniendo la data y métodos (algoritmos)

Software Engineering

Notas J. Navarro/2004

Ejemplo de un Diagrama de Objetos para el Ejemplo de la Nómina

Software Engineering

Notas J. Navarro/2004

Características de las especificaciones de los requisitos

• Entendibles• No ambiguas• Completas• Verificables• Consistentes• Modificables• Rastreables

Componentes Principales del Documento de Especificaciones de los Requisitos del Software (SRS)

• Requisitos Funcionales• relaciones entre entradas y salidas• casos de excepciones

• Requisitos de Rendimiento o Eficiencia• Capacidad• Tiempos de respuesta específicos y generación de resultados

• Restricciones en el diseño• Para cumplir con estándares• Limitaciones de hardware• Tolerancia de recuperación de fallas• Particiones de seguridad, autentificación y criptología

• Requisitos para la interfaz externa• Interfaz con el usuario• Otras interfaces del sistema

Software Engineering

Notas J. Navarro/2004

Validación del Documento de Especificaciones de Requisitos

• Lectura

• Construcción de escenarios

• Revisiones o repasos de los requisitos

• Utilización de técnicas automatizadas

• Utilización de prototipos

Métricas de los Requisitos

* No se puede manejar lo que no se puede medir

• Las herramientas para obtener métricas de los procesos de software han ganado gran aceptación en los últimos años

• Las métricas se utilizan para obtener estimados y medidas de los recursos y la calidad

• Las métricas son más importantes y menos utilizadas durante la fase de la especificación de los requisitos

Software Engineering

Notas J. Navarro/2004

Algunas Técnicas para Aplicar Métricas al Desarrollo de Software

Calibración histórica de errores

• número de requisitos funcionales obviados• número de clarificaciones y ambigüedades• número de requisitos inverificables• número de requisitos incorrectos

0

5

10

15

20

25

mes 1 mes 2 mes 3 mes 4

funcones obviadas

ambiguedades

requisitos inverificables

requisitos incorrectos

Errores en el SRS para El Tigre Corp.

Software Engineering

Notas J. Navarro/2004

Frecuencia de las Requisiciones para Cambios

0

50

100

mes 1 mes 2 mes 3 mes 4 mes 5 mes 6 mes 7 8 9

Número de cambios

Requisiciones de Cambios para El Tigre Corp.

Análisis de Puntos de Funciones

• Inventado en 1979 por A. J. Albretch de IBM, esta técnica revolucionó la ingeniería de software• Provee una técnica para medir la complejidad del software en términos económicos• Reemplaza las Líneas de Código como medida de la productividad de software• Puede aplicarse durante la fase de especificación de requisitos• Ha evolucionado sustancialmente desde 1979• En 1986 la ‘International Function Point User Group’ (IFPUG) se formó para unir las 500 mayores corporaciones que utilizaban el análisis de puntos de funciones• La taza de crecimiento del análisis de puntos de función se ha duplicado cada año

Software Engineering

Notas J. Navarro/2004

Técnica Original de Puntos de Funciones de Albrecht

Number of inputs X 4 = ____

Number of outputs X 5 = ____

Number of inquiries X 4 = ____

Number of data files X 10 = ____

Number of interfaces X 7 = ____

Total = ____

Complexity Adjustment +/- 25%

1 2 4 8 16 32 64 128

4080160320640

1280

Tam

año

de la

Apl

icació

n en

Pun

tos

de F

unció

n

Duración del Proyecto en Meses

Tiempo de Entrega Promedio de El Tigre Corp.

25605120

Software Engineering

Notas J. Navarro/2004

Monitoreo y Control

• Se necesita evitar el problema del “objetivo que se mueve” causado por requisitos cambiantes• Los clientes tienen que “comprar” las consecuencias de los cambios en la funcionalidad del sistema• La renegociación de los requisitos es crítica• Los requisitos deben ser fáciles de modificar y de rastrear• Un proceso de control de cambios formal es escencial

Software Engineering

Notas J. Navarro/2004

Estructura del documento para la especificación de los requisitos del software (RSD) Abstract: Explica de forma breve (un párrafo) el documento que se desarrollará incluyendo de forma general las entradas, salidas y restricciones. 1. Introducción 1.1. Propósito: Indica en forma breve el propósito del documento (no del software) 1.2. Ámbito: Indica el enfoque y alcance del documento.  

1.3. Definiciones, Acrónimos, Abreviaciones: Incluye toda la nomenclatura del dominio del problema que requiere definirse.  

1.4. Referencias: Incluye las fuentes a las que se hace referencia o de donde se obtuvo parte de la información (especificaciones) contenida en el documento

1.5. Resumen de las Responsabilidades del Desarrollador: Indica, de forma general los compromisos del desarrollador.  

2. Descripción General 2.1. Resumen de las Funciones del Producto: Explica de forma detallada, pero sin entrar al nivel técnico, la situación con la que se desea resolver, las restricciones y la forma de operación del software que se desarrollará.

Software Engineering

Notas J. Navarro/2004

2.2. Características de Usuario: Explica quiénes, de forma general, utilizarán o interactuarán con el sistema y las características que se asume tendrán.  2.3. Restricciones Generales: Indica las restricciones dentro de las cuáles operará el sistema.

2.4. Presunciones Generales: Indica las premisas que se consideran como ciertas para el ambiente en el que se usará el sistema.  3. Requisitos Específicos 3.1. Entradas y Salidas: Se especifican todas las entradas y salidas (manuales, de archivo, comunicación electrónica, etc.) que tendrá el sistema y el formato de la información en cada una de ellas.  

3.2. Requisitos Funcionales: Especifica todas las tareas que realizará el sistema. Las tareas deben estar organizadas de forma tal que tanto el cliente como el desarrollador puedan comprender lo que dice y sus implicaciones.  3.3. Requisitos para la Interfaz Externa: Explica los requisitos para la interacción del sistema con los usuarios humaos y no humanos.

Software Engineering

Notas J. Navarro/2004

3.4. Requisitos de Desempeño: Indica, entre otros, los requisitos de memoria, tiempo de respuesta, tamaño de los archivos y respuesta del sistema. 3.5. Restricciones al Diseño: Especifica las restricciones que las condiciones externas impondrán al sistema. Incluye equipo en donde se implementará, plataforma, espacio, compatibilidad y otras restricciones de software, hardware e interacción. 3.6. Criterios de Aceptación: Indica las condiciones que se tendrán que dar para que el cliente acepte el producto y cómo el desarrollador demostrará que éstas condiciones se cumplen.

Software Engineering

Notas J. Navarro/2004

Planificación de un Proyecto de Software

• Estimado de Costos

• Programación del Tiempo

• Planificación del Personal

• Estructuración del Equipo (personal)

• Verificación y Control de Calidad

• Gerencia de Configuración

• Monitoreo del Proyecto

• Manejo de Riesgos

Especificacionesde los Requisitosdel software

Planificación delProyecto

Plan parael Proyecto

Software Engineering

Notas J. Navarro/2004

Estimados de Costos

• Los estimados se necesitan antes de que comience el desarrollo

• Se utiliza para competir en las subastas

• Se utiliza para el control del proyecto

• La exactitud del estimado aumenta con las fases del proyecto

x

4x

x/4

Viabilidad Análisis Diseño Codificación Pruebas Acepatación

Software Engineering

Notas J. Navarro/2004

Modelo de Costo de una Sola Variable

• Sólo se basa en el tamaño del proyecto• Las constantes a y b se basan en un análisis de regresión aplicado a la data histórica• Ejemplo: en 1977 IBM estudió 60 proyectos basándose en las líneas de código entregadas y determinó

a = 5.2b = 0.91

bTamaño*acosto

Software Engineering

Notas J. Navarro/2004

Modelo de costo variable multi-variablesCOnstructive COst MOdel (COCOMO)

• Técnica de estimación desarrollada por Boehm en 1981• Provee estimados del esfuerzo total del staff técnico basado en un proceso de tres pasos

1. Determinar 15 factores de multiplicación basados en los atributos del proyecto

2. Ajustar el esfuerzo multiplicando el estimado inicial por el producto de los factores de multiplicación

3. Obtener un estimado inicial de un modelo de una sola variable basado en el tipo de proyecto y las líneas de código

• El estimado inicial se determina con la fórmula

Ei = a*(KDL)b

• a & b dependen del tipo de proyecto y KDL = miles de líneas entregadas.

• Los valores de a & b se determinan de la siguiente tabla:

a b 3.2 1.05 organic =>proyecto sencillo3.0 1.12 semidetached => complejidad mediana2.8 1.20 embedded =>ambicioso y difícil

Software Engineering

Notas J. Navarro/2004

COCOMO (Atributos)

• Product Attributes

– Required software reliability (RELY)

– Data base size (DATA)

– Product complexity (CPLX)

• Computer Attributes

– Execution time constraint (TIME)

– Main storage constraint (STOR)

– Virtual machine volatility (VIRT)

– Computer turnaround time (TURN)