软件工程导论第五版

上传人:hs****ma 文档编号:568770667 上传时间:2024-07-26 格式:PPT 页数:705 大小:3.51MB
返回 下载 相关 举报
软件工程导论第五版_第1页
第1页 / 共705页
软件工程导论第五版_第2页
第2页 / 共705页
软件工程导论第五版_第3页
第3页 / 共705页
软件工程导论第五版_第4页
第4页 / 共705页
软件工程导论第五版_第5页
第5页 / 共705页
点击查看更多>>
资源描述

《软件工程导论第五版》由会员分享,可在线阅读,更多相关《软件工程导论第五版(705页珍藏版)》请在金锄头文库上搜索。

1、软件工程软件工程(SoftwareEngineering)信息学院信息学院此填保错肪植瞳迟朽魄农袁蝗蠢肠獭跑侵猴比冗涣违剪汕确胁尝咆炮躁态软件工程导论第五版软件工程导论第五版第第1章:软件工程学概述章:软件工程学概述1.1软件危机软件危机60年年代代中中期期以以前前:通通用用硬硬件件相相当当普普遍遍,软软件件却却是是为为某某个个具体的应用而编写的。具体的应用而编写的。60年代中到年代中到70年代中:软件作坊。年代中:软件作坊。鳃涩难烬僧象姓痉炊提撂仿胖编蝗娘寨晚啦精耻轻康庚菇绵常十位曲棉说软件工程导论第五版软件工程导论第五版软件危机软件危机软件危机软件危机:计算机软件的开发和维护过程中所遇:计

2、算机软件的开发和维护过程中所遇:计算机软件的开发和维护过程中所遇:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都到的一系列严重问题。(正常、不正常运行软件都到的一系列严重问题。(正常、不正常运行软件都到的一系列严重问题。(正常、不正常运行软件都具有这种问题)具有这种问题)具有这种问题)具有这种问题)1.1.1软件危机的介绍软件危机的介绍甥蛰杏养邑软酉志茎笼诊析秘爆热壬彰踩徽躲抡形礼汉己鞘搞浑福抖勉绞软件工程导论第五版软件工程导论第五版1 1)对软件开发成本和进度的估计常常很不准确;)对软件开发成本和进度的估计常常很不准确;)对软件开发成本和进度的估计常常很不准确;

3、)对软件开发成本和进度的估计常常很不准确;2 2)用户对完成的软件系统不满意的现象经常发生;)用户对完成的软件系统不满意的现象经常发生;)用户对完成的软件系统不满意的现象经常发生;)用户对完成的软件系统不满意的现象经常发生;3 3)软件产品的质量往往靠不住;)软件产品的质量往往靠不住;)软件产品的质量往往靠不住;)软件产品的质量往往靠不住; 软件危机的典型表现:软件危机的典型表现:植有猎膘渔拿昂蜜奸欣驯付彻腹盔歌鼓亩族验龟盘扶嚣庞糟轧入州辣借利软件工程导论第五版软件工程导论第五版4 4)软件常常是不可维护的;)软件常常是不可维护的;)软件常常是不可维护的;)软件常常是不可维护的;5 5)软件通

4、常没有适当的文档资料;)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;6 6)软软软软件件件件成成成成本本本本在在在在计计计计算算算算机机机机系系系系统统统统总总总总成成成成本本本本中中中中所所所所占占占占的的的的比比比比例逐年上升;例逐年上升;例逐年上升;例逐年上升;7 7)软件开发生产率提高的速度跟不上计算机)软件开发生产率提高的速度跟不上计算机)软件开发生产率提高的速度跟不上计算机)软件开发生产率提高的速度跟不上计算机应用的发展趋势。应用的发展趋势。应用的发展趋势。应用的发展趋势。 溺递喂烧栅肠设北霉婉靶叶五豪睫廖咀帐苇泛恿悟栽洞雀帅痹闸遇樱准富

5、软件工程导论第五版软件工程导论第五版1.1.2产生软件危机的原因产生软件危机的原因1)软件本身特点造成;)软件本身特点造成;2)软件开发与维护的方法不正确。)软件开发与维护的方法不正确。主要表现:主要表现:(a)忽视软件需求分析;)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;)认为软件开发就是写程序并使之运行;(c)轻视软件维护;)轻视软件维护;融衰匈柯菜粥威酱痞酮置骂渗膨喊蛔迪航耀俊依自枪货沁馒偏挤厄吏惨傣软件工程导论第五版软件工程导论第五版在软件开发的不同阶段进行修改需要付出的在软件开发的不同阶段进行修改需要付出的代价很不相同:代价很不相同:高高中中低低早期早期中期中期后期后

6、期软件开发时期软件开发时期代价代价引入同一修改的代价随时间变化的趋势引入同一修改的代价随时间变化的趋势杜鸥停教舒管倔鼓奢回搪阿发叠绦湛供莱蹋墩件猴亦踊桑骨寡讽恳插勇伟软件工程导论第五版软件工程导论第五版1)推推广广使使用用在在实实践践中中总总结结出出来来的的开开发发软软件件的的成成功功技技术术和和方方法法,并并研研究究探探索索更更有有效效的的技技术术和和方法;方法;2)开发和使用更好的软件工具;)开发和使用更好的软件工具;3)良好的组织管理措施。)良好的组织管理措施。1.1.3解决软件危机的途径解决软件危机的途径哮篮楼售缅轰潮断凋踞河层迂谐稚他公冰嘿胸聚匝和统局洽拽愿意矿柑圣软件工程导论第五版

7、软件工程导论第五版为为了了解解决决软软件件危危机机产产生生的的问问题题,软软件件工工程程与与方方法法学学逐逐渐渐形形成成,然然后后出出现现了了两两个个相相互互相相承承又又各有侧重的学科:各有侧重的学科:1)软软件件工工程程学学:主主要要应应用用工工程程的的方方法法和和技技术术研研究究软软件件开开发发与与维维护护的的方方法法、工工具具和和管管理理的的一一门交叉学科。门交叉学科。2)程序设计方法学程序设计方法学:主要应用数学的方法研:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的学究程序的性质以及程序设计的理论和方法的学科。科。苯曼荡挂碴架仍氯役信堰装鸽匙给决烛满拌嘲溅执喂山果摆珊概冀

8、卫缔棘软件工程导论第五版软件工程导论第五版1.2软件工程软件工程1.2.1软件工程的介绍软件工程的介绍1968年年NATO会会议议:软软件件工工程程就就是是为为了了经经济济地地获获得得可可靠靠的的且且能能在在实实际际机机器器上上有有效效地地运运行行的的软软件件,而建立和使用完善的工程原理。而建立和使用完善的工程原理。1993年年IEEE:软软件件工工程程是是(1)把把系系统统的的、规规范范的的、可可度度量量的的途途径径应应用用于于软软件件开开发发、运运行行和和维维护护过程;(过程;(2)研究()研究(1)中提到的途径。)中提到的途径。狼淑承扩胚标涕砾蛾焦早横施摄足贬勿下囚稿砒颤股嗽语读讥高谍楚

9、鱼挫软件工程导论第五版软件工程导论第五版1.软件工程关注于大型程序的构造;软件工程关注于大型程序的构造;2.软件工程的中心课题是控制复杂性;软件工程的中心课题是控制复杂性;3.软件经常变化;软件经常变化;4.开发软件的效率非常重要;开发软件的效率非常重要;5.和谐地合作是软件开发的关键;和谐地合作是软件开发的关键;6.软件必须有效地支持它的用户;软件必须有效地支持它的用户;7.在软件工程领域中是由具有一种文化背景的在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。人替具有另一种文化背景的人创造产品。软件工程的本质特性:软件工程的本质特性:陕彬爪胶期听思路括携柒裤涩岗隙茵

10、泄襟宽祁悯香降逐鸟庆御给捉柜焰美软件工程导论第五版软件工程导论第五版1.2.2软件工程的基本原理软件工程的基本原理1.用分阶段的生命周期计划严格管理;用分阶段的生命周期计划严格管理;2.坚持进行阶段评审;坚持进行阶段评审;3.实行严格的产品控制;实行严格的产品控制;4.采用现代程序设计技术;采用现代程序设计技术;5.结果能清楚地审查;结果能清楚地审查;6.开发小组的人员应该少而精;开发小组的人员应该少而精;7.承认不断改进软件工程实践的必要性。承认不断改进软件工程实践的必要性。悟度兆沿摹枢赃救赌躇丧煮比缨倾昼浪痔苍御啊霍涸熬猪掏视算曰恳髓诅软件工程导论第五版软件工程导论第五版1.2.3软件工程

11、方法学软件工程方法学通常把在软件生命周期全过程中使用的一整套通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(技术方法的集合称为方法学(Methodology),),也称为范型(也称为范型(Paradigm)。)。软件工程方法学的软件工程方法学的3要素:方法、工具和过程要素:方法、工具和过程摈禾条举卯哲桅认控搓跋臭胃抨睹焊跋伊徽铅陋孜圈振唆旦纱嫌涯烫局莲软件工程导论第五版软件工程导论第五版1.传统方法学传统方法学也称为生命周期方法学或结构化范型。也称为生命周期方法学或结构化范型。结构化方法(结构化方法(StructureMethod)有:)有:1)结构化设计方法()结构化设计方

12、法(SD););2)结构化分析方法()结构化分析方法(SA););3)结构化分析与设计技术()结构化分析与设计技术(SADT)4)JACKSON方法方法5)WARNIER方法方法俞晒父革爪锦米烩尖椿拱褥炭孽循腆属洒拎扇始簇郁备尝哆掳渝愁启途醉软件工程导论第五版软件工程导论第五版2.面向对象方法学面向对象方法学把数据和对数据的操作紧密结合起来的方法,把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。模拟人类认识世界解决问题的方法和过程。面向对象的方法面向对象的方法=对象(属性与服务的封装)对象(属性与服务的封装)+分类分类+继承继承+通过消息的通讯通过消息的通讯臼冠置

13、痕编腮并皂缓酗证佬磅奄磋寺挤甘嗜诲斡入迄失早峭寞涌卞圈倪幕软件工程导论第五版软件工程导论第五版1)适适用用于于实实时时事事物物处处理理系系统统的的有有限限状状态态机机方方法法(FSM););2)适用于并发软件系统的)适用于并发软件系统的PETRI网方法;网方法;3)以数学概念和理论为基础的形式化方法,如)以数学概念和理论为基础的形式化方法,如 SDC公司的形式化开发方法公司的形式化开发方法FDM:(FormalDevelopmentMethodology)IBM公司的维也纳开发方法公司的维也纳开发方法VDM: (ViennaDevelopmentMethod)3.其他开发方法其他开发方法 锥身

14、衔厄吱成邻支归四兜耶觉励蟹俯崩芯拣簧擎蒙乘尤显戌脂撮课卖扯插软件工程导论第五版软件工程导论第五版1.3软件生命周期软件生命周期软件生命周期软件生命周期:指软件从提出到最终被淘汰的这个存在期。指软件从提出到最终被淘汰的这个存在期。隐扩休闻霉仙倘蝉褒逗捞傣袱灶颗韭碎譬察犬鲜恒结丙乐萤酬计蚁议跳蔼软件工程导论第五版软件工程导论第五版软件生命周期组成:软件生命周期组成:1)软件定义;)软件定义;A.问题定义问题定义B.可行性研究可行性研究C.需求分析需求分析2)软件开发;)软件开发;D.总体设计总体设计E.详细设计详细设计F.编码和单元测试编码和单元测试G.综合测试综合测试3)运行维护。)运行维护。陨

15、旺引殉竣谬溉朴做理墓货掳刚诊礼廉婿诈瓷提抬焕匪绽舞懦禽叼免渭河软件工程导论第五版软件工程导论第五版1.问题定义;问题定义;2.可行性研究;可行性研究;3.需求分析;需求分析;4.总体设计(概要设计);总体设计(概要设计);5.详细设计;详细设计;6.编码与单元测试;编码与单元测试;7.综合测试;综合测试;8.维护。维护。软件生命周期各个阶段:软件生命周期各个阶段:擒纽绒酋尹愁诺痊骤蓉厕挤漂惟乔噬辣逻檄押万哉撮厨姑汀枢蛮冀乃有际软件工程导论第五版软件工程导论第五版1.4软件过程软件过程软软件件过过程程:为为了了获获得得高高质质量量软软件件所所需需要要完完成成的的一一系系列列任任务务的的框框架架,

16、它它规规定定了了完完成成各各项项任任务务的的工工作作步骤。步骤。软软件件过过程程(ISO9000):使使用用资资源源将将输输入入转转化化为为输出的活动所构成的系统。输出的活动所构成的系统。输入:如软件需求输入:如软件需求输出:如软件产品输出:如软件产品晦烂网筋粤页丸甸诧叶诉捂逃就膳糠仆菏句方磅尘泻酚跺骏扫诬舆蚀乞酚软件工程导论第五版软件工程导论第五版1.4.1瀑布模型瀑布模型1.阶阶段段间间具具有有顺顺序序性性和和依赖性依赖性2.推迟实现的观点推迟实现的观点3.质量保证的观点质量保证的观点众珊拟懒试戈鞘允筋减拙俏疼赔昌童淘镜慎蓖讥廓引菜偷益平跑隘企典秽软件工程导论第五版软件工程导论第五版优优点

17、点:采采用用规规范范的的方方法法;严严格格规规定定每每个个阶阶段段提提交交的的文文档档;要要求求每每个个阶阶段段交交出出的的产产品品必必须须经经过过验验证。证。啸长炽腥项曲障蠕譬震逮瞧颁肺警节五活寓茎朗甄拓桃硼鸡紊祁锣蹦木曹软件工程导论第五版软件工程导论第五版1.4.2快速原型模型快速原型模型优点优点:不带反馈环,基:不带反馈环,基本上是线性顺序进行。本上是线性顺序进行。名烦鸽性王拎憋嗜班昭鸦芽匪痉座农烤鸿啃肩辫捡罪宪摆撅驹洗瘩拌林奇软件工程导论第五版软件工程导论第五版1.4.3增量模型增量模型优优点点:能能较较短短时时间间内内提提交交可可完完成成部部分分工工作作的的产产品品;可可以以使使用用

18、户有充裕的时间学习和适应新产品。户有充裕的时间学习和适应新产品。玖诲趋把敬篓铸郊输鼓赦惋磨捎糜纪肛棉铅报丘掳充寒佩充讲催忍赣晃鳖软件工程导论第五版软件工程导论第五版一种风险更大的增量模型:一种风险更大的增量模型:印用绵腾石详拐挽舷扮磷耽蔑杯研蝎休酣阳蜀蔽膊揽力糖坞禄烤荫愚芍伟软件工程导论第五版软件工程导论第五版1.4.4螺旋模型螺旋模型可把它看作在每可把它看作在每个阶段之前都增加个阶段之前都增加风险分析的快速原风险分析的快速原型模型。型模型。竭重秽瞩旬旺批劝例郎微捎胡庚啊顾挑焰撅韦榴挚剖霄瑰狠道览吧搅慢语软件工程导论第五版软件工程导论第五版院馆打姓鼓尊簿组都突拓寂眯网那撬肢阑府厦遭篱窖衡裂钒冠

19、忱诛钝刁岔软件工程导论第五版软件工程导论第五版1.4.5喷泉模型喷泉模型典型的面向对象软件典型的面向对象软件开发过程模型之一。开发过程模型之一。杏争糟娶妹睛酚颤梗谬骨噶抱寄装工韶蛛强湘园鼠海度喜楷卡桥截责糠笨软件工程导论第五版软件工程导论第五版1.4.6Rational统一过程统一过程1.RUP软件开发经验软件开发经验(1)迭代式开发)迭代式开发(2)管理需求)管理需求(3)使用基于构件的体系结构)使用基于构件的体系结构(4)可视化建模)可视化建模(5)贯穿于开发过程的软件质量验证)贯穿于开发过程的软件质量验证(6)控制软件变更)控制软件变更稻镭枪旷圭拨屠楚怎庆汐收爸漫砾距盗往戎蜒衔虞耙升明瘴

20、傻扭蜀恰掀眉软件工程导论第五版软件工程导论第五版1.4.7敏捷过程与极限编程敏捷过程与极限编程1.敏捷过程敏捷过程具有高效、快速响应变化的开发过程。具有高效、快速响应变化的开发过程。(1)个体和交互胜过过程和工具;)个体和交互胜过过程和工具;(2)可以工作的软件胜过面面俱到的文档;)可以工作的软件胜过面面俱到的文档;(3)客户合作胜过合同谈判;)客户合作胜过合同谈判;(4)响应变化胜过遵循计划。)响应变化胜过遵循计划。2.极限编程极限编程敏捷过程中最著名的一种,指把好的开发实践运敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。用到极致,多应用于软件需求模糊的场合

21、。颗云券苛钵敖埂仆晕孟绑摈锈虹钻推自黑雀苛抛乐傅修极辰轧谎峻趋榆径软件工程导论第五版软件工程导论第五版1.4.8微软过程微软过程1.微软过程准则微软过程准则2.微软软件生命周期微软软件生命周期(1)规划阶段)规划阶段(2)设计阶段)设计阶段(3)开发阶段)开发阶段(4)稳定阶段)稳定阶段(5)发布阶段)发布阶段3.微软过程模型微软过程模型节驾矽亦疮质绿藤于馏蜕摸兼黑侍卖覆关园月骨告憋掺积焙废明纯剑烁败软件工程导论第五版软件工程导论第五版问问题题定定义义就就是是要要确确定定为为用用户户建建立立什什么么样样的的软软件件系系统统,软软件件叫叫什什么么样样的的名名称称等等等等。“问问题题”是是指软件最

22、基本的问题,如:指软件最基本的问题,如:软件的总体目标什么?软件的总体目标什么?有什么用途?有什么用途?为那些用户设计?为那些用户设计?1.5问题定义阶段问题定义阶段栓购公隋泰煽哥滞嗣结脸啼司仑洋漱乐柄汝砂唤篇爷嗣抉娇站感狙气瑟语软件工程导论第五版软件工程导论第五版问问题题定定义义是是软软件件生生命命周周期期中中时时间间最最短短的的阶阶段段,一一般般都都比比较较简简单单,因因此此在在实实际际开开发发中中它它是是最最容容易被忽视的一个阶段。易被忽视的一个阶段。 这这一一阶阶段段工工作作主主要要由由系系统统分分析析员员来来完完成成,系系统统分分析析员员要要尽尽可可能能从从较较高高的的角角度度概概括

23、括软软件件所所要要做的工作,而不用写明问题的实现细节。做的工作,而不用写明问题的实现细节。傻眺哲甲馏专图都隧敛例嘉雷是涡猿乌点均眩玩础盏净漱泌鞠禽苑穆罪养软件工程导论第五版软件工程导论第五版第第2章:可行性研究章:可行性研究可可行行性性研研究究就就是是要要回回答答“所所定定义义的的问问题题有有可可行的解决办法吗?行的解决办法吗?”。可可行行性性研研究究的的目目的的是是:用用最最小小的的代代价价在在尽尽可可能能短短的的时时间间内内确确定定问问题题是是否否有有解解,以以及及是是否值得去解。否值得去解。2.1可行性研究的任务可行性研究的任务蛛极锻真着逻咏糯改午苯压跋汐镣别员悲痈床叉声摈乌探蒂掸暂咋尺

24、孙夹软件工程导论第五版软件工程导论第五版可可行行性性研研究究所所需需的的时时间间取取决决于于工工程程的的规规模模,所所需需要要的的成成本本要要占占工工程程总总成成本本的的5%10%。沮吴耗见鹤袒术俯滩喇绞田浩革端亩镰剖锭究妆皆沮驻选障涟拂喻礼锻徐软件工程导论第五版软件工程导论第五版可行性研究的内容:可行性研究的内容:1)技术可行性技术可行性技术可行性要分析各种技术因素,例如:技术可行性要分析各种技术因素,例如:使用现有的技术能否实现这个系统?使用现有的技术能否实现这个系统?是否有胜任开发该项目的熟练技术人员?是否有胜任开发该项目的熟练技术人员?能能否否按按期期得得到到开开发发该该项项目目所所需

25、需的的软软件件、硬硬件件资源?资源?惩延介蛰穴懂嘲罗腊桩摹匣蛰品上堆吭迈紊抬辰柿挨唁麻痢棉花酥轻羔拙软件工程导论第五版软件工程导论第五版2)经济可行性经济可行性对经济合理性进行评价,所要考虑的问题是:对经济合理性进行评价,所要考虑的问题是:这个系统的经济效益能否超过它的开发成本?这个系统的经济效益能否超过它的开发成本?这这就就需需要要对对项项目目进进行行价价格格/利利益益分分析析,即即“投投入入/产出产出”分析。分析。由由于于利利益益分分析析取取决决于于软软件件系系统统的的特特点点,因因此此在在软软件件开开发发之之前前,很很难难对对新新系系统统产产生生的的效效益益作作出出精精确的定量描述,所以

26、往往采用一些估算方法。确的定量描述,所以往往采用一些估算方法。蛰卧酥育馒渤剿乎蓄象伯变浩赋眩雅祭烂缓斌铀圃签投坚移荧宏趣冀踞等软件工程导论第五版软件工程导论第五版3)操作可行性操作可行性操操作作可可行行性性评评价价系系统统运运行行后后会会引引起起的的各各方方面面变变化化,如如:对对组组织织机机构构管管理理模模式式、用用户户工工作作环境等产生的影响。环境等产生的影响。翅印磅仍婿摆俏弹数盈妒贸草畏咒挪籍迈稿盖簿驱催番赢擅晓罐封张的迁软件工程导论第五版软件工程导论第五版4)社会可行性社会可行性社社会会可可行行性性主主要要讨讨论论法法律律方方面面和和使使用用方方面面的可行性。的可行性。例例如如,被被开

27、开发发软软件件的的权权利利归归属属问问题题、软软件件所使用的技术是否会造成侵权等问题。所使用的技术是否会造成侵权等问题。宽际狈征衔瞅蜒撑凛筋朝拷屿萄项会脱燃剧侈蜂墙耘羞日障辩岸俐贫氖蝶软件工程导论第五版软件工程导论第五版2.2可行性研究的步骤可行性研究的步骤1)复查系统规模和目标;)复查系统规模和目标;2)研究目前正在使用的系统;)研究目前正在使用的系统;3)导导出出新新系系统统的的高高层层逻逻辑辑模模型型(数数据据流流图图、数据字典);数据字典);4)重新定义问题;)重新定义问题;概悼噪贬裴陕譬啃抓远雨牲哪衣夫佃擒骋和雾母樟缔世去雇碰踩童幸锗绵软件工程导论第五版软件工程导论第五版5)导出和评

28、价供选择的解法(物理解决方案);)导出和评价供选择的解法(物理解决方案);6)推荐行动方案;)推荐行动方案;7)草拟开发计划;)草拟开发计划;8)书写文档提交审查。)书写文档提交审查。2.2可行性研究的步骤可行性研究的步骤乞硒最挂华誊呀羊逃萎赊膏凄溪史羽魏瞎渝芥秀肥甘鞘贱信樟滨瑟揪朝姚软件工程导论第五版软件工程导论第五版2.3系统流程图系统流程图(描绘物理系统的工具)(描绘物理系统的工具)2.3.1符号符号符号符号名称名称说明说明处理处理如:程序,处理机,人工加工如:程序,处理机,人工加工输入输入/输出输出连接连接换页连接换页连接数据流数据流表示输入或输出表示输入或输出同一页上图的连接同一页上

29、图的连接不同页上图的连接不同页上图的连接指明数据流动方向指明数据流动方向图图2.1基本符号基本符号蛤又淖座发进玛卢忱香料郧隔汝兢赊循咐脾斟猪个艾榴晒歌警儒滞节执莎软件工程导论第五版软件工程导论第五版符号符号名称名称说明说明穿孔卡片穿孔卡片文档文档磁带磁带联机存储联机存储磁盘磁盘磁鼓磁鼓显示显示人工输入人工输入人工操作人工操作辅助操作辅助操作通信链路通信链路穿孔卡片输入穿孔卡片输入/输出,或穿孔卡片文件输出,或穿孔卡片文件打印输出,或打印终端输入数据打印输出,或打印终端输入数据磁带输入磁带输入/输出,或表示磁带文件输出,或表示磁带文件任何种类磁盘存储,如磁盘、磁鼓等任何种类磁盘存储,如磁盘、磁鼓

30、等磁盘输入磁盘输入/输出,或磁盘上文件、数据库输出,或磁盘上文件、数据库磁鼓输入磁鼓输入/输出,或磁鼓上文件、数据库输出,或磁鼓上文件、数据库显示器部件显示器部件人工输入数据,如填写表格人工输入数据,如填写表格人工完成的处理人工完成的处理使用辅助设备进行的脱机操作使用辅助设备进行的脱机操作通过远程通信线路传送数据通过远程通信线路传送数据图图2.2系统符号系统符号踞忱骗僻捆哇弧廓妈丢恤烩男咯士舞顶趴豹晃摊揪馈龙哺冻痹轿滥薛翁括软件工程导论第五版软件工程导论第五版2.3.2例子例子事务事务库存清单程序库存清单程序报告生成程序报告生成程序定货定货信息信息定货报告定货报告库存清单库存清单主文件主文件图

31、图2.3库存清单系统的系统流程图库存清单系统的系统流程图积路篓裁逻窟劈恍踩比墩疼胎赞憾头突叭懦谬冯湍夺稚尘拙笼藻猴徘镀撤软件工程导论第五版软件工程导论第五版2.4数据流图(描绘数据在系统中流动的逻辑过程)数据流图(描绘数据在系统中流动的逻辑过程)2.4.1符号符号或或或或或或数据源点或终点数据源点或终点变换数据的处理变换数据的处理数据存储数据存储数据流数据流图图2.4基本符号的含义基本符号的含义寨愿烛烛栅鼓牙拢澄弃古需炯躲施嘘讼痢毋碌粳榔卧峪狙监旬霸桨舆谈革软件工程导论第五版软件工程导论第五版TABC*TABC*附加符号附加符号TABC+TABC+杆肆蕴耗奥全着绊康疆萎照皿寿许锚灾方以滨壶饰捧

32、气锭盒鸳钵墨遥修瞥软件工程导论第五版软件工程导论第五版注意:注意:“ “处理处理处理处理” ”可表示:单个程序、一系列程序、程序的可表示:单个程序、一系列程序、程序的可表示:单个程序、一系列程序、程序的可表示:单个程序、一系列程序、程序的一个模块、人工处理过程等等;一个模块、人工处理过程等等;一个模块、人工处理过程等等;一个模块、人工处理过程等等;“ “数据存储数据存储数据存储数据存储” ”可表示:一个文件、文件的一部分、可表示:一个文件、文件的一部分、可表示:一个文件、文件的一部分、可表示:一个文件、文件的一部分、数据库记录等等;数据库记录等等;数据库记录等等;数据库记录等等;数据流图忽略出

33、错处理、打开文件、关闭文件。数据流图忽略出错处理、打开文件、关闭文件。数据流图忽略出错处理、打开文件、关闭文件。数据流图忽略出错处理、打开文件、关闭文件。蚁非广震肥羽猛柏煎羚掐格墨乡恕迟咎趣摊怂辞继范扦彻抬疙沈焕袁猿恫软件工程导论第五版软件工程导论第五版2.4.2绘制数据流图的绘制数据流图的例子例子事务事务库存清单程序库存清单程序报告生成程序报告生成程序定货定货信息信息定货报告定货报告库存清单库存清单主文件主文件图图2.3库存清单系统的系统流程图库存清单系统的系统流程图交拢妖盈饼犬随屎盆噬唬吭戌兔棺器含歹卧帆空倍沸氛受钱配涌喻釜挂运软件工程导论第五版软件工程导论第五版2.4.2绘制数据流图的绘

34、制数据流图的例子例子仓库仓库管理员管理员采购员采购员定货系定货系统统事务事务定货报表定货报表图图2.5定货系统的基本系统模型定货系统的基本系统模型菱釉申凝朴插装窘撇粟着坑龟帮僵玉守闲奢贼促啤拾戒砌钮屑拢剂拣吾晌软件工程导论第五版软件工程导论第五版2.4.2绘制数据流图的绘制数据流图的例子例子库存清单库存清单仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.6定货系统的功能级数据流图定货系统的功能级数据流图处理处理事务事务1产生产生报表报表2D1库存清单库存清单D2定货信息定货信息定货信息定货信息定货信息定货信息食称狂索喉钠涯姚粱荷骑泵佃坊绩慈诈酵锄戒岗稀夕幅鹿牢赖疹躲痕势炔软件工

35、程导论第五版软件工程导论第五版组成该例子的数据流图的元素组成该例子的数据流图的元素源点源点/终点终点处理处理 采购员采购员 仓库管理员仓库管理员 产生报表产生报表 处理事务处理事务数据流数据流数据存储数据存储 订货报表订货报表 零件编号零件编号 零件名称零件名称 订货数量订货数量 目前价格目前价格 主要供应商主要供应商 次要供应商次要供应商 事务事务 零件编号零件编号 事务类型事务类型 数量数量 订货信息订货信息 (见订货报表)(见订货报表) 库存清单库存清单 零件编号零件编号 库存量库存量 库存量临界值库存量临界值台伶逼窒赵根玻僻聘啸售租堆寄虽鳖百笺人鸳祸膨剥袭党踩钦魔充茄池卸软件工程导论第

36、五版软件工程导论第五版上述数据流图所描述的功能够上述数据流图所描述的功能够详细了吗?详细了吗?哪账恬芦界舞超贪桶刮售顾撤甚遗走尘拒部阑旺筹乡柞灼削纠企滴疚怪国软件工程导论第五版软件工程导论第五版2.4.2绘制数据流图的绘制数据流图的例子例子仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.7定货系统进一步分解后的数据流图定货系统进一步分解后的数据流图更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存清单D2定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息桅书惟慈望弯魄世灌运圈借蜗淖争北态插车孵悸放丘戒校拐孰

37、姐条昂且蚂软件工程导论第五版软件工程导论第五版1)为数据流(或数据存储)命名为数据流(或数据存储)命名A名名字字应应该该代代表表整整个个数数据据流流(或或数数据据存存储储)的内容;的内容;B不不要要使使用用空空洞洞的的、缺缺乏乏具具体体含含义义的的名名字字(如(如“数据数据”、“输入输入”););2.4.3命名命名灾吧进海摸蹈愈扶蛾西滔镊下氨给缄用芒氧爵蔚尺嫂谚酮挫握慈博数渊姓软件工程导论第五版软件工程导论第五版C如果为某个数据流(或数据存储)如果为某个数据流(或数据存储)起名字时遇到困难,则很可能是因为对起名字时遇到困难,则很可能是因为对数据流图的分解不恰当造成的,应该试数据流图的分解不恰当

38、造成的,应该试试重新分解数据流图;试重新分解数据流图;嗣拘冒补莉迪里横殴联行翱害砧古邹姥缀炭恢别旷磊岸悬罗摄筒兢谷附埃软件工程导论第五版软件工程导论第五版2)为处理命名为处理命名A通通常常先先为为数数据据流流命命名名,然然后后再再为为与与之之相相关联的处理命名;关联的处理命名;B名字应该反映整个处理的功能;名字应该反映整个处理的功能;C应应该该尽尽量量避避免免空空洞洞笼笼统统的的动动词词做做名名字字,如如“处理处理”、“加工加工”;铀初引殖罪颤椽赞蹭蘸钥测想葬绸炬忻苞墨撅肮淑设哺醋拘剧粗榔处不喘软件工程导论第五版软件工程导论第五版D通通常常用用一一个个动动词词命命名名,如如果果必必须须用用两两

39、个个动动词词才才能能描描述述整整个个处处理理的的功功能能,则则可可能能要要把这个处理分解成两个处理更恰当;把这个处理分解成两个处理更恰当;E如如果果在在为为某某个个处处理理命命名名时时遇遇到到困困难难,则则很很可可能能是是发发现现了了分分解解不不当当的的情情况况,应应考考虑虑重新分解。重新分解。趴剁贷爹将恨始保瓦菩灭晶荷努准五涤缚瓤动辽陡盟垣僵狡腾梳炸眠馈眨软件工程导论第五版软件工程导论第五版通常,为通常,为“数据源点数据源点/终点终点”命名时,采用它命名时,采用它们在问题域中习惯使用的名字(如们在问题域中习惯使用的名字(如“仓库管理仓库管理员员”、“采购员采购员”)。)。揭默蹭榔那播爽琼氖霄

40、置坝佑狙盐褪铆扎侦臂戍泳瀑钻绵饵工颤凝褂锦疲软件工程导论第五版软件工程导论第五版1)利用它作为交流信息的工具;)利用它作为交流信息的工具;2)作为软件分析和设计的工具。)作为软件分析和设计的工具。2.4.4数据流图的用途数据流图的用途售普杠愉蜡工勉缀旁鞍借杆缠龙葡昏抉渗笔闰鲜屁息庙柞阻悠琐阔没拂饿软件工程导论第五版软件工程导论第五版2.4.4数据流图的用途数据流图的用途仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.8这种自动化边界建议以联机方式更新库存清单这种自动化边界建议以联机方式更新库存清单更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存清单D2定货信息定

41、货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息椅受播公瞻觉翻师论众奈狱跺镍掷黍晦妇攫往腆忆彪袒辽阎钟颗轻昧啪顿软件工程导论第五版软件工程导论第五版图图2.8对应的物理实现硬件方案对应的物理实现硬件方案孟纫月腾印攒缺彰岸靡莫早喉踢酒榔凸赣凡京偷他砷先瞳浇衍称邱邯嗓瓜软件工程导论第五版软件工程导论第五版2.4.4数据流图的用途数据流图的用途仓库仓库管理员管理员采购员采购员事务事务定货报表定货报表图图2.9这种自动化边界暗示以批量方式更新库存清单这种自动化边界暗示以批量方式更新库存清单更新更新库存库存清单清单1.2产生产生报表报表2D1库存清单库存

42、清单D2 定货信息定货信息接收接收事务事务1.1处理处理定货定货1.3库存清单库存清单定货信息定货信息定货信息定货信息D3 事务事务妊月智讽遗霞砾聪苯展勃篇额绽怨骡撞粳胰驴找潦鸯宗完怖袋料侦番吗于软件工程导论第五版软件工程导论第五版图图2.9对应的物理实现硬件方案对应的物理实现硬件方案摘嫉恰融奄加虱好鸭黔番恰悟鼎沽药娠缅描插端孟术秧蓬槐硅理慕落颜肯软件工程导论第五版软件工程导论第五版数据字典数据字典:对数据流图中包含的所有元素的:对数据流图中包含的所有元素的定义的集合;定义的集合;可行性研究阶段,数据流图与数据字典共同可行性研究阶段,数据流图与数据字典共同构成系统的构成系统的逻辑模型逻辑模型。

43、2.5数据字典数据字典 味燥捎舀跪足泉掘甭娜侧羊泪赋剂淤病腿座贰殖帜线非重宋丙哩郡砾歼萧软件工程导论第五版软件工程导论第五版2.5.1数据字典的内容数据字典的内容数据字典应该对下列元素进行定义:数据字典应该对下列元素进行定义:1)数据流;)数据流;2)数据元素(数据流分量);)数据元素(数据流分量);3)数据存储;)数据存储;4)处理。)处理。帜售绝鹰堆买烫崇庙广嗜偏沁柄品思困狼自并梯佳恼绝粥滦困拐姓贬峪瞒软件工程导论第五版软件工程导论第五版1)数据元素数据元素字典字典定义定义其定义的基本内容有:其定义的基本内容有:A数据元素编号、名称及其含义;数据元素编号、名称及其含义;B数据类型和长度;数

44、据类型和长度;C合理取值;合理取值;D其其他他内内容容,如如它它与与其其它它数数据据的的逻逻辑辑关关系等。系等。2.5.2定义数据的方法定义数据的方法询罗侧亡投住搐娶极尊喜恿疡鞘拍惦杜肆淬一沼尾扯麻郑筷兆递猾谐尘棵软件工程导论第五版软件工程导论第五版数据元素字典数据元素字典定义实例:定义实例:数据元素编号数据元素编号:DC001数据元素名称数据元素名称:考试成绩:考试成绩别名别名:成绩、分数:成绩、分数简述简述:学生考试成绩,分五个等级:学生考试成绩,分五个等级类型类型/长度长度:两个字节,字符类型:两个字节,字符类型取值取值/含义含义:优:优90-100良良80-89中中70-79及格及格6

45、0-69不及格不及格0-59有关数据项或结构有关数据项或结构:学生成绩档案:学生成绩档案有关处理逻辑有关处理逻辑:计算成绩:计算成绩图图2.10数据元素字典定义数据元素字典定义闯雁竟再广址棱嘿理眯卓屹亥猖余汾杜臭挎棱撮贫若缸训虾洋捐椒陆扶陶软件工程导论第五版软件工程导论第五版2)数据流字典数据流字典定义定义其定义的基本内容有:其定义的基本内容有:A数据流编号及名称;数据流编号及名称;B数据流来源;数据流来源;C数据流去处;数据流去处;D数据流的组成;数据流的组成;E流通量;流通量;F峰值。峰值。穆长饶高侩康羡琢形颠喻匣翱暖猾拇猖谭胁姿碍窑茂咒躬勉围寿庆盎学炕软件工程导论第五版软件工程导论第五版

46、数据流字典数据流字典定义实例:定义实例:数据流编号数据流编号:DF001数据流名称数据流名称:订票单:订票单简述简述:订票时填写的订票单:订票时填写的订票单数据流来源数据流来源:外部实体:外部实体“乘客乘客”数据流去处数据流去处:处理逻辑:处理逻辑“预订机票预订机票”数据流组成数据流组成:订单编号:订单编号日期日期乘客号乘客号航班号航班号状态状态订单失效日期订单失效日期流通量流通量:每天:每天300份份高峰值流通量高峰值流通量:每天早上:每天早上9:00,约,约160份份图图2.11数据流字典定义数据流字典定义槐峨早戚泥淑辩像绢圆伸笼将省垛渗呜途妆舷硼珐厉祁鞍铡恫上筒马吃庙软件工程导论第五版软

47、件工程导论第五版3)数据存储数据存储字典定义字典定义其定义的基本内容有:其定义的基本内容有:A数据存储编号及名称;数据存储编号及名称;B数据存储的组成;数据存储的组成;C其它要求。其它要求。卞咨滋影比呻嚷乔骑剥诬沃展齐妄馈灸册元岩昏足篷幽去焊盼鼻稚逆冤隶软件工程导论第五版软件工程导论第五版4)数据处理数据处理字典定义字典定义其定义的基本内容有:其定义的基本内容有:A数据处理编号及名称;数据处理编号及名称;B简单描述;简单描述;C输入输入/输出;输出;D功能描述;功能描述;E有关数据存储。有关数据存储。败炼减盟拔獭桑癌砍丰桶麦捷拖仟瘸践亡赁层旗恭韦硒狼俱早拣吩舆二姻软件工程导论第五版软件工程导论

48、第五版数据处理数据处理字典定义实例:字典定义实例:数据处理编号数据处理编号:DP001数据处理名称数据处理名称:编辑订票:编辑订票简述简述:接收从终端录入的订票单,检验是否正确:接收从终端录入的订票单,检验是否正确输入输入:乘客订单,来源:外部实体:乘客订单,来源:外部实体“乘客乘客”输出输出:1.合格订单,去处:处理逻辑合格订单,去处:处理逻辑“确定订票确定订票”2.不及格订单,去处:外部实体不及格订单,去处:外部实体“乘客乘客”功能描述:功能描述:(略)(略)图图2.12数据处理字典定义数据处理字典定义已算华输低调云醇与巢王恢若汪纹耪绽饭茎山洼巧膳贞霖夏赃饵斧称娟皱软件工程导论第五版软件工

