2. Ajustes al modelo base por estimación más temprana (diseño pre-arquitectura)
3. Ajuste por mantenimiento
3.1 ¿Cómo estimar el número
de líneas a modificarse y agregarse?
4. Estimación del número esperado de defectos
Todas las constantes que aparecerán son sujetos a calibración
según los datos históricos de la empresa que adopte el modelo.
En este sentido no se distingue de COCOMO 81.
La simplificación de N. Callaos consiste en
considerar que toda pantalla o reporte vale 5 pf y que sólo el 60%
de los puntos de función provienen de pantalla --el resto vienen
de tablas o archivos lógicos.
| Datos por pantalla | |||
|
# de tablas
|
|
|
|
|
1
|
|
|
|
|
2-3
|
|
|
|
|
4+
|
|
|
|
Para efectos de Java, cada punto de función corresponde a 53
líneas lógicas de código fuente. Los factores para
diferentes lenguajes se encuentran en:
http://www.spr.com/library/0Langtbl.htm
PM = 2.94 * TamañoE * PRODUCTORIA(i=1..n) EMi
dondeTamaño se mide en KSLOC,
EMi corresponde a los factores de ajuste de costo.
E es el exponente no lineal, calculado según:E = 0.91 + 0.01* SUMATORIA(i=1..5)SFidonde SFi son parámetros de costo (cost-drivers).
PM = 2.4 * Tamaño1.05En el nuevo modelo, el exponente de 1,0521 puede obtenerse a partir de los siguientes valores SF:
El modelo COCOMO ajustado según N. Callaos
usa una constante de 2.4, el modelo orgánico de COCOMO 81 usaba
3.2. La diferencia en el factor corresponde a ajuste a la empresa desarrolladora.
COCOMO 81, preveía sólo tres exponentes diferentes según
el tipo de desarrollo (1.05 correspondía a desarrollos orgánicos,
1.12 a desarrollos semi-separados y 1.2 a desarrollos embebidos). COCOMO
II podría abarcar más de mil valores diferentes, entre un
mínimo de 0.91 y un máximo de 1.2262.
La fórmula básica para tiempo calendario del desarrollo TDEV:
TDEV = 3.67* PM0.28+0.002* SUMATORIA(i=1..5)SFi
TDEV = 2.4 * PM0.35Usando los mismos valores de SF que arrojaron un exponente E de 1.0521, cercano al viejo desarrollo orgánico, el exponente del tiempo calendario se incrementa de 0.35 a 0.5642!
COCOMO II preve que este exponente pueda variar de 0.28
a 0.9124,
Para estimar cuántas personas requiere el desarrollo:
PM/TDEV
PREC: Desarrollos previos similares
- 0.00, nuevo desarrollo es idéntico a previos
- 1.24, es muy parecido
- 2.48, bastante parecido
- 3.72, aspectos novedosos
- 4.96, muy diferente
- 6.2, totalmente diferente.
FLEX: Flexibilidad del desarrollo (e.g. grado de acuerdo con requerimientos pre-establecidos o con interfaces externos pre-existente)
- 0.0, metas son generales
- 1.01, cierto acuerdo
- 2.03, acuerdo general
- 3.04, cierta flexibilidad
- 4.05, flexibilidad ocasional
- 5.07, riguroso
RESL: Manejo de riesgos y arquitectura
- 0.0, plan identifica todos los riesgos críticos y establece hitos para resolverlos, calendario y presupuesto toma en cuenta riesgos, arquitectura puede tomarse hasta el 40% del esfuerzo de desarrollo, herramientas disponbles para resolver/mitigar riesgos y verificar especif. de la arq., muy poca incertidumbre re misión, interfaz con usuario, tecnología, desempeño, riesgos no son críticos;
- 1.41, plan identifica la mayoría de los riesgos críticos y establece hitos para resolverlos, calendario y presupuesto toma en cuenta la mayoría de los riesgos, arquitectura puede tomarse hasta el 33% del esfuerzo de desarrollo, herramientas disponibles para resolver/mitigar mayoría de riesgos y verificar especif. de la arq., poca incertidumbre re misión, interfaz con usuario, tecnología, desempeño, riesgos no son críticos.
- 2.83, plan identifica muchos de los riesgos críticos y establece hitos para resolverlos, calendario y presupuestogeneralmente toma en cuenta riesgos, arquitectura puede tomarse hasta el 25% del esfuerzo de desarrollo, herramientas regularmente disponibles para resolver/mitigar riesgos y verificar especif. de la arq., algo de incertidumbre re misión, interfaz con usuario, tecnología, desempeño, no más de un riesgo crítico.
- 4,24, plan identifica algunos de los riesgos críticos y establece hitos para resolverlos, calendario y presupuesto toma en cuenta algunos de los riesgos, arquitectura puede tomarse hasta el 17% del esfuerzo de desarrollo, hay problemas con la disponibilidad del arquitecto, algo de herramientas disponibles para resolver/mitigar riesgos y verificar especif. de la arq., considerable incertidumbre re misión, interfaz con usuario, tecnología, desempeño, entre 2-4 riesgos críticos.
- 5.65, plan identifica pocos riesgos críticos y establece hitos para resolverlos, calendario y presupuesto toma en cuenta pocos riesgos, arquitectura puede tomarse hasta el 10% del esfuerzo de desarrollo, hay problemas con la disponibilidad del arquitecto (disp. menor al 40%), pocas herramientas disponibles para resolver/mitigar riesgos y verificar especif. de la arq., significativa incertidumbre re misión, interfaz con usuario, tecnología, desempeño, entre 5-10 riesgos críticos
- 7.07, plan no identifica los riesgos críticos, calendario y presupuesto no toma en cuenta los riesgos, arquitectura puede tomarse hasta el 5% del esfuerzo de desarrollo, hay problemas con la disponibilidad del arquitecto (disp. menor del 20%), herramientas no disponibles para resolver/mitigar riesgos y verificar especif. de la arq., extrema incertidumbre re misión, interfaz con usuario, tecnología, desempeño, más de 10 riesgos críticos.
TEAM: Cohesión del equipo de desarrollo
- 0.0, interacciones fluidas, objetivos y culturas de accionistas totalmente consistentes, total habilidad y disponibilidad de accionistas para acomodar objetivos de otros accionistas, dilatada experiencia previa operando como equipo, visión y compromisos 100% compartidos.
- 1.1, interacciones altamente cooperativas, objetivos y culturas de accionistas fuertamente consistentes, fuerte habilidad y disponibilidad de accionistas para acomodar objetivos de otros accionistas, considerable experiencia previa operando como equipo, visión y compromisos considerablemente compartidos.
- 2.19, interaccones principalmente cooperativas, objetivos y culturas de accionistas considerablemente consistentes, considerable habilidad y disponibilidad de accionistas para acomodar objetivos de otros accionistas, mediana experiencia previa operando como equipo, visión y compromisos medianamente compartidos.
- 3,29, interacciones básicas cooperativas, objetivos y culturas de accionistas básicamente consistentes, habilidad y disponibilidad básica de accionistas para acomodar objetivos de otros accionistas, poca experiencia previa operando como equipo, visión y compromisos poco compartidos.
- 4,38, algunas interacciones dificiles, objetivos y culturas de accionistas algo consistentes, algo habilidad y disponibilidad de accionistas para acomodar objetivos de otros accionistas, poca experiencia previa operando como equipo, visión y compromisos poco compartidos.
- 5,48, interacciones difíciles, objetivos y culturas de accionistas poco consistentes, poca habilidad y disponibilidad de accionistas para acomodar objetivos de otros accionistas, nada de experiencia previa operando como equipo, visión y compromisos nada compartidos.
EPML: nivel de madurez estimada, en relación al modelo de madurez de software CMM:
- 0.00, nivel 5
- 1.56, nivel 4
- 3.12, nivel 3
- 4.68, nivel 2
- 6.24, nivel 1, superior
- 7.80, nivel 1, inferior.
Francamente considero un poco decepcionante los ajustes por mantenimiento,
ya que los parámetros del modelo correspondiente de COCOMO
II lucen muy difíciles de estimar en la práctica. Por esta
razón, combinaremos las ideas de COCOMO II con las de N. Callaos.
Se utilizan las mismas fórmulas que para desarrollo post-arquitectura, con las siguientes excepciones:
1. No se consideran aplicables los multiplicadores SCED y RUSE, por argumentos que me resultan poco convincentes. En particular, pienso que el grado de mantenibilidad con que fue desarrollado el software (en cierto modo esto lo mide RUSE) tiene que impactar el grado de esfuerzo del mantenimiento.
2. El multiplicador RELY (fiabilidad requerida para el software) depende de las exigencias de fiabilidad con que fue desarrollado el producto a mantener y que presumiblemente siguen imperando para el producto mantenido. La idea es que alejarse del valor nominal de fiabilidad incrementa el esfuerzo. Por un lado, si el producto fue desarrollado originalmente con un bajo grado de fiabilidad, costará más arreglarlo por su baja calidad; por otro lado si se desarroll'o con altos requerimientos de fiabilidad, costará más arreglarlo para no desmejorar su calidad. Los valores posibles para este multiplicador son:
3. Si se cambia menos del 50% del código existente puede
utilizarse un modelo sencillo de mantenimiento;
TAMmanten = (Códigoagregado + Códigomodif) * MAF + Códigoeliminado
El multiplicador MAF toma en cuenta el toma en cuenta los factores
SU y UNFM, según la fórmula:
MAF = 1 + (SU/100 *UNFM)
El factor SU refleja la dificultad en comprender el software a reutilizar
y se estima subjetivamente según la siguiente tabla:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El factor UNFM pretende capturar el grado de familiarirización del programador con el código que está adaptando y toma los siguientes valores:
Estas cifras son muy difíciles de estimar a priori, por lo que conviene nuevamente aprovechar los modelos de N. Callaos.
Según el modelo de mantenimiento de N. Callaos, un mantenimiento
perfectivo que involucra cambiar un campo, corresponde al 20% del esfuerzo
de desarrollar originalmente la pantalla, mientras que agregar un campo
nuevo corresponde al 10%. Tomando en cuenta que el mantenimiento perfectivo
corresponde tan sólo al 55% del costo del mantenimiento (el resto
corresponde a mantenimiento correctivo y adaptativo), deberíamos
estimar el número de puntos de función PFbase para un mantenimiento
tipo Delta Pensum según el siguiente esquema:
Calculado PFbase tenemos dos opciones:
Seguir las ideas de N. Callaos y considerar que un mantenimiento
perfectivo siempre esconde cierto grado de mantenimiento correctivo (ciertamente
fue el caso de Delta Pensum), por lo que agregaremos 36% de pf por
ello. Si se incluye mantenimiento adaptativo, agregaremos 40% adicional.
Es decir el total ajustado de puntos de función es o bien PFbase*1.36
o bien PFbase*1.76. Multiplicamos ese valor por el factor de traducción
a Java (y dividimos por mil) para obtener TAMmanten en
KSLOC. Este modelo arroja una estimación más alta del tamaño
de código que la primera opción.
Paso A:
Obtenga TAMAdaptado, la suma de KSLOC debido a instrucciones
nuevas e instrucciones modificadas, excluyendo aquellas líneas que
son generadas automáticamente por alguna herramienta traductora
(por ejemplo excluya las líneas que se generan por un compilador
4GL, porque se cambió de ambiente de ejecución).
Paso B:
Evalúe AAF, el llamado porcentaje de modificación.
AAF
se determina de la fórmula:
AAF = 0.4*DM + 0.3*CM + 0.3*IM
dondeDM: porcentaje de diseño modificado, que se considera un factor totalmente subjetivo,Estos porcentajes son dificiles de precisar: DM por su caracter subjetivo, CM por cuanto Boehm no precisa si, además de las líneas modificadas, cuentan las líneas agregadas (probablemente) y las eliminadas (no se especifica), e IM porque francamente veo dificil determinar "el porcentaje del esfuerzo que se requiere para integrar el software adaptado a un producto y probarlo, comparado con el esfuerzo normal de integración y prueba de un software nuevo de tamaño comparable".
CM: porcentaje del código modificado,
IM: porcentaje de esfuerzo de integración.
Paso C:
Calcule AAM, el factor de ajuste por código
adaptado. AAM se determina de la fórmula:
AAM =Paso D:[AA +AAF*(1 + 0.02*SU *UNFM)]/100, si AAF <= 50%[AA+AAF + (SU*UNFM)]/100, si AAF>50%
AA es el grado de trabajo necesario para evaluar y asimilar el código, y es dado por la siguiente tabla:
- 0: No requiere esfuerzo
- 2: Búsqueda básica de módulos y documentación
- 4: Hay que hacer algunas pruebas y evaluación de módulos
- 6: Hay que hacer considerables pruebas
- 8: Hay que hacer pruebas extensivas.
TAMequiv = TAMAdaptado *AAM.
TAMmanten = TAMequiv + Tamelim
Paso F:
Aplique las fórmulas del paso 3, sustituyendo
TAMAÑO por TAMmanten y recordándose de los ajustes
por mantenimiento 1,2.
La salida del modelo de inyección de defectos es el número de defectos no triviales, lo que incluye:
Note que COQUALMO considera que se genera una tasa de defectos por
tamaño de código, a diferencia de TSP que considera que se
genera por tiempo de desarrollo.
Las tasas base de COQUALMO, pueden ajustarse con casi todos los multiplicadores y factores de ajuste salvo FLEX. Tentativamente se considera que los multiplicadores pueden ser de hasta:
No entraremos en detalle en el modelo de remoción de defectos.
Basta con indicar que la tasa de remoción de defectos se ve afectado
por inspecciones, herramientas de análisis y pruebas (de la ejecución).
COQUALMO estima que la tasa residual de defectos puede variar entre 1.57
y 60 defectos por KSLOC: Las pruebas contribuyen a remover entre 23 y 88%
de los defectos (pero, sólo de codificación?).
http://sunset.usc.edu/que presenta material sobre COCOMO, el modelo WinWin y el modelo de espiral.
COCOMO 81 se presentó en:
Los modelos de estimación de N. Callaos no se encuentran disponibles públicamente. Una interesante (y polémica) descripción de los fundamentos de la metodología que han desarrollado se encuentra en: