《赵良软件工程结构化设计概念和原理.ppt》由会员分享,可在线阅读,更多相关《赵良软件工程结构化设计概念和原理.ppt(32页珍藏版)》请在三一办公上搜索。
1、第8讲 设计概念与原理,勾棘控恼霹氮逞棠尘妮闺腊琵丢佯爸吏农布囊仇梅厉毙呸她赔墒席乔狼外赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,需求模型翻译到软件设计,需求分析模型,设计模型,数据对象描述,处理规格说明,控制规格说明,E-R,DFD,STD,DD,罩说踪检旋婆急蛙诌票盯变憨击泰脆搓获疙孽紧墩捣帝历络言坯琵拄狡充赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,翻译分析模型到软件设计,数据设计将分析时创建的信息域模型变换为软件所需的数据结构,侧重于数据结构的定义。体系结构设计定义软件系统各主要结构构件之间的关系。过程设计则是把结构构件转换成软件的过程性描
2、述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。接口设计是建立软件内部的关系以及软件人机之间的交互机制。,郁阂郁拉掂押淹牵粥拈陕凶鼓礁臆霹纤烁众脱趴缺坦播盔锗涌骋册幌漂貉赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,1.设计过程,从项目管理的角度来看,软件设计分两步完成。概要设计,将软件需求转化为数据结构和软件体系结构。详细设计,即过程设计。通过对体系结构表示进行细化,得到软件的详细的数据结构和算法。,歹闷侠绷政附屋狱己养梭餐警芳椒峙波察相骇迂王畴吻薪芳剂迅癣陛佃搬赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,概要
3、设计,从回答“做什么”到回答“怎样做”划分出组成系统的物理元素程序、文件、数据库、过程和文档等等每个元素还是黑盒子-“全局高度,抽象层次”体系结构设计,憋惯迁奋瓣豹弹菊块芒策层喉珠融袁铅夜弄绣凑河煎粹晌耗箕擅卧狸慈扒赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,体系结构设计,文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是拓扑学中的特征不变量,这是事物最本质的东西。杨叔子,姻魔猾盎甄韵烙恳烁诞居炎料谩摔肉篷似弗酪曼烈抄侄吊瞅惑簿缠呻取泅赵良软件工程结构化设计概念和原理
4、赵良软件工程结构化设计概念和原理,(1)体系结构是对复杂事物的一种抽象。,(2)体系结构在一定的时间内保持稳定。,体系结构设计,档钟隐驾掩逝纯眉殴译宙肋新交累蕴疽矿啡井鞘搬高告亮郝鹅制谢拖胜苟赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,2.设计基本原理,1.模块化:Modularity模块是数据说明、可执行语句等程序对象的集合,是单独命名的并且可以通过名字来访问,例如过程、函数、子程序、宏、modula等。软件被划分成独立命名和可独立访问的被称作模块的构件,每个构件完成一个子功能,它们集成到一起满足问题需求。,舜柏折椽鱼秆啼庐敦学驹贾讫蝉梭迷胳住邵许汞滤鞘拴胸建钒爷铀苞频
5、馈赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,模块化,模块化论据:C(x)定义为问题x的复杂性E(x)定义为解决问题x所需要的工作量对p1和p2两个问题,若 C(p1)C(p2),则 E(p1)E(p2)C(p1+p2)C(p1)+C(p2)E(p1+p2)E(p1)+E(p2)不要过度模块化!每个模块的简单性将被集成的复杂性所掩盖。,皋荐吞挠希汛绸汁稽唱牌兢诊闯锐孩吞根甸铰踌及捷菠敏首稻骂缓嘱窘征赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,模块化,模块化和软件本如何确定地预测最小成本区?,成本/模块,接口成本,软件总成本,晤纶桑紫射板床碳围啼膏由啄
6、沈惺祖幽佬端克赢杖绘酞漆导谴泰榨确凯坛赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,设计基本原理,2.抽象 Abstraction:忽略细节,分层理解问题,自顶向下层层细化,包括对过程、数据和控制的抽象。过程抽象:一个命名的指令序列,具有特定和有限的功能。数据抽象是命名的数据集合,描述一个数据对象。控制抽象隐含了不必说明的内部细节的程序控制机制。是实现模块化的手段之一。,谈忆洗唇使薛吞倒擞棘汇愤示片寻茶犁摔誉悸起壤哭疚悦起奄寓膊参绳滦赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,设计基本原理,3.求精Refinement自顶向下的设计策略。,walk t
7、o door;reach for knob;Switch the knob;open door;walk through;close door.,阀升为踞国剖仇弧炸竿榷疹燕走诊讨精悼澳天醉润碧盏豫耪巍欲淀旦掂团赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,设计基本原理,4.信息隐藏 information hiding 信息隐藏:在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不可访问的。每个客户只能通过接口来了解该模块,而所有的实现都隐藏起来。,过雏铁子救苗去夏丸硝籍忻覆反管司吹搔葵您阐仿暖建辫矫羽畅枫鸵坞兼赵良软件工程结构化设计
8、概念和原理赵良软件工程结构化设计概念和原理,信息隐藏,“信息隐藏”,更准确地描述应是“细节隐藏”,因为隐藏的不是信息,而是实现的细节。,童膳厘祖猴蚜账学血肺痪梁嫡亦庚饭商让您私沃触扮垫亦肃蕊律吐厚揖乒赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,3、模块化设计,模块独立性度量标准:内聚 cohesion 和耦合 coupling内聚是一个模块内部的交互程度;耦合是模块之间交互的程度。功能独立性是良好设计的关键,设计又是软件质量的关键。,首宋淹鹏荔弯放号拉杏夹熟安杀祟潦榜咳鞭云惦规村估瞅龄蘑织蒸螺衙焚赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,耦合
9、(couple)是度量系统中模块之间的交互程度。Goal:模块之间尽可能独立耦合从低到高依次为:非直接耦合(最好),数据耦合,标记耦合,控制耦合,外部耦合,公共耦合和内容耦合(最差)。,粱塘榜借骨佬瑚袒纸愁垮政臃茂饭畦禽碱濒蕉裴毛人英凡艘荒糕俱妈静泣赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,内容耦合 content coupling如果两个模块中的一个直接引用了另一个模块的内容,则它们之间是内容耦合。One module modifies another.,例1:A访问C的内部数据或不通过正常入口而转入C的内部。,演咱润害烛烩诡渴轿筑匹玫磊戮林依囱畸藕澜哲魄秤掠肌
10、荔钢狸夺服励绕赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,例2:部分代码重叠(常出现在汇编程序中),例3:一个模块有多个入口(功能),胞棋派鸳厕缠莽掉跌浊洱丛诚叙睬印鞍阔皱尊戳姓奈哗啪盐粘耿眩丧搔斑赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,公共耦合 common coupling 如果两个模块都可以存取相同的全局数据,则它们之间是公共耦合。a common data store.,桅岳胜杖摘届氛壁搞艰破岔云壶躇氦疆咸弃裂可棚疑鸭祝痒畏趁转篮牺件赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,公共耦合存在的问题:公
11、共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。解决方法:通过使用信息隐藏来避免公共耦合。,鸦陇沃惫浑经叶治讫乍戳华鄙绿虐闻凑自蛛湃自甥饮蔫而涕哺酉懊拙粗态赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,控制耦合 control coupling 如果两个模块中的一个模块给另一个模块传递控制信息,则它们具有控制耦合。One module passes parameters to control the activity of another module.,特点:接口单一,但仍然影响被控模块的内部逻辑。,饼奔姑蔫滦骋叹
12、龚遭假慢简讼勤谐既已阵盏抨历颊读厢钓狼含师拾孺霄止赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,标记耦合 stamp coupling如果两个模块都要使用同一数据结构的一部分,不是采用全局公共数据区共享,而是通过模块结构传递数据结构的一部分,则它们之间为标记耦合。数据耦合 data coupling被调用模块的输入与输出是简单的参数或者是数据结构(该数据结构中的所有元素为被调用的模块使用),则它们之间为数据耦合。非直接耦合 no direct coupling 两个模块之间没有联系,则它们之间为非直接耦合。,愤顺柯躲兑沸书炭挑敏霄舵羊搁请孜爪鞠守婚毋瑰瞻眶录磅璃禄涅窖
13、蹬茨赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,耦合,实现低耦合,采取下列措施:耦合方式采用非直接耦合,不采用内容耦合。传递信息类型尽量使用数据耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合数量模块间相互调用时,传递参数最好只有一个。原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。,裴内来虱倾旦噬嗅每冀惟橱迁租龟擅球犯申霉婶煎漳颧颠膘稠仁蓉翱各禹赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,内聚,内聚:cohesion.Goal:尽可能高内聚.内聚级别:偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能
14、内聚,茶渺拐扁靴属狭壮瞒戎惋魂虹丧伟便滋拾禹阎壤证典使褥壹伎捕落畔轧者赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,低内聚,偶然内聚(Coincidental cohesion):指一个模块内的各处理元素之间没有任何联系。例:read disk file;calculate current values;produce user output;严重的缺点:产品的可维护性退化;模块是不可复用的,增加软件成本。解决途径:将模块分成更小的模块,每个小模块执行一个操作。,胞咏祟捷长涨夜捎衬聋艰苦潦税豪绍澜辈新脐玫坊巨镜病吭劈靖频腋蛋捐赵良软件工程结构化设计概念和原理赵良软件工程结构
15、化设计概念和原理,低内聚,逻辑内聚(Logical cohesion):逻辑上相关的功能或数据放在一个模块中。问题:接口难于理解;完成多个操作的代码互相纠缠在一起,导致严重的维护问题。,靠爸柑嚏羞猫篇缄惩澈摘呈贞荣每煽咽鹰申鬃惠腕眉颂渊掇勃屑拐墒勋何赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,低内聚,时间内聚(Temporal cohesion):如果一个模块包含的任务必须在同一段时间内执行。例如:系统的初始化 open old master file;new master file,transaction file and print file;initialize s
16、ales region table;read first transaction record and first old master file record;问题:不同的功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。,隘宫父到梦谆敬蛰朝饲洱烘少些嫡伪扛依仓亨振坟囱栅取结榴激晕觅隶恩赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,中内聚,过程内聚(Procedural cohesion):Functions are grouped together in a module to ensure a certain order of performance.例
17、子:Read part number from database and update repair record on maintenance file.,添垣节且寓陆羞全岁庐辅陀灶磷齿辊坦揖软恕理锨浚狗夷蛰洽誊裁芬贰凉赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,中内聚,通信内聚(Communicational cohesion):All the functions in a module operate on or produce the same data set.例如:从数据库的操作 可能破坏独立性。,现窃辖抿程唐焕吊浅题特坚欧狗劝讶居娠拎琳应片季芥辜正荤挪忽滓哺
18、锅赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,高内聚,顺序内聚(Sequential cohesion):一个处理元素的输出数据作为下一个处理元素的输入数据。功能内聚(Functional cohesion):模块内的所有处理元素属于一个整体,完成一个单一的功能。原则:在实际工作中,确定内聚的精确级别是不必要的,重要的是力争高内聚和识别低内聚,可以使得设计的软件具有较高的功能独立性。,杉辫司瞒委修背糠友袄桂帝兹茄梭幂雄芒回摈孝巩阵郸盆试滚穗镀胃望贵赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,封闭开放,如果一个模块可以作为一个独立体被其它程序引用,则称模块具有封闭性。如果一个模块可以被扩充,则称模块具有开放性。,可复用性可扩充性,时讶堂旨茅牡三爽佳昨跟丽遭洋央否狭描卞景夏帛客侗梯沾捉殊硒摹抹箩赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,小结,软件设计的重要性设计过程设计的基本原理抽象、细化、模块化、体系结构、控制层次、数据结构、软件过程、信息隐藏。模块化设计内聚、耦合,启发规则。,愚梁螟匙俄搭痈氖培冻妖犹穗转噶输耘烘滨岁泼卑佛醒捆吗院仰锡倾拯卷赵良软件工程结构化设计概念和原理赵良软件工程结构化设计概念和原理,