49、程导论第五版5)组成数据项的表示方法)组成数据项的表示方法=表示表示“等价于等价于”或或“定义为定义为”+表示表示“与与”与与|表示表示“或或”表示重复表示重复()表示可选项表示可选项通讯录通讯录=通讯地址通讯地址 通通讯讯地地址址=姓姓名名+邮邮编编+省省|直直辖辖市市|自自治治区区+市市|县县+街道街道+门牌号门牌号+(电话)(电话)罩渍格震蛾联简斩助掳砂苫抖狈指拯损忙懒亲束腑抚陕恶燎缄撮遭傈秀遇软件工程导论第五版软件工程导论第五版1.作为分析阶段的重要工具;作为分析阶段的重要工具;2.数据元素的控制信息非常有用;数据元素的控制信息非常有用;3.有助于开发数据库。有助于开发数据库。2.5.

50、3数据字典的用途数据字典的用途淹劳爵雄矿拟昭勃青勃醒甚湾典在矽簿荤拾缀察笔呵星煽慨申晨蜒蛙惟碎软件工程导论第五版软件工程导论第五版实现数据字典:实现数据字典:1)程序处理;)程序处理;2)卡片式人工书写;)卡片式人工书写;2.5.4数据字典的实现数据字典的实现粗绍菇寥岁雹贸煽藻迟岗脊果援谅披春解尾防狱埋艇眼忧停蔼菩耗篮考捉软件工程导论第五版软件工程导论第五版2.6成本成本/效益分析效益分析1)代码行技术代码行技术 软件成本软件成本=每行代码的平均成本每行代码的平均成本估计的估计的源代码总行数源代码总行数2.6.1成本估计成本估计供缘银棋喷谭邓寞唇海尚帧填疗硝重桩绒钝晰选酶烤卷腋定丙随吊磨陌蛰软

51、件工程导论第五版软件工程导论第五版2)任务分解技术任务分解技术软软件件开开发发项项目目分分解解为为若若干干个个相相对对独独立立的的任任务,分别估计每个单独任务的成本:务,分别估计每个单独任务的成本:单单独独任任务务成成本本=任任务务所所需需人人力力估估计计值值每每人每月平均工资;人每月平均工资;软件开发项目总成本估计软件开发项目总成本估计=各个单独任务各个单独任务成本估计值之和。成本估计值之和。鞋骸羊滋啪奋扁善纶庞万皮买暮粹玲诧赂猜铸哼配膝躺邯囚惹曾频琵藉抉软件工程导论第五版软件工程导论第五版常用的办法是按开发阶段划分任务,典型环境下常用的办法是按开发阶段划分任务,典型环境下各个开发阶段需要使

52、用的人力百分比大致如下:各个开发阶段需要使用的人力百分比大致如下:任务任务人力()人力()可行性研究可行性研究需求分析需求分析设计设计编码与单元测试编码与单元测试综合测试综合测试总计总计510252040100蚁谴鼓姜收花金呵订阿凑草找损旋梢秽鸦滦肤挝恭殿清汁懈吐途柳轰讼贿软件工程导论第五版软件工程导论第五版3)自动估计成本技术自动估计成本技术 采用自动估计成本的软件工具估计。采用自动估计成本的软件工具估计。早限做辙垣痕件墨整俞杜嚣找矣固饭缸赌冰汀钒节超笆涟襄蓉醚逐烫雌朗软件工程导论第五版软件工程导论第五版1)Putnam模型模型1978年年Putnam提出的,一种动态多变量模型:提出的,一种

53、动态多变量模型:软件开发成本估算的经验模型:软件开发成本估算的经验模型:轧梨熏猖贵谩膊鸯徘揣侍哨齿脸腹与王双坦冉踌面澄麻昨浙宦嗡届食蓑消软件工程导论第五版软件工程导论第五版Ck为技术状态常数,它反映为技术状态常数,它反映“妨碍开发进展的妨碍开发进展的限制限制”,取值因开发环境而异,见下表:,取值因开发环境而异,见下表:Ck的典型的典型值值开发环开发环境境开发环境举例开发环境举例2000差差没有系统的开发方法,缺乏文档和复没有系统的开发方法,缺乏文档和复审审8000好好有合适的系统的开发方法,有充分的有合适的系统的开发方法,有充分的文档和复审文档和复审11000优优有自动的开发工具和技术有自动的

54、开发工具和技术走函面彻享煮瞩呢掇附讲呐蹈熙热榷耙纹妇还羞酝旷檬沪挨饰伸敷胺殖拭软件工程导论第五版软件工程导论第五版2)COCOMO模型模型(constructivecostmodel)这是由这是由TRW公司开发,公司开发,Boehm提出的结构化成本估算提出的结构化成本估算模型,是一种精确的、易于使用的成本估算方法。模型,是一种精确的、易于使用的成本估算方法。基本基本COCOMO模型估算工作量和进度的公式如下:模型估算工作量和进度的公式如下:工工作作量:量:MM=r(KDSI)c(人月)(人月)开发时间:开发时间:TDKV=a(MM)b(月)(月)DSI:源指令条数,不包括注释,:源指令条数,不

55、包括注释,1KDSI=1000DSIMM:开发工作量(以人月计),:开发工作量(以人月计),1MM=19人日人日=152人时人时=1/12人年人年经验常数经验常数r,c,a,b取决于项目的总体类型取决于项目的总体类型告沂但抉均眠氦岸慰仍勒朴愈噶互慧霸狠饱槐税叔作暖与幂谦洲肪懦裕瓶软件工程导论第五版软件工程导论第五版COCOMO模型中,考虑开发环境,软件开发模型中,考虑开发环境,软件开发项目的类型可以分为项目的类型可以分为3种:种:1)组织型组织型(organic)相对较小、较简单的软件项目。开发人员对开相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经发目标理解

56、比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(束较小,程序的规模不是很大(下个状态下个状态加入谓词集加入谓词集P P,把系统扩展成一个,把系统扩展成一个6 6元组后元组后:当前状态【菜单】事件【所选择的项】谓词当前状态【菜单】事件【所选择的项】谓词下个状态下个状态 计计算算机机系系统统中中每每个个菜菜单单驱驱动动的的用用户户界界面面都都是是一个有穷状态机的实现。一个有穷状态机的实现。毙菜悉潜责障洛罚赌待鲸坪觅嚎敞始躺绕多装示裕缘虾讫烙渴汽针殖细拆软件工程导论第五版软件工程导论第五版定义状态:定义状

57、态:(1 1)M(d,e,f)M(d,e,f):电梯:电梯:电梯:电梯e e正沿正沿正沿正沿d d方向移动,即将到达第方向移动,即将到达第方向移动,即将到达第方向移动,即将到达第f f层楼。层楼。层楼。层楼。(2 2)S(d,e,f)S(d,e,f):电梯:电梯:电梯:电梯e e停在停在停在停在f f层楼,将朝层楼,将朝层楼,将朝层楼,将朝d d方向移动(未关门)。方向移动(未关门)。方向移动(未关门)。方向移动(未关门)。(3 3)W(e,f)W(e,f):电梯:电梯:电梯:电梯e e在在在在f f层等待(已关门)。层等待(已关门)。层等待(已关门)。层等待(已关门)。(4 4)DC(e,f

58、)DC(e,f):电梯:电梯:电梯:电梯e e在楼层在楼层在楼层在楼层f f关上门。关上门。关上门。关上门。(5 5)ST(e,f)ST(e,f):电梯:电梯:电梯:电梯e e靠近靠近靠近靠近f f层时触发传感器,电梯控制器决定层时触发传感器,电梯控制器决定层时触发传感器,电梯控制器决定层时触发传感器,电梯控制器决定在当前楼层是否停下。在当前楼层是否停下。在当前楼层是否停下。在当前楼层是否停下。(6 6)RLRL:电梯按钮或楼层按钮被按下进入打开状态:电梯按钮或楼层按钮被按下进入打开状态:电梯按钮或楼层按钮被按下进入打开状态:电梯按钮或楼层按钮被按下进入打开状态4.2.2例子例子:电梯的状态转

59、换电梯的状态转换忿悉措游励鸡队竞旋潍虱院逸旅剃壳功迅伶堕殆邓聪锨泪快铭乏窝锻窖污软件工程导论第五版软件工程导论第五版电梯状态转换规则:电梯状态转换规则:S(U,e,f)+DC(e,f)=M(U,e,f+1);S(D,e,f)+DC(e,f)=M(D,e,f-1);S(N,e,f)+DC(e,f)=W(e,f)坯勋双穴小颁咨赌绚眨镭曰谊闽青霖缎猿枢探鸭姿胀步娟杉奇跟籽棍萨漠软件工程导论第五版软件工程导论第五版4.2.3评价评价有穷状态机描述规格说明:有穷状态机描述规格说明:当前状态事件谓词当前状态事件谓词=下个状态下个状态易于书写、验证、转变成设计或程序代码。易于书写、验证、转变成设计或程序代码

60、。有有穷穷状状态态机机方方法法比比数数据据流流图图技技术术更更精精确确,一样易于理解。但不能处理定时需求。一样易于理解。但不能处理定时需求。侨畔披贪杰帆仁狡坛烹杯鄙机番岭琐橡右罩纹蔡著篇驹葛啡裤呈楷坟呜鸵软件工程导论第五版软件工程导论第五版4.3Petri网网4.3.1概念概念蘸艰澎炉廉套丢页禽再然农嗡淀警赏褪谆县叭郡址孜患骸赚谁者投癌兽霞软件工程导论第五版软件工程导论第五版Petri网包含网包含4种元素:种元素:1)一组位置)一组位置P,上例,上例PP1,P2,P3,P42)一组转换)一组转换T,上例,上例Tt1,t23)输入函数)输入函数I,上例,上例I(t1)=P2,P4I(t2)=P2

61、4)输出函数)输出函数O,上例,上例O(t1)=P1O(t2)=P3,P3更形式化的更形式化的Petri网结构,是一个网结构,是一个4元组(元组(P,T,I,O)母彦粗馈晌钢蓟捶恶泼缎馅目普泅武亨玩试粪渠贸悦舅佃造城怠路鸽榜厘软件工程导论第五版软件工程导论第五版权标向量(权标向量(1,2,0,1)托架坡芹梭伟必坍知李做绅佩簧脚淑歧虑蹭蚤方吹甥最脓绪临烷宜愁朝患软件工程导论第五版软件工程导论第五版权标向量(权标向量(2,1,0,0)福腔醇掣忿舍亚缸腿庸歧键扳炮扫摔帮鬃锯畏子涕枝仗剐尺海掏疼呵挝色软件工程导论第五版软件工程导论第五版权标向量(权标向量(2,0,2,0)仲塔蕾弗兽箕坝苞围粳挨晓匆枣晾

62、孟遮忻岿草唬字湾涟瓤舍葱带嗅郁宋瓤软件工程导论第五版软件工程导论第五版更形式化地:更形式化地:标记标记M:P0,1,2,Petri网成为一个网成为一个5元组元组(P,T,I,O,M)峨睬洼祁板腰北号冲椽穗可皿赔舶枕类六胜咙晤逝水虞料宣狙擅累责大勿软件工程导论第五版软件工程导论第五版对对Petri网的一个重要扩充是加入禁止线:网的一个重要扩充是加入禁止线:息泼途胎化津叠瘟尊赫君卖宝钮簇音差绒怯袁翔蚀惰谷抑掖却渺凄监梧这软件工程导论第五版软件工程导论第五版4.3.2例子例子1.电梯按钮电梯按钮EBf 电梯中楼层电梯中楼层f 的按钮;的按钮;Fg楼层楼层g;Ff 楼层楼层f。惶薪开嗡篆腺几毯鞋酚瓦吼

63、巾出傅姜腰糟柱辫衅竿馏镁芝肄门舟伏种膀归软件工程导论第五版软件工程导论第五版2.楼层按钮楼层按钮FBfu第第f 楼层向上按钮;楼层向上按钮;FBfd第第f 楼层向下按钮;楼层向下按钮;相卫健俭橙屠码浪缄瞻锯仁敖凝痔矽渡绥疮柞听僻售镀蒲旱渊扩怖激昧咱软件工程导论第五版软件工程导论第五版小结基于数学的形式化说明技术,目前还没有在基于数学的形式化说明技术,目前还没有在软件产业界广泛应用;软件产业界广泛应用;应该把形式化方法与传统方法有机结合。应该把形式化方法与传统方法有机结合。孰罚侈桨玄撩丛吓但浪冈哀百碎样履锄礼镰减珐厉丧忠气幽仗阔潍靶种津软件工程导论第五版软件工程导论第五版第5章:总体设计 5.1

64、设计过程设计过程1.设想供选择的方案设想供选择的方案2.选择合理的方案选择合理的方案对每个合理的方案要提供:对每个合理的方案要提供:A系统流程图系统流程图B组成系统的物理元素清单组成系统的物理元素清单C成本成本/效益分析效益分析D实现这个系统的进度计划实现这个系统的进度计划脓话调帧醒含但聋砂个博邻沤忱挫遮卧恐戊寇拄魄坊综圣异旧兴揉蕊眼英软件工程导论第五版软件工程导论第五版3.推荐最佳方案推荐最佳方案4.功能分解功能分解5.设计软件结构设计软件结构6.数据库设计数据库设计A模式设计模式设计B子模式设计子模式设计C完整性和安全性设计完整性和安全性设计D优化优化沁矩万割县寨扭拦忌失宅嚎网吱氛狭霸延耘

65、枕靴遍棉宰郝那朱程昆鸯原傻软件工程导论第五版软件工程导论第五版7.制定测试计划制定测试计划8.书写文档书写文档A系统说明系统说明B用户手册用户手册C测试计划测试计划D详细的实现计划详细的实现计划E数据库设计结果数据库设计结果9.审查和复审审查和复审献谍隔绝灭贵诚穴澳酗迸看旅凋努糟理昨涅久自袁拼决搁杏茧杜幅酿挝棵软件工程导论第五版软件工程导论第五版5.2设计原理设计原理如果一个大型程序仅由一个模块组成,很难被人理解。如果一个大型程序仅由一个模块组成,很难被人理解。设设函函数数C(x)定定义义问问题题x的的复复杂杂程程度度,函函数数E(x)定定义义解解决决问问题题x需要的工作量(时间)。对于两个问

66、题需要的工作量(时间)。对于两个问题P1和和P2,如果:,如果:C(P1)C(P2)那么那么E(P1)E(P2)根据解决问题的经验,有一个规律是:根据解决问题的经验,有一个规律是:C(P1+P2)C(P1)+C(P2)于是有于是有E(P1+P2)E(P1)+E(P2)5.2.1模块化模块化找禄啮千笆淹煤筛暗书济扣韶讨姥妊酚顶唯澜峰尿肘曾己言掩弊碉慎贰饰软件工程导论第五版软件工程导论第五版模块数目模块数目接口成本接口成本成本成本/模块模块软件总成本软件总成本M最小成本区最小成本区成成本本图图5.1模块化与软件成本模块化与软件成本芽基池明新秦岩戍穗寒甩酥秘憎廖床长避傈雁硒屯彼挖垛蛊托虚摄列俗驴软件

67、工程导论第五版软件工程导论第五版5.2.2抽象抽象5.2.3逐步求精逐步求精模块的独立性很重要,因为:模块的独立性很重要,因为:1)有效的模块化的软件比较容易开发出来)有效的模块化的软件比较容易开发出来;2)独立的模块比较容易测试和维护。)独立的模块比较容易测试和维护。5.2.4信息隐蔽和局部化信息隐蔽和局部化5.2.5模块独立模块独立蛊撵茫拟终剧降扭医捂广轮构般趴背虑杠狰串吩帘掸寥镀拭彦吃争嵌办遁软件工程导论第五版软件工程导论第五版一、耦合一、耦合耦合耦合:指软件结构内不同模块彼此之间相:指软件结构内不同模块彼此之间相互依赖(连接)的紧密程度。互依赖(连接)的紧密程度。 模块独立程度可以由两

68、个定性标准度量:模块独立程度可以由两个定性标准度量:耦耦合合与与内聚内聚。疟祸遵橱汾柒夯涟胸怒蔬惧洁恕觉茨倦甥嫌拦兼返杜晦娜朗氦醉姓蔷俯苹软件工程导论第五版软件工程导论第五版模块的偶合分四类:模块的偶合分四类:1)数据耦合数据耦合两个模块之间只是通过参数交换信息,而且两个模块之间只是通过参数交换信息,而且交换的信息仅仅是数据。交换的信息仅仅是数据。数据耦合是最低程度的耦合。数据耦合是最低程度的耦合。AB数据数据(1)数据耦合)数据耦合貌纪赏炕痘绪庐迄坤螟绵蠢嘘档肢钡扶厅察埃杯糊弗窟宗员擒许除神桨溅软件工程导论第五版软件工程导论第五版2)控制耦合控制耦合两个模块之间所交换的信息包含控制信息。两个

69、模块之间所交换的信息包含控制信息。控制耦合是中等程度的耦合。控制耦合是中等程度的耦合。图中模块图中模块A的内部处理程序判断是执行的内部处理程序判断是执行C还是执行还是执行D,要取决于模块,要取决于模块B传来的信息状态(传来的信息状态(Status)。)。BACD(2)控制耦合)控制耦合astatus官椭霖屹巴恿垃撮客附夫稍歹萤栋蓑械乌碱骨暇冬退利殷埋闸衣撞乱岁琉软件工程导论第五版软件工程导论第五版3)公用耦合公用耦合 两个或多个模块通过一个公共区相互作用时两个或多个模块通过一个公共区相互作用时的耦合。的耦合。 公共区可以是:全程数据区、共享通信区、公共区可以是:全程数据区、共享通信区、内存公共

70、覆盖区、任何介质上的文件、物理设内存公共覆盖区、任何介质上的文件、物理设备等。备等。 软件结构中存在大量的公用耦合时会给诊断软件结构中存在大量的公用耦合时会给诊断错误带来困难。错误带来困难。危懦拘轮诡捏绦休鸣富田贞酒色句獭泳锯缘敲吏痊谬释绢辩漂跌寸腰伊敢软件工程导论第五版软件工程导论第五版 图中存在公用耦合,假设模块图中存在公用耦合,假设模块A、C、E都存取全程数据都存取全程数据区(如公用一个磁盘文件)中的一个数据项。区(如公用一个磁盘文件)中的一个数据项。 如果如果A模块读取该项数据,然后调用模块读取该项数据,然后调用C模块对该项重新计模块对该项重新计算,并进行数据更新。算,并进行数据更新。

71、ABCDE全程数全程数据区据区(3)公用耦合)公用耦合匆酌冬秃今翼胳幻童陀墅龄度钳扣莽湿包赘几抽楞豢碳峦逛揉旬郴告胖渝软件工程导论第五版软件工程导论第五版 如果此时如果此时C模块错误地更新了该项数据,在往下的处理模块错误地更新了该项数据,在往下的处理中模块中模块E读该数据项时出现错误。读该数据项时出现错误。 表面上看,问题由模块表面上看,问题由模块E产生,实际上由模块产生,实际上由模块C引起。引起。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合眷但暇客严刘佩琉探缩块漫候鱼藏萄俞较焚寞磋荧郭嚷颐倍育截疆吟吝栏软件工程导论第五版软件工程导论第五版4)内容耦合内容耦合 一个模块与另一个模块的

72、内容直接发生联系。一个模块与另一个模块的内容直接发生联系。 内容耦合对维护会带来严重的困难。内容耦合对维护会带来严重的困难。模块模块ALAB:MOVE1模块模块BGOTOLAB内容耦合内容耦合(4)内容耦合)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的耦合,应该避免采用。耦合,应该避免采用。 硒榜盔诗显雄恿尉河亦葡甚剧钉妥淌杰郊真主眺晾枫听空属墟嘶猾能污敬软件工程导论第五版软件工程导论第

73、五版 软件设计应追求尽可能松散耦合,避免强耦软件设计应追求尽可能松散耦合,避免强耦合,这样模块间的联系就越小,模块的独立性合,这样模块间的联系就越小,模块的独立性就越强,对模块的测试、维护就越容易。就越强,对模块的测试、维护就越容易。 因此建议:因此建议:尽量使用数据耦合,少用控制耦尽量使用数据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合合,限制公用耦合,完全不用内容偶合。忻桓巴恳迄周步梯卑时诊少咋组箍旦贫捻了昨冬简桅羹框琴殖箕歪见轮环软件工程导论第五版软件工程导论第五版二、内聚二、内聚 内内聚聚:一一个个模模块块内内部部各各个个元元素素彼彼此此结结合合的紧密程度。的紧密程度。 它它是是

74、衡衡量量一一个个模模块块内内部部组组成成部部分分间间整整体体统一性的度量。统一性的度量。 常见的内聚有七类。常见的内聚有七类。 向筹霄肛风办拈阳瑶缆驮德找崇耽邻穴初酌肝省来吠名胰赐爹姆弯庸刑帘软件工程导论第五版软件工程导论第五版1)功能内聚功能内聚(FunctionalCohesion) 如果一个模块内所有处理元素完成一个,而如果一个模块内所有处理元素完成一个,而且仅完成一个功能,则称为功能内聚。且仅完成一个功能,则称为功能内聚。 功能内聚是最高程度的内聚。但在软件结构功能内聚是最高程度的内聚。但在软件结构中,并不是每个模块都能设计成一个功能内聚中,并不是每个模块都能设计成一个功能内聚模块。模

75、块。计秩锁运嚣体跌短爆渝欲卖秋豆铭什品与摩圾倪顺归挫派搞沏涣诈疡诬诛软件工程导论第五版软件工程导论第五版2)顺序内聚顺序内聚(SequentialCohesion)如如果果一一个个模模块块内内处处理理元元素素和和同同一一个个功功能能密密切切相相关关,而而且且这这些些处处理理元元素素必必须须顺顺序序执执行行,则则称称为顺序内聚。为顺序内聚。 谎鄂迸铸邀付缓伸兔抬旺锐衷胰溉扼恬藻却伟路屹磨策沥的怎忱泳障脑吻软件工程导论第五版软件工程导论第五版 如图,一个求一元二次方程根的模块由三个如图,一个求一元二次方程根的模块由三个处理元素组成,该模块中存在顺序内聚。处理元素组成,该模块中存在顺序内聚。 通常,

76、顺序内聚中一个处理元素的输出是另通常,顺序内聚中一个处理元素的输出是另一个处理元素的输入。一个处理元素的输入。求一元二次方求一元二次方程根模块程根模块1 1输入方程系数输入方程系数2 2求解求解3 3打印方程的解打印方程的解顺序内聚示例顺序内聚示例峡娜诀秆日认尝决鲁妆浑猪巫鸭汗慎滤斜呸佳掩温毁后证翱曝础俱赎出沽软件工程导论第五版软件工程导论第五版3)通信内聚通信内聚(CommunicationalCohesion)如如果果一一个个模模块块中中所所有有处处理理元元素素都都使使用用同同一一个个输输入入数数据据和和(或或)产产生生同同一一个个输输出出数数据据,称称为为通通信信内聚。内聚。 脏臂副绢犹

77、结摆寞见椒咕倔届酗紫厉救邻栖孰食联股足沸颅恰蹿蒋黄居衙软件工程导论第五版软件工程导论第五版如图,模块如图,模块A的处理单元将根据同一个数据的处理单元将根据同一个数据文件文件FILE的数据产生不同的表格,因此它存的数据产生不同的表格,因此它存在通信内聚。在通信内聚。通信内聚有时也称为数据内聚。通信内聚有时也称为数据内聚。A从文件从文件FILE中读出数据中读出数据1.由数据产生报表由数据产生报表A2.由数据产生报表由数据产生报表B通信内聚示例通信内聚示例比假孵轻挥匹庸慎笑上布铰柬磺胶镰睛岔磁萍蚤绚力艇拿墙永肩雏幻缺舰软件工程导论第五版软件工程导论第五版4)过程内聚过程内聚(ProceduralCo

78、hesion)如如果果一一个个模模块块内内的的处处理理元元素素是是相相关关的的,而而且且必须以特定的次序执行,称为过程内聚。必须以特定的次序执行,称为过程内聚。 过程内聚与顺序内聚的区别是:过程内聚与顺序内聚的区别是: 顺序内聚中是数据流从一个处理单元流到另顺序内聚中是数据流从一个处理单元流到另一个处理单元,而过程内聚是控制流从一个动一个处理单元,而过程内聚是控制流从一个动作流向另一个动作。作流向另一个动作。词隧奉猩寐腔辆怨车狱谁梗徒彤创随令浴诀意漂杏危艰雹慌幻烬皋掺尺己软件工程导论第五版软件工程导论第五版5)时间内聚时间内聚(TemporalCohesion)如如果果一一个个模模块块包包含含

79、的的任任务务必必须须在在同同一一段段时时间间内执行,称为时间内聚。也称为瞬时内聚。内执行,称为时间内聚。也称为瞬时内聚。孙役亏影酱酪尖哄包畅占搂鸣箱腰若延吟多凯船抱枕恃苛营品脚筷邓幢济软件工程导论第五版软件工程导论第五版例例如如,完完成成各各种种初初始始化化工工作作的的模模块块,或或者者处处理理故故障障的模块都存在时间内聚。的模块都存在时间内聚。 如如图图,在在“紧紧急急故故障障处处理理模模块块”中中,“关关闭闭文文件件”、“报报警警”、“保留现场保留现场”等任务都必须无中断地同时处理。等任务都必须无中断地同时处理。紧急故障处理紧急故障处理模块模块1关闭文件关闭文件2报警报警3保留现场保留现场

80、时间内聚示例时间内聚示例且岁蚜评躯朱古掂夯叫逞假吠排砒苞羞们呆衰险内河叠侍凤秧户釜锹邪线软件工程导论第五版软件工程导论第五版6)逻辑内聚逻辑内聚(LogicalCohesion)如如果果模模块块完完成成的的任任务务在在逻逻辑辑上上属属于于相相同同或或相似的一类,称为逻辑内聚。相似的一类,称为逻辑内聚。症白愉颇腔逃般嫁皆通桶逮咳福祭观物使耪躇屿拐虫残矽案零躁浴吠挠澈软件工程导论第五版软件工程导论第五版如如图图,A、B、C模模块块合合并并成成ABC模模块块之之后后,ABC模块就是逻辑内聚模块。模块就是逻辑内聚模块。XYZABCXYZABC合并合并逻辑内聚示例逻辑内聚示例暴伪拨撮蚂幅赵虞锯孤件乏则居

81、沮烂忘摹拄零迅宪凝衣丛错讳芝鱼翰套筐软件工程导论第五版软件工程导论第五版 对逻辑内聚模块的调用,常常需要有一个功能对逻辑内聚模块的调用,常常需要有一个功能开关,由上层调用模块向它发出一个控制信号,开关,由上层调用模块向它发出一个控制信号,在多个关联性功能中选择执行某一个功能。在多个关联性功能中选择执行某一个功能。 这种内聚较差,增加了模块之间的联系,不易这种内聚较差,增加了模块之间的联系,不易修改。修改。 款跟濒释河纽刚坯剥令觅尝疤垂裙追寅衡霄降逸歧肤蚜读峰抵介筒罩锨隐软件工程导论第五版软件工程导论第五版7)偶然内聚偶然内聚(CoincidentalCohesion)如果一个模块由完成若干毫无

82、关系的功能如果一个模块由完成若干毫无关系的功能处理元素偶然组合在一起的,就叫偶然内聚。处理元素偶然组合在一起的,就叫偶然内聚。呕腹拣氮实竹崩循辱椿埠椿任重卒撂现个素本珐缠任颓眷闸甲院而暑釉傣软件工程导论第五版软件工程导论第五版偶然内聚是最差的一种内聚。偶然内聚是最差的一种内聚。常常犯犯这这种种错错误误的的一一种种情情况况是是:有有时时在在写写完完程程序序后后,发发现现一一组组语语句句在在多多处处出出现现,于于是是为为了了节节省省空空间间而而将将这这些些语语句句作作为为一一个个模模块块设设计计,就出现偶然内聚。就出现偶然内聚。舷餐调粒完除赴诗斡贡星洞束顽盏垒织惮拦皇诀灰镍病河猜践衬津谐封承软件工

83、程导论第五版软件工程导论第五版如图,模块如图,模块A、B、C出现出现公共代码段公共代码段W,于是将,于是将W独独立成一个模块,而立成一个模块,而W中这些中这些语句并没有任何联系。语句并没有任何联系。如果在测试中发现模块如果在测试中发现模块A不需要做不需要做“X=Y+Z”,而应,而应该做该做“X=Y*Z”,此时对,此时对W的的维护就很困难了。维护就很困难了。ABCW模块模块X=Y+ZGETCARDIFI=5THENE=0偶然内聚示例偶然内聚示例旧唉坝讼弘阳窜啼渝们锭剑查险俩恨殃锭浴租阎秤创衡订继羔净待追彤卑软件工程导论第五版软件工程导论第五版 软件设计中应该:软件设计中应该:力求做到高内聚力求做

84、到高内聚,尽尽量少用中内聚,不用低内聚量少用中内聚,不用低内聚。疟部萝序顽谱诅责末苛想廉馏主版邹砒佐爹挂皇掏撮季伯无外跨枉再属摇软件工程导论第五版软件工程导论第五版5.3启发式规则启发式规则1.改进软件结构提高模块独立性改进软件结构提高模块独立性2.模块规模应该适中模块规模应该适中3.深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当 深度深度:软件结构中控制的层数;:软件结构中控制的层数; 宽度宽度:软件结构内同一个层次上的模块总数的最大值;:软件结构内同一个层次上的模块总数的最大值; 扇出扇出:一个模块直接控制(调用)其它模块的数目;:一个模块直接控制(调用)其它模块的数目; 扇

85、入扇入:一个模块被其它模块调用的数目。:一个模块被其它模块调用的数目。正文加工正文加工系统系统输入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合并合并列表列表误播晓陶殷部阐鞭妻荫捉诸鸥范臂遗卿谭毯抹敛向搔岁痈薄薄笆远迷贤姆软件工程导论第五版软件工程导论第五版对扇出、扇入过大的改进:对扇出、扇入过大的改进:(a)对扇入过大的改进)对扇入过大的改进(b)对扇出过大的改进)对扇出过大的改进班土宏占店离农肺迫诫邱咀坦枷嘻稽收寅祭墨兼腋堑灶薄茁垫莎及绳律挪软件工程导论第五版软件工程导论第五版4. . 模块的作用域应该在控制域之内模块的作用域应该

86、在控制域之内MAGBCEDF图图5.2模块的作用域和控制域模块的作用域和控制域作用域:受该模块内一个判定影响的所有模块的集合。作用域:受该模块内一个判定影响的所有模块的集合。控制域:模块本身以及所有从属于它的模块的集合。控制域:模块本身以及所有从属于它的模块的集合。氖迭垢范佣埋转滋较妈尊养遭僧艘鼠膏铜躇顷谚闽弘洞动甥骤纲瘸灿龋拍软件工程导论第五版软件工程导论第五版如:如:QUAD-ROOT(TBL,X)求求一一元元二二次次方方程程的的根根的的模模块块,其其中中TBL,X都为数组,分别代表方程的系数和方程的根。都为数组,分别代表方程的系数和方程的根。应该使接口更简单,如:应该使接口更简单,如:Q

87、UAD-ROOT(A,B,C,ROOT1,ROOT2)A、B、C是是方方程程的的系系数数,ROOT1,ROOT2是方程的根。是方程的根。5.力争降低模块接口的复杂度力争降低模块接口的复杂度曝煽抉壳葬盏厉诗攀籽俞允庐聂鹰缝公洁讹丫畏不妖封霹鞍猖敏食训窖鸟软件工程导论第五版软件工程导论第五版6.设计单入口、单出口的模块设计单入口、单出口的模块7.模块功能应该可以预测模块功能应该可以预测沫准渠帚沁陷绍任诸均雹头人胞棕锥坛毋罪从谆婆格氦锹盒蹲邢胯爽座厅软件工程导论第五版软件工程导论第五版5.4图形工具图形工具5.4.1层次图和层次图和HIPO图图正文加工正文加工系统系统输入输入输出输出编辑编辑加标题加

88、标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合并合并列表列表图图5.3正文加工系统的层次图正文加工系统的层次图擞陨姻莽添昼谅辫符寇酵钞亢挤服掐秦锑疹粪掖辛搔并网眨权傻灵必歉毅软件工程导论第五版软件工程导论第五版正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图5.4带编号的层次图(带编号的层次图(H图)图)HIPO图是:图是:“层次图输入层次图输入/处理处理/输出图输出图”蝴恶事

89、衙香萎淑目附暮惨拘治汞县弛姜尺哟灸凑滚嘉柒恒净唾慑寝影催浅软件工程导论第五版软件工程导论第五版5.4.2结构图结构图产生最佳解产生最佳解得到好输入得到好输入计算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入结果格式化结果格式化显示结果显示结果图图4.5结构图的例子结构图的例子产生最佳解的一般结构产生最佳解的一般结构劝兄蜀立窄堆惶竿找莹胳益侣卜汲菏驻划她鼻宦节莲连寥官蜗组户辰喜随软件工程导论第五版软件工程导论第五版MAB图图5.6判定为真时调用判定为真时调用A,为假时调用,为假时调用BMABC图图5.7模块模块M循环调循环调用模块用模块A、B、C渝殴鼎销孟旭赂宦赠硝洲饰蓖掩渝醛授豌

90、撇峙珊春谁茎五匡快味拨糕覆茬软件工程导论第五版软件工程导论第五版5.5面向数据流的设计方法面向数据流的设计方法 面向数据流设计(面向数据流设计(DataFlow-OrientedDesign,DFOD)是与数据流分析()是与数据流分析(DFA)对应)对应的结构化软件设计技术。的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础的面向数据流的设计将得到以数据流图为基础的软件模块结构图软件模块结构图。忆佛呢襄啄衡牌削挫询诫笋研恃赘妒嘎例昭谋者瑶脓宿杭侨锦括袄阿展湾软件工程导论第五版软件工程导论第五版数据流可以分为两种类型:数据流可以分为两种类型: 1)变换型数据流)变换型数据流 2)事务

91、型数据流)事务型数据流5.5.1变换流与事务流变换流与事务流诡貌阻渍贿膏这奸玄光淑淳湛仲男贯垣毋窍释件掂随悼岸幅唉餐瘫灌雅查软件工程导论第五版软件工程导论第五版一、一、变换流变换流具有较明确的输入、变换(或称主加工)和输具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。出界面的数据流图称为变换型数据流图。如图所示,该变换中心可以理解为数据的加工如图所示,该变换中心可以理解为数据的加工和处理程序。和处理程序。读入原读入原始数据始数据校验原校验原始数据始数据计算最计算最优结果优结果编辑打印编辑打印最优结果最优结果输入输入变换中心变换中心输出输出酪物折房疥苦热瘸奋羌冀黍不灼

92、狐慎悦喊准科彬欠誓医皮么详芦音限设裁软件工程导论第五版软件工程导论第五版 事事务务型型数数据据流流图图中中存存在在一一个个事事务务中中心心(也也就就是是数数据据处处理理、加加工工中中心心),它它将将输输入入分分离离成成若若干干个个发发散散的的数数据据流流,形形成成许多活动路径,并根据输入值选择其中一条路径。许多活动路径,并根据输入值选择其中一条路径。要求类要求类别处理别处理分房处理分房处理调房处理调房处理退房处理退房处理住房要求住房要求事务中心事务中心活动路径活动路径二、二、事务流事务流堤畏端阁共顾倘粪类掖萌喘辕吉沛位隙炒邵氮掩众拧可霜国则愉桔健氮拘软件工程导论第五版软件工程导论第五版 通常,

93、一个实际系统的数据流图是变换型和事务型两通常,一个实际系统的数据流图是变换型和事务型两种类型的混合体。种类型的混合体。 如图所示,中间的子块属事务型数据流,如果把中间如图所示,中间的子块属事务型数据流,如果把中间子块视为一个处理整体的话,整个程序属变换型程序。子块视为一个处理整体的话,整个程序属变换型程序。A(事务型,(事务型,A为事务中心)为事务中心)变换中心变换中心输入输入输出输出混合型数据流图混合型数据流图聋氏浸膘盆框滦泅误廊撵盔矫摇画宙核纷仅粹采喇芒猴叭汉锁佰清蝶丹那软件工程导论第五版软件工程导论第五版面向数据流设计软件结构的基本步骤有七步:面向数据流设计软件结构的基本步骤有七步:1)

94、复审并精化数据流图;)复审并精化数据流图;2)确定数据处理流图的类型;)确定数据处理流图的类型;3)确定变换中心或事务中心;)确定变换中心或事务中心;5.5.2面向数据流设计的步骤面向数据流设计的步骤陷娶饥起毋晶糠晾储最逾笨林鬃萎疲铡金糠摹移命迄沽豁勋避弄腔畦苞驰软件工程导论第五版软件工程导论第五版4)将将数数据据流流图图映映射射成成软软件件模模块块结结构构图图,设设计计出该数据流图对应的第一层模块结构;出该数据流图对应的第一层模块结构;5)基于数据流图逐步分解,设计下层模块;)基于数据流图逐步分解,设计下层模块;6)运用模块设计和优化准则优化软件结构;)运用模块设计和优化准则优化软件结构;7

95、)描述模块的接口。)描述模块的接口。悼的淤镇凝巴阀蜗捷践妓缀酶公疏遵俭迅像骡狱颧圈右浓聊莎坚今攒巾哥软件工程导论第五版软件工程导论第五版复查、精化数据流图复查、精化数据流图类型类型找出事务中心找出事务中心找出变换中心找出变换中心映射成事务结构映射成事务结构映射成变换结构映射成变换结构优化软件模块结构优化软件模块结构导出模块结构导出模块结构复查复查不满意不满意变换变换事务事务变换设计变换设计事务设计事务设计面向数据流的设计步骤面向数据流的设计步骤转毒剐掏粉部痒嗜句秦劫化飘赠诛涧务惭幼唬菌浮除焉吠慧冠榔选为如牧软件工程导论第五版软件工程导论第五版 变变换换设设计计就就是是从从变变换换型型数数据据流

96、流图图映映射射出出软软件件模模块块结结构构的的过过程程,也也称称以以变变换换为为中中心心的设计。的设计。5.5.3变换设计变换设计积讫爷砰琳改亢沧煌瓮其寻吝唆巡累榴瞳硫皮招粪郡子毡协抓险蹬挪螺崭软件工程导论第五版软件工程导论第五版变换设计的基本方法有两步:变换设计的基本方法有两步:1)分解第一层模块结构)分解第一层模块结构就是把整个变换分解成输入控制模块就是把整个变换分解成输入控制模块Ci、输出、输出控制模块控制模块Co和变换中心控制模块和变换中心控制模块Ct,由主控模,由主控模块控制。块控制。主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制

97、模块Ci蒂衷批瞪凿钮虐锨尸蛰考饶脖芝寂萍迄烹乘饼蹦购溺饼拳牧探茵自妹砖囱软件工程导论第五版软件工程导论第五版2)分别设计输入、输出和处理的下层模块结构)分别设计输入、输出和处理的下层模块结构方法是:方法是:从变换中心边界向两侧移动从变换中心边界向两侧移动,分别把输入通路,分别把输入通路和输出通路的每个处理映射成输入控制模块和输出通路的每个处理映射成输入控制模块Ci和和输出控制模块输出控制模块Co的下属模块。的下属模块。变换中心的下层模块,是把每个处理映射成变变换中心的下层模块,是把每个处理映射成变换中心控制模块换中心控制模块Ct的一个直接下属模块。的一个直接下属模块。斗秘升降锄取擦揖迭敛叶枪册

98、行诌佐轰春菏聚薪虹蓑羡瘫涪树束啥霹额股软件工程导论第五版软件工程导论第五版ABCDFEGHIJK变换中心变换中心输入输入输出输出主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块CiDCBAEFGIHJK粥土纲便软空逐瞥硬想咙毫渤龋匀笼岔息邓阔笛礼农朱世饼彼座颗唬症铣软件工程导论第五版软件工程导论第五版事事务务设设计计就就是是从从事事务务型型数数据据流流图图映映射射出出软软件件模模块块结结构构的的过过程程,也也称称为为以以事事务务为为中心的设计。中心的设计。5.5.4事务设计事务设计酒茂苍彩厢束迫悬鬼咀咎仲须如赌但檀卯庆瞳嘿噶惜笼墙席实氧留

99、胶站黄软件工程导论第五版软件工程导论第五版事务设计的基本方法有两步:事务设计的基本方法有两步:1)建立主控模块、接收输入类型分)建立主控模块、接收输入类型分析模块和事务调度模块;析模块和事务调度模块;主模块主模块调度调度输入类型分析输入类型分析耪嘎赞渴哺奸嘿戌拒恶驱滦抠题挛符检卸咬铲绽称驭绅匙约度姓淬捉轴重软件工程导论第五版软件工程导论第五版2)分别设计输入类型分析模块和调度模块的)分别设计输入类型分析模块和调度模块的下层模块结构。下层模块结构。 方法是:将输出的每条通路作为调度模块的方法是:将输出的每条通路作为调度模块的一个判断分支,而输入类型分析模块的下层模一个判断分支,而输入类型分析模块

100、的下层模块与变换设计类似。块与变换设计类似。擦了县咏堑展鹰强烛弱求婿追疮虫锥鞠秸瘸蔽速贴迷师催京钵俺旁略骆葛软件工程导论第五版软件工程导论第五版I2I3I1TCA1B1C1A2B2C2事务中心事务中心主模块主模块调度调度输入类型分析输入类型分析I1I3I2A1A2B1B2C1C2光悠庭嚏协更厄朗千踩觉芳铆哀拖谤矿屉使溅遮壶窑贬础制遂美呢载陛翱软件工程导论第五版软件工程导论第五版第第5章小结章小结概要概要设计说设计说明明书书该说该说明明书书是概要是概要实际阶实际阶段的工作成果,它段的工作成果,它应说应说明明功能分配、模功能分配、模块块划分、程序的划分、程序的总总体体结结构、构、输输入入输输出出以

101、及接口以及接口设计设计、运行、运行设计设计、数据、数据结结构构设计设计和出和出错处错处理理设计设计等,等,为详细设计为详细设计提供基提供基础础。春羌盾侠威苗筛潦纯真袍鹤烂骇藉凹鳃凶伶奈杠梳煎坦段娩毯舷阿与句住软件工程导论第五版软件工程导论第五版第第6章:详细设计章:详细设计目标目标:确定如何具体实现所要求的系统。:确定如何具体实现所要求的系统。不不是是具具体体编编写写程程序序,而而是是设设计计程程序序的的“蓝图蓝图”。详详细细设设计计的的结结果果决决定定最最终终程程序序代代码码的的质量。质量。装掂榴琢咸啮种亨盛择辜抢犊粕义葱奢坍扦屑矛苑误氖未盗袭吾琼默恢魔软件工程导论第五版软件工程导论第五版E

102、.W.Dijkstra最早提出结构程序设计:程序质量与最早提出结构程序设计:程序质量与程序中包含的程序中包含的Goto语句的数量成反比(语句的数量成反比(1965)。)。1966,Bohm,Jacopini,证明了只用,证明了只用“顺序顺序”、“选择选择”、“循环循环”控制结构就能实现任何单入口单出口程序。控制结构就能实现任何单入口单出口程序。6.1结构程序设计结构程序设计健豢耀驰粉粳柯萍鞋瘦情涛樱畦陪镑锐早遣禽囱侗陷级沟及域轮浑令爬澄软件工程导论第五版软件工程导论第五版理论上,最基本的控制结构只有两种:顺序、理论上,最基本的控制结构只有两种:顺序、循环结构(选择结构可由其两者构造)。循环结构

103、(选择结构可由其两者构造)。学界认识到,不是简单去掉学界认识到,不是简单去掉Goto语句的问题,语句的问题,而是要创立一种新的程序设计方法。而是要创立一种新的程序设计方法。结构化程序设计(结构化程序设计(IBM率先成功运用)。率先成功运用)。仁囊另粟牛浓扔谭汤木筐扮坷蚂丸抽类评店仙拟沈脚砧炒吹虚抽篱但爵议软件工程导论第五版软件工程导论第五版结构程序设计结构程序设计:一一种种设设计计程程序序的的技技术术,它它采采用用自自顶顶向向下下逐逐步步求求精精的的设设计计方方法法和和单单入入口口单单出出口口的控制结构。的控制结构。 砧戍帜殆屁厢腐例库鸵属洲脐悦舌耻疡罩汀香窗舒着坪警剔独搐小静络惑软件工程导论

104、第五版软件工程导论第五版使用结构程序设计技术的好处使用结构程序设计技术的好处:1)提高软件开发工程的成功率和生产率;)提高软件开发工程的成功率和生产率;2)系统有清晰的层次结构,容易阅读理解;)系统有清晰的层次结构,容易阅读理解;3)单入口单出口的控制结构,容易诊断纠正;)单入口单出口的控制结构,容易诊断纠正;4)模块化可以使得软件可以重用;)模块化可以使得软件可以重用;5)程序逻辑结构清晰,有利于程序正确性证明。)程序逻辑结构清晰,有利于程序正确性证明。鞍衣葛号寓廖傅税篙跋秩挛王五少孤谊挽糯残岳彤攒凶匠诸挽宰棠染逞途软件工程导论第五版软件工程导论第五版经典的结构程序设计经典的结构程序设计:只

105、允许使用顺序、:只允许使用顺序、IF_THEN_ELSE选择和选择和DO_WHILE循环;循环;扩展的结构程序设计扩展的结构程序设计:除了三种基本控制结构,:除了三种基本控制结构,还使用还使用DO_CASE和和DO_UNTIL循环;循环;修正的结构程序设计修正的结构程序设计:除了三种基本控制结构:除了三种基本控制结构和两种扩充结构,还使用和两种扩充结构,还使用BREAK等结构。等结构。惜仁抿娶切芹丝仟巢郎扇颧耶窗擎琅巧攫澳程曲苟讣幽弦辊淳寺猎橇嗡琉软件工程导论第五版软件工程导论第五版流程图通常由三种结点组成:流程图通常由三种结点组成:1)函数结点函数结点如如果果一一个个结结点点有有一一个个入入

106、口口线线和和一个出口线,则称为函数结点。一个出口线,则称为函数结点。由于函数结点一般对应于赋值由于函数结点一般对应于赋值语句,所以语句,所以F也表示了这一个结点也表示了这一个结点对应的函数关系。对应的函数关系。F函数结点函数结点6.1.1结构化程序结构化程序6.1.1.1控制结构控制结构吵备皱炽躇裔菲阎轰睛囊缓巍客墟爽哪耽狠困烈邪漫顶恕偿趁秸躁您劫月软件工程导论第五版软件工程导论第五版2)谓词结点谓词结点如果一个结点有一个入口线和两个出口线,如果一个结点有一个入口线和两个出口线,而且它不改变程序的数据项的值,则称为谓词而且它不改变程序的数据项的值,则称为谓词结点。结点。P是一个谓词,根据是一个

107、谓词,根据P的逻辑值(的逻辑值(T或或F),),结点有不同的出口。结点有不同的出口。P谓词结点谓词结点烘鹅猴稼冀三太需蚜想奢悲弊惩低宛人凿崖向宋完温秧昼待血藤恕梧宛骂软件工程导论第五版软件工程导论第五版3)汇点汇点 如果一个结点有两个或多个入口线和一个出如果一个结点有两个或多个入口线和一个出口线,而且它不执行任何运算,则称为汇点口线,而且它不执行任何运算,则称为汇点。汇点汇点 汇点的简略表示汇点的简略表示情竞珐晕砌疮怨泪突呐炬把徒帮乾叼蚌庚滓润衍流滓耸权仗建嘛勿鹏博邮软件工程导论第五版软件工程导论第五版1)顺序结构顺序结构:相当于:相当于“A、B”2.三种基本控制结构三种基本控制结构AB(a)

108、顺序结构顺序结构瞎叠踩瞬受奇吉牟蓉寡愤涅旅府板墟威靛楞坎挎香腻胚铰煌颐公纬赔吩而软件工程导论第五版软件工程导论第五版2)选择结构选择结构相当于相当于“IfexpthenAelseBendif”ABexp(b)选择结构选择结构酗捉株熙袱邓译龄颜朽晾夷廷执夺纂球余痛擞悄侯闺果雾臆拖梦众曲姓脱软件工程导论第五版软件工程导论第五版3)循环结构循环结构:相当于:相当于“WhileexpdoA”A(c)循环结构循环结构exp步摇早踪一肠播碟微亮崖川厩态社廷设硒苑玻训嗡可厉密缝磁蒜冯上彬艾软件工程导论第五版软件工程导论第五版1)多分支结构多分支结构相当于相当于“CaseIofI=1:C1;I=2:C2;I=

109、3:C3;I=n:Cn”3. 扩充两种控制结构扩充两种控制结构CnC3C1C2(d)(d)多分支结构多分支结构I=?屁澜淮币秩嫩寝所阻绳气庸厂铜日作篙泳艾珊绒雁应从粹亩涪欺钒复迈云软件工程导论第五版软件工程导论第五版2)UNTIL循环结构循环结构相当于相当于“RepeatAUntilexp”A(e)UNTIL循环循环exp劣砾蚊镇睹况巢浚殖宾辫尾郴叼由秀褪焕杀湘无柴容毗铣汗尧具隙盐龚皱软件工程导论第五版软件工程导论第五版6.1.1.2正规程序正规程序定定义义1:一一个个流流程程图图程程序序如如果果满满足足下下面面两两个个条件,称为正规程序:条件,称为正规程序:1)具有一个入口线和一个出口线;)

110、具有一个入口线和一个出口线;2)对每一个结点,都有一条从入口线到出口)对每一个结点,都有一条从入口线到出口线的通路通过该结点。线的通路通过该结点。柒份豫块兰灯缩剖铜层吩唁弛牌郊尼肆槛麦冲形炎饮尊是酮肮拧姨平凝镰软件工程导论第五版软件工程导论第五版 由于正规程序有一个入口线和一个出口线,因由于正规程序有一个入口线和一个出口线,因而一个正规程序总可以抽象为一个而一个正规程序总可以抽象为一个函数结点函数结点。 F函数结点函数结点纤汤禽烛怖遭谈循赊网破巳屑病缄鬼变先管弧硫编抉悔壬署剐婆霞沤躯藕软件工程导论第五版软件工程导论第五版定义定义2:如果一个正规程序的某个部分仍然:如果一个正规程序的某个部分仍然

111、是正规程序,那么称它为该正规程序的正是正规程序,那么称它为该正规程序的正规子程序。规子程序。穿绳氯誉炬冕尽产兹旷磁朴登生楚捞介苹附冻培眯绑遍关籍禽朵墨谣哮用软件工程导论第五版软件工程导论第五版先给出一个概念:先给出一个概念:封闭结构封闭结构定定义义3:流流程程图图中中,两两个个结结点点之之间间所所有有没没有有重重复复结结点点的的通通路路组组成成的的结结构构称称为为封封闭闭结构。结构。6.1.1.3基本程序基本程序激咀陵外徊臼鸳殴掘萄嘶余瑞为芦磊维伏乃教掩移诲惺秦述概摔夺重拜拱软件工程导论第五版软件工程导论第五版如图:封闭结构为如图:封闭结构为a-b1-b2-b3;c1-c2;d1-d2-d3;

112、e-fab1b2b3c2c1d1d2d3ef捂赎釉枉殴狮牢矿本尿列颗怜扬面链踞烧玻疲溢菌唾冗缉柒茨毯交戒条领软件工程导论第五版软件工程导论第五版1)不不包包括括多多于于一一个个结结点点的的正正规规子子程程序序,即即它它是是一一种种不不可可再再分分解解的的正正规规程程序序;(程程序序自自身身不不可可视视为正规子程序)为正规子程序)2)如果存在封闭结构,封闭结构都是正规程序。)如果存在封闭结构,封闭结构都是正规程序。6.1.1.3基本程序基本程序定定义义4:一一个个正正规规程程序序,如如果果满满足足以以下下两两个个条条件件,则称之为则称之为基本程序基本程序:兴体翌小拖搬凳署暖排锋楚致鸽损贱贾岛芋型

113、挥舟兢吊刃吨睛颧俱蜗龋锦软件工程导论第五版软件工程导论第五版基本程序形式有多种,前面提到的三种基本程序形式有多种,前面提到的三种基本控制结构(基本控制结构(顺序结构、选择结构、循环顺序结构、选择结构、循环结构结构)和两个扩充控制结构()和两个扩充控制结构(多分支结构、多分支结构、UNTIL循环结构循环结构)都是基本程序。)都是基本程序。阀恐寂诌溅摧贤渗妇恫舒枪咋员纯夜弗良手嵌判咕贮霍愁杭耶故毛确玛脾软件工程导论第五版软件工程导论第五版定义定义5:用以构造程序的基本程序的集合称为用以构造程序的基本程序的集合称为基集合基集合。如:如:顺序,顺序,if-then-else,whiledo顺序,顺序,

114、if-then-else,repeat-until都是基集合。都是基集合。佛伶崩晦贴砂墓键希郴敝困玄杏至舞执传庞益袍砌摩缘休滤斯舟谅预沛四软件工程导论第五版软件工程导论第五版定义定义6:如果一个基本程序的函数结点用另一:如果一个基本程序的函数结点用另一个基本函数程序替换,产生的新的正规程序称个基本函数程序替换,产生的新的正规程序称为为复合程序复合程序。A复合程序复合程序expBexpA:循环结构的循环结构的A函数结点用另一循环结构代替,即嵌套函数结点用另一循环结构代替,即嵌套循环,就产生了复合程序。循环,就产生了复合程序。敷妇党练堵腿淄畦藏途咏翅瓜瞬软胳粘哇亿糙傅豢旁渗席柱澳皿幸侈母嚷软件工程

115、导论第五版软件工程导论第五版 由于复合程序是由一些基本程序组成,因此,由于复合程序是由一些基本程序组成,因此,无论从总体上看或是从每个组成部分看,都满足无论从总体上看或是从每个组成部分看,都满足“一个入口,一个出口一个入口,一个出口”的原则,这样的程序就是通的原则,这样的程序就是通常说的好结构程序,或者结构化程序。常说的好结构程序,或者结构化程序。而渺矽蕴默催辩夺益捞夜显恬锌湃雏洒敦诧娥剐留侯薛九祥询敏碟出醋诈软件工程导论第五版软件工程导论第五版定定义义7:由由基基本本程程序序的的一一个个固固定定的的基基集集合合构造出的复合程序,称为构造出的复合程序,称为结构化程序结构化程序。悲搏浦桑钦噶氧霍

116、伴之删此兰联透踢抢椰五秒舞坊债卜蚀月汝落臂嘶匆豢软件工程导论第五版软件工程导论第五版结结构构化化定定理理:任任一一正正规规程程序序都都可可以以函函数数等等价价于于一一个个由由基基集集合合顺顺序序,If-else-then,While-do产产生的结构化程序。生的结构化程序。实际上,只要能证明可以将任一正规程序转实际上,只要能证明可以将任一正规程序转换成等价的结构化程序就可以证明这个结构化换成等价的结构化程序就可以证明这个结构化定理。定理。6.1.2结构化定理结构化定理言蜗卑祷徊框达暮沟烈久搽耶钞背识麦僚空沸驰采口浅辞馋宠滞凝甚除躬软件工程导论第五版软件工程导论第五版证明证明:(分三步进行结构化

117、程序的转换):(分三步进行结构化程序的转换)步步骤骤一一:从从程程序序入入口口处处开开始始给给程程序序的的函函数数结结点点和和谓谓词词结结点点编编号号:1,2,3,n,同同时时,将将每每个个函函数数和和谓谓词词结结点点的的出出口口线线用用它它后后面面的的结结点点的的号号码码进进行行编编号号,如如果果出出口口线线后后面面没没有有结结点点,也也就就是是说说该该结结点点的的出出口口线线与与程程序序的的出出口口线线相相连连时,出口线编号为时,出口线编号为0。陌扛拉余傍铃价抗捧避佃点喳悠占俩葵远嘎宵拿盈挤扼敲静仲骤贬绞剐五软件工程导论第五版软件工程导论第五版步骤二:对原程序中每一个编号为步骤二:对原程序

118、中每一个编号为i,出口线编出口线编号为号为j的函数结点的函数结点H,构造一个新的序列程序,构造一个新的序列程序Gi,如图:,如图:HGi=HL:=jiij牧搅贪背处撮尹哭稀姓崭惦隘芬傲廷券庶灶非集初貌应坚煞顺瞎赣皆盅风软件工程导论第五版软件工程导论第五版类似地,对于每个编号为类似地,对于每个编号为i,出口线分别为,出口线分别为j和和k的谓词结点,构造一个新的选择程序的谓词结点,构造一个新的选择程序Gi,如图:,如图:PjkiGi=PiL:=jL:=k极朵既忘星归陡柬涵箍滔既九蚊密领挚泼北腕锗阑郑雏秆伙或憋湘绝誓贸软件工程导论第五版软件工程导论第五版步骤三:步骤三:利用已经得到的一些利用已经得到

119、的一些Gi程序(程序(i=1,2,3,n),),按下图的形式构造一个按下图的形式构造一个While-do循环。循环。图图中中的的循循环环体体是是一一个个对对L从从1到到n的的嵌嵌套套选选择择(if-then-else)程程序序,转转换换后后的的程程序序与与原原程程序序是是等等价价的的,是是由由基基集集合合顺顺序序、选选择择、循循环环所所复复合合成的结构化程序。成的结构化程序。L:=1L0L=1L=nL=2GnL:=0G2G1TTTTFFFF稚叙竖烯苛浚菠吕浑尔沮墨绘羌许刚范加父还筒六垄午唬神秆崖遭气鞠鹤软件工程导论第五版软件工程导论第五版 这种方法并不是唯一的把程序转变为结构化程这种方法并不是

120、唯一的把程序转变为结构化程序的方法,所得的程序也不一定是最好的。序的方法,所得的程序也不一定是最好的。 它的目的是为了证明结构化定理。它的目的是为了证明结构化定理。达佯眺搐孽拱吨晒纂半访洁葵纫寺臃择衍拂懊载究秽妨簿钟猛黎陌妈钾警软件工程导论第五版软件工程导论第五版例例1:把把图图示示的的非非结结构构化化程程序序转转换换成成结结构构化化程程序序(用结构化定理证明过程提供的方法转换)(用结构化定理证明过程提供的方法转换)6.1.3非结构化程序到结构化程序的转换非结构化程序到结构化程序的转换P1P2AB非结构化程序例图非结构化程序例图剥咕汀肠熊幼啊裤虾履苛问璃耽潞簿钩技硫去辊婉穷拖乡驻待芜轨亦咬怯软

121、件工程导论第五版软件工程导论第五版1)进行结点及其出口线的编号;)进行结点及其出口线的编号;1340202341P1P2AB非结构化程序例图非结构化程序例图谱巾拴祸嗜迪弱役驾逛唬犯赁槽左钒疾弧鸣嗅搂锯压崩指径洋河咯兢边藻软件工程导论第五版软件工程导论第五版P1321G1=P11L:=3L:=22)将图中的四个结点构造新的程序)将图中的四个结点构造新的程序G1、G2、G3、G4;过飞瑞蹬言沟市啦茹淑蛆饺真赡崎伸遁榴驰酞袋考桑芋吮晾庄督疏皿歌效软件工程导论第五版软件工程导论第五版BG2=BL:=0220允病仓待子哨扭霄溢唐骄玄卯肪碉恿犊坎煮蝎彩缴挠污肿蓖睬拓扫镊倦爷软件工程导论第五版软件工程导论第

122、五版P2403G3=P23L:=4L:=0私碌少拯召剪帜满恐皆星荤请启爵突遣偷秤帜丧盘筹雀日烹戮交般锐宝去软件工程导论第五版软件工程导论第五版AG4=AL:=1441谣茧晒绎屈澡宇淑方混靳泻烟放袁阶镣趣蓬攘算肺雷坎彬舒雾迢袱詹参酝软件工程导论第五版软件工程导论第五版3)利用得到的)利用得到的G1、G2、G3、G4按介绍的方法构造一个按介绍的方法构造一个While-do循环,最终结果如图:循环,最终结果如图:L:=1L0L=1L=4L=2L:=0P1L:=3L:=2BL:=0L=3P2L:=4L:=0AL:=1转化后的结构化程序图转化后的结构化程序图FFFFFTTTTT衫记岗噶所摧土夜病渐霖熊吴

123、邢由淮箱学糊稚煽鳖抬扼夺处凋饱裴梢箱潞软件工程导论第五版软件工程导论第五版6.2人机界面设计人机界面设计6.2.1设计问题设计问题1.系统响应时间;系统响应时间;2.用户帮助;用户帮助;3.出错信息处理;出错信息处理;4.命令交互命令交互术遥撵专滨垃劈浙霹酱嫉馋穗抛绞慎议鹅府柯摔案脉谜硒醉抗炙样姐蝗唾软件工程导论第五版软件工程导论第五版6.2.2设计过程设计过程6.2.3人机界面设计指南人机界面设计指南1.一般交互指南;一般交互指南;2.信息显示指南;信息显示指南;3.数据输入指南。数据输入指南。和洪鞋门讫暮疙陵稽腥陵咆袖趾羞埠既座射洼邻黄歪耿迷澜染锻锗知抖酋软件工程导论第五版软件工程导论第五

124、版6.3过程设计的工具过程设计的工具6.3.1程序流程图程序流程图 程程序序流流程程图图:是是一一种种描描述述程程序序的的控控制制结结构流程和指令执行情况的有向图。构流程和指令执行情况的有向图。 历历史史悠悠久久、使使用用广广泛泛、直直观观描描绘绘控控制制流流程、便于初学者掌握。程、便于初学者掌握。愿株阉底贡纂卯熏蛮喂洪数盒颤屋么捌孟烫伐里成娇祖酗纱吕僧驱趴勘胸软件工程导论第五版软件工程导论第五版ASP检索程序流程图:检索程序流程图:开 始加载Include文件定义记数变量、作物变量创建数据库链接对象、记录集对象打开数据库用客户提交的值对作物变量赋值SQL查询语句赋值通过记录集对象打开SQL语

125、句设定的记录记录集末端?记数变量加1,输出记录字段值及图像转跳下一记录关闭数据库链接对象、记录集对象,并释放资源输出记录数和提示结 束YN碎些事馈五胰硕束暮调昂歪瘟藻镇识跋驼聂赐累洛玫撩劫鞋濒侨爆娇拎初软件工程导论第五版软件工程导论第五版2)程程序序流流程程图图中中用用箭箭头头代代表表控控制制流流,因因此此程程序序员员不不受受任任何何约约束束,可可以以完完全全不不顾顾结结构构程程序设计的精神,随意转移控制。序设计的精神,随意转移控制。3)程序流程图不易表示数据结构。)程序流程图不易表示数据结构。程序流程图的程序流程图的缺点缺点:1)程程序序流流程程图图本本质质上上不不是是逐逐步步求求精精的的好

126、好工工具具,它它诱诱使使程程序序员员过过早早地地考考虑虑程程序序的的控控制制流流程程,而不去考虑程序的全局结构。而不去考虑程序的全局结构。驰看茅儡多门孝冈佑靠惨翻跃排旗版耪蜀蟹臃钒致坎取噪瘤昏言梁槐脾陈软件工程导论第五版软件工程导论第五版6.3.2盒图(盒图(N-S图)图)ABC条件条件FTElseBThenACase条件条件Case1ACase2BCasenN循环条件循环条件循环条件循环条件Do-While部分部分Do-Until部分部分Aa.顺序结构顺序结构b.选择结构选择结构c.多分支结构多分支结构d.当型循环结构当型循环结构e.直到型循环结构直到型循环结构f.调用子程序调用子程序A图图

127、6.4盒图的基本符号盒图的基本符号疏压玖娃拾吊骑湾桃麻精玛太猎帚吮驰誊搅芍碴含声渍胖陇啪籽户殴圆所软件工程导论第五版软件工程导论第五版盒图的特点有:盒图的特点有:1)功能域明确,可以从盒图上一眼就看出来;)功能域明确,可以从盒图上一眼就看出来;2)不可能任意转移控制;)不可能任意转移控制;3)很容易确定局部和全程数据的作用域;)很容易确定局部和全程数据的作用域; 4)很容易表现嵌套关系,也可以表示模块的层)很容易表现嵌套关系,也可以表示模块的层次结构。次结构。铭轩氮棵遇特伊蛾叼芭馆砷砂交心鼠尘舌丹律藩递绕塌澡掸毒损讥键为菩软件工程导论第五版软件工程导论第五版FTBCDACase1E2F3G4H

128、A:盒图例子盒图例子猴挠涛施孔府宁斗屡兢鹤惕入鲸臀狮跑块盈股搐素丛娇莹妹脱亨电憎抵决软件工程导论第五版软件工程导论第五版PAD(ProblemAnalysisDiagram)是是问问题题分析图。分析图。日立公司发明和推广(日立公司发明和推广(1973)。)。6.3.3PAD图图袁闰扰究跌盏袁骚拢皋准剑夸僧箍加岁塔胀涛瘫胳扦巍绸陋俱再献敏痛稠软件工程导论第五版软件工程导论第五版P1P2WHILECUNTILCPPP2P1CP1P2PnX=L1L2Lndefa.顺序结构顺序结构b.当型循环结构当型循环结构c.直到型循环结构直到型循环结构d.选择结构选择结构e.多分支结构多分支结构f.语句标号语句标

129、号g.定义定义图图6.5PAD图的基本符号图的基本符号善努赁袋讳枕秤亮蛰泵页饵咬该纂脱城恫妮剖拖休烯母诞摘跺稚钢耗凌资软件工程导论第五版软件工程导论第五版例子:例子:P1P2UNTILC2P7P4P3Cdefa.初始的初始的PAD图图图图6.6PAD图例子图例子b.使用使用def符号细化处理框符号细化处理框P2P5P2P8C1UNTILC2P9P10P6智袜靖鸭迟赡恳烽披柜虞搅骆柱坎作睦嗣攫郁嫁罢匙扁肯淹努抢财港货怎软件工程导论第五版软件工程导论第五版PAD图的优点:图的优点:1)使使用用表表示示结结构构化化控控制制结结构构的的PAD符符号号所所设设计计出来的程序必然是结构化程序;出来的程序必

130、然是结构化程序;2)PAD图所描绘的程序结构十分清晰。图所描绘的程序结构十分清晰。图图中中最最左左面面的的竖竖线线是是程程序序的的主主线线,即即第第一一层层结结构构。随随着着程程序序层层次次的的增增加加,PAD图图逐逐渐渐向向右右延延伸伸,每每增增加加一一个个层层次次,图图形形向向右右扩扩展展一一条条竖竖线线。PAD图中竖线的总条数就是程序的层次数;图中竖线的总条数就是程序的层次数;绒谣杨棱沉贫汝贵撕契狙僚瘟机晒乔同质烃言抄坎坡袒盗眨舰农竿恍奶差软件工程导论第五版软件工程导论第五版3)用用PAD图图表表现现程程序序,通通俗俗易易懂懂,程程序序从从图图中中最最左左竖竖线线上上端端的的结结点点开开

131、始始执执行行,自自上上而而下下,从左向右顺序执行,遍历所有结点;从左向右顺序执行,遍历所有结点;童孟鸯垛愧械锤衅散谢街插求狗肆臂沧寥叶铝范瓤房助婶有赎帽宠扎趋哀软件工程导论第五版软件工程导论第五版4)容容易易将将PAD图图转转换换成成高高级级语语言言源源程程序序,这这种转换可以用软件工具自动完成;种转换可以用软件工具自动完成;5)可可用用于于表表示示程程序序逻逻辑辑,也也可可用用于于描描绘绘数数据据结构;结构;6)PAD图图的的符符号号支支持持自自顶顶向向下下、逐逐步步求求精精的的方法。方法。撞对星牌铺唱昼殴院庆乱只彻将夹魏赣健度捣疚詹伺缚篙苯汲忍阁略采肠软件工程导论第五版软件工程导论第五版判

132、定表由四部分组成:判定表由四部分组成: 左上部列出所有左上部列出所有条件条件 左下部是所有可能做的左下部是所有可能做的动作动作 右上部表示各种右上部表示各种条件组合条件组合 右下部是和每种条件组合相右下部是和每种条件组合相对应的动作对应的动作6.3.4判定表判定表填由酪聪德曼顷倾薄俞绿眨泽霞仲而吏抿碾遭旁饵蛙邮荤摩牌确玉囊雾乓软件工程导论第五版软件工程导论第五版123456789国内乘客国内乘客TTTTFFFF头等舱头等舱TFTFTFTF残疾乘客残疾乘客FFTTFFTT行李重量行李重量W30TFFFFFFFF免费免费(W-30)2(W-30)3(W-30)4(W-30)6(W-30)8(W-3

133、0)12芬柒间犯吵钓稽换傲按倡竣桓综慌斟拜隙膊抵聘至衡挣贫徘锌璃嫡捆陀帚软件工程导论第五版软件工程导论第五版6.3.5判定树判定树判定树是判定表的变种。判定树是判定表的变种。行李重量行李重量W30行李重量行李重量W30国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客(W-30)2(W-30)4(W-30)3(W-30)6(W-30)4(W-30)8(W-30)6(W-30)12免费免费图图6.7用判定树表示计算行李费的算法用判定树表示计

134、算行李费的算法行行李李费费算算法法谷虞伐疙干蜀丹呜缉肠矣遭镐承围癣汗筹屑萄般改首诈蓄诬脉忆貌撂咒箔软件工程导论第五版软件工程导论第五版PDL也称为伪码。也称为伪码。如:如:ifI0then执行订单数据输入模块执行订单数据输入模块else报告出错信息报告出错信息endif6.3.6过程设计语言(过程设计语言(PDL)擒求征稀菊伯接陛稀所即坡琅桔夜苹失希抓掉辩乎忆窥蛾他矮信车抡钳但软件工程导论第五版软件工程导论第五版PDL的优点的优点:1)可以作为注释直接插在源程序中间;)可以作为注释直接插在源程序中间;2)可可以以使使用用普普通通的的正正文文编编辑辑程程序序或或文文字字处处理理系统来完成系统来完

135、成PDL的书写和编辑工作;的书写和编辑工作;3)现现在在已已经经有有一一些些自自动动处处理理程程序序可可以以自自动动地地把把PDL生成程序代码。生成程序代码。PDL的缺点的缺点:不如图形工具形象直观。:不如图形工具形象直观。伴煤巍慑翼诱者冕芭漏瀑涸蛊珠秦剪券萤公樊碟创腹寥剃瞥衰牌镍奥彬倒软件工程导论第五版软件工程导论第五版6.4面向数据结构的设计方法面向数据结构的设计方法1)顺序结构)顺序结构ABCD图图6.8A由由B、C、D三个三个元素顺序组成元素顺序组成6.4.1Jackson图图摹贞吻卖房舟忙烬钟察鲍钢认蔷筹垂叙舜嫁式洁懊橱运扦佬辛蛊忻豆旬狭软件工程导论第五版软件工程导论第五版2)选择结

136、构)选择结构ABCD图图6.9根据条件根据条件A选择选择B、C、D中的某一个中的某一个羔休粳始隅铝达免黔苔霖撂燃历门帽愚登垂程粳骚郁畸油蒜铃攒估抱啼邢软件工程导论第五版软件工程导论第五版3)重复结构)重复结构AB*图图6.10A由由B出出现现N次组成次组成杭率抬强备司帜卿笆病剃伟托堕涪洼辑献榴喉粤杀壁蜀慰埠孰舷沤坛造搐软件工程导论第五版软件工程导论第五版6.4.2改进的改进的Jackson图图ABCD图图6.11改进的改进的Jackson图图ABCDAB-AB*S(i)S(i)I(i)(a)(b)(c)(d)磨钻恰划贩绰底惮丫濒胀紫浇爆郸元冠数蕊虹摈橙巳钧敦矩系长餐没职艾软件工程导论第五版软件

137、工程导论第五版Jackson方法的目标是:方法的目标是: 得出对程序处理过程的详细描述。得出对程序处理过程的详细描述。6.4.3Jackson方法方法健囱援摸被眩恐养炸衷司饥跑债峻象喳赤捡菠衬葡睛上烧襟杆痢霜坠嘎嗓软件工程导论第五版软件工程导论第五版Jackson结构程序设计方法由五个步骤组成:结构程序设计方法由五个步骤组成:1)分分析析并并确确定定输输入入数数据据和和输输出出数数据据的的逻逻辑辑结结构构,并用,并用Jackson图描绘这些数据结构;图描绘这些数据结构;2)找出输入数据结构和输出数据结构中有对应)找出输入数据结构和输出数据结构中有对应关系的数据单元;关系的数据单元;命慈冒醛镑驴

138、晤赏兹撵述侍浓撞谊墟脱捌斩巴崭壹转厚滦婚扬控嫁悠度阜软件工程导论第五版软件工程导论第五版3)用用三三条条规规则则从从描描绘绘数数据据结结构构的的Jackson图图导出描绘程序结构的导出描绘程序结构的Jackson图:图:A为为每每对对有有对对应应关关系系的的数数据据单单元元,按按照照它它们们在在数数据据结结构构图图中中的的层层次次在在程程序序结结构构图图的的相相应层次画一个处理框;应层次画一个处理框;冲欠蟹盆沥移泵律循兔氓遇等郴节夹臂饭蘑钡仔届铸批匪皮笋庭燕辞陡理软件工程导论第五版软件工程导论第五版B根根据据输输入入数数据据结结构构中中剩剩余余的的每每个个数数据据单单元元所所处处的的层层次次,

139、在在程程序序结结构构图图的的相相应应层层次次分分别为它们画上对应的处理框;别为它们画上对应的处理框;C根根据据输输出出数数据据结结构构中中剩剩余余的的每每个个数数据据单单元元所所处处的的层层次次,在在程程序序结结构构图图的的相相应应层层次次分分别为它们画上对应的处理框;别为它们画上对应的处理框;吐旧洞皂囱葵泰寨迎初焙胁爷琉咱插匆操全淆喷瞻码芥往牛堆贤疟脾围酝软件工程导论第五版软件工程导论第五版4)列列出出所所有有操操作作和和条条件件(包包括括分分支支条条件件和和循循环环结结束束条条件件),并并且且把把它它们们分分配配到到程程序序结结构图的适当位置;构图的适当位置;5)用伪码表示程序。)用伪码表

140、示程序。罗驯袄盆精炯睫台锈贷长勤钨采畦竿阉天职唐篱胜段刁挛抚柱可扯寥韩肛软件工程导论第五版软件工程导论第五版顺序结构顺序结构:AseqBCDAend与三种基本结构对应的伪码是:与三种基本结构对应的伪码是:泽馏嘱摧奏瓶驹梁鲁支怒孽埠湾图导屁祷惫栽局掣喀灿委吱淡辫驹嗅放俞软件工程导论第五版软件工程导论第五版选择结构选择结构Aselectcond1BAorcond2CAorcond3DAend呛位腊勾喝厅焙蘑覆肿渐度泵晕路钧饲湿魂蹿甄袖困泰标摸辆接绰亥规亭软件工程导论第五版软件工程导论第五版重复结构重复结构Aiteruntil(或或while)condBAend茬架惹腿猜守股做娠锣蚊怕铂佐浓静拌枢惟

141、论宝炸淑会炯狼户烩根莆领育软件工程导论第五版软件工程导论第五版例例:一个正文文件由若干记录组成,每个记录:一个正文文件由若干记录组成,每个记录是一个字符串。是一个字符串。如:如:Record1Record1:HowmanystagesarethereinthetraditionalHowmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?softwaredevelopmentmodel?Record2Record2:Afterenteringtheroom,walktothepersonAfterenteringtheroom,

142、walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.sittingnearesttoyouandgreethim/herwitha“highfive”.Record3Record3:Whatareencapsulatedintoanobject?Whatareencapsulatedintoanobject?Record4Record4:Whatdiagramisthefollowingdiagram?SimplyWhatdiagramisthefollowingdiagram?Simplydescribetheme

143、aningofit.describethemeaningofit. 姿俏峡吩撅赦了炭鸭欠竖峪名骂毗犯儿巢俄裕绸彼霖鸿狗森皋激寝邦颐懊软件工程导论第五版软件工程导论第五版要求:要求:1)设计程序统计每个记录中空格字符的个数,)设计程序统计每个记录中空格字符的个数,输出数据的格式是,每读入一个记录(字符输出数据的格式是,每读入一个记录(字符串)之后,另起一行打印出这个字符串及其串)之后,另起一行打印出这个字符串及其空格数;空格数;2)最后打印出文件中空格的总个数。)最后打印出文件中空格的总个数。誓畔狙叮空殿允敏提羌渐毖搔妊楔跺燕效茶厘驰芜南淡东床箱辟劲医暂附软件工程导论第五版软件工程导论第五版正文

144、文件正文文件字符串字符串*字符字符*空格空格非空格非空格输出表格输出表格表格体表格体空格总数空格总数串信息串信息*字符串字符串空格数空格数IISI(a)输入数据结构输入数据结构(b)输出数据结构输出数据结构图图6.12表示输入表示输入/输出数据结构的输出数据结构的Jackson图图分分析析输输入入、输输出出数数据据结结构构,用用Jackson图图描描绘绘,并并找找出出两两者对应的数据单元:者对应的数据单元:廊椎扇轩或稿宦碍胀锯贮宅沙胎营惺渴憨孽面徊憎慕件版可灰缴抿鞘涕辈软件工程导论第五版软件工程导论第五版统计空格统计空格程序体程序体印总数印总数处理字符串处理字符串*分析字符串分析字符串印空格数

145、印空格数印字符串印字符串分析字符分析字符*处理空格处理空格处理非空格处理非空格IIS图图6.13描绘统计空格程序结构的描绘统计空格程序结构的Jackson图图导出描绘程序结构的导出描绘程序结构的Jackson图:图:遍今橱龋鬃筷玻攘愉悲唐厄达容讥币典益兹冤戳吝抵臼焊琵王螺人胃键贴软件工程导论第五版软件工程导论第五版(1)停止)停止(2)打开文件)打开文件(3)关闭文件)关闭文件(4)印出字符串)印出字符串(5)印出空格数目)印出空格数目(6)印出空格总数)印出空格总数(7)sum:=sum+1(8)totalsum:=totalsum+sum(9)读入字符串)读入字符串(10)sum:=0(1

146、1)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1I(1)文件结束文件结束I(2)字符串结束字符串结束S(3)字符是空格字符是空格列出所有操作和条件:列出所有操作和条件:求闪扼舅喧蹦窒陀掳喀氓戏憾狄宿袭上掣寓荒营逢舀爽痰袭寝掠城厨惋伟软件工程导论第五版软件工程导论第五版统计空格统计空格程序体程序体印总数印总数处理字符串处理字符串*分析字符串分析字符串印空格数印空格数印字符串印字符串分析字符分析字符*处理空格处理空格处理非空格处理非空格I(1)I(2)S(3)图图6.14最终分配好操作和条件的最终分配好操作和条件的Jackson图图31119261

147、012458971313鄂屯老人尧放摇勘拧形臆泣痹缎彰丧劲鳃降痰强赫莽狮宾挎焙挥介榴将判软件工程导论第五版软件工程导论第五版6.5程序复杂度的定量度量程序复杂度的定量度量定量度量程序复杂度的作用:定量度量程序复杂度的作用:(1)可估算软件中错误的数量及软件开发工)可估算软件中错误的数量及软件开发工作量;作量;(2)度量的结果可用来比较不同设计或不同)度量的结果可用来比较不同设计或不同算法的优劣;算法的优劣;(3)程序的复杂度可作为模块规模的限度。)程序的复杂度可作为模块规模的限度。凯别可牙蛔釉尽命舀茫尊皑通戎像游翔读鳖素播了挎防惶追尚判贷淳泻攀软件工程导论第五版软件工程导论第五版1.流图流图“

148、退化退化”的程序流程图,仅描绘程序的控的程序流程图,仅描绘程序的控制流程,不表现对数据的具体操作及循环、制流程,不表现对数据的具体操作及循环、选择的条件。选择的条件。 6.5.1McCabe方法方法似呜旬榨眶著林塔踊豢虞鸭惯抚棠响摹锡渍沫镍溢曝舱涵烙椎匹铺景泽尽软件工程导论第五版软件工程导论第五版一个圆代表一条或多条语句;一个圆代表一条或多条语句;一个顺序结构可以合并成一个结点;一个顺序结构可以合并成一个结点;汇点也是结点;汇点也是结点;一个顺序处理框序列和一个判断框可一个顺序处理框序列和一个判断框可映射成一个结点。映射成一个结点。串潦锈熬委喧溪洼冗兄址泻零裂沽杠邱汕钝椭传晤磊核豌聘酬豺及转何

149、橙软件工程导论第五版软件工程导论第五版瞻诀驴摸苑吗隆扬笼弦销齐虚楚奢架绷夜沽啄刚斤酱靠集屎嗽绳茸瘁瓜竞软件工程导论第五版软件工程导论第五版复合条件:复合条件:包包含含了了一一个个或或多多个个布布尔尔运运算算符符( OR、 AND、NOR等)。等)。应应把把复复合合条条件件分分解解为为简简单单条条件件,每每个个条条件件对对应应一一个结点。个结点。疹鞋地迁芭挤蠕沦捐宋祝瘴腆蛇辜朵甫孕炕峰曝航古眶匆嘉畜荐永栏争毅软件工程导论第五版软件工程导论第五版2.计算环形复杂度的方法计算环形复杂度的方法1)环形复杂度)环形复杂度V(G)等于流图中的区域数;)等于流图中的区域数;2)环形复杂度)环形复杂度V(G)

150、EN+2,其中,其中E是流是流图中边的条数,图中边的条数,N是结点数;是结点数;3)环形复杂度)环形复杂度V(G)P1,其中,其中P为流图为流图中判定结点的数目。中判定结点的数目。官闭喧釜弃耘污嚎蔫陪总涌牺圈寅羡椭曹卷帛嫉镇嘱豆波筒刊驼虽享桨岗软件工程导论第五版软件工程导论第五版例:计算下列程序图的程序复杂度例:计算下列程序图的程序复杂度督什栖轴伺胯停攫衙阻纲棺研蛰肮旬捉梯蝴淌触谩吸羞晋贮啡空敞茎丝噬软件工程导论第五版软件工程导论第五版解:解:方法一:程序图把平面分为方法一:程序图把平面分为4个区域,程序复个区域,程序复杂度杂度V(G)4;方法二:边的条数方法二:边的条数E11,结点数,结点数

151、N9,程序,程序复杂度复杂度V(G)EN24;方法三:判定结点为方法三:判定结点为1、2、4点,数目为点,数目为P3个,所以个,所以V(G)P14。聘紊戒囚视税炊疡斯户获肿债票绒碗咖料概杰鲸架头埋瓜旧百点徊牟等弧软件工程导论第五版软件工程导论第五版3.环形复杂度的用途环形复杂度的用途对测试难度的一种定量度量,也能对软件最终对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。的可靠性给出某种预测。实践表明,模块规模以实践表明,模块规模以V(G)10为宜。为宜。硝膝侠杉赃檀爬砚虽斋季侮枣袱盈螟芯扬缕馋姚牧峪耳巾檬帽宋叠触促黎软件工程导论第五版软件工程导论第五版根根据据程程序序中中运运算算

152、符符和和操操作作数数的的总总数数来来度度量量程程序复杂度。序复杂度。N=N1+N2其中:其中:N定义为定义为程序长度程序长度;N1为程序中运算符出现的总次数;为程序中运算符出现的总次数;N2为操作数出现的总次数。为操作数出现的总次数。6.5.2Halstead方法方法逢婪谩辜散悍先育枪栓圣淋嚷烫唬细淑丢坯吕瞥衔蕴算喘埋钥钞介拳婚摆软件工程导论第五版软件工程导论第五版Halstead给出预测程序长度的公式为:给出预测程序长度的公式为:H=n1log2n1+n2log2n2其中:其中:H定义为程序预测长度;定义为程序预测长度;n1为为程程序序中中使使用用的的不不同同运运算算符符(包包括括关关键字)

153、的个数;键字)的个数;n2为为程程序序中中使使用用的的不不同同操操作作数数(变变量量和和常量)的个数。常量)的个数。浮扦弘逻下耐国摊省井气嚼盛舞焕膘凡忽肄辆遂苍雄悠餐录莉被矢扛扁咎软件工程导论第五版软件工程导论第五版多次验证都表明,程序的预测长度多次验证都表明,程序的预测长度H和和实际程序长度实际程序长度N非常接近。非常接近。Halstead还还给给出出了了预预测测程程序序中中包包含含错错误的个数的公式:误的个数的公式:E=Nlog2(n1+n2)/3000笺户遂弧匹妈译扭绰田溢靠谍观捍积临躬斤谈诽兔炕荔汤掂仔戎贱浙妻土软件工程导论第五版软件工程导论第五版第第6章小结章小结详细设计说详细设计说

154、明明书书着重描述每一模着重描述每一模块块是怎是怎样实现样实现的,包括的,包括实现实现算法、算法、逻辑逻辑流程等。流程等。挝胶迫袒仕善阿振泼曾操遵斑夏轧擞膛撒之技绅坝映凭皑挡挽话萌呼煽哭软件工程导论第五版软件工程导论第五版第7章:实现 编码和测试统称为实现。编码和测试统称为实现。编码:把软件设计结果翻译成程序。编码:把软件设计结果翻译成程序。测试:检测程序并改正错误的过程。测试:检测程序并改正错误的过程。为粟溃由壁坏翘办赐绢已霄此烙疑山旅想您轧蜂淡摩洽客媳终蟹奸柠嚷期软件工程导论第五版软件工程导论第五版 计计算算机机程程序序设设计计语语言言基基本本上上可可以以分分为为两两大类:大类:1.汇编语言

155、汇编语言;2.高级语言。高级语言。 7.1编码编码7.1.1选择程序设计语言选择程序设计语言筑蔚硕化坡僧具捆移灯赏仅朴苗六款兑堆济奖奋融赃臆臼炒腐窒署石鸵疼软件工程导论第五版软件工程导论第五版从应用特点看,高级语言可分为:从应用特点看,高级语言可分为:1)基础语言基础语言如如BASIC、FORTRAN、COBOL、ALGOL等等2)结构化语言结构化语言如如ALGOL、PL/1、PASCAL、C、ADA等等3)专用语言专用语言如如APL、BLISS、FORTH、LISP、PROLOG等等猪纂悯蜗颤涪义遵蜀俊也取凄姨滩赁札瑟耍堤素蹈争慎溢皿点伍更侯被萧软件工程导论第五版软件工程导论第五版选择一种编

156、程语言的理论标准:选择一种编程语言的理论标准:1)有理想的模块化机制;)有理想的模块化机制;2)可读性好的控制结构和数据结构;)可读性好的控制结构和数据结构;3)便于调试和提高软件可靠性;)便于调试和提高软件可靠性;4)编译程序发现程序错误的能力强;)编译程序发现程序错误的能力强;5)有良好的独立编译机制。)有良好的独立编译机制。耪瞅臭篙跳脊猜槽冰赛陶牡蛤逾尉燎懈堂诣邀棚洞佬甜暂烯薯伏斌识紫悠软件工程导论第五版软件工程导论第五版 选选择择语语言言时时除除了了考考虑虑理理论论上上的的标标准准,还还必必须同时考虑主要的实用标准:须同时考虑主要的实用标准:(1)系统用户要求)系统用户要求(2)可以使

157、用的编译程序)可以使用的编译程序(3)可以得到的软件工具)可以得到的软件工具(4)工程规模)工程规模(5)程序员知识)程序员知识(6)软件可移植性要求)软件可移植性要求(7)软件的应用领域)软件的应用领域孽蚂赦位崔硫烤秀单汐爬威茬近促帧砧绦馋复蚁祝揪清铲锄完野短王眷缎软件工程导论第五版软件工程导论第五版1.程序内部的文档程序内部的文档选选取取含含义义鲜鲜明明的的名名字字,如如果果使使用用缩缩写写,缩缩写规则要一致,并给每个名字加注释;写规则要一致,并给每个名字加注释;通通常常在在每每个个模模块块开开始始处处要要有有一一段段注注释释,描描述模块功能、算法、接口特点等;述模块功能、算法、接口特点等

158、;程程序序清清单单布布局局应应利利用用适适当当的的阶阶梯梯形形式式,使使程序的层次结构清晰明显。程序的层次结构清晰明显。7.1.2写程序的风格写程序的风格松咱染识炎工俱如敦园模话杂劫肪穴酵靳窥磋获串蓬兴妖烷印综惰抬枝惭软件工程导论第五版软件工程导论第五版2.数据说明数据说明数据说明的次序应该标准化,如按数据类型数据说明的次序应该标准化,如按数据类型确定说明的次序;确定说明的次序;多个变量名在一个语句中说明时,应该按字多个变量名在一个语句中说明时,应该按字母顺序排列这些变量;母顺序排列这些变量;如果设计时使用了复杂的数据结构,应该用如果设计时使用了复杂的数据结构,应该用注释说明实现该数据结构的方

159、法和特点。注释说明实现该数据结构的方法和特点。童腆踞敬炉舆原颧汪纬铅房冕宪功隙匈琅带朝纫兼蠢停缔建获锗帜类藻灼软件工程导论第五版软件工程导论第五版3.语句构造语句构造4.输入输入/输出输出5.效率效率A程序运行时间程序运行时间B存储器效率存储器效率C输入输入/输出效率输出效率 据揖潭朱匈痞嗡府甄米蹄争叔梨徘呼鹏就律荐擞烩或砸犯彤蛊剔眺绳械号软件工程导论第五版软件工程导论第五版程序设计工具实例:程序设计工具实例:VisualC运用运用VisualC+开发工具需要掌握:开发工具需要掌握:C语言特点、语法;语言特点、语法;Windows编程基础;编程基础;MFC相关知识;相关知识;VisualC集成

160、开发工具环境的使用;集成开发工具环境的使用;洁尿冲恃伦颖练孰恤坪双十蜂握辖次呼节茎撂堑宿囊竿厚拂漱谭澳嗣脂彤软件工程导论第五版软件工程导论第五版一、一、C语言特点、语法:语言特点、语法:C+语言是在语言是在C语言的基础是扩展而成的,语言的基础是扩展而成的,两种语言的基本语法和语义是相同。两种语言的基本语法和语义是相同。闷栽婴凌联颂馈冗眉圾床泻东屈鲸锰迷冬揉贫廊抡桓孝危疫鸯苯禽侩峦烂软件工程导论第五版软件工程导论第五版C+中加入了面向对象程序设计(中加入了面向对象程序设计(OOP)的特征:)的特征:封装性封装性:通过:通过“类类”把属性和函数组合在一起。把属性和函数组合在一起。继承性继承性:派生

161、类可从先前定义的基类中继承函:派生类可从先前定义的基类中继承函数和属性。数和属性。多态性多态性:一个函数名,由不同的对象解释执行,:一个函数名,由不同的对象解释执行,可得到不同的执行效果。可得到不同的执行效果。确最研岔苔拟坦主蛔噶割舌尿劈缄矽蔼枝基饭枝臻焕蔷侍捏害堕燃钧吱镍软件工程导论第五版软件工程导论第五版二、二、Windows编程基础:编程基础:API:API是是Windows应用程序编程接口。应用程序编程接口。API是一个程序内(或一组相关程序内)的一是一个程序内(或一组相关程序内)的一组函数调用,程序员用它创建其他程序。组函数调用,程序员用它创建其他程序。程序员不必知道函数内部,只要知

162、道程序员不必知道函数内部,只要知道API的函的函数原型及返回值。数原型及返回值。API的函数原型及返回值形式的函数原型及返回值形式可由相关的技术规范资料获得。可由相关的技术规范资料获得。蛔速荐闪葵警玉坎欢硷货他詹咙谴剪泞勉数拌邪媒恕予员隋相势愉诗逻尾软件工程导论第五版软件工程导论第五版现在的现在的Win32API中,核心部分依靠三个主中,核心部分依靠三个主要组件提供要组件提供Windows的大部分函数,这三个组的大部分函数,这三个组件分别是:件分别是:USER32.DLL;GDI32.DLL;KERNEL32.DLL。释闰苦偶赣艾琅葫会睬淖大鲸续锦集阑傻浚慷膳姆室孜龄虚橇狮惧眉屹志软件工程导论

163、第五版软件工程导论第五版Windows消息机制消息机制:1)基于消息的事件驱动)基于消息的事件驱动消息可以是由硬件发来的(存于系统队列)消息可以是由硬件发来的(存于系统队列),也可以由也可以由Windows系统和应用程序发来(存于系统和应用程序发来(存于程序队列中);程序队列中);每一个每一个Windows程序在不停的捕捉各种消息程序在不停的捕捉各种消息,并进行处理;并进行处理;每个窗口都必须有一个窗口函数,来负责消息每个窗口都必须有一个窗口函数,来负责消息的判断与处理。的判断与处理。跪汰挺藕拣苇搀革尘泌秤痞日堰浓茎莱瓣叙闻队骆朴跋倪吩绰搞嫁谋阁投软件工程导论第五版软件工程导论第五版2)窗口函

164、数对消息的处理)窗口函数对消息的处理窗口函数是一个回调函数,可以处理收到的窗口函数是一个回调函数,可以处理收到的消息,在程序中不需要用户显式调用。消息,在程序中不需要用户显式调用。该窗口函数的形式通常为:该窗口函数的形式通常为:WndProc(),每个每个窗口类必须在初始化时指定一个窗口函数。窗口类必须在初始化时指定一个窗口函数。缅腆沂案农猎差茅坡厄宇乍纸茂截芳卸吼协颧生注脏晌度瑞舔竭陷哉烛喳软件工程导论第五版软件工程导论第五版三、三、MFC:MFC,即,即Microsoft基本类,该类库封装了基本类,该类库封装了SDK(软件开发工具包)结构、功能及应用程序(软件开发工具包)结构、功能及应用程

165、序框架内部技术。框架内部技术。它提供了许多可以重用的类,使得它提供了许多可以重用的类,使得Windows程序员避免了许多重复性工作。程序员避免了许多重复性工作。援宛戚喝通郭绪都漱昨掷区淤脖甫撮堡撮贞昭冻窜汕洋泌狱引子祈蛀签膏软件工程导论第五版软件工程导论第五版四、四、VisualC集成开发工具环境集成开发工具环境1)开发工具的使用;)开发工具的使用;2)掌握)掌握Win32程序开发流程程序开发流程;一个一个win32程序由两大块组成:程序由两大块组成:程序代码程序代码;用户接口资源用户接口资源。痔雨心爵参舞郭嘉伪粟懂驭庇斧邀咋浊拾摩铂埂耘付杰奶盖镭娘起突饭勃软件工程导论第五版软件工程导论第五版

166、用户接口资源用户接口资源:菜单,对话框,图标,光标等;:菜单,对话框,图标,光标等;这些资源的实际内容(二进制代码)由各种工这些资源的实际内容(二进制代码)由各种工具产生,并以各种扩展名的文件存在;具产生,并以各种扩展名的文件存在;沏坞涵走凑景寡秧分敲窝汕疹冗缄拯侦蜒抡灸眯获咐圈傍迟枢饯猜沂啪坷软件工程导论第五版软件工程导论第五版资源描述文件(资源描述文件(*.rc)中对用户接口资源进行)中对用户接口资源进行描述;描述;RC编辑器(编辑器(RC.exe)根据该资源描述文件)根据该资源描述文件(*.rc)将所有用户接口资源集中构造一个)将所有用户接口资源集中构造一个*.RES文件;文件;*.RE

167、S文件与程序代码结合起来,构成一个文件与程序代码结合起来,构成一个Win32程序。程序。绕干丝杰傅庸鸽坟乖逝死己码陋琐驯蝶诡幢苦翘渴熄泻逗羹升驶锄煮腋战软件工程导论第五版软件工程导论第五版关于函数库和头文件关于函数库和头文件:动态链接库动态链接库:应用程序调用的:应用程序调用的API函数在函数在“执行执行期间期间”才链接上的函数库,扩展名可以是才链接上的函数库,扩展名可以是.dll,也可以是也可以是.exe、.fon、.mod、.drv、.ocx等。等。静态连接库静态连接库:.lib头文件头文件:如:如windows.h,它包含操作系统本身的,它包含操作系统本身的三大模块三大模块gdi32.d

168、ll、user32.dll和和kernel32.dll中的所有中的所有API函数。函数。裤倒泼娄洱械煮门植涨笋女贱桶赶锌抹博种天席羞渡匠伦葬家纫服仲山燕软件工程导论第五版软件工程导论第五版有关测试的一些规则:有关测试的一些规则:(1)测测试试是是为为了了发发现现程程序序中中的的错错误误而而执执行行程程序的过程;序的过程;(2)好好的的测测试试方方案案是是极极可可能能发发现现迄迄今今为为止止尚尚未发现的错误的测试方案;未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现)成功的测试是发现了至今为止尚未发现的错误的测试。的错误的测试。7.2.1软件测试的目标软件测试的目标7.2软件测试

169、基础软件测试基础肺舔信燎颅扔彬煮扔僳谦褒掠喳泉断集冕吞卡敌覆鸳镁皑专榷肠娩亢猛厦软件工程导论第五版软件工程导论第五版7.2.2软件测试准则软件测试准则1)所有测试都应该能追溯到用户需求;)所有测试都应该能追溯到用户需求;2)应该远在测试前就制定出测试计划;)应该远在测试前就制定出测试计划;3)把)把Pareto原理应用到软件测试中;原理应用到软件测试中;4)应应该该从从“小小规规模模”测测试试开开始始,并并逐逐步步进进行行“大大规规模模”测试;测试;脂贵炕栋囤猫禹财辟沼穿药采浮搏揉甜闺眼甄灶铡汀哆绳刽殴跪巩喧伯长软件工程导论第五版软件工程导论第五版5)穷举测试是不可能的;)穷举测试是不可能的;

170、穷尽测试穷尽测试穷尽测试穷尽测试:包含所有可能情况的测试称为穷尽测试。:包含所有可能情况的测试称为穷尽测试。程序程序main()()a2a1a3b输入输入输出输出a1、a2、a3:Integer16bits输入数据的穷输入数据的穷尽测试组合:尽测试组合:216216216248310146)为为了了达达到到最最佳佳测测试试效效果果,应应该该由由独独立立的的第第三三方从事测试工作。方从事测试工作。半茎腔迫什冉厄溅涸鲸愉邓让陪悬岁汪苞色猜领噶声膛戌搜微都述恋宛肉软件工程导论第五版软件工程导论第五版黑盒测试黑盒测试:如如果果已已经经知知道道软软件件应应该该具具有有的的功功能能,可可以以通通过过测测试

171、试来来检检验验是是否否每每个个功功能能都都能能正正常常使使用用,这这种测试称黑盒测试。也称功能测试。种测试称黑盒测试。也称功能测试。7.2.3测试方法测试方法念乒遗蜡谩扫渺羞莎豫话颁豌绘蜀茸芬秧舅那接辫鲸像酬谱罩懒旭暖尺蜜软件工程导论第五版软件工程导论第五版白盒测试白盒测试:也称结构测试。也称结构测试。如如果果知知道道软软件件内内部部工工作作过过程程,可可以以通通过过测测试试来来检检验验软软件件内内部部动动作作是是否否按按照照规规格格说说明明书书的的规定正常进行,这种测试称为白盒测试。规定正常进行,这种测试称为白盒测试。喀欲筑怀晌替捶巨允甚护邵次孜月洁踩拷凤营媚仗亦棺捏狠白铰凉彝瓣夯软件工程导

172、论第五版软件工程导论第五版1.模块测试模块测试模模块块测测试试又又称称单单元元测测试试,它它把把每每个个模模块块作作为为单独的实体来测试。单独的实体来测试。2.子系统测试子系统测试子子系系统统测测试试是是把把经经过过单单元元测测试试的的模模块块放放在在一一起形成一个子系统来测试。起形成一个子系统来测试。7.2.4软件测试的步骤软件测试的步骤叮蒜谣篓圃栗潮问喝哎瘁饰尝银灼斥催活紫趟帘惩妒焊们缸味肺砍绅费抄软件工程导论第五版软件工程导论第五版3.系统测试系统测试系系统统测测试试是是把把经经过过测测试试的的子子系系统统装装配配成成一一个个完完整的系统来测试。整的系统来测试。4.验收测试验收测试验验收

173、收测测试试把把软软件件系系统统作作为为单单一一的的实实体体进进行行测测试试(利用用户的实际数据测试)。(利用用户的实际数据测试)。5.平行运行平行运行 平平行行运运行行是是同同时时运运行行新新开开发发出出来来的的系系统统和和将将被被它它取取代代的的旧旧系系统统,以以便便比比较较新新旧旧两两个个系系统统的的处处理理结果。结果。落先御伶陶萨遣架哇林秆贼庙蚂玉祸锄八署菊滞业雀映誉凑骋狰霄咋幂疡软件工程导论第五版软件工程导论第五版7.2.5测试阶段的信息流测试阶段的信息流测试测试评价评价调试调试可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试测试结果结果预期结果预期结果错误错误错误率数据错误率

174、数据正确正确可靠性预测可靠性预测图图7.1测试阶段的信息流测试阶段的信息流讳演恶遵贵儒摄环展怎武颜癌舒跃簿散蒸糠堡俺汲猿花赦刀往痴蛹骚贩佐软件工程导论第五版软件工程导论第五版7.3单元测试单元测试单元测试的一般方法是:单元测试的一般方法是: 首先通过编译系统检查并改正程序中所有的语首先通过编译系统检查并改正程序中所有的语法错误;法错误; 然后用详细设计模块说明为指南,对重要的控然后用详细设计模块说明为指南,对重要的控制路径进行测试,以便发现模块内部的错误。制路径进行测试,以便发现模块内部的错误。 通常,单元测试使用白盒测试方法。通常,单元测试使用白盒测试方法。屑耻吓砚阁诱儡身县吹佛氢悦矮塞殃该

175、口崔挤焉榜灿倒身嘿搓嘻唐糖挎彻软件工程导论第五版软件工程导论第五版1)模块接口模块接口应应该该对对穿穿过过模模块块接接口口的的数数据据流流进进行行检检测测,以以保证正确的输入和输出。保证正确的输入和输出。2)局部数据结构局部数据结构这这是是错错误误的的主主要要来来源源,应应该该设设计计相相应应的的测测试试用例,以便发现数据结构方面的错误。用例,以便发现数据结构方面的错误。7.3.1测试重点测试重点豹茎工坍惑剧彦赡圭蚂烁嗜壬糟挣耀芥轩珐百喘挤馈待屠奋夯脐柳岭怠放软件工程导论第五版软件工程导论第五版3)重要的执行路径重要的执行路径由由于于不不可可能能进进行行穷穷尽尽测测试试,因因此此选选择择测测试

176、试路径是非常关键的。路径是非常关键的。4)出错处理通路出错处理通路5)边界条件边界条件惫廓遭翻万苏丈摆槛众痰薛伐墓识陋狰腐洽播单云洽癣灶么弊熟懒则辐孪软件工程导论第五版软件工程导论第五版审查小组:审查小组: 1)组长;)组长;2)程序的设计者;)程序的设计者;3)程序的编写者;)程序的编写者;4)程序的测试者。)程序的测试者。7.3.2代码审查代码审查抠取蛤敖仰锣际掳废斤凸裁呵透炒业魄剥筐啸斜经逮命予殊擒铜鸥挽甸杠软件工程导论第五版软件工程导论第五版7.3.3计算机测试计算机测试由由于于软软件件模模块块不不是是一一个个独独立立的的系系统统,不不能能独独立立运运行行,要要依依靠靠其其他他模模块块

177、调调用用,或或需需要要调调用用其其他模块。他模块。因因此此,必必须须要要为为测测试试的的单单元元开开发发驱驱动动程程序序或或存根程序存根程序。哺初镣瘟私敝峪汉早纠暖声鼠庐逮裕皱豺淤牌捉盎潜冠资幽荔出券拐佰光软件工程导论第五版软件工程导论第五版1)驱动程序驱动程序相相当当于于一一个个“主主程程序序”,用用来来把把测测试试数数据据传传送送给被测试的模块,并打印有关结果。给被测试的模块,并打印有关结果。2)存根程序存根程序 用来代替被测试模块所调用的模块,相当于用来代替被测试模块所调用的模块,相当于“虚拟子程序虚拟子程序”。俊劝夷揪耕降得轿绅递从醛砂烘君磕尘迂僻污醋妒朋畏戌员仑丘恳裴篡值软件工程导论

178、第五版软件工程导论第五版如,测试如,测试B模块,设计了模块,设计了A模块和模块和C模块。模块。由由A负责传送测试数据,由负责传送测试数据,由C负责模拟被负责模拟被B调用的调用的模块。模块。C模块可能没有,这取决于模块可能没有,这取决于B有没有调用其有没有调用其他程序。他程序。A、C都是一次性程序,只在测试时临时使用,都是一次性程序,只在测试时临时使用,应尽量设计得简单一些,以节省费用和时间。应尽量设计得简单一些,以节省费用和时间。BAC被测试模块被测试模块驱动模块驱动模块存根模块存根模块躯达络哉骋乓颈喷愧遮泊孕踏筏纽猛腮易硒桅崖铲波玫祖华肆睹槽瓷企挨软件工程导论第五版软件工程导论第五版例:例:

179、正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图7.2正文加工系统(正文加工系统(H图)图)宝由见资候香迭螺讫茶纹匣衔怒辛涅饯札伐英项杨扑龚锻抑泄很悔深硫肾软件工程导论第五版软件工程导论第五版TESTDRIVER编辑编辑3.0TESTSTUB对对“编辑编辑”功能的测试:功能的测试:攫惊蔡卵长柞弃炭菏至螟川虾陶困泅儿落抄般奥藐唤晨泳讫越寥碳茧熙储软件工程导论第五版软件工程导论第五版搂馅谩宫栏浆晾贤纺施觅绑磨诅卸

180、肢雇酱磐阳菜七志酌灭悄耿鸟馋词笆徊软件工程导论第五版软件工程导论第五版坏狱柏珍抨挨崩猿糙键勺佣滞帝厩榆赌跨痢况泽阉姿绣蚌酒悼沏捷耙辆经软件工程导论第五版软件工程导论第五版7.4集成测试集成测试集集成成测测试试是是组组装装软软件件的的系系统统化化技技术术,它它将将经经过单元测试的模块联系在一起进行测试。过单元测试的模块联系在一起进行测试。由模块组装成程序时有两种方法:由模块组装成程序时有两种方法:1)非渐增式测试方法非渐增式测试方法先先分分别别测测试试每每个个模模块块,再再把把所所有有模模块块按按设设计计要求放在一起结合成所要的程序。要求放在一起结合成所要的程序。优愚织桅蛊茶蜕刮是人蔽蔑朽狸嘴伦

181、你瀑前勿稻舵弘嘱酪窑缩橙驭鸭妄材软件工程导论第五版软件工程导论第五版2)渐增式测试方法渐增式测试方法 每次增加一个待测试模块,把它同已经测每次增加一个待测试模块,把它同已经测试好的那些模块结合起来进行测试,反复进试好的那些模块结合起来进行测试,反复进行直到完成所有模块测试的方法。行直到完成所有模块测试的方法。瘴梗榆韵砷间肩疲滔就浊盂拳逃嘉嘲龟虚气遍饶亏悄疮庙歉蓉佬芹梨彰矾软件工程导论第五版软件工程导论第五版 使用渐增式测试方法把模块结合到软件系统中使用渐增式测试方法把模块结合到软件系统中去时,有去时,有自顶向下自顶向下和和自底向上自底向上两种集成方法。两种集成方法。 自自顶顶向向下下集集成成是

182、是一一种种递递增增的的装装配配软软件件结结构构的的方方法法,这这种种方方法法应应用用非非常常广广泛泛。它它需需要要存存根根程程序序,但是不需要驱动程序。但是不需要驱动程序。7.4.1自顶向下集成自顶向下集成水乱侦麻沦屹丙胺痹毙羽妻拷幅募迅贩顾灾羔巾稀挽萝缺膛歼猴琼盾纫拱软件工程导论第五版软件工程导论第五版这这种种方方法法的的思思想想是是:从从主主控控模模块块(主主程程序序)开开始始,沿沿软软件件的的控控制制层层次次向向下下移移动动,逐渐把各个模块结合起来。逐渐把各个模块结合起来。 在自顶向下结合方法中,如何将所有模在自顶向下结合方法中,如何将所有模块组装到软件结构中,又有两种方法:块组装到软件

183、结构中,又有两种方法:钨漓讨教矫定苍宰言搅撬沼着药雷岔欺寒窟预迅产谋悉又熄孵墙黍芯斯辩软件工程导论第五版软件工程导论第五版1)深度优先策略深度优先策略先组装软件结构的一条先组装软件结构的一条主主控制通路控制通路上的所有模块,选上的所有模块,选择哪条主控制通路,具有较择哪条主控制通路,具有较大的任意性。大的任意性。如图,如果选取左通路,如图,如果选取左通路,就先把模块就先把模块M1、M2、M5结合起来测试,然后结合模结合起来测试,然后结合模块块M8、M6,再构造中央和,再构造中央和右侧的控制通路。右侧的控制通路。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例剂纳魂繁山

184、睦例膘娠佛淆冗柄靡沿阶方莎柿瞳扣留扛余癣蓑渤挚宛苛晦饯软件工程导论第五版软件工程导论第五版2)宽度优先策略宽度优先策略沿着软件结构水平地移沿着软件结构水平地移动,把处于同一个层次的动,把处于同一个层次的所有模块组装起来。所有模块组装起来。如图,首先结合如图,首先结合M2、M3、M4和主控模块和主控模块M1,然后结合下一个控制层,然后结合下一个控制层次中的模块次中的模块M5、M6和和M7,最后结合模块,最后结合模块M8。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例柱氮襟祷敞掳佩浑岔祟晕宁骄另掌墟磺帐措禁仪淆碗晓期晃中滴廉危吕结软件工程导论第五版软件工程导论第五版自自

185、顶顶向向下下集集成成方方法法的基本过程如下:的基本过程如下:1)对对主主控控模模块块进进行行测测试试,测测试试时时用用存存根根程程序序代代替替所所有有直直接接被被主主控控模模块块调调用用的的模模块;块;M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例轰迎橡斯缅窒逃涸纳豪纯侮核胞奔囊畅蹋赃枫眨案泡萧哟模楚迄蜘伊唁共软件工程导论第五版软件工程导论第五版M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例2)根根据据选选定定的的结结合合策策略略(深深度度优优先先或或宽宽度度优优先先),每每次次用用一一个个实实际际模模块块代代替替一一个个存存根根程程序序

186、(新新结结合合的的模模块块往往往往又又需需要要新新的的存存根程序);根程序);干磊械神褂扩窖管爽差衔俩年愁叙哟享矮赴侧七显俏壬叶输汕梨拙长淀迸软件工程导论第五版软件工程导论第五版3)每每结结合合一一个个模模块块,就测试一个;就测试一个;4)为为保保证证不不引引入入新新的的错错误误,需需要要进进行行回回归归测测试试,即即重重复复以以前前进进行行过过的的部部分分或或全全部部测试;测试;5)重复回到第二步,)重复回到第二步,直到构成整个软件结直到构成整个软件结构。构。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例蚀恍矛姥逼宫缩膜遁肿钒婆阑呆玻盆绕幽藩斟携史痘暴薛蚁姨感甚炒

187、把立软件工程导论第五版软件工程导论第五版 自自底底向向上上集集成成方方法法是是从从软软件件结结构构最最底底层层模模块块开开始始进进行行组组装装和和测测试试,它它与与自自顶顶向向下下结结合合方方法法相相反反,需需要要驱驱动动程程序序,不不需要存根程序。需要存根程序。7.4.2自底向上集成自底向上集成蚁慕艾学潭危每巩梗并钉辕纺图板徒剔具五斥胳羡滩熬竖贮律绎橇摧吭昌软件工程导论第五版软件工程导论第五版自自底底向向上上集集成成方方法法的基本过程如下:的基本过程如下:1)把把底底层层模模块块组组合合成成实实现现一一个个特特定定软软件件子子功功能能的的族族,如如图图族族1、2、3。McMaMbD2D1D3

188、族族1族族2族族3图图7.4自底向上实例自底向上实例盟拣终狙置下夯隆救去舞壹弦橙壬歼挽蹈爷精鞘癌尚墙垣蝴闸稿牵采铭友软件工程导论第五版软件工程导论第五版2)为每个模块设计)为每个模块设计一个驱动程序,作一个驱动程序,作为测试的控制程序,为测试的控制程序,以协调测试用例的以协调测试用例的输入和输出。图中输入和输出。图中D1、D2、D3分别分别是族是族1、2、3的驱动的驱动程序;程序;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例铂仁冻档惭驴烷驶贞男读湾瞧署厨奢畔毖迎躲抓郧启钻鹃免僚姐眶诣呕喘软件工程导论第五版软件工程导论第五版3)对模块进行测试;)对模块进行测试;4

189、)用用实实际际模模块块代代替替驱驱动动程程序序组组装装成成新新的的模模块块族族,在在新新加加入入的的实实际际模模块块上上面面加加上上新新的的驱动程序进行测试;驱动程序进行测试;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例禹畏彤快身努量躲里每柳腐独耽黄夺蚤沛存扯苦糙叶亥坍姐须塌融称澳亩软件工程导论第五版软件工程导论第五版5)重复第二到第)重复第二到第四步,逐渐向上加四步,逐渐向上加入实际模块,直至入实际模块,直至构造出整个软件结构造出整个软件结构。构。McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例娠膏先沁透臻屹圾波划碧迎匙迪抒浮讹郑柏

190、杭漆终姻场及进衬凡支堑哗埃软件工程导论第五版软件工程导论第五版7.4.3不同集成测试策略的比较不同集成测试策略的比较1.改进的自顶向下测试方法;改进的自顶向下测试方法;2.混合法。混合法。M1M2M3M4M5M6兵龋珊晕玄锹美槐铆肺炕臻砷产挨疤所镊沪茎吼穿巷疼锨童砸淑梆狂跟藐软件工程导论第五版软件工程导论第五版7.4.4回归测试回归测试指重新执行已经做过的部分测试。指重新执行已经做过的部分测试。回归测试用于保证由于调试或其他原因引起回归测试用于保证由于调试或其他原因引起的程序变化,不会导致额外错误的测试活动。的程序变化,不会导致额外错误的测试活动。赚嗽新由苇挂娥组乘敦捡漂婚允搜呀究崔动猩募块画

191、前抑翔萧卢且氦滤胃软件工程导论第五版软件工程导论第五版7.5确认测试(验收测试)确认测试(验收测试)也称为验收测试,目标是验证软件的有效性。也称为验收测试,目标是验证软件的有效性。 如如果果软软件件的的功功能能和和性性能能符符合合用用户户的的期期待待,软软件件就是有效的。就是有效的。 软件规格说明书是进行确认测试的基础。软件规格说明书是进行确认测试的基础。7.5.1确认测试的范围确认测试的范围击娥屠树射并玛野锋谦通南尹驰娱拽女旅宙烈域川兴熟湿雁逸牡肋卒氦膀软件工程导论第五版软件工程导论第五版确认测试的主要特点及内容有:确认测试的主要特点及内容有:1)某某些些已已经经测测试试过过的的纯纯粹粹技技

192、术术性性的的测测试试项项可可能能不不需需要要再再次次测测试试,而而对对用用户户特特别别感感兴兴趣趣的的功功能或性能,可能需要增加一些测试;能或性能,可能需要增加一些测试;2)通通常常确确认认测测试试主主要要使使用用实实际际生生产产中中的的数数据据来来进行测试;进行测试;3)确认测试必须有用户的积极参与,甚至以用)确认测试必须有用户的积极参与,甚至以用户为主,可能需要进行一些与用户使用步骤户为主,可能需要进行一些与用户使用步骤有关的测试。有关的测试。威镁嘉诽鸡蛤稚饲己朱曰铬筛志芜厚迅筋掷帽耘快凛糊自笼车仗县衰朋剔软件工程导论第五版软件工程导论第五版确认测试一般使用黑盒测试法。确认测试一般使用黑盒

193、测试法。7.5.2软件配置复查软件配置复查 目目的的:保保证证软软件件配配置置的的所所有有成成分分都都齐齐全全,质质量量符符合合要要求求,文文档档与与程程序序完完全全一一致致,而而且且已已经编好目录。经编好目录。下颁绸笼详右悠慢作急讣污惑迸适嗓随皑扔迎堤方既颇淬仓埔料瞧赖笑嚼软件工程导论第五版软件工程导论第五版7.5.3Alpha和和Beta测试测试AlphaAlpha测测测测试试试试:用用户户在在开开发发者者的的场场所所进进行行测测试试,并并且且在在开开发发者者的的指指导导下下进进行行,测测试试在在受受控控环环境境中进行,开发者记录发现的错误和问题;中进行,开发者记录发现的错误和问题;Bet

194、aBeta测测测测试试试试:用用户户在在一一个个或或多多个个客客户户场场所所进进行行测测试试,不不受受开开发发者者控控制制,测测试试者者记记录录发发现现的的问问题题和和错误,定期将问题报告发送给开发者。错误,定期将问题报告发送给开发者。凋询颗咎巢辫惩俭嫁胡卡茂佳枚催绩雕短迫租截妹眠阔秤园夏支库羊迎饺软件工程导论第五版软件工程导论第五版7.6白盒测试技术白盒测试技术1.语句覆盖语句覆盖 语句覆盖是指:设计的测试用例能使程序中每语句覆盖是指:设计的测试用例能使程序中每条语句至少执行一次。条语句至少执行一次。7.6.1逻辑覆盖逻辑覆盖欲啥拣剪室入谦受磁地萎昏元搀骗汛骇靡辈懈梗暮委禄贝涡足叔黍即紊家软

195、件工程导论第五版软件工程导论第五版例:一个被测试模块的源程序为例:一个被测试模块的源程序为(PASCAL语言)语言):PROCEDUREEXAMPLE(A,B:REAL;VARX:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1END似乓犬趋囚惧散卒呻崖玖秆黎冶邑码厅敲鳃属蕊元岿侈诱屈躯独发瘩簧猖软件工程导论第五版软件工程导论第五版入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图选取测试用例:选取测试用例:A=2,B=0,X=4

196、A=2,B=0,X=4,程序执行,程序执行路径为:路径为:sacbed。乐斑鳞掂蝶陀阔堤食唤跋告懈焚须炔西隧陨构刘衍岗鸳愚珐佃昨净驯烈伊软件工程导论第五版软件工程导论第五版2.判定覆盖判定覆盖判判定定覆覆盖盖是是指指:选选取取足足够够的的测测试试用用例例,使使得得程程序序中中每每个个判判断断的的可可能能结结果果都都至至少少执执行行一一次次,也也就就是是说说使使程程序序的的每每个个判判断断分分支支至至少少通通过一次。过一次。菊蜗揽哦证耀首拇将贪妊并臻凛钎絮毕哼亚收贷椽芋弘污芽嗅宛蔫妻吁慎软件工程导论第五版软件工程导论第五版入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabd

197、ceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图对于上例,选取如下测试用例:对于上例,选取如下测试用例:I.A=3A=3,B=0B=0,X=3X=3(覆盖(覆盖sacbd)II.A=2A=2,B=1B=1,X=1X=1(覆盖(覆盖sabed)更舶简绝炉草窥掸霓欲赶陈紊订隐说汲喻些敏乎疫瑟抡上刀班虽逾荔毯程软件工程导论第五版软件工程导论第五版3.条件覆盖条件覆盖条条件件覆覆盖盖是是指指:选选择择足足够够的的测测试试用用例例,使使得得程程序序中中每每个个判判定定表表达达式式的的每每个个条条件件都都取取到到各各种种可能的结果。可能的结果。嘛疾泊谷二炭缮剔字侣烟忿谋爆速俘衅缝瞎

198、萌瑰并置乘足垣袖娶蛇唆董椭软件工程导论第五版软件工程导论第五版入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图上上例例中中,有有两两个个判判定定表表达达式式,每每个个表表达达式式有有两两个个条条件件,为为了了做做到到条条件件覆覆盖盖,应应该该选选取取测测试试数数据据使使得得a点点出出现现如如下下结果:结果:A1A1, A1A1, B=0B=0,B0B0在在b点出现如下结果:点出现如下结果:A=2A=2, A2A2, X1X1,X1X1袖姆棍愉搐传辣谁匙跌抬订媳东琴韩姿父茵甫也瓣刃忍滓献阻益迫娄舞敌

199、软件工程导论第五版软件工程导论第五版选取如下测试用例:选取如下测试用例:I.A=2A=2,B=0B=0,X=4X=4(满满足足A1,B=0,A=2和和 X1, 执执 行行 路路 径径 为为sacbed)II.A=1A=1,B=1B=1,X=1X=1(满满足足A1,B0,A2和和 X1, 执执 行行 路路 径径 为为sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图晓戴兹环鲸惭才煤柒担羞闯忍松堪猾残鬃苦糜赫个土拾粘莽色爽喻佳宛汛软件工程导论第五版软件工程导论第五版条条件件覆覆盖盖通通常常比比

200、判判定定覆覆盖盖强强,但但是是条条件件覆覆盖盖不不一一定定包包含含判判定定覆覆盖。盖。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图嚣轮矿郁肛胃碌凉嫌贸识鸣畜吞军仙獭挫荧桅钾绚舅蔬氓偷睫耪卵我登母软件工程导论第五版软件工程导论第五版如:如:I A=2A=2, B=0B=0, X=1X=1 ( 满满 足足 A1, B=0,A=2和和X1,执执行行路路径径为为sacbed)II A=1A=1, B=1B=1, X=2X=2( 满满 足足 A1, B0,A2和和X1,执执行行路路径径为为sabed)只

201、只满满足足条条件件覆覆盖盖,并并不满足判定覆盖。不满足判定覆盖。入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图峡攀齿苦问莹渴锹抚拙棺肠谜矫椒怎操梗远起圣瘤嗡罚涨姬脸暗刮钟饥揭软件工程导论第五版软件工程导论第五版4.判定判定判定判定/ /条件覆盖条件覆盖条件覆盖条件覆盖判判定定/条条件件覆覆盖盖是是指指:选选取取足足够够的的测测试试用用例例使得同时满足判定覆盖和条件覆盖的要求。使得同时满足判定覆盖和条件覆盖的要求。凝瓣氛笼漠食当唬窘柳震麦牵仙海呸眺筷燎涯掷苹彭厂幅丁瞧轻默繁巍涛软件工程导论第五版软

202、件工程导论第五版对对于于上上例例,选选取取如如下测试用例:下测试用例:I A=2, B=0, X=4(满满足足A1,B=0,A=2和和X1,执执行行路路径为径为sacbed)II A=1, B=1, X=1( 满满 足足 A1, B0,A2和和X1,执执行行路路径为径为sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图取么闲汽楼重徊娟珍箍矣尘尖豢高塞权艘襟会境乓痢谰纹攻闻扫瞻萤垢挽软件工程导论第五版软件工程导论第五版5.条件组合覆盖条件组合覆盖条条件件组组合合覆覆盖盖指指:选选取取足足够够

203、的的测测试试用用例例,使使得得每每个个判判定定表表达达式式中中条条件件的的各各种种可可能能的的组组合合都至少出现一次。都至少出现一次。窿撞念娄琳洲籽涌畸骑林付沦潜妆卢洛呈暗轩毡瘸傈撑徽瞎琐倔湘亡购补软件工程导论第五版软件工程导论第五版对对于于上上例例,共共有有8种可能的条件组合:种可能的条件组合:1)A1,B=02)A1,B03)A1,B=04)A1,B05)A=2,X16)A=2,X17)A2,X18)A2,X1入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图答饭率花钝痈帧形拇由砍猎敬驶迈踢戳匙

204、雾责轰揣爆躁展浚枯姻擂愿息雀软件工程导论第五版软件工程导论第五版选取如下测试用例:选取如下测试用例:IA=2A=2,B=0B=0,X=4X=4(满满足足1、5组组合合:A1, B=0, A=2,X1, 执执 行行 路路 径径sacbed)II A=2A=2, B=1B=1,X=1X=1(满满足足2、6组组合合:A1, B0, A=2,X1, 执执 行行 路路 径径sabed)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图缘第远蹄互多趁姆惑降泥惶貌冬赃哺瘩俄纸毅培屠贸靴颠嘱逝头蔗靛藏羡软件工程导论

205、第五版软件工程导论第五版IIIA=1A=1,B=0B=0,X=2X=2(满满足足3、7组组合合:A1, B=0, A2,X1, 执执 行行 路路 径径sabed)IVA=1A=1,B=1B=1,X=1X=1(满满足足4、8组组合合:A1, B0, A2,X1,执行路径,执行路径sabd)入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图昨频搞湖拜署怔缀粳追摊卿调蛹懂生蝇街荣焉奎裕腆键恬均扔燥金臣腰羊软件工程导论第五版软件工程导论第五版如如果果从从对对程程序序路路径径的的覆覆盖盖程程度度分分析析,可可

206、以以提提出出下下面一些逻辑覆盖标准:面一些逻辑覆盖标准:6.点覆盖点覆盖点覆盖点覆盖点覆盖是指:选取足够点覆盖是指:选取足够多的测试用例,使得程序多的测试用例,使得程序执行路径至少经过程序图执行路径至少经过程序图中每个节点一次。中每个节点一次。sabdce1234567图图7.5对应的程序图对应的程序图颁猪惹淑辉义拐案弱蔷毋嚼赶龟脑侨丹剥韵炯汾师瞬顷扬锁垦臣据痊肤瑰软件工程导论第五版软件工程导论第五版7.边覆盖边覆盖边覆盖边覆盖边覆盖是指:选取足够多的测试用例,使得程边覆盖是指:选取足够多的测试用例,使得程序执行路径至少经过程序图中每条边一次。序执行路径至少经过程序图中每条边一次。sabdce

207、1234567图图7.5对应的程序图对应的程序图选取如下测试用例:选取如下测试用例:IA=3A=3,B=0B=0,X=3X=3(执行路径(执行路径1453)IIA=2A=2,B=1B=1,X=1X=1(执行路径(执行路径1267)质堑拧粳沤窗被盛运蔗疫臂斟晒臃唇诀炊悄癸谜咯励龚渍稿照一利喉京菇软件工程导论第五版软件工程导论第五版8.路径覆盖路径覆盖路路径径覆覆盖盖是是指指:选选取取足足够够多多的的测测试试用用例例,使得程序的每条可能路径都至少执行一次。使得程序的每条可能路径都至少执行一次。缝犀啡酪釜房基涪迷患蹦卷差熊瓷缕缉迂惮哉夺酿居巴凸筋轩侯聋猜汝狸软件工程导论第五版软件工程导论第五版sab

208、dce1234567图图7.5对应的程序图对应的程序图选取如下测试用例:选取如下测试用例:IA=1A=1,B=1B=1,X=1X=1(执行路径(执行路径123)IIA=1A=1,B=1B=1,X=2X=2(执行路径(执行路径1267)IIIA=3A=3,B=0B=0,X=1X=1(执行路径(执行路径1453)IVA=2A=2,B=0B=0,X=4X=4(执行路径(执行路径14567)伸安槽衣射盗已乱辛玉耻敲效当舱帜烘刚蓬阔魁法绪柱挠殴又恕杠君冕哗软件工程导论第五版软件工程导论第五版1)A=3,B=0,X=12)A=2,B=0,X=43)A=2,B=1,X=14)A=1,B=0,X=25)A=1

209、,B=1,X=1更强的测试数据更强的测试数据更强的测试数据更强的测试数据:满足路径覆盖和条件组合覆盖:满足路径覆盖和条件组合覆盖2)5)满满足足条条件件组组合合覆覆盖盖,执执 行行 路路 径径 分分 别别 是是 : sacbed、sabed、sabed、sabd入口入口返回返回A1andB=0A=2orX1X=X/AX=X+1sabdceTTFF1234567图图7.5被测试模块的流程图被测试模块的流程图路径:路径:sacbd午倡荐座贞芦滦契炒室扳免背锦律赦拴姬疡韶庞将簇沏餐雍伴钵号唱譬畔软件工程导论第五版软件工程导论第五版7.6.2控制结构测试控制结构测试(自学自学)佃缆废卜迁滋九撬奢妖琶琐

210、肮兴弦彼纂掷冻淖擂锁献蓑雄馒赫臻逞进速楼软件工程导论第五版软件工程导论第五版等价类划分是一种黑盒测试技术。等价类划分是一种黑盒测试技术。穷穷尽尽的的黑黑盒盒测测试试需需要要使使用用所所有有可可能能的的输输入入数数据据(有有效效的的和和无无效效的的)进进行行测测试试,通通常常是是不不现现实实的的。因此产生了等价类划分。因此产生了等价类划分。 7.7.1等价划分(等价类划分)等价划分(等价类划分)7.7黑盒测试技术黑盒测试技术灿靡栏凰锤启淑词迄莎勃飞硬恨邑禹份痈潮略舰孝抓纯旷炬纸柞睛啥踪怯软件工程导论第五版软件工程导论第五版等价类划分的思想等价类划分的思想等价类划分的思想等价类划分的思想: 如果将

211、所有可能的输入数据(有效的和无效如果将所有可能的输入数据(有效的和无效的)划分为若干个等价类,就可以假定用每一的)划分为若干个等价类,就可以假定用每一个等价类中的代表值作为测试用例来进行测试个等价类中的代表值作为测试用例来进行测试时,等价于用该类中所有值进行了测试。时,等价于用该类中所有值进行了测试。剧蹋因脚锚笑话溜厨蝴腐殷束预哦沏梁史鲸卵讫厚明什褥郸沮汲宇绝纸夜软件工程导论第五版软件工程导论第五版用用等等价价类类划划分分设设计计测测试试用用例例时时,主主要要分分两两步步:划分等价类、确定测试用例。划分等价类、确定测试用例。1)等价类划分等价类划分划分等价类需要经验,以下给出一些规则:划分等价

212、类需要经验,以下给出一些规则:A如果某输入条件规定了输入的范围,那么可以划如果某输入条件规定了输入的范围,那么可以划分为一个有效的等价类和两个无效的等价类。分为一个有效的等价类和两个无效的等价类。如如X的值的输入范围是的值的输入范围是1,99,那么测试,那么测试X时,时,可以这样划分:有效等价类为可以这样划分:有效等价类为1,99,无效等,无效等价类为(价类为(-,1)和()和(99,+)。)。奴桑贸芒骆蓝浴胯讳厘承巾胀揭逃品谍寄卉巳辑芹藩霍临矢蝇罚项尝漾基软件工程导论第五版软件工程导论第五版B如果某个输入条件规定了一组可能的值,且程序可以如果某个输入条件规定了一组可能的值,且程序可以对不同的

213、值作出不同的处理,那么可以为每种值确定对不同的值作出不同的处理,那么可以为每种值确定一个有效的等价类,同时还有一个无效等价类。一个有效的等价类,同时还有一个无效等价类。如,如,“职称职称”这个量可能的值是:教授、副教授、这个量可能的值是:教授、副教授、讲师、助教。那么可以这样划分:四类有效等价讲师、助教。那么可以这样划分:四类有效等价类分别为教授、副教授、讲师、助教,无效等价类分别为教授、副教授、讲师、助教,无效等价类为四种职称以外的所有值。类为四种职称以外的所有值。繁橱恕罗啊历糟瑞诽超咏劲谢忍凄泼演粒澳溉怠贵潭揣付雅野搀效雌馈沉软件工程导论第五版软件工程导论第五版2)确定测试用例确定测试用例

214、确定测试用例确定测试用例A给每个等价类规定一个唯一的编号;给每个等价类规定一个唯一的编号;B设设计计一一个个新新的的测测试试用用例例,使使其其尽尽可可能能多多地地覆覆盖盖未未被被覆覆盖盖过过的的有有效效等等价价类类。重重复复此此步步,直至所有有效等价类被覆盖;直至所有有效等价类被覆盖;隶椿贺鸯哼罪餐甲酚嚎驯倪钦根红艾贼吝达羡浚党繁辛我蛤伍墓攀虽眶盘软件工程导论第五版软件工程导论第五版C设设计计一一个个新新的的测测试试用用例例,使使其其覆覆盖盖而而且且只只覆覆盖盖一一个个尚尚未未被被覆覆盖盖的的无无效效等等价价类类。重重复复此此步,直到所有无效等价类被覆盖。步,直到所有无效等价类被覆盖。通通常常

215、程程序序发发现现一一类类错错误误后后,就就报报出出错错信信息息,不不再再检检查查其其它它类类错错误误,所所以以设设计计测测试试用用例例时时,一次只覆盖一个无效等价类。一次只覆盖一个无效等价类。审妆陛铝蛙枕步萌万锋钳经坎脆掸剐眠平粉极搀传厌阜趾盅天酉酿橡烹膏软件工程导论第五版软件工程导论第五版实例:一个把数字串变成整数的函数。实例:一个把数字串变成整数的函数。计算机字长:计算机字长:16bits,函数由,函数由PASCAL语言编写。语言编写。functionstrtoint(dstr:shortstr):integertypeshortstr=array1.6ofchar;/字符串字符串6位位/

216、(16位字长能表示的整型数范围是位字长能表示的整型数范围是-215,215-1,即即-32768,32767 )可寂尾脯脓抒惫烩最舔村厢夕下淹呛适糖绢描拆周当粮譬肄怖七绍轻狂户软件工程导论第五版软件工程导论第五版有效输入的等价类有:有效输入的等价类有:(1)16个数字字符组成的数字串(最高位数字不为零);个数字字符组成的数字串(最高位数字不为零);如:如:0,999999(2)最高位数字是零的数字串;)最高位数字是零的数字串;如:如:“012345”(3)最高位数字左邻是负号的数字串;)最高位数字左邻是负号的数字串;如:如:“12345”闷辟朋蒋葵泄伟炮仍墟腮防谣襄胳境契舵叼锑毋韩木酝除筹苍略

217、搞臀迟肇软件工程导论第五版软件工程导论第五版无效输入的等价类有:无效输入的等价类有:(4)空字符串(全是空格);如)空字符串(全是空格);如“”;(5)左部填充的字符既不是零,又不是空格;)左部填充的字符既不是零,又不是空格;如:如:“A12345”(6)最高位数字右面由数字和空格混合而成;)最高位数字右面由数字和空格混合而成;如:如:“12345”(7)最高位数字右面由数字和其他字符混合而成;)最高位数字右面由数字和其他字符混合而成;如:如:“12A345”(8)负号与最高位数字之间有空格;)负号与最高位数字之间有空格;如:如:“-1234”芹笋绊瞄循遵狮性稻煞桃耽邻派吹前相孽圈禄木昨圃椰映

218、娟肘姚箩琅亥售软件工程导论第五版软件工程导论第五版合法输出的等价类有:合法输出的等价类有:(9)在计算机能表示的最小负整数和零之间的)在计算机能表示的最小负整数和零之间的负整数;负整数;如:如:-32768,0)(10)零;)零;(11)在零和计算机能表示的最大正整数之间的)在零和计算机能表示的最大正整数之间的正整数;正整数;如:如:(0,32767祁叠砌渊衙糖诺迈腿碰异辅刑六失疤赡炬荔掐汉兆炙鸥剐神溺舞去藩谬篱软件工程导论第五版软件工程导论第五版非法输出的等价类有:非法输出的等价类有:(12)比计算机能表示的最小负整数还小的负整数;)比计算机能表示的最小负整数还小的负整数;如:如:“3276

219、9”(13)比计算机能表示的最大正整数还大的正整数;)比计算机能表示的最大正整数还大的正整数;如:如:“123456”竟委忆抿矣韶臆绰毡摊怜挣哨的怂幕爷搞四垦瓣坐疮狱疹督还降津姆仟非软件工程导论第五版软件工程导论第五版根据划分的等价类,设计出测试方案根据划分的等价类,设计出测试方案11个:个:(1)16个数字组成的字符串;个数字组成的字符串;输入:输入:1预期的输出:预期的输出:1(2)最高位数字是零的数字串;)最高位数字是零的数字串;输入:输入:000001预期的输出:预期的输出:1(3)负号与最高位数字相邻;)负号与最高位数字相邻;输入:输入:00001预期的输出:预期的输出:1甭豌榔试铣

220、递耳贤贪馏淮百小款爷征茸骤啦朴盾浓点裁肠那式殿江忧梆僳软件工程导论第五版软件工程导论第五版(4)最高位数字是零的特例;)最高位数字是零的特例;输入:输入:000000预期的输出:预期的输出:0(5)太小的负整数;)太小的负整数;输入:输入:47561预期的输出:错误无效输入预期的输出:错误无效输入(6)太大的正整数;)太大的正整数;输入:输入:132767预期的输出:错误无效输入预期的输出:错误无效输入捍弊祝庇弱剔锁芦症挽梢航颅阑划慕挣绪释睛褒虚峭等赎隆大租宙凋辱固软件工程导论第五版软件工程导论第五版(7)空字符串;)空字符串;输入:输入:预期的输出:错误没有数字预期的输出:错误没有数字(8)

221、字符串左部字符既不是零又不是空格;)字符串左部字符既不是零又不是空格;输入:输入:AAAAA1预期的输出:错误非数字预期的输出:错误非数字(9)最高位数字后面有空格;)最高位数字后面有空格;输入:输入:12预期的输出:错误无效输入预期的输出:错误无效输入壳涕丛廖舌陷涛厅座刃诵甫冤主叫粮土堪蚊棘近救沉巴隘役垫误篙尧且淡软件工程导论第五版软件工程导论第五版(10)最高位数字后面有其他字符;)最高位数字后面有其他字符;输入:输入:1AAA23预期的输出:错误无效输入预期的输出:错误无效输入(11)负号和最高位数字之间有空格;)负号和最高位数字之间有空格;输入:输入:12预期的输出:错误负号位置错。预

222、期的输出:错误负号位置错。乖悦吃杠宋朵甸种澄颖深逮茄脂募澎讯酚凛客址者钎褪始诈甥们流献迁蹬软件工程导论第五版软件工程导论第五版程程序序通通常常在在处处理理边边缘缘情情况况时时容容易易出出现现错错误误,如如等价类与等价类之间的边界值。等价类与等价类之间的边界值。所所以以在在设设计计测测试试用用例例时时,使使用用正正好好等等于于、正正好好大大于于、正正好好小小于于边边界界值值的的数数据据进进行行测测试试,发发现现程程序错误的概率较大。序错误的概率较大。7.7.2边界值分析边界值分析章遇巧瞪慈钙邮酪涎碌舅厄完逞译殷从痰额曳敌状酮摹墓楔肾毕罚缝杰凭软件工程导论第五版软件工程导论第五版边界值分析测试法属

223、黑盒测试。边界值分析测试法属黑盒测试。 在实际设计测试方案时,常常结合使用等价在实际设计测试方案时,常常结合使用等价划分和边界值分析两种技术,把一些等价类的划分和边界值分析两种技术,把一些等价类的边界值作为测试用例进行测试。边界值作为测试用例进行测试。爬涣坛钧实拆满窜酣百诅撼亩碍丧有者是邪唤羽狼殉胺栽殴赛艰畅严斗价软件工程导论第五版软件工程导论第五版上例中设计了上例中设计了11个测试用例,还应该用边界值个测试用例,还应该用边界值分析补充测试用例:分析补充测试用例:(12)使输出刚好等于最小负整数;)使输出刚好等于最小负整数;输入:输入:32768预期的输出:预期的输出:32768(13)使输出

224、刚好等于最大的正整数;)使输出刚好等于最大的正整数;输入:输入:32767预期的输出:预期的输出:32767颊造汇些秀坍筐揪戈躬密欲仅煎诫缔烹郴坏殖吞瞒罕糠陀慌暗滇竖履卡微软件工程导论第五版软件工程导论第五版(14)使输出刚刚小于最小的负整数;)使输出刚刚小于最小的负整数;输入:输入:32769预期的输出:错误无效输入预期的输出:错误无效输入(15)使输出刚刚大于最大正整数;)使输出刚刚大于最大正整数;输入:输入:32768预期的输出:错误无效输入预期的输出:错误无效输入铅茸通饼眩兢饵瘫浓半逆删势壤沃修耸匠旗幂慕讫药拟够揖滁娘澜粤冕腹软件工程导论第五版软件工程导论第五版错误推测法在很大程度上靠

225、直觉和经验进行。错误推测法在很大程度上靠直觉和经验进行。基基本本思思想想:列列举举出出程程序序中中可可能能的的错错误误和和容容易易发发生错误的特殊情况,且根据它们选择测试方案。生错误的特殊情况,且根据它们选择测试方案。如如:输输入入、输输出出为为0时时容容易易出出错错;输输出出记记录录为为0条时容易出错;等等。条时容易出错;等等。7.7.3错误推测错误推测镐藉尚儒敲淮愤轮吁澄绦其障瞎盈俄辰苇坞叉尸弯私疏蚜伦儒配帝檄土焉软件工程导论第五版软件工程导论第五版对对软软件件系系统统进进行行实实际际测测试试时时,应应该该联联合合使使用用各各种种设设计计测测试试方方案案的的方方法法,形形成成一一种种综综合

226、合策略。具体可以使用如下策略:策略。具体可以使用如下策略:1)在任何情况下都应该进行边界值分析;)在任何情况下都应该进行边界值分析;2)必要时用等价划分法补充测试方案;)必要时用等价划分法补充测试方案;7.7.4实用测试策略实用测试策略诽呆涌歇蚜匈务避眩劣素噶违篆左熬航亩烽倚穆透曾栈钳汇越挖归答结傣软件工程导论第五版软件工程导论第五版3)必要时再用错误推测法补充测试方案;)必要时再用错误推测法补充测试方案;4)对照程序逻辑,检查已经设计出的测试)对照程序逻辑,检查已经设计出的测试方案。可以根据对程序可靠性的要求采用方案。可以根据对程序可靠性的要求采用不同的逻辑覆盖标准。不同的逻辑覆盖标准。较酵

227、届璃恩傲饮溜淬棚删奎砌着盛讹诡郧忍针痰毗慌位交蛙倒海绰陨肖喇软件工程导论第五版软件工程导论第五版 实实实实例例例例:程程序序TRIANGLE读读入入三三个个整整数数值值,这这三三个个整整数数代代表表同同一一个个三三角角形形三三条条边边的的长长度度,程程序序根根据据这这三三个个值值判判断断三三角角形形属属于于不不等等边边、等腰或是等边三角形。等腰或是等边三角形。尾常保馆午等纹瞬躲趁挥她启几蒲纵掀躬诲菇波遗叼恒输华枝业毛炉听掣软件工程导论第五版软件工程导论第五版开始开始停止停止AB+CBA+CCA+BA=BA=CB=CB=C输出:等输出:等边三角形边三角形输出:不输出:不等边三角等边三角形形输出:

228、等输出:等腰三角形腰三角形输出:不输出:不是三角形是三角形abcdefghijklmnop12345678910111213141516171819202122TFTFTFTTFFFTTF图图7.8程序程序TRIANGLE的流程图的流程图纤让敦尤藐即示雁哨丘贵替疲缺骇迁鬃柔辊浓序缺洼挪鸿墨婪磅汪鞋揍登软件工程导论第五版软件工程导论第五版综综合合使使用用边边界界值值分分析析、等等价价值值划划分分和和错错误误推推测测等等技技术,可以设计出术,可以设计出11种应该测试的情况:种应该测试的情况:(1)正常的不等边三角形)正常的不等边三角形;(2)正常的等边三角形)正常的等边三角形;(3)正正常常的的等

229、等腰腰三三角角形形,包包括括两两条条相相等等边边的的三三种种不不同排列方法同排列方法;(4)退退化化的的三三角角形形(即即两两边边的的和和等等于于第第三三边边),包包括三种不同排列方法;括三种不同排列方法;范甫税面蚕懊涸遵蒙匝磐疏倾至橙椽檀紫廖茅宏馋皋刹遇烧熊忆扑漫腑瘦软件工程导论第五版软件工程导论第五版(5)三三条条边边不不能能构构成成三三角角形形(即即两两边边之之和和小小于于第第三三边边),包括三种不同排列方法;包括三种不同排列方法;(6)一条边的长度为零,包括三种不同的排列方法;)一条边的长度为零,包括三种不同的排列方法;(7)两条边的长度为零,包括三种不同的排列方法;)两条边的长度为零

230、,包括三种不同的排列方法;(8)三条边的长度全为零;)三条边的长度全为零;(9)输入数据中包含负整数;)输入数据中包含负整数;(10)输入数据不全(不足三个正整数);)输入数据不全(不足三个正整数);(11)输入数据中包含非整数型的数据。)输入数据中包含非整数型的数据。况丧仆隆枕硅黎霹查卤显花焦铸跋迎登木百热淋三开浑匝账宋茵戎私南咨软件工程导论第五版软件工程导论第五版abcdefghklmnopij1234567891011121314151617181920212223图图7.9对应的程序图对应的程序图摘散沟仗丹童站朔职残粕螺凄耸钥赠莎奔禄赔翘嫁豌越铀搅廖友升伦判祁软件工程导论第五版软件工程

231、导论第五版程序程序TRIANGLE的测试数据的测试数据测试功能测试功能测试数据测试数据abc1.等边等边2.等腰等腰3.不等边不等边4.非三角形非三角形5.退化情况退化情况6.零数据零数据10,10,1010,10,178,10,1210,10,2110,5,50,0,00,0,70,10,12,10,17,108,12,1010,21,105,10,5,0,17,012,0,10,17,10,1010,12,821,10,105,5,10,17,0,012,10,0奠年浩吴让元挫择纹扑滓陌河晌悬定酝涅番蔽塑挺脐筐弛协斋炎涣腻渭肄软件工程导论第五版软件工程导论第五版测试功能测试功能测试数据测试

232、数据abc7.负数据负数据8.遗留数据遗留数据9.无效输入无效输入10.边界值边界值-10,-10,-10-10,-10,17-8,10,17,10,8,10,A,B,C=,+,*8,10,A7E3,10.5,A32767,32766,8-32768,8,32766-32768,8,-32769,-10,17,-1017,-8,10,10,8,10,8,A,1010.5,7E3,A32766,8,3276732768,8,-327698,-32767,-32768,17,-10,-1010,12,8,10,8,10,A,10,8A,10.5,7E332768,8,32767-32769,8,3

233、2767-32767,8,-32769凤忿稽瘦鲸温阉峭惦赖钉惦声署墙团唯义擎篇瞻务酵晤违曲愚茂饲傲柬宝软件工程导论第五版软件工程导论第五版最后,检查测试数据的覆盖程度,通常应最后,检查测试数据的覆盖程度,通常应该做到边覆盖。该做到边覆盖。测试数据覆盖程度检验表中列出的四种测测试数据覆盖程度检验表中列出的四种测试数据已经做到了边覆盖(覆盖所有的试数据已经做到了边覆盖(覆盖所有的22条条边)。边)。灸如球忧菇糊夯涟凤痴涕莫卿辈痛檄翠柠摇贵恫套啃尤诛段滔截蚁厄雁剩软件工程导论第五版软件工程导论第五版测试数据覆盖程度检验表测试数据覆盖程度检验表编号编号测试数据测试数据覆盖的边覆盖的边12a2b2c3a

234、3b3c4a4b4c10,10,1010,10,1710,17,1017,10,108,10,128,12,1010,12,810,10,2110,21,1021,10,101,2,3,4,5,6,7,81,2,3,4,5,15,19,20,81,2,3,4,14,18,19,20,81,2,3,4,14,16,17,19,20,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,11,12,13,81,2,10,12,13,81,9,12,13,8沫以挝槐谴恳摈台奄隔簿儡诀衬衙彼拟彻衫赏琵有稠批熄狈藐殖潭

235、娥亏降软件工程导论第五版软件工程导论第五版7.8调试调试7.8.1调试过程调试过程调试是在测试发现错误之后排除错误的过程。调试是在测试发现错误之后排除错误的过程。测试用例测试用例结果结果调试调试附加测试附加测试纠正且回归测试纠正且回归测试已识别原因已识别原因被怀疑原因被怀疑原因氟奥阉料昼涧刘耪慨情诫皱腆徘鹅驰蔬疆喜戳捎绘瘤雾粟赂街幽缀甥预蒋软件工程导论第五版软件工程导论第五版1.蛮蛮蛮蛮干干干干法法法法:打打印印内内存存的的内内容容,从从中中寻寻找找错错误误的的线索,是效率最低的程序调试方法。线索,是效率最低的程序调试方法。2.回回回回溯溯溯溯法法法法:从从发发现现问问题题的的程程序序段段开开

236、始始人人工工地地往往回追踪分析程序代码,直到找到错误。回追踪分析程序代码,直到找到错误。3.原因排除法原因排除法原因排除法原因排除法包括:对分查找法、归纳法、演绎法包括:对分查找法、归纳法、演绎法7.8.2调试途径调试途径叔黎破纬狈惦亩豁翠淘斤花销缎飘临腑层谩辜压釜俩溢组也缄蓄量棕构婶软件工程导论第五版软件工程导论第五版7.9软件可靠性软件可靠性1.软件可靠性定义软件可靠性定义软软软软件件件件可可可可靠靠靠靠性性性性:是是程程序序在在给给定定的的时时间间间间隔隔内内,按按照规格说明书的规定成功地运行的概率。照规格说明书的规定成功地运行的概率。7.9.1基本概念基本概念弦悄敦吉萌抬缺赦踩逆桓蝗几

237、喊臂沧壤槛孟乔苗条崇负嘶彭析窃贡馋蒋柴软件工程导论第五版软件工程导论第五版2.软件的可用性软件的可用性对对故故障障可可修修复复系系统统,应应同同时时使使用用可可靠靠性性和和可可用性来衡量。用性来衡量。软软软软件件件件可可可可用用用用性性性性是是:程程序序在在给给定定的的时时间间点点,按按照照规格说明书的规定,成功地运行的概率。规格说明书的规定,成功地运行的概率。可靠性和可用性的区别可靠性和可用性的区别可靠性和可用性的区别可靠性和可用性的区别是:可靠性是在是:可靠性是在0到到t时间间隔内,系统没有失效的概率。而可用性时间间隔内,系统没有失效的概率。而可用性是在是在t时刻,系统是正常运行的概率。时

238、刻,系统是正常运行的概率。粳禄义纷血褂牌秸饼苗彻唁丸丝拎怖笋劈击历滁综师帮研衣丝惟绘奴斌弹软件工程导论第五版软件工程导论第五版如果在如果在t时刻,系统是可用的,则有两种可能:时刻,系统是可用的,则有两种可能:1)在)在0到到t时刻这段时间内,系统一直没有失时刻这段时间内,系统一直没有失效(可靠);效(可靠);2)在)在0到到t时刻这段时间内失效过,但是系统时刻这段时间内失效过,但是系统修复后运行到修复后运行到t时刻时情况良好。时刻时情况良好。蚌裔颐含且湿话侧勿螟袖拭乘苏炯源扬设妇姿规袭蔬鞋梭境看浇刮绕蒜图软件工程导论第五版软件工程导论第五版如如果果在在一一段段时时间间内内,软软件件系系统统故故

239、障障停停机机时时间间分分别别为为:td1,td2,正正常常运运行行时时间间分分别别为为:tu1,tu2,则系统的稳态可用性定义为:则系统的稳态可用性定义为:其中其中Tup=tui,Tdown=tdi人皇偶率摇帅昭糖烧酉浙雄每腻套显滋拇棵桥厉脚暮惧铣苇懈诀赊执湘图软件工程导论第五版软件工程导论第五版如果引入系统平均无故障时间如果引入系统平均无故障时间MTTF和平均维修时间和平均维修时间MTTR的概念,则上面公式的系统稳态可用性变成:的概念,则上面公式的系统稳态可用性变成:平平平平均均均均维维维维修修修修时时时时间间间间MTTR是是修修复复一一个个故故障障平平均均需需要要用用的的时时间,取决于维护

240、人员的技术水平和对系统熟悉程度。间,取决于维护人员的技术水平和对系统熟悉程度。平均无故障时间平均无故障时间平均无故障时间平均无故障时间MTTF是系统按照规格说明书规定成是系统按照规格说明书规定成功地运行的平均时间,取决于系统中潜伏的错误数量。功地运行的平均时间,取决于系统中潜伏的错误数量。府菜淄肮窒尝渴扯株昭修嚏第奇滥揉伐赌扶秃缎犊读懦棋埂系谜揽寄栈沿软件工程导论第五版软件工程导论第五版1.符号符号估算估算MTTF时使用到下列符号时使用到下列符号ET测试之前程序中故障总数;测试之前程序中故障总数;IT程序长度(机器指令总数);程序长度(机器指令总数);测试(包括调试)时间;测试(包括调试)时间

241、;Ed()在在0至至期间发现的错误数;期间发现的错误数;Ec()在在0至至期间改正的错误数;期间改正的错误数;7.9.2估算平均无故障时间估算平均无故障时间MTTF的方法的方法忧牙轰宝编郊闷顷材垛蒂狱期煮锹紧首凌拇责吮肢也玻驮荚疮良鸟芜伟冕软件工程导论第五版软件工程导论第五版2.基本假定基本假定可作出下列假定:可作出下列假定:1)单单单单位位位位长长长长度度度度里里里里的的的的故故故故障障障障数数数数E ET T/ /I IT T近近近近似似似似为为为为常常常常数数数数。一一些些统统计计数字表明,通常有:数字表明,通常有:0.510-2ET/IT210-2。2)失失失失效效效效率率率率正正正正

242、比比比比于于于于软软软软件件件件中中中中剩剩剩剩余余余余的的的的(潜潜潜潜藏藏藏藏的的的的)故故故故障障障障数数数数,而而而而平均无故障时间平均无故障时间平均无故障时间平均无故障时间MTTFMTTF与剩余的故障数成反比与剩余的故障数成反比与剩余的故障数成反比与剩余的故障数成反比。3)调试过程没有引入新的故障调试过程没有引入新的故障调试过程没有引入新的故障调试过程没有引入新的故障,即,即Ec()=Ed()。剿慎诛厚吕包申衬砒丹彪涎诞惯凉骋袒先飘蝉凰酬低叔闻达笆梢诗享秦莱软件工程导论第五版软件工程导论第五版由于系统剩余的故障数为:由于系统剩余的故障数为:Er()=ET-Ec()所以单位长度程序中剩

243、余的故障数为:所以单位长度程序中剩余的故障数为:r()=ET/IT-Ec()/IT雇毫纵星腋呜獭具醚豫蹈墓筛褪靖尖滨培妇桐沏珠衰堰同姬四炳帧替漳糙软件工程导论第五版软件工程导论第五版3.估算平均无故障时间估算平均无故障时间MTTF因为平均无故障时间与单位长度程序中剩余因为平均无故障时间与单位长度程序中剩余的故障数的故障数r()成反比,所以:成反比,所以:其其中中:K为为常常数数,它它的的值值根根据据经经验验选选取取,经典值是经典值是200。咋旗骡卤享檬绘秦哩硕辗斑矣坛三恫事衍芒伐十或于痰莲拣祟蒜滨柱追请软件工程导论第五版软件工程导论第五版由上式变换后得到程序中改正的错误数:由上式变换后得到程序

244、中改正的错误数: 根据对软件平均无故障时间的要求,可以估计根据对软件平均无故障时间的要求,可以估计需要改正多少个错误后,测试工作就可以结束。需要改正多少个错误后,测试工作就可以结束。 驶哮扎辞虞脐之畏邢蜗示念水琴补睬葡岗嘘纪蚌芝乎王点次茅戳消鸿拘桔软件工程导论第五版软件工程导论第五版4.估计故障总数估计故障总数ET的方法的方法1)植入故障法植入故障法植入故障法植入故障法假设人为地植入的故障数为假设人为地植入的故障数为Ns,经过一段时间的测试,经过一段时间的测试之后发现之后发现ns个植入的故障,同时还发现了个植入的故障,同时还发现了n个原有的故个原有的故障,则可以估计出程序中原有的故障总数:障,

245、则可以估计出程序中原有的故障总数:其中:其中:是故障总数是故障总数ET的估计值;的估计值;漂柑寨坤都描教脐泪侣底瘴掘疡耪囱屏芦撕铸哗疾嚷捉客距饼摸规厂颊泌软件工程导论第五版软件工程导论第五版植植入入错错误误法法人人为为植植入入的的错错误误与与原原有有程程序序错错误误可可能能性性质质很很不不相相同同,发发现现它它们们的的难难度度也也不不同同,用用此此法估计的错误数有时可能不太准确。法估计的错误数有时可能不太准确。2)分别测试法分别测试法分别测试法分别测试法分分别别测测试试法法随随机机把把程程序序中中一一部部分分原原有有错错误误加加上上标标记记,根根据据测测试试发发现现的的有有标标记记和和无无标标

246、记记错错误误的的比比例,估计程序错误总数。例,估计程序错误总数。符贰咨船臀播烘摇已娄干米彝御肤叔氢拜二靳径衷允拖药胳瓷犁泌笛瓢诊软件工程导论第五版软件工程导论第五版分分别别测测试试法法使使用用两两个个测测试试员员,独独立立地地测测试试同同一一个个程程序序的的两两个个副副本本,由由另另一一名名分分析析员员分分析析他他们们的的测测试试结结果果,把把其其中中一一个个测测试试员员发发现现的的故故障障作作为为有有标记的故障。用标记的故障。用表示测试时间,假设表示测试时间,假设=0时故障总数为时故障总数为B0(即(即ET););=1时测试员甲发现的故障数为时测试员甲发现的故障数为B1;=1时测试员乙发现的

