《UML与系统分析设计(第二版) 第9章 包图.ppt》由会员分享,可在线阅读,更多相关《UML与系统分析设计(第二版) 第9章 包图.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在对一个大型的软件系统建立模型时往往需要面对在对一个大型的软件系统建立模型时往往需要面对和处理大量的模型元素,如对象类、接口、组件、和处理大量的模型元素,如对象类、接口、组件、节点、图等。节点、图等。UMLUML的包是一种对模型元素进行成组组织的通用的包是一种对模型元素进行成组组织的通用机制,它把语义上相近的可能一起变更的模型元机制,它把语义上相近的可能一起变更的模型元素组织在同一个包里,便于理解复杂的系统,控素组织在同一个包里,便于理解复杂的系统,控制系统结构各部分间的接缝。制系统结构各部分间的接缝。包是一种概念性的模型管理的图形工具,只在软件包是一种概念性的模型管理的图形工具,只在软件的开
2、发过程中存在。的开发过程中存在。包可以用于组织一个系统模型。一个系统的框架、包可以用于组织一个系统模型。一个系统的框架、模型、子系统等也都可以看作是特殊的包。模型、子系统等也都可以看作是特殊的包。第第9 9章章 包包图图Home第第9 9章章 包包图图9 9.1 .1 包包9.2 9.2 包的联系包的联系9.3 9.3 包图包图9.9.4 4 包图的应用包图的应用Home9.1 9.1 包包Home9.1.1 9.1.1 包的语义和表示包的语义和表示9.1.2 9.1.2 包的嵌套包的嵌套9.1.3 9.1.3 标准构造型标准构造型包(包(PackagePackage)是一种对模型元素进是一种
3、对模型元素进行成组组织的通用机制。行成组组织的通用机制。包用于定义一个名字空间包用于定义一个名字空间(NamespaceNamespace)或容器(或容器(ContainerContainer),),它本身是它本身是UMLUML的一种模型元素。的一种模型元素。运用包可以把语义上相近的可能一运用包可以把语义上相近的可能一起变更的模型元素组织在同一个包起变更的模型元素组织在同一个包里,对包中的元素作为一个整体对里,对包中的元素作为一个整体对待,并且控制它们的可视性和存取。待,并且控制它们的可视性和存取。包的图标是一个大矩形(内容框)包的图标是一个大矩形(内容框)的左上角带一个小矩形(名字框),的左
4、上角带一个小矩形(名字框),如图如图9.19.1所示。所示。包的名字可是一个简单名或路径名。包的名字可是一个简单名或路径名。在包名之后或之下,可用括在花括在包名之后或之下,可用括在花括号中的文字(约束)说明包的性质,号中的文字(约束)说明包的性质,如如“abstractabstract”、“versionversion”等。等。9.1.1 9.1.1 包的语义和表示包的语义和表示Home图9.1 简单包和扩展包示例 一个包可以拥有一个或多个模型元素,包括对象类、接一个包可以拥有一个或多个模型元素,包括对象类、接口、组件、节点、协同、口、组件、节点、协同、Use CaseUse Case、图等,
5、甚至拥有其图等,甚至拥有其他包。他包。所有所有UMLUML的模型元素都可以放入包内。通常,一个包拥的模型元素都可以放入包内。通常,一个包拥有的是对象类或其他的包。有的是对象类或其他的包。包与它所含的模型元素之间的关系是一种组合联系,即包与它所含的模型元素之间的关系是一种组合联系,即一个包由一个或多个模型元素组成,每一个模型元素在一个包由一个或多个模型元素组成,每一个模型元素在该包中声明。该包中声明。一个模型元素只能为一个包唯一地拥有。一个包消失了,一个模型元素只能为一个包唯一地拥有。一个包消失了,它所拥有的全部模型元素也随之消失。它所拥有的全部模型元素也随之消失。不同包的模型元素可以同名,但在
6、同一个包中的模型元不同包的模型元素可以同名,但在同一个包中的模型元素不能同名。素不能同名。9.1.1 9.1.1 包的语义和表示包的语义和表示Home包的模型元素名前可以有可视性标记,分包的模型元素名前可以有可视性标记,分别用别用“+”、“#”、“-”表示可视性为表示可视性为“公共公共”、“保护保护”、“私用私用”,如图,如图9.29.2所所示。示。包只是一种组织模型元素的容器,它没有包只是一种组织模型元素的容器,它没有实例,只有内含的内容,即对象类、接口实例,只有内含的内容,即对象类、接口等模型元素。等模型元素。包纯粹是一种概念性的建模工具,它与组包纯粹是一种概念性的建模工具,它与组件不同。
7、包只在软件的开发过程中存在,件不同。包只在软件的开发过程中存在,它类似一个有标签的文件夹,其中包含有它类似一个有标签的文件夹,其中包含有包的名字和内容。而组件是系统的组成部包的名字和内容。而组件是系统的组成部分,既存在于软件的开发过程中,也存在分,既存在于软件的开发过程中,也存在于系统的运行期间。于系统的运行期间。包内的模型元素具有较强的内聚性,不同包内的模型元素具有较强的内聚性,不同的包的元素之间的耦合性很弱。的包的元素之间的耦合性很弱。9.1.1 9.1.1 包的语义和表示包的语义和表示Home图9.2 包中元素的可视性 包可以拥有其他包作为包内的元素,子包又可以拥有自包可以拥有其他包作为
8、包内的元素,子包又可以拥有自己的子包,这样可以构成一个系统的嵌套结构,以表达己的子包,这样可以构成一个系统的嵌套结构,以表达系统模型元素的静态结构关系。系统模型元素的静态结构关系。包的嵌套可以清晰地表现系统模型元素之间的相互关系。包的嵌套可以清晰地表现系统模型元素之间的相互关系。但嵌套不宜过深,包的嵌套层数一般以但嵌套不宜过深,包的嵌套层数一般以2 23 3层为宜。层为宜。例:图例:图9.39.3是包的嵌套的一个示例,它表示一个通用图形是包的嵌套的一个示例,它表示一个通用图形编辑器的组织结构。编辑器的组织结构。包与它的元素的组成关系可以用树形结构表示,这对于包与它的元素的组成关系可以用树形结构
9、表示,这对于表达概念模型是有用的。例如,图表达概念模型是有用的。例如,图9.49.4是图是图9.39.3的树形表的树形表示,只不过它不能表达子包之间的依赖联系。示,只不过它不能表达子包之间的依赖联系。对于一个包可视的元素,对于该包的内嵌套子包也是可对于一个包可视的元素,对于该包的内嵌套子包也是可视的。视的。9.1.2 9.1.2 包的嵌套包的嵌套Home例:包的嵌套示例,如图例:包的嵌套示例,如图9.39.3所示。所示。9.1.2 9.1.2 包的嵌套包的嵌套Home图9.3 包的嵌套示例例:包中元素的树形结构示例,如图例:包中元素的树形结构示例,如图9.49.4所示。它是图所示。它是图9.3
10、9.3的树形表示。的树形表示。9.1.2 9.1.2 包的嵌套包的嵌套Home图9.4 包中元素的树形结构 对于一个包可以加上构造型或标记值说明其特定的性质,如说明包对于一个包可以加上构造型或标记值说明其特定的性质,如说明包的开发者,包所提供的服务等。的开发者,包所提供的服务等。UMLUML预定义的用于包的构造型有:预定义的用于包的构造型有:facade、等。等。构造型构造型facade说明一个包仅仅是其他一些包的视图。说明一个包仅仅是其他一些包的视图。构造型构造型framework说明一个包代表模型架构。说明一个包代表模型架构。构造型构造型stub说明一个包是另一个包的公共内容的服务代理。说
11、明一个包是另一个包的公共内容的服务代理。构造型构造型subsystem说明一个包代表系统模型的一个独立部分,说明一个包代表系统模型的一个独立部分,即子系统。即子系统。构造型构造型system说明一个包代表系统模型。说明一个包代表系统模型。构造型构造型facade和和stub特别有助于管理大型系统模型。特别有助于管理大型系统模型。9.1.3 9.1.3 标准构造型标准构造型Home9.2 9.2 包的联系包的联系Home9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖9.2.2 9.2.2 泛化泛化9.2.3 9.2.3 合并合并包与包之间的联系主要有两种:依赖(尤其是包与包之间的联系主要有
12、两种:依赖(尤其是输入依赖)和泛化。输入依赖)和泛化。两个模型元素之间存在着依赖是指一个元素的两个模型元素之间存在着依赖是指一个元素的定义的改变会引起另一个元素发生相应改变。定义的改变会引起另一个元素发生相应改变。对于对象类来说,依赖联系有多种情况,如一对于对象类来说,依赖联系有多种情况,如一个类以另一个类作为其数据的一个部分,一个个类以另一个类作为其数据的一个部分,一个类用另一个类作为操作的参数等。类用另一个类作为操作的参数等。两个包之间存在着依赖通常是指这两个包所含两个包之间存在着依赖通常是指这两个包所含的模型元素之间存在着一个或多个依赖。的模型元素之间存在着一个或多个依赖。9.2.1 9
13、.2.1 依赖与输入依赖依赖与输入依赖Home对于由对象类组成的包,如果在两个包的任何对于由对象类组成的包,如果在两个包的任何对象类之间存在着任何一种依赖,则这两个包对象类之间存在着任何一种依赖,则这两个包之间存在着依赖。之间存在着依赖。包的依赖联系同样是用一条虚箭线表示,虚箭包的依赖联系同样是用一条虚箭线表示,虚箭线从依赖包(源)指向独立包(目标)。线从依赖包(源)指向独立包(目标)。包的依赖联系没有传递性。包的依赖联系没有传递性。例:例:“订货订货”包与包与“顾客顾客”包之间存在着依赖,包之间存在着依赖,如图如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖H
14、ome例:包的嵌套与泛化示例,如图例:包的嵌套与泛化示例,如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home图9.5 包的嵌套与泛化示例 包的依赖联系可以加上许多构造型规定它的语义,其中包的依赖联系可以加上许多构造型规定它的语义,其中最常见的一种依赖是输入依赖。最常见的一种依赖是输入依赖。输入依赖(输入依赖(Import DependencyImport Dependency)是包与包之间的一种存是包与包之间的一种存取(取(AccessAccess)依赖关系。输入(依赖关系。输入(ImportingImporting)是指允许一是指允许一个包中的元素存取另
15、一个包中的元素。输入依赖是单向个包中的元素存取另一个包中的元素。输入依赖是单向的。输入依赖没有传递性。的。输入依赖没有传递性。包的公共部分,即其可视性为包的公共部分,即其可视性为“公共公共”的模型元素,称的模型元素,称为包的输出(为包的输出(ExportExport)。)。包的输出只对另一个与它有输包的输出只对另一个与它有输入依赖的包才是可视的、可存取的。入依赖的包才是可视的、可存取的。输入依赖的表示方法是在虚箭线上标有构造型输入依赖的表示方法是在虚箭线上标有构造型Import,箭头从输入方的包指向输出方的包。箭头从输入方的包指向输出方的包。注意,存取依赖联系的另一个构造型注意,存取依赖联系的
16、另一个构造型 Access,与与Import的含义略有差别。的含义略有差别。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home例:包的输入依赖示例,如图例:包的输入依赖示例,如图9.69.6所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home图9.6 包的输入依赖示例 泛化联系表达事物的一般与特殊的关系。如果两个包之泛化联系表达事物的一般与特殊的关系。如果两个包之间存在有泛化联系,意指其中的特殊性包必须遵循一般间存在有泛化联系,意指其中的特殊性包必须遵循一般性包的接口。性包的接口。实际上,对于一般性包可以加上一个性质说明实际上,对于一般性包可以加上一个性质说明“a
17、bstractabstract”,表明它只不过是定义了一个接口,该表明它只不过是定义了一个接口,该接口可以由多个特殊包实现。接口可以由多个特殊包实现。与类的继承相同,特殊包从一般包继承其所含的公共类,与类的继承相同,特殊包从一般包继承其所含的公共类,并且可以重载和添加自己的类。特殊包可以代替一般包,并且可以重载和添加自己的类。特殊包可以代替一般包,用在一般包使用的任何地方。用在一般包使用的任何地方。例如,在图例如,在图9.59.5中包中包“数据库接口数据库接口”与包与包“OracleOracle接口接口”、“SybaseSybase接口接口”之间存在泛化联系。其中,之间存在泛化联系。其中,“数
18、据数据库接口库接口”包是一般包,包是一般包,“OracleOracle接口接口”包和包和“SybaseSybase接接口口”包是特殊包。包是特殊包。9.2.2 9.2.2 泛化泛化Home包之间的合并联系也是一种依赖关系,它用一条带有构造型包之间的合并联系也是一种依赖关系,它用一条带有构造型Merge 的虚箭线表示,从接受合并包(的虚箭线表示,从接受合并包(Receiving PackageReceiving Package)指指向被合并包(向被合并包(Merged PackageMerged Package)。)。包合并联系允许被合并包的内容与接受合并包的内容合并,即(在包合并联系允许被合并
19、包的内容与接受合并包的内容合并,即(在概念上而非物理上)把被合并包中的全部元素合并加入到接受合并概念上而非物理上)把被合并包中的全部元素合并加入到接受合并包中,而被合并包与接受合并包中的那些具有相同名称的元素则合包中,而被合并包与接受合并包中的那些具有相同名称的元素则合并成一个唯一的元素,它拥有两者的特征。并成一个唯一的元素,它拥有两者的特征。当定义在不同的包中的模型元素具有相同的名称并且表达相同的概当定义在不同的包中的模型元素具有相同的名称并且表达相同的概念时,就需要使用包合并联系。念时,就需要使用包合并联系。例:在图例:在图9.79.7中,包中,包P P和和Q Q与包与包WW之间存在合并联
20、系,如图之间存在合并联系,如图9.79.7(a a)所所示。它的含义是(在概念上)包示。它的含义是(在概念上)包P P和和Q Q中的全部模型元素中的全部模型元素类类A A、B B、C C合并到包合并到包WW中,其中合并后包中,其中合并后包WW的类的类A A的内容是包的内容是包P P和和Q Q各自各自的类的类A A与包与包WW中原来的类中原来的类A A(可分别记作可分别记作P P:A A、Q Q:A A和和WW:A A)合合并的结果,类并的结果,类WW:A A的属性和操作来自的属性和操作来自P P:A A、Q Q:A A和和WW:A A,如图如图9.79.7(b b)所示。所示。9.2.3 9.
21、2.3 合并合并Home例:例:包包P P和和Q Q中的类中的类A A、B B、C C合并到包合并到包WW中中,如图,如图9.79.7所示。所示。9.2.3 9.2.3 合并合并HomeWASno:IntSname:StringDeptno:IntOp1()Op2()CBDPASno:IntSname:StringOp1()BADeptno:IntOp2()QCWDA(a)(b)图9.7 包合并示例包图由包和包之间的联系构成。包图的图形节点是包,包图由包和包之间的联系构成。包图的图形节点是包,节点之间用弧(依赖或泛化)连接。节点之间用弧(依赖或泛化)连接。包图是维护和控制系统总体结构的重要建模
22、工具。包图是维护和控制系统总体结构的重要建模工具。包在很多方面与对象类相似,但是在建立系统模型时特包在很多方面与对象类相似,但是在建立系统模型时特别要注意区别包与类。别要注意区别包与类。对象类是问题领域或解决方案中的事物的抽象,包是把对象类是问题领域或解决方案中的事物的抽象,包是把这些事物组织成模型的一种机制。这些事物组织成模型的一种机制。包可以没有标识,因为它没有实例,在运行系统中不可包可以没有标识,因为它没有实例,在运行系统中不可见;类必须有标识,它有实例,类的实例(对象)是运见;类必须有标识,它有实例,类的实例(对象)是运行系统的组成元素。行系统的组成元素。9.3 9.3 包图包图Hom
23、e例:一个常规的信息管理系统的包图,如图例:一个常规的信息管理系统的包图,如图9.89.8所示。所示。9.3 9.3 包图包图Home图9.8 一个信息管理系统的包图 9.4 9.4 包图的应用包图的应用Home9.4.1 9.4.1 包图的建立包图的建立9.4.2 9.4.2 系统建模系统建模9.4.3 9.4.3 开发跟踪开发跟踪使用包的目的是把模型元素组织成组,为其命名,以便作为整体处使用包的目的是把模型元素组织成组,为其命名,以便作为整体处理。理。对于一个大型的复杂的系统,常需要把系统设计模型中的大量的模对于一个大型的复杂的系统,常需要把系统设计模型中的大量的模型元素组织成包和子系统(
24、子系统是特殊的包),给出它们之间的型元素组织成包和子系统(子系统是特殊的包),给出它们之间的联系,以方便理解和处理整个模型。联系,以方便理解和处理整个模型。建立包图的具体的做法如下建立包图的具体的做法如下:(1 1)分分析析系系统统模模型型元元素素(通通常常是是对对象象类类),把把概概念念上上或或语语义义上上相相近近的模型元素纳入一个包。的模型元素纳入一个包。(2 2)对于每一个包,标出其模型元素的可视性:公共、保护或私用。)对于每一个包,标出其模型元素的可视性:公共、保护或私用。(3 3)确定包与包之间的依赖联系,特别是输入依赖。)确定包与包之间的依赖联系,特别是输入依赖。(4 4)确定包与
25、包之间的泛化联系,确定包元素的多态性与重载。)确定包与包之间的泛化联系,确定包元素的多态性与重载。(5 5)绘制包图。)绘制包图。(6 6)包图精化。)包图精化。Home9.4.1 9.4.1 包图的建立包图的建立一个包应当具有高内聚性,包中的对象类都应功能相关。一个包应当具有高内聚性,包中的对象类都应功能相关。以下几点可作为分析对象类的功能相关性的参考:以下几点可作为分析对象类的功能相关性的参考:如如果果一一个个类类的的行行为为和和/或或结结构构的的变变更更要要求求另另一一个个类类作作相相应应的的变变更更,则这两个类是功能相关的。则这两个类是功能相关的。如如果果删删除除了了一一个个类类后后,
26、另另一一个个类类便便变变成成是是多多余余的的,则则这这两两个个类类是是功功能能相相关关的的。这这说说明明该该剩剩余余的的类类只只为为那那个个被被删删除除的的类类所所使使用用,它它们们之间有依赖联系。之间有依赖联系。如如果果两两个个类类之之间间有有大大量量的的频频繁繁交交互互或或通通信信,则则这这两两个个类类是是功功能能相相关的。关的。如果两个类之间有一般如果两个类之间有一般/特殊关系,则这两个类是功能相关的。特殊关系,则这两个类是功能相关的。如果一个类激发创建另一个类的对象,则这两个类是功能相关的。如果一个类激发创建另一个类的对象,则这两个类是功能相关的。如果两个类不涉及同一个外部活动者,则这
27、两个类不应放在同一如果两个类不涉及同一个外部活动者,则这两个类不应放在同一个包内。个包内。Home9.4.1 9.4.1 包图的建立包图的建立利用包图可以对系统建模。利用包图可以对系统建模。系统的结构可以从不同的角度和观点建立系统的结构可以从不同的角度和观点建立。例如,图例如,图9.89.8是一个信息管理系统的包图,是一个信息管理系统的包图,组成一个信息管理系统的各个模型元素组成一个信息管理系统的各个模型元素(如对象类、接口、组件、节点等)分(如对象类、接口、组件、节点等)分别纳入在别纳入在7 7个包中:个包中:“用户接口用户接口”、“业业务务”、“通信通信”、“数据库数据库”、“文件文件处理
28、处理”、“报表处理报表处理”、“例行程序例行程序”。这些包之间存在着依赖联系。这些包之间存在着依赖联系。例如,例如,图图9.99.9是一个信息管理系统的三层是一个信息管理系统的三层结构的设计视图,它的系统结构与图结构的设计视图,它的系统结构与图9.89.8是不同的。在是不同的。在“用户服务用户服务”包和包和“业务业务服务服务”包之间、包之间、“业务服务业务服务”包和包和“数数据服务据服务”包之间存在着输入依赖,用构包之间存在着输入依赖,用构造型造型import标识。标识。Home9.4.2 9.4.2 系统建模系统建模图9.9 信息管理系统的三层结构 一个大型复杂的系统可以一个大型复杂的系统可
29、以分解为若干个相对独立的分解为若干个相对独立的子系统。系统和子系统都子系统。系统和子系统都可以用一个包表示,但分可以用一个包表示,但分别加上构造型别加上构造型system和和subsystem。子系统与系统的关系基本子系统与系统的关系基本上是组合联系,一个系统上是组合联系,一个系统由一个和多个子系统组成。由一个和多个子系统组成。例:例:一个零售企业管理系一个零售企业管理系统的包图,如图统的包图,如图9.109.10所示。所示。Home9.4.2 9.4.2 系统建模系统建模图9.10 系统与子系统示例 图图9.109.10所示的零售企业管理系统由所示的零售企业管理系统由3 3个子系统组成:顾客
30、个子系统组成:顾客服务子系统、商店管理子系统和仓库管理子系统。服务子系统、商店管理子系统和仓库管理子系统。这些系统与子系统分别用包图标表示,各自标有构造型这些系统与子系统分别用包图标表示,各自标有构造型system或或subsystem。系统包系统包“零售企业管理系统零售企业管理系统”与子系统包与子系统包“顾客服务子顾客服务子系统系统”、“商店管理子系统商店管理子系统”和和“仓库管理子系统仓库管理子系统”之之间存在组合联系。间存在组合联系。子系统与系统的关系也可以是泛化联系。利用泛化可以子系统与系统的关系也可以是泛化联系。利用泛化可以建立一个系统家族的模型,其中有些子系统或系统是一建立一个系统
31、家族的模型,其中有些子系统或系统是一般性的,另一些是特殊种类的子系统或系统。般性的,另一些是特殊种类的子系统或系统。Home9.4.2 9.4.2 系统建模系统建模在建立系统模型时,规定和说明一个模型中的模型元素在建立系统模型时,规定和说明一个模型中的模型元素之间的联系是十分重要的,例如对象类、接口、组件、之间的联系是十分重要的,例如对象类、接口、组件、节点等之间的联系,以及不同模型中的文档、图、包等节点等之间的联系,以及不同模型中的文档、图、包等模型元素之间的联系。模型元素之间的联系。在进行系统分析与设计时,需要注意以下几个概念的区在进行系统分析与设计时,需要注意以下几个概念的区别和联系:系
32、统、子系统、模型、视图。别和联系:系统、子系统、模型、视图。一个系统(及其子系统)需要用多个模型描述,如一个系统(及其子系统)需要用多个模型描述,如Use Use CaseCase模型、业务领域模型、静态结构模型、动态行为模模型、业务领域模型、静态结构模型、动态行为模型、物理模型等。它们组成不同的视图,如型、物理模型等。它们组成不同的视图,如Use CaseUse Case视视图、设计视图、过程视图、实现视图、配置视图等。图、设计视图、过程视图、实现视图、配置视图等。需要使用必要的模型元素和建模法则,如需要使用必要的模型元素和建模法则,如Use CaseUse Case、对对象类、组件、节点等
33、,绘制图形,编制说明书,建立系象类、组件、节点等,绘制图形,编制说明书,建立系统模型。统模型。Home9.4.2 9.4.2 系统建模系统建模在在UMLUML中可以采用跟踪联系(中可以采用跟踪联系(Trace RelationshipTrace Relationship)对不对不同模型中的模型元素建立概念的联系模型。同模型中的模型元素建立概念的联系模型。跟踪联系是一种依赖联系,它说明它所连接的两个模型跟踪联系是一种依赖联系,它说明它所连接的两个模型元素是同一个概念的模型元素,只是位于不同模型或不元素是同一个概念的模型元素,只是位于不同模型或不同的抽象层上。同的抽象层上。包之间的跟踪联系用一个带
34、构造型包之间的跟踪联系用一个带构造型 Trace 的虚箭线的虚箭线表示,位于虚箭线尾端的包(称为客户)依赖于位于虚表示,位于虚箭线尾端的包(称为客户)依赖于位于虚箭头端的包(称为供应者),说明当供应者包中的模型箭头端的包(称为供应者),说明当供应者包中的模型元素发生变更时,客户包中的模型元素也随之发生变更。元素发生变更时,客户包中的模型元素也随之发生变更。最常见的跟踪联系有两种:从需求到实现的跟踪联系和最常见的跟踪联系有两种:从需求到实现的跟踪联系和版本之间的跟踪联系。版本之间的跟踪联系。Home9.4.3 9.4.3 开发跟踪开发跟踪例:例:一个跟踪联系的示例,如图一个跟踪联系的示例,如图9.119.11所示。所示。其中,其中,“销售管理销售管理”包的包的5.25.2版本依赖于它的版本依赖于它的5.15.1版本,版本,这是版本之间的跟踪联系。这是版本之间的跟踪联系。其中,其中,“销售管理销售管理”包的包的5.15.1版本依赖于版本依赖于“销售管理销售管理”的的规格说明书,这是从需求到实现的跟踪联系。规格说明书,这是从需求到实现的跟踪联系。Home9.4.3 9.4.3 开发跟踪开发跟踪图9.11 跟踪联系示例