Propuesta de un modelo de análisis para estimación del tamaño del software y gestión de costos y riesgos a partir de requerimientos funcionales. Sandra Patricia Forigua, Oscar Arturo Ballesteros Presentado a: Luis Carlos Díaz Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Bogotá – Diciembre 1 de 2006 1 Índice Risk Management Capability 3 Risk Assessment Methodology 4 Metodologías para la evaluación y análisis de riesgos 5 Comparación de métodos de análisis de riesgos 9 Comparación de herramientas computacionales de métodos de análisis de riesgos 12 Bibliografía 14 2 RISK MANAGEMENT CAPABILITY CMM: Capability Maturity Model for Software Según Hall[1] puede establecerse que el CMM es un modelo de desarrollo de Framework que describe elementos clave de un proceso de software efectivo. Identifica risk management key practices en algunas de las denominadas Key Process Areas KPA. Plan de administración del riesgo de un proyecto. Camino hacia la capacidad de la administración del riesgo Este mapa esta constituido por cinco estados incrementales [1], estos son: 1. 2. 3. 4. 5. Problema Mitigación Prevención Anticipación Oportunidad Dicho mapa consiste de un plan detallado que puede sobrevivir a pesar de dificultades que se puedan presentar en el proyecto [1], tales como: rotación de personal y cancelación del proyecto. El mapa de administración de riesgos puede facilitar: - Lay the foundation: cada estado del mapa construye una capacidad necesaria para el siguiente estado. Se puede utilizar el mapa de administración de riesgos como una manera de determinar dónde se está y si algunos pasos han sido omitidos. - Facilita la transición: Comenzando desde el principio el mapa guiará hasta dónde se desea llegar en el proceso de administración de riesgos. Estado Descripción Problema Falta d e comunicación, falta de coordinación. La estimación de riesgos no es una prioridad y los miembros del equipo no se interesan en problemas futuros que puedan ocurrir. Mitigación La administración de proyectos involucra la administración de riesgos cómo una manera de conocer eventuales amenazas sin todavía enfrentarlas. Prevención Es un estado transicional donde se pretende evitar algunos síntomas con el fin de identificar y eliminar la causa raíz del problema. Anticipación Describe el cambio cuando la 3 Oportunidad administración del riesgo pasa de ser algo subjetivo a algo cuantitativo Visión positiva de la administración del riesgo que es utilizado para innovar y dar forma al futuro antes incierto del proyecto. RISK ASSESSMENT METHODOLOGY En [2] se plantea que el primer paso en la administración del riesgo consiste en el risk assessment. El resultado que se debe obtener de este proceso debe ayudar en la identificación de controles apropiados para la reducción o eliminación del riesgo durante su fase de mitigación. The Risk Assessment Methodology agrupa nueve pasos básicos [1] los cuales se mencionan a continuación: Paso 1: Caracterización del sistema Paso 2: Identificación de amenazas Paso 3: Identificación de vulnerabilidad Paso 4: Análisis de control Paso 5: Determinación de probabilidad Paso 6: Análisis del impacto Paso 7: Determinación del riesgo Paso 8: recomendaciones de control Paso 9: Documentación de resultados 4 Metodologías para la evaluación y análisis de riesgos 1. Metodología de análisis de riegos COBRA Es una metodología para el análisis de un rango dado de riesgos y una herramienta para la evaluación de riesgos en seguridad [9]. Se encuentra directamente relacionada con otras metodologías de evaluación de riesgos tales como la cuantitativa y la cualitativa (ver tabla 1). Por otro lado, esta metodología permite evaluar la importancia relativa de todos los riesgos y vulnerabilidades entorno al sistema. Además genera recomendaciones y soluciones apropiadas, reporta evaluaciones escritas y niveles de riesgo. COBRA como una metodología para el análisis de riesgos permite [8]: - Identificar amenazas del sistema, vulnerabilidades y exposiciones. - Medir el grado de riesgo actual para cada área del sistema y relacionarlo directamente con el posible impacto que pueda generar sobre el negocio. - Ofrece soluciones detalladas y recomendaciones para reducir los riesgos. Proceso de evaluación de riesgos usando COBRA En [8] “The Risk Assessment Process” se describen los tres estados generales que involucra el proceso de análisis de riesgos utilizando COBRA: a. Construcción de cuestionario: Construye un cuestionario de riesgo de acuerdo con el sistema. En consideración. Los cuestionarios individuales de cada módulo del sistema son seleccionados desde la base de conocimiento del sistema. El proceso de construcción del cuestionario puede llevarse a cabo de dos maneras. Manual o automáticamente. - Elaboración Manual del cuestionario: Mediante este tipo de elaboración, el sistema crea un cuestionario que se acomoda específicamente al sistema del usuario, esto después de que otros cuestionarios iniciales (cuestionario de impacto y cuestionario de negocio) son finalizados. Los cuestionarios de impacto y de negocio determinan qué módulos deben ser seleccionados para ser incluidos detalladamente en el cuestionario. - Elaboración automática del cuestionario: Se debe aplicar dadas las siguientes razones [8]: - Consideración de un aspecto específico de riesgos. - Realización de la evaluación de riesgos en varios escenarios propuestos. - Análisis de todas las áreas de riesgos, incluso si algunas de ellas no se consideran de gran significancia para la organización. 5 b. Inspección del riesgo: En este estado se maneja el proceso de finalización del cuestionario: “Los módulos cuestionados son completados individualmente por el personal apropiado” [8]. Finalmente los resultados son reunidos en la etapa de generación del informe. c. Generación de reporte: Es utilizado para mostrar los resultados desde el cuestionario completo. Estos resultados pueden ser interpretados de forma técnica o no. Las secciones que provee el reporte son: - Soluciones recomendadas a los problemas identificados, así como sugerencias adicionales de seguridad. - Una evaluación descriptiva y nivel cuantitativo de riesgos en cada área considerada. - Un análisis del impacto por cada área. - Relación entre las áreas de riesgo y las posibles implicaciones de tipo financiero y de negocio. 2. Item Quantitative Risk Assessment System (iQRAS) Es una herramienta de software construida sobre el sistema operativo Windows, Modela funciones nominales de un sistema, el tiempo y la probabilidad de dichas desviaciones y potenciales consecuencias [7]. La elaboración de un proyecto sobre esta herramienta incluye tres pasos principales [7] que se mencionan a continuación: a. Establecimiento de un Diagrama Principal Lógico (Master Logia Diagram) e Iniciación de Eventos. Consiste en construir una jerarquía del sistema que se quiere analizar, considerando el nivel más bajo como el componente que lo integra. Una vez construida la jerarquía, el siguiente paso es la identificación de la Iniciación de Eventos que pueden tener lugar en los elementos de los componentes o niveles más bajos del sistema [7]. Tales eventos comprenden cualquier falla del subsistema o componente del sistema. b. Desarrollo de escenarios de riesgos mediante Diagramas de Secuencia de Eventos (Event Sequence Diagrams). Diagramas de Secuencia de Eventos Estos diagramas describen eventos y su transición a estados finales del sistema. De estas maneara cada camino que se establece entre la Iniciación de Estados a un estado Final se denomina escenario [7]. 6 Consiste en el desarrollo de escenarios de riesgo utilizando Diagramas de Secuencia de Eventos [7]. c. Cuantificación de eventos. Consiste en la cuantificación de eventos mediante valores normalizados, también conocidos como árboles de fallas o datos de distribución. Utilizando estos datos es posible establecer la probabilidad de cada Iniciación de Eventos y PE que puedan ocurrir. d. Análisis. Teniendo en cuenta que existen diferentes opciones de análisis dependiendo del objetivo del proyecto, es posible presentar una línea base desde donde todos los futuros cuestionamientos son comparados para establecer si el riesgo incrementa o decrece. Con este fin IQRAS [7] como metodología para el análisis de riesgos provee un análisis de sensibilidad:“donde la probabilidad de un evento es dada en un rango con el fin de determinar qué tan sensible resulta el modelo ante un evento específico.” 3. Metodología CORAS El proyecto CORAS [5] desarrolló una metodología soportada por una herramienta computacional basada en modelos de análisis de riesgos de sistemas críticos en seguridad. 4. The Operationally Critical Threat, Asset, and Vulnerability Evaluation (OCTAVESM) Metodología que define los componentes esenciales de la evaluación de riesgos en seguridad de manera sistemática y comprensiva. Este método le puede permitir a una organización tomar decisiones de protección entorno a su información en aspectos tales como: confiabilidad, integridad, disponibilidad. La elaboración de un proyecto sobre esta herramienta incluye tres fases principales [6] que se mencionan a continuación: Fase 1: Construcción de la evaluación basada en perfiles de riesgos. Dentro de esta fase se evalúan áreas distintas del sistema para identificar información importante de los activos, las amenazas a dichos activos, los requerimientos de seguridad y las acciones que actualmente se encuentra desarrollando la organización para proteger sus activos de información así como sus debilidades y vulnerabilidades. 7 Fase 2: Identificación de las vulnerabilidades en la infraestructura: es una evaluación de la infraestructura de la información. Aquí los componentes de la infraestructura de la información son evaluados teniendo en cuenta sus debilidades y vulnerabilidades. Fase 3: Desarrollo de estrategia y planes de seguridad. Los resultados de las evaluaciones generados en las dos fases anteriores son analizados para identificar los riesgos y evaluar su impacto dependiendo del objetivo del sistema. 8 Comparación de métodos de análisis de riesgos A continuación se muestra un comparativo entre las metodologías descritas anteriormente. Metodología Cualitativa Análisis de riesgo preliminar Descripción - - - Análisis de la secuencia de eventos que podrían transformarse en un riesgo potencial. Posibles eventos indeseables o inesperados primero son identificados y luego analizados separadamente. La idea es formular posibles mejoras o medidas preventivas para cada evento o posible amenaza. Estudios de operabilidad y riesgo Modo de fracaso y análisis de efectos Ventaja Provee una base en la determinación de las categorías de riesgos que deberían ser investigadas más a fondo junto con los métodos de análisis más convenientes. Los diagramas de frecuencia y consecuencia pueden ayudar - Riesgos pueden ser clasificados según categoría, frecuencia y severidad - Ofrece una base de datos de porcentaje de fallas que puede ser consultada para acceder a la frecuencia potencial de amenazas. Es un procedimiento mediante el cual cada falla potencial de un sistema es analizado para determinar sus efectos sobre éste y clasificarlo de acuerdo con su severidad. Técnicas basadas en árbol Análisis de árbol de fallas - - Es un diagrama lógico el cual muestra una relación entre las fallas del sistema y las fallas de los componentes del sistema. Es una técnica basada en Puede ser utilizado en la fase de diseño así como en fases operacionales del sistema. Un evento indeseado es primero definido mientras que las relaciones causales de las fallas asociadas a 9 lógica deductiva. Análisis de árbol de efectos Es un método para ilustrar la secuencia de salidas o resultados que pueden presentarse después de la ocurrencia de un evento inicial seleccionado. Análisis de causa – consecuencia - - Management Oversight Risk Tree Técnicas para sistemas dinámicos Método GO Es un método para ilustrar la secuencia de salidas o resultados que pueden presentarse después de la ocurrencia de un evento inicial seleccionado. Utiliza un análisis de consecuencia ese evento son luego identificadas. Un evento indeseado es primero definido mientras que las relaciones causales de las fallas asociadas a ese evento son luego identificadas Un evento indeseado es primero definido mientras que las relaciones causales de las fallas asociadas a ese evento son luego identificadas. Brinda una vista general de las causas del acontecimiento primero de descuidos de administración y omisiones o de riesgos asumidos o los dos. Utiliza 17 operadores que Operadores ayudan en la construcción independientes son del modelo. usados para modelar Presenta tres tipos básicos componentes que de operadores: no requieren independiente, entradas. dependiente y lógico. Operadores Es utilizada en dependientes aplicaciones prácticas requieren de por lo donde las condiciones menos una entrada limitantes para el sistema con el propósito de a ser modelado están bien obtener una salida. definidas mediante esquema o diseños del Operadores lógicos: sistema. con los datos probabilísticos de cada operador 10 independiente y dependiente, la probabilidad de éxito de la Modelado de Markov - - Es una técnica de modelado clásico utilizada para estimar el comportamiento dependiente del tiempo de algunos sistemas dinámicos. Esta metodología incluye el tiempo explícitamente y pude extenderse parea cubrir situaciones en donde los parámetros del problema son dependientes del tiempo. 11 Comparación de herramientas computacionales de métodos de análisis de riesgos Metodología y herramientas Descripción - Herramienta de software en Windows para la evaluación probabilística de riesgos. - Modela funciones nominales de un sistema, el tiempo y la probabilidad de dichas desviaciones y potenciales consecuencias. Item Software iQRAS [7] Ventaja Ayuda en el entendimiento de los riesgos asociados al sistema mediante la generación de estimaciones cuantitativas de niveles de riesgo. Provee capacidades para modelar evaluaciones probabilísticas de riesgos (PRA en sus siglas en inglés) así como de análisis cuantitativo y cualitativo. Permite modelar fallas del sistema para ser modeladas en forma de diagramas de secuencia de eventos y árboles de fallos. Operationally Critical Threat, Asset, and Vulnerability Evaluation (OCTAVE) Framework, Version 1.0 [6] Framework para la identificación y manejo de riegos de seguridad de la información. Es además un método de evaluación que permite a una organización los elementos (activos) de información, las amenazas frente a estos elementos, - Provee una interfaz gráfica que incluye editores para árboles de fallos combinadas con pantallas de análisis que proveen resultados en formato tabular y gráfico. Mediante la identificación de amenazas y vulnerabilidades la organización puede empezar a entender qué información está en riesgo. Con este entendimiento la organización puede 12 CORAS [5] Metodología para los aspectos que integran modelos basados en la estimación de riesgos de seguridad. Herramienta basada en la metodología para el análisis de modelos de riesgos de sistemas de seguridad críticos. diseñar e implementar una estrategia de protección para reducir el panorama de riesgos expuesto en su activo de información. Resulta útil en el desarrollo de nuevos sistemas y en el mantenimiento y mejoramientos de sistemas legacy. Provee una especificación basado en el lenguaje UML. Provee un repositorio de paquetes de experiencias reusables. COBRA[8] Es una herramienta que trabaja sobre el sistema operativo Windows. Permite identificar vulnerabilidades y amenazas al sistema. Mide el grado de riesgo actual para cada área o aspecto del sistema relacionándolo directamente al impacto potencial del negocio. Ofrece soluciones detalladas para reducir los riesgos. Provee reportes técnicos. Provee un reporte de las vulnerabilidades encontradas. Customización automática: El análisis de los riesgos es capaz de acomodarse al entorno de la organización y el sistema, mediante la generación de cuestionarios dinámicos desde la base del conocimiento de módulos existentes de la organización o que hacen parte del entorno del sistema Flexibilidad: permite la estructuración del análisis de riesgos según los módulos en los que se divide organización. La herramienta permite generar reportes. 13 Estimación del Tamaño del Software Esta actividad se refiere a la necesidad de saber a ciencia cierta que tan grande va a ser un software que voy a realizar, y poder poner de manera tangible el costo de desarrollar un sistema basándose en una medición acertada acerca del tamaño del software. La estimación del tamaño del software se puede realizar en diferentes etapas del proyecto, y dependiendo en que periodo de tiempo se haga, se podría decir que se puede determinar su correspondencia con el tamaño real del software, por ejemplo si la estimación se realiza al final del proyecto se puede realizar una estimación por así decirlo 100% acertada, ya que en este momento ya se conoce cuanto duro el proyecto, ya se conoce la cantidad de código escrito, y si la estimación se realiza en etapas tempranas del proyecto se podría decir que la estimación que se realizaría esta bastante alejada de la realidad, pero esto no es del todo cierto ya que las estimaciones dependen de múltiples factores, pero lo que si es totalmente cierto es que entre mas temprano se realice la estimación mayo será la incertidumbre acerca de todos los factores que afecten el proyecto. Lo realmente en la estimación no es necesariamente que esta debe ser 100% confiable, si no el hecho de la realización de la misma, lo cual ayuda como ya se menciono el la determinación del costo del proyecto, por lo cual se recomienda que durante todo el desarrollo del proyecto se realicen estimaciones y se corrijan las anteriores con la información que valla arrojando el proyecto, lo que a largo plazo ayuda a que las estimaciones que se hagan sobre proyectos futuros sean cada vez mas acertadas. Al igual que los procesos de software en donde las organizaciones son categorizadas en niveles de madurez, lo mismo también ocurre en cuanto al nivel de las empresas para estimar el tamaño de un software en desarrollo, para esta medición de la madurez se tienen 5 niveles en donde se caracteriza principalmente que las organizaciones que se encuentran del nivel 1 al 3 los métodos usados para realizar la estimación no requieren el uso de datos históricos de proyectos pasados, en cambio las organizaciones que se encuentran en el nivel 4 y 5 usan métodos que requieren de información histórica y además integran a estos métodos sus mejores practicas y lecciones aprendidas. Principalmente las técnicas mas usadas para la estimación del tamaño del software son el conteo de líneas de código del programa producido, y el conteo de puntos de función que se refiere al conteo de partes lógicas del programa a producir, pero en este tipo de estimaciones no se tienen en cuenta los documentos que se deben generar cuando se esta construyendo un software, dichos documentos también requieren tiempo y recursos, que incrementan el tamaño del software en desarrollo. 14 Metodologías de Estimación del Tamaño del Software A continuación se presenta una descripción de cada una de las metodologías de estimación del tamaño que consideramos las mas importantes y mas usadas por la industria, como ya e menciono anteriormente existen básicamente 2 aproximaciones a esta estimación el conteo de líneas de código y el conteo de puntos de función, a continuación describiremos dichas aproximaciones. Estimación Basada en Líneas de Código. Esta estimación se podría catalogar como de tipo tardío, ya que el numero total de líneas de código solo se puede conocer cuando el producto este terminado, aunque la tarea no es tan sencillo como contar la longitud de cada archivo, se debe acordar un formato, en donde se especifique se es lo que se va a contar y que no, por ejemplo los comentarios escritos en el código no deberían ser contados, por lo cual solo se debe contar, lo que se especifique a ser contado. Dentro de esta categoría existen varias metodologías las cuales usan las líneas de código como base para la realización de su estimación, a continuación se explican algunas de estas metodologías. Estimación por Conteo de Bloques Este enfoque se basa en estimar el número de funciones esperadas que tendrá el sistema, como se puede notar esta es un enfoque de estimación temprana ya que se estima el numero de funciones esperadas, y como es de suponerse cuando se tiene poca información acerca del proyecto las estimaciones no podrían ser muy exactas, y a medida que avanza el proyecto se esperaría que las estimaciones cada vez se fueran volviendo mas coherentes con la realidad. Este método también puede ser aplicado usando componentes de software en cambio de bloques de código, lo cual hace que el método pueda ser aplicado en diferentes grados de detalle. Adicionalmente al método se le pueden agregar funciones estadísticas para encontrar una estimación mas precisa, para esto se usa la desviación estándar, la cual se obtiene a partir de la información de proyectos pasados ya realizados, lo cual mejora en gran parte las estimaciones para esa compañía. 15 Ahora se describirá un poco los paso que se siguen en el uso de este método. 1. Estimar el número de bloques, o componentes de software esperados. 2. Multiplicar el número de bloques por el tamaño esperado de cada tipo de bloque. 3. Calcular la desviación estándar para dicho proyecto. 4. Aplicar el método repetidamente para los diferentes niveles de detalle, y así obtener una estimación mas precisa. Estimación del Tamaño Estadística Este método se basa en la estimación del tamaño a partir del tamaño de cada uno de los componentes que integran el sistema, o cual posibilita que se estime el sistema completo, como cada uno de sus componentes por separado, a su vez el método se encarga de disminuir la incertidumbre acerca de las estimaciones de os componentes individuales, para de esta manera tener una estimación mucho mas segura del sistema completo, para esto el método se basa en la estimación por analogía, en la cual se compara el proyecto actual con otros anteriores ya realizados, lo cual quiere decir que dentro de la organización se debe mantener una base de datos con la información acerca de todos estos proyectos anteriores que servirán para la estimación del proyecto en curso. A continuación se listaran los pasos para estimar el tamaño del software con este método. 1. Determinar las funciones que compondrán el nuevo sistema. 2. Buscar Información acerca del tamaño de funciones similares ya desarrolladas. 3. Identificar las diferencias entre las funciones similares y las nuevas. 4. Para cada componente o función a estimar, se deben estimar tres parámetros, el menor, medio y máximo tamaño de cada uno de los componentes o funciones. 5. Calcular la media estadística y desviación estándar de cada uno de los números obtenidos en el numeral anterior. 6. Tabular cada uno de estos datos obtenidos. 7. Calcular la media total del proyecto, y la desviación estándar del proyecto. Estimación por Lógica Difusa Este método se basa en dividir los proyecto de software en categorías de tamaño, en las cuales dependiendo en la cantidad de líneas de código cada proyecto haya producido, por ejemplo se podrían poner las categorías, grande, mediano y pequeño, para encasillar a cada uno de los proyectos de software. Para realizar esta categorización se requiere tener información de proyectos anteriores con los cuales se puedan generar los grupos antes descritos. 16 Y como es de suponerse para realizar la estimación del nuevo proyecto se debe juzgar en que categoría quedaría el nuevo proyecto, lo cual daría un rango de líneas de código que el nuevo proyecto podría producir. Un problema que presenta este método, es que el cambio tecnológico hace que la magnitud en líneas de código de un proyecto varié, lo cual podría hacer que los grupos realizados cambien. Estimación Basada en Puntos de Función Este método se diferencia a los basados en líneas de código en que, no se basa en la longitud de programa si no en la funcionalidad que presta, lo cual hace a este método independiente del lenguaje. El método realiza su estimación contando el número de componentes de cada clase de punto funcional, luego se estima la complejidad de cada uno de los componentes que seria media , alta ,baja, según sea el caso, luego se multiplica cada contador de puntos de función por el valor adecuado, y se suma el total de puntos de función. Cada uno de los tipos de puntos de función se describe a continuación. 1. Entradas externas: Datos o entradas de control al sistema que causan que el sistema lleve a cabo algún procesamiento. 2. Salidas Externas: datos o salidas de control que salen del sistema, luego de que un procesamiento a sido llevado a cabo. 3. Peticiones Externas: Solicitudes del sistema que requieren inmediata atención. 4. interfaces Externas: Archivos o programas que salen del sistema. 5. Archivos Internos: agrupamiento lógico de información almacenada en el sistema. Con cada uno de estos elementos se determina que tan grande va a ser el sistema a desarrollar. Salidas Externas 17 Estimación de Costos El costo del tamaño del software es básicamente, el propósito de estimar cualquier parámetro acerca de un proyecto de software, ya que esta el la manera de retribuir el esfuerzo realizado al crear un sistema de software, y de una buena estimación del costo de un sistema depende que se obtengan ganancias o perdidas al final del desarrollo de un proyecto. Como es de suponerse el costo de un proyecto esta completamente ligado al tamaño del mismo, ya que el tamaño determina en la mayoría de los casos la duración del proyecto y la dificultad de realizar dicho sistema, estos son algunos de los factores que deben ser tenidos en cuenta al momento de realizar una buena estimación del costo de un proyecto, pero no los únicos que deben ser tenidos en cuenta, ya que se debe tener en cuenta muchos otros factores como es el caso del personal que realizar dicho proyecto, y los recursos necesarios para dicho proyecto. Lo anterior nos deja una clara visión acerca de los múltiples aspectos que deben ser tenidos en cuenta al momento de realizar una estimación apropiada del costo de un proyecto, así como el método a usar para dicha estimación. A continuación se hará una breve descripción de los tipos y métodos mas importantes para estimar el consto de un proyecto de software. Metodologías de Estimación del Costo de un Proyecto de Software En general existen 2 tipos de métodos para la estimación del costo de un proyecto, estos son los métodos algorítmicos y no algorítmicos, los métodos no algoritmos se basan por lo general en la experiencia en proyectos anteriores, como en la conveniencia hacia el cliente, por un determinado precio. Métodos no algorítmicos Costos por Analogía Requiere que al menos se tenga información de un proyecto anterior similar, se usa los datos de las anteriores estimaciones y sus resultados para lograr una estimación mas precisa. 18 Juicio Experto Se requiere consultar a uno o más expertos en la estimación del tamaño de software, donde cada uno realiza una estimación diferente y luego se llega a un consenso sobre esta. Pasos : 1. Se presenta a coda estimador, se realiza la estimación en la base de los compañeros. 2. Cada experto llena una forma con los resultaos obtenidos. 3. El Cordinador prepara un resumen sobre cada una de as estimaciones. 4. Se Repiten los 2 últimos aspectos, hace lograr consenso entre los expertos. Parkinson Se estima sobre el volumen de la producción del cliente, en la cual se produce con os recursos que este puede generar, se ajusta el presupuesta para cumplir el presupuesto del cliente. Precio a Ganar Se cuadra el valor del proyecto para que sea el mejor de todos, sin tener en cuenta el tamaño, toma en cuenta el presupuesto del cliente. Bottom UP Se estima cada no de los componentes del sistema por separado, y luego se hace una estimación sumando todas las estimaciones pequeñas. Too-down Se Obtiene una estimación global a partir de las características de todo el sistema, para luego realizar basado en esto, la estimación de cada parte del sistema. 19 Métodos Algorítmicos Estos métodos se basan en la aplicación de una función, a las propiedades del sistema para obtener una estimación formal de proyecto a realizar. Factores de Costo Trata de estimar mas factores a demás del tamaño del producto, existen 5 tipos: Factores de Producto Factores Computacionales. Factores Personales Factores del Proyecto Modelos Lineales Basado en la sumatoria de los aspectos que son relevantes al proyecto. Tiene por desventaja que, la mayoría de veces el desarrollo de un proyecto en cuanto al precio no se comporta de forma lineal Modelos Multiplicativos Se multiplican los factores importantes del software que determinan, el costo total del proyecto. Modelos basados en funciones de potencia. Relaciona el tamaño del software, con otros factores de costo que influyen en el costo del desarrollo del proyecto. COCOMO Modelo basado en funciones de potencia, en donde los coeficientes dependen de la complejidad del proyecto a desarrollar, y los factores de costo asociados en el modelo SLIM Se basa en la distribución de poder hombre y los descubrimientos en proyectos anteriores, se usa la ecuación de software, en donde se relaciona, el tiempo de entrega, factores ambientales, en los cuales se refleja la capacidad de desarrollo de la compañía, mediante el uso de información de proyectos pasados. 20 Modelos discretos Estos modelos son del tipo modular en donde se relaciona el esfuerzo, duración y dificultad y otros factores de costo, son fáciles de usar. 21 6. BIBLIOGRAFÌA [1] Hall, E., “Managing Risk Methods For Software Systems Development”, Canada, 1998. [2] Stoneburner, G., Goguen, A., Feringa, A., “Risk Management Guide for Information Technology Systems”, National Institute Standards and Technology, Estados Unidos, 2002. [3] T. Hiap Keong, “Risk Analysis Methodologies,” Jul.1997; http://home1.pacific.net.sg/~thk/risk.html [4] Rasche, T., “Risk Analysis Methods – A Brief Review”, The University of Queensland, 2001. [5] Coras Project, “A Platform for Risk Analysis of Security Critical Systems”, Junio 2001; http://www2.nr.no/coras [6] C.Alberts, A.Dorofee “An Introduction to the OCTAVESM Method”, 30 Junio. 2001; Software Engineering Institute, Carnegie Mellon University, http://www.cert.org/octave/methodintro.html [7] “Item Software iQRAS”, Diciembre 2002; NASA, http://www.itemsoft.com/qras.shtml [8] “Security Risk Analysis & Limited,http://www.riskworld.net/thanks.htm Assessment”, Systems Security [9] “Introduction to Security Risk Analysis”, Introduction to Security Risk Analysis, http://www.security-risk-analysis.com 22