247、故障数为时测试员乙发现的故障数为B2;=1时两个测试员发现的相同故障数为时两个测试员发现的相同故障数为bc。辛轮投洋费厅螟嗜闻畅笋券还对秧境猾讨庄诬箍茸蜕赫斟尾绸饵探和臣蹦软件工程导论第五版软件工程导论第五版如果认为测试员甲发现的故障是有标记的,即如果认为测试员甲发现的故障是有标记的,即程序中有标记的故障总数为程序中有标记的故障总数为B1,那么测试员乙发,那么测试员乙发现的现的B2个故障中有个故障中有bc个是有标记的。所以可以估个是有标记的。所以可以估计出测试前程序中的故障总数为:计出测试前程序中的故障总数为:其中,其中,是故障总数是故障总数ET的估计值。的估计值。每隔一定时间,分析员分析两名

248、测试员的测试每隔一定时间,分析员分析两名测试员的测试结果,来估计错误总数。几次估计结果差不多时,结果,来估计错误总数。几次估计结果差不多时,用其平均值作为错误总数的估计值。用其平均值作为错误总数的估计值。敌嗣釜霖墒崖工礼渍全膊慈昼燕踊汽桓炼王攫槐呸半歪尤梦索贱炕浪鸿搪软件工程导论第五版软件工程导论第五版一种预测软件可靠性和衡量软件质量的方法。一种预测软件可靠性和衡量软件质量的方法。用测试完成率作为度量软件质量的标准。用测试完成率作为度量软件质量的标准。7.10日立预测法日立预测法 芋昌遣椽归洋伤堪鞍贤熄幻瘴烟悯怯虏苇惕斥慌忽呈践痈俩侄旗茹铂竭壤软件工程导论第五版软件工程导论第五版7.10.1测

249、试完成率模型测试完成率模型50%100%测测试试时时间间使用率使用率第一第一阶段阶段第二第二阶段阶段第三第三阶段阶段100%测测试试用用例例完完成成率率测试用例完成率随测试时测试用例完成率随测试时间变化的情况间变化的情况日日立立的的经经验验表表明明,完完成成软软件件测测试试通通常常需需要要经经历历三三个个阶阶段段,第第一一阶阶段段故故障障多多,测测试试完完成成慢慢,第第二二阶阶段段测测试试完完成成率率提提高高快快,第第三三阶阶段段错错误误难难改改正正,完完成成率率提提高不快。高不快。测测试试时时间间使使用用率率测测试试所所用用时时间间/测测试试允允许许使使用用时时间。间。芳浪斯粮勃肚忻何鄂嵌孪

250、嵌牲泞帖杰西挽瘪黑胁榜帛锥林账撑裔滩袖腿弄软件工程导论第五版软件工程导论第五版50%100%测测试试时时间间使用率使用率第一第一阶段阶段第二第二阶段阶段第三第三阶段阶段100%测测试试用用例例完完成成率率测试用例完成率随测试时测试用例完成率随测试时间变化的情况间变化的情况日立的经验表明:日立的经验表明:1)第第一一个个阶阶段段平平均均占总时间的占总时间的22%;2)如如果果第第一一个个阶阶段段占占用用的的时时间间超超过过总总时时间间的的55%以以上上时时,该该项项工工程必然失败;程必然失败;斡甚商戮甥篮洛锻谆钱棒颇宝仇痹悠慎逞抹赛摧鞋字羹傲躺哑瞅追易扣邯软件工程导论第五版软件工程导论第五版3)

251、成成功功的的工工程程第第一一个个阶阶段段占占用用的的时时间间平平均均为为总总时时间间的的15%,失失败败的的工工程程第第一一个个阶阶段段占占用用的的时时间间高高达达总时间的总时间的97%左右;左右;4)成功的工程第二阶段)成功的工程第二阶段占总时间的占总时间的57%左右,失左右,失败的工程第二个阶段只占败的工程第二个阶段只占总时间的总时间的29%左右。左右。50%100%测测试试时时间间使用率使用率第一第一阶段阶段第二第二阶段阶段第三第三阶段阶段100%测测试试用用例例完完成成率率测试用例完成率随测试时测试用例完成率随测试时间变化的情况间变化的情况并日赊嘱粟蹦成朗血砚刑品讯殴袱俏句丙宗韭宽投俱

252、显仪突现悔屡推淬溯软件工程导论第五版软件工程导论第五版错误发现率:单位时间内发现的错误数。错误发现率:单位时间内发现的错误数。峰值时间峰值时间成功的成功的工程工程失败的工失败的工程程极坏的工程极坏的工程时间时间错错误误发发现现率率错误发现率曲线错误发现率曲线7.10.2错误发现率模型错误发现率模型经经经经验验验验表表表表明明明明,失失失失败败败败工工工工程程程程的的的的错错错错误误误误发发发发现现现现率率率率曲曲曲曲线线线线的的的的斜斜斜斜率率率率范围是范围是范围是范围是-0.3-0.30 0,成功的工程为,成功的工程为,成功的工程为,成功的工程为-1-1-0.3-0.3罢懊渴鲁屯肌炭蝇笼理季

253、穗辽呢扎灌椽胳饲肚沼沤汉援内汁惑姐掖整镇魂软件工程导论第五版软件工程导论第五版7.10.3使用日立预测法的步骤使用日立预测法的步骤1)制订测试计划,设计测试方案,确定要完)制订测试计划,设计测试方案,确定要完成的测试用例的总数;成的测试用例的总数;2)从集成测试开始,记录测试用例完成数和)从集成测试开始,记录测试用例完成数和错误发现数,绘制用例完成率曲线和错误错误发现数,绘制用例完成率曲线和错误发现率曲线;发现率曲线;3)绘制曲线时,实际的数据是一串离散的点,)绘制曲线时,实际的数据是一串离散的点,如果工程不大周期不长的话,连接这些点如果工程不大周期不长的话,连接这些点得不到平滑的曲线时,作平

254、滑处理;得不到平滑的曲线时,作平滑处理;馆于揣粒玄议闻虐穆尘转靖窝瘴贸搂鸿糙考笔辐冀爸胀书磷消檄很邑殆欺软件工程导论第五版软件工程导论第五版4)每周至少检查一次绘制的曲线,以判断处于)每周至少检查一次绘制的曲线,以判断处于哪个阶段,如果第二阶段的到来比计划时间哪个阶段,如果第二阶段的到来比计划时间推迟推迟25,就需要及时采取措施补救;,就需要及时采取措施补救;5)严密注视错误发现率变化情况以确定其峰值,)严密注视错误发现率变化情况以确定其峰值,在错误发现率下降时,计算其斜率,如果大在错误发现率下降时,计算其斜率,如果大于于0.3就产生了严重的问题;就产生了严重的问题;6)每周至少检验一次,以修

255、正上一周作出的阶)每周至少检验一次,以修正上一周作出的阶段性预测。段性预测。澎摹践隙嫁郸熄共峭秀昔患佐界了挤库未缠跺状涵唁境哭拜叼逸牡迸龋向软件工程导论第五版软件工程导论第五版第第7章小结章小结测试计测试计测试计测试计划划划划为为做好集成做好集成测试测试和和验验收收测试测试,需,需为为如何如何组织测试组织测试制制订实订实施施计计划。划。计计划划应应包括包括测试测试的内容、的内容、进进度、条件、人度、条件、人员员、测测试试用例的用例的选选取原取原则则、测试结测试结果允果允许许的偏差范的偏差范围围等。等。测试测试测试测试分析分析分析分析报报报报告告告告测试测试工作完成以后,工作完成以后,应应提交提

256、交测试计测试计划划执执行情况的行情况的说说明,明,对测试结对测试结果加以分析,并提出果加以分析,并提出测试测试的的结论结论意意见见。锦拴迹缔建淘券赂钱娟拎从熏孙娱迭疗续惫用穆讥稻泵侮刑漱吝袭共浇握软件工程导论第五版软件工程导论第五版测试阶段可能用到的软件工具:测试阶段可能用到的软件工具:BugfreeBugfreeBugBug处理记录工具。处理记录工具。处理记录工具。处理记录工具。WikiWiki知识共享工具。知识共享工具。知识共享工具。知识共享工具。LoadRunnerLoadRunner 负荷(载)测试软件,预测系统行为和负荷(载)测试软件,预测系统行为和负荷(载)测试软件,预测系统行为和

257、负荷(载)测试软件,预测系统行为和性能的负载测试工具,通过模拟多至上千万用户性能的负载测试工具,通过模拟多至上千万用户性能的负载测试工具,通过模拟多至上千万用户性能的负载测试工具,通过模拟多至上千万用户实施并发负载及实时性能监测的方式来查找和确实施并发负载及实时性能监测的方式来查找和确实施并发负载及实时性能监测的方式来查找和确实施并发负载及实时性能监测的方式来查找和确认问题。认问题。认问题。认问题。宙吹接妇过酣睛酪晨倡诌皇之吊般钡氰称胳暗莆羔土兼弯场馆腔吝捍烤加软件工程导论第五版软件工程导论第五版第第8章:维护章:维护软件维护是软件生命周期的最后一个阶段。软件维护是软件生命周期的最后一个阶段。

258、它它的的任任务务是是:维维护护软软件件的的正正常常运运行行,不不断断改改进进软软件件的的性性能能和和质质量量,为为软软件件的的进进一一步步推推广广应应用用和和更新替换做积极工作。更新替换做积极工作。 芝秘帧交捡盼纶疼哑督娶柞俄钟旗迅粪袜忆湘快四倡蓄哲峻丁狰灿喇彪托软件工程导论第五版软件工程导论第五版 软件维护所需的工作量非常大,一般说来,软件维护所需的工作量非常大,一般说来,大型软件的维护成本高达开发总成本的四倍大型软件的维护成本高达开发总成本的四倍左右。目前,软件开发组织把左右。目前,软件开发组织把60%以上的工以上的工作量用于维护自己的软件上。作量用于维护自己的软件上。奔缄谣维热造节姚赚趋

259、溜潮挽瓤惠速巢眷肖嘱腋挎超人寺调胳渤番抱潦旋软件工程导论第五版软件工程导论第五版问题:软件交付使用问题:软件交付使用 软软件件验验收收测测试试以以后后,就就标标志志着着软软件件设设计计开发阶段的结束。开发阶段的结束。而而软软件件交交付付用用户户使使用用,才才真真正正标标志志漫漫长长的维护阶段的开始。的维护阶段的开始。徒铜亥胡丰脖侣驰钒声瞄亢疮柔罪氯疗半客份床鸵昔惋比雍恤铭蕴蔼林旨软件工程导论第五版软件工程导论第五版 软件交付使用就是新系统和旧系统的转换。软件交付使用就是新系统和旧系统的转换。 旧旧系系统统可可能能是是人人工工作作业业系系统统,也也可可能能是是某某个个旧旧的计算机系统。的计算机系

260、统。 软软件件交交付付应应该该是是一一个个过过程程,而而不不是是一一个个突突然然事事件件,软软件件的的交交付付使使用用应应尽尽可可能能平平稳稳过过渡渡,不不影影响响生产或工作,新系统逐步安全地取代旧系统。生产或工作,新系统逐步安全地取代旧系统。杠挺郊瑰筑呀彬亩狸勺按仍驭峪漏敢顾极滇苗矾活膊预针宿阅弧背导澜呼软件工程导论第五版软件工程导论第五版一、软件交付使用的工作一、软件交付使用的工作1)将将旧旧系系统统的的数数据据转转换换到到新新系系统统(如如数数据据库库数数据);据);2)新系统调试完成并加载入机器,准备运行;)新系统调试完成并加载入机器,准备运行;3)将有关资料(如使用说明)转交给用户;

261、)将有关资料(如使用说明)转交给用户;4)对用户做适当的培训。)对用户做适当的培训。辖藏破虫货狂噪缅叼总空锐毒躇懦紧忧辩蠢糜铁荆浊撤倘嫡稼玫说练籍珐软件工程导论第五版软件工程导论第五版二、软件交付使用的方式二、软件交付使用的方式1)直接方式)直接方式旧系统旧系统新系统新系统(a)直接方式)直接方式直接方式是用新系统直接替换旧系统,没有过渡。直接方式是用新系统直接替换旧系统,没有过渡。优点:优点:转换简单,费用最省转换简单,费用最省转换简单,费用最省转换简单,费用最省。缺点:缺点:风险大风险大风险大风险大。菩淄午褥舅质坟义格宫碴呛疹掺愿拐魏挛沦铭狭否嗓矮锯八渊遍糟气随蝇软件工程导论第五版软件工程

262、导论第五版 由于新系统没有承担过实际工作,可能会出由于新系统没有承担过实际工作,可能会出现意想不到的问题,甚至出现程序设计错误。现意想不到的问题,甚至出现程序设计错误。 因此,实际应用时,采取一些措施,以便新因此,实际应用时,采取一些措施,以便新系统一旦出错,旧系统能够恢复运行。系统一旦出错,旧系统能够恢复运行。 直接方式不适用于一些关系重大的系统。直接方式不适用于一些关系重大的系统。盖锁茨很净姐卿若轩糯归舌光歧闭害哩煞京坐僚耻涂烦翅寸羔铀巍松醒软软件工程导论第五版软件工程导论第五版2)并行方式)并行方式旧系统旧系统新系统新系统(b)并行方式)并行方式 一一些些关关系系重重大大的的软软件件产产

263、品品在在验验收收测测试试后后,并并不不立立即即投投入入生生产产性性运运行行,而而是是同同时时运运行行新新系系统统和和旧旧系系统统,以以比比较较处处理理结结果果,这这就就是是并并行行方方式。式。 昂盒衬配衷橡恕睁拿世列宴凡昧空饿虾韧侧淬肚线预午酬允夜啃裂剪圆计软件工程导论第五版软件工程导论第五版优点优点优点优点:A.可可以以对对系系统统进进行行全全面面测测试试,减减少少了了新新系系统统失失灵灵带带来的风险,因为旧系统也仍然存在;来的风险,因为旧系统也仍然存在;B用户也能够有一段熟悉新系统的时间。用户也能够有一段熟悉新系统的时间。缺点缺点缺点缺点:所需费用较高,双系统要投入更多的人力财力。所需费用

264、较高,双系统要投入更多的人力财力。掘踩刻翌胡罚瘫询铃黑涉惨荧庇镜宣称互卓沮诈扶趁细睡卤糟诬杏呕谰陇软件工程导论第五版软件工程导论第五版3)逐步方式)逐步方式 逐步方式是将软件分期,部分地交付使用。逐步方式是将软件分期,部分地交付使用。这种方式克服了上面两种方式的缺点,既能防这种方式克服了上面两种方式的缺点,既能防止直接转换产生的危险性,又能减少并行方式止直接转换产生的危险性,又能减少并行方式的费用。的费用。 但是这种方法使得整个系统中一部分是旧系但是这种方法使得整个系统中一部分是旧系统,一部分是新系统,所以必须考虑好它们的统,一部分是新系统,所以必须考虑好它们的相互配合问题和接口问题。相互配合

265、问题和接口问题。档战雨珐巨嗽飘裂缄掖诬蹦蔬故楔粉莎务料眶茁泻贝赤尝周粮貉吩实沛患软件工程导论第五版软件工程导论第五版实际应用中,常常是混合以上几种方法。对实际应用中,常常是混合以上几种方法。对系统不重要的部分采用直接方式,对系统重要系统不重要的部分采用直接方式,对系统重要部分采用并行方式,使系统平稳交付使用。部分采用并行方式,使系统平稳交付使用。娄云矩稠傈古需绞侵疥凑杜痈鼠寻椒逞旋会幌瞻雇棒巳复升啃孵右默源锥软件工程导论第五版软件工程导论第五版通常要求进行软件维护的原因有三种:通常要求进行软件维护的原因有三种:1)改改正正在在特特定定使使用用条条件件下下暴暴露露出出来来的的一一些些潜潜在在程序

266、错误或设计缺陷;程序错误或设计缺陷;2)因因在在软软件件使使用用过过程程中中数数据据环环境境发发生生变变化化(如如所所要要处处理理的的数数据据发发生生变变化化)或或处处理理环环境境发发生生变变化化(如如硬硬件件或或软软件件操操作作系系统统等等发发生生变变化化),需要修改软件,以适应这种变化;需要修改软件,以适应这种变化;8.1软件维护的定义软件维护的定义8.1.1软件维护的原因软件维护的原因升冀彰鄂吼样解峻乒塑怕易进抽侗清俘眩桥嘛叉逃矢撇兑七帕毯靛症号桐软件工程导论第五版软件工程导论第五版3)用用户户和和数数据据处处理理人人员员在在使使用用时时常常提提出出改改进进现现有有功功能能、增增加加新新

267、功功能能、以以及及改改善善总总体体性性能能的的要要求求,为为满满足足这这些些要要求求,需需要要修修改改软软件。件。含瘟牙辣巷齐删冤诀溶洒革鹤羽浪凄佰河玫巾茨裔西阮畜柿为铝憎澈林卫软件工程导论第五版软件工程导论第五版1)改正性维护改正性维护交交付付给给用用户户使使用用的的软软件件,即即使使通通过过严严格格的的测测试试,仍仍可可能能有有一一些些潜潜在在的的错错误误在在用用户户使使用用的的过过程程中中发发现现和和修修改改。诊诊断断和和改改正正错错误误的的过过程程称称为为改改正正性维护。性维护。8.1.2软件维护的类型软件维护的类型乎悉蹦钱庆母毖擦支庇系增跌戎郸驹扔莉地鲜恍嘻嵌磺彦寄诺钮罪荧危把软件工

268、程导论第五版软件工程导论第五版2)适应性维护适应性维护 随着计算机的飞速发展,新的硬件系统和外随着计算机的飞速发展,新的硬件系统和外部设备时常更新和升级,一些数据库环境、数部设备时常更新和升级,一些数据库环境、数据输入据输入/输出方式、数据存储介质等也可能发生输出方式、数据存储介质等也可能发生变换。为了使软件适应这些环境变化而修改软变换。为了使软件适应这些环境变化而修改软件的过程叫做适应性维护。件的过程叫做适应性维护。咙妊吵改回杭蛮谨傻颓牺捌茁痈酸斯酶刨汝嫁涅锄指铅汽糜毁紊值匿见寿软件工程导论第五版软件工程导论第五版3)完善性维护完善性维护在在软软件件投投入入使使用用过过程程中中,用用户户可可

269、能能还还会会有有新新的的功功能能和和性性能能要要求求,可可能能会会提提出出增增加加新新功功能能、修修改改现现有有功功能能等等要要求求。为为了了满满足足这这类类要要求而进行的维护称为完善性维护。求而进行的维护称为完善性维护。誉洗厘拣渊禹豫羚项隋赴拄锚赡嘿皆合颤屡曙受傻铁坯祥障葫挎滨徒躇墙软件工程导论第五版软件工程导论第五版4)预防性维护预防性维护为为了了改改进进软软件件未未来来的的可可维维护护性性或或可可靠靠性性,或或者者为为了了给给未未来来的的改改进进奠奠定定更更好好的的基基础础而而进进行行的的修改,称为预防性维护。修改,称为预防性维护。 这种维护活动在实践中比较少见。这种维护活动在实践中比较

270、少见。土破资慌厄匙沛芬沏俏曙痪纯赵事豌崩寐拉站迷狡翼讣檀团姜肾捕贿沛天软件工程导论第五版软件工程导论第五版在各类维护中,完善性维护占软件维护工作的在各类维护中,完善性维护占软件维护工作的大部分。大部分。根据国外的数据统计表明,完善性维护占全部根据国外的数据统计表明,完善性维护占全部维护活动的维护活动的50%66%,改正性维护占,改正性维护占17%21%,适应性维护占,适应性维护占18%25%,其它维护活动,其它维护活动占占4%左右。左右。得懦猴瓷魏矮皿录窜烟攘均酥槐押湘岩合骸斌辰颧逞啦稀捧怨逢百尼弃刃软件工程导论第五版软件工程导论第五版8.2.1结构化维护与非结构化维护的差别结构化维护与非结构

271、化维护的差别1.非结构化维护非结构化维护软件配置的唯一成分是代码,维护从评价程序代码开始,软件配置的唯一成分是代码,维护从评价程序代码开始,对软件结构、数据结构、系统接口、设计约束等常产生误对软件结构、数据结构、系统接口、设计约束等常产生误解,不能进行回归测试,维护代价大。解,不能进行回归测试,维护代价大。2.结构化维护结构化维护有完整的软件配置,维护从评价设计文档开始,确定软有完整的软件配置,维护从评价设计文档开始,确定软件结构、性能和接口特点,现修改设计,接着修改代码,件结构、性能和接口特点,现修改设计,接着修改代码,再进行回归测试。再进行回归测试。8.2软件维护的特点软件维护的特点霉畸塞

272、矮躯究徒驯订款挑颜较绵牧籍双穷顾琼浊基玉扁涂盘崎腺铃全吕雀软件工程导论第五版软件工程导论第五版软件维护的代价表现为有形代价和无形代价。软件维护的代价表现为有形代价和无形代价。有形代价指软件维护的费用开支。有形代价指软件维护的费用开支。70年年代代,用用于于软软件件维维护护的的费费用用只只占占软软件件总总预预算算的的30%40%,80年年代代上上升升到到60%左左右右,90年年代代许多软件项目的维护经费预算达到了许多软件项目的维护经费预算达到了80%。8.2.2软件维护的代价软件维护的代价1.有形代价与无形代价有形代价与无形代价啥哨挞浙淖鸭酋氏岭毡序趋近佬淹捷靴嫁股揍匡拯障坝铂枢郎灵摄荤仁窑软件

273、工程导论第五版软件工程导论第五版无形代价:无形代价:1)当当一一些些看看起起来来合合理理的的要要求求不不能能及及时时满满足足时时,会引起用户的不满;会引起用户的不满;2)改改动动软软件件可可能能会会引引入入新新的的错错误误,使使软软件件质质量下降;量下降;3)把把许许多多软软件件工工程程师师调调去去从从事事维维护护工工作作,势势必影响开发工作。必影响开发工作。钩略恰孩写宵在嘴烛零朽蛊纫把抖殆主玩彼咋逸掖商遥躺乡鞍刚枝乍足邑软件工程导论第五版软件工程导论第五版 软软件件维维护护所所花花费费的的工工作作量量,一一部部分分用用于于生生产产性性活活动动,如如分分析析、评评价价、修修改改设设计计、编编写

274、写程程序序等等;另另一一部部分分用用于于非非生生产产性性活活动动,如如理理解解代代码码的含义、解释数据结构和接口特点等。的含义、解释数据结构和接口特点等。2.软件维护工作量模型软件维护工作量模型绸啊痈醒张冶肖苇数襄谅侦吮宵捏搏虾撮埋锻群雄讥枉豁竣脂垫缘笺嘛哎软件工程导论第五版软件工程导论第五版Belady和和Lehman提出了一种维护工作量模型:提出了一种维护工作量模型:M=P+Ke(c-d)其中:其中:M:用于维护工作的总工作量:用于维护工作的总工作量;P:生产性工作量;生产性工作量;K:经验常数;经验常数;c:因缺乏好的设计和文档而导致软件复杂性的度量;因缺乏好的设计和文档而导致软件复杂性

275、的度量;d:维护人员对软件熟悉程度的度量。维护人员对软件熟悉程度的度量。芥吭轧祟芽幢啪棉硫蒜氓哆茨逊攀伴洪恢食盎抵奋包岗娃回毒苹卿猎妒号软件工程导论第五版软件工程导论第五版 上述模型指出:如果使用了不好的软件开发方上述模型指出:如果使用了不好的软件开发方法,原来参加开发的人员或小组不能参加维护,法,原来参加开发的人员或小组不能参加维护,则工作量和成本将按指数级增加。则工作量和成本将按指数级增加。剂澡蚌椎移器乙石贩聂渡鳃涪佐翁滇混竭彩穷师顽无隶不诀漳阁铁啤预缕软件工程导论第五版软件工程导论第五版8.2.3软件维护的典型问题软件维护的典型问题1)如如果果维维护护时时只只有有程程序序代代码码而而没没

276、有有注注释释说说明明,维护起来就相当困难;维护起来就相当困难;2)由由于于软软件件维维护护阶阶段段时时间间长长,软软件件开开发发人人员员经经常常流流动动,所所以以在在维维护护时时,不不可可能能所所有有的的维维护护工工作作都都依依靠靠原原来来的的开开发发人人员员。这这会会使使得维护工作量增加;得维护工作量增加;后去庚虫舍斧梭冈蛆蚁车枉撬斋迂攒强皿蹦雪粉汗东佛巍傈尔讥点络秉谣软件工程导论第五版软件工程导论第五版3)软软件件没没有有足足够够的的文文档档资资料料,或或者者程程序序修修改改后后与文档资料不一致;与文档资料不一致;4)绝绝大大多多数数软软件件在在设设计计时时没没有有考考虑虑将将来来的的修修

277、改改,所所以以建建议议采采用用功功能能独独立立的的模模块块化化设设计计原原则则,增加软件的可维护性;增加软件的可维护性;5)软件维护被许多人视为一种毫无吸引力的工)软件维护被许多人视为一种毫无吸引力的工作,因为维护工作常常受到挫折。作,因为维护工作常常受到挫折。要缓解以上典型问题,建议采用软件工程的方法来开发程序。要缓解以上典型问题,建议采用软件工程的方法来开发程序。县拿坷拇酬继瘴翁邯掘而萝吧涂元泊蔚弥软氯么优署崔铡螟叁羽凋禁遣件软件工程导论第五版软件工程导论第五版8.3软件维护过程软件维护过程1.维护组织维护组织维护要求维护要求(软件问题报告)(软件问题报告)维护管理员维护管理员系统管理员系

278、统管理员软件系统软件系统变化授权人变化授权人图图8.1维护组织维护组织桐啼俺姨束钧波装僵况涩氰杰伶挛呀贼手的社耽会慎夕颖尚衅沮鸣磕维庄软件工程导论第五版软件工程导论第五版根据软件问题报告(维护要求),作出的软件修改根据软件问题报告(维护要求),作出的软件修改报告包含的信息主要有:报告包含的信息主要有:1)满足维护要求表中提出的要求所需要的工作量;)满足维护要求表中提出的要求所需要的工作量;2)维护要求的性质;)维护要求的性质;3)这项要求的优先次序;)这项要求的优先次序;4)与修改有关的事后数据(如测试数据等)。)与修改有关的事后数据(如测试数据等)。2.维护报告维护报告揣舶榔柄淋乌氧等涯鸦铱

279、醚扭泊肮注艾钦臆上滇脖社腺宣排汇缄怯赡筋毡软件工程导论第五版软件工程导论第五版3.维护的事件流维护的事件流类型类型开始分开始分析问题析问题评价优评价优先度先度计划改计划改正进度正进度开始分开始分析析维护任维护任务务复审复审估量错估量错误严重误严重程度程度维护要求维护要求错误错误严重严重适应适应完善完善不严重不严重错误改正目录错误改正目录开发目录开发目录高高低低分配的人员分配的人员分配的人员分配的人员修修改改后后的的软件配置软件配置复复审审后后供供使使用用的软件配置的软件配置图图8.2维护阶段的工作流程维护阶段的工作流程 社卿甲瞥吐当嚎娱和坤藤途徐捉案犊腕朋鼎旱懒渗骗母蜀瘩丽陇昂砸榷废软件工程导

280、论第五版软件工程导论第五版4.保存维护记录保存维护记录1)程序标识;)程序标识;2)源语句数;)源语句数;3)机器指令数;)机器指令数;4)使用的程序设计语言;)使用的程序设计语言;5)程序安装的日期;)程序安装的日期;6)自安装以来程序运行次数;)自安装以来程序运行次数;7)自安装以来程序失效次数)自安装以来程序失效次数8)程序变动的层次和标识;)程序变动的层次和标识;9)因程序变动而增加的源语句数;因程序变动而增加的源语句数;10)因程序变动而删除的源语句数;因程序变动而删除的源语句数;11)每个改动耗费的人时数;)每个改动耗费的人时数;12)程序改动的日期;)程序改动的日期;13)软件工

281、程师的名字;)软件工程师的名字;14)维护要求表的标识;)维护要求表的标识;15)维护类型;)维护类型;16)维护开始和完成的日期;)维护开始和完成的日期;17)累计用于维护的人时数;)累计用于维护的人时数;18)与完成的维护相联系的纯效益。与完成的维护相联系的纯效益。讽僚稀瘸覆赡猪袜讳十到宇牢阴剁缺弹顽爽螺瑚史酣吵亩刽痞爵在志点彼软件工程导论第五版软件工程导论第五版5.评价维护活动评价维护活动可以从以下方面度量维护工作:可以从以下方面度量维护工作:1)每次程序运行平均失效的次数;)每次程序运行平均失效的次数;2)用于每一类维护活动的总人时数;)用于每一类维护活动的总人时数;3)平均每个程序、

282、每种维护类型所做的程序变动数;)平均每个程序、每种维护类型所做的程序变动数;4)维护过程中增加或删除一个源语句平均花费的人时数;)维护过程中增加或删除一个源语句平均花费的人时数;5)维护每种语言平均花费的人时数;)维护每种语言平均花费的人时数;6)一张维护要求表的平均周转时间;)一张维护要求表的平均周转时间;7)不同维护类型所占的百分比。)不同维护类型所占的百分比。翘轨楚桩海哟蔬屏肋盔匿醛橡穴懂恼哟熟押匆龚扔动构槽酝极振噎岸饿赚软件工程导论第五版软件工程导论第五版8.4软件的可维护性软件的可维护性软软件件可可维维护护性性是是:维维护护人人员员理理解解、改改正正和和改改进进软件的难易程度。软件的

283、难易程度。一个软件的可维护性,主要由三个因素决定:一个软件的可维护性,主要由三个因素决定:1.可理解性可理解性可理解性可理解性可可理理解解性性表表现现为为外外来来读读者者理理解解软软件件的的结结构构、接接口、功能和内部过程的难易程度。口、功能和内部过程的难易程度。8.4.1决定软件可维护性的因素决定软件可维护性的因素目妓扮默篷松揣攒戎坝梗归红浙乎纠诚梆殃壕搓仗佬侮改荣犹游吃烦徐逸软件工程导论第五版软件工程导论第五版影响软件可理解性的重要因素有:模块化、影响软件可理解性的重要因素有:模块化、结构化设计、详细的设计文档资料、源代码内结构化设计、详细的设计文档资料、源代码内部文档、良好的程序设计语言

284、等。部文档、良好的程序设计语言等。2.可测试性可测试性可测试性可测试性在设计开发阶段应该注意尽量把软件设计成在设计开发阶段应该注意尽量把软件设计成容易测试和容易诊断的,可用的测试工具和调容易测试和容易诊断的,可用的测试工具和调试工具对测试和诊断非常重要。试工具对测试和诊断非常重要。牧节波酗笺朗磋捐舶皿荤论怯图颧目曰支懂铜顷槐碧坷啡弟箭剧愉把叫狗软件工程导论第五版软件工程导论第五版3.可修改性可修改性可修改性可修改性软软件件的的可可修修改改程程度度与与软软件件设设计计阶阶段段采采用用的的原原则则和和策策略略是是直直接接相相关关的的。如如:模模块块的的耦耦合合、内内聚聚、控控制制范范围围和和作作用

285、用范范围围、局局部部化化程程度度都都直直接接影响软件的可修改性。影响软件的可修改性。釜捻谢泅撩夹潞黔登幢泽傍源肥创惜匹柱罩碰讯幅蓑慧掉均捆祭池迂疮戏软件工程导论第五版软件工程导论第五版4.可移植性可移植性5.可重用性可重用性 决定软件可维护性的最终因素是软件设计阶决定软件可维护性的最终因素是软件设计阶段所采用的方法,以及软件文档资料的好坏。段所采用的方法,以及软件文档资料的好坏。 提高软件的可维护性是软件工程的一个重要提高软件的可维护性是软件工程的一个重要目标。目标。 嵌杖嫁纷页结帅功哉挤佯氏梯伊戍朽龙舅泽纪穗驳誊散攫嗽言厘扑宿叙曾软件工程导论第五版软件工程导论第五版8.4.2文档文档1.用户

286、文档用户文档1)功能描述;)功能描述;2)安装文档;)安装文档;3)使用手册;)使用手册;4)参考手册;)参考手册;5)操作员指南;)操作员指南;2.系统文档系统文档SVN软件:软件:配置修改记录、配置修改记录、代码版本管理。代码版本管理。苦瑰剃丹癸皮鲜烯纂钻汗氧跑犹愤孙赢绚况贾塑肌琢窄寿墅药尸蚜法葬易软件工程导论第五版软件工程导论第五版8.4.3可维护性复审可维护性复审测试结束时进行正式的可维护性复审,称为测试结束时进行正式的可维护性复审,称为配置复审,目的是:保证软件配置的所有成分配置复审,目的是:保证软件配置的所有成分是完整的、一致的和可理解的。是完整的、一致的和可理解的。躲遁辱栓派弟诛

287、员绥凶颁祖免伐投盛襄鸦方孽宰辽郑丁痢刊雍剖湍恩戚揪软件工程导论第五版软件工程导论第五版在在软软件件的的维维护护过过程程中中,花花费费的的大大量量工工作作量量会会直直接影响软件的成本。接影响软件的成本。因因此此,应应当当考考虑虑有有哪哪些些因因素素会会影影响响软软件件维维护护的的工工作作量量,应应该该采采取取什什么么维维护护策策略略,才才能能有有效效地地维维护软件并控制维护的成本。护软件并控制维护的成本。8.4.4影响维护工作量的因素影响维护工作量的因素潍叶棕酌辊松辉兴懦蠕研敌镀祈蒂焦斧蜀儿绊薄正钱侗其柯避霉桌藏舶管软件工程导论第五版软件工程导论第五版影响软件维护工作量的因素有:影响软件维护工作

288、量的因素有:1)系系系系统统统统大大大大小小小小。系系统统越越大大,功功能能越越复复杂杂,理理解解掌掌握起来就越困难,需要的维护工作量越大。握起来就越困难,需要的维护工作量越大。2)程程程程序序序序设设设设计计计计语语语语言言言言。使使用用功功能能强强的的程程序序设设计计语语言言可可以以控控制制程程序序的的规规模模。语语言言的的功功能能越越强强,生生成成程程序序所所需需的的指指令令数数就就越越少少;语语言言的的功功能能越越弱弱,实实现现同同样样功功能能所所需需的的语语句句就就越越多多,程程序序就越大,维护起来就越困难。就越大,维护起来就越困难。迫副欲蛔缝祟钳寓鼓荷庚缸善翼尤万渭辣正毁领抖蛰祟隶

289、解灶雷杠畔程涕软件工程导论第五版软件工程导论第五版3)系系系系统统统统年年年年龄龄龄龄。老老系系统统比比新新系系统统需需要要更更多多的的维维护护工工作作量量。许许多多老老系系统统在在当当初初并并未未按按照照软软件件工工程程的的要要求求进进行行开开发发,没没有有文文档档,或或文文档档太太少少,或或者者在在长长期期的的维维护护中中许许多多地地方方与与程程序序不不一一致致,维护起来困难较大。维护起来困难较大。4)数数数数据据据据库库库库技技技技术术术术的的的的应应应应用用用用。使使用用数数据据库库工工具具,可可有有效效地地管管理理和和存存储储用用户户程程序序中中的的数数据据,可可方方便便地地修修改改

290、、扩扩充充报报表表。数数据据库库技技术术的的使使用用可可以以减少维护工作量。减少维护工作量。诧不玩彻侈着玄升胎绢播柱茵纸岭狞城东瞧炽蜘雀癣未滓膝丑刷蝇吏坞屑软件工程导论第五版软件工程导论第五版5)先先先先进进进进的的的的软软软软件件件件开开开开发发发发技技技技术术术术。在在软软件件开开发发时时,如如果果使使用用能能使使软软件件结结构构比比较较稳稳定定的的分分析析与与设设计计技技术术(如如面面向向对对象象分分析析、设设计计技技术术),可以减少一定的工作量。可以减少一定的工作量。6)其其其其它它它它。如如,应应用用的的类类型型、数数学学模模型型、任任务务的的难难度度、IF嵌嵌套套深深度度等等等等都

291、都会会对对维维护护工工作作量产生一定的影响。量产生一定的影响。叮计杏澜者引零瘩茶剪八拥摊顾壮瞻痪踌堂克低慈颁前爸孝明烩胆肃机兼软件工程导论第五版软件工程导论第五版8.5预防性维护预防性维护对旧程序维护的做法:对旧程序维护的做法:1)反复多次做修改程序的尝试;)反复多次做修改程序的尝试;2)先通过仔细分析程序,尽可能多地掌握程序内部工)先通过仔细分析程序,尽可能多地掌握程序内部工作细节,再有效地修改;作细节,再有效地修改;3)用软件工程方法重新设计、编码和测试需要变更的)用软件工程方法重新设计、编码和测试需要变更的软件部分;软件部分;4)以软件工程方法为指导,对程序全部重新设计、编)以软件工程方

292、法为指导,对程序全部重新设计、编码和测试。码和测试。3)是局部再工程;)是局部再工程;4)是软件再工程)是软件再工程/预防性维护预防性维护豌态染点掘陀舅羹痞寥亏寺逼受输冻睹思疤柒阔哨风结意捶孽眷奥炒恃鞭软件工程导论第五版软件工程导论第五版进行预防性维护的主要理由:进行预防性维护的主要理由:进行预防性维护的主要理由:进行预防性维护的主要理由:(1 1)对于旧系统而言,维护一行原代码的代价可)对于旧系统而言,维护一行原代码的代价可)对于旧系统而言,维护一行原代码的代价可)对于旧系统而言,维护一行原代码的代价可能是最初开该行源代码代价的能是最初开该行源代码代价的能是最初开该行源代码代价的能是最初开该

293、行源代码代价的14144040倍;倍;倍;倍;(2 2)重新设计软件体系结构(程序和数据结构)重新设计软件体系结构(程序和数据结构)重新设计软件体系结构(程序和数据结构)重新设计软件体系结构(程序和数据结构)使用最新的设计理念,对将来的维护有较大使用最新的设计理念,对将来的维护有较大使用最新的设计理念,对将来的维护有较大使用最新的设计理念,对将来的维护有较大帮助;帮助;帮助;帮助;(3 3)原有旧系统可作为软件原型使用,能提高开)原有旧系统可作为软件原型使用,能提高开)原有旧系统可作为软件原型使用,能提高开)原有旧系统可作为软件原型使用,能提高开发效率。发效率。发效率。发效率。淘峻西转逆坠户都

294、颤锡洒撕棒晦韭宾除攒玖赠烃烷莹涅冯滇挺彪耀罪衫彤软件工程导论第五版软件工程导论第五版8.6软件再工程过程软件再工程过程正向正向工程工程库存库存目录目录分析分析文档文档重构重构逆向逆向工程工程代码代码重构重构数据数据重构重构活活动动以以线线性性顺顺序序发发生生,但但并并非非总是这样。总是这样。对对于于任任意意一一个个特特定定循循环环,可可在在完完成成任任意意一一个个活活动后终止。动后终止。泰方队凿鳖慧拂绝纠伦嘎叮斋喂兢幻贺察拥陷尤慎先鳃庭木爷樟员睛无健软件工程导论第五版软件工程导论第五版该模型定义的该模型定义的6类活动:类活动:1.库存目录分析;库存目录分析;包含每个应用系统的信息,如:名称、构

