12.07.2015 Views

Libro en PDF - DIT - Universidad Politécnica de Madrid

Libro en PDF - DIT - Universidad Politécnica de Madrid

Libro en PDF - DIT - Universidad Politécnica de Madrid

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Medidas <strong>de</strong> la complejidad <strong>de</strong>l softwarePo<strong>de</strong>mos <strong>de</strong>finir un grafo fuertem<strong>en</strong>te conectado como aquél <strong>en</strong> el cual <strong>de</strong>s<strong>de</strong>todos y cada uno <strong>de</strong> sus nodos pue<strong>de</strong> <strong>en</strong>contrarse un camino que nos lleve a unocualquiera <strong>de</strong> los <strong>de</strong>más. Así, el grafo <strong>de</strong> la figura 18 no estará fuertem<strong>en</strong>te conectado,ya que <strong>de</strong>s<strong>de</strong> el nodo inferior, por ejemplo, no pue<strong>de</strong> alcanzarse el superior.Pues bi<strong>en</strong>, basta con añadir un nuevo arco <strong>de</strong>s<strong>de</strong> este nodo inferior al superiorpara que sea un grafo fuertem<strong>en</strong>te conectado (ver figura 19). Al calcular el númerociclomático <strong>de</strong>l nuevo grafo, observamos que esV(G)=13-10+2.1=5esto es, uno más que el <strong>de</strong> la figura 18. Por eso parece lógico añadir uno al númerociclomático calculado para un programa, si lo hemos repres<strong>en</strong>tado como un grafono fuertem<strong>en</strong>te conectado.Dado un programa, codificado <strong>en</strong> cualquier l<strong>en</strong>guaje, pue<strong>de</strong> <strong>de</strong>mostrarse que sunúmero ciclomático (suponi<strong>en</strong>do el grafo fuertem<strong>en</strong>te conectado, <strong>en</strong> el s<strong>en</strong>tido quehemos visto hace un mom<strong>en</strong>to) coinci<strong>de</strong> con la expresiónV(G)=N+1don<strong>de</strong> N es el número total <strong>de</strong> s<strong>en</strong>t<strong>en</strong>cias <strong>de</strong> <strong>de</strong>cisión <strong>de</strong>l programa. A<strong>de</strong>más, lacu<strong>en</strong>ta <strong>de</strong> estas s<strong>en</strong>t<strong>en</strong>cias se hace <strong>de</strong> la sigui<strong>en</strong>te forma: si es <strong>de</strong> tipoIF..THEN..ELSE, se cu<strong>en</strong>ta como 1; si es <strong>de</strong> tipo CASE, con n alternativas, se cu<strong>en</strong>tacomo n-1. Es s<strong>en</strong>cillo comprobar que esta forma <strong>de</strong> contar se correspon<strong>de</strong> exactam<strong>en</strong>tecon el número <strong>de</strong> arcos y nodos implicados <strong>en</strong> la repres<strong>en</strong>tación gráfica<strong>de</strong> estas estructuras.Esta propiedad <strong>de</strong>l número ciclomático es la que hace que su cálculo sea tans<strong>en</strong>cillo. Basta con construir un analizador léxico que vaya contando las ocurr<strong>en</strong>cias<strong>de</strong> las s<strong>en</strong>t<strong>en</strong>cias tipo IF..THEN..ELSE y CASE, con las salveda<strong>de</strong>s explicadas, y laobt<strong>en</strong>ción <strong>de</strong>l valor <strong>de</strong> esta métrica es inmediata.287

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!