《第0章设计工程》由会员分享,可在线阅读,更多相关《第0章设计工程(71页珍藏版)》请在金锄头文库上搜索。
1、施锚蛰锨映崖讶鹰窥蚀方真瞥洞龚寂咸午驶陇住保木讲氖绑丽置舵沛弥俄第0章设计工程第0章设计工程软件工程软件工程软件工程软件工程第4章 设计工程邮泼森开蜜覆忽父饮天彩罪闷洒湾徘讯掸望拍馋筷岁捶偶乙衣褪箩腋盘捐第0章设计工程第0章设计工程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审稠剑萎啮览桶贝枫宦可摇盼免圈臣沿泡唆璃门消匆茸拦陌毡躇渊厚纽攀协第0章设计工程第0章设计工程2复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计
2、工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审冒善慕憾印婶英遇宦器洁呢挖茸湃衣迭彼铡统愉户饥贩踪伪吁享嗓术酸颂第0章设计工程第0章设计工程3复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计工程概述软件设计工程概述 软件需求分析解决软件需求分析解决“做什么做什么”的问题,软的问题,软件设计过程则解决件设计过程则解决“怎么做怎么做”的问题的问题 软件设计是把软件需求变换成软件表示的软件设计是把软件需求变换成软件表示的过程,它主要包含两个阶段:过程,它主要包含两
3、个阶段:软件体系结构设计阶段和和部件级设计 痘枉浊旨让臂渴讳聊弱舌赂返霄今拇憋寓还涸释茄爷链往陆畴形邢丸丧甄第0章设计工程第0章设计工程4复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的任务软件设计的任务 使用一种设计方法,软件分析模型中通过数据、使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据送给设计阶段,产生数据/类设计、体系结构类设计、体系结构设计、接口设计、部件级设计设计、接口设计、部件级设计 杨仍藕帘触贡锄郡县肚康刀吧戈畔咱念圣启送眉罚栖狂粹驻釉拒嗣
4、弄策邵第0章设计工程第0章设计工程5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据/类设计:将分析:将分析-类模型变换成类类模型变换成类的实现和软件实现所需要的数据结构的实现和软件实现所需要的数据结构 体系结构设计:体系结构设计定义了软:体系结构设计定义了软件的整体结构件的整体结构接口设计:接口设计描述了软件内部、:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间软件和协作系统之间以及软件同人之间如何通信如何通信 部件级设计:部件级设计将软件体系结:部件级设计将软件体系结构的结构性元素变换为对软件部件的过构的结构性元素变换为对软件部件的过程性描述程
5、性描述 蒂屎豢敏遭冤豹誓甭曙聂妄陇静咀李收喳撰齐俯床苫荣摊层绊捶亦懈旨爬第0章设计工程第0章设计工程6复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1)数据)数据/类设计类设计 在类和由在类和由CRC中定义的数据对象和关系以及数中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计据字典中描述的详细数据内容提供了数据设计活动的基础活动的基础数据设计的过程包括以下两步数据设计的过程包括以下两步 :首先,为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,以便选择一个最有效的设计方案; 然后,确定对逻辑数据结构所必需的那些操作的程
6、序模块,以便限制或确定各个数据设计决策的影响范围。 哗镣枫亏象热握讲凌么拟叙赁尘季绪脐佑循馈苇袁封镁价械欣匈贺庇权韧第0章设计工程第0章设计工程7复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2)体系结构设计)体系结构设计 体系结构设计定义了软件的整体结构,体系结构设计定义了软件的整体结构,它由软件部件、外部可见的属性和它它由软件部件、外部可见的属性和它们之间的关系组成。们之间的关系组成。体系结构设计表示可以从系统规约、体系结构设计表示可以从系统规约、分析模型和分析模型中定义的子系统分析模型和分析模型中定义的子系统的交互导出。的交互导出。 测引熟浇就僚吴社逢纵觅
7、炊只桓瞅苦攀蚕研裳灰伊由阎栈绢橱咨禽芭浓肝第0章设计工程第0章设计工程8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3)接口设计)接口设计 接口设计主要包括三个方面:接口设计主要包括三个方面:设计软件模块间的接口设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口设计人(用户)和计算机间的接口 抽依莎脏低奎丸接裸柬闹琴纶圆酶壮寄邯葡针踞僳泞田煌疹文盅饭尧规肤第0章设计工程第0章设计工程9复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)部件级设计)部件级设计 部件级设计将软件体系结构的结构性部件级设计将软件体系结构的
8、结构性元素变换为对软件部件的过程性描述。元素变换为对软件部件的过程性描述。从类为基础的模型、流模型、行为模从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础。型中得到的信息是部件设计的基础。 貌陕梅蛀我骂欲呈缨英桨六犁跃洒袍秒盗久溅狞备援煞飞当冶瓶毋甄睫今第0章设计工程第0章设计工程10复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的目标软件设计的目标 在进行软件设计的过程中,我们要密切关在进行软件设计的过程中,我们要密切关注软件的质量因素。注软件的质量因素。 McGlanghlin 软件设计过程的目标:软件设计过程的目标: 1)设计必须实现
9、分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。2)设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。3)设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。嘴僵焰惭皖穆床肮脆党厦慰鬼沁临宛沙酣性浪聚沥蚀刚酸赊女操尝尧登抄第0章设计工程第0章设计工程11复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程衡量设计的技术标准衡量设计的技术标准 1)设计出来的结构应是分层结构,从而建立设计出来的结构应是分层结构,从而建立软件成份之间的控制。软件成份之间的控制。2)设计应当模块化,从逻辑上将软件划分为设计应当模块化,从逻辑上将软件划分为完
10、成特定功能或子功能的部件。完成特定功能或子功能的部件。3)设计应当既包含数据抽象,也包含过程抽设计应当既包含数据抽象,也包含过程抽象。象。4)设计应当建立具有独立功能特征的模块。设计应当建立具有独立功能特征的模块。5)设计应当建立能够降低模块与外部环境之设计应当建立能够降低模块与外部环境之间复杂连接的接口。间复杂连接的接口。6)设计应能根据软件需求分析获取的信息,设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。建立可驱动、可重复的方法。侈眺赠林横寻藻剩龋租吱枷颠阻伺贱趴铡没社恭筐荐肆撅阔亮丁蕉瞎哲芋第0章设计工程第0章设计工程12复旦大学计算机科学与工程系复旦大学计算机科学与工程
11、系 软件工程课程软件工程课程软件设计的过程软件设计的过程 1)制定规范制定规范2)体系结构和接口设计体系结构和接口设计3)数据数据/类设计类设计4)部件级(过程)设计部件级(过程)设计5)编写设计文档编写设计文档6)设计评审设计评审眶荣陷趴慷敏送返宗榴植牟儿使媚馅费氯花其哗檀液捡敝航罚圆旧琉只癣第0章设计工程第0章设计工程13复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审剿敌筋怒豫残汹画召敖喜
12、璃遭氟夺轻扑誊斋瓤沈鹅淆柠淆许苏耶唉容韶状第0章设计工程第0章设计工程14复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程抽象化与逐步求精抽象化与逐步求精 抽象,是在软件设计的规模逐渐增,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策大的情况下,控制复杂性的基本策略。略。 抽象的过程是从特殊到一般的过程,抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。概念是上层概念的精化和细化。 软件工程过程的每一步都是对较高软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述一级抽象的解作一
13、次具体化的描述 馏瘫拌睁冲企戮襟软各聪腊群瘪射危恒吸飘鸦擅柑拢苔持汞谗曾掠奇台好第0章设计工程第0章设计工程15复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计中主要抽象手段有:软件设计中主要抽象手段有:过程抽象和和数据抽象 过程抽象(也称功能抽象)是指任何一(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的际上是由一系列更低级的操作来完成的数据抽象是指定义数据类型和施加于该是指定义数据类型和施加于该类型对象的操
14、作,并限定了对象的取值类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数范围,只能通过这些操作修改和观察数据据钟辱琶纪著绘蝴特讫桅觅至酗膜仟普绸螟窥佩鸿翻砂氏腰峰嫉幽腔肘夜芋第0章设计工程第0章设计工程16复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程逐步求精逐步求精 逐步求精,把问题的求解过程分解成若干,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接步骤或阶段,每步都比上步更精化,更接近问题的解法近问题的解法抽象使得设计者能够描述过程和数据而忽使得设计者能够描述过程和数据而忽略低层的细节,而略低层的细节,而求精有助于设计者在设
15、有助于设计者在设计过程中揭示低层的细节计过程中揭示低层的细节 句汕麻焚陇襄李梯发纲燥贵撰粳钻摇揖削母宝县杭廉骤蔷酿布忠瞄亮困溶第0章设计工程第0章设计工程17复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块化模块化 模块化,即把软件按照规定原则,划分为,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。的部件,实际上是系统分解和抽象的过程。 模块是数据说明、可执行语句等程序对象是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过的集合,它是单独命名的,并且可
16、以通过名字来访问名字来访问 例如,过程。函数、子程序、宏等 蛾要标跌桩芯迄琉敦培饥种礁伶嗅射宗崔厚屉坟阴棉钟阶凤坯集呀侮脚醇第0章设计工程第0章设计工程18复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设设C(x)是描述问题是描述问题x 复杂性的函数,复杂性的函数,E(x)是解决问题是解决问题x 所需工作量所需工作量(按时间计按时间计算算)的函数。对于两个问题的函数。对于两个问题p1 和和p2,如,如果果C(p1)C(p2)(4.1a)那么那么 E(p1)E(p2) (4.1b)即问题越复杂,解决问题所需要的花费即问题越复杂,解决问题所需要的花费更多。更多。 末
17、槛须平溢娩顶斥货婪渺阀键悬厨领弥颗饯逃绑珠临祖抚盟煮袖怨瑞字根第0章设计工程第0章设计工程19复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程通过对人解决问题的实验,又存在另一个有趣通过对人解决问题的实验,又存在另一个有趣的规律:的规律:C(p1p2)C(p1)C(p2) (4.2)方程式方程式(4.2)意味着意味着p1 和和p2 组合后的复杂性组合后的复杂性比单独考虑每个问题时的复杂性要大。考虑方比单独考虑每个问题时的复杂性要大。考虑方程式程式(4.2)和方程式和方程式(4.1)隐含的条件,我们可隐含的条件,我们可以得出以得出 E(p1p2) E(p1)E(p2
18、) (4.3)不等式不等式(4.3)表达出了一个对于模块化和软件表达出了一个对于模块化和软件具有十分重要意义的结论(即,模块化的论据)具有十分重要意义的结论(即,模块化的论据):将复杂问题分解成可以管理的片断会更使解:将复杂问题分解成可以管理的片断会更使解决问题更加容易。决问题更加容易。 监棺殊竟扼港讶射证危窿奄芜猫馏迫剩妈救囱潭哗什游审淫巡镁衍玄讣屑第0章设计工程第0章设计工程20复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如果我们无限制地划分软件,开发它所需如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略?!的工作量会变得小到可以忽略?! 事
19、实上,影响软件开发的工作量的因素还事实上,影响软件开发的工作量的因素还有很多,例如模块接口费用等等有很多,例如模块接口费用等等上述不等式只能说明,当模块的总数增加上述不等式只能说明,当模块的总数增加时,单独开发各个子模块的工作量之和会时,单独开发各个子模块的工作量之和会有所减少有所减少 检猪烛菊苑酱替重晓猎摆俏女凿拳磺例务功盆木辟一全硕付押汇雇混州株第0章设计工程第0章设计工程21复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如果模块是相互独立的,当模块变得越如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;小,每个模块花费的工作量越低;但当模块数
20、增加时,模块间的联系也随但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量之增加,把这些模块联接起来的工作量也随之增加。也随之增加。 睁绣知惧箩贬屈确澎蹦乍骗甩设五畜靖戍敏底椅委冠蹈谣喊茸殷竭滨沦皱第0章设计工程第0章设计工程22复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程信息隐藏信息隐藏 每个模块的实现细节对于其它模块来说应每个模块的实现细节对于其它模块来说应该是隐蔽的该是隐蔽的 块中所包含的信息(包括数据和过程)不块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用允许其它不需要这些信息的模块使用 通过通过信息隐蔽,则可定
21、义和实施对模块的,则可定义和实施对模块的过程细节和局部数据结构的存取限制过程细节和局部数据结构的存取限制 盈伎坚无仕乃蝗莹漳凿螺宏块琼逊春扭憨混瞻悔陌睬区消知硕悍佑赵锄星第0章设计工程第0章设计工程23复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块独立模块独立 模块独立:模块完成独立的功能并且与:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽和其他模块的接口简单,符合信息隐蔽和信息局部化原则,模块间关联和依赖程信息局部化原则,模块间关联和依赖程度尽可能小度尽可能小 模块独立的重要性模块独立的重要性功能被划分,并且接口被简化,所以具有有效模块化的软件
22、更易于开发 由于因设计和编码修改引起的副作用受到局限,错误传播被减小,并且模块复用成为可能,所以独立的模块更易于维护和测试 椒怨奠檄伶琉但烃粪濒孩羌危哥夷忱些酗镁宵讹墅先撮续厩增悼售矛趣骇第0章设计工程第0章设计工程24复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块独立模块独立模块的独立性可以由两项指标来衡量:模块的独立性可以由两项指标来衡量:内聚度与与耦合度 内聚(cohesion)是一个模块内部各个元是一个模块内部各个元素彼此结合的紧密程度的度量素彼此结合的紧密程度的度量 耦合(coupling)是模块之间的相对独立性是模块之间的相对独立性(互相连接的紧
23、密程度)的度量(互相连接的紧密程度)的度量 嫂堡惑尿应躺沮昧陨争班栗窒否羞井亲笺咖鸣料鸟枫证弹钒尘颤尸畴梯倍第0章设计工程第0章设计工程25复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内聚内聚 一般模块的内聚性分为七种类型一般模块的内聚性分为七种类型 俗谊茧震政囊吨谈沫瓦鲁惫牧焙邹龟良钝也土噶釜杏歇里褐阅蜗咆蝴袜夜第0章设计工程第0章设计工程26复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内聚内聚1)巧合内聚(偶然内聚):将几个模块中没有:将几个模块中没有明确表现出独立功能的相同程序代码段独立出明确表现出独立功能的相同程序代码
24、段独立出来建立的模块称为巧合内聚模块。来建立的模块称为巧合内聚模块。2)逻辑内聚 :指完成一组逻辑相关任务的模:指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制型参块,调用该模块时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。数来确定该模块应执行哪一种功能。3)时间内聚:指一个模块中的所有人物必须在:指一个模块中的所有人物必须在同一时间段内执行。例如初始化模块和终止模同一时间段内执行。例如初始化模块和终止模块。块。五丑扩坷颗芦佐慢霹询类姚倪澈臻且名建馒死柳兑赞呢岛领唁穴尧剧艾累第0章设计工程第0章设计工程27复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程
25、课程软件工程课程内聚内聚4)过程内聚 :指一个模块完成多个任务,这:指一个模块完成多个任务,这些任务必须按指定的过程(些任务必须按指定的过程(procedural)执行。)执行。5)通信内聚 :指一个模块内所有处理元素都:指一个模块内所有处理元素都集中在某个数据结构的一块区域中。集中在某个数据结构的一块区域中。6)顺序内聚:指一个模块完成多个功能,这些:指一个模块完成多个功能,这些功能又必须顺序执行。功能又必须顺序执行。7)功能内聚 :指一个模块中各个部分都是为:指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不完成一项具体功能而协同工作,紧密联系,不可分割的。可分割的。哮散悄
26、刨貉涛睦凋迪缔诫碎春甘蛆骄庞妄靶卒惋啪懊埔游切足弧柜涌丢熬第0章设计工程第0章设计工程28复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程耦合耦合 一般模块之间可能的耦合方式有七种类型一般模块之间可能的耦合方式有七种类型 放贮券演媚孕鼓午提篇筋奸瑰桶揉禽卸第镭藻生摆殃务钞韧碰琢脖腆类鳖第0章设计工程第0章设计工程29复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程耦合耦合1)内容耦合 :如果一个模块直接访问另一个模块的内部数:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块内部;据;或者一个模块不通过正
27、常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。多个入口,则两个模块之间就发生了内容耦合。2)公共耦合 :若一组模块都访问同一个公共数据环境,则:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。是全局数据结构、共享的通信区、内存的公共覆盖区等。3)外部耦合 :指模块间通过软件之外的环境联结(如:指模块间通过软件之外的环境联结(如I/O将模块耦合到特
28、定的设备、格式、通信协议上)时,称将模块耦合到特定的设备、格式、通信协议上)时,称为外部耦合。为外部耦合。匣恕函将物屡袖胀拄餐搏戴洪欧谣贱圆性宠腮行蹄霖怕构匝日梧疯挝泉瑰第0章设计工程第0章设计工程30复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程耦合耦合4)控制耦合:如果一个模块传送给另一个模块:如果一个模块传送给另一个模块的参数中包含了控制信息,该控制信息用于控的参数中包含了控制信息,该控制信息用于控制接收模块中的执行逻辑,则称为控制耦合。制接收模块中的执行逻辑,则称为控制耦合。5)标记耦合:两个模块之间通过参数表传递一:两个模块之间通过参数表传递一个数据结
29、构的一部分(如某一数据结构的子结个数据结构的一部分(如某一数据结构的子结构),就是标记耦合。构),就是标记耦合。6)数据耦合:两个模块之间仅通过参数表传递:两个模块之间仅通过参数表传递简单数据,则称为数据耦合。简单数据,则称为数据耦合。7)非直接耦合 :如果两个模块之间没有直接:如果两个模块之间没有直接关系,即它们中的任何一个都不依赖于另一个关系,即它们中的任何一个都不依赖于另一个而能独立工作,这种耦合称为非直接耦合。而能独立工作,这种耦合称为非直接耦合。难萝优境画试榔眠共摆挫韭喇纠矮尖糊拂傣吗愉柑佣宏花荷窜茹丢哥挨繁第0章设计工程第0章设计工程31复旦大学计算机科学与工程系复旦大学计算机科学
30、与工程系 软件工程课程软件工程课程模块之间的连接越紧密,联系越多,耦模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱合性就越高,而其模块独立性就越弱 一个模块内部各个元素之间的联系越紧一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高密,则它的内聚性就越高 模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合的模块的模块 悬蝗刚趴摊唐囚虏屹缠阴擒课微算疡钮树竹棋霹贴猿岛桑尤追荐寇变弦散第0章设计工程第0章设计工程32复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设
31、计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审门漳虞佛纵述拜击范栋娱啊亲审柠衰愈狡杯抄消小愈德梧燎漓姐盔暇翱剑第0章设计工程第0章设计工程33复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件体系结构设计软件体系结构设计 软件体系结构关注系统的一个或多个结构,软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性包含软件构件、这些构件的对外可见的性质以及它们之间的关系质以及它们之间的关系 Bass提出体系结构重要的三个关键理由:提出体系结构重要的三个关键理由:方便利益相关人员的交流
32、有利于系统设计的前期决策 可传递的系统级抽象 津矣拐埂笨况份筒鞠哭星踊替啪叙闸坚趣截报象枯胰替责窘谍拂自邢傍繁第0章设计工程第0章设计工程34复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程体系结构发展过程体系结构发展过程 常见的软件体系结构常见的软件体系结构单主机结构单主机结构C/S(Client/Server)结构)结构B/S(Browser/Server)结构)结构 棵刃扁验两淫岸澜半傈密涌冕辫显豺说盒械痰百绎垂澡缎露牡碎煤袄嫂尊第0章设计工程第0章设计工程35复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件体系结构的风格软
33、件体系结构的风格 绝大多数可以被归类为相对小数量的体绝大多数可以被归类为相对小数量的体系结构风格之一系结构风格之一 每种风格描述一种系统范畴,范畴包括:每种风格描述一种系统范畴,范畴包括:一些实现系统所需的功能的部件(如数据库、计算模块);一组用来连接部件“通信、协调和合作”的“连接子”;定义部件之间怎样整合的系统约束;使设计者能够理解整个系统属性并分析已知属性的语义模型。 哈弘昨渺巢拄夕阜匣腔筹酵奈坝该砌鳃乾艾细班道红浊查泼免星申合愈卿第0章设计工程第0章设计工程36复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据为中心体系结构数据为中心体系结构 一些数据(
34、比如一个文件或者数据库)保一些数据(比如一个文件或者数据库)保存在整个结构的中心,并且被其他部件频存在整个结构的中心,并且被其他部件频繁地使用、添加、删除、或者修改繁地使用、添加、删除、或者修改 圈喉篓罐美浩刷镐秘律写丽当枚鸭茎橙坛疟铸碰爷寥誊普谆冒匀陕私取写第0章设计工程第0章设计工程37复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据流风格的体系结构数据流风格的体系结构 这种结构适用于输入数据被一系列的计算这种结构适用于输入数据被一系列的计算或者处理部件变换成输出数据。或者处理部件变换成输出数据。侄胶饥房晌吁焦娩吗始户器募票棉恳尺反呈荚苦省孩衬饮谚揭怎是微
35、漫腰第0章设计工程第0章设计工程38复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程调用和返回风格的体系结构调用和返回风格的体系结构 这种风格使一个软件设计者设计出非常容这种风格使一个软件设计者设计出非常容易修改和扩充的体系结构。易修改和扩充的体系结构。包含:包含:主程序/子程序风格体系结构和和远程过程调用风格的体系结构 陈嗅不伞墨咱涝上覆家雄分位培私衬厌增钙钾金狗然毛魏泻司锻贩针往嫉第0章设计工程第0章设计工程39复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在这里要了解几个概念:在这里要了解几个概念:程序结构的深度程序结构的深度
36、:程序结构的层次数称为结构的深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度。程序结构的宽度程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。模块的扇入和扇出模块的扇入和扇出:扇出表示一个模块直接调用(或控制)的其它模块数目。扇入则定义为调用(或控制)一个给定模块的模块个数。多扇出意味着需要控制和协调许多下属模块。而多扇入的模块通常是公用模块。耙襄涉活愉符岿滞仙郧庙艘氖忘卵哑模俯瞄拢坐奎荡撤惶熬宾檀压赋熬久第0章设计工程第0章设计工程40复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程面向对象风格的体系结构面向对象风格的体系结构 系统部件
37、封装数据和操作数据的系统部件封装数据和操作数据的方法。方法。部件之间的交互和协调通过消息部件之间的交互和协调通过消息来传递。来传递。 谊谅万症瞩列厘烤鞠恕挠沮饥悍坪斑嗓沉五那谬经么溪阴岩闪依里层儒箩第0章设计工程第0章设计工程41复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程层次式风格的体系结构层次式风格的体系结构 在这种结构中,定义不同的层次,每层都在这种结构中,定义不同的层次,每层都完成了相对外层更靠近机器指令的操作完成了相对外层更靠近机器指令的操作娱优丧跑缀囊范旦汞哭廖被疯曾熟翔倪逛狡蚂敬帕芽恫帖锰巾蛊拓阁帝植第0章设计工程第0章设计工程42复旦大学计算机
38、科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程评估可选的体系结构评估可选的体系结构 对于同一个软件需求,由于各种设计方法对于同一个软件需求,由于各种设计方法的原理不同,会导出不同的软件结构。的原理不同,会导出不同的软件结构。 同一问题的不同软件结构:同一问题的不同软件结构:描把着物酥欢蔗埋孺搞祭楞鲤足纲随孤姚驾方忿祥蘑楼道浩抗爷窘朝立扫第0章设计工程第0章设计工程43复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程ATAM(architecture trade-off analysis method) 1)定义应用场景(定义应用场景(scenar
39、ios):通过):通过use case图来从用户的角度表现系统。图来从用户的角度表现系统。2)得出需求、约束和环境描述:这是需求工程得出需求、约束和环境描述:这是需求工程的一部分,用以确定所有客户方关心的问题都的一部分,用以确定所有客户方关心的问题都被列出。被列出。3)描述能处理上述情境和需求的体系结构风格。描述能处理上述情境和需求的体系结构风格。4)单独地评价系统的各项性能。针对体系结构单独地评价系统的各项性能。针对体系结构设计的性能包括:可靠性,性能、安全性,可设计的性能包括:可靠性,性能、安全性,可维护性,灵活性,可测试性,可移植性,可重维护性,灵活性,可测试性,可移植性,可重用性和互操
40、作性等。用性和互操作性等。诱渍哑汽坯倪跑菲岿闰交烬勉獭钮冶般欲彬稿暇彝统儒淬蜗篱乌羹船嗽老第0章设计工程第0章设计工程44复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程ATAM(architecture trade-off analysis method)5)针对不同的架构形式,评价第针对不同的架构形式,评价第4步提到的这些性能的敏步提到的这些性能的敏感程度。可以通过这样的方法来评价:在整个架构中做感程度。可以通过这样的方法来评价:在整个架构中做一些小的变更,分析并确定上诉性能有没有很敏感的变一些小的变更,分析并确定上诉性能有没有很敏感的变化。那些在体系结构改动
41、中受到较大影响的性能被称为化。那些在体系结构改动中受到较大影响的性能被称为敏感点(敏感点(sensitive point)。)。6)通过第通过第5步的敏感度分析来评价第三步中提出的那些体步的敏感度分析来评价第三步中提出的那些体系结构。系结构。SEI描述的方法如下:当一个架构的敏感点被描述的方法如下:当一个架构的敏感点被确定,我们需要找到在系统中最需要权衡利弊的因素确定,我们需要找到在系统中最需要权衡利弊的因素(trade-off point)。权衡因素就是指改变架构中的这)。权衡因素就是指改变架构中的这项内容系统的很多性能就会发生敏感的变化。比如说,项内容系统的很多性能就会发生敏感的变化。比如
42、说,一个一个client-server结构的系统的表现性能和系统中结构的系统的表现性能和系统中server的数量是息息相关的(比如增加的数量是息息相关的(比如增加server的数量,的数量,一定程度上系统的表现性能就会提高)一定程度上系统的表现性能就会提高)这样的话,这样的话,server的数量就是这个架构中的平衡点。的数量就是这个架构中的平衡点。部娠味狙腆并硫辜滁语荒胃趾亭惟备用寥崎罪礁我随妨雾卞守高婆椅每洼第0章设计工程第0章设计工程45复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在进行软件体系结构设计时,可以参考如下规在进行软件体系结构设计时,可以参考如
43、下规则:则: (1) 改进软件结构提高模块独立性(2)模块适当的深度、宽度、扇出和扇入(3)模块判断作用范围应在其控制作用范围内(4)力争降低模块接口的复杂度(5)设计单入口单出口的模块(6)模块功能应该是可以预测的模块大小适中(7)一般一个模块包含的语句在3050条左右较好。(8)一个设计好的软件结构,通常顶层扇出比较高,中层扇出比较少,底层有高扇入。杨揣另途住茫确贫称机步墙惰野韵溃默蓑全赠充洼巢部演卡彪怯鬼脏种老第0章设计工程第0章设计工程46复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原
44、则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审鬃哀剪应丹况筑摧梁搭幕嫂熔矮介刺申奔咋搀吓耗郎闻挟益感拟著箩议棠第0章设计工程第0章设计工程47复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部件级设计技术部件级设计技术 在结构化分析和设计方法时部件往往被称在结构化分析和设计方法时部件往往被称为为模块在面向对象分析和设计时部件被称为类,在面向对象分析和设计时部件被称为类,在基于构件的开发方法中,部件被称为在基于构件的开发方法中,部件被称为构件。 韧奈柒赛美伊曲更逃礁淳奏女呻阜孜欢臂手萎比蠕苑只腮秩拱考庙涨岔胃第
45、0章设计工程第0章设计工程48复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部件级设计技术部件级设计技术 在部件级设计阶段,主要完成如下工作:在部件级设计阶段,主要完成如下工作:(1)为每个部件确定采用的算法,选择某种适当的工具表达算法的过程,编写部件的详细过程性描述; (2)确定每一部件内部使用的数据结构; (3)在部件级设计结束时,应该把上述结果写入部件级设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。 铰绷载籍喜羔坦辖妨饭褐涵宴叼嚷扯陕局岗荆娠丧浙贫陛逛尚祖出陌绿娜第0章设计工程第0章设计工程49复旦大学计算机科学与工程系复旦大学
46、计算机科学与工程系 软件工程课程软件工程课程结构化程序设计方法结构化程序设计方法 一种较为流行的定义是:一种较为流行的定义是:“如果一个程序如果一个程序的代码块仅仅通过顺序、选择和循环这三的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连结,并且每个代码种基本控制结构进行连结,并且每个代码块只有一个入口和一个出口,则称这个程块只有一个入口和一个出口,则称这个程序是结构化的序是结构化的”。 随着面向对象和软件复用等新的软件开发随着面向对象和软件复用等新的软件开发方法和技术的发展,更现实、更有效的开方法和技术的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方发途径可能是自顶向下和
47、自底向上两种方法有机的结合。法有机的结合。 逮泵拥持庄缮斩翻鄂悬疵黔矩眉闯漂嫉怔蚀届妻屯艺疡棠子稍荤况谆挽玛第0章设计工程第0章设计工程50复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程图形表示法图形表示法 程序流程图 N-S图 PAD 峭淬欢蔓脾劳涩红哇清浮蔫圆畦弗茬氟悠廉莆裕败碉春沙偏告秦致溪抒涡第0章设计工程第0章设计工程51复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程程序流程图程序流程图 程序流程图独立于任何一种程序设计语言,程序流程图独立于任何一种程序设计语言,比较直观、清晰、易于学习掌握比较直观、清晰、易于学习掌握
48、为使用流程图描述结构化程序,必须限制为使用流程图描述结构化程序,必须限制流程图只能使用五种基本控制结构流程图只能使用五种基本控制结构 者秽候举豹驯罪醛布储铭潘炯俩就谐幌送剖伴漾铂郧签外蹦擎褒碉见梁棺第0章设计工程第0章设计工程52复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程控制结构相互组合和嵌套的实例控制结构相互组合和嵌套的实例 卉酉矾袍毫酚忧披肆巨辽仍勉戒郸秸滔鸦末宰度锤畔村涣邯载凋绷拔许玫第0章设计工程第0章设计工程53复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程N-S图图 Nassi和和Shneiderman 提出了一种
49、符合结提出了一种符合结构化程序设计原则的图形描述工具,叫做构化程序设计原则的图形描述工具,叫做盒图,也叫做盒图,也叫做N-S图图 五种基本控制结构五种基本控制结构 佰哑乒临陵谩悸坐琴岭戏涩近喊踩瘟蒸棍抒钉赃十钞培兢佣库狸奏操盎泞第0章设计工程第0章设计工程54复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程控制结构相互组合和嵌套的实例控制结构相互组合和嵌套的实例隘踩揣剪僚迎切按磷肖乓指滤怔手臂递殆铂苹烃稀屑竿损渡孪孟奉诌得跪第0章设计工程第0章设计工程55复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PAD PAD是是Problem
50、 Analysis Diagram的缩的缩写写 ,由程序流程图演化而来,由程序流程图演化而来五种基本控制结构五种基本控制结构 竟傍卡到耙荚旺帘禾红抠盾钝透遏读硒烧缓弛恬励而胃筷肋成妈衬伍襟淡第0章设计工程第0章设计工程56复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PAD实例实例 奎响俭育哭秤范露严遗孟箍卖瞒木伙袒瞥迭招由皇进乞杂燥扮婶吞饺傈莽第0章设计工程第0章设计工程57复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程判定表判定表 当算法中包含多重嵌套的条件选择时,用当算法中包含多重嵌套的条件选择时,用程序流程图、程序流程图、
51、N-S图或图或PAD都不易清楚地都不易清楚地描述。描述。然而,然而,判定表却能清晰地表达复杂的条件却能清晰地表达复杂的条件组合与应做动作之间的对应关系。组合与应做动作之间的对应关系。图图4-11的例子的例子 ,把多分支判断改为两分,把多分支判断改为两分支判断支判断 扛婿使丑泼氓胳仔假胞克宣舌锣裳橱盏波崔忿隶狠嘿树秒错盅束榴弧先攻第0章设计工程第0章设计工程58复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程不包含多分支结构的流程图实例不包含多分支结构的流程图实例 蛔础王吝懒牧繁踏霸佛篮帐怒矢坎遥卸距眠纷旧累拙透斗锥古伞蛇纶共欢第0章设计工程第0章设计工程59复旦大
52、学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程反映程序逻辑的判定表反映程序逻辑的判定表 孟批校爬抠谬铱链科抄粉腥敲憋钢桨当迪须连踢役赞稻腹葛朝瘪双臼走奠第0章设计工程第0章设计工程60复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程判定表的优点是能够简洁,无二义性地判定表的优点是能够简洁,无二义性地描述所有的处理规则。描述所有的处理规则。但判定表表示的是静态逻辑,是在某种但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结能表达加工的顺序,也不能表达循环结
53、构构 壕厌耳镭贮烈尾您告鳃鞠猖导锈痢怠纽矩兴倒役蝇脱承瞧父潮妈癸朋点碟第0章设计工程第0章设计工程61复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计性语言设计性语言PDL PDL(Program Design Language)是一是一种用于描述功能部件的算法设计和处理种用于描述功能部件的算法设计和处理细节的语言,称为细节的语言,称为设计性语言。 它是一种伪码。一般地,伪码的语法规它是一种伪码。一般地,伪码的语法规则分为则分为“外语法外语法”和和“内语法内语法” 外语法应当符合一般程序设计语言常用语句的语法规则;内语法可以用英语中一些简单的句子、短语和通用的
54、数学符号,来描述程序应执行的功能 讶走续甸嚷冲鳃很附搐萧月秦烬怨串螟航呐宿核射冲祷砌署全符密炊钱伊第0章设计工程第0章设计工程62复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PDL的使用实例的使用实例PROCEDURE spellcheck IS 查找错拼的单词查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词把整个文档分离成单词 lood up words in dictionary 在字典中查这些单词在字典中查这些单词 display words which are not in dictio
55、nary 显示字典中查不到的单显示字典中查不到的单词词 create a new dictionary 造一新字典造一新字典 END spellcheck果贯他搭仁慰钩或力痢腔琶途絮凰箔冉矛锰蓉橡赴今图痉嫌甜嘻馏彰兜虐第0章设计工程第0章设计工程63复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PDL特点特点1.有固定的关键字外语法,提供全部结构化控制结构、数有固定的关键字外语法,提供全部结构化控制结构、数据说明和部件特征。属于外语法的关键字是有限的词汇据说明和部件特征。属于外语法的关键字是有限的词汇集,它们能对集,它们能对PDL正文进行结构分割,使之变得易于理
56、正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词解。为了区别关键字,规定关键字一律大写,其它单词一律小写。一律小写。2.内语法使用自然语言来描述处理特性。内语法比较灵活,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。主要精力放在描述算法的逻辑上。3.有数据说明机制,包括简单的(如标量和数组)与复杂有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。的(如链表和层次结构)的数据结构。4.有子程序定义与调用机
57、制,用以表达各种方式的接口说有子程序定义与调用机制,用以表达各种方式的接口说明。明。寇跳摊魁溜告裁滨茄扭室犁蒲速姆磷鸡香奠浅译丑散鸳谣陷市灭更境玛麓第0章设计工程第0章设计工程64复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审憎话诸膛傅杯肮时臆怀阅宫嚎件敲埃属滦蹲俐镣摹媚虽杭蟹卵糜税虞你像第0章设计工程第0章设计工程65复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程
58、课程设计规约设计规约 . 工作范工作范围A. 系系统目目标 B. 运行运行环境境C. 主要主要软件需求件需求D. 设计约束束限制限制. 体系体系结构构设计A. 数据流与控制流复数据流与控制流复审 B. 导出的程序出的程序结构构C. 功能与程序交叉索引功能与程序交叉索引 . 数据数据设计A. 数据数据对象与形成的数据象与形成的数据结构构 B. 文件和数据文件和数据库结构构 文件的文件的逻辑结构构 文件文件逻辑记录描述描述 访问方式方式 C. 全局数据全局数据D. 文件文件数据与程序交叉索引数据与程序交叉索引 . 接口接口设计A. 人机界面人机界面规格格说明明 B. 人机界面人机界面设计规则 C.
59、 外部接口外部接口设计 外部数据接口外部数据接口 外部系外部系统或或设备接口接口 D. 内部接口内部接口设计规则扣窿瓶坞樟敷劣从溶屯码造迄茂聊艇襟芒趋糜箕汤稼类绎穷炳钨誊儡掩菊第0章设计工程第0章设计工程66复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程.各部件的各部件的过程程设计A. 处理与算法描述理与算法描述 B. 接口描述接口描述C. 设计语言言(或其它或其它)描述描述D. 使用的部件使用的部件E. 内部程序内部程序逻辑描述描述F. 注注释约束束限制限制 . 运行运行设计A. 运行部件运行部件组合合 B. 运行控制运行控制规则C. 运行运行时间安排安排.
60、出出错处理理设计A. 出出错处理信息理信息 B. 出出错处理理对策策 设置后置后备 性能降性能降级 恢复和再启恢复和再启动. 安全保密安全保密设计. 需求需求设计交叉索引交叉索引. 测试部分部分A. 测试方方针 B. 集成策略集成策略C. 特殊考特殊考虑. 特殊注解特殊注解. 附附录乾胖勃肘荡诽匙铭彭回削笨大贱民锑僧统诧辱郁孙屑沫锻尝奸吾车帘稀富第0章设计工程第0章设计工程67复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审设计评审 软件设计的最终目标是要取得最佳方软件设计的最终目标是要取得最佳方案案 “最佳最佳”是指在所有候选方案中,就是指在所有候选方案
61、中,就节省开发费用,降低资源消耗,缩短节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的生产率、较高的可靠性和可维护性的方案的方案 醚样鸦逾酚条共娘颈希吾抉骏答克煮似郊林惑瞧验豺迈腾汹副捻洱旗伐兼第0章设计工程第0章设计工程68复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审的内容设计评审的内容 1可追溯性:即分析该软件的系统结构、子系统结构,:即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软确认该软件设计是否覆盖了所有已确定的软件需求,软件
62、每一成分是否可追溯到某一项需求。件每一成分是否可追溯到某一项需求。 2接口:即分析软件各部分之间的联系,确认该软件:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。部件是否满的内部接口与外部接口是否已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其控制足高内聚和低耦合的要求。部件作用范围是否在其控制范围之内。范围之内。3风险:即确认该软件设计在现有技术条件下和预算:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。范围内是否能按时实现。4实用性:即确认该软件设计对于需求的解决方案是:即确认该软件设计对于需求的解决方案是否实用。否实用。祈割
63、业快喻撩沿涎浅店陕市右堤拔艘唱父售蔽埂碳童终弗更砸车碘绽橱锨第0章设计工程第0章设计工程69复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审的内容(续)设计评审的内容(续)5技术清晰度:即确认该软件设计是否以一种易于翻:即确认该软件设计是否以一种易于翻译成代码的形式表达。译成代码的形式表达。6可维护性:从软件维护的角度出发,确认该软件设:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。计是否考虑了方便未来的维护。7质量:即确认该软件设计是否表现出良好的质量特:即确认该软件设计是否表现出良好的质量特征。征。8各种选择方案:看是否考虑过其它方案,
64、比较各种:看是否考虑过其它方案,比较各种选择方案的标准是什么。选择方案的标准是什么。9限制:评估对该软件的限制是否现实,是否与需求:评估对该软件的限制是否现实,是否与需求一致。一致。10 其它具体问题:对于文档、可测试性、设计过程等:对于文档、可测试性、设计过程等等进行评估。等进行评估。个荤恳尹掇泡膳五谱胡讳日褒贷输谰妇差拥多范压咨氰斩蜗绅葱讳推吏忌第0章设计工程第0章设计工程70复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审设计评审评审分评审分正式评审和和非正式评审两种两种 正式评审除软件开发人员外,还邀请用户除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式代表和领域专家参加,通常采用答辩形式 非正式评审多少有些同行切磋的性质,不多少有些同行切磋的性质,不拘泥于时间和形式拘泥于时间和形式 苟辆践蚜镭桅勇普懒彼睁拭氛暖瞄航张扮昂笼可肠厂腮当拽荫每僻磋泪臆第0章设计工程第0章设计工程71复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程