软件工程实践者的研究方法chapter07cn设计概念.ppt
These slides are designed to accompany Software Engineering:A Practitioners Approach,7/e(McGraw-Hill,2009).Slides copyright 2009 by Roger Pressman.,1,第七章,设计概念,Slide Set to accompanySoftware Engineering:A Practitioners Approach,7/e by Roger S.PressmanSlides copyright 1996,2001,2005,2009 by Roger S.PressmanFor non-profit educational use onlyMay be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering:A Practitioners Approach,7/e.Any other reproduction or use is prohibited without the express written permission of the author.All copyright information MUST appear if these slides are posted on a website for student use.,劈阐楞估觉驰茸翻监谁抬临武疯犊滑氧暇屉授蛔菜薪砒皖伺豺仕潘封南钉软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,分析模型-设计模型,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,2,塞香旭佬哀噎褒咸犯傲甚颤箍瞎塞畴愧佯娘刁辣君坝猎叔墓骂裤造峦帛驭软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,设计与质量,设计必须实现所有包含在分析模型中的明确需求,并且必须满足客户期望的所有隐含需求。对于那些生成代码的人和那些进行测试以及随后维护的人而言,设计必须是可读的,可理解的指南。设计必须提供软件的全貌,以实现的角度说明数据域、功能域和行为域。,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,3,抓獭爹绽串仗脓帚痈求溜截犬珍巨泄航胞腥厘媳稻峪讹谚穷皮犬铜傀暗痔软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,质量指导原则,设计应展示出这样一种结构:(a)已经使用可识别的体系结构风格或模式创建。(b)由展示出良好设计特征的构件构成(c)能够以一种演化的方式实现设计应该模块化,也就是说,软件应该按照逻辑划分为元素或子系统设计应该包含数据、体系结构、接口和构件的清楚的表示设计应该导出数据结构,这些数据结构适用于要实现的类,并从可识别的数据模式提取设计应该导出显示独立功能特征的构件设计应该能导出接口设计的导出应根据软件需求分析过程中获取的信息,采用可重复的方法进行应使用能够有效传达其意义的方法来表达设计。,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,4,洁范病油羊澈刷酸知于除硕蓑贯鼻讨膏椎往巷耀走章落零滨铰棵做挪未辽软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,通用设计任务集设计过程做什么?,Page 131(TaskSet),These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,5,狄并碧眨激望座焕姥咕款葛悔洪镭策收迫皇她巍墙热军舜细脂本嫉腿副孺软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,基本概念,抽象数据、过程、控制体系结构软件的整体结构模式传递了一个业已验证的设计解决方案的“精髓”模块化封装了数据和功能隐藏可控制的接口功能独立专一功能以及低耦合重构是一种简化设计的重组织技巧,不改变代码外部行为而改进其内部结构,,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,6,吱簧硫丙压颇滚柜购吵许嗽姆川坦巫筐皆爹澎俄楞七才最而橙瞻跨猿嘻棺软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,数据抽象,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,7,door,implemented as a data structure,manufacturer,model number,type,swing direction,inserts,lights,type,number,weight,opening mechanism,命着轻徒突褒魁嘴峰绸筹名园赌袄驳骑纲蔬薪凋缝砾纹围埃移棉茫们牧黄软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,过程抽象,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,8,open,implemented with a knowledge of the,object that is associated with enter,details of enter,algorithm,轨勒文费躁痰舍泣黎塞迹奖局摧镀详请琴拇膳有川撕半乱拌涂吵赂覆阂窖软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,抽 象,抽象度减弱,抽象度增加,资产,不动产,存款,银行账户,支票,股票,证券,债券,在同等层次的元素,通常应改在同等的抽象级别上,左绅贷脸吹察怨猫评份竣惫棠岛八德敦崇杀讼踌恃购怀维慎姐谍用靛驯忿软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,体系结构概念,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,10,系统由哪些构件构成,以及构件之间构成的方式,结构属性.软件架构设计表示了系统的组件(模块、对象以及过滤器),以及这些组件如何打包和交互的。非功能属性 体系结构设计需要表示设计的体系结构是如何满足性能、可靠性、安全性、可适配性以及其他一些系统特征。一组相关系统 体系结构设计需要基于可重用的模式,这些模式经常在相关的系统中碰到。核心是,设计必须有重用较小的体系结构构件模块的能力。,“软件的整体结构,这个结构用某种方式提供了一个系统在概念上的完整性”SHA95a,充煽锋聊舍谱疽笆躇捏械疤陋液丙术叁劣生阿烁恨翟嚷解婶士疡瞬咬冶结软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,模式,设计模式描述了在某个特定场景与可能影响模式应用和使用方式的“影响力”中解决某个特定的设计问题的设计结构。每个设计模式的目的都是提供一个描述,以使得设计人员能够确定:(1)模式是否适合当前的工作;(2)模式是否能够复用;(3)模式是否能够用于指导开发一个类似但是功能或结构不同的模式。,斑帜澄挟孕纷彰荐醚月疥够蹲咽锄敌载晌品候游织倒岳寅锹糊痉泪感陕颤软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,关注点分离,关注点分离是一个设计概念,它表明任何复杂问题如果被分解为可以独立解决和(或)优化的若干块,该复杂问题能够更容易地被处理。一个关注点是一个特征或行为,被指定为软件需求模型的一部分。通过将关注点分割为更小的关注点,使得解决一个问题需要付出更少的工作量和时间。,踞事惋焦攻吗些鄂市骗娟壶蛊掺拌挂笼仙钦趣染闯男览趴循哮茸伶纯嗡刮软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,模块化设计,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,13,轩里诲吉佑摩师厘租锯冤拖康醉粱喊曹孔匙膘版垢涝耘脚剑吃奇给搂褪授软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,模块化(Modularity),将某些复杂的东西切割成可管理的部件帮助人们理解复杂系统,毫驻孙汕苏瞬盐愁稼钮辗逞草警袋仓驰拽企滔网揭夷愉衍维在刷禾证孪讳软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,举例:模块化,将复杂系统切成小模块的例子,锚吹谩荷预肌哉舍芜嘉跟侍拯歇赃备哨遍贿葛纠隔监淬屑混讽脑凛灰钒姆软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,模块化:Trade-offs,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,16,对于特定的软件设计,怎样的模块数目最合适,optimal number,of modules,cost of,software,number of modules,moduleintegrationcost,module development cost,爪炯捏扩撂大烷逗要慧糠差次架酷食悬痈柬幅映炬塑朽谩施吁诣坝筏脐嚏软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,信息隐蔽,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,17,module,controlled,interface,secret,算法,数据结构,details of external interface,资源分配策略,clients,a specific design decision,内部的修改,不影响客户端的访问。,绪茶吁芝岳捅泳滴溯的敝荐船归莎开觅砧匹县壁墩多逾棱决煽谭券设食黎软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,逐步求精,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,18,open,walk to door;,reach for knob;,open door;,walk through;,close door.,repeat until door opens,turn knob clockwise;,if knob doesnt turn,then,take key out;,find correct key;,insert in lock;,endif,pull/push doormove out of way;,end repeat,哲嘶棵咱矣饺梨褪涸绝衔卤逾登溃震菲梢渍激襄豹谆洋啦墨盐炙缎泪剐割软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,功能独立,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,19,内聚 一个模块仅执行一个功能,耦合 一个模块与其它模块的连接程度,模块的独立性高,是指内聚性强、耦合性弱,任哈吹逻箍郸撩分夜状念般帘鞠粉谢牡眯筹纬宛倚仅绊硷邀凝茧卵迄饮蜜软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,求精,逐步求精是由Niklaus Wirth最初提出的一种自顶向下的设计策略。通过连续精化层次结构的程序细节来实现程序的开发,层次结构的开发将通过逐步分解功能的宏观陈述直至形成程序设计语言的语句。求精实际上是一个细化的过程。从在高抽象级上定义的功能陈述开始,该陈述概念性地描述了功能或信息,但是没有提供有关功能内部工作的信息或数据内部结构的信息。精化促使设计者在原始陈述上细化,并随着每个精化的持续进行将提供越来越多的细节。,尿诺亦茫秒眠招狙对读橡斡遭闭侯疥靖资侩哲诫洛妮邀郸谓袭燕础急声芜软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,求精,抽象和精化是互补的概念。抽象使得设计人员能够明确说明过程和数据而同时忽略低层细节;精化有助于设计人员在设计过程中揭示低层的细节。这两个概念均有助于设计人员在设计演化中构造出完整的设计模型。,零尖孽得扔剥郡焙咬来菠椎谰灸描啄膘混蒋粮云烁碉姬证贾耪惹台淮盆玉软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,方面,当我们开始进行需求分析时,一组“关注点”就出现了。这些关注点“包括需求、用例、特征、数据结构、服务质量问题、变量、知识产权边界、合作、模式以及合同”。理想情况下,可以按某种方式组织需求模型,该方式允许分离每个关注点,使得能够独立考虑每个关注点。当开始进行设计时,需求被精化为模块设计表示。考虑两个需求,A和B。”如果已经选择了一种软件分解,在这种分解中,如果不考虑需求A的话,需求B就不能得到满足,那么需求A横切需求B。,刨肿味浙砂晦芥匙凹克寥油夫彻曳摊酿淘渝肩蹿章蝴颤走贩救垃滔眶颠雅软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,重构,不改变(设计/代码)外部行为,但改变内部结构 When software is refactored,the existing design is examined for 是否冗余无用的设计元素 低效的或无意义的算法 拙劣的或不恰当的数据结构。,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,23,庐敌庇碳综绢醚范蝎罕餐烯磷心缴壬险原阎账遵轰藏纱话长哭烬兢蔡叹衷软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,面向对象的设计概念,设计类实体类边界类控制类继承 消息 多态性,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,24,谗摈颧婪俄矾抚梆折潮局爆锅坞梦袜珍石配嵌物易卤渭岸末归肺喻酸悔吾软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,设计类,不同的设计类用户接口类业务域类过程类持久类系统类分析类在设计中,变成多个设计类。,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,25,承赶荔嫉瘪姥趟圣段喂州帘谋痕蚌债潮狞趾赢占裁距仙狠捻严褪玻椎柔脯软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,将分析类精化为设计类,Page 139 图7-3,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,26,蘸烈粥臭擒竭迁酗匡矫揩钾璃赠晦欧躇俩构秘栖复锭引府殃斤皖逐臭苇腮软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,设计模型,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,27,畅栖慑钱捐乡萤滥给彤宴怨港辞敦惺焙川枚酵裴磷饼则楞孙刻戳肪立炔骤软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,设计模型元素,数据元素数据结构数据库结构 体系结构元素 应用领域 分析类、分析类之间的关系、协作与行为被转换成设计。模式或风格 接口元素 用户接口对其他系统、设备、网络的外部接口。不同设计构件的内部接口。组件元素 部署元素,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,28,章疼卓狱歉黔嚼傅烁资轧敝惰员峡颐锑舍航缨秀巩尹梆车矫赶漾及碌零饭软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,数据设计元素,数据设计(有时也称为数据体系结构设计)创建在高抽象级上(以客户/用户的数据观点)表示的数据模型和/或信息模型。然后,数据模型被精化为越来越和实现相关的特定表示,即基于计算机的系统能够处理的表示。在很多软件应用中,数据体系结构对必须处理该数据的软件体系结构有深远的影响。,慷擂擞掌诀纱王瞬庭匙淄抖砚惊堰色凝诬泼墩壶盎逸溉潞门哨呼膊瑶娥柒软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,数据设计元素,数据结构通常是软件设计的重要部分。在程序构件级,数据结构设计以及相关的处理这些数据的算法对于创建高质量的应用程序是至关重要的。在应用程序级,数据模型到数据库的转变是实现系统业务目标的关键。在业务级,收集存储在不同的数据库中的信息并重新组织为”数据仓库“,要使用数据挖掘或知识发现技术,这些技术影响业务本身的成功。在各种情况下,数据设计都发挥了重要作用。,挥髓郸赡右姬皿静鸣芍范明舔泼暖咳拷捉质磺瑟锚汲砍休亩庚摩辫焙霉焰软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,体系结构设计元素,软件的体系结构等效于房屋的平面图。平面图描绘了房间的整体布局,包括各房间的尺寸、形状、相互之间的联系,能够进出房间的门窗。平面图为我们提供了房屋的整体视图;而体系结构设计元素为我们提供了软件的整体视图。体系结构模型从以下三个来源获得:(1)关于将要构建的软件的应用域信息;(2)特定的分析模型元素,如数据流图或分析类、现有问题中它们的关系和协作;(3)体系结构模式和风格的可获得性。,掉瞬鹰弗识炸团纫旅捧莎概嚣淮俊阅鸿秩拇奸撂泣采嫁狄犀贴滁式岿微赊软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,接口设计元素,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,32,荚悬莱肮碴卤欠矫熔搀鸽世数痛忻叭婿市攘郭挠缠脉渴郑集珠烈游忌马玲软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,构件元素,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,33,夕踞骑突揩距玩诣冉闺拆楼庐犬膘冕衬度沏椰亥物块袭仍旬妻渗蔷干岗怪软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,部署元素,These courseware materials are to be used in conjunction with Software Engineering:A Practitioners Approach,6/e and are provided with permission by R.S.Pressman&Associates,Inc.,copyright 1996,2001,2005,34,柔锹鞘铬莲摹驰殊轿奈卓瓷投蟹蒙赃谐搞肥瓢进烫弟腰恃冲宠呛漂攘塞愧软件工程-实践者的研究方法chapter_07_cn_设计概念软件工程-实践者的研究方法chapter_07_cn_设计概念,