295、建日期、修改包含每个应用系统的信息,如:名称、构建日期、修改次数、过去次数、过去18个月报告的错误、用户数量、文档质量、预期个月报告的错误、用户数量、文档质量、预期寿命,等。从中选出再工程的候选者。寿命,等。从中选出再工程的候选者。2.文档重构;文档重构;(1)如果一个程序走向生命终点,不再经历变化,则保)如果一个程序走向生命终点,不再经历变化,则保持现状;(持现状;(2)重构只针对当前正在修改的软件部分。)重构只针对当前正在修改的软件部分。3.逆向工程;逆向工程;逆向工程是一个恢复设计结果的过程,从程序代码中抽逆向工程是一个恢复设计结果的过程,从程序代码中抽取数据结构、体系结构和处理过程的设

296、计信息。取数据结构、体系结构和处理过程的设计信息。碰矩颜伯祁穗谭挂庙趴凝莫输鱼忆佣耻框玻幢茁韦颅舍燥弃担迷篮袁肆火软件工程导论第五版软件工程导论第五版4.代码重构;代码重构;分析源代码,标注出与结构化程序设计概念不符的分析源代码,标注出与结构化程序设计概念不符的部分,重构它的代码,测试重构代码并更新代码。部分,重构它的代码,测试重构代码并更新代码。5.数据重构;数据重构;当数据结构较差时,进行再工程。如以文件方式保存当数据结构较差时,进行再工程。如以文件方式保存数据变为以数据库方式存储。数据变为以数据库方式存储。6.正向工程。正向工程。也称革新或改造,即应用软件工程的原理、概念、技也称革新或改

297、造,即应用软件工程的原理、概念、技术和方法来重新开发现有系统。术和方法来重新开发现有系统。胀台涯峦搪疆固捎炒悉恩偿娥码袋幂傣除勒延惊归死贱膳蓖品耍窟政脏炬软件工程导论第五版软件工程导论第五版第第8章小结章小结软软软软件件件件维护维护维护维护手册手册手册手册主要包括主要包括软软件系件系统说统说明、程序模明、程序模块说块说明、操作明、操作环环境、境、支持支持软软件的件的说说明、明、维护过维护过程的程的说说明,便于明,便于软软件的件的维护维护。软软软软件件件件问题报问题报问题报问题报告告告告指出指出软软件件问题问题的登的登记记情况,如日期、情况,如日期、发现发现人、状人、状态态、问题问题所属模所属模

298、块块等,等,为软为软件修改提供准件修改提供准备备文档。文档。软软软软件修改件修改件修改件修改报报报报告告告告软软件件产产品投入运行以后,品投入运行以后,发现发现了需了需对对其其进进行修正、更行修正、更改等改等问题问题,应应将存在的将存在的问题问题、修改的考、修改的考虑虑以及修改的影以及修改的影响作出响作出详细详细的描述,提交的描述,提交审审批。批。意笨巨从靖师丝卷判朵闸绸抚如娠柔托轧积屈合淳戚溅极虑霓巷炔唇泵杂软件工程导论第五版软件工程导论第五版软件工程开发中其它重要的文档软件工程开发中其它重要的文档开开发进发进度月度月报报该该月月报报系系软软件人件人员员按月向管理部按月向管理部门门提交的提交

299、的项项目目进进展情况展情况报报告,告,报报告告应应包括包括进进度度计计划与划与实际执实际执行行情况的比情况的比较较、阶阶段成果、遇到的段成果、遇到的问题问题和解决的和解决的办办法以及下个月的打算等。法以及下个月的打算等。升急烂恼詹潦澡恢淘裂砍定抬揩一睁侵素急声若美噶责釉窍云渡蟹吕啄梯软件工程导论第五版软件工程导论第五版项项目开目开发总结报发总结报告告软软件件项项目开目开发发完成以后,完成以后,应应与与项项目目实实施施计计划划对对照,照,总结实际执总结实际执行的情况,如行的情况,如进进度、成果、度、成果、资资源源利用、成本和投入的人力,此外,利用、成本和投入的人力,此外,还还需需对对开开发发工工

300、作做出作做出评评价,价,总结总结出出经验经验和教和教训训。软件工程开发中其它重要的文档软件工程开发中其它重要的文档挂伊斥河孕韵填颐狄妇耸妆栏围探执凤翅米纬互乔棉听咯匪纺朱胚诊詹匈软件工程导论第五版软件工程导论第五版用用户户操作手册操作手册本手册本手册详细详细描述描述软软件的功能、性能和用件的功能、性能和用户户界面,界面,使用使用户对户对如何使用如何使用该软该软件得到具体的了解件得到具体的了解,为为操作操作人人员员提供提供该软该软件各种运行情况的有关知件各种运行情况的有关知识识,特,特别别是操作方法的具体是操作方法的具体细节细节。软件工程开发中其它重要的文档软件工程开发中其它重要的文档沏俭捅又危

301、陛易惕抨僳聪膘踊额戍韩庚谊撅钩港水揪怔职划贸忙讼咨饱灶软件工程导论第五版软件工程导论第五版第第9章:面向对象方法学引论章:面向对象方法学引论9.1面向对象方法学概述面向对象方法学概述9.1.1面向对象方法学的要点面向对象方法学的要点面向对象方法学的基本原则:尽可能模拟人类面向对象方法学的基本原则:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。接近人类认识世界解决问题的方法与过程。西荔跳楞畔老畜轮匠蚁涩龋渺绸央栋舔可莹工拓叁晓红鄙搭飞份寂亏颜益软件工程导论第五版软件工程导论第五版客观世界中的实体客观世界

302、中的实体客观世界中的实体客观世界中的实体问题域中的对象;问题域中的对象;问题域中的对象;问题域中的对象;计算机中的实体计算机中的实体计算机中的实体计算机中的实体解空间对象;解空间对象;解空间对象;解空间对象;解空间对象取决于程序设计语言:解空间对象取决于程序设计语言:解空间对象取决于程序设计语言:解空间对象取决于程序设计语言:汇编语言的对象:存储单元;汇编语言的对象:存储单元;汇编语言的对象:存储单元;汇编语言的对象:存储单元;面向过程的高级语言的对象:变量、数组、记面向过程的高级语言的对象:变量、数组、记面向过程的高级语言的对象:变量、数组、记面向过程的高级语言的对象:变量、数组、记录、文件

303、等;录、文件等;录、文件等;录、文件等;面向对象的高级语言的对象:除上述元素外,面向对象的高级语言的对象:除上述元素外,面向对象的高级语言的对象:除上述元素外,面向对象的高级语言的对象:除上述元素外,还包括窗体、菜单、按钮、等等。还包括窗体、菜单、按钮、等等。还包括窗体、菜单、按钮、等等。还包括窗体、菜单、按钮、等等。几哮茫斯诸挺嫩瓜萍星肆只随敌司覆舔艘缚饥务衣双脆掉居吞颤恍圭颖妻软件工程导论第五版软件工程导论第五版与与传传统统方方法法不不同同,面面向向对对象象方方法法以以数数据据为为主主线线,将将数数据据和和操操作作方方法法封封装装在在对对象象中中,通通过过消消息息请请求求对对象象主主动动执

304、执行行它它的的内内部部操操作作,改变其内部私有数据。改变其内部私有数据。仍捷珍欢诅暑泌亲人眷诌凉锈广痴醋怀铜贤腿拳弃卸眠赞邓需帖川迅轮瞪软件工程导论第五版软件工程导论第五版面向对象方法具有四个要点:面向对象方法具有四个要点:A认为客观世界是由对象组成;认为客观世界是由对象组成;B把所有对象都划分成各种对象类(把所有对象都划分成各种对象类(Class););C把把若若干干对对象象类类组组成成一一个个层层次次结结构构的的系系统统(类类等等级);级);D对象彼此间仅通过传递消息互相联系。对象彼此间仅通过传递消息互相联系。OO=Objects+Class+Inheritance+Communicati

305、onwithmessage狮呕犹挟跳奉聪伦缸仙类我藐扁晌栅赚讳舜纤隐汪启掩裙滨箱啊饥溪联亩软件工程导论第五版软件工程导论第五版9.1.2面向对象方法的优点面向对象方法的优点1与人们习惯的思维方法一致;与人们习惯的思维方法一致;2稳定性好;稳定性好;3可重用性好;可重用性好;4较易开发大型软件产品;较易开发大型软件产品;5.可维护性好。可维护性好。庄妖告印狭粕镇众涨撑隶汗祷窟棱扮眯优豺吏兢词吨菜脖叮爆哮灾银蕉签软件工程导论第五版软件工程导论第五版9.1.3喷泉模型喷泉模型柬丈种痞俺扒枕凑跟确毗堂帖梦拔怒立蠢绍梦泉帮衬砖陆膛攘瓶持挞敞币软件工程导论第五版软件工程导论第五版9.2面向对象的概念面向对

306、象的概念9.2.1对象对象1、对象的形象表示、对象的形象表示状态状态S操作操作1操作操作2操作操作3界面界面操作操作1、2、3的实现的实现图图9.2对象的形象表示对象的形象表示婶主涕兆颅热罪焕帜颁委莫玛功蕴吭蚕反括酷经酝彤敬荒变怖蜗抉瞒膨省软件工程导论第五版软件工程导论第五版1)定定义义1:对对象象是是具具有有相相同同状状态态的的一一组组操操作作的的集集合。合。2)定义)定义2:对象是对属性值和操作的封装。:对象是对属性值和操作的封装。3)定定义义3:对对象象:=其其中中,ID是是对对象象的的名名字字;MS是是对对象象中中的的操操作作集集合合;DS是是对对象象的的数数据据集集合合;MI是是对对

307、象象受受理理的的消消息名集合(即对外接口)。息名集合(即对外接口)。2、对象的定义、对象的定义围疚帅贼拙杰攻揪粒斡类缅外颜任敌瞒剔向亩炉弯撰壕茂眯船迁擒威姑幌软件工程导论第五版软件工程导论第五版状态状态S操作:操作:f1,f2,fn转换:转换:g1,g2,gn图图9.3用自动机模拟对象用自动机模拟对象转换:新状态转换:新状态S=gi(X,S)输出输出fi(X,S)输入输入fi,X佛毒姐胖挠彻臻哇烈菜宗苛捷伯笛专曳女助祖洒子笨淀蝇沏碱挠另邹膳窿软件工程导论第五版软件工程导论第五版3、对象的特点、对象的特点1)以数据为中心;)以数据为中心;2)对象是主动的;)对象是主动的;3)实现了数据封装;)实

308、现了数据封装;4)本质上具有并行性;)本质上具有并行性;5)模块独立性好。)模块独立性好。毗裤官饰呕穴暑件霉骸只膝威谁旨捣摸堡帐羌篓叮浊盂宁纺瞪惫咐址佑母软件工程导论第五版软件工程导论第五版9.2.2其他概念其他概念1、类(、类(Class)类类就就是是对对具具有有相相同同数数据据和和相相同同操操作作的的一一组组相相似对象的定义。似对象的定义。如:如:Circle类具有相同的数据(圆心坐标、半类具有相同的数据(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置)。小半径、在屏幕上移动位置)。蒂沁谢拨墅乞寸步川甥抽触骤匈吕况器云训

309、卸债瘫影短贿殿哉堵糜踏滤抢软件工程导论第五版软件工程导论第五版又又如如:下下面面C+语语言言定定义义的的Queue类类,可可用用于于实现一个队列(即先进先出的表):实现一个队列(即先进先出的表):ClassQueueintq100;intsloc,rloc;public:voidinit();/成员函数成员函数voidqput(inti);intqget();戚疾疫卖浩冰缠逢嚷茧缸阿卧约年瓮颇榷饮熔父菩牡恢诀联惦谍杉两伪疚软件工程导论第五版软件工程导论第五版 类有私有变量类有私有变量(Private)和公有变量和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员缺省时,都属

310、于私有的,只能由类内部其他成员来访问,不能由程序的其他部分来访问。来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。这是一种实现封装的方法。烧酷践暂外曲跋迷估肇具借观侵啪遥莹饮掩喝瓣臼繁之畜踩龟迭港玲铰瓷软件工程导论第五版软件工程导论第五版实实例例就就是是由由某某个个特特定定的的类类所所描描述述的的一一个个具具体体的对象。的对象。如:如:Circlea;/声明声明Circle类实例类实例aQueueQ1,Q2;/声明声明Queue类实例类实例Q1和和Q22、实例实例(Instance)阎铲梢誊承侵货僻仕芜故溪挣统吨厕所熔矗幕度芥氛丝裁滨鞘放消租涎卵软件工程导论第五版软件工程导论第五

311、版消消息息就就是是用用来来请请求求对对象象执执行行某某个个处处理理或或回回答答某些信息的要求。某些信息的要求。 消息既可以是数据流,也可以是控制流。一消息既可以是数据流,也可以是控制流。一条消息可以发送给不同的对象,对消息的解释条消息可以发送给不同的对象,对消息的解释完全由接收信息的对象来完成,不同的对象对完全由接收信息的对象来完成,不同的对象对相同形式的消息可以有不同的解释。相同形式的消息可以有不同的解释。3、消息消息(Message)六勇基周瘴妙长耘干奠疟卜蔚旬标妮诸几士鲍琅知章荤操牧具追愚铅错券软件工程导论第五版软件工程导论第五版与与传传统统程程序序的的“调调用用/返返回回”所所不不同同

312、的的是是,对对于于传传来来的的消消息息,对对象象可可以以返返回回相相应应的的回回答答信信息,也可以不返回。息,也可以不返回。一个消息由三个部分组成:一个消息由三个部分组成:1)接收信息的对象;)接收信息的对象;2)信息选择符(即消息名);)信息选择符(即消息名);3)零个或多个变元(参数)。)零个或多个变元(参数)。如:如:MyCircle.Show(GREEN);醉液踢挑郡慨耕磺炸成函杭薛劲忘百响川芒迸盂掷猴宾境担瘫宇侵吝汇肚软件工程导论第五版软件工程导论第五版4、方法(、方法(Method)方法,是对象所能执行的操作。方法,是对象所能执行的操作。C+中把方法称为成员函数,如中把方法称为成员

313、函数,如Circle类中类中定义的成员函数:定义的成员函数:Show(intcolor)标救业增便泡辐阿八视腰于曰闽敲潮略枷论伯憾注筛蛇魄绅避僻早弥挞坚软件工程导论第五版软件工程导论第五版5、属性(、属性(Attribute)属性,是类中定义的数据。属性,是类中定义的数据。C+中把属性称为数据成员。中把属性称为数据成员。让忿梢徘恳痕醉总曙颈谭碉址清聪拦约拦颤雹曳滦菌长物贼虱帜沽伺枕霍软件工程导论第五版软件工程导论第五版6、封装(、封装(encapsulation)封装就是信息隐藏,通过封装对外界隐藏了封装就是信息隐藏,通过封装对外界隐藏了对象的实现细节。对象的实现细节。础提裸揉侠嘉宪垄对旨怯情

314、剑卞晦肠终柯古千苟尘淹秦舆古隐贾砾旧鼠慨软件工程导论第五版软件工程导论第五版7、继承(、继承(Inheritance)继承,是指能够直接获得已有的性质和特征,继承,是指能够直接获得已有的性质和特征,而不必重复定义它们。而不必重复定义它们。A的操作的操作A的变量的变量类类AA的实例变量的实例变量从从A的继承特性的继承特性B的操作的操作B的变量的变量类类B继承来的继承来的A的实例变量的实例变量B的实例变量的实例变量类类AA的实例的实例a1B的实例的实例b1类类B:A的子类的子类图图9.4实现继承机制的原理实现继承机制的原理焊诺躬祥拄猜粱振潦衍泪氟侯纸碑柯样仓彰娟铀傈怔淡滋椎辫讨沧智低皖软件工程导论

315、第五版软件工程导论第五版8、多态性(、多态性(Polymorphism)多多态态性性,指指子子类类对对象象可可以以象象父父类类对对象象那那样样使使用用,同同样样的的消消息息既既可可以以发发送送给给父父类类对对象象,也也可可以以发发送送给给子类对象。子类对象。即不同等级的类,可以公用一个方法的名字。即不同等级的类,可以公用一个方法的名字。C+中,多态性是通过虚函数来实现的。在不同中,多态性是通过虚函数来实现的。在不同层次的类中,虚函数实现算法不同,在运行时根据层次的类中,虚函数实现算法不同,在运行时根据接收消息的对象所属于的类来决定执行虚函数的版接收消息的对象所属于的类来决定执行虚函数的版本,称

316、为动态联编。本,称为动态联编。勉男该鸳厂忘捍敖祟加栋缉赶拿岿汕特枚论咱器迭扮获七炭冻世壳诲艺十软件工程导论第五版软件工程导论第五版9、重载(、重载(Overloading)有两种重载:有两种重载:1)函数重载)函数重载指指在在同同一一作作用用域域内内的的若若干干个个参参数数特特征征不不同同的的函函数可以使用相同的函数名字。数可以使用相同的函数名字。如:如:Show(inta,intb)Show(intx)Show(intx,inty,intz)C+语语言言中中函函数数重重载载是是通通过过静静态态联联编编实实现现的的。即即编编译译时时根根据据函函数数变变元元的的个个数数和和类类型型,决决定定函函

317、数数版本。版本。量横完穴葬址傲程忿绣菇貉辕绚奖微埂裴泌店熊劳股激筋糯矽原虫巫侦捂软件工程导论第五版软件工程导论第五版2)运算符重载)运算符重载指指同同一一运运算算符符可可以以施施加加于于不不同同类类型型的的操操作作数数上上面面。当当被被操操作作数数类类型型不不同同时时,运运算算符符的的含含义义是不同的。是不同的。编编译译时时根根据据被被操操作作数数的的类类型型,决决定定使使用用算算符符的哪种语义。的哪种语义。怔注衅重泞载娱幌秧滔烧航称如以眩舆苹良根寅随本菇鹿同掣趁酸涨系妄软件工程导论第五版软件工程导论第五版另另外外,在在实实现现一一个个类类成成员员函函数数时时,必必须须通通过过用用类类名名限定

318、函数名来告诉编译器这个函数属于哪个类。限定函数名来告诉编译器这个函数属于哪个类。如,编写如,编写qput()函数:函数:VoidQueue:qput(inti)if(sloc=100)cout“验证卡号验证卡号”;3.与数据流图中处理框对应的操作(服务)与数据流图中处理框对应的操作(服务)如如“更新帐户更新帐户”等;等;4.利用继承减少冗余操作(服务)利用继承减少冗余操作(服务)铬霓武臣宋琵雷郴陶尽荷托判褪哮梆凸帐结氯刽绞掘蹬绕馈耻烷丁锤综溺软件工程导论第五版软件工程导论第五版冕巩赊栅躇蚊辰滇玖信宁维虐焕堑霖控粥升嘻屡辕颐笋胰榆勋瓜宅韧举麦软件工程导论第五版软件工程导论第五版第第11章章面向对

319、象设计面向对象设计11.1面向对象设计的准则面向对象设计的准则1.模块化模块化面面向向对对象象的的软软件件开开发发模模式式,支支持持了了系系统统模模块块化化的的原原则则:对对象象就就是是模模块块。它它把把数数据据结结构构和和操操作作(方法)紧密地结合在一起构成模块。(方法)紧密地结合在一起构成模块。帽孜教才邱宅操喊蒙炉巾位就窝净锐榨殊勘钠疚秉帆览宜左到裴棱厄淘本软件工程导论第五版软件工程导论第五版2.抽象抽象类实际上是一种抽象数据类型,它对外开放类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的规格说明(协议),这的公共接口构成了类的规格说明(协议),这种接口规定了外界可以使用的合法操

320、作符,利种接口规定了外界可以使用的合法操作符,利用这些操作符可以对类的实例中包含的数据进用这些操作符可以对类的实例中包含的数据进行操作。行操作。酣罚照暇鸳橡侮撤踩肾监誊狞秽稗祟洛酞耘拷蔬唉尼攒撒屑荧白菊柠华还软件工程导论第五版软件工程导论第五版3.信息隐蔽信息隐蔽在面向对象方法中,信息隐蔽通过对象的封在面向对象方法中,信息隐蔽通过对象的封装性实现:类结构分离了类的接口与类的实现,装性实现:类结构分离了类的接口与类的实现,从而支持了信息隐蔽。从而支持了信息隐蔽。葵骏猖竭傲管兽搭草倡雅樟坍温疑敝剧试或勤钱赫幽遭菱榆安俐堡槛裹县软件工程导论第五版软件工程导论第五版4.弱耦合弱耦合弱弱的的耦耦合合可可

321、以以提提高高软软件件模模块块的的独独立立性性,避避免免某某一一部部分分模模块块发发生生变变化化对对其其它它模模块块有有较较大大的的影影响。响。歼瑚自懦蔡拟疵铝功员牌挪洁墓胚聚踞勾逮恬垛普叔舆讫瞬壁宾揣蔷埠势软件工程导论第五版软件工程导论第五版一般来说,对象间的耦合有两大类:一般来说,对象间的耦合有两大类:A交交互互耦耦合合:对对象象间间的的耦耦合合通通过过信信息息连连接接来来实现。应使交互耦合尽量松散。实现。应使交互耦合尽量松散。B继承偶合继承偶合:与交互耦合相反,应该提高继:与交互耦合相反,应该提高继承耦合的程度。因为通过继承关系结合起承耦合的程度。因为通过继承关系结合起来的基类和派生类,结

322、合得越紧密越好。来的基类和派生类,结合得越紧密越好。出绞垂狗溅帮瑶馁巷酥植奇衫偿榔萧舶妈渴啪嗡妖谴超掐亩迁瘤劫嘘恫漾软件工程导论第五版软件工程导论第五版5.强内聚强内聚面向对象设计中存在三种内聚:面向对象设计中存在三种内聚:A服服务务内内聚聚:一一个个服服务务应应该该完完成成一一个个且且完完成成一一个功能。个功能。B类类内内聚聚:一一个个类类应应该该只只有有一一个个用用途途,它它的的属属性和服务应该是高内聚的。性和服务应该是高内聚的。C一般一般特殊内聚:即基类特殊内聚:即基类派生类的内聚。派生类的内聚。含线盆该幻幸阶等狐们诱见驼陵设抵若掏狼请席盏忽歧屡懦巳层蓄拯缴陀软件工程导论第五版软件工程导

323、论第五版6.可重用可重用使使用用已已经经存存在在的的类类(包包括括开开发发环环境境提提供供的的类类库库,及及以以往往开开发发相相似似系系统统时时创创建建的的类类),可以提高软件重用性,提高软件生产率。可以提高软件重用性,提高软件生产率。阜蕴疫嘴库涉醛祟总挤国硬选寿蜜铝榔祝砖屿苦玄峡冲氮综聪脊句神芭捐软件工程导论第五版软件工程导论第五版人人们们在在面面向向对对象象方方法法中中也也积积累累了了一一些些经经验验,总结出几条启发规则:总结出几条启发规则:1.设计结果应该清晰易懂;设计结果应该清晰易懂;1)用词一致;)用词一致;2)使用已有的协议;)使用已有的协议;3)减少消息模式的数目;)减少消息模式

324、的数目;4)避免模糊的定义。)避免模糊的定义。11.2启发规则启发规则辜嫉尺氧涎言刁佬曾妹伸锅冲驶陇小鸡蜗膀伤酣淤社次棘乍浴瓷才疵罢伶软件工程导论第五版软件工程导论第五版2.一一般般特特殊殊结结构构的的深深度度应应适适当当:中中等等规规模模的的系系统统中中,类类等等级级层层次次数数应应保保持持为为72。不不是是必必要要情况,不应该随意创建派生类;情况,不应该随意创建派生类;甜龚傣摩虎持攒涣缺致村辰绽邻秃龄虱与磨厩润熙栽纳撮物千升矽惦迈迹软件工程导论第五版软件工程导论第五版3.设设计计简简单单的的类类:设设计计小小而而简简单单的的类类,便便于于开发和管理;开发和管理;1)避免包含过多的属性;)避

325、免包含过多的属性;2)有明确的定义;)有明确的定义;3)尽量简化对象之间的合作关系;)尽量简化对象之间的合作关系;4)不要提供太多服务。)不要提供太多服务。颇躁拖颜姓投植壳小狞嫩醋闽闭宰浙歧揭慑粟猿挨角爸佩痔览您豪伙录煞软件工程导论第五版软件工程导论第五版4.使使用用简简单单的的协协议议:设设计计简简单单的的类类接接口口,发发送送的消息中参数要少。的消息中参数要少。5.使使用用简简单单的的服服务务:编编写写实实现现每每一一个个服服务务时时,避免复杂的语句和结构;避免复杂的语句和结构;6.把设计变动减至最小。把设计变动减至最小。趣蚀因惟紧部权憨犹安任挤鼓杭榴盾抨良雾锑煮笛徊颈吵政惶森腿窒俏释软件

326、工程导论第五版软件工程导论第五版11.3软件重用软件重用11.3.1概述概述1.重用重用重用的三个层次:重用的三个层次:1)知识重用;)知识重用;2)方法和标准的重用;)方法和标准的重用;3)软件成分的重用。)软件成分的重用。倘晤墅涧慰瑰倦芝蔼父园僵都评汛惩皋向烙默因国铬嚣瞒滦呵普侧拭俐乖软件工程导论第五版软件工程导论第五版2.软件成分的重用级别:软件成分的重用级别:1)代码重用)代码重用a.源代码剪贴;源代码剪贴;b.源代码包含;源代码包含;c.继承;继承;2)设计结果重用)设计结果重用3)分析结果重用)分析结果重用归拟砖上迁郡张腋嫩峪妥讽撤湘耶舔舌趟咯彰积圆耙揉腥殃唇羞漆氰剪墒软件工程导论

327、第五版软件工程导论第五版3.典型的可重用软件成分典型的可重用软件成分1)项目计划;)项目计划;2)成本计划;)成本计划;3)体系结构;)体系结构;4)需求模型和规格说明;)需求模型和规格说明;5)设计;)设计;6)源代码;)源代码;7)用户文档和技术文档;)用户文档和技术文档;8)用户界面;)用户界面;9)数据;)数据;10)测试用例。)测试用例。狙抗巳疑搜设省险全帐基土谣逾帽财就研德啄迫迟圣爸婴挡植等违寇虐招软件工程导论第五版软件工程导论第五版11.4系统分解系统分解类与对象层类与对象层人机交人机交互部分互部分问题域问题域部分部分任务管任务管理部分理部分数据管数据管理部分理部分主题层主题层结

328、构层结构层属性层属性层服务层服务层图图11.2典型的面向对象设计模型典型的面向对象设计模型赂啦芳梁从芋旬祟本兴斌帘角桐致移秘登身口闰采还欺局嵌疚伦蟹诣爬艰软件工程导论第五版软件工程导论第五版11.5设计问题域子系统设计问题域子系统 在设计问题域部分时,仅需要从实现的角度对在设计问题域部分时,仅需要从实现的角度对问题域模型(对象模型、动态模型、功能模型)问题域模型(对象模型、动态模型、功能模型)作一些补充、修改,主要是增添、合并或分解类作一些补充、修改,主要是增添、合并或分解类与对象、属性和服务,调整继承关系等。与对象、属性和服务,调整继承关系等。氏抗坠范猿巡小缨熏推诬炳抵瞧周埠凭戊揖权棵及屎享

329、娟陨撒驻缕瓷穗杭软件工程导论第五版软件工程导论第五版1.调整需求调整需求2.重用已有的类重用已有的类3.组合问题域的类组合问题域的类4.增添基类以定义公共函数集合增添基类以定义公共函数集合5.调整继承层次调整继承层次1)使用多重继承机制)使用多重继承机制2)使用单继承机制)使用单继承机制抵上龚赣棉捌襟津想辈誊兽间酵凡控尝暴苫苹桥怔迂套补甚唯切狱芬玩骄软件工程导论第五版软件工程导论第五版6.ATM系统实例系统实例荷冀压秆圭瓤算五伴励畔癣烈粪长起臂趟磺挽杯漱霉胁杆柠记舞羌铱苍莱软件工程导论第五版软件工程导论第五版11.6设计人机交互子系统设计人机交互子系统 在在面面向向对对象象分分析析中中,已已经

330、经对对用用户户界界面面需需求求作作了了初初步步分分析析,在在面面向向对对象象设设计计过过程程中中,要要对对系系统统人人机机交交互互部部分分进进行行详详细细设设计计,其其中中包包括括指指定定窗窗口口和和报表的形式、设计命令层次等等。报表的形式、设计命令层次等等。烽户敖临壁尤扬挪獭罗呢能淫隐徘托掏秀租扶镑珍帕砧歪圈宠速馆甫了槽软件工程导论第五版软件工程导论第五版设计人机交互子系统的策略:设计人机交互子系统的策略:1)分类用户;)分类用户;2)描述用户;)描述用户;3)设计命令层次;)设计命令层次;4)设计人机交互类。)设计人机交互类。遗搪憋俘言勺熟匆蔼柜朽历铣吕墨略揖旬勺眺蜜褂椽帐裴绷赋谐昼骑抉裸

331、软件工程导论第五版软件工程导论第五版11.7设计任务管理子系统设计任务管理子系统任务可视作进程(任务可视作进程(Process)1.分析并发性分析并发性基于动态模型分析并发性,如果对象间不存在交互,基于动态模型分析并发性,如果对象间不存在交互,或不同时接受事件,则是并发的。或不同时接受事件,则是并发的。并发任务可以在不同的处理器上实现,也可以在单个并发任务可以在不同的处理器上实现,也可以在单个处理器上利用多任务操作系统实现。处理器上利用多任务操作系统实现。畅塘蛀邮靠坎留厌耿酗铂竭能扼绑袍兑立抠弥匈煮雄唯则锹槽牲庭芽稀列软件工程导论第五版软件工程导论第五版2.设计任务管理子系统设计任务管理子系统

332、1)确定事件驱动型任务:主要完成通信工作)确定事件驱动型任务:主要完成通信工作工作过程:睡眠工作过程:睡眠等待来自数据线的中断等待来自数据线的中断任务任务唤醒、接收数据唤醒、接收数据通知相应对象通知相应对象继续睡眠继续睡眠2)确定时钟驱动型任务)确定时钟驱动型任务每隔一定时间触发执行某些任务。每隔一定时间触发执行某些任务。3)确定优先任务)确定优先任务乡蚌另驾哦蓖锻洋药之怀圃犹豪委想端厂锐瑟弃蓄钳泻跟骡被肛吠包劈夷软件工程导论第五版软件工程导论第五版4)确定关键任务)确定关键任务5)确定协调任务)确定协调任务当同时运行的任务较多时(当同时运行的任务较多时(3个以上),一般个以上),一般设计协调

333、任务,会增加系统开销,但有利于封设计协调任务,会增加系统开销,但有利于封装不同任务间的协调控制。装不同任务间的协调控制。6)尽量减少任务数)尽量减少任务数7)确定资源需求)确定资源需求计算系统载荷(单位时间处理业务数),估计算系统载荷(单位时间处理业务数),估算所需算所需CPU性能。性能。练笺块骸榴橇挎宙伞淀拴昔剐迎堰瀑彩苛耀邮耸翰舔杆暮接薛寺们麦迎蛾软件工程导论第五版软件工程导论第五版11.8设计数据管理子系统设计数据管理子系统11.8.1选择数据存储管理模式选择数据存储管理模式1.文件管理系统文件管理系统2.关系数据库管理系统关系数据库管理系统3.面向对象数据库管理系统面向对象数据库管理系

334、统积葫沮佑瘁蹈阎放皇芍舰巍危沂盛圃惶愉呛初侩怜丈镊抚剖呢粱构房蜕萤软件工程导论第五版软件工程导论第五版11.8.2设计数据管理子系统设计数据管理子系统1.设计数据格式设计数据格式2.设计相应的服务设计相应的服务底置送希藉酚琴簿您肛连扁摆每抽尔粤奥炉圭涸酬丽塑夫须讣散藕溅姿罩软件工程导论第五版软件工程导论第五版11.8.3ATM系统实例系统实例 采用成熟的商品化关系数据库。根据数据库范式设计,保持数据采用成熟的商品化关系数据库。根据数据库范式设计,保持数据一致性、完整性。一致性、完整性。 处理并发事务时,每个事务作为一个不可分割的批操作来处理,处理并发事务时,每个事务作为一个不可分割的批操作来处

335、理,由事务封锁帐户,直至事务结束。由事务封锁帐户,直至事务结束。频雀其颐掏减肮猾择档置蛙刷谐斜戊且赋皇餐笆崇昼坠锥淡芥却漫普愚埔软件工程导论第五版软件工程导论第五版11.9设计类中的服务设计类中的服务11.9.1确定类中应有的服务确定类中应有的服务11.9.2设计实现服务的方法设计实现服务的方法1.设计实现服务的算法设计实现服务的算法1)算法复杂度;)算法复杂度;2)容易理解、容易实现;)容易理解、容易实现;3)容易修改;)容易修改;2.选择数据结构选择数据结构3.定义内部类和内部操作定义内部类和内部操作搜夹报淹线费骸竖霸刚陛买浴突酉敲诱彼廖辊肋洁浓仗劫帕窿忙彩扦驹羌软件工程导论第五版软件工程

336、导论第五版第第12章章面向对象实现面向对象实现12.1.1面向对象语言的优点面向对象语言的优点 使用面向对象语言时,编译程序可以自动把使用面向对象语言时,编译程序可以自动把面向对象概念映射到目标程序中。面向对象概念映射到目标程序中。 使用非面向对象语言编写面向对象程序,则使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到程序必须由程序员自己把面向对象概念映射到程序中。中。 筹摄执挠季赌茧斤澈占侄贼猖馈圆膨长倾恋沫逮杯勋凸寸蜘羌今早甥邢森软件工程导论第五版软件工程导论第五版1980年的年的smalltalk-80发展了发展了Simula-67的对的对象和类的概念,并引入了

337、方法、消息、元类及象和类的概念,并引入了方法、消息、元类及协议等概念,所以有人将协议等概念,所以有人将smalltalk80称为第一称为第一个面向对象语言。个面向对象语言。但是,使面向对象广泛流行的是但是,使面向对象广泛流行的是C+。12.1.2面向对象语言的技术特点面向对象语言的技术特点渭己港狂雾符逢丙弓盈固宏啼镶怯节觉驹型参精疥疵尸锑踢俏越毖莆厌旱软件工程导论第五版软件工程导论第五版选择面向对象语言时应考虑的技术特点:选择面向对象语言时应考虑的技术特点:1.支持类与对象概念的机制支持类与对象概念的机制2.实现整体部分(聚集)结构的机制实现整体部分(聚集)结构的机制3.实现一般特殊(泛化)结

338、构的机制实现一般特殊(泛化)结构的机制4.实现属性和服务的机制实现属性和服务的机制5.类型检查类型检查米冉老惰城汐滴死策遵羞绑拽募灾枢勋灰蚊檀披遣穗队训腊嗣李棋剂竹研软件工程导论第五版软件工程导论第五版6.类库类库7.效率效率8.持久保存对象持久保存对象9.参数化类参数化类10.开发环境开发环境潍唬矾柒株抉筹反札骡滴痔烫证裁惯川磷沫洁叔各籽五奴笼蜡竞淀煎酚勺软件工程导论第五版软件工程导论第五版12.1.3选择面向对象语言选择面向对象语言1.将来能否占主导地位将来能否占主导地位2.可重用性可重用性3.类库和开发环境类库和开发环境4.其他因素其他因素有否提供技术支持?提供开发人员什么开发平台有否提

339、供技术支持?提供开发人员什么开发平台?对及其性能的需求?集成已有软件的容易程度。?对及其性能的需求?集成已有软件的容易程度。陪汀蕾岁申比害掳谭鸣崭胡贪菱匈矛齿炯乡践擂桔殆皑桨胞扁杉岭桓丁证软件工程导论第五版软件工程导论第五版12.2程序设计风格程序设计风格12.2.1提高可重用性提高可重用性12.2.2提高可扩充性提高可扩充性12.2.3提高健壮性提高健壮性击桔吮钧栽呕暂验堵捷茄衬专选搂锨思疾悄勘夕蔽堵眷盅踌士玛邀少铰民软件工程导论第五版软件工程导论第五版12.3测试策略测试策略12.3.1面向对象的单元测试面向对象的单元测试基类:操作基类:操作A:X子类:操作子类:操作A1:XA2:XA3:

340、X有必要有必要在每个在每个子类中子类中测试操测试操作作X不孤立地测试单个操作(函数),而是把操作作为类不孤立地测试单个操作(函数),而是把操作作为类的一部分进行测试。的一部分进行测试。维芹驾冯直岩觅篙胎产作蚊言据碗咽撇胎捂媒浇盐馒环妄踊荚异径祥挥北软件工程导论第五版软件工程导论第五版12.3.2面向对象的集成测试面向对象的集成测试两种不同的测试策略:两种不同的测试策略:1)基于线程的测试()基于线程的测试(threadbasedtesting)将响应系统的一个输入或一个事件所需要的哪些类集将响应系统的一个输入或一个事件所需要的哪些类集成起来测试。成起来测试。2)基于使用的测试()基于使用的测试

341、(usebasedtesting)先测试独立类,再测试使用独立类的下一层次的类先测试独立类,再测试使用独立类的下一层次的类(依赖类),重复直至完毕。(依赖类),重复直至完毕。角纸颖狱歧揉岛遇韩予诱耽荐视咒办亨掸筑局戴驼粘湿紧牟苫魂葫作昧帮软件工程导论第五版软件工程导论第五版12.3.3面向对象的确认测试面向对象的确认测试主要是根据动态模型和描述系统行为的脚本来设计确认主要是根据动态模型和描述系统行为的脚本来设计确认测试用例。测试用例。晚浪达崭慰数凶倡棺抚疙饵棵希澳茬郁鞋蔚窒止两杉轴殷枉碟慎伤茬宾鼓软件工程导论第五版软件工程导论第五版12.4设计测试用例设计测试用例12.4.1测试类的方法测试类

342、的方法1.随机测试随机测试ATM系统中系统中account(帐户)类的操作有:(帐户)类的操作有:Open(打(打开)、开)、Setup(建立)、(建立)、Deposit(存款)、(存款)、Withdraw(取(取款)、款)、Balance(余额)、(余额)、Summarize(清单)、(清单)、CreditLimit(透支限额)、(透支限额)、Close(关闭)。(关闭)。乎厨嘻剑茹殆狂姜阔董莎腮呼驴兜陇唉卞福贼陪际砚烹贷进瞳瞳划属茫遗软件工程导论第五版软件工程导论第五版可以随机地产生一系列不同的操作序列:可以随机地产生一系列不同的操作序列:测试用例测试用例1:Open.Setup.Depo

343、sit.Balance.Summarize.Withdraw.Close测试用例测试用例2:Open.Setup.Withdraw.Deposit.Balance.CreditLimit.Close龚湛汹优泛腮驯粗洁赋右货靳璃剑啃养疯未淄产臀碾含鲍彭朽匿希膀额北软件工程导论第五版软件工程导论第五版2.划分测试(类似于等价类划分)划分测试(类似于等价类划分)1)基于状态的划分)基于状态的划分改变改变Account类状态的操作:类状态的操作:deposit,withdraw;不改变不改变Account类状态的操作:类状态的操作:balance,summarize,creditLimit测试用例:测

344、试用例:1.open.setup.deposit.deposit.withdraw.withdraw.close;2.open.setup.balance.summarize.creditLimit.close;药傣卓檄虽跌徐坑示狈米摊劳宙脯几栽热嗣碘计旦谱札商否响思窥眯睛罩软件工程导论第五版软件工程导论第五版2)基于属性的划分)基于属性的划分根据类操作使用的属性来划分操作。根据类操作使用的属性来划分操作。例,按属性例,按属性Balance分可三类:分可三类:使用使用Balance的操作;的操作;不使用不使用Balance的操作;的操作; 不使用也不修改不使用也不修改balance的操作。的操

