(Abstracto del Documento Property-based Software Engineering Measurement)
Representaci�n de un sistema y de sus m�dulos
Definici�n general de complejidad
Definici�n formal de complejidad
Funci�n Complejidad(S) aplicada a un sistema de telecomunicaciones p�blicas
Referencias mencionadas en esta p�gina
En este trabajo se expone una propuesta de m�tricas de software basadas en propiedades mate�ticas. su intenci�n es el proporcionar una medida cuantitativa a varios conceptos de software, entre ellos la Complejidad.
En este trabajo la siguiente es la representaci�n de un sistema computacional:
Un sistema S es representado como un par <E,R>, donde E representa el conjunto de elementos de S, y donde R representa el conjunto de las relaciones que existen entre los elementos de S
Dado un sistema S =
Em pertenece a E y ademas:
Rm pertenece a R.
Por ejemplo: E puede ser definido como un conjunto de estatutos de un c�digo y R el conjunto de flujos de control entre estos estatutos de c�digo.
La siguiente figura define gr�ficamente lo que nosotros entendemos como un sistema y sus m�dulos

Un Sistema S como el conjunto de sus elementos E y sus relaciones R. Organizado en subsistemas o M�dulos M
La Complejidad es un concepto que es considerado extremadamente relevante para un sistema computacional, el cual ha sido abordado por varios investigadores. Es importante hacer notar que la definici�n de complejidad usada en este trabajo es intencionalmente mas restrictiva que la usada por otros investigadores [CSM79]. Esto nos permite proporcionar una definici�n de la complejidad de un artefacto a trav�z de un conjunto definido de propiedades.
La Complejidad se define como una propiedad intr�nseca de los artef�ctos y no toma en cuenta la percepci�n de un observador externo. Nuestra intencion es claramente diferente de la expuesta en Curtis et al [CSM79] en donde se mide la complejidad de el software por el impacto que este tenga en otros elementos (como por ejemplo en la Gente).
En nuestras definiciones esperamos que la complejidad sea:
No Negativa (Propiedad Complejidad.1)
Y Nula (Propiedad Complejidad.2) cuando no haya relaciones entre los elementos de un sistema.
Puede ser punto de discuci�n que la complejidad no es nula cuando no hay relaciones entre los elementos de un sistema por que cada elemento tiene una complejidad propia. Sin embargo, el enfoque dado en este trabajo mide la complejidad de un sistema que depende de las relaciones entre sus elementos y no como una propiedad de un elemento aislado.
La Complejidad que un elemento aislado puede agregar a un sistema bien puede ser el resultado de las relaciones entre sus sub-elementos. Por ejemplo, en un sistema modular, cada m�dulo puede ser visto como un "componente de alto nivel" el cual encapsula "subelementos". Si queremos considerar el sistema como compuesto solamente de estos "componentes de alto nivel", no debemos "desempacar" estos elementos para medir su complejidad y solo tomar en cuenta las relaciones entre los componentes de alto nivel.
Pero si deseamos tomar en cuenta la complejidad que aporta cada componente al sistema entonces el sistema debe de ser visto como la suma de los componentes y subcomponentes. As� como las relaciones totales del sistema son la suma de las relaciones entre componentes de alto nivel mas la suma de las relaciones de los subcomponentes.
La Complejidad no debe de ser sensitiva a las convenciones para representar la direcci�n de los arcos que representan las relaciones entre sus componentes. (Propiedad Complejidad.3) Un sistema y las relaciones entre sus componentes no cambian si cambiamos la forma de representarlos. por lo tanto la complejidad tampoco debe cambiar con este respecto.
De igual manera:
La complejidad de un sistema S debe ser igual o mayor que la suma de las complejidades de cualquiera de sus modulos m aun cuando no hay relaciones entre estos modulos pero estos comparten componentes. (Propiedad Complejidad.4)
Esto se explica porque al juntar m�dulos impl�citamente genera m�s relaciones entre las entidades de estos m�dulos. (Relaciones de "definici�n" o "Uso" de los componentes unidos son creadas al juntar dos m�dulos de un sistema). Como consecuencia la propiedad Complejidad.4 tiene tamien otra forma de enunciarse.
La complejidad de un sistema nunca disminuir� cuando las relaciones entre sus componentes aumenten. (Propiedad Complejidad.4)
Se ha argumentado que no siempre es cierto que entre mas relaciones mayor la copmplejidad de el sistema. En algunos casos, el agregar relaciones entre componentes puede ayudar a entender mas al sistema. esto es desde luego cierto, pero lo que se mejora es el entendimiento de el sistema (esto es, la percepci�n de el sistema hecha por un agente externo, como la gente), y no la complejidad. La complejidad es solo un factor a aplicar para determinar el entendimiento de el sistema y puede ayudar a pronosticarlo, pero no es el �nico elemento que se deba de usar para medir el entendimiento de el sistema.
Por �ltimo:
La Complejidad de un sistema que se conforma de m�dulos disjuntos (que no comparten ni relacion ni componentes uno con otro) ser� igual a la suma de las complejidades de dichos m�dulos (propiedad Complejidad.5). Consistente con la propiedad Complejidad.4 si un sistema es conformado por dos m�dulos pero estos no son unidos (esto es que aun sean disjuntos) entonces, ninguna nueva relaci�n es generada entre los modulos disjuntos.
Estas propiedades que se definen para la medici�n de la complejidad son, hasta cierto punto, una generalizaci�n de las propiedades que varios autores han ya proveido en la literatura. (Ref [LJS91, TZ92, W88] para la complejidad en el software, usualmente usadas para graficas de flujo de control. Nosotros las hemos generalizado porque de esta manera podremos usarlas en artefactos diferentes al c�digo de software o a otras abstracciones diferentes a los flujos de control.
La Complejidad de un sistema S est� dada por la funci�n COMPLEJIDAD(S) la cual est� caracterizada por las siguientes propiedades.
Propiedad Complejidad.1: No Negatividad
La Complejidad de un sistema S =
Propiedad Complejidad.2: Valor Nulo
La Complejidad de un sistema S =
Propiedad Complejidad.3: Symetr�a
La Complejidad de un sistema S =
![]()
Propiedad Complejidad.4 Monotonicidad de los m�dulos
La Complejidad de un sistema S =

Por ejemplo: la complejidad de el sistema S mostrado en la figura siguiente es mayor que la complejidad de los modulos m1 y m2

Ilustraci�n de la propiedad complejidad.4
Propiedad Complejidad.5: Aditividad de modulos disjuntos
La Complejidad de un sistema S =

El MSC de el sistema de telecomunicaciones m�vil descrito en este trabajo consta en promedio de 900 M�dulos. estos M�dulos tienen en promedio 100 relaciones con otros m�dulos. As� que el c�lculo superficial de la complejidad de el MSC es:
COMPLEJIDAD (S) = (900,(100*900)) = 90000
El resultado de 90000 es un indicativo de que la complejidad en un nodo de telecomunicaciones m�vil es bastante alta.
[CSM79]
B. Curtis, S. Sheppard, P. Milliman, M. Borst, T. Love,
"Measuring the
Psychological Complexity of Software Maintenance Task with the Halstead and
McCabe Metrics," IEEE Trans. Software Eng., vol. 5, no. 2, pp. 96-104, March
1979.
[LJS91]
K. B. Lakshmanian, S. Jayaprakash, and P. K. Sinha, "Properties
of Control-Flow
Complexity Measures," IEEE Trans. Software Eng., vol. 17, no. 12, pp. 1289-1295,
Dec. 1991.
[TZ92]
J. Tian and M. V. Zelkowitz, "A Formal Program Complexity Model
and Its
Application," J. Syst. Software, vol. 17, pp. 253-266, 1992.
[W88]
E. J. Weyuker, "Evaluating Software Complexity Measures,"
IEEE Trans. Software
Eng., vol. 14, no. 9, pp. 1357-1365, Sept. 1988.