Escolar Documentos
Profissional Documentos
Cultura Documentos
Versión 3.0.1
Manual de Medición
(Guía COSMIC de implementación de ISO/IEC 19761: 2003)
Mayo de 2009
Agradecimientos
1
Equipo Principal de Autores de la Versión 2.0 de COSMIC (por orden alfabético)
Alain Abran, École de technologie supérieure – Universidad de Québec,
Jean-Marc Desharnais, Software Engineering Laboratory in Applied Metrics - SELAM,
Serge Oligny, Bell Canadá,
Denis St-Pierre, DSA Consulting Inc.,
Charles Symons, Software Measurement Services Ltd.
Moritsugu Araki, JECS Systems Thomas Fetcke, Germany Patrice Nolin, Hydro Québec,
Research, Japan Canada
Fred Bootsma, Nortel, Canada Eric Foltin, University of Magdeburg, Marie O’Neill, Software Management
Germany Methods, Ireland
Denis Bourdeau, Bell Canada, Anna Franco, CRSSM, Canada Jolijn Onvlee, The Netherlands *
Canada
Pierre Bourque, , ÉCole de Paul Goodman, Software Laura Primera, UQAM, Canada
Technologie supérieure, Canada Measurement Services,United
Kingdom
Gunter Guerhen, Bürhen & Partner, Nihal Kececi, University of Maryland, Paul Radford, Charismatek, Australia
Germany United States
Sylvain Clermont, Hydro Québec, Robyn Lawrie, Australia Eberhard Rudolph, Germany
Canada
David Déry, CGI, Canada Ghislain Lévesque, UQAM, Canada Grant Rule, Software Measurement
Services, United Kingdom*
Gilles Desoblins, France Roberto Meli, Data Processing Richard Stutzke, Science
Organization, Italy Applications Int’l Corporation, United
States
Martin D’Souza, Total Metrics, Pam Morris, Total Metrics, Australia* Ilionar Sylva, UQAM, Canada
Australia
Reiner Dumke, University of Risto Nevalainen, Software Vinh T. Ho, UQAM, Vietnam
Magdeburg, Germany Technology Transfer Finland,
Finland *
Peter Fagg, United Kingdom Jin Ng, Hmaster, Australia
* Los miembros fundadores del Equipo Principal de COSMIC, junto con los autores de COSMIC-FFP
1
La versión 2.0 fue la primera versión públicamente disponible del método COSMIC-FFP, tal como fue conocida
Alain Abran, École de Technologie Jean-Marc Desharnais, Software Arlan Lesterhuis*, Sogeti, The
Supérieure, Université du Québec, Engineering Lab in Applied Metrics – Netherlands
Canada SELAM, Canada
Bernard Londeix, Telmaco, United Roberto Meli, Data Processing Pam Morris, Total Metrics, Australia
Kingdom Organization, Italy
Serge Oligny, Bell Canada Marie O’Neill, Software Management Tony Rollo, Software Measurement
Methods, Ireland Services, United Kingdom
Grant Rule, Software Measurement Luca Santillo, Agile Metrics, Italy Charles Symons*, United Kingdom
Services, United Kingdom
Juan J. Cuadrado-Gallego, EVALÚA Cristina Albarrán, EVALÚA Software Alfonso Gónzalez, EVALÚA
Software Measurement Consulting, Measurement Consulting, Spain Software Measurement Consulting,
Spain. jjcg@cosmicon.com Spain
Ivan Pinedo, EVALÚA Software Isaac Sánchez, EVALÚA Software Roi Vázquez, EVALÚA Software
Measurement Consulting, Spain Measurement Consulting, Spain Measurement Consulting, Spain.
La traducción de la Versión 3.0.1 de COSMIC ha sido realizada bajo los auspicios de AEMES,
Spanish Software Measurement Association
Copyright 2009. Todos los derechos quedan reservados. El Común Consorcio Internacional de la
Medida del Software, (COSMIC). El permiso para copiar todo o una parte de este material se
concederá siempre que las copias no se hagan ni se distribuyan comercialmente y que el título de la
publicación, su número de versión, y su fecha se citen y se notifique que la copia tiene el permiso del
Common Software Measurement International Consortium (COSMIC). Para la copia de otra manera
se requiere un permiso específico.
Una versión de dominio público del Manual de Medición COSMIC y otros informes técnicos,
incluyendo traducciones a otros idiomas se pueden encontrar en la Web en
www.gelog.etsmtl.ca/cosmic-ffp
2
Procedimientos del Taller Internacional de la Medición del Software IWSM ’99, Lac Supérieur, Québec, Canadá, 8-10 de
Septiembre de 1999. Véase para más detalle http://www.gelog.etsmtl.ca/iwsm99/index2.html.
El método COSMIC fue aceptado por el ISO/IEC JTC1 SC7 en diciembre de 2002 como el Estándar
Internacional ISO/IEC 19761 “Ingeniería del Software - COSMIC-FFP - Método de Medición de
Tamaño Funcional” (en lo sucesivo en este documento se referirá el mismo como ISO/IEC 19761).
Para mayor claridad, ISO/IEC 19761 contiene las definiciones de las normativas fundamentales y de
las reglas del método. El propósito del Manual de Medición es no sólo proporcionar estas normas y
definiciones, sino también proporcionar una explicación más detallada y muchos más ejemplos a fin
de ayudar a los medidores a comprender plenamente y poder aplicar el método. Sin embargo, a
medida que se ha ido adquiriendo más y más experiencia con el método, se ha encontrado valioso
añadir reglas y ejemplos para afinar las definiciones de algunos de los conceptos subyacentes. El
Consorcio Común Internacional de Medición de Software (COSMIC) prevé que estas adiciones y
mejoras se presentarán a la ISO para su inclusión en la norma ISO/IEC 19761 en la fecha prevista
para su revisión en 2007/08.
Este manual de medición es uno de los cuatro documentos COSMIC que definen la versión 3.0 del
método. Los otros tres son:
• Descripción de la documentación y Glosario de términos (El Glosario define todos los términos
que son comunes a todos los documentos COSMIC. Este documento describe también que se
dispone de otros documentos de apoyo tales como casos de estudio y directrices de aplicación en
dominios específicos)
• Descripción del Método
• Temas Avanzados y Relacionados (Este documento tratará en más detalle las tareas que
permitan garantizar la comparación de las mediciones de tamaño funcional e incluirá capítulos
sobre aproximación temprana o rápida de medición y convertibilidad de las mediciones, los cuales
aparecieron anteriormente en la versión 2.2 del Manual de Medición.)
A los lectores principiantes para quienes sea nueva la medición de tamaño funcional (FSM) o que
están familiarizados con otros métodos FSM se les recomienda encarecidamente que lean el
documento “Descripción del Método” antes de leer este manual de medición.
Los lectores familiarizados con la versión 2.2 del Manual de Medición observarán que el mayor
número de cambios en esta versión 3.0 se encuentra en la recién separada fase de “Estrategia de
Medición”.
Los principios originales del método COSMIC han permanecido sin cambios desde su primera
publicación en el primer borrador del Manual de Medición en 1999, a pesar de los refinamientos y
adiciones necesarias para producir la norma internacional y para producir las versiones 2.1, 2.2, 3.0 y
esta última versión 3.0.1 del Manual de Medición.
Los tamaños funcionales medidos de acuerdo a los principios y normas de las versiones 3.0 y 3.0.1
del Manual de Medición pueden variar de tamaño utilizando las versiones anteriores sólo porque las
nuevas normas tienen la intención de ser más precisas. Por lo tanto disponen un margen menor de
discrecionalidad en materia de interpretación personal de las normas que era posible con versiones
anteriores. Los cambios en el ámbito de la Estrategia de Medición y el cambio de nombre de la
unidad de medida dan lugar a diferencias triviales en las reglas para la presentación de mediciones
en comparación con versiones anteriores.
Explicación de los principales cambios de la versión 2.2 a la versión 3.0 del Manual de
Medición
En primer lugar debemos destacar que la unidad de medida COSMIC, el Cfsu (ahora rebautizado con
el nombre de CFP), no ha cambiado desde que se introdujo en la primera versión pública del Manual
de Medición COSMIC-FFP en el año 1999. Este es el equivalente COSMIC de, por ejemplo, una
unidad de medida estándar como el metro. Pero el tamaño funcional de una aplicación software
puede medirse de muchas maneras, y es a veces un problema, para cualquier Método de Medición
de Tamaño Funcional (Functional Size Method, FSM), responder a la pregunta de ¿qué tamaño
debemos medir?
Permítanos considerar como ejemplo el software de un teléfono móvil. Los usuarios podrían ser un
humano que presiona los botones, los dispositivos de hardware (por ejemplo, la pantalla, teclado,
etc.) que interactúan con la aplicación, o el sistema operativo sobre el que funciona el software o,
incluso separados por aplicaciones de software que interactúan con la aplicación que se está
midiendo. Los cuatro tipos de usuarios exigen diferentes funciones (de ahí que el tamaño funcional
difiera en función de a quién o a qué se define como el usuario). Entonces, ¿Cómo, si se nos da un
tamaño funcional, vamos a saber qué o quién fue el usuario(s)?, es decir, ¿Qué funcionalidad se
midió?
Fue esta cuestión la que inicialmente llevó al Comité de Prácticas de Medición COSMIC
(Measurement Practices Committee, MPC) a introducir en la versión 2.2 del Manual de Medición, los
Puntos de Vista de Medición del “Usuario Final” y del “Desarrollador”. Sin embargo, la experiencia ha
demostrado que estas definiciones, especialmente la de los Punto de Vista de la Medición del
“Desarrollador”, no son lo suficientemente generales como para ayudar a definir todas las
necesidades de medición. El MPC ha llegado a la conclusión de que la manera más correcta y más
general de enfocarlo es definir el concepto de “Usuario Funcional” y que los cambios en el tamaño
funcional dependan de qué o quién es definido como el usuario funcional. La identificación del usuario
funcional depende de la finalidad de la medición y el usuario funcional debería ser normalmente
identificable a partir de los Requisitos Funcionales de Usuario (Functional User Requirements, FUR)
del software que se desea medir. Por lo tanto ya no se necesitará más la idea de definir un “Punto de
vista de la Medición” específico.
El segundo problema es que sabemos que los FUR evolucionan a medida que el proyecto avanza y,
dependiendo de cómo se mida el tamaño, su tamaño puede parecer que crece. La primera versión
del FUR de una nueva aplicación software puede ser especificado a un “alto nivel”. A medida que el
proyecto avanza y los requisitos son elaborados con mayor detalle, los FUR se especifican con mayor
detalle, o a un “menor nivel” y su tamaño puede parecer que aumenta. Distinguimos estos diferentes
niveles de detalle como “niveles de granularidad”.
Por lo tanto, el problema que tiene que ser abordado ahora es ¿cómo podemos estar seguros de que
dos mediciones se han hecho en el mismo nivel de granularidad? Las versiones 3.0 y 3.0.1 del
Manual de Medición ofrecen recomendaciones sobre este aspecto, que es especialmente importante
cuando los tamaños son medidos a principios de la vida de un proyecto cuando los FUR están en
plena evolución. Este aspecto se vuelve crítico cuando los tamaños son utilizados para mediciones
del funcionamiento que deben compararse a partir de diferentes fuentes, como en ejercicios de
evaluación comparativa.
Es importante destacar que estos nuevos conceptos de “usuario funcional” y “nivel de granularidad” y
los procesos asociados para determinarlos que se han introducido en la “Estrategia de Medición” no
tienen por qué ser únicos para el método COSMIC. Son aplicables a todos los métodos de medición
del Tamaño Funcional de Software (FSM). Debido a que el método COSMIC se basa en sólidos
principios de ingeniería de software y es aplicable a una gama más amplia de dominios de software
que la “1ª generación” de Métodos FSM, ha sido reconocido el problema de definir adecuadamente
¿qué tamaño deberíamos medir? y se ha encontrado una solución.
La mayoría de medidores que utilizan COSMIC con el propósito de medir el rendimiento (por ejemplo,
para la estimación, evaluación comparativa, etc.), no tendrán que perder tiempo en la identificación de
los usuarios funcionales o sobre el nivel de granularidad con el que deben medir, ya que será
evidente. Sin embargo, para las mediciones donde las opciones pueden no ser tan evidentes, los
nuevos materiales de la “Fase de Estrategia de Medición” del Manual de Medición y el capítulo
relativo a garantizar la posibilidad de comparación de las mediciones de tamaño en el documento
“Temas Avanzados y Relacionados”, examina con mayor profundidad los factores a considerar.
Mayo 2009
El método de medición del tamaño funcional COSMIC está concebido para ser aplicable a la
funcionalidad del software de los siguientes dominios:
• Aplicaciones Software de Gestión, las cuales son las típicamente utilizadas para dar soporte a la
administración de negocios, tales como banca, seguros, contabilidad, personal, compras,
distribución o fabricación. Este software esta a menudo caracterizado como "rico en datos", ya
que está centrado principalmente en la necesidad de gestionar grandes cantidades de datos
acerca de aspectos del mundo real.
• Software en tiempo real, cuya tarea es mantener o controlar acontecimientos que están
sucediendo en el mundo real. Algunos ejemplos serían el software para centrales telefónicas y de
intercambio de mensajes, el software incluido en dispositivos para el control de máquinas tales
como los electrodomésticos, ascensores, motores de automóviles y aeronaves, para el control de
procesos y la adquisición automática de datos, y software de los sistemas operativos de los
ordenadores.
• Híbridos de lo anterior, como por ejemplo los sistemas de reservas en tiempo real de compañías
aéreas u hoteles.
El método de medición COSMIC aún no ha sido diseñado para tener en cuenta la funcionalidad del
software matemáticamente intensivo, esto es, software caracterizado por algoritmos matemáticos
complejos o otra reglas complejas especializadas, como por ejemplo sistemas expertos, software de
simulación, software de auto-aprendizaje, sistemas de predicción meteorológica, etc., o de procesado
continuo de variables tales como sonidos de audio o imágenes de vídeo, tales como, por ejemplo,
software para juegos de ordenador, instrumentos musicales, etc.
Para los programas con dicha funcionalidad es posible definir extensiones locales al método COSMIC
de medición. El manual de medición explica en qué contextos tales extensiones locales se deben
utilizar y proporciona ejemplos de una extensión local. Cuando se usan, estas extensiones locales
deben ser reportadas de acuerdo a los convenios presentados en el capítulo reportado de mediciones
de este Manual de Medición.
Todos los métodos de medición funcional están basados en la hipótesis de un modelo simplificado de
funcionalidad de software que se supone que es razonable “de media” para el dominio de
aplicabilidad en que es utilizado. Es necesario por tanto cierto cuidado al medir, comparar o utilizar
(por ejemplo, para la estimación) tamaños de software muy pequeños, y especialmente los cambios
muy pequeños de una aplicación software, donde las consideraciones “medias” pueden no ser
aplicables. En el caso del método COSMIC, 'muy pequeño' significa con pocos movimientos de datos.
Los tamaños funcionales medidos por el método COSMIC están diseñados para ser independientes
de cualesquiera decisiones de implementación propias de los artefactos operacionales del software
que se desea medir. "Funcionalidad" se refiere al “procesamiento de la información que el software
debe realizar para sus usuarios”.
Más concretamente, una declaración de FUR describe “qué” debe hacer el software por los usuarios
funcionales, que son los remitentes y destinatarios de los datos, hacia y desde el software. Una
declaración del FUR excluye cualesquiera requisitos técnicos o los de calidad que digan “cómo” debe
funcionar el software. (Para leer la definición formal de FUR, véase la sección 2.2.) A la hora de medir
el tamaño funcional sólo los FUR son tenidos en cuenta.
1.2.1 Extracción de los requisitos funcionales de usuario a partir de los artefactos del software en la
práctica
En el mundo real de desarrollo de software es raro encontrar artefactos para el software en los que
los FUR sean claramente distinguibles de otros tipos de requisitos y que sean expresados en un
formato adecuado para realizar mediciones directas, sin necesidad de interpretación. Esto significa
que por lo general el medidor tendrá que extraer los FUR tal y como se suministren, explícita o
implícitamente, en artefacto de software, antes de representarlos como conceptos de los “modelos de
software” de COSMIC.
Es importante señalar que los artefactos que se producen antes de que el software sea
implementado, por ejemplo, durante la recopilación o el análisis de requisitos, podrían describir el
software en diferentes “niveles de granularidad” mientras los requisitos evolucionan - véase también
más abajo la sección 2.4.
Nota: Los requisitos funcionales de usuario pueden ser producidos antes de que sean asignados al
hardware o al software. Dado que el método COSMIC está destinado a medir el FUR de una
aplicación software, sólo se medirán los FUR asignados a aplicación software. Sin embargo, en
principio el método COSMIC puede aplicarse a los FUR antes de que sean asignados a un software o
hardware, independientemente de la decisión eventual de asignación. Por ejemplo, es sencillo medir
el tamaño de funcionalidad de una calculadora de bolsillo utilizando COSMIC sin conocimiento que
hardware o software (si lo hubiera) será utilizado. Sin embargo, la afirmación de que el método
COSMIC se puede utilizar para medir FUR asignado a hardware, necesita más pruebas prácticas
antes de que pueda considerarse como plenamente validado sin la necesidad de más reglas.
En otras circunstancias, se puede necesitar medir algunas aplicaciones de software existentes sin
que hubiera algún, o quizá sólo unos pocos, artefactos de diseño o arquitectura disponibles, y el FUR
podría no estar documentado (por ejemplo, para el legado del software). En tales circunstancias, aún
es posible obtener los FUR a partir de los artefactos instalados en el sistema incluso después de que
haya sido implementado, como se ilustra en el gráfico 1.2.2.
Software
operations Physical
Physical data storage
programs manual and
procedures artifacts
1.2.3 Extracción o deducción de los requisitos funcionales de usuario a partir de artefactos software
Los procesos para ser utilizados y, por tanto, el esfuerzo necesario para extraer el FUR de diferentes
tipos de artefactos de ingeniería de software o para derivar de ellos el software instalado y para su
expresión en la forma requerida para la medición en el método COSMIC evidentemente variarán;
estos procesos no pueden ser tratados en el Manual de Medición. Se asume que los requisitos
funcionales del software que será medido bien existen o pueden ser extraídos o derivados de sus
artefactos, a la luz del propósito de la medición.
Estos dos modelos se describen en el documento de “Descripción del Método”. Los lectores que
requieran una comprensión general y una justificación de los modelos se les refieren al documento de
“Descripción del Método”. Los modelos se copian a continuación para mayor comodidad y se
exponen respectivamente en detalle en los capítulos 2 y 3 del presente Manual de Medición.
Una aplicación software que va a ser medida con el método COSMIC debe ser cuidadosamente
definida (en el alcance de medición) y esta definición debe tener en cuenta su contexto de cualquier
otro software y/o hardware con los que interactúa. Este Modelo de Contexto de Software introduce el
modelo de principios y conceptos necesarios para esta definición.
Nótese bien, Los términos se indican en negrita cuando se utilizan por primera vez en las siguientes
secciones 1.3 y 1.4 se utilizan con significados que pueden ser específicos para el método COSMIC.
Para la definición formal, véase el documento: “Descripción Documental y Glosario de Términos”.
Todos estos términos se explican en mayor detalle en los capítulos 2, 3 y 4.
Los conceptos del Modelo de Contexto del Software se detallan en la “Estrategia de medición” en el
Capítulo 2 de este Manual de Medición.
Después de haber interpretado los FUR del software a ser medido en términos del “Modelo de
Contexto del Software”, debemos ahora aplicar el Modelo Genérico del Software a los FUR para
identificar los componentes de la funcionalidad que se medirán. Este Modelo Genérico de Software
asume que los siguientes principios generales son ciertos para cualquier software que puede ser
medido con el método. (Como se señala en el glosario, cualquier método de medición de tamaño
Los conceptos del Modelo Genérico de Software se detallan en la “Fase de Representación” Capítulo
3 del presente Medición Manual.
Cuando el FUR a ser medido ha sido representado en el Modelo Genérico de Software, puede ser
entonces medido utilizando los procesos de la Fase de Medición (Capítulo 4). Los resultados de la
medición deberían ser documentados de acuerdo con las convenciones del Capítulo 5 “Informes de
Medición”.
El resultado de aplicar el proceso de medición a una aplicación software es una medida de tamaño
funcional de los Requisitos Funcionales de Usuario de la aplicación software expresada en “Puntos
de Función COSMIC” (ó CFP)
La relación entre estas tres fases del método COSMIC se muestra en la Fig. 1.5.
Chapter 5 Functional
Measurement size of the
Phase software in
units of CFP
En este capítulo se abordan los cuatro parámetros fundamentales de medición del tamaño funcional
del software que debe ser considerados antes de comenzar a medir, estos son: el propósito y el
alcance de la medición, la identificación de los usuarios funcionales y el nivel de granularidad que
debe medirse. Determinar estos parámetros ayuda a abordar las cuestiones de ¿qué tamaño debe
medirse? o, para una medición existente, ¿cómo debemos interpretar esta medida?
Es importante señalar que estos cuatro parámetros y conceptos relacionados no son específicos del
método de la medición del tamaño funcional COSMIC, pero debe ser común a todos los métodos
FSM (Functional Size Measurement). Otros métodos FSM pueden no distinguir diferentes tipos de
usuarios funcionales y pueden no discutir los diferentes niveles de granularidad, etc. Sólo la
aplicación más amplia y la flexibilidad del método COSMIC requieren que se tomen en cuenta estos
parámetros más cuidadosamente que con otros métodos FSM.
Es muy importante guardar los datos resultantes de esta fase de “Estrategia de Medición” (que se
enumeran en la sección 5.2) al guardar el resultado de cualquier medición. La falta de definición y
registro de estos parámetros dará lugar a mediciones que no pueden ser interpretadas fiablemente y,
o ser utilizadas para procesos tales como la estimación de esfuerzo del proyecto.
Las cuatro secciones de este capítulo dan las definiciones formales, principios, normas y algunos
ejemplos para cada uno de los principales parámetros para ayudar al medidor a través del proceso de
determinar una “Estrategia de Medición”, como se muestra en la figura 2.0 mostrada más abajo.
Cada sección ofrece explicaciones de por qué el parámetro clave es importante, utilizando analogías
para mostrar por qué el parámetro se da por sentado en otros campos de medición, razón por la cual
también debe ser considerado en el ámbito de de medición de tamaño funcional de software.
Section 2.3
Identify the
FUNCTIONAL
USERS
ITERATE
Section 2.4
Determine the
THE
LEVEL OF GRANULARITY
MEASUREMENT
of the measurement
STRATEGY
Una declaración que define por qué una medida es necesaria, y para qué se utilizará el
resultado
Hay muchas razones para medir el tamaño funcional del software, así como hay muchas razones
para medir, por ejemplo, las superficies de una casa. Cuando el objetivo es estimar el coste de un
nuevo desarrollo de software, podría ser necesario medir el tamaño funcional del software antes de
su desarrollo, del mismo modo que podría ser necesario medir las superficies de una casa antes de
su construcción. En un contexto diferente, por ejemplo, cuando se necesitan comparar con los costes
reales con los estimados, tal vez sea necesario medir el tamaño funcional del software una vez se ha
puesto en producción, del mismo modo que podría ser útil medir las superficies de una casa después
de haber sido construida para comprobar que las dimensiones se ajustan a los planes convenidos. La
razón por la cual se ha tomado una medida tiene un impacto a lo que se está midiendo, sin que ello
afecte a la unidad de medida o a los principios de medición.
Del mismo modo, medir el tamaño funcional del software antes de su desarrollo se basa en las
necesidades de los usuarios funcionales de software que se derivan de sus planos, es decir, los
artefactos de software producidos antes de su desarrollo. Las necesidades funcionales de los
usuarios son extraídas de estos aparatos que usando los convenios adecuados y las dimensiones
necesarias (el número de movimientos de datos) se identifican de modo que se pueda calcular el
tamaño.
Para continuar con la analogía de la casa, la medición de su superficie después de que haya sido
construida implica un proceso de medición diferente. Ahora, las dimensiones (longitud y anchura) son
extraídas del propio edificio utilizando una herramienta diferente (cinta métrica). Sin embargo, a pesar
de que el objeto físico que se mide es diferente (la casa en lugar de sus planos), las dimensiones, la
unidad de medida (incluyendo cualquier convención de escala) y todos los principios de medición
siguen siendo los mismos.
Del mismo modo, medir el tamaño funcional del software después de que haya sido puesto en la
producción implica un proceso diferente de medición cuando las dimensiones necesarias se extraen
de los diversos aparatos del software en sí. Aunque la naturaleza de estos aparatos es diferente, las
dimensiones, la unidad de medida y los principios de medición siguen siendo los mismos.
• El alcance que debe medirse y los aparatos que serán necesarios para la medición
• Los usuarios funcionales (como se indica en la sección 2.3, el tamaño de los cambios funcionales
es función de lo que se defina como el usuario funcional)
• El momento en el ciclo de vida del proyecto en el que la medición se llevará a cabo
• La precisión necesaria de la medición, y por lo tanto, si debería utilizarse la medición con el
método COSMIC, o si debería se debería utilizar una aproximación derivada localmente de
COSMIC (por ejemplo, de manera temprana en el ciclo de vida de un proyecto, antes de que los
FUR estén totalmente elaborados). Ambos de estos dos últimos puntos determinan el nivel de
granularidad al cual serán medidos los FUR.
2.2 Definir el alcance de la medición
Los Requisitos Funcionales de los Usuarios son definidos por ISO como sigue:
Reglas – Alcance
a) El alcance de una medición de tamaño funcional (FSM) se obtendrá del propósito de
la medición.
b) El alcance de una medición no se extenderá a más de una capa de software que
debe medirse
En caso de un sistema de software sucede que consta de partes que residen en diferentes capas de
la arquitectura del sistema, por consiguiente tendrá que ser medido por separado el tamaño del
software en cada capa, es decir, cada parte tendrá un alcance diferente para los propósitos de
medición de tamaño. Esto se desprende del principio (d) del Modelo de Contexto de Software. (Para
más información sobre capas, consulte la sección 2.2.4 a continuación.)
Del mismo modo, si el software debe ser desarrollado como un conjunto de componentes semejantes
dentro de una sola capa, cada una de ellas utilizando diferentes tecnologías, entonces será necesario
definir un alcance de la medición separado para cada uno de los componentes antes de la medición
de su tamaño.
Ejemplo 1: Si cada componente de software usa una tecnología diferente y las medidas son usadas para la estimación del
esfuerzo de desarrollo, entonces debería ser definida para cada componente una medida separada porque cada medición
del tamaño irá asociada con una cifra de productividad diferente (para más información de componentes semejantes, véase
la sección 2.2.5 más abajo).
El propósito también ayudará a decidir qué software debe ser incluido y excluido del alcance de la
medición.
Ejemplo 2: Si el propósito es medir el tamaño funcional de una pieza de software desarrollada por un equipo de proyecto en
particular, primero será necesario definir los requisitos funcionales del usuario de los diversos componentes que serán
desarrollados por el equipo. Estos podrían incluir los FUR de una aplicación software que es utilizada sólo una vez para
convertir datos de un software que se está reemplazando.
Ejemplo 3: Si el propósito es medir el tamaño de un nuevo software que está disponible para su uso operativo, este podría
ser más pequeño que para el ejemplo 2, ya que los FUR del software utilizado para la conversión no serían incluidos en el
ámbito de la medición de tamaño.
Ejemplos
• La cartera de proyectos de una empresa
• Un acuerdo contractual de especificación de requisitos
• El producto entregado por el equipo de trabajo de un proyecto (es decir, incluyendo los parámetros obtenidos por la
explotación de los programas informáticos existentes, paquetes comprados y código re-utilizable, cualquier programa
utilizado para la conversión de datos y posteriormente desechado, y utilidades y software de pruebas desarrollados
específicamente para este proyecto)
• El producto desarrollado por el equipo de trabajo de un proyecto (es decir, incluyendo cualquier software desarrollado
por el equipo y utilizado para la conversión de datos, pero posteriormente descartado, y cualquier utilidad y software de
pruebas de software desarrollado específicamente para este proyecto, pero con exclusión de toda la funcionalidad
obtenida por el cambio parámetros y la explotación de el código re-utilizable o comprada en paquetes comerciales)
• Todo el software de una capa
• Un paquete software
• Una aplicación
• Un componente par o semejante principal de una aplicación
• Una objeto de clase re-utilizable
• Todos los cambios necesarios para una nueva versión de una aplicación software existente
En la práctica, una declaración de alcance tiene que ser explícita en lugar de genérica, por ejemplo, el
producto de un proyecto desarrollado por el equipo de trabajo “A”, o la aplicación “B”, o la cartera de
la empresa “C”. La declaración de alcance también puede tener, para una mayor claridad, necesidad
de establecer lo que ha sido excluido.
Tenga en cuenta que algunos de los ‘tipos genéricos de alcance’ de los mencionados, corresponden
a diferentes ‘niveles de la descomposición’ del software, definidos de la siguiente manera:
Ejemplo: De los diferentes niveles de descomposición, correspondientes a diferentes “tipos genéricos de alcance” podría ser
una “cartera de aplicaciones” que consiste en “múltiples aplicaciones”, cada una de las cuales puede consistir en
“componentes especiales semejantes”, cada una de los cuales puede consistir a su vez en “clases de objetos re-utilizables”.
Determinar el alcance de una medida puede ser, por consiguiente, algo más que una simple cuestión
de decidir qué funcionalidad debería incluirse en la medición. La decisión también puede conllevar un
examen del nivel de descomposición de software donde se medirá. Se trata de una decisión
importante de la “Estrategia de Medición”, depende de la finalidad de la medición, porque las
mediciones a diferentes niveles de descomposición no pueden ser comparadas fácilmente. Esto
Manual de Medición, Método COSMIC Versión 3.0.1. Copyright © 2009. 21
All rights reserved. The Common Software Measurement International Consortium (COSMIC)
surge porque, como se verá en la sección 4.3.1, el tamaño de cualquier aplicación software no se
puede obtener simplemente sumando los tamaños de sus componentes.
2.2.4 Capas
Dado que el alcance de una aplicación software que debe medirse debe limitarse a una sola capa de
software, el proceso de definir el alcance podrá requerir que el medidor primero tenga que decidir
cuáles son las capas de la arquitectura del software. Por lo tanto en esta sección vamos a definir y
discutir “capas” y “peer componentes” de software tal y como estos términos son utilizados en el
método COSMIC.
Las razones por las que necesitamos estas definiciones y reglas son las siguientes:
Definición – Capa
La identificación de capas es un proceso iterativo. Las capas exactas serán refinadas a medida que el
proceso de representación avance. Una vez identificadas, cada una de las capas candidatas deben
cumplir con los principios y reglas siguientes:
Principios – Capa
c) El Software en una capa intercambia datos con el software en otro nivel a través de
sus respectivos procesos funcionales.
d) La “dependencia jerárquica” entre capas es tal que el software en cualquier capa
puede utilizar los servicios funcionales de cualquier software en cualquier capa
debajo en la jerarquía. En caso de que existan relaciones de dicho uso,
designamos a la capa que da uso al software como la capa “superior” y cualquier
capa que contiene el software usado como “subordinada”. El software en la capa
superior se basa en los servicios de software de las capas subordinadas para
funcionar correctamente, estas, a su vez se basan en el software de sus capas
subordinadas, y así sucesivamente desciende en la jerarquía. Por el contrario, el
software en una capa subordinada, junto con el software en cualquier capa
Reglas – Capa
a) Si el software está concebido utilizando una arquitectura de capas como se
entiende aquí, entonces que la arquitectura debe ser usada para identificar las
capas usadas a efectos de medición.
b) En el dominio SIM o software empresarial, la capa más alta, es decir la capa que no
está subordinada a ninguna otra capa, normalmente se denomina la capa de
aplicación. Una aplicación de software en esta capa se basa en última instancia en
los servicios de software en todas las otras capas para funcionar adecuadamente.
En el dominio de a tiempo real software, el software en la capa superior
comúnmente se denomina como un sistema, como por ejemplo en el software de
un sistema de control de procesos, o también por ejemplo en un software de
sistema de control de vuelo.
c) No se puede asumir que ningún software que se ha desarrollado sin ningún tipo de
consideración de diseño arquitectónico o estructuración puede dividirse en capas
de acuerdo al modelo COSMIC.
Los paquetes de software de servicios funcionales tales como los sistemas de gestión de bases de
datos, sistemas operativos o controladores de dispositivo, debe considerarse en principio que se
situarán en capas separadas.
Una vez identificadas, cada capa puede ser registrada como un “componente” separado en la matriz
del Modelo Genérico de Software (anexo A), con la correspondiente etiqueta.
Ejemplo 1: La estructura física de una típica arquitectura de software en capas (utilizando el término “capa” como ha sido
definido aquí) que soporte aplicaciones software de gestión se da en la figura 2.2.4.1:
Superior
Middleware Layer (Utilities, etc) Layer
Software relies on
Database Management
Layers DBMS 1 DBMS 2
System Layer Subordinate
Layer
Superior
Layer
Software
relies on
Layers Operating System Layer
Subordinate
Layer
Sensor CV Display Mem. Chip
Driver Driver Driver Driver
Hardware Sensor(s)
Control
Display
Memory Central
(Examples) Valve(s) Chip Processor
Figure 2.2.4.2 – Típica arquitectura en capas de un sistema software embebido de tiempo real
Definición – Semejante
Una vez identificados, cada uno de los supuestos componentes pares deben cumplir con los
siguientes principios:
Una vez identificados, cada uno de los componentes semejantes pueden ser registrados como un
componente individual en la matriz del modelo genérico de software (anexo A), con la
correspondiente etiqueta.
Ejemplo: Cuando una aplicación de gestión se desarrolla en tres grandes componentes, denominados “interfaz de usuario”
(o “front-end”), “reglas de negocio” y “datos de servicio”, los tres componentes son componentes semejantes.
NOTA: Dos partes de software separadas pero semejantes en la misma capa y que intercambian
datos entre sí pueden hacerlo tanto por cualquiera de las secuencias alternativas definidas en el
principio c) para dos componentes semejantes.
El siguiente diagrama muestra una situación que ilustra el ejemplo. Todo el software mostrado reside
en la misma capa de la aplicación. Los intercambios entre dos componentes semejantes de la
Aplicación X y entre dos partes semejantes de software (Componente 2 de la Aplicación X y
Aplicación Y) pueden darse a través de cualquiera de las secuencias alternativas que se definen en el
principio c) para dos componentes semejantes.
App X App Y
Level 1 of decomposition of
App X Comp 1 Comp 2 Comp 3
A partir de una analogía, la medición de la superficie de una oficina puede llevarse a cabo de acuerdo
con cuatro diferentes convenios, como se indica a continuación (nótese que el alcance – la oficina en
particular – es la misma para los cuatro convenios).
• El propietario del edificio tiene que pagar impuestos por la oficina. Para el propietario, la superficie
es el bruto de los metros cuadrados, determinado a partir de las dimensiones externas y, por
tanto, incluidos todos los pasillos públicos, el espacio ocupado por las paredes, etc.
• El responsable del aire acondicionado del edificio está interesado en la red de metros cuadrados,
es decir, las zonas de interior, incluidos los las zonas públicas y en el espacio tomado por los
ascensores, pero excluyendo el espesor de las paredes
• El contratista del servicio de limpieza contratado por una oficina específica del edificio está
interesado en los metros cuadrados netos, que excluye los espacios públicos, pero que incluye
los pasillos utilizados por el arrendatario.
• El responsable de la planificación de oficinas solo está interesado en los metros cuadrados netos
útiles.
Un “usuario” se define, en la norma ISO/IEC 14143/1:2007, como “cualquier cosa que interactúa con
el software que se está midiendo”. Esta definición es demasiado amplia para las necesidades del
método COSMIC. Para el método COSMIC, la elección de un usuario (o usuarios) se determina por
los requisitos del usuario funcional que deben medirse. Este (tipo de) usuario, es conocido como el
“usuario funcional” y se define como sigue.
En el método COSMIC es esencial distinguir a los usuarios funcionales de una parte del software que
debe ser medido de entre todos sus posibles usuarios.
Ejemplo 1: Considere una aplicación empresarial; Sus usuarios funcionales normalmente incluirían humanos y otras
aplicaciones semejantes con las que la aplicación interactúa. Para una aplicación en tiempo real, los usuarios funcionales
normalmente serían dispositivos hardware u otros software semejantes que interactúen con ella. Las necesidades de los
usuarios funcionales (FUR) de dicho software normalmente se expresan de modo que los usuarios funcionales son los que
envían datos y/o los destinatarios de los datos hacia y desde el software, respectivamente.
Sin embargo, el conjunto total de “usuarios”, es decir, incluida cualquier cosa que interactúa con el software, debe incluir el
sistema operativo. Pero los FUR de cualquier aplicación nunca incluirían el sistema operativo como un usuario. Cualquier
limitación que el sistema operativo pueda imponer a una aplicación será común para todas las aplicaciones, por lo general,
se encargarán de ella el compilador o intérprete, y son invisibles para los usuarios funcionales reales de la aplicación. En la
práctica de medición de tamaño funcional, un sistema operativo nunca sería considerado como un usuario funcional de una
aplicación.
Una vez identificados los usuarios funcionales, entonces es sencillo determinar la frontera, ya que,
simplemente se encuentra entre la pieza de software que se está midiendo y sus usuarios
funcionales.
Definición – Frontera
La Frontera se define como un interfaz conceptual entre el software que está siendo
medido y sus usuarios funcionales.
Nota: La frontera de una aplicación software es la línea divisoria conceptual entre esta
pieza y el medio en el que opera, ya que se percibe externamente desde la perspectiva
de sus usuarios funcionales. La frontera permite que el medidor distinga, sin
ambigüedad, lo que se incluye dentro del software a ser medido de lo que es parte del
medio en el que opera el software.
Nótese, que esta definición de frontera está tomada de la norma ISO/IEC 14143/1:2007, modificada
por la adición de la palabra ‘funcional’ para calificar al ‘usuario’. Para evitar la ambigüedad, tenga en
cuenta que la frontera no debe confundirse con ninguna línea que pueda dibujarse alrededor de
ningún programa que deba ser medido para definir el alcance de la medición. La frontera no se utiliza
para definir el alcance de la medición.
Las siguientes reglas podrían ser útiles para confirmar la condición de una posible frontera:
Reglas – Frontera
a) Identificar los usuarios funcionales que interactúan con el software que se mide. La
frontera se encuentra entre los usuarios funcionales y este software.
b) Por definición, hay una frontera entre cada par de capas identificadas donde el
software en una capa es el usuario funcional del software en otra capa, y este último
va a ser medido.
c) Hay una frontera entre dos partes cualquiera de un programa, incluidos los
componentes que son semejantes entre sí; en este caso cada parte de programa
y/o cada componente puede ser un usuario funcional de su semejante.
La frontera permite establecer una distinción clara entre todo lo que forma parte de la aplicación
software que va a ser medida (es decir, que se encuentra en la zona de software de la frontera) y
todo lo que forma parte del medio de los usuarios funcionales (es decir, que se encuentra en la zona
del usuario funcional de la frontera). Los almacenes persistentes no se consideran como un usuario
del software y, por tanto, se encuentran en la zona del software de la frontera.
Cuando se comienza un proyecto para diseñar y construir una nueva casa, los primeros planos de un
arquitecto se encuentran en la casa en una situación de “alto nivel”, es decir, que muestran un
esquema y pocos detalles. A medida que el proyecto avanza hacia la fase de construcción, se
necesitan los planos más detallados (“bajo nivel”).
Lo mismo puede decirse para el software. En las etapas iniciales de un proyecto de desarrollo de
software, los requisitos funcionales de los usuarios (FUR) se especifican en alto nivel, es decir, en el
esbozo, o en pocos detalles. A medida que el proyecto progresa, los FUR, son refinados, (por
ejemplo, a través de las versiones 1, 2, 3, etc.), revelando más detalle a un menor nivel. Estos
diferentes grados de detalle de los FUR, son conocidos con los diferentes “niveles de granularidad”.
(Véase también la sección 2.4.3 para otros términos que pueden confundirse con el concepto de nivel
de granularidad como es definido aquí).
Los planos de construcción de viviendas usan escalas estándar, y es fácil traducir dimensiones de en
un dibujo a otro dibujo realizado con una escala distinta. En cambio no hay escalas estándar para los
diversos niveles de granularidad con que el software puede ser especificado, por lo que puede ser
difícil tener la certeza de que dos declaraciones de los requisitos funcionales de los usuarios (FUR) se
encuentran al mismo nivel de granularidad. Sin un acuerdo en algún nivel de granularidad de a que
escala se debe medirse es imposible saber con certeza que dos mediciones de tamaño funcional
pueden compararse. Y los medidores tienen que desarrollar su propio método para pasar las
mediciones de un nivel de granularidad a otro.
Para ilustrar aún más los problemas, consideremos otra analogía. Un conjunto de mapas de
carreteras revela los detalles de una red nacional de carreteras en tres niveles de granularidad.
Para la medición del software, sólo hay un nivel de granularidad que es posible definir sin
ambigüedades. Es el nivel de granularidad en el cual se han identificado los distintos procesos
funcionales y se han definido sus movimientos de datos. Las mediciones deben hacerse a este nivel o
a escala de este nivel siempre que sea posible.
Antes de continuar, es importante asegurar que no haya malentendidos sobre el significado de nivel
de granularidad en el método COSMIC. Tal como se define aquí, la ampliación de la descripción de
software de un nivel de granularidad “superior” a uno “inferior” implica revelar más detalles pero sin
modificar su alcance. Este proceso no debe confundirse con cualquiera de los siguientes.
• Detallar un artefacto que describa algún tipo de software a fin de revelar diferentes sub-conjuntos
de la funcionalidad entregada a los diferentes usuarios, por lo tanto, probablemente limitando la
funcionalidad que debe medirse
• Detallar un artefacto que describa algún tipo de software, o el propio software y, al mismo tiempo
descomponerlo a fin de revelar la estructura de sus componentes, sub-componentes, etc. (es
decir, revelar los diferentes niveles de descomposición - véase la sección 2.2.2). Detallar a
niveles más bajos la descomposición del software puede dar lugar (a partir de los efectos de la
medición) en sub-dividir el alcance global de la medición
• Mostrar la descripción de algún tipo de software a medida que avanza su ciclo de desarrollo, por
ejemplo, de los requisitos al el diseño lógico, diseño físico, etc. Cualquiera que sea la fase del
desarrollo de algún software, sólo estamos interesadas en los FUR para propósitos de medición.
El nivel de granularidad estándar para la medición es el “nivel de proceso funcional” y se define como
sigue:
Con esta definición, podemos ahora definir las siguientes reglas y una recomendación.
Además de las reglas, COSMIC recomienda que el nivel de granularidad de un proceso funcional
deba ser el estándar al que se requiera medir el tamaño funcional cuando sea utilizado por los
proveedores para una evaluación comparativa de los servicios y de las herramientas de software
diseñados para sostener o utilizar las mediciones de tamaño funcional, por ejemplo para estimar el
esfuerzo de un proyecto.
El ejemplo, del dominio de software de gestión, será de un conocido sistema de comprar productos a través de Internet, que
llamaremos el sistema “Everest”. (El documento de “Temas Avanzados y Relacionados” contiene un ejemplo del dominio de
software de tiempo real.). La descripción que figura a continuación está muy simplificada para los propósitos de esta
ilustración de los niveles de granularidad. La descripción también cubre únicamente a las funcionalidades disponibles para
los usuarios del "Everest". Por lo tanto, excluye las funcionalidades que deben estar presentes para que el sistema pueda
completar la entrega de bienes a un cliente, tales como la funcionalidad disponible para el personal de "Everest",
proveedores de productos, anunciantes, el pago los proveedores de servicios, etc.
El alcance de la medición, por lo tanto, se define como las partes del sistema de aplicación "Everest" accesibles a los
clientes a través de Internet. Asumimos que el objetivo de la medición es determinar el tamaño funcional de la aplicación a
disposición los usuarios humanos (como usuarios funcionales). Al más alto “nivel 1” la definición de todos los requisitos
funcionales de los usuarios (RUF) del sistema de compra "Everest" sería una simple declaración como la siguiente.
“El sistema Everest deberá permitir a los clientes informarse sobre, seleccionar, pedir, pagar y obtener la entrega de
cualquier elemento de la gama de productos Everest, incluidos los productos disponibles desde terceros proveedores.”
Detallando esta declaración de más alto nivel más nos encontramos con que en el próximo nivel inferior 2, el sistema
consiste en cuatro sub-sistemas, tal y como se muestra en Fig. 2.4.3.1.
Enquire on Maintain
Review, maintain
Level 3 (not analyzed) current (n/a) customer details (n/a)
confirm order (n/a)
order process Sub-sub-system
Sub-sub-system
Returned goods
Pay for order
Sub-sub-system
Sub-sub-system
Figura 2.4.3.1 – Análisis parcial del Sistema Everest con cuatro niveles de análisis
La figura 2.4.3.1 revela también que cuando detallamos niveles más bajos de este análisis de los tres sub-sistemas, nos
encontramos con los distintos procesos funcionales en el nivel 3 (para dos consultas del sub-sistema de Seguimiento del
Pedido) y en el nivel 4 para los otros dos sub-sistemas. Este ejemplo demuestra, por tanto, que cuando alguna
funcionalidad es analizada en un enfoque de arriba abajo, no se puede suponer que la funcionalidad mostrada en un nivel
en un diagrama se corresponde siempre con el mismo nivel de granularidad tal y como este concepto es definido en el
método COSMIC. (Esta definición exige que a cualquier nivel de granularidad la funcionalidad esté a un “nivel comparable
de detalle”).
Teniendo en cuenta estas variaciones que inevitablemente ocurren en la práctica, un medidor debe examinar
cuidadosamente los diversos niveles de un diagrama de análisis para encontrar los procesos funcionales que deben
medirse. En caso de que en la práctica esto no sea posible, por ejemplo debido a que el análisis aún no ha alcanzado el
nivel donde todos los procesos funcionales se han revelado, debe aplicarse la regla (b) descrita más arriba. Para ilustrar
esto, vamos a examinar el caso del sub-subsistema Mantener Detalles del Cliente (véase la figura 2.4.3.1), en la primera
rama de el sub-sistema de Mantenimiento de la Cuenta.
Para un medidor con experiencia, la palabra mantener casi siempre sugiere un grupo de casos y por lo tanto, un grupo de
procesos funcionales. Por lo tanto, podemos asumir con seguridad que este sub-subsistema de mantener debe estar
integrado por tres procesos funcionales, es decir, base de datos de detalles del cliente, actualización de los detalles del
cliente y eliminar el cliente. (Evidentemente el proceso de creación del cliente también existe pero esto ocurre en otra rama
del sistema, que es cuando un cliente hace un pedido por primera vez. Está fuera del ámbito de aplicación de este ejemplo).
Un medidor con experiencia debe poder estimar un tamaño de este sub-subsistema en unidades PFC tomando el supuesto
número de procesos funcionales (tres en este caso) y multiplicando este número por el tamaño medio de un proceso
funcional. Este tamaño medio se obtendría calibrando en otras partes de este sistema o en otros sistemas comparables.
Ejemplos de este proceso de calibración se dan en el documento de “Temas Avanzados y Relacionados” que en la
aproximación de mediciones contiene también otras aproximaciones al tamaño aproximado.
Evidentemente, estos métodos de aproximación tienen sus limitaciones. Si aplicamos este enfoque al nivel 1 de la
declaración FUR de la forma arriba señalada (El sistema "Everest" deberá permitir a los clientes informarse sobre,
seleccionar, comprar, pagar y obtener la entrega de cualquier elemento de la gama de productos Everest….), podríamos
identificar unos procesos funcionales. Pero un análisis más detallado podría revelar que el verdadero número de procesos
funcionales de este complejo sistema debe ser mucho mayor. Esa es la razón por la que tamaños funcionales aparentan
aumentar a medida que se establecen más detalles en los requisitos, incluso sin cambios en el alcance de la aplicación.
Estos métodos de aproximación, por lo tanto, deben ser utilizados con sumo cuidado a los altos niveles de granularidad,
cuando está disponible muy poca información.
Si se consideran cuidadosamente los cuatro elementos del proceso de estrategia de medición antes
de empezar una medición se debería asegurar que el tamaño resultante pueda ser interpretado
correctamente. Los cuatro elementos son los siguientes:
a) establecer el propósito de la medición
b) definir el alcance global de la aplicación software a medir y el alcance de las partes a ser medidas
por separado, teniendo en cuenta las capas y los componentes semejantes de la arquitectura de
software
c) establecer los usuarios funcionales de la aplicación software medida
d) establecer el nivel de granularidad de los artefactos de software a medir y cómo, si es necesario,
llevar las medidas a al estándar de nivel de granularidad de proceso funcional
Pueden ser necesarias algunas repeticiones de los pasos (b), (c) y (d) cuando están evolucionando
los requisitos y los nuevos datos indican la necesidad de perfeccionar la definición del alcance.
La gran mayoría de las mediciones de tamaño funcional se llevan a cabo con una finalidad que está
relacionada de algún modo con el esfuerzo de desarrollo, por ejemplo, para la medición del
Manual de Medición, Método COSMIC Versión 3.0.1. Copyright © 2009. 32
All rights reserved. The Common Software Measurement International Consortium (COSMIC)
rendimiento de los desarrolladores, o para la estimación del proyecto. En estas situaciones, la
definición de la estrategia de medición debe ser muy sencilla. El propósito y el alcance son
generalmente fáciles de definir, los usuarios son los usuarios funcionales para los cuales el
desarrollador debe proporcionar la funcionalidad y el nivel de granularidad en que se requieren las
mediciones es el nivel en el cual los usuarios funcionales detectan eventos individuales.
Sin embargo, no todas las mediciones se ajustan a esta pauta común, por lo que la estrategia de
medición debe ser definida para en cada situación.
Este capítulo presenta las reglas y el método para el proceso de representación. El método general
para la representación del software en el Modelo COSMIC Genérico del Software se resume en la
figura 3.0.
Chapter 2
PURPOSE, SCOPE,
FUNCTIONAL USERS &
LEVEL OF GRANULARITY
of the piece of software
to be measured
Section 3.1
Functional User
Requirements
IDENTIFY
in the artefacts FUNCTIONAL
of the software PROCESSES
to be measured Section 3.2
IDENTIFY
DATA
ATTRIBUTES
(*): This step is not a mandatory part of the
COSMIC method.
Cada paso de este método es el tema de una sección específica (indicada en el título de cada paso
de la figura 3) donde se presentan las definiciones y las reglas, junto con algunos principios que
sirven de guía y ejemplos.
El método general resumido en la figura 3 de arriba se ha diseñado para ser aplicado a una muy
amplia gama de artefactos de software. Un proceso más sistemático y detallado proporcionaría reglas
precisas de representación para una mayor cantidad de artefactos altamente específicos, por lo que
se disminuiría el nivel de ambigüedad al generar el Modelo Genérico COSMIC de Software. Un
proceso así sería, por definición, altamente dependiente de la naturaleza de los artefactos, lo que
depende de la metodología de ingeniería del software que se use en cada organización.
El documento “Guía para Medir Aplicaciones de Gestión utilizando COSMIC” sirve de guía en la
representación desde varios datos de análisis y métodos de obtención de requisitos usados en el
dominio de las aplicaciones de gestión a los conceptos del método COSMIC.
Las figuras 3.1.1 y 3.1.2 de abajo ilustran respectivamente, la aplicación del principio (g) del Modelo
de Contexto del Software y los principios del Modelo Genérico del Software a una aplicación de
gestión y a un típico software empotrado de tiempo real.
Mientras que las figuras 2.2.3.1 y 2.2.3.2 de arriba mostraban visiones físicas reales de las
arquitecturas a capas del software, las figuras 3.3.1 y 3.1.2 muestran una visión lógica de las
relaciones de varios conceptos definidos en los modelos COSMIC. En esta visión lógica los usuarios
funcionales interaccionan con el software que va a ser medido a través de una frontera vía
movimientos de datos de Entrada y de Salida. El software mueve datos hacia y desde los almacenes
persistentes vía movimientos de datos de Escritura y Lectura respectivamente. En estas visiones
lógicas se ignora todo el hardware y software que se necesita para permitir que estos intercambios
tengan lugar entre el software que se está midiendo, sus usuarios funcionales y el almacenamiento
persistente.
Boundary Boundary
Entries X E
Human Application A ‘peer’
functional being application
user (s) measured functional user The
Exits E X
application
Reads Writes
layer
Persistent
storage
Figure 3.1.1 – Una aplicación de gestión con seres humanos y otras aplicaciones ‘semejantes’, como sus
usuarios funcionales (vista lógica)
Persistent
Storage
Figura 3.1.2 – Una aplicación en tiempo real con varios dispositivos hardware integrados como usuarios
funcionales (vista lógica)
Este paso consiste en identificar el conjunto de procesos funcionales de la aplicación software que se
va a medir a partir de sus Requisitos Funcionales de Usuario.
3.2.1 Definiciones
Un evento (algo que ocurre) que causa un usuario funcional del componente de
software para iniciar (“trigger”) uno o más procesos funcionales. En un conjunto de
requisitos funcionales de usuario, cada evento que causa que un usuario funcional
desencadene un proceso funcional:
• no puede ser sub-dividido para ese conjunto de FUR, y
• ha ocurrido o no ha ocurrido
Nota: El reloj y los eventos de tiempo pueden ser eventos desencadenantes.
Functional
process
Boundary
Figura 3.2.1 – Relación entre un evento disparador, un usuario funcional y un proceso funcional
Si un usuario funcional envía datos incorrectos, por ejemplo porque un sensor no funciona o una
orden introducida por un humano tiene errores, es habitualmente tarea del proceso funcional
determinar si un evento realmente ocurrió y/o si los datos introducidos son realmente válidos y cómo
responder.
La aproximación para identificar procesos funcionales depende de los artefactos de software que
están disponibles para el medidor, los cuales dependen del momento del ciclo de vida del software
cuando se requiere la medida y de los métodos de análisis, diseño y desarrollo del software en uso.
Puesto que éstos últimos varían enormemente, incluso dentro del un dominio de software dado, está
fuera del alcance de este Manual de Medida el proporcionar uno o más procesos generales para
identificar procesos funcionales.
La “Guía para medición de aplicaciones de gestión software usando COSMIC”, sección 4.4 da más
reglas y ejemplos sobre cómo identificar y distinguir procesos funcionales en el dominio de las
aplicaciones software de gestión.
El consejo general más importante es que es casi siempre útil intentar identificar los diferentes
eventos en el mundo de los usuarios funcionales a los que el software debe responder, ya que cada
evento da lugar normalmente a un (pero a veces a más de uno) proceso funcional. Los eventos
pueden ser identificados a partir de diagramas de estado y a partir de los diagramas de ciclo de vida
la de entidad, puesto que cada transición a la que el software se debe enfrentar se corresponde con
un evento.
Utilice las siguientes reglas para comprobar que los procesos funcionales candidatos han sido
adecuadamente identificados.
Ejemplo 1: En una compañía, se recibe una orden (evento desencadenante), causando que un empleado (usuario
funcional) meta los datos de la orden (Entrada desencadenante que comunica datos sobre el objeto de interés “orden”),
como el primer movimiento de datos del proceso funcional “entrada de orden”
b) Algunas veces, para una aplicación A podría haber una aplicación par B que necesite enviar datos
a u obtener datos de la aplicación A. En este caso, si la aplicación B desencadena un proceso
funcional cuando necesita enviar datos u obtener datos de la aplicación A, entonces la aplicación
B es un usuario funcional de la aplicación A
Ejemplo 2: Supóngase que al recibir una orden en el ejemplo a) a la aplicación de la orden se la requiere que envíe
detalles del cliente a una aplicación central de registro de clientes, lo cual se está midiendo. Ahora la aplicación de la
orden se ha convertido en un usuario funcional de la aplicación central. La aplicación de la orden detecta el evento de
recepción de los datos del cliente y desencadena un proceso funcional en la aplicación central del registro de clientes
para almacenar estos datos, enviando datos sobre el objeto de interés “cliente” como una Entrada desencadenante a la
aplicación central.
Ejemplo 3: Supóngase que las órdenes del ejemplo de a) se meten on-line pero son almacenadas para un procesado
por lotes automático durante la noche. El usuario funcional es todavía el humano que metió las órdenes on-line; la
Entrada desencadenante son todavía los datos de la orden. Hay un proceso funcional por entrada y procesado de las
órdenes.
d) Las señales periódicas de un reloj (ticks) pueden físicamente desencadenar un proceso funcional.
Ejemplo 4: Supóngase un FUR para un proceso por lotes a final de año para informar de los resultados del negocio
durante el año y para reajustar puestos para comienzos del año que viene. Físicamente, el tick de fin de año de un reloj
originado por el sistema operativo ocasiona que el flujo por lote comience, consistiendo en uno o más procesos
funcionales. Estos procesos funcionales del flujo que usan datos de entrada en el flujo deberían ser analizados de
modo normal (por ejemplo los datos de entrada para cualquier proceso funcional constan de una o más Entradas, la
primera de las cuales es la Entrada desencadenante de dicho proceso).
Sin embargo, se asúmase que hay un proceso funcional particular en el flujo que no requiere ningún dato de entrada
para producir sus series de informes. Físicamente, el usuario funcional (humano) ha delegado en el sistema operativo
la tarea de desencadenar este proceso funcional. Puesto que todos los procesos funcionales deben tener una Entrada
desencadenante, podríamos considerar que el tick de fin de año del reloj que comenzó el flujo por lotes desempeña
este papel para este proceso. El proceso funcional podría entonces necesitar diferentes Lecturas y muchas Salidas
para producir sus informes. Lógicamente, el análisis de este ejemplo no es diferente si el usuario funcional inicia la
producción de uno o más informes vía un clic del ratón en un icono del menú on-line, en vez de delegar la producción
del informe al sistema operativo vía flujo por lotes.
e) Un solo evento puede desencadenar uno o más procesos funcionales que se ejecuten
independientemente.
Ejemplo 5: Un tick de reloj de fin de semana produce que comience la generación de informes y el proceso de revisión
de la caducidad de los límites de tiempo en un sistema automático.
f) Un solo proceso funcional puede ser desencadenado por más de un tipo de evento
desencadenante.
Ejemplo 6: En un sistema bancario, un extracto de cuenta puede ser desencadenado por un proceso por lotes de fin de
mes pero también porque un cliente específico lo haya pedido.
Para diversos ejemplos de cómo distinguir eventos desencadenantes y procesos funcionales en flujos
por lotes, ver la “Guía de Medición de Aplicaciones de Gestión utilizando COSMIC” en la sección
4.6.3.
Ejemplo 1: Cuando la temperatura alcanza un valor determinado (evento desencadenante), se produce que un sensor
(usuario funcional) envíe una señal (movimiento de datos de Entrada desencadenante) para encender una luz de
alarma (proceso funcional).
Ejemplo 2: Un avión militar tiene un sensor que detecta el evento “un misil se acerca”. El sensor es un usuario funcional
del software integrado que debe responder a la amenaza. Para este software, solo cuando el sensor detecta algo
ocurre un evento, y es el sensor (el usuario funcional) el que pone en funcionamiento al software enviándole un
mensaje (Entrada desencadenante) diciendo por ejemplo: “el sensor 2 ha detectado un misil”, además quizás también
envía un flujo de datos sobre la velocidad del misil que se acerca y sus coordenadas. El misil es el objeto de interés.
Ejemplo 3: En algún software de control de procesos en tiempo real, un tick (evento desencadenante) de un reloj
(usuario funcional) produce que el reloj envíe una señal (Entrada desencadenante), un mensaje de un bit que le dice al
proceso funcional que repita su ciclo de control normal. El proceso funcional entonces lee varios sensores, recibiendo
datos sobe objetos de interés, y lleva a cabo cualquier acción necesaria. No hay otros datos que acompañen el tick del
reloj.
c) Un solo evento puede desencadenar uno o más procesos funcionales que se ejecuten
independientemente en paralelo
Ejemplo 4 Un situación de emergencia detectada en una central nuclear puede desencadenar procesos funcionales
independientes en zonas diferentes de la central para bajar las barreras de control, accionar el enfriamiento de
emergencia, cerrar válvulas, hacer sonar las alarmas para alertar a los operarios, etc.
d) Un solo proceso funcional puede ser desencadenado por más de un evento desencadenante.
Ejemplo 5: La retracción en las ruedas de un avión puede ser desencadenada por el detector “sin peso en el suelo” o
por una orden del piloto.
Ejemplo 1: Cuando hay un requisito de un usuario funcional para reducción de impuestos por un hijo adicional y también por
“créditos por tasas de trabajo” para los que tienen un sueldo bajo, estos son requisitos a los que el software debe responder
como dos eventos separados en el mundo de los usuarios funcionales humanos. Por tanto, debería haber dos procesos
funcionales, aunque solo se haya utilizado un formulario de impuestos para recoger los datos en ambos casos.
Ejemplo 2: Si el salario en un ejemplo (para una persona) excede el límite por créditos por tasas de trabajo en reducción de
impuestos y en otro ejemplo (para otra persona) no lo excede, esta diferencia no da lugar a dos procesos funcionales
separados, pero indica dos condiciones separadas de las que encargarse en el único proceso funcional.
Ejemplo 3: Como ejemplo de la regla (g), si ocurre una incidencia específica que desencadena la Entrada de un grupo de
datos que consta de atributos de datos A, B y C, y los FUR permiten que otra incidencia del mismo evento desencadene
una Entrada de un grupo de datos que tiene valores para los atributos A y B únicamente, esto no resulta en identificar dos
procesos funcionales. Solo son identificados una Entrada y un proceso funcional, moviendo y manipulando atributos de
datos A, B y C.
Una vez identificados, cada proceso funcional puede ser registrado en una línea individual, bajo la
capa o estrato adecuado o bajo el componente semejante, en la matriz del Modelo Genérico de
Software (apéndice A), bajo la correspondiente etiqueta.
El usuario o usuarios funcionales de cada componente se determinan examinando dónde suceden los
eventos que disparan los procesos funcionales del componente que está siendo examinado (la
activación de eventos sólo puede ocurrir en el mundo de un usuario funcional).
La figura 4.1.8.2 ilustra el proceso funcional de dos componentes semejantes y los movimientos de
datos que intercambian.
Cualquier “cosa” que sea identificada desde el punto de vista de los requisitos del
usuario funcional. Puede ser cualquier cosa física, como también cualquier objeto
conceptual o parte de un objeto conceptual en el mundo del usuario funcional sobre el
que al software se le requiere que procese y/o almacene datos.
Nota: En el método COSMIC, el término “objeto de interés” se usa para evitar términos
relacionados con métodos específicos de ingeniería del software. El término no implica
“objetos” en el sentido usado en los métodos Orientados a Objetos.
Una vez identificados, cada grupo de datos puede ser registrado en una columna individual en la
matriz del Modelo Genérico de Software (apéndice A), bajo la correspondiente etiqueta.
En la práctica, la materialización de un grupo de datos puede tomar muchas formas, por ejemplo:
a) Como una estructura física grabada en un dispositivo de almacenamiento continuo (archivo, tabla
de base de datos, memoria ROM, etc.)
b) Como una estructura física en la memoria volátil del ordenador (estructura de datos asignada
dinámicamente o a través un bloque pre-asignado de espacio de memoria)
c) Como la presentación agrupada de atributos de datos relacionados funcionalmente en un
dispositivo input/output (pantalla de visualización, informe impreso, panel de control de
visualización, etc.)
d) Como un mensaje transmitido entre un dispositivo y un ordenador, o sobre una red, etc.
Las definiciones y los principios de los objetos de interés y de los grupos de datos son
intencionalmente amplios con el objetivo de que se puedan aplicar al rango más amplio posible de
software. Esta cualidad hace que algunas veces resulte difícil de aplicar la definición y los principios
cuando se mide una parte específica del software. Por tanto, los casos siguientes y los ejemplos se
han diseñado para ayudar en la aplicación de los principios a casos específicos.
Al enfrentarnos a la necesidad de analizar un grupo de atributos de datos que son movidos dentro o
fuera de un proceso funcional o que son movidos por un proceso funcional a o desde un almacén
persistente, es de una importancia crítica decidir si todos los atributos comunican datos sobre un
único “objeto de interés”, ya que es éste último el que determina el número de “grupos de datos”
separados tal y como los define el método COSMIC. Por ejemplo, si los atributos de datos que van a
ser los datos de entrada de un proceso funcional son atributos de tres objetos de interés separados,
entonces necesitamos identificar tres movimientos de datos de Entrada separados.
Ejemplo 1: En el dominio de software de aplicaciones de gestión, un objeto de interés podría ser “empleado” (físico) o
“pedido” (conceptual), asumiendo que se requiere que el software almacene datos sobre empleados o pedidos. En el caso
de pedidos, normalmente desde el FUR de pedidos multilínea se identifican dos objetos de interés: “pedido” y “línea de
pedido”. Los grupos de datos correspondientes podrían llamarse “datos de pedidos” o “línea de datos de pedidos”.
Los grupos de datos se forman cuando sea que haya una consulta ad hoc que pida datos sobre una
“cosa” que no se tiene en el almacén persistente, pero que se puede derivar de datos que están en el
almacén persistente. El movimiento de datos de Entrada en una consulta ad hoc (los parámetros de
selección para derivar los datos requeridos) y el movimiento de datos de Salida (que contienen los
atributos deseados), ambos mueven grupos de datos sobre dicha “cosa”. Estos son grupos de datos
transitorios que no sobreviven a la ejecución del proceso funcional. Son grupos de datos válidos
porque cruzan el límite o frontera entre el software y su usuario o usuarios.
Para una discusión detallada sobre métodos de análisis de datos para determinar objetos de interés y
grupos de datos separados, el lector puede ir a “Guía para Medir Aplicaciones de Gestión utilizando
COSMIC”.
Ejemplo 3: Movimientos de datos que son Entradas desde dispositivos físicos típicamente contienen datos sobre el estado
de un solo objeto de interés, tales como si un válvula está abierta o cerrada, o indican un tiempo en el que datos a corto
plazo, almacenamiento volátil es válido o inválido, o contienen datos que indican que ha ocurrido un evento crítico y qué
causa una interrupción. De un modo similar un comando de Salida para encender o apagar una lámpara de aviso comunica
datos sobre un solo objeto de interés.
Ejemplo 4: Un intercambio de mensajes puede recibir un grupo de datos de mensajes tales como una Entrada y guiarlo
adelante sin cambios como una Salida, como requisito de una parte del software en particular. Los atributos del grupo de
datos de mensajes podrían ser, por ejemplo, “el que lo envía, recipiente, ruta-código y mensaje-contenido; el objeto de
interés del mensaje es “mensaje”.
Ejemplo 5: Una estructura de datos habitual, representando objetos de interés que se mencionan en los requisitos
funcionales de usuario, que puede ser mantenida por procesos funcionales, y que es accesible para la mayoría de procesos
funcionales encontrados en el software medido.
Ejemplo 6: Una estructura de datos de referencia, representando gráficos o tablas de valores encontrados en los requisitos
funcionales de usuario, los cuales están en memoria permanente (memoria ROM por ejemplo) y accesible para la mayoría
de procesos funcionales encontrados en el software medido.
Ejemplo 7: Archivos, comúnmente designados como “archivos planos”, representando objetos de interés mencionados en
los requisitos funcionales de usuario, los cuales se mantienen en un dispositivo de almacenamiento continuo.
Datos cualesquiera que aparezca en pantallas de entrada o salida o en informes y que no están
relacionados con un objeto de interés para un usuario funcional no deberían ser identificados
indicando un movimiento de datos, por tanto no deberían medirse. Los ejemplos incluyen:
Ejemplo 1: Datos generales de la aplicación tales como encabezamientos y pies de página (nombre de la compañía,
nombre de la aplicación, fecha del sistema, etc.) que aparecen en todas las pantallas.
Ejemplo 2: Comandos de control (un concepto definido solo en el ámbito de aplicaciones de gestión) que permite a un
usuario funcional controlar su uso del software más que mover datos, por ejemplo los comandos de página arriba/abajo,
pulsar “OK” para admitir un mensaje de error, etc. - ver la sección 4.1.10 más adelante.
El modelo Genérico COSMIC de Software asume que toda manipulación de datos dentro de un
proceso funcional está asociada con unos de los cuatro tipos de movimientos de datos- ver sección
4.1.6. Por tanto ningún movimiento o manipulación de datos dentro de un proceso funcional puede
ser identificado como candidato para movimiento de datos junto con las Entradas, Salidas, Lecturas y
Escrituras. (Para ver ejemplos de manipulación y movimientos de datos que puedan ser mal
interpretados como movimientos de datos ver sección 4.1.4, principio c) para Lecturas, y sección
4.1.5 principio d) para Escrituras.
En muchos casos simples de software en tiempo real como el descrito en el primer punto del caso 2
de la sección 3.3.3 de arriba, el dispositivo físico -un usuario funcional- es indistinguible del objeto de
interés del movimiento de datos que genera o recibe. En dichos casos añade poco valor al
documento un objeto de interés como si fuera algo separado del usuario funcional. El punto
importante es usar estos conceptos, cuando sirvan de ayuda, para distinguir los diferentes grupos de
datos y en consecuencia movimientos de datos separados.
Ejemplo: Supóngase un sensor de temperatura “A” que, cuando es preguntado por un proceso funcional, envía la
temperatura actual al proceso. El usuario funcional es el sensor A: el nombre del mensaje de Entrada podría ser
“temperatura actual en A”; el objeto de interés de este mensaje podría también ser considerado como “sensor A”.
Teóricamente, el objeto de interés no es “sensor A”, sino “el material u objeto cuya temperatura está siendo detectada por el
sensor A”. En la práctica sin embargo añaden poco valor al documento estas finas distinciones y puede que no merezca la
pena identificar el objeto de interés separadamente.
Esta sección discute la identificación de atributos de datos referenciados por la parte del software que
se va a medir. En esta versión del método de medida no es obligatorio identificar los atributos de los
datos. Sin embargo, puede ser de ayuda analizar e identificar los atributos de datos en el proceso de
distinguir los grupos de datos y los objetos de interés. Los atributos de datos pueden también ser
identificados si una sub-unidad de la medida del tamaño es requerida, como se presenta en la
sección 4.5 “Extendiendo el método de medida COSMIC”.
3.4.1 Definición
Ejemplo 1: Atributos de datos en el contexto del dominio de aplicaciones de gestión como por ejemplo elementos de datos
registrados en el diccionario de datos y atributos de datos que aparecen en un modelo de datos conceptual o lógico.
Ejemplo 2: Atributos de datos en el contexto de las aplicaciones a tiempo real del software como por ejemplo atributos de
datos de una señal recibida de un sensor y atributos de datos de un mensaje en transmisión.
En teoría, un grupo de datos puede contener solo un atributo de datos si esto es suficiente, desde la
perspectiva de los requisitos funcionales de usuario, para describir el objeto de interés. En la práctica,
dichos casos ocurren normalmente en las aplicaciones a tiempo real del software (por ejemplo: la
Entrada que transmite el tick de un reloj a tiempo real); éstos son menos comunes en el software de
gestión.
Este capítulo presenta las reglas y el método para la fase de medición del proceso de medición
COSMIC. El método general para medir una aplicación software cuando sus Requisitos Funcionales
de Usuario se han expresado en términos del Modelo Genérico COSMIC de Software se resume en
el gráfico 4.0 debajo.
COSMIC MEASUREMENT PHASE
Section 4.1
FUR in the form
of the COSMIC IDENTIFY
Generic Software DATA MOVEMENTS
Model
Section 4.2
APPLY
MEASUREMENT
FUNCTION
All
NO
functional processes
measured ?
YES
Section 4.3
Functional Size
AGREGATE recorded information
of the measured
MEASUREMENT software
RESULTS
Cada paso de este método es el objeto de una sección específica de este capítulo, donde se
presentan las definiciones y principios a aplicar, junto con algunas reglas y ejemplos.
Este paso consiste en identificar los movimientos de datos (Entrada, salida, lectura y escritura) de
cada proceso funcional.
Un componente con base funcional que mueve un único tipo de grupo de datos.
Nota 1: Hay cuatro tipos de movimiento de datos: Entrada, Salida, Lectura y Escritura
Nota 2: Para la medición, cada tipo de movimiento de datos se considera que incluye
ciertas manipulaciones de datos asociadas - Ver sección 4.1.6 para más detalles.
Nota 3: Más precisamente, es una ocurrencia de un movimiento datos, no un tipo de
movimiento de datos, que realmente mueve las ocurrencias del grupo de datos (no los
tipos). Este comentario se aplica también a las definiciones de Entrada, salida, lectura y
escritura.
Una entrada (E) es un movimiento de datos que mueve un grupo de datos desde un
usuario funcional a través de la frontera hacia el proceso funcional donde se necesitan
Nota: Se considera que una entrada incluye ciertas manipulaciones de datos asociadas
(ver sección 4.1.6)
Una salida (X) es un movimiento de datos que mueve un grupo de datos desde un
proceso funcional a través de la frontera hacía el usuario funcional que los requiere.
Nota: Se considera que una salida incluye ciertas manipulaciones de datos asociadas
(ver sección 4.1.6)
Functional users
Boundary
Functional
Entry (E) process Exit (X)
1 data group 1 data group
Persistent
storage
Figura 4.1.1 - Los cuatro tipos de movimiento de datos y su relación con el proceso funcional y los
grupos de datos.
Una vez identificado, un candidato a movimiento de datos de Entrada debe cumplir con los siguientes
principios:
Un ejemplo que ilustra la regla c): cuando un proceso funcional escribe un certificado de fecha de registro, no se identifica
ninguna Entrada para obtener el valor del reloj del sistema.
Una vez identificados, cada movimiento de datos de Entrada puede ser registrado marcando la casilla
correspondiente a la tabla del Modelo Genérico de Software (apéndice A) con una “E”.
Una vez identificados, un candidato a movimiento de datos de Salida debe cumplir con los siguientes
principios:
Las siguientes normas podrían ser útiles para confirmar la condición de un candidato a movimiento de
datos de tipo Salida:
Ejemplo 2: Los mensajes de error que salen a los usuarios humanos pero que no son generados por la aplicación de
software deberían ser ignorados por completo en la medición de la aplicación. Un ejemplo de ese mensaje al pasar por el
sistema operativo podría ser “La impresora X no responde”.
Ejemplo 3: En un diálogo persona-ordenador, si un mensaje es la salida de un error de situaciones pero contiene datos
funcionales de usuario, entonces debe contarse como una salida en el proceso funcional donde ocurre. Un ejemplo de ese
mensaje podría ser “PELIGRO: la cantidad que desea retirar supera su límite por 100€” (donde los 100€ son una variable
calculada). En este ejemplo, la salida contiene un grupo de datos sobre la cuenta bancaria del cliente
Ejemplo 4: En un sistema en tiempo real, un proceso funcional que revisa periódicamente el correcto funcionamiento de
todos los dispositivos de hardware podría emitir un mensaje que informe “SENSOR X ha fallado”, donde “X” es una variable.
Este mensaje debe ser identificado como una salida en ese proceso funcional (independientemente del valor de “X”)
Ejemplo 5: Considerar procesos funcionales A y B. “A” puede potencialmente emitir 2 mensajes distintos de confirmación y 5
mensajes de error a sus usuarios funcionales y “B” puede potencialmente emitir 8 mensajes de error a sus usuarios
funcionales. En este ejemplo, será identificada una salida en el proceso funcional “A” (manejando 5 + 2 = 7 mensajes) y se
identificará una salida separada en el proceso funcional “B” (manejando 8 mensajes).
Una vez identificados, cada movimiento de datos de Salida puede ser registrado marcando la casilla
correspondiente de la tabla del modelo genérico de Software (apéndice A) con un “X”.
Una vez identificado, un candidato a movimiento de datos de Lectura debe cumplir con los siguientes
principios:
Una vez identificados, cada movimiento de datos de Lectura puede ser registrado por marcando la
casilla correspondiente de la Matriz de Modelo Genérico del Software (apéndice A) con una ‘R’.
4.1.5. Identificando escrituras (W)
Una vez identificado, el candidato como movimiento de datos de Escritura debe cumplir con los
siguientes principios:
Una vez identificadas, cada Escritura puede ser registrada marcando la casilla correspondiente de la
tabla del modelo de software genérico (apéndice A) con un ‘W’.
4.1.6. Sobre las manipulaciones de datos asociadas con los movimientos de datos
Sub-procesos son, tal como se define en el principio (d) del Modelo Genérico de Software (ver
sección 1.4), o bien movimientos de datos, o bien manipulaciones de datos. Sin embargo, por un
convenio actual de COSMIC (véase el principio (j) del Modelo Genérico de Software), no se reconoce
la existencia separada de manipulación de datos y sub-procesos.
Todas las manipulaciones de datos en un proceso funcional serán asociadas con los
cuatro tipos de movimiento datos (E, X, R, y W). Por convención, los movimientos de
datos de un proceso funcional se supone que también representan la manipulación de
los datos del proceso funcional
La necesidad de definir qué clase de manipulación de los datos está asociada con qué tipos de
movimientos datos surge sólo cuando hay que medir los cambios de software (ver sección 4.4). Un
cambio típico necesario afecta tanto a los atributos reubicados como a la manipulación asociada con
un movimiento de datos, pero puede afectar sólo a la manipulación de los datos, y no al movimiento
de los datos. Ese cambio todavía necesita ser identificado y medido.
A continuación están las directrices generales para identificar la manipulación de los datos
representados por cada uno de los movimientos de datos.
Ejemplo: Una entrada incluye toda manipulación, formato y presentación en una pantalla de los datos introducidos salvo
alguna Lectura(s) que podría ser necesaria para validar algunos códigos introducidos o para obtener algunas descripciones
asociadas.
Manual de Medición, Método COSMIC Versión 3.0.1. Copyright © 2009. 50
All rights reserved. The Common Software Measurement International Consortium (COSMIC)
Una Entrada de datos incluye cualquier funcionalidad “solicitud de entrada” excepto cuando el
proceso funcional debe informar al usuario funcional qué datos va a enviar (véase el punto 4.1.9 para
qué datos enviar y 4.1.10 para el tratamiento de una pantalla vacía como entrada).
Ejemplo: Una Salida incluye todo el tratamiento para formatear y preparar la impresión de algunos atributos, incluidos los
encabezados para aumentar la legibilidad por los humanos, salvo cualquier Lectura o Entrada que podría ser necesaria para
proporcionar los valores o descripciones de algunos atributos de impresión.
Una Lectura incluye todo tratamiento y/o cálculo necesario a fin de recuperar un grupo de datos del
almacén permanente pero no a manipulaciones con otro tipo de movimiento de datos ni
manipulaciones después de que la lectura se complete con éxito.
Ejemplo: Una lectura incluye todas las operaciones matemáticas y transformaciones lógicas necesarias para recuperar un
grupo de datos de un almacén permanente pero no la manipulación de los atributos después de que el grupo de datos se
haya obtenido.
Una Lectura también incluye siempre cualquier funcionalidad de “solicitud de lectura” (véase el punto
4.1.9).
Una Escritura incluye todos los tratamientos y/o cálculos para crear un grupo de datos que será
escrito pero no cualquier manipulación que incluya otro tipo de movimiento de datos, ni tampoco
manipulaciones de que la Escritura termine con éxito después de que la Escritura termine con éxito.
Ejemplo: Una Escritura incluye todas las operaciones matemáticas y transformaciones lógicas necesarias para crear o
actualizar un grupo de datos de Escritura, o para ser borrados excepto las lecturas o entradas que podrían ser necesarias
para dar valor a los atributos incluidos en el grupo que va a ser escrito o suprimido.
El Modelo Genérico de Software supone que normalmente en cualquier proceso funcional todos los
datos describen un objeto de interés que se traduce en un solo movimiento de datos de tipo Entrada
y/o en uno de tipo Lectura y/o en uno de tipo Escritura y/o en la producción de un movimiento de
datos de tipo Salida. El modelo supone también que toda manipulación de los datos resultantes de
todos los valores de los atributos los datos de un grupo que se mueve está asociado con un
movimiento de datos.
Ejemplo que ilustra este último supuesto; consideremos dos ocurrencias de un determinado proceso funcional dado.
Supongamos que en la primera ocurrencia los valores de algunos atributos se trasladan a una manipulación de datos del
sub-proceso “A” y que en otra ocurrencia del mismo proceso funcional el valor del atributo es conducido a otra manipulación
de datos del sub-proceso “B”. En tales circunstancias, tanto la manipulación de datos del sub-proceso “A” como “B” deben
asociarse con el mismo movimiento de datos y de ahí normalmente sólo un movimiento datos debe identificarse y ser
contado en ese proceso funcional.
Ejemplo 1 para una regla a): en un proceso funcional, todas las Lecturas de datos que describen un objeto de interés en
particular pueden considerarse lógicamente para devolver todos los atributos que describen ese objeto de interés (es decir,
el conjunto del “vector de estados” de ese objeto de interés). Por lo tanto normalmente, sólo una Lectura de cualquier dato
sobre un objeto de interés es funcionalmente necesaria y debe ser identificada en un proceso funcional.
Ejemplo 2 de las reglas a) y b): Después del Ejemplo 1, todos los datos que son leídos deben haberse hecho persistentes
por una Escritura, este es el caso en que normalmente sería identificada una Escritura por mover un grupo de datos que
contiene todos los atributos de un objeto de interés y que debe hacerse persistente en un determinado proceso funcional,
según la norma a). Es posible, sin embargo, que existan FUR para un único proceso funcional para escribir dos datos
diferentes grupos describiendo el mismo objeto de interés, por ejemplo, para un uso posterior por dos usuarios funcionales
distintos en otros procesos funcionales. Este sería un Ejemplo donde la norma b) se aplica, cuando dos Escrituras de datos
que describen el mismo objeto de interés pueden ser identificadas y contadas en el mismo proceso funcional.
Ejemplo 4 por regla c): Suponga que se requiere una Lectura en los requisitos funcionales de usuario que en la práctica
requiere muchas recuperaciones de ocurrencias, como en la búsqueda de un fichero. Para la medición, identificar sólo una
Lectura.
Ejemplo 5 por regla c): Suponga que en un proceso funcional de tiempo real los requisitos funcionales de usuario requieren
que los datos entren desde un determinado usuario funcional, por ejemplo, un dispositivo de hardware, dos veces en un
intervalo de tiempo para medir un tipo de cambio o para comprobar si un valor ha cambiado durante el proceso. Siempre
que las dos entradas sean idénticas en términos del grupo de datos reubicado y las manipulaciones de datos asociadas,
sólo deberá ser identificada una entrada.
Ejemplo 6 para la norma c): véase la sección 4.1.2, Norma d) para entradas, y la sección 4.1.3, Norma b) para las salidas.
Ejemplo 7 para regla d): Suponga un proceso funcional en el que es necesario que proporcione diversas opciones de
manipulación de datos dependiendo de los valores de los atributos de una entrada. Para la medición, identificar sólo una
entrada.
Ejemplo 8: Supongamos que una Lectura de un grupo de datos es necesaria en los requisitos funcionales de usuario, pero
el desarrollador decide implementarla mediante dos comandos para recuperar diferentes sub-series de atributos del mismo
objeto de interés de las ficheros de almacenamiento en diferentes puntos del proceso funcional. Identificar sólo una lectura.
4.1.8. Cuando un proceso funcional mueve datos para o desde un fichero de almacenamiento.
Esta sección explica los movimientos de datos involucrados cuando un proceso funcional de parte de
una aplicación software es requerido para desplazar datos hasta o desde un fichero de
almacenamiento, de manera local o remota. Los casos también mostrar cómo el almacenamiento de
una aplicación necesita ser manipulado por otro software que soporta la aplicación en otra capa, tales
como el almacenamiento permanente en un dispositivo.
Los casos ilustran la aplicación del principio (g) del Modelo de Contexto Software y los principios del
Modelo Genérico del Software. La clave para entender los casos es que estos principios deben ser
aplicados por separado a cada parte de software que deba ser medida.
El primer caso trata con los movimientos de datos de una consulta en una aplicación donde el
requisito para recuperar datos persistentes es manejado por un controlador software local en otra
capa. El segundo caso muestra cómo los diferentes movimientos de datos difieren cuando el requisito
de recuperar es satisfecho primero por parte semejante o par del software en la misma capa de la
aplicación.
En términos prácticos, los casos son aplicables cuando la tarea consiste en medir dos partes de
software que tienen una relación jerárquica (es decir, cuando las dos piezas están en diferentes
capas) o tienen una relación cliente-servidor (es decir, cuando las dos piezas están en la misma
capa). Los casos muestran cómo son medidos y modelados los movimientos de datos que son
físicamente intercambiados entre las dos partes de software.
Los ejemplos se ilustran usando los convenios de Diagramas de Secuencia de Mensajes. La notación
de estos diagramas es como se explica a continuación:
Ejemplo 1: Cuando un proceso funcional debe mover datos hasta o desde un fichero de almacenamiento local
Este ejemplo implica dos aplicaciones software, aplicación “A” y aplicación “B” que es el driver para un dispositivo de
almacenamiento que la aplicación software utiliza. (Para simplificar ignoramos la probable presencia de un sistema
operativo; el sistema operativo efectivamente transmite las peticiones de la aplicación al driver del dispositivo y devuelve los
resultados de las peticiones.)
El concepto de capas nos dice que las dos aplicaciones software están en diferentes capas: la capa de aplicación y la capa
de drivers de dispositivos. Físicamente, hay una relación jerárquica entre las dos piezas y (ignorando el sistema operativo)
una interfaz física entre el software de las dos capas, como por ejemplo en la Fig. 2.2.3.1.
Normalmente, los requisitos funciones de usuario de la aplicación “A” especificarán los procesos funcionales que incluyen la
necesidad de Leer y Escribir en el fichero de almacenamiento pero no en lo concerniente a cómo las Lecturas y Escrituras
son manejadas por otras infraestructuras software.
Aplicando el modelo de COSMIC a las dos piezas de software, los usuarios funcionales del software A en la capa de
aplicación podrían ser, por ejemplo, usuarios humanos, mientras que los usuarios funcionales del software B en la capa del
controlador es la aplicación A (ignorando el sistema operativo).
Supongamos que una consulta del proceso funcional ‘FP A’ del software A en la capa de aplicación exige una Lectura. La
figura 4.1.8.1 (a) muestra el modelo COSMIC de la aplicación en la que se busca información. La recuperación física de los
datos necesarios de los ficheros de almacenamiento es manejado por un proceso funcional ‘B’ del software B en la capa del
controlador. La figura 4.1.8.1 (b) muestra el modelado de este proceso funcional del driver del dispositivo.
Persistent storage
Application in Layer A device driver in Layer B
FP A FP B
E Functional E
user of Functional
Functional software in X
User:
user of R
layer B Persistent
application X E storage
in layer A X (=
application hardware
in layer A) device
Figuras 4.1.8.1 (a) y (b) Solución para una lectura emitida por el software 'A' en la capa de aplicación del
software a 'B' en la capa del controlador.
La figura 4.1.8.1 a) muestra la búsqueda de información desencadenada por una entrada, seguida de una lectura y luego
una salida con el resultado de la búsqueda. El proceso funcional A no tiene conocimiento de donde se obtienen los datos, ni
que en la práctica la lectura es delegada a algunos controladores de dispositivos software.
La figura 4.1.8.1 b) muestra que funcionalmente la Lectura solicita que la aplicación A es recibida como un evento de
Entrada al proceso funcional PF B, que luego recupera los datos solicitados desde el dispositivo físico de almacenamiento y
devuelve los datos a la aplicación como una salida. La aplicación A es pues un usuario funcional de los controladores del
software B.
El aparente desencuentro entre el número de movimientos de datos de la “Lectura” del software en la capa de aplicación y
la ‘Entrada/Salida par’ de software en la capa del dispositivo es debido al hecho de que por convenio, una Lectura de datos
se considera que incluye cualquier funcionalidad de ‘solicitud de lectura’.
Exactamente modelos análogos se aplicarían si el proceso funcional FP A fuera requerido para crear algún dato
permanente mediante una Escritura. En este caso, la salida del proceso funcional PF B del dispositivo software contendría
cualquier “código de retorno” o mensaje de error.
Ejemplo 2: Cuando un proceso funcional debe obtener datos de un componente homólogo o par de software
Físicamente, los dos componentes pares podrían ejecutarse en diferentes procesadores; en tal caso intercambiarían datos
a través de los respectivos sistemas operativos y cualquier otra capa intermedia de sus procesadores en una arquitectura
software tal como la Fig. 2.2.3.1. Pero lógicamente, aplicando el modelo COSMIC, los dos componentes intercambian datos
a través de ‘Entrada/Salida’. Todo el software y hardware que interviene es ignorado en este modelo (como también se
indica en el lado derecho de figura. 3.1.1).
La Figura 4.1.8.2 muestra un proceso funcional FP C1 de un componente cliente C1 que es desencadenado por una
Entrada de su usuario funcional que comprende, por ejemplo los parámetros de la información buscada. Los requisitos
funcionales del componente C1 reconocerán que este componente debe pedir al componente servidor C2 los datos
requeridos, y debe decirle qué datos son necesarios.
E FP C1 FP C2
X E
Functional user of
component C1 R
E X
X
El Componente C2 probablemente, por supuesto, utilice los servicios de algunos dispositivos de almacenamiento en una
capa inferior de la arquitectura software para recuperar los datos del hardware, como en el caso 1.
Comparando los casos 1 y 2, vemos que en el caso 1, los modelos de la aplicación A y el dispositivo
controlador B no pueden combinarse como en el ejemplo 2. Esto es porque una lectura no cruza una
frontera. La Figura 4.1.8.1 (B) muestra que la aplicación A es un usuario funcional de un dispositivo
controlador del software B. Pero lo contrario no es cierto, demostrando así el carácter jerárquico del
software en diferentes niveles.
En contraste, Fig. 4.1.8.2 puede mostrar los dos componentes en un modelo porque intercambian
datos como ‘pares’ o iguales. El Componente C1 es un usuario funcional del componente C2, y
viceversa, y comparten una frontera común.
Como por el principio c) para una entrada (ver sección 4.1.2), si un proceso funcional debe obtener
datos de un usuario funcional hay dos casos. Si el proceso funcional no necesita decirle al usuario
funcional qué datos enviar, una sola Entrada es suficiente (por objeto de interés). Si el proceso
funcional debe decirle al usuario funcional qué datos va a enviar, es necesaria una entrada/salida par.
Las normas son las siguientes:
Ejemplo 1 de la regla a), primer y segundo punto: donde un proceso funcional proporciona a un humano una pantalla de
entrada de datos, como en una aplicación de negocios on-line, el visualizar la pantalla ‘en blanco’ no se cuenta como una
Salida. Solo rellenar la pantalla es contado como una o más entradas (ver también la sección 4.1.10).
Ejemplo 2 de la regla a), tercer o cuarto escenario: Supongamos que un proceso funcional de un sistema con proceso
software de control en tiempo real necesario para comprobar un array con idénticos sensores. Las cuestiones relativas al
proceso son una Entrada (tipo). (De los sensores solo se identifica y se cuenta una Entrada, aunque hay múltiples
ocurrencias.)Supongamos que la Entrada debe en la práctica pasar a un dispositivo controlador de software en una capa
inferior de la arquitectura, que físicamente obtiene los datos necesarios desde el sensor como se ilustra en la Fig. 2.2.3.2.
Los procesos funcionales del proceso software de control y de los controladores software para los sensores sería como se
muestra en las Figuras 4.1.9.1 (a) y (b) debajo.
La figura 4.1.9.1 (a) y b) Solución para una entrada emitida por el software 'A' en la capa de la aplicación
del proceso de control recibida por el software 'B' en la capa del dispositivo de control del sensor.
La figura 4.1.9.1 (a) Muestra que el proceso software de control del proceso funcional ‘FP A’ es desencadenado por una
entrada ‘E1’ por ejemplo de un golpe de reloj. El proceso funcional luego obtiene la entrada ‘E2’ desde el array de sensores
para recibir las múltiples ocurrencias de los sensores de lecturas. Los sensores son también usuarios funcionales del
proceso software de control.
La figura 4.1.9.1 (b) Muestra que el software que impulsa el dispositivo del sensor recibe la Entrada (probablemente en la
práctica mediante un sistema operativo) como el disparador de un proceso funcional ‘FP B’. Este proceso funcional obtiene
una Entrada de su usuario funcional (tipo) y del sensor (tipo) para obtener los datos de los sensores que se reintegrarán al
proceso software de control como una salida. El proceso funcional del proceso software luego continúa con su
transformación de los datos del sensor. El hecho de que hay múltiples ocurrencias de este ciclo de recopilación de datos de
cada uno de los idénticos sensores es ignorado en el modelado.
El aparente emparejamiento entre la única Entrada del proceso software de control y la Entrada/Salida par de los
controladores software es debida al modo en que una Entrada es considerada como cualquier ‘solicitud de entrada’
funcional.
Ejemplo 3 de la norma b): Suponga que un proceso funcional envía a uno de sus usuarios funcionales como un dispositivo
hardware ‘inteligente’ o otro par de piezas software con algunos parámetros para una consulta o los parámetros de un
cálculo, o algunos datos para ser comprimidos. La respuesta de los usuarios funcionales se obtiene mediante una
entrada/salida par, tal como se describe en la sección 4.1.8, Caso 2.
Ejemplos de comandos de control en el dominio de aplicaciones de negocio son las funciones que permiten a un usuario
funcional controlar la cabecera de una pantalla (o no) o los subtotales que han sido calculados, navegar arriba y abajo y la
navegación física entre pantallas, hacer clic en ‘OK’ al reconocer un mensaje de error o confirmar algunos datos
introducidos, etc. Los Comandos de Control por lo tanto también incluyen comandos del menú que permiten al usuario
funcional navegar por uno o más procesos funcionales pero no iniciar un proceso funcional, y comandos para mostrar una
pantalla o formulario en blanco para ingresar datos.
Este paso consiste en la aplicación de la medida funcional de COSMIC a cada uno de los
movimientos de datos identificados en cada proceso funcional.
Según esta función de medición, cada instancia de un movimiento de datos (Entrada, Salida, lectura o
Escritura) que se requiere para ser añadido, cambiado o suprimido y que ha sido identificado según la
sección 4.1 recibe una puntuación de 1 PPC.
Este paso consiste en sumar los resultados de la medida funcional, tal como se aplica a todos los
movimientos de datos, en un único valor de tamaño funcional. Este paso se realiza según los
siguientes principios y reglas.
Ejemplo 1 de las normas b) y c): Un cambio solicitado para una pieza de software podría ser: ‘añadir un nuevo proceso
funcional de tamaño 6 CFP’, y en otro proceso funcional agregar un movimiento de datos, hacer modificaciones a otros tres
movimientos de datos y suprimir dos movimientos. ‘El tamaño total del cambio solicitado es de 6 + 1 + 3 + 2 = 12 CPF.
Ejemplo 2 de la regla f): Si diversas partes importantes de una pieza de software se desarrollan utilizando tecnologías
diferentes, por diferentes proyectos sub-equipos, no puede haber ningún valor práctico en añadir sus tamaños juntos.
El tamaño total de la suma del tamaño de todos los componentes por separado (en el segundo caso) superará al tamaño
cuando se mide ‘como un todo’ (en el primer caso) debido a la contribución de tamaño de todos los movimientos de datos
inter-componentes. Estos movimientos no son visibles cuando la pieza se midió ‘como un todo’ y debe ser eliminado para
obtener el tamaño ‘del todo’. Véase también el ejemplo en la sección sobre la medición en distintos niveles de granularidad
en arquitecturas de software puro en el documento “Temas avanzados y relacionados".
Es de señalar que, dentro de cada capa identificada, la agregación funcional es totalmente escalable.
Por lo tanto un sub-total puede ser generado para los distintos procesos funcionales o para todo el
software en una capa, dependiendo de la finalidad y alcance de cada ejercicio de medición y bajo las
normas d), e) y f) de arriba.
En un contexto donde el tamaño funcional deba utilizarse como una variable en un modelo, para
estimar el esfuerzo por ejemplo, y el software a ser medido tenga más de una capa o componente
Ejemplo 1: Considere un software donde la capa de aplicación se ejecutará utilizando 3GL y un conjunto de bibliotecas
existentes, mientras la capa de transporte podría estar implementada utilizando lenguaje ensamblador. La unidad de
esfuerzo asociada con la construcción de cada capa, muy probablemente, sea diferente, y, en consecuencia, una
estimación del esfuerzo será preparada por separado para cada capa sobre la base de su tamaño respectivo.
Ejemplo 2: Si un equipo del proyecto ha de desarrollar una serie de importantes piezas de software y está interesado en su
productividad global, se puede sumar el trabajo-hora necesario para desarrollar cada pieza. De manera similar, se pueden
sumar los tamaños de las principales piezas que ha desarrollado si (pero sólo si) esos tamaños satisfacen las normas dadas
anteriormente.
La razón por la que tamaños de grandes partes de software de diferentes capas de una arquitectura
estándar por capas, medida en el mismo nivel de granularidad del proceso, puedan sumarse es que
esa arquitectura tiene un conjunto coherente definido de usuarios funcional. Cada capa es un usuario
funcional de las capas bajas que se usan y cualquier pieza de software de una capa puede ser un
usuario funcional de cualquier otro par de piezas de software en la misma capa. Los requisitos de
dicha arquitectura imponen que los requisitos funcionales de usuario de las diversas piezas deberán
intercambiar mensajes. Es lógico y razonable que los tamaños de las distintas piezas puedan
sumarse, siempre sujeto a las normas d), e) y f) arriba indicadas. Sin embargo, en contraste con esto,
el tamaño de una pieza grande de software puede no ser obtenido sumando el tamaño de sus
componentes reutilizables a menos que el que los movimientos de datos del inter-objeto sean
eliminados, como por regla f) de arriba.
Agregar los resultados de las mediciones por tipo de los movimientos de datos podría ser útil para
analizar la contribución de cada tipo en el tamaño total de una capa y podría ayudar así a caracterizar
la naturaleza funcional de la capa medida.
Las normas para la medición del tamaño de cualquiera de estos cambios son las mismas pero el
medidor es alertado a distinguir las diversas circunstancias cuando se hacen mediciones del
rendimiento y estimaciones.
Cuando un software es reemplazado por completo, por ejemplo al re-escribir, con o sin ampliar y/u
omitir funcionalidades, el tamaño funcional de este cambio es el tamaño del software del reemplazo,
medido según las reglas normales para la medición del software nuevo. Este caso no será examinado
nuevamente en esta sección. El medidor debe ser consciente, sin embargo, de la necesidad que hay
cuando se hacen mediciones del rendimiento o estimaciones para distinguir entre los proyectos a
desarrollar enteramente con software nuevo y proyectos para ‘re-hacer o ‘reemplazar’ software
existente.
A menudo, una parte obsoleta de una aplicación es suprimida («desconectada sería una mejor
descripción) por abandonar el código de programa en lugar de sólo eliminar el contacto con la
funcionalidad obsoleta. Cuando la funcionalidad de la parte obsoleta asciende a 100 CFP pero la
Nota: La diferencia entre el tamaño de los cambios funcionales (discutido aquí) y el cambio en el
tamaño funcional del software. Generalmente, son diferentes. El tamaño de la última está recogido en
la sección 4.4.3.
Los comandos de control y los datos de aplicación general no implican movimientos de datos, ya que
no hay datos sobre los objetos de interés que son movidos. Por lo tanto, los cambios de comandos de
control y de datos de aplicación general no deben medirse. Por ejemplo, cuando el color de la
pantalla para todas las pantallas es cambiado, este cambio no debe medirse. (Ver sección 4.1.10
para una explicación de comandos de control y datos de aplicación general.)
Ejemplo de normas a) y b): Supongamos un requisito para añadir o modificar los atributos de los datos de un grupo D1, que
después de la modificación se vuelve D2. En el proceso funcional ‘A’ donde esta modificación es necesaria, todos los
Después del cambio funcional de una pieza de software, su nuevo tamaño total equivale al tamaño
original, más el tamaño funcional de todos los nuevos movimientos de datos, menos el tamaño
funcional de todos los movimientos de datos retirados. Los movimientos de datos modificados no
tienen influencia sobre el tamaño de la pieza de software ya que estos existen tanto antes como
después de que las modificaciones han sido realizadas.
4.5.1. Introducción
El método de medición COSMIC de tamaño funcional no pretende medir todos los aspectos del
software ‘tamaño’. Así, el método de medición COSMIC actualmente no está diseñado para
proporcionar una forma estándar de contabilidad del tamaño de ciertos tipos de Requisitos
funcionales de Usuario, especialmente algoritmos matemáticos complejos o secuencias de normas
complejas que se encontraron en sistemas expertos.
También, la influencia del número de atributos por movimiento de datos sobre software en el tamaño
del software no es capturado por este método de medición. La influencia sobre el tamaño de la
manipulación de sub-procesos de datos es tenida en cuenta para simplificar la suposición de que es
válido sólo para determinados dominios de software, tal como se define en la sección 1.1.1 sobre la
aplicabilidad del método.
Otros parámetros tales como ‘complexión’ (no obstante definido) se podrían considerar que
contribuyen al tamaño funcional. Un debate constructivo sobre esta cuestión es si primero se
requerirían definiciones comunes acordadas de los otros elementos dentro de la mala noción definida
de ‘tamaño’ como se aplica al software. Tales definiciones son todavía, en este punto, objeto de
investigación y de mucho debate.
Sin embargo, la medida de tamaño COSMIC se considera una buena aproximación para el estado del
método propuesto y el dominio de aplicabilidad. Sin embargo, puede ser que dentro del entorno local
de una organización que utilice el método de medición COSMIC, se desee para tener en cuenta esa
funcionalidad en una forma que sea válida como una norma local. Por esta razón, el método de
medición COSMIC tiene disposición para extensiones locales.
Cuando esas extensiones locales son utilizadas, los resultados de medición deben ser comunicados
según la convención especial presentada en la sección 5.1.
Las siguientes secciones muestran como extender el método con un estándar local.
Si se considera necesario para tener en cuenta algoritmos complejos, puede organizarse un estándar
local para esta funcionalidad excepcional. En cualquier proceso funcional donde existe una
anormalmente compleja manipulación de datos de un sub-proceso funcional, el medidor está libre de
asignar su propia determinación-local de puntos de función.
Cuando se necesita más precisión en la medición de los movimientos de datos, entonces se puede
definir una sub-unidad de medida. Por ejemplo, un medidor puede ser sub-dividido en 100
centímetros o 1000 milímetros. Análogamente, el movimiento de un único atributo podría ser utilizado
como sub-unidad de medida. Las mediciones sobre una pequeña muestra de software en los ensayos
de campo de COSMIC indican que en la muestra medida, el número promedio de atributos de datos
por movimiento de datos no varía mucho en los cuatro tipos de movimiento de datos. Por esta razón y
por motivos de facilitar las mediciones, la unidad de medida de COSMIC, 1 CFP, ha sido fijada en el
nivel de un movimiento de datos. Sin embargo, la precaución es claramente necesaria cuando se
comparan los tamaños medidos en CFP (puntos de función COSMIC) de dos piezas de software
distintas donde el número promedio de atributos datos por movimiento difiere notablemente en
ambas.
Cualquiera que desee perfeccionar el método COSMIC al introducir una sub-unidad de medida es
libre de hacerlo, pero debe dejar claro que el tamaño resultante medido no se expresa en el estándar
de puntos de función COSMIC.
El modelo de software genérico puede ser representado en una matriz donde las filas representen
procesos funcionales (los cuales puedan ser agrupados en capas), las columnas representan grupos
de datos y las celdas describen el sub-proceso identificado (Entrada, Salida, Lectura y Escritura).
Esta representación del Modelo de Software Genérico se presenta en el apéndice A.
Los resultados de medida COSMIC deben ser reportados y archivados de acuerdo a las siguientes
normas:
5.1 Etiquetado
Ejemplo: Un resultado obtenido empleando las reglas de este Manual de Medición se debería denotar como ‘x CFP
(v3.0.1)’.
Cuando se usan extensiones locales, como se define en la sección 4.5, el resultado de la medida
debe ser informado como se define a continuación:
Al archivar los resultados de medida COSMIC, se debe mantener la siguiente información para
asegurar que el resultado sea siempre interpretable.
Además de las medidas reales, descritas en el punto 5.1, se deberían tener en cuenta
los siguientes atributos de cada medida.
a) Identificación del componente de software medido (nombre, versión ID o
Configuración ID)
b) Las fuentes de información usadas para identificar el FUR utilizado para la medida.
c) El ámbito del software
d) Una declaración del propósito de la medida
e) Una descripción del alcance de la medida y su relación con el alcance global de una
serie de medidas relacionadas, si las hubiera. (Usar las categorías de alcance
genéricas de la sección 2.2)
f) Los usuarios funcionales del software
g) El nivel de granularidad del FUR y el nivel de descomposición del software
h) El punto en el ciclo de vida del proyecto cuando se hizo la medida (especialmente si
la medida es una estimación basada en FUR incompletas, o si en realidad se hizo
sobre la bases de funcionalidad repartida).
i) El objetivo o margen de error que se cree para la medida
j) Indicaciones de si el método de medida estándar COSMIC fue utilizado, y/o se usó
una aproximación local al método estándar y/o se utilizaron extensiones locales (ver
sección 4.5). Usar las reglas de etiquetado de las secciones 5.1 y 5.2.
k) Una indicación de si la medida es de funcionalidad desarrollada o entregada
(funcionalidad “desarrollada” se obtiene creando nuevo software; funcionalidad
“entregada” incluye funcionalidad desarrollada y también incluye funcionalidad
obtenida por otros medios diferentes a crear nuevo software, p.ej: incluir todas las
formas de reutilización de software existente, el uso de parámetros existentes para
añadir o cambiar funcionalidad, etc.).
l) Una indicación de si la medida es de funcionalidad recientemente proporcionada o si
es el resultado de un “incremento” de actividad (p.ej: la suma es de funcionalidad
añadida, cambiada o borrada-ver 4.4)
m) Una descripción de la arquitectura de capas de las que está hecha la medida, si es
aplicable
n) El número de componentes importantes, si es aplicable, cuyos tamaños han sido
añadidos para el tamaño total grabado
o) Para cada alcance dentro del alcance global de la medida, una matriz de medida,
como se especifica en el apéndice A
p) El nombre del medidor y cualquier certificado de cualificación de COSMIC
La siguiente estructura de matriz puede ser usada para contener los resultados de la mediciones para
cada componente identificado del modelo de software al ser medido. Cada alcance dentro del alcance
global tiene su propia matriz.
FASE DE REPRESENTACIÓN
• Cada grupo de datos identificados se registra en una columna.
• Cada proceso funcional es registrado en una línea específica, agrupados por componente
identificado.
FASE DE MEDICIÓN
• Por cada proceso funcional identificado, los movimientos de datos identificados son anotados en
su correspondiente celda de la siguiente manera: “E” para una Entrada, “X” para una Salida, “R”
para una Lectura y “W” para una Escritura.
• Por cada proceso funcional identificado, los movimientos de datos se suman por tipo y cada total
es registrado en la columna correspondiente en el extremo derecho de la matriz.
• El resumen de la medición puede ser calculado y registrado en los recuadros de cada
componente, en la línea de “TOTAL”.
La siguiente tabla identifica los principios del método COSMIC de medición con el propósito de una
referencia precisa.
ID DESCRIPCIÓN PRINCIPAL
P-04 Capa
a) El software en una capa intercambia datos con el software de otra capa mediante sus
respectivos procesos funcionales.
b) La ‘dependencia jerárquica’ entre capas es tal que el software en una capa puede usar
los servicios funcionales de cualquier software en una capa jerárquicamente inferior.
Done existan ese tipo de relaciones de uso, designamos a la capa que usa el software
como la ‘superior’ y cualquiera que contenga el software usado como su ‘subordinada’.
El software en la capa superior confía en los servicios del software en dichas capas
subordinadas para funcionar correctamente; la subordinada confía a su vez en el de
sus capas inferiores para funcionar correctamente, y así sucesivamente hacia abajo en
la jerarquía. Inversamente, el software en una capa subordinada junto con el software
de cualquier capa de la que dependa puede funcionar sin necesidad de los servicios
del software de ninguna de las capas superiores en la jerarquía.
c) El software de una capa no necesita usar todas las funcionalidades suministradas por
el software de una capa subordinada.
d) Los datos que se intercambian entre programas en dos capas cualquiera es definido
en interpretado de forma diferente en el respectivo FUR de dos partes del software,
esto es, dos partes del programa reconoce diferentes atributos de datos y/o subgrupos
de datos que intercambian. En cualquier caso debe existir también una o más atributos
o subgrupos de datos definidos en común para permitir al programa en la capa
receptora interpretar los datos enviados por el programa en la capa emisora, de
acuerdo a las necesidades de recepción del programa.
Con el propósito de ser unas referencias precisas, la siguiente tabla identifica cada regla del método
COSMIC
ID DESCRIPCIÓN DE LA REGLA
R-01 Alcance
a) El alcance de una Medición del Tamaño Funcional (FSM), debe ser derivada de los
propósitos de la medición.
b) El alcance no debe extenderse sobre más de una capa del software a medir.
R-02 Capa
a) Si el software se concibe usando una arquitectura establecida en capas según el
modelo COSMIC, entonces dicha arquitectura se debe utilizar para identificar las
capas a efectos de medición.
b) En el dominio de MIS o software de gestión, la capa superior (por ejemplo, la capa que
no está subordinada a ninguna otra capa), está normalmente referenciada como la
capa de ‘aplicación’. El software en esta capa confía en los servicios del software en
todas las otras capas para funcionar correctamente. En el dominio del software en
tiempo real la ‘capa superior’ se referencia normalmente como ‘sistema’ (como por
ejemplo en el ‘software del sistema de control de proceso’, ‘software del sistema de
control de vuelo’…).
c) No debe asumirse que cualquier software que se ha desarrollado fuera de cualquier
consideración de diseño o estructura puede ser particionada en capas acorde al
modelo COSMIC.
R-04 Frontera
a) Identifica al usuario o usuarios funcionales que interactúan con el software que está
siendo medido. La frontera se encuentra entre los usuarios funcionales y el software.
b) Por definición hay una frontera entre cada par de capas identificadas donde el
software en una capa es el usuario funcional del software en la otra, y la última es la
que será medida.
c) Hay una frontera entre cualquiera de dos partes de software, incluyendo dos
componentes cualquiera que son semejantes entre sí; en este caso cada parte del
software y/o cada componente pueden ser un usuario funcional del otro.
Este apéndice contiene un resumen de los principales cambios desde la versión 2.2 a través de la
versión 3.0 a la versión 3.0.1. del método COSMIC de medición del tamaño funcional. La versión 2.2
del método fue descrita en el ‘Manual de Medición v2.2’ (abreviado como ‘MM’), pero desde la versión
3.0 en adelante la documentación del método está distribuida en cuatro documentos, sólo uno de los
cuales es el ‘Manual de Medición’.
El propósito del apéndice es permitir a un lector que esté familiarizado con el MM v2.2 rastrear los
cambios que se han hecho para las versiones 3.0 y 3.0.1 y cuando sea necesario para comprender
su justificación. (Para los cambios realizados en la obtención de la versión 2.2 desde la versión 2.1,
consulte la versión 2.2 del Manual de medición, Apéndice E)
De la versión 2.2 a la versión 3.0
En la tabla siguiente se enseña los principales cambios hechos desde la versión 2.2 a la versión 3.0,
se hace referencia a los dos boletines de la actualización del método (‘MUB’). Un MUB es publicado
por COSMIC para proponer mejoras al método entre cambios importantes de versión. Los dos MUB
son:
• MUB 1 “Mejoras propuestas para las definiciones y características de una ‘capa’ de software”,
publicado in Mayo de 2003.
• MUB 2 “Mejoras propuestas para la definición de un ‘objeto de interés’ ”, publicado en Marzo de
2005.
En el proceso de actualización del método de la versión 2.2 a la versión 3.0, se ha hecho un esfuerzo
para distinguir entre ‘principios’ y ‘reglas’, y separar de ellos todos los ejemplos. Cambios como estos
y muchas mejoras en la redacción no se han descrito en la siguiente tabla.
2.2, 2.7, 1.5, Una fase de la ‘Estrategia de Medición’ ha sido separada como la
3.1, 3.2 Capítulo primera fase, de lo que ahora es un método en tres fases.
2
La fase de la Estrategia de Medición ahora incluye consideraciones
sobre ‘capas’, ‘fronteras’, y ‘usuarios (funcionales)’, los cuales se
consideran parte de la fase de representación en el MM v2.2.
Apéndice -- Este apéndice sobre ‘Más información de las capas del software’ ha
D sido eliminado, por ser incompatible con MUB 1 y añadir poco valor.
Véanse también las notas a continuación sobre los cambios teniendo
en cuenta MUB 1.
General El nombre ‘COSMIC-FFP’ del método ha sido simplificado por método ‘COSMIC’.
2.4.2 1.4 El ‘Modelo Genérico del Software’ ha sido extendido y refinado como
una declaración de principios.
2.4, 3.1 2.2.3, La definición de ‘capa’ ha sido modificada teniendo en cuenta MUB 1.
2.2.4, Las Figuras 2.4.1.1, 2.4.1.2 y 2.4.1.3 del MM v2.2 las cuales se usaron
para ilustrar la interacción de los usuarios con el software en ‘capas’
3.1
fueron sustituidas en la v3.0 por las Figuras 2.2.3.1 y 2.2.3.2 ilustrando
una típica arquitectura física con capas y las Figuras 3.1.1 y 3.1.2
ilustrando la interacción lógica de los usuarios funcionales con el
software en capas. El objetivo de este cambio es distinguir más
claramente la visión física de los programas típicos de las arquitecturas
de capas de la visión lógica de una interacción del usuario funcional
con una parte del software a medir de acuerdo con el modelo COSMIC.
2.5 4.2, 4.3 Las ‘Características’ del proceso de medición descritas en v2.2 han
sido establecidas como un conjunto de principios y reglas en v3.0.
2.7 2.2 Una nota ha sido añadida para la definición del ‘alcance’ para
distinguirlo del ‘alcance total’ de un ejercicio de medida (el cual incluye
varias partes separadas del software que deben ser medidas) del
‘alcance’ de un tamaño de medida individual.
3.2 4.1.8 Los tres ejemplos que ilustran la interacción de los usuarios a través de
una frontera con el software en diferentes capas y desde diferentes
‘puntos de vista’ de medición han sido movidos y reescritos con la
intención de eliminar los ‘puntos de vista de la medición’. Véase el
3.1 3.2.2 Los principios y reglas para un ‘proceso funcional’ se han fusionado en
un conjunto revisado de normas.
3.4 3.3.3 Los ejemplos de la identificación de los objetos de interés y los grupos
de datos se han separado de las normas para los grupos de datos.
Material específico de los convenios de análisis de datos de entidad-
relación han sido trasladados a la ‘Guideline for sizing Business
Application Software v1.0’.
-- 3.3.4 Se ha dado una guía ‘para los datos o grupos de datos que no son
candidatos a movimientos de datos’.
4.1 4.1.7 Las reglas sobre ‘des duplicación de movimientos de datos’ (ahora
llamadas como normas de ‘unicidad de movimiento de datos y posibles
excepciones’) han sido mucho más claras con varios ejemplos
añadidos.
4.1 -- Reglas específicas para cada dominio sobre los movimientos de datos
de Lectura y Escritura que actualizan procesos funcionales han sido
trasladados al documento ‘Guideline for sizing Business Application
Software v1.0’.
4.1.1 4.1.2 Se han racionalizado los principios y reglas para una Entrada. Se ha
añadido un nuevo principio relativo a la funcionalidad de la ‘petición de
entrada’.
4.1.2 4.1.3 Se han racionalizado los principios y reglas de una Salida incluyendo la
eliminación de la referencia al ‘punto de vista del usuario final’.
4.1.5 4.5 Se ha ampliado la discusión sobre ‘las extensiones locales del método’.
-- 4.4 Se ha añadido una nueva sección con nuevas reglas sobre ‘la medición
del tamaño de los cambios en el software’.
5.1 5.1 Las reglas del etiquetado de los resultados de la medición de la medida
han sido cambiadas para reconocer el cambio de la unidad de medida
de ‘Cfsu’ a ‘CFP’.
5.2 5.2 Para incluir más artículos se han ampliado las reglas sobre la
‘presentación de informes de la medida’.
V 3.0.1 Cambio
2.2.3 Para mayor claridad se ha cambiado la definición del ‘Nivel de Descomposición’ (MUB
5).
2.3.2 La regla c) de los límites ha cambiado para mayor claridad (consecuencia de MUB 5).
2.4.3 En la Figura 2.4.3.1, dos cuadros en la esquina derecha de la parte inferior, ‘método de
pago’ se ha cambiado por ‘medios de pago’, ya que éste es un término mejor para, por
ejemplo, cheque, tarjeta de crédito, etc.
3.2.2 La regla e) para un proceso funcional se ha visto limitada por la adición de las palabras
en cursiva. Ahora es: ‘Un proceso funcional se corresponde totalmente al alcance de la
medición de sólo una parte de una aplicación de software, y sólo a una capa’. Esta
limitación existe en la directriz para el dimensionamiento de Aplicaciones de Negocios
Software' v1.1, pero es válida para el software de cualquier dominio.
4.1.2 El principio c) para una Entrada ha sido cambiado para mayor claridad de cómo darse
cuenta de una ‘Petición de entrada’ (MUB 4).
4.1.7 Para mayor claridad del significado deseado, ha sido cambiada la frase inicial de la
sección sobre ‘Unicidad de Datos y Posibles Excepciones’ de la regla a). El ejemplo 2
también ha sido ampliamente modificado para mayor claridad.
4.1.8 La Figura 4.1.8.1 (b) ha cambiado para corregir un error sobre cómo un controlador de
dispositivo interactúa con el hardware (MUB 3).
4.1.9 Para mayor claridad se han cambiado las reglas sobre ‘Cuándo un proceso funcional
requiere datos de un usuario funcional’, y los ejemplos relacionados (MUB 4).
El Comité de Prácticas de Medición COSMIC (MPC) está ansioso de recibir opiniones, comentarios y
si es necesario, Solicitudes de Cambio para el Manual de Medición COSMIC. Este apéndice precisa
cómo comunicarse con el COSMIC MPC.
Todas las comunicaciones con el COSMIC MPC deben ser enviadas por e-mail a la siguiente
dirección:
mpc-chair@cosmicon.com
Los comentarios y/u opiniones concernientes al Manual de Medición, tales como las dificultades de
comprensión o la aplicación del método COSMIC, sugerencias para la mejora general, etc. se deben
enviar por e-mail a la dirección antes mencionada. Los mensajes se registran y, en general, serán
revisados en un plazo máximo de dos semanas desde la recepción. El MPC no puede garantizar
ninguna acción en respuesta a estos comentarios generales.
Podrán ser presentadas una solicitud formal de cambio (‘CR’), cuando el lector del manual de
medición crea que hay un error en el texto, por la necesidad de aclaraciones, o algunas necesidades
de mejora de texto.
Las CR’s formales serán tomadas en dos semanas desde la recepción. Cada CR recibirá entonces un
número de serie y será reenviada a los miembros del COSMIC MPC, un grupo mundial de expertos
en el método COSMIC. Su ciclo normal de revisión lleva al menos un mes y puede ser más si el CR
es difícil de resolver.
Como resultado de la revisión el CR puede ser aceptado, rechazado o ‘dejado en espera para un
discusión más profunda’ (este último caso por ejemplo si hay una dependencia de otro CR), y la
salida será comunicada al Remitente tan pronto como sea posible.
Una petición formal de cambio sólo se aceptará si se documenta con toda la información siguiente:
Finalmente, la decisión resultante por el MPC COSMIC de una petición de cambio y, si se acepta, se
aplicará en la versión del Manual de Medición de la petición de cambio.
El MPC COSMIC lamenta el no ser capaz de responder a preguntas relacionadas con el uso o
aplicación del método COSMIC. Existen organizaciones comerciales que pueden proporcionar la
formación y la consultoría o apoyo para la aplicación del método. Por favor, consulte la web
www.cosmicon.com para más detalles.