《软件工程总体设计.pptx》由会员分享,可在线阅读,更多相关《软件工程总体设计.pptx(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4.1 案例分析一 招聘考试成绩管理系统数据库结构设计系统结构设计设计测试方案第1页/共56页4.1 案例分析一 招聘考试成绩管理系统5.1.1 数据库结构设计管理员数据表帐号密码考场号地点最多人数准考证号、姓名、性别、地区、出生年月、地址、专业、政治、英语、专业课、总分、名次、是否录用、录用单位。准考证号、姓名、性别、专业、录用单位、总分考场数据表考生数据表录用考生第2页/共56页4.1 案例分析一 招聘考试成绩管理系统5.1.2 系统结构设计一二三确定出各个模块及其关系。数据流图需进一步细化。用层次图或结构图来表示。第3页/共56页招聘考试成绩管理系统HIPO图第4页/共56页4.1 案例
2、分析一 招聘考试成绩管理系统5.1.3 设计测试方案录用模块主要测试考生准考证号的生成是否正确。进行各种测试条件的测试。分考生成绩输入、成绩查询、打印成绩单三个模块。主要测试考生成绩输入界面设计是否合理、输入后成绩总分的计算及排序是否正确。Text考前处理模块成绩信息模块测试输入界面是否正确、合理;录用结果的输出与输入是否一致。第5页/共56页4.2 案例分析二 高校工资管理系统从完整的工资管理系统数据流图出发事务数据和人事数据沿两条输入通路进入系统输出数据沿着一条输出通路离开系统,数据流图中没有明显的事务中心。第6页/共56页4.2 案例分析二 高校工资管理系统1、分析确定输入流和输出流的边
3、界,以孤立出变换中心。第7页/共56页4.2 案例分析二 高校工资管理系统2、完成“第一级分解”。就是确定系统的总体控制结构。通常变换分析得到的系统高层结构是一个“三叉”的控制结构。工资管理系统的第一层分解第8页/共56页4.2 案例分析二 高校工资管理系统3、完成“第二级分解”。就是把数据流图中的每个处理映射成软件结构中的一个适当模块。从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中“输入信息处理控制模块”控制下的一个低层模块。然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接接受“输出信息处理控制模块”控制的一个低层模块。最后把变换中心内的每个处理映
4、射成受“变换中心控制模块”控制的一个低层模块。变换分析的映射原则第9页/共56页4.2 案例分析二 高校工资管理系统第二级分解第10页/共56页4.2 案例分析二 高校工资管理系统4、对工资管理系统的初步设计结果进行优化。优化后的工资管理系统软件结构分解第11页/共56页4.3 设计原理模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5.3.1 模块化第12页/共56页4.3 设计原理模块化和软件成本第13页/共56页4.3 设计原理抽象就是抽出事物的本质特性而暂时不考虑它们的细节。软件工程过程的每一步
5、都是对软件解法的抽象层次的一次精化。5.3.2 抽象第14页/共56页4.3 设计原理达到了抽象的最低层可行性研究需求分析总体设计到详细设计写出源程序软件工程过程的每一步软件工程过程的每一步软件解法是使用在问题环境内熟悉的方式描述的抽象的程度也就随之减少了软件作为系统的一个完整部件第15页/共56页4.3 设计原理模块化的概念,与抽象是紧密相关的。随着软件开发工程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。软件结构顶层的模块,控制了系统的主要功能并且影响全局;在软件结构底层的模块,完成对数据的一个具体处理。第16页/共56页4.3 设计原理把逐步求精定义为:“为了能集中精
6、力解决主要问题而尽量推迟对问题细节的考虑。”抽象与求精是一对互补的概念。5.3.3 逐步求精抽象使得设计者能够说明过程和数据,同时却忽略低层细节。求精则帮助设计者在设计过程中逐步揭示出低层细节。第17页/共56页4.3 设计原理5.3.4 信息隐藏和局部化局部化的概念和信息隐藏概念是密切相关的。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。第18页/共56页4.3 设计原理模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。开发具有独立功能而且和其他
7、模块之间没有过多的相互作用的模块,就可以做到模块独立。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。5.3.5 模块独立第19页/共56页4.3 设计原理内聚:模块各元素执行相同的任务内聚级别:偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚最差最好1.内聚第20页/共56页4.3 设计原理偶然内聚:为方便把不相干的元素组合在一起严重的缺点:产品的可维护性退化;模块是不可复用的,增加软件成本。解决途径:将模块分成更小的模块,每个小模块执行一个操作。低内聚第21页/共56页4.3 设计原理逻辑内聚:某段时间执行的若干功能任务
8、 放在同一模块中例如:系统的初始化问题:不同的功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。低内聚第22页/共56页4.3 设计原理过程内聚:模块中的各功能元素相关,并且按特定次序执行例如:读写并更新数据记录中内聚enter datacheck datamanipulate data第23页/共56页4.3 设计原理通信内聚:?例如:1.某模块的各成分都利用一符号表进行操作;2.从同一磁带上读取不相干的数据。问题:可能破坏独立性。中内聚第24页/共56页4.3 设计原理顺序内聚:模块的输出是下一模块的输入。模块的各成分利用相同的输入或产生相同的输出。功能内聚:为完成一个任务把
9、所需的全部功能 组合在一起。原则:力争高内聚和识别低内聚,可以使得设计的软件具有较高的功能独立性。高内聚第25页/共56页4.3 设计原理计算多个地点的每日平均温度功能内聚初始化,“求和”并打开文件偶然内聚关闭文件并打印平均温度偶然内聚创建新的温度记录功能内聚存储温度记录功能内聚读取地点、时间和温度功能内聚编辑地点、时间和温度字段逻辑内聚存储特定地点的温度功能内聚?内聚示例第26页/共56页4.3 设计原理耦合是度量系统中模块之间的交互程度。耦合从低到高依次为:非直接耦合(最好),数据耦合,标记耦合,控制耦合,外部耦合,公共耦合和内容耦合(最差)。2.耦合Great deal of depen
10、denceIndependent Highly coupledLoosely coupledUncoupled 第27页/共56页4.3 设计原理内容耦合 content coupling如果两个模块中的一个直接引用了另一个模块的内容,则它们之间是内容耦合。2.耦合例1:A访问C的内部数据或不通过正常入口而转入C的内部。ABCDA:goto C1C:C1:第28页/共56页4.3 设计原理2.耦合例2:部分代码重叠(常出现在汇编程序中)例3:一个模块有多个入口(功能)B AA:entry 1:entry 2:The least desirable must be avoided第29页/共56
11、页4.3 设计原理公共耦合 common coupling 如果两个模块都可以存取相同的全局数据,则它们之间是公共耦合。2.耦合Global:V1 V2A:A1=V1+V2B:V1=B1Global:V1 V2A:V1+B:V2=B1+V1第30页/共56页4.3 设计原理公共耦合存在的问题:公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。解决方法:通过使用信息隐藏来避免公共耦合。2.耦合第31页/共56页4.3 设计原理外部耦合 external coupling 当模块与软件的外部环境联结在一起,并受到约束时就出现较高程度的耦合,则它们
12、之间为外部耦合。2.耦合ANMLFEDCBOP第32页/共56页4.3 设计原理控制耦合 control coupling 如果两个模块中的一个模块给另一个模块传递控制信息,则它们具有控制耦合。2.耦合ABFlagF2F1FnFlag特点:接口单一,但仍然影响被控模块的内部逻辑。第33页/共56页4.3 设计原理标记耦合 stamp coupling如果两个模块都要使用同一数据结构的一部分,不是采用全局公共数据区共享,而是通过模块结构传递数据结构的一部分,则它们之间为标记耦合。数据耦合 data coupling被调用模块的输入与输出是简单的参数或者是数据结构(该数据结构中的所有元素为被调用的
13、模块使用),则它们之间为数据耦合。非直接耦合 no direct coupling 两个模块之间没有联系,则它们之间为非直接耦合。2.耦合 The most desirable.第34页/共56页4.3 设计原理实现低耦合,采取下列措施:耦合方式采用非直接耦合,不采用直接耦合。传递信息类型尽量使用数据耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合数量模块间相互调用时,传递参数最好只有一个。2.耦合第35页/共56页4.4 启发规则1.争取低耦合、高内聚增加内聚、减少耦合2.模块规模适中过大,分解不充分,不易理解;太小,则开销过大、接口复杂。3.适当控制模块结构参数 深度=分层的层数。过
14、大表示分工过细。宽度=同一层上模块数的最大值。过大,表示系统复杂度大。第36页/共56页4.4 启发规则软件结构第37页/共56页4.4 启发规则 扇出=一个模块直接调用控制的模块数。3 fan-out 9AA的扇出AA的扇入 扇入=直接调用该模块的模块数在不破坏独立性的前提下,fan-in 大的比较好。第38页/共56页4.4 启发规则尽可能减少高扇出结构,随着深度增大扇入如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。应当适当增加中间层次的控制模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。第39页/共56页4.4 启发规则4.模块的作用范围保持在该模块
15、的控制范围内控制域指该模块本身以及所有直接或间接从属于它的模块。作用域是指该模块中一个判断所影响的所有其它模块;控制域MACBM的控制域为 M,A,B,CM的作用域为 M,A,C 作用域:M中的一个判定所影响的模块。第40页/共56页4.4 启发规则例:A:if then goto B1 B:B1:作用域在控制域内A:if then goto M1 M:M1:goto C1 作用域超出了控制域改进方法之一,可以把A中的 if 移到M中;改进方法之二,可以把C移到A下面。MACB第41页/共56页4.4 启发规则5.降低接口的复杂程度模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得
16、信息传递简单并且与模块的功能一致。6.单出口单入口,避免内容耦合易于理解和维护。7.模块功能可预测相同输入必产生相同输出。第42页/共56页4.5 面向数据流的设计方法面向数据流的设计方法把数据流(信息流)映射成软件结构,数据流的类型决定了映射的方法。1.变换流信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。5.5.1 模块独立第43页/共56页4.5 面向数据流的设计方法变换流第44页/共56页4.5 面向数据流的设计方法2.事务流数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选
17、出一个来执行。这类数据流称为事务流。第45页/共56页4.5 面向数据流的设计方法事务流第46页/共56页4.5 面向数据流的设计方法变换分析是经过若干步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。5.5.2 变换分析找出变换中找出变换中心及逻辑输心及逻辑输入入/出出设计软件结设计软件结构的顶层构的顶层自顶向下,自顶向下,逐步细化,逐步细化,设计中下层设计中下层模块模块设计步骤第47页/共56页4.5 面向数据流的设计方法例:汽车数字仪表板的设计5.5.3 变换流分析功能:通过模-数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;指示每小时英里数(mph),行驶的里程
18、,每加仑油行驶的英里数(mpg)等等;指示加速或减速;如果车速超过55mph,则发出警告铃声。第48页/共56页4.5 面向数据流的设计方法燃料流 传感器信号SPS旋转信号读旋转信号收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmrpmgphmphmpgmph超速值英里显示铃声mph显示mpg显示第一步:DFD的分界,先分出I、P、O三块第49页/共56页4.5 面向数据流的设计方法数字仪表板控制数据转换控制驱动仪表板接收传感器信号一级分
19、解方法:MPIO第50页/共56页4.5 面向数据流的设计方法第二步:映射第二步:映射:由边界向回溯,将每个遇到的处理器映成相应的层模块。I:每个处理直接对应一个下层模块。P:由边界向外推,方法与 类似OIADCBMICBDA第51页/共56页4.5 面向数据流的设计方法第三步:优化第三步:优化 本着高内聚、低耦合的原则本着高内聚、低耦合的原则数字仪表板控制数据转换控制驱动仪表板接收传感器信号计算gph读燃料流转换成rpm收集sps读旋转信号确定加/减速计算mph计算mpg计算里程加/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示第52页/共56页4.5 面向数据流的设计方法5.5
20、.4 事务流分析 TTransactionrequest Action paths 事务流(Transaction Flow)第53页/共56页4.5 面向数据流的设计方法事务流分析是从事务流的DFD到程序结构图的转换确定事务流边界先从DFD中找出事务流、事务处理中心和事务路径。事务中心前是接收事务、事务中心后是事务路径。进行一级分析设计上层模块从DFD中导出具有接收和发送分支的软件结构。细化该事务结构和每条动作路径的结构对于接收分支,采用变换流设计方法设计中下层;对于发送分支,在发送模块下设计每条事务路径的结构。设计步骤第54页/共56页4.5 面向数据流的设计方法IIISBACMIIISABC事务流事务中心事务处理第55页/共56页感谢您的观看!第56页/共56页