1、1软件工程软件工程1.1. 绪论绪论2.2. 软件生存周期与软件过程软件生存周期与软件过程3.3. 结构化分析与设计结构化分析与设计4.4. 面向对象与面向对象与UMLUML5.5. 需求工程与需求分析需求工程与需求分析6.6. 面向对象分析面向对象分析7.7. 面向对象设计面向对象设计8.8. 编码与测试编码与测试9.9. 软件维护软件维护10.10. 软件复用软件复用11.11. 软件工程管理软件工程管理主要内容主要内容2软件工程软件工程结构化分析与设计结构化分析与设计n 提出提出20世纪世纪70年代中期,年代中期,Stevens、Myers与与Constantine等人等人在结构化程序设
2、计的基础上,倡导在结构化程序设计的基础上,倡导结构化设计结构化设计(Structured Design, SD)技术。技术。70年代后期,年代后期,Yourdon等人倡导了与等人倡导了与SD配套的配套的结构化分析结构化分析(Structured Analysis, SA)技术,合称为技术,合称为结构化分析与设计结构化分析与设计方法方法。结构分析与设计方法是瀑布模型的首次实践。结构分析与设计方法是瀑布模型的首次实践。3软件工程软件工程结构化分析与设计结构化分析与设计n结构化分析任务结构化分析任务建立分析模型。建立分析模型。SA模型是描述软件需求的一组模型,模型是描述软件需求的一组模型,主要包括主
3、要包括功能模型功能模型、数据模型数据模型和和行为模型行为模型。编写需求规格说明书。编写需求规格说明书。SRS是分析阶段编写的以文字是分析阶段编写的以文字为主的文档,主要内容包括为主的文档,主要内容包括:引言引言、信息描述信息描述、功能描述功能描述、行为描述行为描述、质量保证质量保证、接口描述接口描述以及其他需求等。以及其他需求等。结构化分析的指导思想。结构化分析的指导思想。抽象抽象与与分解分解时结构化分析的时结构化分析的主要指导思想。主要指导思想。4软件工程软件工程结构化分析与设计结构化分析与设计n结构化设计任务结构化设计任务软件设计软件设计=总体设计总体设计+详细设计。详细设计。总体设计的任
4、务是把总体设计的任务是把分析模型中的分析模型中的数据流图数据流图(DFD图图)转换为转换为软件结构图软件结构图(SC图图),详细设计阶段的任务是对,详细设计阶段的任务是对SC中的各个中的各个模块模块进行进行算算法法和和数据结构数据结构设计。设计。软件设计指导思想:软件设计指导思想:分解分解和和细化细化是软件设计阶段的指是软件设计阶段的指导思想。导思想。5软件工程软件工程结构化分析与设计结构化分析与设计 数据数据词典词典 数数 据据 流流 图图 实实 体体关关 系系 图图 状态转换图状态转换图 加加 工工 控控 制制 规规 规规 格格 格格 说说 说说 明明明明 数数 据据对对 象象 描描 述述
5、功能模型功能模型行为模型行为模型信息模型信息模型 n结构化分析模型组成结构化分析模型组成6软件工程软件工程结构化分析与设计结构化分析与设计结构化分析模型结构化分析模型数据流图数据流图(Data Flow Diagram, DFD):主要作用是指主要作用是指明系统中的数据是如何流动和变换的,以及描述使数据明系统中的数据是如何流动和变换的,以及描述使数据流进行变换的功能。在流进行变换的功能。在DFD中出现的每个功能,可在中出现的每个功能,可在加工规格说明中描述,它们一起构成了软件的功能模型。加工规格说明中描述,它们一起构成了软件的功能模型。实体联系图实体联系图(Entity Relation Di
6、agram, E-R图图):用于用于描述数据对象间的关系,它代表了软件的信息模型,在描述数据对象间的关系,它代表了软件的信息模型,在实体联系图中出现的每个数据对象的属性,可用数据对实体联系图中出现的每个数据对象的属性,可用数据对象说明描述。象说明描述。状态转换图状态转换图(State Transformation Diagram, STD):用于指明系统在外部事件的作用下将如何行动,表明系用于指明系统在外部事件的作用下将如何行动,表明系统的各种状态以及状态间的变换,从而构成行为模型。统的各种状态以及状态间的变换,从而构成行为模型。7软件工程软件工程实例:教材购销系统实例:教材购销系统从用户调查
7、中了解到,某高校向学生销售教材的手续是:从用户调查中了解到,某高校向学生销售教材的手续是:先由院办公室的张秘书开一购书证明;先由院办公室的张秘书开一购书证明;学生凭证明找教材科的王会计开购书发票;学生凭证明找教材科的王会计开购书发票;向李出纳交付书款;向李出纳交付书款;然后到书库找赵保管领书。然后到书库找赵保管领书。将上述手工操作流程改为计算机处理流程,开发一个将上述手工操作流程改为计算机处理流程,开发一个“教材教材销售系统销售系统”。结构化分析与设计结构化分析与设计8软件工程软件工程结构化分析与设计结构化分析与设计步骤步骤1:通过对现实环境的调查研究,获取当前系统的:通过对现实环境的调查研究
8、,获取当前系统的具体模型。具体模型。学学生生张张秘秘书书王王会会计计李李出出纳纳赵赵保保管管学学生生购书申请购书证明购书发票领书单书学生购买教材的具体模型学生购买教材的具体模型9软件工程软件工程步骤步骤2:分析需求,建立系统分析模型,包括当前系统:分析需求,建立系统分析模型,包括当前系统模型和目标系统模型。模型和目标系统模型。去掉具体模型中的非本质因素,提炼出当前系统的逻辑去掉具体模型中的非本质因素,提炼出当前系统的逻辑模型。模型。学学生生审审查查有有效效性性开开发发票票开开领领书书单单发发书书学学生生购书单有效购书单发票领书单书学生购买教材的逻辑模型学生购买教材的逻辑模型结构化分析与设计结构
9、化分析与设计10软件工程软件工程分析当前系统与目标系统的差别,建立目标系统的逻辑分析当前系统与目标系统的差别,建立目标系统的逻辑模型。模型。学学生生审查审查并开并开发票发票开开领领书书单单发发书书学学生生购书单发票领书单书计算机售书系统的逻辑模型计算机售书系统的逻辑模型目标系统是一个使用计算机的系统。一般来说,目标系统是一个使用计算机的系统。一般来说,它的功能比当前现行业务系统更强,不必也不应它的功能比当前现行业务系统更强,不必也不应该完全模拟现行系统!该完全模拟现行系统!结构化分析与设计结构化分析与设计11软件工程软件工程步骤步骤3:整理综合需求,编写软件需求说明。:整理综合需求,编写软件需
10、求说明。步骤步骤4:验证需求,完善和补充目标系统的描述。:验证需求,完善和补充目标系统的描述。通过目标系统的人通过目标系统的人- -机界面,与用户一起确认目标系统功能,机界面,与用户一起确认目标系统功能,并且确定哪些功能交给计算机去做,哪些功能由人工完成。并且确定哪些功能交给计算机去做,哪些功能由人工完成。复审需求说明,补充迄今尚未考虑过的细节,例如系统的响复审需求说明,补充迄今尚未考虑过的细节,例如系统的响应时间、增加出错处理等。应时间、增加出错处理等。学学生生审查审查并开并开发票发票开开领领书书单单学学生生购书单发票领书单改进的计算机售书系统的逻辑模型改进的计算机售书系统的逻辑模型无效购书
11、单结构化分析与设计结构化分析与设计12软件工程软件工程n数据流图数据流图(DFD)数据流图:数据流图:数据流图是用来刻画数据流和加工的信息数据流图是用来刻画数据流和加工的信息系统建模技术。系统建模技术。加工加工/过程过程数据流数据流实体实体(数据源点或数据源点或数据终点数据终点)数据存储数据存储(数据文件数据文件或数据库或数据库)DFD图的基本符号图的基本符号结构化分析与设计结构化分析与设计13软件工程软件工程DFD图的扩展符号图的扩展符号结构化分析与设计结构化分析与设计14软件工程软件工程数据流数据流(Data Flow):表示数据元素的运动方向。:表示数据元素的运动方向。数据流是一组成分固
12、定的数据组成的。每一个数据流数据流是一组成分固定的数据组成的。每一个数据流必须有一个合适的名字。为数据流命名时,可以从其组必须有一个合适的名字。为数据流命名时,可以从其组成成分或含义角度来考虑。成成分或含义角度来考虑。数据流可以从过程流向过程,从过程流向数据存储或数据流可以从过程流向过程,从过程流向数据存储或从数据存储流向过程,也可以数据源点流向过程或从过从数据存储流向过程,也可以数据源点流向过程或从过程流向数据终点,两个过程之间可以有几股数据流。程流向数据终点,两个过程之间可以有几股数据流。检查检查取款取款单合单合理性理性取款单取款单合理取合理取款单款单不合理不合理取款单取款单账目 生生产产
13、统统计计生产日报生产日报生产月报生产月报生产统计生产统计报表报表+结构化分析与设计结构化分析与设计15软件工程软件工程过程过程/加工加工(Process):表示系统要执行的一个功能。:表示系统要执行的一个功能。过程是对数据进行的操作,如果把数据流比喻为工厂过程是对数据进行的操作,如果把数据流比喻为工厂的传送带,则过程就好像工厂里的加工工序。的传送带,则过程就好像工厂里的加工工序。每个过程都要有一个确定的名称来命名,名称的选取每个过程都要有一个确定的名称来命名,名称的选取要能够反映过程的主要功能。要能够反映过程的主要功能。每个过程一般有一个编号,编号说明该处理在层次分每个过程一般有一个编号,编号
14、说明该处理在层次分解中的位置。解中的位置。结构化分析与设计结构化分析与设计16软件工程软件工程过程通常以下列方式处理数据:过程通常以下列方式处理数据:只改变数据流的状态,但不改变数据流的结构。只改变数据流的状态,但不改变数据流的结构。将一种数据流转换为另一种数据流,即数据流的结构将一种数据流转换为另一种数据流,即数据流的结构发生了变化。发生了变化。检查检查取款取款单合单合理性理性取款单取款单合理取合理取款单款单不合理不合理取款单取款单账目 生生产产统统计计生产日报生产日报生产月报生产月报生产统计生产统计报表报表+结构化分析与设计结构化分析与设计17软件工程软件工程实体实体(Entity):也称
15、为外部项,它既可以作为数据流的也称为外部项,它既可以作为数据流的源,也可以作为数据流终点。源,也可以作为数据流终点。学学生生审查审查并开并开发票发票开开领领书书单单学学生生购书单发票领书单无效购书单数据流数据流源点源点数据流数据流终点终点结构化分析与设计结构化分析与设计18软件工程软件工程数据存储数据存储(Data Store):表示数据的存储位置。数据存表示数据的存储位置。数据存储和过程之间存在三种数据流储和过程之间存在三种数据流:如果过程要读数据,则数据是从数据存储流出;如果过程要读数据,则数据是从数据存储流出;如果过程要写或修改数据,则数据流是流向数据存储;如果过程要写或修改数据,则数据
16、流是流向数据存储;如果过程既要读数据,又要写数据,则数据流是双向的。如果过程既要读数据,又要写数据,则数据流是双向的。结构化分析与设计结构化分析与设计19软件工程软件工程数据流之间的关系:数据流之间的关系:与关系与关系(用用“*”表示表示)、或关系、或关系(用用”+”表示表示)、互斥关系、互斥关系(用用“ ”表示表示)。生生产产统统计计生产日报生产月报生产统计报表+或关系或关系检查检查取款取款单合单合理性理性取款单取款单合理取合理取款单款单不合理不合理取款单取款单账目 *互斥关系互斥关系与关系与关系结构化分析与设计结构化分析与设计20软件工程软件工程结构化分析与设计结构化分析与设计分层次分层次
17、DFD对于一个大型的系统,如果用一张数据流图画出所有对于一个大型的系统,如果用一张数据流图画出所有的数据流和过程,则图纸将极其庞大复杂,因而难于理的数据流和过程,则图纸将极其庞大复杂,因而难于理解。解。为了达到简单性要求,通常采用层次或自顶向下分解为了达到简单性要求,通常采用层次或自顶向下分解的方法,将系统的方法,将系统DFD中的每一个过程视为一个子系统,中的每一个过程视为一个子系统,然后继续向下分解,直到每一个过程容易理解为止,这然后继续向下分解,直到每一个过程容易理解为止,这就是结构化分析方法就是结构化分析方法“自顶向下、逐步分解自顶向下、逐步分解”的基本原的基本原则。则。21软件工程软件
18、工程分层分层DFD由:顶层、底层和中间层组成。由:顶层、底层和中间层组成。(1)顶层顶层DFD说明系统边界,即系统的输入和输出数据流,说明系统边界,即系统的输入和输出数据流,顶层顶层DFD只有一张。只有一张。(2)底层底层DFD由一些不可再分解的过程组成,这些过程称由一些不可再分解的过程组成,这些过程称为基本加工。为基本加工。(3)在顶层和底层之间的是中间层,中间层的在顶层和底层之间的是中间层,中间层的DFD描述了描述了某个过程的分解,而它的组成部分又要进一步分解。某个过程的分解,而它的组成部分又要进一步分解。结构化分析与设计结构化分析与设计22软件工程软件工程教材购销教材购销系统系统学学生生
19、书库书库保管员保管员购书单领书单缺书单进书通知顶层顶层DFD1销销售售学学生生书库书库保管员保管员购书单领书单缺书单进书通知2采采购购F1教材存量表F2缺书登记进书通知第第2层层DFD(0)p教材购销系统的层次教材购销系统的层次DFD结构化分析与设计结构化分析与设计23软件工程软件工程1.1审查购书审查购书单有效性单有效性学学生生购书单无效购书单领书单发票F1教材存量表F2缺书登记进书通知第第3层层DFD-销售子系统销售子系统(1)1.2开发开发票票1.3打印发打印发票票1.4登记售书登记售书和打印和打印领书单领书单1.5登记缺书登记缺书1.6产生补产生补售书单售书单采采购购有效购书单F3学生
20、用书表F4售书登记表发票学学生生暂缺书单补售书单结构化分析与设计结构化分析与设计24软件工程软件工程销销售售F1教材存量表F2缺书登记进书通知2.3修改教材库存修改教材库存和待购量和待购量2.2按出版社按出版社统计缺书统计缺书2.1按书号按书号汇总缺汇总缺书书F5待购教材表F6教材一览表书库书库保管员保管员缺书单进书通知第第3层层DFD-采购子系统采购子系统(2)结构化分析与设计结构化分析与设计25软件工程软件工程绘制分层绘制分层DFD时应该注意以下几个方面问题:时应该注意以下几个方面问题:编号编号父图与子图的平衡父图与子图的平衡局部数据存储和局部外部数据存储局部数据存储和局部外部数据存储分解
21、程度分解程度结构化分析与设计结构化分析与设计26软件工程软件工程编号:编号:为了便于管理,需要按照以下规则为数据流图为了便于管理,需要按照以下规则为数据流图和其中的加工编号:和其中的加工编号:顶层顶层DFD无图号,顶层加工不编号;无图号,顶层加工不编号;第二层第二层DFD的图号为的图号为0,第二层,第二层DFD中的加工编号为中的加工编号为1,2,n;第三层每个第三层每个DFD的编号就是父图中加工的编号,第三层每个的编号就是父图中加工的编号,第三层每个DFD中加工的编号由中加工的编号由DFD图号、小数点和局部号构成,以下图号、小数点和局部号构成,以下各层以此类推。各层以此类推。120ABABV图
22、编号图编号1.11.21.3AVMN1处理编号处理编号结构化分析与设计结构化分析与设计27软件工程软件工程父图与子图的平衡:父图与子图的平衡:父图中某个加工的输入输出数据父图中某个加工的输入输出数据流应该与相应子图的输入输出数据流相同,层次流应该与相应子图的输入输出数据流相同,层次DFD的的这种特点称为这种特点称为“平衡平衡”。平衡是指子图的所有输入数据。平衡是指子图的所有输入数据流必须是父图中相应过程的输入数据流,子图的所有输流必须是父图中相应过程的输入数据流,子图的所有输出数据流必须是父图中相应过程的输出数据流。出数据流必须是父图中相应过程的输出数据流。结构化分析与设计结构化分析与设计28
23、软件工程软件工程局部数据存储和局部外部数据存储局部数据存储和局部外部数据存储随着随着DFD图的分解,在下层图的分解,在下层DFD中允许出现父图中没有中允许出现父图中没有的数据存储和外部实体。的数据存储和外部实体。除了底层除了底层DFD需要画出全部数据存储外,各中间层的需要画出全部数据存储外,各中间层的DFD仅显示处于过程之间的接口数据存储,其余数据存仅显示处于过程之间的接口数据存储,其余数据存储不必画出来,以保持图面的简洁。储不必画出来,以保持图面的简洁。结构化分析与设计结构化分析与设计29软件工程软件工程F5和和F6是采购子系是采购子系统局部数据存储,统局部数据存储,与父图中的其它加与父图中
24、的其它加工无关,所以在父工无关,所以在父图中不必画出。图中不必画出。F1和和F2是采购子系统是采购子系统与销售子系统之间的与销售子系统之间的接口,所以在父图中接口,所以在父图中必须画出。必须画出。结构化分析与设计结构化分析与设计30软件工程软件工程分解程度分解程度分解应该自然,概念上合理、清晰;分解应该自然,概念上合理、清晰;只要不影响只要不影响DFD的易理解性,可以适当地多分解,这样的易理解性,可以适当地多分解,这样可以减少可以减少DFD的层数;的层数;一般来说,在上层分解的快一些,而在下层则分解得慢一般来说,在上层分解的快一些,而在下层则分解得慢些,这是因为约接近下层功能越具体,分解速度快
25、会增些,这是因为约接近下层功能越具体,分解速度快会增加用户理解的困难;加用户理解的困难;每一加工分解的子加工一般不超过每一加工分解的子加工一般不超过7个。个。结构化分析与设计结构化分析与设计31软件工程软件工程n加工规格说明加工规格说明(Process SPECification, PSPEC)加工规格说明:加工规格说明:是对是对DFD中每个加工所作出的说明。加工中每个加工所作出的说明。加工规格说明是由规格说明是由输入数据输入数据、过程逻辑过程逻辑和和输出数据输出数据等部分组成,等部分组成,过程逻辑阐明把输入数据转换为输出数据的策略,是加工规过程逻辑阐明把输入数据转换为输出数据的策略,是加工规
26、格说明的主体。格说明的主体。加工规格说明的主要描述方法:加工规格说明的主要描述方法:结构化语言结构化语言:自然语言加上结构化的形式,就形成了结构化自然语言加上结构化的形式,就形成了结构化语言。语言。判定表:判定表:判定表采用表格化的形式,适合于表达含有复杂判判定表采用表格化的形式,适合于表达含有复杂判断的加工逻辑。断的加工逻辑。判定树:判定树:判定树是判定表的图形表示,其适用场合与判定表判定树是判定表的图形表示,其适用场合与判定表相同。相同。结构化分析与设计结构化分析与设计32软件工程软件工程结构化分析与设计结构化分析与设计n实体关系图实体关系图(E-R图图)历史历史1976,P.P.S.Ch
27、en 提出提出E-R模型,用模型,用E-R图来描述概图来描述概念模型。念模型。1977年,年,Smith扩展了特殊化、概括和聚集的概念。扩展了特殊化、概括和聚集的概念。观点:观点:世界是由一组称作实体的基本对象和这些对象世界是由一组称作实体的基本对象和这些对象之间的联系构成的。之间的联系构成的。33软件工程软件工程E-R模型中的基本概念模型中的基本概念实体:实体:客观存在并可相互区分的事务叫做实体。例如,客观存在并可相互区分的事务叫做实体。例如,学生张三、学生李四、软件工程课程、操作系统课程等。学生张三、学生李四、软件工程课程、操作系统课程等。属性:属性:实体所具有的某一特性。一个实体可以由若
28、干实体所具有的某一特性。一个实体可以由若干个属性来刻画。例如,学生可以由学号、姓名、年龄、个属性来刻画。例如,学生可以由学号、姓名、年龄、性别、性别、系别等属性来刻画。系别等属性来刻画。域:域:属性的取值范围。例如,性别的域为属性的取值范围。例如,性别的域为男男,女女。实体型:实体型:实体名与其属性名集合共同构成实体型。实实体名与其属性名集合共同构成实体型。实体是实体型的一个特例。体是实体型的一个特例。 例如,学生例如,学生(学号学号,姓名姓名,年龄年龄,性性别别,系别系别,年级年级)是一个实体型,而学生是一个实体型,而学生(980701,张三张三,22,男男,计算机科学与技术学院计算机科学与
29、技术学院,3)是一个实体。是一个实体。结构化分析与设计结构化分析与设计34软件工程软件工程结构化分析与设计结构化分析与设计实体集:实体集:同型实体的集合称为实体集。同型实体的集合称为实体集。码:码:能唯一标识实体的属性或属性组称为能唯一标识实体的属性或属性组称为超码超码。超码。超码任意超集也是超码。其任意真子集都不能成为超码的最任意超集也是超码。其任意真子集都不能成为超码的最小超码称为小超码称为候选码候选码。从所有候选码中选择一个用来区别。从所有候选码中选择一个用来区别同一实体集中的不同实体,称为同一实体集中的不同实体,称为主码主码。联系:联系:实体之间的相互关联。例如,学生与课程之间实体之间
30、的相互关联。例如,学生与课程之间的选课联系。联系可以具有属性。例如,每个选课联系的选课联系。联系可以具有属性。例如,每个选课联系都有一个成绩作为其属性。同类联系的集合称为联系集。都有一个成绩作为其属性。同类联系的集合称为联系集。元或度:元或度:参与联系的实体集的个数称为联系的元。例参与联系的实体集的个数称为联系的元。例如,学生选课是二元联系,供应商向工程供应零件则是如,学生选课是二元联系,供应商向工程供应零件则是三元联系。三元联系。35软件工程软件工程结构化分析与设计结构化分析与设计参与:参与:实体之间的关联称为参与,即实体参与联系。实体之间的关联称为参与,即实体参与联系。例如,张三选修软件工
31、程,表示实体例如,张三选修软件工程,表示实体“张三张三”与与“软件软件工程工程”参与联系参与联系“选修选修”。全参与:全参与:如果实体集如果实体集E中的每个实体都参与到联系集中的每个实体都参与到联系集R中的至中的至少一个联系,则称少一个联系,则称E全部参与全部参与R。部分参与:部分参与:如果实体集如果实体集E中只有部分实体参与到联系集中只有部分实体参与到联系集R的联的联系中,则称系中,则称E部分参与部分参与R。例如,例如,“职工职工”与与“部门部门”之间的之间的“管理管理”联系,联系,“职工职工”实体集部分参与,而实体集部分参与,而“部门部门”实体集完全参与。实体集完全参与。36软件工程软件工
32、程结构化分析与设计结构化分析与设计学号学号姓名姓名年龄年龄学生学生课程课程选课选课mn性别性别系别系别年级年级课程号课程号学分学分课程名课程名37软件工程软件工程结构化分析与设计结构化分析与设计角色:角色:实体在联系中的作用称为实体的角色。当同一实体在联系中的作用称为实体的角色。当同一实体集不止一次参与一个联系集时,为区分各实体的参实体集不止一次参与一个联系集时,为区分各实体的参与联系方式,需要显式指明其角色。例如,学生与学生与联系方式,需要显式指明其角色。例如,学生与学生之间的班长关系,职工与职工之间的经理关系等。之间的班长关系,职工与职工之间的经理关系等。职工职工经理经理工作工作部门部门职
33、工号职工号管理管理姓名姓名职务职务部门号部门号部门名部门名1m管理管理1m双线表示双线表示完全参与完全参与表示实体表示实体的角色的角色38软件工程软件工程结构化分析与设计结构化分析与设计简单属性:简单属性:不可再分的属性。例如,学号、年龄等。不可再分的属性。例如,学号、年龄等。复合属性:复合属性:可以划分为更小的属性。例如,电话号码可以划分为更小的属性。例如,电话号码=区号区号+本地号码。本地号码。单值属性:单值属性:每个特定实体在该属性上的取值唯一。例每个特定实体在该属性上的取值唯一。例如,学生的学号、年龄、性别、系别等。如,学生的学号、年龄、性别、系别等。多值属性:多值属性:某个特定实体在
34、该属性上有多于一个取值。某个特定实体在该属性上有多于一个取值。例如,学生的所选课程。例如,学生的所选课程。NULL属性:属性:表示表示“无意义无意义” 或者或者“未知值未知值” 。派生属性:派生属性:派生属性可以从其他相关属性或实体派生派生属性可以从其他相关属性或实体派生出属性值。出属性值。39软件工程软件工程结构化分析与设计结构化分析与设计联系的种类:联系的种类:实体之间的联系的数量,即一个实体通实体之间的联系的数量,即一个实体通过一个联系能与另一个实体集相关联的实体的数目。联过一个联系能与另一个实体集相关联的实体的数目。联系可以分为三类:一对一系可以分为三类:一对一(1:1)、一对多、一对
35、多(1:n)和多对多和多对多(m:n)。二元联系集:二元联系集:设有两个实体集设有两个实体集E1和和E2。一对一:一对一:E1中的一实体与中的一实体与E2中的一个实体相联系,并且中的一个实体相联系,并且E2中的一个实体与中的一个实体与E1中至多一个实体相联系。中至多一个实体相联系。一对多:一对多:E1中的一实体与中的一实体与E2中中n(n 0)个实体相联系,并个实体相联系,并且且E2中的一个实体与中的一个实体与E1中至多一个实体相联系。中至多一个实体相联系。多对多:多对多: E1中的一实体与中的一实体与E2中中n(n 0)个实体相联系,并个实体相联系,并且且E2中的一个实体与中的一个实体与E1
36、中中m(m 0)个实体相联系。个实体相联系。40软件工程软件工程结构化分析与设计结构化分析与设计教师教师班级班级班主任班主任11教师教师学生学生班主任班主任1n学生学生课程课程选课选课mn41软件工程软件工程结构化分析与设计结构化分析与设计多元联系集:多元联系集:设有设有n个实体集个实体集E1,E2,En,若对,若对E1,Ei-1, Ei+1,En,分别给定实体,分别给定实体e1,ei-1,ei+1,en时,至多有一个实体时,至多有一个实体ei与之联系,则称有一个从与之联系,则称有一个从Ei到到E1,Ei-1,Ei+1,En的一对多联系。的一对多联系。学生学生课程课程选课选课mn成绩成绩142
37、软件工程软件工程结构化分析与设计结构化分析与设计存在依赖:存在依赖:如果实体如果实体X的存在依赖于实体的存在依赖于实体Y的存在,则的存在,则称称X存在依赖于存在依赖于Y,其中,其中,Y称为支配实体,称为支配实体,X称为从属实称为从属实体,如果体,如果Y被删除,被删除,X也要配删除。例如,考虑订单和订也要配删除。例如,考虑订单和订单项实体,对于一个订单实体,有若干个订单项实体与单项实体,对于一个订单实体,有若干个订单项实体与之关联,订单项实体依赖于订单实体。之关联,订单项实体依赖于订单实体。弱实体集:弱实体集:如果一个实体集的所有属性都不足以形成如果一个实体集的所有属性都不足以形成主码,则称这样
38、的实体集为弱实体集。弱实体集与其拥主码,则称这样的实体集为弱实体集。弱实体集与其拥有者之间的联系称为有者之间的联系称为标识性联系标识性联系。弱实体集与存在依赖:弱实体集与存在依赖:弱实体集必然存在依赖于强实弱实体集必然存在依赖于强实体集。存在依赖并不会总导致一个弱实体集,从属实体体集。存在依赖并不会总导致一个弱实体集,从属实体集可以有自己的主码。例如,实体集信用卡集可以有自己的主码。例如,实体集信用卡(信用卡号信用卡号,客客户账号户账号,金额金额),它存在依赖于客户账号实体集,但信用卡,它存在依赖于客户账号实体集,但信用卡有自己的主码信用卡号。有自己的主码信用卡号。43软件工程软件工程结构化分
39、析与设计结构化分析与设计部分码:部分码:弱实体集中用于区别依赖于某个特定强实体集弱实体集中用于区别依赖于某个特定强实体集的属性集合称为部分码。例如,订单项中的订单项号。的属性集合称为部分码。例如,订单项中的订单项号。弱实体集的主码由该弱实体集所存在依赖的强实体集的弱实体集的主码由该弱实体集所存在依赖的强实体集的主码和该弱实体集的部分码组成。例如,订单项的主码主码和该弱实体集的部分码组成。例如,订单项的主码=订单号订单号+订单项号。订单项号。包含包含订单项订单项订单订单订单号订单号金额金额订单项号订单项号价格价格产品产品数量数量产品编号产品编号产品名称产品名称价格价格产品产品编号编号隶属隶属金额
40、金额44软件工程软件工程结构化分析与设计结构化分析与设计E-R模型中的扩展概念模型中的扩展概念特殊化:特殊化:实体集中的某些子集具有区别于该实体集内实体集中的某些子集具有区别于该实体集内其它实体的特性,可以根据这些差异特性对实体集进行其它实体的特性,可以根据这些差异特性对实体集进行分组,这一分组的过程称作特殊化。分组,这一分组的过程称作特殊化。细化:细化:父类父类子类子类特例特例更小的实体集更小的实体集更多的属性。更多的属性。例如,银行帐号可以有存款账号、贷款账号,学生可以例如,银行帐号可以有存款账号、贷款账号,学生可以有本科生、研究生等。有本科生、研究生等。特殊化联系特殊化联系(ISA联系联
41、系):表示高层实体和底层实体之间表示高层实体和底层实体之间的的“父类父类-子类子类”联系。联系。45软件工程软件工程结构化分析与设计结构化分析与设计概括:概括:各个实体集根据共有性质,合成一个较高层的各个实体集根据共有性质,合成一个较高层的实体的过程称为概括。概括是一个高层实体集与若干个实体的过程称为概括。概括是一个高层实体集与若干个底层实体集之间的包含关系。底层实体集之间的包含关系。泛化:泛化:子类子类父类。父类。概括与特殊化:概括与特殊化:概括与特殊化是个互逆的过程,在概括与特殊化是个互逆的过程,在ER图中的表示方法相同;特殊化强调同一实体集内不同实图中的表示方法相同;特殊化强调同一实体集
42、内不同实体之间的差异,概括强调不同实体集之间的相似性;体之间的差异,概括强调不同实体集之间的相似性;属性继承:属性继承:高层实体集的属性被底层实体集自动继承。高层实体集的属性被底层实体集自动继承。底层实体集特有的性质仅适用于某个特定的底层实体集。底层实体集特有的性质仅适用于某个特定的底层实体集。46软件工程软件工程结构化分析与设计结构化分析与设计学生学生学号学号姓名姓名ISA本科生本科生研究生研究生ISA军训军训硕士硕士博士博士发表发表论文论文ISA职工职工工号工号姓名姓名47软件工程软件工程结构化分析与设计结构化分析与设计成员资格:成员资格:确定哪些高层实体如何成为给定底层实体确定哪些高层实
43、体如何成为给定底层实体集的成员。集的成员。条件定义:条件定义:一个高层实体成员资格的确定该实体是否一个高层实体成员资格的确定该实体是否满足一个显式的条件或谓词满足一个显式的条件或谓词。例如,。例如,“学生学生”实体集具实体集具有属性有属性“学生类型学生类型”,则所有的学生实体根据,则所有的学生实体根据“学生类学生类型型”进行成员资格认定,如一个学生的学生类型进行成员资格认定,如一个学生的学生类型=“=“本本科生科生”,则他就可以归入底层,则他就可以归入底层“本科生本科生”实体集中。实体集中。由用户定义:由用户定义:由用户来指定一个实体归入哪个底层实由用户来指定一个实体归入哪个底层实体集。例如,
44、一个学生被老师分配到某个项目组。体集。例如,一个学生被老师分配到某个项目组。48软件工程软件工程结构化分析与设计结构化分析与设计成员身份:成员身份:确定一个高层实体是否可以属于多个底层确定一个高层实体是否可以属于多个底层不同实体集。不同实体集。不相交的:不相交的:一个实体至多属于一个底层实体集一个实体至多属于一个底层实体集。例如,一。例如,一个学生只能参加一个项目组。个学生只能参加一个项目组。相重叠的:相重叠的:同一个实体可以同时属于同一概括的多个底层同一个实体可以同时属于同一概括的多个底层实体集。例如,一个老师可以参加多个项目组。实体集。例如,一个老师可以参加多个项目组。全部性约束:全部性约
45、束:确定高层实体集中的一个实体是否必须确定高层实体集中的一个实体是否必须属于某个概括的至少一个底层实体集。属于某个概括的至少一个底层实体集。全部的:全部的:每个高层实体必须属于一个底层实体集。例如,每个高层实体必须属于一个底层实体集。例如,学生必须属于学生必须属于“本科生本科生”或或“研究生研究生”的一种。的一种。部分的:部分的:允许一些高层实体不属于任何底层实体集。例如,允许一些高层实体不属于任何底层实体集。例如,学生可以不属于任何项目组。学生可以不属于任何项目组。49软件工程软件工程结构化分析与设计结构化分析与设计聚集:聚集:聚集是一种抽象,通过它联系被作为高层实聚集是一种抽象,通过它联系
46、被作为高层实体集。体集。例如,职工参加项目,并在此过程中可能使用例如,职工参加项目,并在此过程中可能使用机器,那么如何表达联系之间的联系。机器,那么如何表达联系之间的联系。职工职工职工号职工号参加并参加并使用使用姓名姓名职务职务项目项目类型类型名称名称机器机器机器名机器名型号型号工时工时50软件工程软件工程结构化分析与设计结构化分析与设计职工职工职工号职工号参加并参加并使用使用姓名姓名职务职务项目项目类型类型名称名称机器机器机器名机器名型号型号工时工时使用使用51软件工程软件工程结构化分析与设计结构化分析与设计实体集实体集弱实弱实体集体集联系集联系集多值多值属性属性标识标识联系集联系集主码主码
47、属性属性导出导出属性属性弱实体集弱实体集导出属性导出属性实体集实体集联系集联系集实体集实体集联系集联系集角色名角色名完全参与完全参与ER图的符号表示图的符号表示(1)52软件工程软件工程结构化分析与设计结构化分析与设计联系集联系集多对多联系多对多联系多对一联系多对一联系联系集联系集联系集联系集一对一联系一对一联系实体集实体集联系集联系集1:h基数限制基数限制ISA全部概括全部概括ISA特殊化特殊化/概括概括ER图的符号表示图的符号表示(2)53软件工程软件工程软件需求分析软件需求分析nIDEF1X图图IDEF是在实体联系图的原则基础上,增加一些规是在实体联系图的原则基础上,增加一些规则,使语义
48、更丰富的一种方法。则,使语义更丰富的一种方法。IDEF1X中的概念中的概念实体:独立标识实体、依赖标识实体关系:标识联接关系、非标识联接关系、分类关系、非确定关系属性/关键字:主关键字、次关键字、外来关键字54软件工程软件工程软件需求分析软件需求分析实体:实体:表示具有相同属性或特征的一个现实或抽象事表示具有相同属性或特征的一个现实或抽象事物的集合。实体的实例是实体抽象概念的一个具体的值。物的集合。实体的实例是实体抽象概念的一个具体的值。实体分为实体分为独立标识实体:独立标识实体:不依赖于其它实体存在的实体。不依赖于其它实体存在的实体。依赖标识实体:依赖标识实体:必须依赖于其它实体才能存在的实
49、体,也称必须依赖于其它实体才能存在的实体,也称为从属实体。为从属实体。实体名/实体号实体名/实体号独立实体独立实体表示符号表示符号依赖实体依赖实体表示符号表示符号学生/1学生成绩/255软件工程软件工程软件需求分析软件需求分析属性:属性:属性表示实体的特征或性质。属性表示实体的特征或性质。 候选关键字:候选关键字:候选关键字是由一个实体中的一个或多候选关键字是由一个实体中的一个或多个属性组成,它唯一确定实体的每一个实例。个属性组成,它唯一确定实体的每一个实例。主主/次关键字:次关键字:每个实体至少有一个候选关键字。如果每个实体至少有一个候选关键字。如果一个实体中有多个候选关键字,则制定其中的一
50、个为主一个实体中有多个候选关键字,则制定其中的一个为主关键字,其它关键字为次关键字。关键字,其它关键字为次关键字。实体名/实体号属性名属性名属性名(AK1)属性名(AK2)属性名(AK2)主关键字主关键字属性属性次关键字次关键字雇员/1雇员号身份证号码(AK1)雇员名(AK2)生日(AK2)56软件工程软件工程软件需求分析软件需求分析发票/2发票编号学号姓名书费合计发票行/3发票编号发票行号书号单价数量总价独立标识实体独立标识实体依赖标识实体依赖标识实体(不能脱离发票不能脱离发票而独立存在而独立存在)57软件工程软件工程软件需求分析软件需求分析确定联接关系:确定联接关系:是实体间的一种关系,在