我们提出了面向对象软件耦合网络模型来描述面向对象软件组成元素之间的交互关系。与已有的描述软件的网络的方法不同,我们的模型考虑了网络中节点的权重,是基于加权有向网络的。从软件度量领域引入了WMC作为面向对象软件耦合网络模型中节点的权。
2.1.3 图论的相关知识
网络一般需要借助图来表示。这里,仅对本文中涉及的一些图论概念进行概要介绍。
无向图G是一个二元组 ,,其中 是图G的顶点集,它的元素称为图G的顶点,E是图G的边集,它的元素称为图G的边,且满足 ,都有且仅有两个顶点 与e关联,称为e的两个端点,通常将e记为 。
有向图D是一个二元组, ,其中 是图D的顶点集,它的元素称为图G的顶点,E是图D的边集,它的元素称为图D的边,且满足 ,都有一个顶点 是起点,同时有一个顶点 是e的终点,通常将e记为 。
有向图去除所有边的方向后得到的无向图称为该图的基图。
对于无向图或有向图 ,
(1)若 ,即它关联同一个顶点,则称e是环。
(2)若 ,即 和 都关联相同的顶点,则称 和 是重边。
对于无向图 ,如果G既没有环也没有重边,则称G是简单图。对于有向图 ,如果G既没有环也没有重边,则称为有向简单图。
对于无向图 ,如果 ,则称G是完全图。它的顶点与边的关系为: 。
对于有向图 ,如果 ,则称G是有向完全图。它的顶点与边的关系为: 。
给定图 ,如果图 满足 ,则称 是G的子图。
顶点v所有邻接顶点构成的子图称为该顶点的邻接子图。
图 的点边交替 称为G的一条从 到 的长为n-1的路径,其中 (无向图),或 (有向图),若存在从顶点u到顶点v的路径,则称从u到v可达。
路径长度:对于不加权的图,路径长度指该路径的边数;对于加权图,路径长度则是该路径上所有边的权值相加。
所在顶点都相连的无向图称为连通图。对于有向图G,若它的基图是连通图,则称G是弱连通的;若G的任意两个顶点都相互可达,则称G是强连通的;若G的任意两个顶点至少从一个到达另一个可达,则称G是单向连通的。非连通无向图的极大连通子图称为连通分量;非强连通有向图的极大强连通子图称为强连通分量。
2.1.4 软件网络依赖关系模型
软件系统从根本上看,都可以抽象为计算服务提供者以及它们之间的依赖关系。在结构化软件中,服务提供者是函数,服务提供者之间的依赖关系表现为函数之间的调用关系。例如,函数A调用子函数B,说明A依赖于B所提供的服务。在面向对象软件中,服务提供者是类或接口,类或接口间的继承、依赖、关联、聚合和组成等关系在本质上也是一种程序调用关系即服务之间的依赖关系。例如类A继承类B,说明A将使用B中的接口和实现,即A依赖于B提供的服务。这样,就从概念上统一了不同类型,不同粒度的软件网络模型定义,同时实现了不同粒度模型之间的直接映射关系。我们将这种抽象模型称作软件的依赖网络模型。
对于一个JAVA类图,我们用图来表示整个的软件系统,在这里可以将整个软件系统划分为3层面来处理。
第一层:整个面向对象软件系统拥有许许多多的类,包,等等模块,可以先将其分类,便于整理操作。
第二层:将面向对象软件系统中的每一个类用一个节点来表示,一个类对应于一个节点。
第三层:每一个类与其他类之间的关系,如关联、泛化、实现和依赖关系,我们用图中的边来表示,边根据类的具体关系从而确定其方向。具体方法如下:
如果类/接口A 继承类/接口B, 那么建立一条有向边A 到 B; 面向对象软件的软件网络构建和可视化(6):http://www.751com.cn/jisuanji/lunwen_4177.html