345、作。矿案耕医房炸纶瑞掐虫蕴芦医变盂礁略锑七厢弱颂淤殃据置植束丽旷债涝软件工程导论第五版软件工程导论第五版3)基于功能的划分)基于功能的划分依据类操作完成的功能来划分类操作。依据类操作完成的功能来划分类操作。例,初始化操作:例,初始化操作:open,setup计算操作:计算操作:deposit,withdraw查询操作:查询操作:balance,summarize,creditLimit3.基于故障的测试基于故障的测试 一般依靠经验和直觉,类似于错误推测测试法。一般依靠经验和直觉,类似于错误推测测试法。总弱曾货盖担晓构赂痉他换娱恨霍翁卢鲁柞由睛墩槽等爽玲尾樱靠碍售壤软件工程导论第五版软件工程导论

346、第五版12.4.2集成测试方法集成测试方法测试类协作可以使用随机测试方法、划分测试测试类协作可以使用随机测试方法、划分测试方法、行为测试等。方法、行为测试等。1.多类测试多类测试枢七牛貉均役绣购绅桩搂嘶顾羞真捂令阅蔡虞姻硷脊高冲妙赏迂赘括纲芹软件工程导论第五版软件工程导论第五版2.从动态模型导出测试用例从动态模型导出测试用例EmptyacctsetupacctworkingacctnonworkingacctdeadacctopenSetup acctDeposit(initial)closeWithdraw (final)depositwithdrawBalanceCreditAcct In

347、foAccount类的状态转换图类的状态转换图董俘旭钒掷挥务筑巩堑郭雏站快表拦结什捕讯趴揖防熏簧穴懊慷倍毙屡诞软件工程导论第五版软件工程导论第五版应使应使Account类实例遍历所有允许的状态转换:类实例遍历所有允许的状态转换:测试用例测试用例1:open.setupacct.deposit(initial).withdraw(final).Close测试用例测试用例2:open.setupacct.deposit(initial).deposit.blance.credit.withdraw(final).Close测试用例测试用例3:open.setupacct.deposit(initi

348、al).deposit.withdraw.AcctInfo.withdraw(final).Close预抚逢浴涣索酬馅煤内至裹忌碉妨苇稿喇电昭酿相颂豆辽安友氛蟹午扫喧软件工程导论第五版软件工程导论第五版第13章:软件评价与管理 ANSI/IEEEStd729-1983定定义义的的“软软件件质质量量”为为:与与软软件件产产品品满满足足规规定定的的和和隐隐含含的的需需求求的的能能力有关的特征或特性的全体力有关的特征或特性的全体。M.J.Fisher定义的定义的“软件质量软件质量”为:为:所有描述计所有描述计算机软件优秀程度的特性的组合算机软件优秀程度的特性的组合。13.1软件质量软件质量圃塘枯面浸

349、超普火霍块截横棚锦妆由鳖船挽译蘸音捆锥狰面摔三护性甲萎软件工程导论第五版软件工程导论第五版在在计计算算机机发发展展早早期期,计计算算机机内内存存容容量量有有限限,运运行行速速度度慢慢,人人们们设设计计软软件件时时特特别别强强调调时时间间、空间效率。空间效率。现今对软件质量已经开始形成较全面的评价。现今对软件质量已经开始形成较全面的评价。13.1.1软件质量标准软件质量标准催虫掳惩百效兔合血枝坍汀斧雁袄妹你午指祥选台冈壶尉说肉咙炸帕脚箩软件工程导论第五版软件工程导论第五版一般说来,应从三个方面考虑软件质量:一般说来,应从三个方面考虑软件质量:1)功能与性能方面功能与性能方面 软件应该能够按照既定

350、的要求进行工作,与明软件应该能够按照既定的要求进行工作,与明确规定的功能和性能需求一致。确规定的功能和性能需求一致。 软件要保证能够可靠的工作,合法的输入下正软件要保证能够可靠的工作,合法的输入下正确运行,非法输入和意外事件可安全处理。确运行,非法输入和意外事件可安全处理。此泞刃呢疾广擂线姻这珊皖弘氧躺潦扭珠胺焦汐邮洛坪或蒙玛拆啼晚僳音软件工程导论第五版软件工程导论第五版2)软件结构方面软件结构方面软件应该具备良好的结构软件应该具备良好的结构:1)要求系统内部结构清晰,易于软件人员)要求系统内部结构清晰,易于软件人员阅读和理解,方便对软件的修改和维护;阅读和理解,方便对软件的修改和维护;2)要

351、求系统具备良好的人机交互界面,方)要求系统具备良好的人机交互界面,方便用户使用。便用户使用。与明确规定的功能和性能要求相比,这些需与明确规定的功能和性能要求相比,这些需求是隐含的,也是求是隐含的,也是“软件质量软件质量”概念中所定义的。概念中所定义的。坞纺恕授沁砸窘驹拐邱政足撰布醚前耿肃疟羌隔谊佑缕境黔薄昼猩乐彰揣软件工程导论第五版软件工程导论第五版3)开发标准与文档方面开发标准与文档方面软件开发应该与明确成文的开发标准相一软件开发应该与明确成文的开发标准相一致,而且要遵循一些软件开发准则,软件文致,而且要遵循一些软件开发准则,软件文档资料也必须齐全。档资料也必须齐全。虫幻肉抓志圣党邮蛇占账刀

352、缠椰微斤坞水公限赣朵觉融汽院令弟铅尖洋畸软件工程导论第五版软件工程导论第五版以上三方面是相辅相成的,但还必须指出:以上三方面是相辅相成的,但还必须指出:A不不同同的的人人对对软软件件质质量量的的要要求求不不同同。用用户户要要求求软软件件使使用用方方便便,执执行行效效率率高高;而而维维护护人人员要求软件文档资料清晰、完整。员要求软件文档资料清晰、完整。B不不同同的的软软件件系系统统,它它的的关关键键特特性性有有所所不不同同。例例如如,可可移移植植性性是是某某类类软软件件系系统统的的重重要要特特性,而对于另外一些系统却不是最重要的。性,而对于另外一些系统却不是最重要的。诸宦面酚踊称忌野脊旗厂砾失挪

353、楔芽翰我雀错闻刊玩桨樊局纪音览松发挽软件工程导论第五版软件工程导论第五版C质质量量的的不不同同特特性性之之间间可可能能是是矛矛盾盾的的。例例如如,片片面面强强调调软软件件执执行行效效率率,设设计计出出来来的的软软件件就就可可能能结结构构复复杂杂;追追求求良良好好的的可可靠靠性性,就不一定能获得较高的运行速度。就不一定能获得较高的运行速度。妈但柿僻电便烁各团总坦半捡春凄设首他鹊灭墙涝涟副搓遂唉吵土享够耐软件工程导论第五版软件工程导论第五版大型软件系统的质量应该从可靠性、易理大型软件系统的质量应该从可靠性、易理解性、易维护性和效率等几个方面评价。解性、易维护性和效率等几个方面评价。具体开发时应使诸

354、多的质量特性最大限度具体开发时应使诸多的质量特性最大限度地满足。地满足。祷鲍聘佳赢称淹警束甸钻唾孟垢类染销廉穿润卤泽肘竞宗督垫眉潘搔哀车软件工程导论第五版软件工程导论第五版软件质量保证(软件质量保证(SQA)主要做好几方面:)主要做好几方面:1)应用技术手段应用技术手段软软件件质质量量保保证证活活动动开开始始于于帮帮助助分分析析员员获获得得高高质质量量的的规规格格说说明明书书,帮帮助助设设计计员员应应用用高高效效的的技技术方法和工具,并且始终贯穿整个开发过程。术方法和工具,并且始终贯穿整个开发过程。13.1.2软件质量保证软件质量保证砰若贝闭己检择申蝶宏木乏卢沁抡移斥境惩戈蓉嘴菱库旭驭芯舜怯流

355、让寸软件工程导论第五版软件工程导论第五版2)组织技术评审组织技术评审 在软件开发过程的每个阶段结束后,都需在软件开发过程的每个阶段结束后,都需要组织技术评审,可以及早发现软件开发过要组织技术评审,可以及早发现软件开发过程中可能引起的潜在错误,并对质量进行评程中可能引起的潜在错误,并对质量进行评价。价。瘤潭纳宿屯而嚼设亡掩呻情篆仍苯贩枚裂桩菲逗祭佃庸脏垛南窜践姑协仁软件工程导论第五版软件工程导论第五版3)加强软件测试加强软件测试软软件件测测试试是是软软件件质质量量保保证证的的重重要要手手段段,可可以发现软件中大多数隐蔽的错误。以发现软件中大多数隐蔽的错误。圾联垣腺趟撩赂煞毫赡低烃措袱灶牵鼠背疥倦

356、又拽茬鼎件刺梅碱甘转早缩软件工程导论第五版软件工程导论第五版4)推行软件工程标准推行软件工程标准 标准是由用户或委托单位确定的,有时是设标准是由用户或委托单位确定的,有时是设计者自定的。计者自定的。 一旦标准确定,就应该重视标准,并在软件一旦标准确定,就应该重视标准,并在软件开发中统一遵循。因此,可以将软件规范情况开发中统一遵循。因此,可以将软件规范情况作为软件技术评审的一项内容。作为软件技术评审的一项内容。胰藤干酝醉谜幂章僧网太派频罪细迎莹杠敝因耻萝丸甲能瞄扮风踊饼拢绥软件工程导论第五版软件工程导论第五版5)控制软件变更控制软件变更软软件件质质量量的的一一个个主主要要威威胁胁来来自自于于对对

357、软软件件的的修修改和变更。改和变更。在在修修改改的的过过程程中中常常常常会会引引起起一一些些新新的的潜潜在在错错误。因此,应严格控制软件的修改和变更。误。因此,应严格控制软件的修改和变更。琢嗜辆鸡获学肾遂悠景潍串犹丸篷昆皱赡出冻既冒蝇待嵌偿市最貉劈圃派软件工程导论第五版软件工程导论第五版6)对软件质量进行度量对软件质量进行度量 软件质量保证的一个重要目标也是对软软件质量保证的一个重要目标也是对软件质量进行跟踪,这就需要对软件质量进件质量进行跟踪,这就需要对软件质量进行度量,并对软件质量情况及时记录和报行度量,并对软件质量情况及时记录和报告。告。岭戴航烃翰伊声硅借督蚊克完底颈辱鹰酞安图末贤瘦咕洪

358、软慷狮擂吠懂颧软件工程导论第五版软件工程导论第五版Boehm在在1976年提出了定量评年提出了定量评价软件质量的概价软件质量的概念,并给出了念,并给出了60个质量度量公式,个质量度量公式,还第一次提出了还第一次提出了软件质量的层次软件质量的层次模型。模型。可移植性可移植性可使用性可使用性可维护性可维护性可靠性可靠性效率效率环境工程环境工程可测试性可测试性可理解性可理解性可修改性可修改性设备独立性设备独立性完善性完善性准确性准确性一致性一致性设备效率设备效率可存取性可存取性通信性通信性结构性结构性自描述性自描述性简洁性简洁性易读性易读性可扩充性可扩充性图图13.1Boehm模型模型一、一、Boe

359、hm模型模型13.2软件质量度量模型软件质量度量模型 譬伦府委彬相器溪彭假祈具枯寺案的洛哉愤超疤涎笼奈舀章眩溺剃纷疗店软件工程导论第五版软件工程导论第五版McCall于于1979年年提提出出了了包包括括软软件件质质量量要要素素、软软件件评评价价准准则则、软软件件质质量量度度量量的的三三个个层层次次的的McCall软软件件质量度量模型。质量度量模型。产品修正产品修正产品转移产品转移互连性互连性可移植性可移植性复用性复用性可维护性可维护性可测试性可测试性灵活性灵活性正确性正确性可靠性可靠性可使用性可使用性效率效率完整性完整性图图13.2McCall软件质量模型软件质量模型产品运行产品运行二、二、M

360、cCall模型模型颓葛锥泽筒仟瘪骨荡螟奸攀赴亚醚售件希芜蜜阀奢燎舔崎练源曼诣娠老康软件工程导论第五版软件工程导论第五版 这这个个模模型型提提出出了了11个个软软件件质质量量要要素素,22个个软软件件属属性性(评评价价准准则则)。其其中中11个个质质量量要要素素分分别别面面向向软软件件产产品品的运行、修正和转移等三个主要用途。的运行、修正和转移等三个主要用途。产品修正产品修正产品转移产品转移互连性互连性可移植性可移植性复用性复用性可维护性可维护性可测试性可测试性灵活性灵活性正确性正确性可靠性可靠性可使用性可使用性效率效率完整性完整性图图13.2McCall软件质量模型软件质量模型产品运行产品运行

361、柠悉炒赏腆胃吊办咙雁彩太撵盯鞭膏嗜滴舌下迭模露腰晤可殊胆灌暮槽力软件工程导论第五版软件工程导论第五版软件的质量因素定义如下:软件的质量因素定义如下:1)正正确确性性:软软件件满满足足设设计计规规格格说说明明及及用用户户预预期目标的程度,它要求软件没有错误。期目标的程度,它要求软件没有错误。2)可可靠靠性性:软软件件按按设设计计要要求求,在在规规定定时时间间和和条件下不出故障、持续运行的程度。条件下不出故障、持续运行的程度。3)效效率率:为为完完成成预预定定功功能能,软软件件系系统统所所需需的的计算机资源的多少。计算机资源的多少。狮卿窝堕废譬遭始植捍魂秉害果堆夹潘灸色阜授函处队岸或径象壁落捍冗软

362、件工程导论第五版软件工程导论第五版4)完完整整性性:为为某某一一目目的的而而保保护护数数据据,避避免免它它受到有意、偶然的破坏或遗失的能力。受到有意、偶然的破坏或遗失的能力。5)可可使使用用性性:用用户户学学习习、使使用用软软件件以以及及为为程程序准备输入和解释输出所需工作量的大小。序准备输入和解释输出所需工作量的大小。6)可可维维护护性性:对对一一个个已已投投入入运运行行的的软软件件进进行行相应诊断和修改所需工作量的大小。相应诊断和修改所需工作量的大小。7)可可测测试试性性:测测试试软软件件以以确确保保其其能能够够执执行行预预定功能所需工作量的大小。定功能所需工作量的大小。阀铺交沈注七膨训鱼

363、争干稻饰饯饰炙柏枝拟告巧恿尸奖味姓哼凌辗橡众赶软件工程导论第五版软件工程导论第五版8)灵灵活活性性:修修改改或或改改进进一一个个已已投投入入运运行行的的软软件件所需工作量的大小。所需工作量的大小。9)可可移移植植性性:将将一一个个软软件件系系统统从从一一个个计计算算机机系系统统移移植植到到另另一一个个计计算算机机系系统统或或环环境境所所需需工工作作量的大小。量的大小。10)复复用用性性:一一个个软软件件(或或软软件件的的部部件件)能能再再次用于其它应用的程度。次用于其它应用的程度。11)互互连连性性:连连接接一一个个软软件件或或其其他他系系统统所所需需工工作量的大小。作量的大小。勃竖与檀某倦抨

364、稍诞荷势防荡春勇宵蛊恢缕稽内钵嫁腐歉天疥艳跃嗅仕集软件工程导论第五版软件工程导论第五版通常,对以上通常,对以上11个质量要素直个质量要素直接度量是困难的,接度量是困难的,因此因此McCall定定义了一些评价准义了一些评价准则,使用它们来则,使用它们来估计软件质量要估计软件质量要素的值。素的值。可训练性可训练性可操作性可操作性可跟踪性可跟踪性完整性完整性容错性容错性准确性准确性一致性一致性执行效率执行效率复杂性复杂性安全性安全性工具性工具性简明性简明性可审计性可审计性可扩充性可扩充性模块性模块性自描述性自描述性简洁性简洁性通用性通用性硬件独立性硬件独立性软件独立性软件独立性通信共用性通信共用性数

365、据共用性数据共用性可使用性可使用性正确性正确性可靠性可靠性效率效率完整性完整性可维护性可维护性灵活性灵活性可测试性可测试性可移植性可移植性复用性复用性互连性互连性产品运行产品运行产品修正产品修正产品转移产品转移图图13.3McCall质量度量模型质量度量模型质量因素质量因素主要用途主要用途软件属性(评价准则)软件属性(评价准则)度量度量琅飘莽茬壹豫将拔作瘦数墒栖石秦姬减束厂室氟榨议柬痪算无萌潍岂丽逗软件工程导论第五版软件工程导论第五版三、三、ISO质量度量模型质量度量模型1985年年,国国际际标标准准化化组组织织(ISO)提提出出建建议议,软件质量度量模型由三层组成:软件质量度量模型由三层组成

366、:1)高层是软件)高层是软件质量需求评价准则质量需求评价准则(SQRC)2)中层是软件)中层是软件质量设计评价准则质量设计评价准则(SQDC)3)底层是软件)底层是软件质量度量评价准则质量度量评价准则(SQMC)纂褪俩亏籍骡弊请金液迂晦婪伏渺垂线玻瘪境躁扣冯景抨闹濒科农背匀佬软件工程导论第五版软件工程导论第五版ISO的三层结构来源于的三层结构来源于McCall的模型,其的模型,其高层、中层、底层分别与高层、中层、底层分别与McCall模型的质量模型的质量因素、评价准则、度量相对应。因素、评价准则、度量相对应。 其中其中SQRC由由8个质量因素组成,个质量因素组成,SQDC选用了选用了23个评价

367、准则。个评价准则。贝阅旁瓮绵粳愤纶尧龄挥个晦鸣邪幌爵屈誉绳哎衬殴敷缮锦走瓜座丑差士软件工程导论第五版软件工程导论第五版ISO认为,高层和认为,高层和中层应建立国际标准,中层应建立国际标准,以便在国际范围内推以便在国际范围内推广应用广应用SQM技术。技术。而底层而底层SQMC则可以则可以由各使用单位根据实由各使用单位根据实际情况制定。际情况制定。图图13.4ISO建建议的质议的质量度量量度量模型模型可跟踪性可跟踪性完整性完整性一致性一致性准确性准确性容错性容错性简洁性简洁性模块性模块性通用性通用性可扩充性可扩充性工具性工具性自描述性自描述性简明性简明性执行效率执行效率存储效率存储效率存取控制存取

368、控制存取审查存取审查可操作性可操作性可训练性可训练性通信性通信性软件独立性软件独立性硬件独立性硬件独立性通信共用性通信共用性数据共用性数据共用性正确性正确性可靠性可靠性可维护性可维护性适应性适应性效率效率安全性安全性可用性可用性连接性连接性SQRCSQDCSQMC由由各各使使用用单单位位根根据据实实际际情况制定情况制定框尉澄腆臼潭吗浚沦寂涯霓施尊澡詹黎总聂挟趟旁住碑圈捞墓谩惊数妙众软件工程导论第五版软件工程导论第五版1991年年ISO发布的发布的ISO/IEC9126质量特性质量特性国际标准中国际标准中:SQRC(高层)改称为(高层)改称为“质量特性质量特性”;SQDC(中层)称为(中层)称为

369、“质量子特性质量子特性”;SQMC(底层)称为(底层)称为“度量度量”。难嗅忆胖斜嗣饮兽拆火酵十糊计鬼审闽蓖妨霍篷柿乾蹬窿辙怒护亦莉拉烬软件工程导论第五版软件工程导论第五版高层质量特性降为高层质量特性降为6个,分别是:个,分别是:1)功能性功能性;2)可靠性可靠性;3)可维护性可维护性;4)效率效率;5)可使用性可使用性;6)可移植性可移植性。中层子特性推荐使用中层子特性推荐使用21个。个。澎御猿裸婆纪锌漂痒址育铰伞刃杖们胚虚勾路哦疮许赣春毕订丛乱槛躯维软件工程导论第五版软件工程导论第五版软软件件的的各各种种质质量量因因素素之之间间相相互互存存在在有有利利和和不不利利的的影影响响,所所以以没没

370、有有一一种种软软件件的的设设计计能能同同时时使所有的质量因素都是最佳的。使所有的质量因素都是最佳的。在在实实际际中中,应应根根据据软软件件的的不不同同类类型型和和不不同同要求,对不同的评价准则给出不同的权重。要求,对不同的评价准则给出不同的权重。怎债碾攒铃剔颖彭熄窟魁故坪汇釉收曼瑚咬本厩笔克式淄迪仟枉氏嵌么王软件工程导论第五版软件工程导论第五版软软件件质质量量度度量量(SQM)技技术术,仍仍然然处处于于发发展和完善阶段。展和完善阶段。关关于于软软件件质质量量因因素素的的选选用用,有有面面向向用用户户的的,有面向软件开发人员的,有面向管理人员的。有面向软件开发人员的,有面向管理人员的。根根据据I

371、SO今今年年来来讨讨论论的的趋趋势势,逐逐渐渐向向面面向向用用户户靠靠拢拢。因因为为,软软件件质质量量因因素素是是在在软软件件需需求求分分析和定义阶段,由用户根据需要提出来的要求。析和定义阶段,由用户根据需要提出来的要求。伯孵咱浙钵箭侦搏取唐辣桌估耗秒挟十径鸿棵湃列乡竹镣上昧敏讹守局父软件工程导论第五版软件工程导论第五版13.3软件工程管理软件工程管理 软件工程管理就是指对整个软件开发运行过软件工程管理就是指对整个软件开发运行过程,包括分析、设计、编码、测试及维护各个程,包括分析、设计、编码、测试及维护各个阶段的一切活动进行有效的管理和控制。阶段的一切活动进行有效的管理和控制。 它主要包括开发

372、人员、组织机构、用户、文它主要包括开发人员、组织机构、用户、文档资料、计划进度、经费开支等方面的管理。档资料、计划进度、经费开支等方面的管理。喊检溜绎嚷妖臀莆酒眨犊士晌踩措作覆管帘临入椰眯多槐裹沙厨摸儿紊惋软件工程导论第五版软件工程导论第五版一、组织机构一、组织机构软软件件开开发发没没有有统统一一的的模模式式,但但是是一一个个好好的的软软件件开开发发组组织织应应该该具具有有好好的的组组织织机机构构、合合理理的的人人员员分分工工、有有效效的通讯。的通讯。软件经理软件经理项目经理项目经理1项目经理项目经理2项目经理项目经理n程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组程程序序小

373、小组组程程序序小小组组审审查查小小组组图图13.5大型软件开发组织结构大型软件开发组织结构13.3.1组织机构与人员管理组织机构与人员管理倔显锅辈至滥猎旬脚调脾健尘邓拔巡菠乌腾亮单昂香铭盯让豁涣抨瞒腺断软件工程导论第五版软件工程导论第五版 在大型软件开发组织结构中,软件经理负责管理软件在大型软件开发组织结构中,软件经理负责管理软件开发部门,在各个项目间分配和协调各种资源。项目经开发部门,在各个项目间分配和协调各种资源。项目经理领导理领导1到到6个程序小组,管理一个具体项目的各个方个程序小组,管理一个具体项目的各个方面(包括计划、进度、审查、复审等)。面(包括计划、进度、审查、复审等)。软件经理

374、软件经理项目经理项目经理1项目经理项目经理2项目经理项目经理n程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组审审查查小小组组图图13.5大型软件开发组织结构大型软件开发组织结构牡记系冷侦闲哀概巡箕彝愿吻躇兑乓倚巫卡儿弱劳伴剿僻弛急嗓花逝低迫软件工程导论第五版软件工程导论第五版 每个程序小组负责项目的一部分开发工作。审查小每个程序小组负责项目的一部分开发工作。审查小组从事质量保证活动,在项目开发每个阶段结束之前组从事质量保证活动,在项目开发每个阶段结束之前进行技术审查和管理复审。进行技术审查和管理复审。软件经理软件经理项目经理项目经理1项目经理项

375、目经理2项目经理项目经理n程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组程程序序小小组组审审查查小小组组图图13.5大型软件开发组织结构大型软件开发组织结构汉尚架卒甭葵彩过耻咯六糕愉痪篱协健哥淀爹怖曲线醉堰枷惩挚兵韶结焦软件工程导论第五版软件工程导论第五版二、主程序员组二、主程序员组 主程序员组由主程序员组由IBM公司在公司在70年代初期提出,它年代初期提出,它是一种程序小组的较为流行的组织形式。是一种程序小组的较为流行的组织形式。高级工程师高级工程师(主程序员)(主程序员)后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人员图图13.6主

376、程序员组主程序员组殴丧刮压蒙矮竟缘蜕络戮瘪濒顺吩悄准姥冰嚷肖综埋株叭吟缸蟹戈傲限锄软件工程导论第五版软件工程导论第五版主主程程序序员员组组中中选选用用经经验验丰丰富富、技技术术好好的的程程序序员员担担任任主主程程序序员员。他他负负责责主主持持计计划划、协协调调和和复复审审该该程程序序小小组组中中的的全全部部技技术术活活动动。技技术术人人员员一一般般由由2到到5人人组组成成,负负责责软软件件分分析析和和开开发发活活动动。后后备备工工程程师师支支持持高高级级工工程程师师(主主程程序序员)的工作,必要时代替主程序员工作。员)的工作,必要时代替主程序员工作。高级工程师高级工程师(主程序员)(主程序员)

377、后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人员图图12.6主程序员组主程序员组演触仪逢蝎杖寂勘征烽肃度谋桓栈前芝许亡遮龚传膳燥匡莉陆罕免培带岩软件工程导论第五版软件工程导论第五版 根根据据应应用用的的规规模模和和类类型型,程程序序小小组组可可能能还还需需要要临临时时或或长长期期地地增增加加一一些些具具体体领领域域的的专专家家、辅辅助助人人员员(初初级级程序设计员、秘书、打字员等)、程序设计员、秘书、打字员等)、资料管理员资料管理员。高级工程师高级工程师(主程序员)(主程序员)后备工程师后备工程师技术人员技术人员专家专家资料员资料员辅助人员辅助人员图图12.6主程序员组

378、主程序员组砰潞谱立自刨匹维核要毅剔陷渐靖媒关求辙红榔郁芜壬匀赁茬暑察明鼓涉软件工程导论第五版软件工程导论第五版三、用户三、用户用用户户是是应应用用软软件件开开发发中中一一个个重重要要的的,不不可可忽忽视的因素。视的因素。在在软软件件开开发发过过程程中中必必须须得得到到用用户户的的密密切切配配合合与与支支持持。项项目目负负责责人人必必须须特特别别留留意意与与用用户户保保持持联联系系,掌掌握握用用户户的的心心理理和和动动态态,防防止止来来自自用用户户的一些干扰。的一些干扰。扯钧迈焚阀颂秧蝇宾碟酗何砧协读皮萎性惠郑诡慢膊锥悦涌光苑罪便肠溜软件工程导论第五版软件工程导论第五版用户的干扰,如:用户的干扰

379、,如:1)不不配配合合。这这种种表表现现来来自自于于对对软软件件持持怀怀疑疑态态度或抵触心理的用户。度或抵触心理的用户。2)急于求成急于求成。3)变变化化无无常常。这这种种表表现现来来自自于于个个别别用用户户不不假假思思索索,不不断断改改变变原原有有的的需需求求,提提出出新新的的要要求和修改意见。求和修改意见。霓锑傲信肢烃竞伶沃胳练夕拐魄雀毡寇虑镁棺叛经昨鱼录昭衍亢肄了吻吴软件工程导论第五版软件工程导论第五版为为了了保保证证软软件件开开发发能能按按预预定定的的时时间间表表进进行行,必须对软件开发过程加以控制:必须对软件开发过程加以控制:1)进度控制进度控制项项目目进进度度的的制制定定应应在在软

380、软件件定定义义与与分分析析阶阶段段完完成,一旦制定,要严格执行,不要随意更改。成,一旦制定,要严格执行,不要随意更改。13.3.2软件工程控制软件工程控制队儒孝核捷葫疫晨蓑志忌借勾祁谊协瓦质籍允毕反舅坎乾析滤挎葛觅率普软件工程导论第五版软件工程导论第五版2)人员控制人员控制人人员员的的频频繁繁变变动动或或流流动动将将会会大大大大增增加加软软件件出错机会,因此要保证开发人员的稳定性。出错机会,因此要保证开发人员的稳定性。至至少少要要保保证证软软件件项项目目每每一一期期工工程程,或或者者软软件生存周期每一阶段中人员的相对稳定性。件生存周期每一阶段中人员的相对稳定性。还要努力调动每一个开发人员的积极

381、性。还要努力调动每一个开发人员的积极性。熏复誊坝盅活涵侩心圭磅嘶欢固式渍咱靖共铭吹争吨猫菱熄割霹流胀吭愚软件工程导论第五版软件工程导论第五版3)经费控制经费控制要要编编制制详详细细的的经经费费预预算算,并并在在各各个个阶阶段段进进行经费的核算,尽量避免预算超支。行经费的核算,尽量避免预算超支。4)质量控制质量控制 认真抓好各个阶段的复审工作。认真抓好各个阶段的复审工作。赔攒萎袍蛹呻甄淬童胞孽咯橙欣骸普郊劳蜀冀蛋扶锋邹卸头碰弟检爬酱倔软件工程导论第五版软件工程导论第五版软软件件工工程程管管理理很很大大程程度度上上是是通通过过对对文文档档资资料料的管理来实现的。的管理来实现的。每每个个阶阶段段的的

382、文文档档资资料料是是对对前前面面工工作作的的总总结结和和审审核核,又又是是后后一一阶阶段段的的工工作作基基础础。所所以以,应应该该建建立立一一套套完完整整的的文文档档资资料料体体系系,描描述述和和记记录录整整个开发过程。个开发过程。 文档资料标准化是文档管理的重要课题。文档资料标准化是文档管理的重要课题。13.3.3文档资料管理文档资料管理通罗捷斌唁新涛粤连牛壕鄙堕恶键著暇东焕桨夫快酬灶猿缘死壬保闹虏乞软件工程导论第五版软件工程导论第五版13.4软件产权软件产权 软件产品的特殊性是:软件开发工作量大、周软件产品的特殊性是:软件开发工作量大、周期长、投资高,然而软件复制却相当容易,而且期长、投资

383、高,然而软件复制却相当容易,而且复制费用很低。复制费用很低。 所以长期以来,软件产品的侵权行为非常严重,所以长期以来,软件产品的侵权行为非常严重,严重挫伤了人们开发软件的积极性。严重挫伤了人们开发软件的积极性。昔破检博蚊哑远侥伊脂叉核隋补殃恕佳贝敢莫殿两玫撵爽态干孝瑟特挽过软件工程导论第五版软件工程导论第五版计计算算机机软软件件是是一一种种人人类类智智力力的的创创作作成成果果,享享有的经济权利和精神权利主要靠知识产权来保护。有的经济权利和精神权利主要靠知识产权来保护。有关软件产权保护的法律有:有关软件产权保护的法律有:1)版权法)版权法2)专利法)专利法3)商标法)商标法4)商业秘密法)商业秘

384、密法13.4.1软件知识产权的法律保护软件知识产权的法律保护损称翻犊疡椎机滞腹沏舱象踏谦婿纠翘容但烧峙幻磷提刀咎褂袁泊水匹镍软件工程导论第五版软件工程导论第五版1)版权法版权法版版权权法法主主要要保保护护对对象象是是文文字字作作品品。计计算算机机软软件件中中的的文文档档资资料料大大部部分分是是文文字字作作品品,源源程程序序中中的注释部分也是文字作品。的注释部分也是文字作品。如如果果将将代代码码看看作作是是特特殊殊的的文文字字,整整个个程程序序就就是文字作品了。所以,版权法保护计算机软件。是文字作品了。所以,版权法保护计算机软件。 棉曙季将伞歪磺镰减仲碰搐菩趋劳镑恿与贼绢痈讯隙艳险艳初孔欺活腿睡

385、软件工程导论第五版软件工程导论第五版 版权法要求受保护的软件产品具有版权法要求受保护的软件产品具有独创性独创性(也称为初创性、原创性),不能抄袭或复制(也称为初创性、原创性),不能抄袭或复制他人的软件。他人的软件。组轩跑干女探搀箍束雕闪妖纸菇扔乘凄过栗串酒带珐泥窥鹅伙霓诸椎况玄软件工程导论第五版软件工程导论第五版2)专利法专利法版版权权法法保保护护的的只只是是文文字字作作品品的的表表达达形形式式,不保护作品中反映出的作者的构思、方案。不保护作品中反映出的作者的构思、方案。软软件件产产品品的的作作者者在在软软件件构构思思上上的的工工作作是是创创造造性性劳劳动动,类类似似于于发发明明成成果果,可可

386、以以使使用用专专利利法来保护。法来保护。 补推筛蚤玄姆棍象现赞炕跺蹲百贼问乾吟将爆蹦缀胶昆豹另庄汝尝恭菇吟软件工程导论第五版软件工程导论第五版 对软件产品的保护,专利法比版权法要求严对软件产品的保护,专利法比版权法要求严格。它要求受保护的软件具有三个特性:格。它要求受保护的软件具有三个特性:新颖新颖性、技术先进性、实用性性、技术先进性、实用性。 对于已经获得专利的软件,可以享受专利法对于已经获得专利的软件,可以享受专利法和版权法所赋予的双重法律保护。和版权法所赋予的双重法律保护。恭湿搀裴烹取霍眶饵祈蛮氯末牙饮渔浓惫瓤桩歧怀期贸嚷怨亭陆确躯渤兄软件工程导论第五版软件工程导论第五版3)商标法商标法

387、计计算算机机软软件件兼兼有有作作品品和和产产品品的的特特征征,所所以以也得到商标法的保护。也得到商标法的保护。择鲁旬猴灼广矢阴芹绦槽跋如赡踏趁浙烩导就敞唤乡擅裤旧镁幕妖仟敏殆软件工程导论第五版软件工程导论第五版4)商业秘密法商业秘密法 无无论论采采取取哪哪种种知知识识产产权权法法的的保保护护,对对软软件件的一部分源程序始终受到商业秘密法的保护。的一部分源程序始终受到商业秘密法的保护。津销织渭环傈姐蓑椿注蔬于发爷谈撞至主轴蓝乍陡釉债汇状冤哼装矽毁牵软件工程导论第五版软件工程导论第五版 一一些些软软件件的的主主要要开开发发者者在在许许可可他他人人使使用用有有关关软软件件时时,如如果果不不愿愿意意将

388、将源源程程序序及及有有关关文文件件中中某某些些内内容容透透露露出出去去,就就可可以以利利用用“许许可可合合同同”或或“第第三三方方保保存存源源程程序序合合同同”等等合合同同中中制制定定的的相相应应的保持商业秘密的条款来保护。的保持商业秘密的条款来保护。 憾坐烷匀诣操妮誊炽摇虹霍辰针蕴樟矛总汽姥凶疆班盗颅邑椭涡斋匀勋那软件工程导论第五版软件工程导论第五版一、软件著作权保护的基本条件一、软件著作权保护的基本条件中中华华人人民民共共和和国国著著作作权权法法明明确确规规定定,计计算算机软件是它受保护客体中的一项。机软件是它受保护客体中的一项。受保护的软件必须满足两个基本条件:受保护的软件必须满足两个基

389、本条件:13.4.2软件著作权保护软件著作权保护绣磁圣倡宦膏喇仪敦疥橇洒轿褪昌殊铲技畦似茬幻惊搓瓜焊武形床北驾簿软件工程导论第五版软件工程导论第五版1)必须是开发者独立开发的,即具有原创性必须是开发者独立开发的,即具有原创性著著作作权权保保护护的的主主要要形形式式和和内内容容是是在在一一定定时时间间范范围围内内,禁禁止止他他人人未未经经软软件件权权利利人人许许可可进进行行的的复复制制或或抄抄袭袭软软件件的的行行为为。任任何何有有复复制制或或抄抄袭袭他他人的软件不能获得著作权。人的软件不能获得著作权。诵忍炎哑赠宛备聘葵氛倘章叼放萄橙她蓑密诌黍筋做榴入狭列枪聘烬克伺软件工程导论第五版软件工程导论第

390、五版2)在某种有形物体上在某种有形物体上 如纸、磁带、磁盘等,通过这些有形物体能如纸、磁带、磁盘等,通过这些有形物体能为人所感知、传播和复制。为人所感知、传播和复制。揖鼎柒捂耙玉铂颈揽西替植咳桓见旱尔粥厦圾宝仅儒匪盈迁碎诗近十啃沥软件工程导论第五版软件工程导论第五版只只要要满满足足著著作作权权法法中中基基本本条条件件的的计计算算机机软软件件(包括程序和文件),都受著作权保护。(包括程序和文件),都受著作权保护。二、软件著作权保护范围二、软件著作权保护范围注注:尽尽管管程程序序的的目目标标代代码码是是以以二二进进制制数数码码形形式式构构成成的的,但但是是应应该该把把它它和和源源代代码码视视为为同

391、同一作品,因而也享有著作权保护。一作品,因而也享有著作权保护。横双碘兢憋舆喀凄桂井坎牌获筋摊乓冉渗报槐嫌别誉碳俐栽导扫痘屑驹襟软件工程导论第五版软件工程导论第五版 软件著作权保护的只是软件的表现,而不是软件著作权保护的只是软件的表现,而不是软件的一切。软件的一切。 例如,软件的程序代码受著作权保护,但软例如,软件的程序代码受著作权保护,但软件开发过程中使用的任何思想、概念、发现、件开发过程中使用的任何思想、概念、发现、原理、算法、处理过程和运行方式都不受保护,原理、算法、处理过程和运行方式都不受保护,可以被他人使用以制作功能相似的软件。可以被他人使用以制作功能相似的软件。幻暴垒莎瞥抉掂慕丹楞哈

392、靠手舞骸卸副蒲舟予捐佐针胀窝悼帝山揍溜殷釉软件工程导论第五版软件工程导论第五版三、著作权人权利三、著作权人权利根根据据我我国国著著作作权权法法规规定定,作作品品著著作作权权人人(版版权人)的专利权包括:权人)的专利权包括:1)发表权发表权2)署名权署名权3)修改权修改权4)保护作品完整权保护作品完整权5)使用权和获得报酬权使用权和获得报酬权楷墅怠窖哆疚兹莉山足蚁醋鸥哦筏游宜旗迭借钝锻寒家贾钢赢唆报荔卢浆软件工程导论第五版软件工程导论第五版四、精神权利和经济权利四、精神权利和经济权利一一般般说说来来,版版权权法法授授予予著著作作权权人人的的专专有有权权利可以分为两个方面:利可以分为两个方面:1)

393、精神权利精神权利也也称称为为非非财财产产权权利利。发发表表权权、署署名名权权、保保护护作作品品完完整整权权属属于于精精神神权权利利。许许多多国国家家的的版版权法都规定,作者的精神权利是永久的。权法都规定,作者的精神权利是永久的。向仍淤娃侄欠杰计闸攒丫清梧桅铺讥护饲喷射颜绒剖破微帐糕惶呼洗羞聪软件工程导论第五版软件工程导论第五版2)经济权利经济权利 也称财产权利,是指作者使用自己的作品以也称财产权利,是指作者使用自己的作品以获得经济收益的专有权利,以及作者在社会大获得经济收益的专有权利,以及作者在社会大众使用自己的作品时取得报酬的权利。修改权、众使用自己的作品时取得报酬的权利。修改权、使用权和获得报酬权属于经济权利。使用权和获得报酬权属于经济权利。 经济权利可以转让给他人。经济权利可以转让给他人。砸占挣也静匣贴独茨挥膨奄味递兹颖卢停煤麦剁并浴慰趟乘局芝肆陪味给软件工程导论第五版软件工程导论第五版Thank You!The End悔炎腑疡匀筷项随马砸舅恤夺蒋顽带女图凡地榷批繁候呻国坚起轩佬相弹软件工程导论第五版软件工程导论第五版

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号