结构推理 程序复杂性的度量方法有哪些?
【正确答案】程序复杂性的度量方法有:
   (1)代码行度量法。此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的度量。代码行度量法只是一个简单的、估计得很粗糙的方法。
   (2)McCabe度量法。McCabe度量法是由Thomas McCabe提出的一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称“环路度量”,它认为程序的复杂性很大程度上取决于控制的复杂性。
   这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图。也就是说,把程序流程图中每个处理符号都退化成一个 结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。
   根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:
   V(G)=m-n+2p
   其中,V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是G中的强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。
【答案解析】