Complejidad en el Software

(Abstracto del Documento Property-based Software Engineering Measurement)

Indice

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.

Representaci�n de un sistema y de sus m�dulos

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 = , un sistema m = ser� un m�dulo de S si y solo si:

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

Comlejidad-sistema.jpg (32812 bytes)

Un Sistema S como el conjunto de sus elementos E y sus relaciones R. Organizado en subsistemas o M�dulos M

Introducci�n a la complejidad de el software.

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).

Definici�n general de complejidad

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.

Definici�n formal de complejidad

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 = es no-negativa

comple-prop1.gif (1284 bytes)                                                                                                    

Propiedad Complejidad.2: Valor Nulo

La Complejidad de un sistema S = es nulo si R esta vacia.

comple-prop2.gif (1314 bytes)                                                                                                                    

Propiedad Complejidad.3: Symetr�a

La Complejidad de un sistema S = no depende de la convencion selecionada para representar las relaciones entre sus elementos

comple-prop3.gif (1825 bytes)

Propiedad Complejidad.4  Monotonicidad de los m�dulos

La Complejidad de un sistema S =   Nunca ser� menor que la suma de las complejidades de cualquiera de dos de sus m�dulos con ninguna relaci�n entre ellos (aunque �stos compartan elementos).

comple-prop4.gif (3023 bytes)

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

comple-prop4-fig.gif (7918 bytes)

Ilustraci�n de la propiedad complejidad.4

Propiedad Complejidad.5: Aditividad de modulos disjuntos

La Complejidad de un sistema S = Compuesta por los m�dulos disjuntos m1 y m2 es igual a la suma de las complejidades de dicos m�dulos

comple-prop5.gif (2547 bytes)

Funci�n Complejidad(S) aplicada a un sistema de telecomunicaciones p�blicas

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.  

 

Referencias mencionadas en esta p�gina

 

[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.

title.jpg (99270 bytes)

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

1

Hosted by www.Geocities.ws

1