第4章总体设计计算机与软件学院毕硕本LOADINGLOADINGDGIL第4章总体设计案例分析一设计原理结构程序设计启发规则面向数据流的设计方法教学单位教师介绍南京信息工程大学NANJINGUNIVERSITYOFINFORMATIONSCIENCE&TECHNOLOGYInstructor:BiShuoben(毕硕本)Email:bishuoben@163.comTel:025-58699833(H)SoftwareEngineering4.44.14.24.34.5第4章总体设计计算机与软件学院毕硕本4.1案例分析一—招聘考试成绩管理系统数据库结构设计系统结构设计设计测试方案第4章总体设计计算机与软件学院毕硕本4.1案例分析一—招聘考试成绩管理系统5.1.1数据库结构设计管理员数据表帐号密码考场号地点最多人数准考证号、姓名、性别、地区、出生年月、地址、专业、政治、英语、专业课、总分、名次、是否录用、录用单位。准考证号、姓名、性别、专业、录用单位、总分考场数据表考生数据表录用考生第4章总体设计计算机与软件学院毕硕本4.1案例分析一—招聘考试成绩管理系统5.1.2系统结构设计一二三确定出各个模块及其关系。数据流图需进一步细化。用层次图或结构图来表示。第4章总体设计计算机与软件学院毕硕本招聘考试成绩管理系统HIPO图第4章总体设计计算机与软件学院毕硕本4.1案例分析一—招聘考试成绩管理系统5.1.3设计测试方案录用模块主要测试考生准考证号的生成是否正确。进行各种测试条件的测试。分考生成绩输入、成绩查询、打印成绩单三个模块。主要测试考生成绩输入界面设计是否合理、输入后成绩总分的计算及排序是否正确。Text考前处理模块成绩信息模块测试输入界面是否正确、合理;录用结果的输出与输入是否一致。第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统从完整的工资管理系统数据流图出发事务数据和人事数据沿两条输入通路进入系统输出数据沿着一条输出通路离开系统,数据流图中没有明显的事务中心。第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统1、分析确定输入流和输出流的边界,以孤立出变换中心。第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统2、完成“第一级分解”。就是确定系统的总体控制结构。通常变换分析得到的系统高层结构是一个“三叉”的控制结构。工资管理系统的第一层分解第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统3、完成“第二级分解”。就是把数据流图中的每个处理映射成软件结构中的一个适当模块。从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中“输入信息处理控制模块”控制下的一个低层模块。然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接接受“输出信息处理控制模块”控制的一个低层模块。最后把变换中心内的每个处理映射成受“变换中心控制模块”控制的一个低层模块。变换分析的映射原则第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统第二级分解第4章总体设计计算机与软件学院毕硕本4.2案例分析二—高校工资管理系统4、对工资管理系统的初步设计结果进行优化。优化后的工资管理系统软件结构分解第4章总体设计计算机与软件学院毕硕本4.3设计原理模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5.3.1模块化第4章总体设计计算机与软件学院毕硕本4.3设计原理模块化和软件成本第4章总体设计计算机与软件学院毕硕本4.3设计原理抽象就是抽出事物的本质特性而暂时不考虑它们的细节。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。5.3.2抽象第4章总体设计计算机与软件学院毕硕本4.3设计原理达到了抽象的最低层可行性研究需求分析总体设计到详细设计写出源程序软件工程过程的每一步软件解法是使用在问题环境内熟悉的方式描述的抽象的程度也就随之减少了软件作为系统的一个完整部件第4章总体设计计算机与软件学院毕硕本4.3设计原理模块化的概念,与抽象是紧密相关的。随着软件开发工程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。软件结构顶层的模块,控制了系统的主要功能并且影响全局;在软件结构底层的模块,完成对数据的一个具体处理。第4章总体设计计算机与软件学院毕硕本4.3设计原理把抽象是:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”抽象与求精是一对互补的概念。5.3.3逐步求精抽象使得设计者能够说明过程和数据,同时却忽略低层细节。求精则帮助设计者在设计过程中逐步揭示出低层细节。第4章总体设计计算机与软件学院毕硕本4.3设计原理5.3.4信息隐藏和局部化局部化的概念和信息隐藏概念是密切相关的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。第4章总体设计计算机与软件学院毕硕本4.3设计原理模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。5.3.5模块独立第4章总体设计计算机与软件学院毕硕本4.3设计原理•内聚:模块各元素执行相同的任务•内聚级别:偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚最差最好1.内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理•偶然内聚:为方便把不相干的元素组合在一起•严重的缺点:产品的可维护性退化;模块是不可复用的,增加软件成本。•解决途径:将模块分成更小的模块,每个小模块执行一个操作。低内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理•逻辑内聚:把逻辑上相似的功能结合到一个模块中。•缺点:会增加开关量、不易修改、不易理解、效率低等问题。•解决途径:尽量避免这种逻辑性内聚。低内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理•时间内聚:某段时间执行的若干功能任务放在同一模块中•例如:系统的初始化•问题:不同的功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。低内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理•过程内聚:模块中的各功能元素相关,并且按特定次序执行•例如:读写并更新数据记录中内聚enterdatacheckdatamanipulatedata第4章总体设计计算机与软件学院毕硕本4.3设计原理•通信内聚:模块中的成分需用同样数据•例如:1.某模块的各成分都利用一符号表进行操作;2.从同一磁带上读取不相干的数据。•问题:可能破坏独立性。中内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理•顺序内聚:模块的输出是下一模块的输入。模块的各成分利用相同的输入或产生相同的输出。•功能内聚:为完成一个任务把所需的全部功能组合在一起。•原则:力争高内聚和识别低内聚,可以使得设计的软件具有较高的功能独立性。高内聚第4章总体设计计算机与软件学院毕硕本4.3设计原理计算多个地点的每日平均温度功能内聚初始化,“求和”并打开文件偶然内聚关闭文件并打印平均温度偶然内聚创建新的温度记录功能内聚存储温度记录功能内聚读取地点、时间和温度功能内聚编辑地点、时间和温度字段逻辑内聚存储特定地点的温度功能内聚??内聚示例第4章总体设计计算机与软件学院毕硕本4.3设计原理耦合是度量系统中模块之间的交互程度。耦合从低到高依次为:非直接耦合(最好),数据耦合,标记耦合,控制耦合,外部耦合,公共耦合和内容耦合(最差)。2.耦合GreatdealofdependenceIndependentHighlycoupledLooselycoupledUncoupled第4章总体设计计算机与软件学院毕硕本4.3设计原理内容耦合contentcoupling如果两个模块中的一个直接引用了另一个模块的内容,则它们之间是内容耦合。2.耦合例1:A访问C的内部数据或不通过正常入口而转入C的内部。……ABCDA:……………………gotoC1……………………C:……………………C1:…………第4章总体设计计算机与软件学院毕硕本4.3设计原理2.耦合例2:部分代码重叠(常出现在汇编程序中)例3:一个模块有多个入口(功能)BAA:………………………………entry1:………………………………entry2:………………………………Theleastdesirablemustbeavoided第4章总体设计计算机与软件学院毕硕本4.3设计原理公共耦合commoncoupling如果两个模块都可以存取相同的全局数据,则它们之间是公共耦合。2.耦合Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………第4章总体设计计算机与软件学院毕硕本4.3设计原理公共耦合存在的问题:公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。解决方法:通过使用信息隐藏来避免公共耦合。2.耦合第4章总体设计计算机与软件学院毕硕本4.3设计原理外部耦合externalcoupling当模块与软件的外部环境联结在一起,并受到约束时就出现较高程度的耦合,则它们之间为外部耦合。2.耦合ANMLFEDCBOP第4章总体设计计算机与软件学院毕硕本4.3设计原理控制耦合controlcoupling如果两个模块中的一个模块给另一个模块传递控制信息,则它们具有控制耦合。2.耦合ABFlagF2F1Fn…………Flag特点:接口单一,但仍然影响被控模块的内部逻辑。第4章总体设计计算机与软件学院毕硕本4.3设计原理标记耦合stampcoupling如果两个模块都要使用同一数据结构的一部分,不是采用全局公共数据区共享,而是通过模块结构传递数据结构的一部分,则它们之间为标记耦合。数据耦合datacoupling被调用模块的输入与输出是简单的参数或者是数据结构(该数据结构中的所有元素为被调用的模块使用),则它们之间为数据耦合。非直接耦合nodirectcoupling两个模块之间没有联系,则它们之间为非直接耦合。2.耦合Themostdesirable.第4章总体设计计算机与软件学院毕硕本4.3设计原理实现低耦合,采取下列措施:耦合方式采用非直接耦合,不采用直接耦合。传递信息类型尽量使用数据耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合数量模块间相互调用时,传递参数最好只有一个。2.耦合第4章总体设计计算机与软件学院毕硕本4.4启发规则1.争取低耦合、高内聚增加内聚、减少耦合2.模块规模适中过大,分解不充分,不易理解;太小,则开销过大、接口复杂。3.适当控制模块结构参数深度=分层的层数。过大表示分工过细。宽度=同一层上模块数的最大值。过大,表示系统复杂度大。第4章总体设计计算机与软件学院毕硕本4.4启发规则软件结构第4章总体设计计算机与软件学院毕硕本4.4启发规则扇出=一个模块直接调用\控制的模块数。3fan-out9AA的扇出AA的扇入扇入=直接调用该模块的模块数在不破坏独立性的前提下,fan-in大的比较好。第4章总体设计计算机与软件学院毕硕本4.4启发规则尽可能减少高扇出结构,随着深度增大扇入如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。应当适当增加中间层次的控制模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。第4章总体设计计算机与软件学院毕硕本4.4启发规则4.模块的作用