全套课件·《软件工程》

上传人:夏** 文档编号:568811056 上传时间:2024-07-27 格式:PPT 页数:1027 大小:7.84MB
返回 下载 相关 举报
全套课件·《软件工程》_第1页
第1页 / 共1027页
全套课件·《软件工程》_第2页
第2页 / 共1027页
全套课件·《软件工程》_第3页
第3页 / 共1027页
全套课件·《软件工程》_第4页
第4页 / 共1027页
全套课件·《软件工程》_第5页
第5页 / 共1027页
点击查看更多>>
资源描述

《全套课件·《软件工程》》由会员分享,可在线阅读,更多相关《全套课件·《软件工程》(1027页珍藏版)》请在金锄头文库上搜索。

1、软件工程软件工程电子教案课程名称:软件工程课程名称:软件工程 第第1讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第1章章 概述概述 1.1 软件软件 1.2 软件工程的概念软件工程的概念教学目的:教学目的:1. 了解软件、软件危机等概念了解软件、软件危机等概念 2. 掌握软件工程的定义、原理、掌握软件工程的定义、原理、目标和原则目标和原则教学重点:软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则教学难点:软件工程的目标和原则教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:看书业:看书第一章第一章软件

2、与软件工程软件与软件工程 1.1 软件软件 1.2 软件工程的概念软件工程的概念 1.3 软件生存周期软件生存周期 1.4 软件开发模式软件开发模式 1.5 软软件件开开发发方方法法、工工具具及及环环境境1.1软件(软件(Software)1.1.1软件与软件的组成软件与软件的组成计算机软件计算机软件与计算机系统操作有关的程序、规程、与计算机系统操作有关的程序、规程、 规规则则及及任任何何与与之之有有关关的文档和数据。的文档和数据。 软件软件 程序及有关数据程序及有关数据机器可执行;机器可执行; 文文档档(与与软软件件开开发发、运运行行、维维护、使用、护、使用、 培培训训有有关关)不可执行。不

3、可执行。程序(程序(program)用程序设计语言描述的,适合用程序设计语言描述的,适合 于于计计算算机处理的语句序列。机处理的语句序列。程序设计语言三种类型:程序设计语言三种类型: 1机器语言、汇编语言:依赖于机器,面向机器机器语言、汇编语言:依赖于机器,面向机器 2高级语言:独立于机器,面向过程或面向对象高级语言:独立于机器,面向过程或面向对象 3面向问题语言:独立于机器,非过程式语言(面向问题语言:独立于机器,非过程式语言(4GL)文文档档(document)一一种种数数据据媒媒体体和和其其上上所所记记录录的的数数据。据。文档记录软件开发活动和阶段成果,具有永久性,可供文档记录软件开发活

4、动和阶段成果,具有永久性,可供 人或机器阅读。人或机器阅读。文档可用于文档可用于 专业人员和用户之间的通信和交流;专业人员和用户之间的通信和交流; 软件开发过程的管理;软件开发过程的管理; 运行阶段的维护。运行阶段的维护。面向过程1.软件的特点软件的特点软件是逻辑产品,硬件是物理产品。软件是逻辑产品,硬件是物理产品。特点:特点:(1)软件开发更依赖于开发人员的业务素质、智力、)软件开发更依赖于开发人员的业务素质、智力、 人人员员的的组组织织、合合作作和和管管理理。软软件件开开发发、设计几设计几 乎都是从头开始,成本和进度很难估计。乎都是从头开始,成本和进度很难估计。(2)软件存在潜伏错误,硬件

5、错误一般能排除。)软件存在潜伏错误,硬件错误一般能排除。(3)软件开发成功后,只需对原版进行复制。)软件开发成功后,只需对原版进行复制。1.软件的特点(续)软件的特点(续)(4)软件在使用过程中维护复杂:)软件在使用过程中维护复杂: 1)纠错性维护)纠错性维护改正运行期间发现的潜伏错误;改正运行期间发现的潜伏错误; 2)完善性维护)完善性维护提高或完善软件的性能;提高或完善软件的性能; 3)适应性维护)适应性维护修改软件,以适应软硬件环境修改软件,以适应软硬件环境 的变化;的变化; 4)预防性维护)预防性维护改进软件未来的可维护性和改进软件未来的可维护性和 可靠性。可靠性。(5)软件不会磨损和

6、老化。)软件不会磨损和老化。2.软件的发展软件的发展第一阶段第一阶段20世纪世纪60年代中期以前,软件开发处于年代中期以前,软件开发处于 个体化生产状态。在这一个体化生产状态。在这一阶段中,软件阶段中,软件 还没有系统化的开发方法。还没有系统化的开发方法。目标主要集目标主要集 中在如何提高时空效率上。中在如何提高时空效率上。 第二阶段第二阶段从从20世纪世纪60年代中期到年代中期到70年代末期。软年代末期。软 件开发已进入了作坊式生件开发已进入了作坊式生产方式,即出产方式,即出 现了现了“软件车间软件车间”。软件。软件开发开始形成产开发开始形成产 品。到品。到20世纪世纪60年代末,年代末,“

7、软件危机软件危机”变变 得十分严重。得十分严重。2.软件的发展软件的发展第三阶段第三阶段从从20世纪世纪70年代中期到年代中期到20世纪世纪80年代末年代末 期。软件开发进入了产业期。软件开发进入了产业化生产,即出化生产,即出 现了众多大型的现了众多大型的“软件公软件公司司”。在这一阶。在这一阶 段,软件开发开始采用了段,软件开发开始采用了“工程工程”的方法,的方法, 软件产品急剧增加,质量软件产品急剧增加,质量也有了很大的也有了很大的 提高。提高。 第四阶段第四阶段从从20世纪世纪80年代末期开始的。这是一个年代末期开始的。这是一个 软件产业大发展的时期。软件产业大发展的时期。也是软件工程也

8、是软件工程 大发展的时期,人们开始大发展的时期,人们开始采用面向对象采用面向对象 的技术和可视化的集成开的技术和可视化的集成开发环境。发环境。1.1.2软件危机软件危机软件危机是指在计算机软件开发、使用与维护软件危机是指在计算机软件开发、使用与维护 过程中遇到的一系列严重问题和难题。过程中遇到的一系列严重问题和难题。 1软件危机的表现软件危机的表现1)对软件开发成本和进度的估计常常很不准确。常)对软件开发成本和进度的估计常常很不准确。常 常常出出现现实实际际成成本本比比估估算算成成本本高高出出一一个个数数量量级级、实实 际进度比计划进度拖延几个月甚至几年的现象,际进度比计划进度拖延几个月甚至几

9、年的现象, 从而降低了开发商的信誉,引起用户不满。从而降低了开发商的信誉,引起用户不满。2)用户对已完成的软件不满意的现象时有发生。)用户对已完成的软件不满意的现象时有发生。3)软件产品的质量往往是靠不住的。)软件产品的质量往往是靠不住的。1软件危机的表现软件危机的表现4)软件常常是不可维护的。)软件常常是不可维护的。5)软件通常没有适当的文档资料。文档资料不全或不)软件通常没有适当的文档资料。文档资料不全或不 合合格格,必必将将给给软软件件开开发发和和维维护护工工作作带带来来许许多多难难以以想想 象的困难和难以解决的问题。象的困难和难以解决的问题。6)软件成本在计算机系统总成本中所占比例逐年

10、上升。)软件成本在计算机系统总成本中所占比例逐年上升。 特特别别是是软软件件维维护护成成本本迅迅速速增增加加,已已经经占占据据软软硬硬件件总总 成本的成本的40%75%,如图,如图111所示。所示。7)开发生产率提高的速度远跟不上软件需求。)开发生产率提高的速度远跟不上软件需求。 硬件软件开发软件维护1955年1970年1985年100%80%60%40%20%图1-1-1软件、硬件成本变化趋势2产生软件危机的原因产生软件危机的原因1)用户对软件需求的描述不精确。)用户对软件需求的描述不精确。2)软件开发人员对用户需求的理解有偏差,这将导致)软件开发人员对用户需求的理解有偏差,这将导致 软件产

11、品与用户的需求不一致。软件产品与用户的需求不一致。3)缺乏处理大型软件项目的经验。开发大型软件项目)缺乏处理大型软件项目的经验。开发大型软件项目 需需要要组组织织众众多多人人员员共共同同完完成成。一一般般来来说说,多多数数管管理理 人人员员缺缺乏乏大大型型软软件件的的开开发发经经验验,而而多多数数软软件件开开发发人人 员员又又缺缺乏乏大大型型软软件件项项目目的的管管理理经经验验,致致使使各各类类人人员员 的信息交流不及时、不准确、容易产生误解。的信息交流不及时、不准确、容易产生误解。2产生软件危机的原因产生软件危机的原因4)开发大型软件易产生疏漏和错误。)开发大型软件易产生疏漏和错误。5)缺乏

12、有力的方法学的指导和有效的开发工)缺乏有力的方法学的指导和有效的开发工 具具的的支支持持。软软件件开开发发过过多多地地依依靠靠程程序序员员的的 “技技巧巧”,从从而而加加剧剧了了软软件件产产品品的的个个性性化。化。6)面对日益增长的软件需求,人们显得力不)面对日益增长的软件需求,人们显得力不 从从心心。从从某某种种意意义义上上说说,解解决决供供求求矛矛盾盾将将 是一个永恒的主题。是一个永恒的主题。3缓解软件危机的途径缓解软件危机的途径到了到了20世纪世纪60年代末期,软件危机已相当严年代末期,软件危机已相当严重。这促使计算机科学家们开始探索缓解软重。这促使计算机科学家们开始探索缓解软件危机的方

13、法。他们提出了件危机的方法。他们提出了“软件工程软件工程”的的概念,即用现代工程的原理、技术和方法进概念,即用现代工程的原理、技术和方法进行软件的开发、管理、维护和更新。于是,行软件的开发、管理、维护和更新。于是,开创了计算机科学技术的一个新的研究领域。开创了计算机科学技术的一个新的研究领域。1.2软件工程的概念软件工程的概念1.2.1 软件工程的定义软件工程的定义1968年年,北北大大西西洋洋公公约约组组织织在在原原西西德德召召开开计计算算机机科科学学会会议,由议,由Fritz Bauer首次提出了首次提出了“软件工程软件工程”的概念。的概念。 软件工程软件工程用工程、科学和数学的原则与方法

14、用工程、科学和数学的原则与方法 开开发发、维维护护计计算算机机软软件的有关技术件的有关技术 和管理方法。和管理方法。 软软件件工工程程由由方方法法、工工具具和和过过程程三三部部分分组组成成,称称软软件件工程的三要素。工程的三要素。1.2.1 软件工程的定义软件工程的定义软件工程中的各种方法是完成软件工程项目的软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段。技术手段,它们支持软件工程的各个阶段。软件工程使用的软件工具能够自动或半自动地软件工程使用的软件工具能够自动或半自动地支持软件的开发、管理和文档的生成。支持软件的开发、管理和文档的生成。软件工程中的过程贯穿于整个

15、工程的各个环节,软件工程中的过程贯穿于整个工程的各个环节,在这一过程中,管理人员应对软件开发的质量、在这一过程中,管理人员应对软件开发的质量、进度、成本等进行评估、管理和控制,包括计进度、成本等进行评估、管理和控制,包括计划跟踪与控制、成本估算、人员的组织、质量划跟踪与控制、成本估算、人员的组织、质量保证、配置管理等保证、配置管理等1.2.2软件工程的基本原理软件工程的基本原理著名的软件工程专家著名的软件工程专家B. W. Boehm于于1983年年综合了软件工程专家学者们的意见并总结综合了软件工程专家学者们的意见并总结了开发软件的经验,提出了软件工程的了开发软件的经验,提出了软件工程的7条条

16、基本原理。这基本原理。这7条原理被认为是确保软件产条原理被认为是确保软件产品质量和开发效率的原理的最小集合,又品质量和开发效率的原理的最小集合,又是相互独立、缺一不可、相当完备的最小是相互独立、缺一不可、相当完备的最小集合。下面就简单介绍软件工程的这集合。下面就简单介绍软件工程的这7条原条原理:理:1用分阶段的生存周期计划严格管理用分阶段的生存周期计划严格管理这条基本原理是应该把软件生存周期划分成这条基本原理是应该把软件生存周期划分成若干个阶段,并相应地制定出切实可行的计若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件开发与维护工划,然后严格按照计划对软件开发与维护工作进行管理

17、。应该制定的计划有项目概要计作进行管理。应该制定的计划有项目概要计划、里程碑计划、项目控制计划、产品控制划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划等。各级管计划、验证计划和运行维护计划等。各级管理人员都必须严格按照计划对软件开发和维理人员都必须严格按照计划对软件开发和维护工作进行管理。据统计,不成功的软件项护工作进行管理。据统计,不成功的软件项目中,有一半左右是由于计划不周造成的。目中,有一半左右是由于计划不周造成的。2坚持进行阶段评审坚持进行阶段评审据统计,在软件生存周期各阶段中,编码据统计,在软件生存周期各阶段中,编码阶段之前的错误约占阶段之前的错误约占63%,而编

18、码错误仅占,而编码错误仅占37%。另外,错误发现并改正得越晚,所花。另外,错误发现并改正得越晚,所花费的代价越高。坚持在每个阶段结束前进费的代价越高。坚持在每个阶段结束前进行严格的评审,就可以尽早发现错误,从行严格的评审,就可以尽早发现错误,从而可以最小的代价改正错误。因此,这是而可以最小的代价改正错误。因此,这是一条必须坚持的重要原理。一条必须坚持的重要原理。3实行严格的产品控制实行严格的产品控制决不能随意改变需求,只能依靠科学的产品控制技决不能随意改变需求,只能依靠科学的产品控制技术来顺应用户提出的改变需求的要求。为了保持软术来顺应用户提出的改变需求的要求。为了保持软件各个配置成分的一致性

19、,必须实行严格的产品控件各个配置成分的一致性,必须实行严格的产品控制。其中主要是实行基准配置管理(又称为变动控制。其中主要是实行基准配置管理(又称为变动控制),即凡是修改软件的建议,尤其是涉及基本配制),即凡是修改软件的建议,尤其是涉及基本配置的修改建议,都必须按规程进行严格的评审,评置的修改建议,都必须按规程进行严格的评审,评审通过后才能实施。审通过后才能实施。这里的这里的“基准配置基准配置”是指经过阶段评审后的软件配是指经过阶段评审后的软件配置成分,即各阶段产生的文档或程序代码等。置成分,即各阶段产生的文档或程序代码等。4采用现代程序设计技术采用现代程序设计技术实践表明,采用先进的程序设计

20、技术既可实践表明,采用先进的程序设计技术既可以提高软件开发与维护的效率,又可以提以提高软件开发与维护的效率,又可以提高软件的质量。多年来,人们一直致力于高软件的质量。多年来,人们一直致力于研究新的研究新的“程序设计技术程序设计技术”。比如,。比如,20世世纪纪60年代末提出的结构程序设计技术;后年代末提出的结构程序设计技术;后来又发展出各种结构分析(来又发展出各种结构分析(SA)和结构设)和结构设计(计(SD)技术;之后又出现了面向对象分)技术;之后又出现了面向对象分析(析(OOA)和面向对象设计()和面向对象设计(OOD)技术)技术等等。等等。5结果应能清楚地审查结果应能清楚地审查软件产品是

21、一种看不见、摸不着的逻软件产品是一种看不见、摸不着的逻辑产品。因此,软件开发小组的工作辑产品。因此,软件开发小组的工作进展情况可见性差,难于评价和管理。进展情况可见性差,难于评价和管理。为了更好地进行评价与管理,应根据为了更好地进行评价与管理,应根据软件开发的总目标和完成期限,尽量软件开发的总目标和完成期限,尽量明确地规定软件开发小组的责任和产明确地规定软件开发小组的责任和产品标准,从而使所得到的结果能清楚品标准,从而使所得到的结果能清楚地审查。地审查。6开发小组的人员应少而精开发小组的人员应少而精软件开发小组人员素质和数量是影响软件质量和软件开发小组人员素质和数量是影响软件质量和开发效率的重

22、要因素。实践表明,素质高的人员开发效率的重要因素。实践表明,素质高的人员与素质低的人员相比,开发效率可能高几倍至几与素质低的人员相比,开发效率可能高几倍至几十倍、而且所开发的软件中的错误也要少得多。十倍、而且所开发的软件中的错误也要少得多。另外,开发小组的人数不宜过多,因为随着人数另外,开发小组的人数不宜过多,因为随着人数的增加,人员之间交流情况、讨论问题的通信开的增加,人员之间交流情况、讨论问题的通信开销将急剧增加,这不但不能提高生产率,反而由销将急剧增加,这不但不能提高生产率,反而由于误解等原因可能增加出错的概率。于误解等原因可能增加出错的概率。7承认不断改进软件工程实践的必要性承认不断改

23、进软件工程实践的必要性遵循上述六条基本原理,就能够较好地实现软遵循上述六条基本原理,就能够较好地实现软件的工程化生产。但是,软件工程不能停留在件的工程化生产。但是,软件工程不能停留在已有的技术水平上,应积极主动地采纳或创造已有的技术水平上,应积极主动地采纳或创造新的软件技术,要注意不断总结经验,收集工新的软件技术,要注意不断总结经验,收集工作量、进度、成本等数据,并进行出错类型和作量、进度、成本等数据,并进行出错类型和问题报告的统计。这些数据既可用来评估新的问题报告的统计。这些数据既可用来评估新的软件技术的效果,又可用来指明应优先进行研软件技术的效果,又可用来指明应优先进行研究的软件工具和技术

24、。究的软件工具和技术。1.2.3软件工程的目标软件工程的目标软件工程的目标是在给定成本、进软件工程的目标是在给定成本、进度的前提下,开发出具有可修改性、度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满植性、可追踪性和可互操作性并满足用户需求的软件产品。足用户需求的软件产品。名词解释名词解释1)可修改性()可修改性(modifiability),允许对软件系统进行),允许对软件系统进行 修改而不增加其复杂性。它支持软件调试与维护。修改而不增加其复杂性。它支持软件调

25、试与维护。2)有效性()有效性(efficiency),指软件系统的时间和空间),指软件系统的时间和空间 效率。这是一个应当努力追求的重要目标。效率。这是一个应当努力追求的重要目标。3)可靠性()可靠性(reliability),是指在给定的时间间隔内,),是指在给定的时间间隔内, 程程序序成成功功运运行行的的概概率率。可可靠靠性性是是衡衡量量软软件件质质量量的的一一 个重要目标。个重要目标。名词解释名词解释4)可可理理解解性性(understandability),指指系系统统具具有有清清晰晰的的结结构构,能能直直接接反反映映问问题题的的需需求求。可可理理解解性性有有助助于于控控制制软软件件

26、系系统统的的复复杂杂性性,并并支支持持软软件件的的维维护护、移移植和重用。植和重用。5)可可维维护护性性(maintainability),是是指指软软件件产产品品交交付付使使用用后后,在在实实现现改改正正潜潜伏伏的的错错误误、改改进进性性能能等等属属性性、适适应应环环境境变变化化等等方方面面工工作作的的难难易易程程度度。由由于于软软件件的的维维护护费费用用在在整整个个软软件件生生存存周周期期中中占占主主要要的的比比重重,因因此此,可可维维护护性性是是软软件件工工程程中中的的一一个个十十分分重重要要的的目目标标。软软件件的的可可理理解解性性和和可可修修改改性性支支持持软软件件的的可可维维护护性

27、。性。名词解释名词解释6)可重用性()可重用性(reusability),是指软部件可以在多),是指软部件可以在多种场合使用的程度。种场合使用的程度。 概念或功能相对独立的一个或一组相关模块概念或功能相对独立的一个或一组相关模块可构可构成一个软部件。软部件应具有清晰的结构和注释、正成一个软部件。软部件应具有清晰的结构和注释、正确的编码和较高的时空效率。可将各种软部件按照某确的编码和较高的时空效率。可将各种软部件按照某种规则放在软部件库中供开发人员选用。种规则放在软部件库中供开发人员选用。 广义地讲,可重用性还应包括应用项目、规广义地讲,可重用性还应包括应用项目、规格说格说明、设计、概念和方法等

28、等的重用。一般来说,重用明、设计、概念和方法等等的重用。一般来说,重用的层次越高,带来的效益越大。的层次越高,带来的效益越大。 可重用性有助于提高软件产品的质量和开发可重用性有助于提高软件产品的质量和开发效率、效率、降低软件开发和维护费用。降低软件开发和维护费用。名词解释名词解释7)可可适适应应性性(adaptability),是是指指软软件件在在不不同同的的系系统约束条件下,使用户需求得到满足的难易程度。统约束条件下,使用户需求得到满足的难易程度。 选选择择广广为为流流行行的的软软硬硬件件支支持持环环境境、采采用用广广为为流流行行的的程程序序设设计计语语言言编编码码、采采用用标标准准的的术术

29、语语和和格格式式书书写写文档可增强软件产品的可适应性。文档可增强软件产品的可适应性。8)可可移移植植性性(portability),是是指指软软件件从从一一个个计计算算机系统或环境移植到另一个上去的难易程度。机系统或环境移植到另一个上去的难易程度。 采采用用通通用用的的运运行行支支持持环环境境和和尽尽量量通通用用的的程程序序设设计计语语言言的的标标准准部部分分可可提提高高可可移移植植性性。而而应应将将依依赖赖于于计计算算机机系系统统的的低低级级(物物理理)特特征征部部分分相相对对独独立立、集集中中起来。可移植性支持软件的可重用性和可适应性。起来。可移植性支持软件的可重用性和可适应性。名词解释名

30、词解释9)可可追追踪踪性性(traceability),是是指指根根据据软软件件需需求求对对软软件件设设计计、程程序序进进行行正正向向追追踪踪,或或根根据据程程序序、软软件件设设计计对对软软件件需需求求进进行行逆逆向向追追踪踪的的能能力力。软软件件开开发发各各阶阶段段的的文文档档和和程程序序的的完完整整性性、一一致致性性、可可理理解性支持软件的可追踪性。解性支持软件的可追踪性。10)可可互互操操作作性性(interoperability),是是指指多多个个软软件件元元素素相相互互通通信信并并协协同同完完成成任任务的能力。务的能力。1.2.4软件工程的原则软件工程的原则1抽抽象象(abstrac

31、tion),抽抽取取各各个个事事物物中中共共同同的的最最基基本本的的特特征征和和行行为为,暂暂时时忽忽略略它它们们之之间间的的差差异异。一一般般采采用用分分层层次次抽抽象象的的方方法法来来控控制制软软件件开开发发过过程程的的复复杂杂性性。抽抽象象使使软软件件的的可可理理解解性性增增强并有利于开发过程的管理。强并有利于开发过程的管理。2信信息息隐隐藏藏(information hiding),将将模模块块内内部部的的信信息息(数数据据和和过过程程)封封装装起起来来。其其他他模模块块只只能能通通过过简简单单的的模模块块接接口口来来调调用用该该模模块块,而而不不能能直直接接访访问问该该模模块块内内部

32、部的的数数据据或或过过程程,即即将将模模块块设设计计成成“黑黑箱箱”。信信息息隐隐藏藏的的原原则则可可使使开开发发人员把注意力集中于更高层次的抽象上。人员把注意力集中于更高层次的抽象上。1.2.4软件工程的原则软件工程的原则4局局部部化化(localization),即即在在一一个个物物理理模模块块内内集集中中逻逻辑辑上上相相互互关关联联的的计计算算资资源源。局局部部化化支支持持信信息息隐隐藏藏,从从而而保保证证模模块块之之间间具具有有松松散散的的耦耦合合、模模块块内内部部有有较较强强的的内内聚聚。这这有有助助于于控控制制每每一个解的复杂性。一个解的复杂性。5一一致致性性(consistenc

33、y),整整个个软软件件系系统统(包包括括程程序序、数数据据和和文文档档)的的各各个个模模块块应应使使用用一一致致的的概概念念、符符号号和和术术语语;程程序序内内部部接接口口应应保保持持一一致致;软软件件与与环环境境的的接接口口应应保保持持一一致致;系系统统规规格格说说明明应应与与系系统统行行为为保保持持一一致致;用用于于形形式式化化规规格格说明的公理系统应保持一致。说明的公理系统应保持一致。1.2.4软件工程的原则软件工程的原则6完完全全性性(completeness),软软件件系系统统不不丢丢失失任任何何重重要要成成分分,完完全全实实现现所所需需的的系系统统功功能能的的程程度度。为为了了保保

34、证证系系统统的的完完全全性性,在在软软件件的的开开发发和和维维护护过过程程中中需需要严格的技术评审。要严格的技术评审。7可可验验证证性性(verifiability),开开发发大大型型软软件件系系统统需需要要对对系系统统逐逐层层分分解解。系系统统分分解解应应遵遵循循易易于于检检查查、测测试、评审的原则,以使系统可验证。试、评审的原则,以使系统可验证。v抽抽象象、信信息息隐隐藏藏、模模块块化化和和局局部部化化的的原原则则支支持持可可理理解解性性、可可修修改改性性、可可靠靠性性等等目目标标,并并可可提提高高软软件件产产品的质量和开发效率;品的质量和开发效率;v一一致致性性、完完全全性性和和可可验验

35、证证性性等等原原则则可可以以帮帮助助软软件件开开发人员去实现一个正确的系统。发人员去实现一个正确的系统。课程名称:软件工程课程名称:软件工程 第第2讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:教学题目:1.3 软件生存周期软件生存周期 1.5 方法、工具及环境方法、工具及环境教学目的:掌握软件生存周期的划分,教学目的:掌握软件生存周期的划分, 了解各个阶段了解各个阶段 的任务;熟悉几种软件开发模的任务;熟悉几种软件开发模型、了解型、了解 CASE工具及环境。工具及环境。教学重点:软件生存周期、软件开发模型。教学重点:软件生存周期、软件开发模型。教学难点:开发模型教学难点:开发模型教

36、教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:看书业:看书1.3软件生存周期软件生存周期软件从定义开始,经过开发、使用和维护,软件从定义开始,经过开发、使用和维护, 直到最终退役的全过程称为软件生存周期。直到最终退役的全过程称为软件生存周期。可将软件生存周期划分为可将软件生存周期划分为3个过程共个过程共9个阶段。个阶段。3个过程是:软件定义过程、软件开发过程、个过程是:软件定义过程、软件开发过程、 软件使用与维护过软件使用与维护过程。程。9个阶段有:可行性研究、需求分析、概要设个阶段有:可行性研究、需求分析、概要设 计、详细设计、实计、详细设计、实现、组装测试、现、组装测试、

37、验收测试、使用与验收测试、使用与维护、退役。维护、退役。 它们之间的关系如图它们之间的关系如图131所示。所示。图1-3-1软件生存周期阶段的划分使用与维护验收测试组装测试实现详细设计概要设计需求分析退役开发过程使用与维护过程定义过程可行性研究1.3.1软件定义软件定义软件定义的基本任务是确定软件系统软件定义的基本任务是确定软件系统的工程需求,也就是要搞清的工程需求,也就是要搞清“做什么做什么”。软件定义过程可通过软件系统的可行软件定义过程可通过软件系统的可行性研究和需求分析两个阶段来完成。性研究和需求分析两个阶段来完成。1可行性研究可行性研究q本阶段的任务是根据用户提出的工程项目的性质、目本

38、阶段的任务是根据用户提出的工程项目的性质、目标和规模,进一步了解用户的要求及现有的环境及条标和规模,进一步了解用户的要求及现有的环境及条件,从技术、经济和社会等多方面研究并论证该项目件,从技术、经济和社会等多方面研究并论证该项目的可行性。即该项目是否值得去解决,是否存在可行的可行性。即该项目是否值得去解决,是否存在可行的解决办法。的解决办法。q此时,系统分析人员应在用户的配合下对用户的要求此时,系统分析人员应在用户的配合下对用户的要求和现有的环境进行深入调查并写出调研报告。进而进和现有的环境进行深入调查并写出调研报告。进而进行可行性论证。可行性论证包括经济可行性、技术可行可行性论证。可行性论证

39、包括经济可行性、技术可行性、操作可行性、法律可行性等。在此基础上还要行性、操作可行性、法律可行性等。在此基础上还要制定初步的项目计划,包括需要的软硬件资源、定义制定初步的项目计划,包括需要的软硬件资源、定义任务、风险分析、成本任务、风险分析、成本/效益分析以及进度安排等。效益分析以及进度安排等。q可行性研究的结果将是使用部门负责人做出是否继续可行性研究的结果将是使用部门负责人做出是否继续进行该项目决定的重要依据。进行该项目决定的重要依据。2需求分析需求分析1)需求分析的任务)需求分析的任务 需需求求分分析析的的任任务务是是确确定定待待开开发发的的软软件件系系统统“做什么做什么”。 具具体体任任

40、务务包包括括确确定定软软件件系系统统的的功功能能需需求求、性性能能需需求求和和运运行行环环境境约约束束,编编制制软软件件需需求求规规格格说说明明书书、软软件件系系统统的的验验收收测测试试准准则和初步的用户手册。则和初步的用户手册。2需求分析需求分析2)需求分析的实现途径)需求分析的实现途径 软软件件系系统统需需求求一一般般由由用用户户提提出出。系系统统分分析析员员和和开开发发人人员员在在需需求求分分析析阶阶段段必必须须与与用用户户反反复复讨讨论论、协协商商,充充分分交交流流信信息息,并并用用某某种种方方法法和和工工具具构构建建软软件件系系统统的的逻逻辑辑模模型型。为为了了使使开开发发方方与与用

41、用户户对对待待开开发发软软件件系系统统达达成成一一致致的的理理解解,必必须须建建立立相相应应的的需需求求文文档档。有有时时对对大大型型、复复杂杂的的软软件件系系统统的的主主要要功功能能、接接口口、人人机机界界面面等等还还要要进进行行模模拟拟或或建建造造原原型型,以以便便向向用用户户和和开开发发方方展展示示待待开开发发软软件件系系统统的的主主要要特特征征。确确定定软软件件需需求求的的过过程程有有时时需需要要反反复复多多次次,最最终终得得到到用用户户和和开发者的确认。开发者的确认。2需求分析需求分析3)需求分析的阶段成果)需求分析的阶段成果 需需求求分分析析阶阶段段的的主主要要成成果果有有软软件件

42、需需求求规规格格说说明明、软软件件验验收收测测试试计计划划和和准准则则、初初步步的的用用户户手手册册等等 。 其其 中中 , 软软 件件 需需 求求 规规 格格 说说 明明 ( Software Requirements Specification,即即SRS),是是一一个个关关键键性性的的文文档档。多多数数场场合合,面面向向开开发发者者的的软软件件需需求求用用需需求求规规格格说说明明语语言言来来描描述述,它它是是软软件件开开发发人人员员进进行行软软件件设设计计的的依依据据;另另一一方方面面,从从某某种种意意义义上上讲讲,SRS又又起起到到与与用用户户签签定定合合同同的的合合同同书书的的作作用

43、用。因因此此,在在SRS中中应应包包括括软软件件系系统统的的全全部部功功能能需需求求、性性能能需需求求、接接口口需需求求、设设计计需需求求、基基本本结结构构、开开发发标标准准和和验验收收准则等等。准则等等。1.3.2软件开发软件开发q软件开发过程由概要设计、详细设计、实现(即编软件开发过程由概要设计、详细设计、实现(即编码与单元测试)、组装测试、验收测试共码与单元测试)、组装测试、验收测试共5个阶段个阶段组成。组成。q其中,概要设计和详细设计统称为设计;编码即编其中,概要设计和详细设计统称为设计;编码即编程;单元测试、组装测试和验收测试统称为测试。程;单元测试、组装测试和验收测试统称为测试。q

44、开发者通常可提出多种设计方案,并对各种方案在开发者通常可提出多种设计方案,并对各种方案在功能、性能、成本、进度等方面进行比较和折衷,功能、性能、成本、进度等方面进行比较和折衷,从中选出一种从中选出一种“最佳方案最佳方案”。q下面将简单地介绍软件开发过程中各阶段的任务,下面将简单地介绍软件开发过程中各阶段的任务,实现的途径和阶段成果。实现的途径和阶段成果。1概要设计概要设计总体设计总体设计q任务:任务: 是是对对需需求求规规格格说说明明中中提提供供的的软软件件系系统统逻逻辑辑模模型型进进行行进进一一步步的的分分解解,从从而而建建立立软软件件系系统统的的总总体体结结构构和和各各子子系系统统之之间间

45、、各各模模块块之之间间的的关关系系,定定义义各各子子系系统统接接口口界界面面和和各各功功能能模模块块的的接接口口,设设计计全全局局数数据据库库或或数数据据结结构构,规规定定设设计计约约束束,制制定定组组装装测测试试计计划划,进进而而给给出出每每个个功功能能模模块块的的功能描述、全局数据定义和外部文件定义等。功能描述、全局数据定义和外部文件定义等。1概要设计概要设计q实现的途径:实现的途径: 选选择择某某种种方方法法和和工工具具。设设计计的的软软件件系系统统应应具具有有良良好好的的总总体体结结构构、尽尽量量降降低低模模块块接接口口的的复复杂杂度度,并并力力争争做做到到各各功功能能模模块块之之间间

46、的的低低耦耦合合度度、而功能模块内部具有较高的内聚度。而功能模块内部具有较高的内聚度。q阶段性成果:阶段性成果: 概要设计说明书、概要设计说明书、 数据库或数据结构说明书、数据库或数据结构说明书、 组装测试计划等文档。组装测试计划等文档。2详细设计详细设计q任务:是将概要设计产生的功能模块进一步细化,任务:是将概要设计产生的功能模块进一步细化,形成可编程的程序模块,然后设计程序模块的内部形成可编程的程序模块,然后设计程序模块的内部细节,包括算法、数据结构以及各程序模块间的接细节,包括算法、数据结构以及各程序模块间的接口信息,并设计模块的单元测试计划。口信息,并设计模块的单元测试计划。q途径:可

47、以采用结构化的设计方法,采用结构化的途径:可以采用结构化的设计方法,采用结构化的程序流程图、程序流程图、NS图、过程设计语言(图、过程设计语言(PDL,Procedure Design Language)等工具进行描述,也)等工具进行描述,也可以采用面向对象的设计方法等等。可以采用面向对象的设计方法等等。q阶段成果:应提供阶段成果:应提供“详细设计规格说明详细设计规格说明”(或称(或称“模块开发卷宗模块开发卷宗”)和单元测试计划等详细设计文档。)和单元测试计划等详细设计文档。 3实现实现编码和单元测试。编码和单元测试。q编编码码的的主主要要任任务务是是根根据据详详细细设设计计规规格格说说明明,

48、用用某某种种选选定定的的程程序序设设计计语语言言把把详详细细设设计计的的结结果果转转化化为为机机器器可可运运行的源程序模块,这是一个编程和调试程序的过程。行的源程序模块,这是一个编程和调试程序的过程。q一一般般来来说说,对对软软件件系系统统所所采采用用的的分分析析方方法法、设设计计方方法法、编编程程方方法法以以及及所所选选用用的的程程序序设设计计语语言言应应尽尽可可能能保保持持一一致。致。q编编码码阶阶段段应应注注意意遵遵循循编编程程标标准准、养养成成良良好好的的编编程程风风格格,以便编写出正确的便于理解、调试和维护的程序模块。以便编写出正确的便于理解、调试和维护的程序模块。3实现实现编码和单

49、元测试。编码和单元测试。q单元测试:每编写出一个程序模块的源程序,调单元测试:每编写出一个程序模块的源程序,调试通过后,即对该模块进行测试,这称为单元测试通过后,即对该模块进行测试,这称为单元测试。试。q实现阶段的成果:实现阶段的成果:按一定规则存在盘上的通过单元测试的各功能模按一定规则存在盘上的通过单元测试的各功能模块的集合块的集合详细的单元测试报告等文档。详细的单元测试报告等文档。4组装测试组装测试组装测试:根据概要设计提供的软件结构、各组装测试:根据概要设计提供的软件结构、各功能模块的说明和组装测试计划,把经过单元功能模块的说明和组装测试计划,把经过单元测试检验的模块按照某种选定的策略逐

50、步进行测试检验的模块按照某种选定的策略逐步进行组装和测试。组装和测试。主要任务:测试系统各模块间的连接是否正确,主要任务:测试系统各模块间的连接是否正确,系统或子系统的正确处理能力、容错能力、输系统或子系统的正确处理能力、容错能力、输入入/输出处理是否达到要求。输出处理是否达到要求。阶段成果:阶段成果: 应是满足概要设计要求、可运行的软件系应是满足概要设计要求、可运行的软件系统统 和源程序清单;和源程序清单; 组装测试报告等文档。组装测试报告等文档。5验收测试验收测试确认测试确认测试q任务:按照验收测试计划和准则对软件系统进任务:按照验收测试计划和准则对软件系统进行测试,看其是否达到了需求规格

51、说明中定义行测试,看其是否达到了需求规格说明中定义的全部功能和性能等方面的需求。的全部功能和性能等方面的需求。q确认测试结束时,应生成验收测试报告、项目确认测试结束时,应生成验收测试报告、项目开发总结报告,并向用户提交源程序清单、最开发总结报告,并向用户提交源程序清单、最终用户手册、操作手册等文档资料。终用户手册、操作手册等文档资料。q最后,由专家、用户负责人、软件开发和管理最后,由专家、用户负责人、软件开发和管理人员组成的软件评审小组要对软件验收测试报人员组成的软件评审小组要对软件验收测试报告、测试结果和软件进行评审,通过后,软件告、测试结果和软件进行评审,通过后,软件产品正式通过验收(即完

52、成了开发合同),可产品正式通过验收(即完成了开发合同),可以交付用户使用了。以交付用户使用了。1.3.3软件的使用与维护软件的使用与维护1软件使用与维护阶段软件使用与维护阶段q任任务务: 通通过过各各种种维维护护活活动动使使软软件件系系统统持持久久地地满满足用户的需求。足用户的需求。q每每项项维维护护活活动动实实质质上上都都是是一一次次压压缩缩和和简简化化了了的的软软件件定定义义和和软软件件开开发发过过程程。都都要要经经历历提提出出维维护护要要求求、分分析析维维护护要要求求、提提出出维维护护方方案案、审审批批维维护护方方案案、确确定定维维护护计计划划、修修改改软软件件设设计计、修修改改程程序序

53、、测测试试程程序序、评评审审、验验收收等等步步骤。骤。1软件使用与维护阶段软件使用与维护阶段q应应当当指指出出,软软件件在在使使用用的的过过程程中中,应应及及时时收收集集被被发发现现的的软软件件错错误误,并并定定期期撰撰写写“软软件件问问题题报报告告”;而而每每一一项项维维护护活活动动都都应应该该准准确确地地记记录录下下来,并作为正式的文档资料保存。来,并作为正式的文档资料保存。q据据统统计计,软软件件维维护护人人员员为为了了分分析析和和理理解解原原软软件件系系统统所所花花费费的的工工作作量量约约占占整整个个维维护护工工作作量量的的60%以以上上。在在软软件件开开发发的的过过程程中中应应重重视

54、视对对软软件件可维护性的支持。可维护性的支持。2 退役退役图1-3-2软件研制与软件测试的层次对应关系可行性研究编码与调试单元测试组装测试验收测试运行与维护需求分析(验收测试计划)概要设计(组装测试计划)详细设计(单元测试计划)1.4软件开发模型软件开发模型q软件开发模型(又称为软件生存周期模型)软件开发模型(又称为软件生存周期模型) 软件项目开发和维护的总体过程思路的框架软件项目开发和维护的总体过程思路的框架。q它它指指出出了了软软件件开开发发过过程程各各阶阶段段之之间间的的关关系系和和顺顺序序,是是软软件件开开发发过过程程的的概概括括。它它为为软软件件开开发发过过程程提提供供原原则则和和方

55、方法法,并并为为软软件件工工程程管管理理提提供供里里程程碑碑和和进进度度表表。因此,软件开发模型也是软件工程的重要内容。因此,软件开发模型也是软件工程的重要内容。1.4软件开发模型软件开发模型q软件开发模型的几种类型:软件开发模型的几种类型:以软件需求完全确定为基础的瀑布模型;以软件需求完全确定为基础的瀑布模型;在开发初期仅给出基本需求的渐进式模型,如原型在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型等;模型、螺旋模型、喷泉模型等;以形式化开发方法为基础的变换模型、基于四代技以形式化开发方法为基础的变换模型、基于四代技术的模型;术的模型;基于知识的智能模型等等。基于知识的

56、智能模型等等。 在实际开发时,应根据项目的特点和现有的条件在实际开发时,应根据项目的特点和现有的条件选取合适的模型,也可以把几种模型组合起来使用选取合适的模型,也可以把几种模型组合起来使用以便充分利用各模型的优点。以便充分利用各模型的优点。1.4.1瀑布模型瀑布模型 瀑布模型(瀑布模型(waterfall model)是由)是由W. Royce于于1970年提出来的。又称为软件生存周期模型。年提出来的。又称为软件生存周期模型。q瀑布模型严格按照软件生存周期各个阶段来进瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,行开发,上一阶段的输出即是下一阶段的输入,并强

57、调每一阶段的严格性。它规定了各阶段的并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。进行评审,通过后才能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。因此,它是一种以文档作为驱动的模型。图1-4-1带反馈的瀑布模型验收测试组装测试实现详细设计概要设计需求分析退役可行性研究使用与维护瀑布模型优点瀑布模型优点 提供了软件开发的基本框架,有利于大型软提供了软件开发的基本框架,有利于大型软件开发过程

58、中人员的组织、管理,有利于件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。在软件工程中占有重要的地位。瀑布模型缺点瀑布模型缺点1)在在软软件件开开发发的的初初期期阶阶段段就就要要求求做做出出正正确确、全全面面、完完整整的的需需求求分分析析对对许许多多应应用用软软件件来来说说是极其困难的。是极其困难的。2)在在需需求求分分析析阶阶段段,当当需需求求确确定定后后,无无法法及及时验证需求是否正确、完整。时验证需求是否正确、完整。3)作为整体开发的瀑布模型,由于不支持产)作为整体开发的瀑布模型,由于不支持产品的

59、演化,缺乏灵活性,对开发过程中很难品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。露出来,从而使软件产品难以维护。瀑布模型适应场合瀑布模型适应场合 瀑瀑布布模模型型一一般般适适用用于于功功能能、性性能能明明确确、完完整整、无无重重大大变变化化的的软软件件系系统统的的开开发发。例例如如操操作作系系统统、编编译译系系统统、数数据据库库管管理理系系统统等等系统软件的开发。应用有一定的局限性。系统软件的开发。应用有一定的局限性。1.4.2原型模型原型模型q原原型型模模型型(prototyping mode

60、l)的的基基本本框框架架是是软软件件开开发发人人员员根根据据用用户户提提出出的的软软件件基基本本需需求求快快速速开开发发一一个个原原型型,以以便便向向用用户户展展示示软软件件系系统统应应有有的的部部分分或或全全部部功功能能和和性性能能,在在征征求求用用户户对对原原型型的的评评价价意意见见后后,进进一一步步使使需需求求精精确确化化、完完全全化化,并并据据此此改改进进、完完善善原原型型,如如此此迭迭代代,直直到到软软件件开开发发人人员员和和用用户户都都确确认认软软件件系系统统的的需需求求并并达达成成一一致致的的理理解解为为止止。软软件件需需求求确确定定后后,便便可可进进行行设设计计,编编码码、测测

61、试试等等以以后后的的各各个个开开发发步步骤。骤。需求的采集和细化快速设计建造原型用户评价原型对原型加工(需求精确化)产品样品(需求确认)开始停止图1-4-2使用原型确定需求的过程快速原型的开发途径有三种:快速原型的开发途径有三种:1)仅模拟软件系统的人机界面和人机交互方式。)仅模拟软件系统的人机界面和人机交互方式。2)开开发发一一个个工工作作模模型型,实实现现软软件件系系统统中中重重要要的的或或容容易产生误解的功能。易产生误解的功能。3)利利用用一一个个或或几几个个类类似似的的正正在在运运行行的的软软件件向向用用户户展展示软件需求中的部分或全部功能。示软件需求中的部分或全部功能。 总之,建造原

62、型应尽量采用相应的软件总之,建造原型应尽量采用相应的软件工具和环境,并尽量采用软件重用技术,在运行效工具和环境,并尽量采用软件重用技术,在运行效率方面可做出让步,以便尽快提供。同时,原型应率方面可做出让步,以便尽快提供。同时,原型应充分展示软件系统的可见部分,如人机界面、数据充分展示软件系统的可见部分,如人机界面、数据的输入方式和输出格式等。的输入方式和输出格式等。原型模型的适应场合原型模型的适应场合q原型模型比瀑布模型更符合人们认识事物原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。的过程和规律,是一种较实用的开发框架。q它适合于那些不能预先确切定义需求的软它适合于

63、那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。不能很好交流或通信有困难的情况。1.4.3螺旋模型螺旋模型q螺螺旋旋模模型型(spiral model)是是B. Boehm于于1988年年提提出出的的。它它综综合合了了瀑瀑布布模模型型和和原原型型模模型型的的优优点点,即即将将两两者者结结合合,并并加加入入了了风风险险分分析析机机制制。螺螺旋旋模模型型的的基基本本框框架架如如图图143所示。所示。 生命周期计划需求计划风险分析原型1原型2原型

64、3可操作的原型建模模拟评价操作概念软件需求需求确认开发计划组装测试计划风险分析风险分析风险分析软件产品设计设计验证与确认详细设计编码单元测试组装测试验收测试实现成本顺时针为进展方向计划:明确目标、约束条件选择方案风险分析构造原型工程实现用户评价;阶段评审图1-4-3螺旋模型验收测试计划需求精化计划需求评价评审决策实现计划1.4.3螺旋模型螺旋模型q螺螺旋旋模模型型的的每每一一个个周周期期都都包包括括计计划划(需需求求定定义义)、风险分析、工程实现和评审风险分析、工程实现和评审4个阶段。个阶段。1计划(需求定义)计划(需求定义) 第第一一周周期期开开始始利利用用需需求求分分析析技技术术理理解解应

65、应用用领领域域,获获取取初初步步用用户户需需求求,制制定定项项目目开开发发计计划划(即即整整个个软软件件生生命命周周期期计计划划)和和需需求求分分析析计计划划。经经过过一一个个周周期期后后,根根据据用用户户和和开开发发人人员员对对上上一一周周期期工工作作成成果果评评价价和和评评审审,修修改改、完完善善需需求求,明明确确下下一一周周期期软软件件开开发发的的目目标标、约约束束条条件件,并并据据此此制制定定新新一一轮轮的的软软件件开开发发计划。计划。1.4.3螺旋模型螺旋模型2风险分析风险分析 根根据据本本轮轮制制定定的的开开发发计计划划,进进行行风风险险分分析析,评评估估可可选选方方案案,并并构构

66、造造原原型型进进一一步步分分析析风风险险,给给出出消消除除或或减减少少风风险险的的途途径径。此此时时根根据据风风险险分分析析的的结结果果决决策策项项目目是是否否继继续续。所所以以,螺螺旋旋模模型型是是一一个个风风险险驱驱动动的模型。的模型。3工程实现工程实现 利利用用构构造造的的原原型型进进行行需需求求建建模模或或进进行行系系统统模模拟拟,直至实现软件系统。,直至实现软件系统。1.4.3螺旋模型螺旋模型4用户评价与阶段评审用户评价与阶段评审 将将原原型型提提交交用用户户使使用用并并征征求求改改进进意意见见。开开发发人人员员应应在在用用户户的的密密切切配配合合下下进进一一步步完完善善用用户户需需

67、求求,直直到到用用户户认认为为原原型型可可满满足足需需求求,或或对对软软件件产产品品设设计进行评价或确认等。计进行评价或确认等。 螺螺旋旋模模型型从从第第一一个个周周期期的的计计划划开开始始,一一个个周周期期、一一个个周周期期地地不不断断迭迭代代,直直到到整整个个软软件件系系统统开开发发完完成。成。螺旋模型的优点螺旋模型的优点支持用户需求的动态变化。这就要求构造的原型的总支持用户需求的动态变化。这就要求构造的原型的总体结构、算法、程序、测试方案应具有良好的可扩充体结构、算法、程序、测试方案应具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维性和可修改性。也支持软件系统的可维护性,每

68、次维护过程只是沿螺旋模型继续多走一两个周期。护过程只是沿螺旋模型继续多走一两个周期。原型可看作形式的可执行的需求规格说明,易于为用原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。并为用户参与所有关键决策提供了方便。螺旋模型特别强调原型的可扩充性和可修改性,原型螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。的适应能力。螺旋模型为项目管理人员及时调整管理决策提供了方螺旋模

69、型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。便,进而可降低开发风险。螺旋模型的缺点和适应场合螺旋模型的缺点和适应场合缺点:缺点:如如果果每每次次迭迭代代的的效效率率不不高高,致致使使迭迭代代次次数数过过多多,将会增加成本并推迟提交时间;将会增加成本并推迟提交时间;使使用用该该模模型型需需要要有有相相当当丰丰富富的的风风险险评评估估经经验验和和专门知识,要求开发队伍水平较高。专门知识,要求开发队伍水平较高。适适应应场场合合:支支持持需需求求不不明明确确、特特别别是是大大型型软软件件系系统统的的开开发发,并并支支持持面面向向规规格格说说明明、面面向向过过程程、面面向向对对象象等

70、等多多种种软软件件开开发发方方法法,是是一一种种具具有有广广阔前景的模型。阔前景的模型。1.4.4喷泉模型喷泉模型 喷喷泉泉模模型型是是近近几几年年提提出出来来的的软软件件生生存存周周期期模模型型。它它是是以以面面向向对对象象的的软软件件开开发发方方法法为为基基础础,以以用用户户需需求求为为动动力力,以以对对象象来来驱驱动动的模型。的模型。维护测试实现设计分析演化图1-4-4喷泉模型喷泉模型的特点喷泉模型的特点1软件系统可维护性较好;软件系统可维护性较好;2各各阶阶段段相相互互重重叠叠,表表明明了了面面向向对对象象开开发发方方法法各阶段间的交叉和无缝过渡;各阶段间的交叉和无缝过渡; 3整整个个

71、模模型型是是一一个个迭迭代代的的过过程程,包包括括一一个个阶阶段段内部的迭代和跨阶段的迭代;内部的迭代和跨阶段的迭代;4模模型型具具有有增增量量开开发发特特性性,即即能能做做到到分分析析一一点点、设设计计一一点点、实实现现一一点点,测测试试一一点点,使使相相关关功功能能随之加入到演化的系统中。随之加入到演化的系统中。5模模型型是是对对象象驱驱动动的的,对对象象是是各各阶阶段段活活动动的的主主体,也是项目管理的基本内容。体,也是项目管理的基本内容。6该模型很自然地支持软部件的重用。该模型很自然地支持软部件的重用。1.4.5变换模型变换模型变换模型(变换模型(transformational mo

72、del)主要用于软)主要用于软件的形式化开发方法。件的形式化开发方法。在软件需求分析确定以后,便用形式化的规格说明在软件需求分析确定以后,便用形式化的规格说明语言将其描述为语言将其描述为“形式化软件规格说明形式化软件规格说明”,然后对,然后对其进行一系列自动或半自动的变换,最终得到软件其进行一系列自动或半自动的变换,最终得到软件系统的目标程序。系统的目标程序。形式化软件规格说明(M0)模型检查需求分析形式化软件设计说明(M1)(M2)目标程序(M)变换变换变换图1-4-5变换模型1.4.5变换模型变换模型变换模型也应引入迭代机制。即将第一次用变换模变换模型也应引入迭代机制。即将第一次用变换模型

73、得来的目标程序作为型得来的目标程序作为“原型原型”,让用户评价,以,让用户评价,以便使用户需求精确化、完全化,再把精化后的需求便使用户需求精确化、完全化,再把精化后的需求作为输入,第二次用变换模型进行变换,等等。作为输入,第二次用变换模型进行变换,等等。以形式化开发方法为基础的变换模型需要逻辑、代以形式化开发方法为基础的变换模型需要逻辑、代数等严格的数学理论和诸如形式化的需求规格说明数等严格的数学理论和诸如形式化的需求规格说明语言、程序变换工具、定理证明工具等一整套开发语言、程序变换工具、定理证明工具等一整套开发环境的支持。环境的支持。形式化开发方法提出的比较早,但到目前为止,其形式化开发方法

74、提出的比较早,但到目前为止,其在理论和实践等方面离工程实际应用还有较长一段在理论和实践等方面离工程实际应用还有较长一段距离。距离。1.4.6基于四代技术的模型基于四代技术的模型 1981年年R. Ross提出了第四代编程语言(即提出了第四代编程语言(即4GL),),它是一种面向问题而非面向过程的语言。它是一种面向问题而非面向过程的语言。四代技术(四代技术(4GT)是以第四代语言()是以第四代语言(4GL)为核心)为核心的软件开发技术。基于四代技术的模型是指用的软件开发技术。基于四代技术的模型是指用4GT工具将开发者做出的软件规格说明自动转换成程序工具将开发者做出的软件规格说明自动转换成程序代码

75、。代码。目前,支持目前,支持4GT的软件开发工具已经有了一些,如的软件开发工具已经有了一些,如屏幕生成器、报表生成器、数据库查询语言、代码屏幕生成器、报表生成器、数据库查询语言、代码生成系统等。生成系统等。图图1-4-6基于四代技术的模型基于四代技术的模型收集需求设计策略4GL实现测试维护1.4.7基于知识的智能模型基于知识的智能模型它可综合几个模型的特点,并与支持分析、设计、它可综合几个模型的特点,并与支持分析、设计、测试、维护等的应用领域的基于规则的专家系统相测试、维护等的应用领域的基于规则的专家系统相结合,构成了应用领域的开发系统。结合,构成了应用领域的开发系统。用户概念需求分析设计编码

76、测试维护分析专家系统设计专家系统测试专家系统维护专家系统图1-4-7基于知识的智能模型1.5软件开发方法、工具及环境软件开发方法、工具及环境1.5.1软件开发方法软件开发方法软件开发方法是一种使用早已定义好的技术集及符号表示组软件开发方法是一种使用早已定义好的技术集及符号表示组织软件生产过程的方法。工程实用的软件开发方法是达到软织软件生产过程的方法。工程实用的软件开发方法是达到软件工程目标和克服软件危机的主要途径。件工程目标和克服软件危机的主要途径。其中,具有代表性的有结构化方法(包括面向数据流的开发其中,具有代表性的有结构化方法(包括面向数据流的开发方法、面向数据的开发方法等)、面向对象的开

77、发方法、形方法、面向数据的开发方法等)、面向对象的开发方法、形式化开发方法、维也纳开发方法(式化开发方法、维也纳开发方法(VDM,Vienna Development Method)、适于实时事务处理系统的有限状)、适于实时事务处理系统的有限状态机方法(态机方法(FSMM,Finite State Machine Method)、适于并)、适于并发软件系统的发软件系统的Petri网方法等等。网方法等等。1.5.2软件开发工具与环境软件开发工具与环境软件开发的工具软件:支持软件项目的开发、管理、软件开发的工具软件:支持软件项目的开发、管理、维护活动的软件维护活动的软件 例如,项目管理工具、需求分

78、析工具、设计工例如,项目管理工具、需求分析工具、设计工具、编码工具、测试工具、维护工具等等。具、编码工具、测试工具、维护工具等等。随着软件开发工具数量的不断增加,为了便于使用随着软件开发工具数量的不断增加,为了便于使用和管理,就将各种工具简单地组合起来构成和管理,就将各种工具简单地组合起来构成“工具工具箱箱”。人们将工具按照统一的数据结构、标准的程序界面人们将工具按照统一的数据结构、标准的程序界面集成,从而构成了完整的软件开发环境。集成,从而构成了完整的软件开发环境。 这种集成的软件开发环境能够有效地支持软件生这种集成的软件开发环境能够有效地支持软件生存周期所有阶段的活动,而且不仅支持技术工作

79、,存周期所有阶段的活动,而且不仅支持技术工作,还支持各种管理工作,从而可高效、高质量地进行还支持各种管理工作,从而可高效、高质量地进行软件开发与维护。软件开发与维护。1.5.3计算机辅助软件工程计算机辅助软件工程在软件工程活动中,人们按照软件工程的原则在软件工程活动中,人们按照软件工程的原则和方法,利用计算机及其集成的软件开发环境,和方法,利用计算机及其集成的软件开发环境,辅助软件项目的开发、维护及管理的过程,称辅助软件项目的开发、维护及管理的过程,称为计算机辅助软件工程(即为计算机辅助软件工程(即CASE,ComputerAided Software Engineering)。)。CASE工

80、具和环境的核心是软件工程信息库。这工具和环境的核心是软件工程信息库。这些工具和环境应遵循统一的标准,在操作系统、些工具和环境应遵循统一的标准,在操作系统、网络和数据库的支持下工作,以便使开发者们网络和数据库的支持下工作,以便使开发者们方便地相互通信并协同工作。方便地相互通信并协同工作。CASE工具按功能可划分为九大类工具按功能可划分为九大类支支撑撑类类工工具具(如如操操作作系系统统、数数据据库库管管理理工工具具、质质量量保证工具、软件配置管理工具、文档工具等);保证工具、软件配置管理工具、文档工具等);事务系统规划类(如事务系统规划工具);事务系统规划类(如事务系统规划工具);项项目目管管理理

81、类类(如如项项目目计计划划工工具具、需需求求追追踪踪工工具具、度度量和管理工具等);量和管理工具等);分分析析和和设设计计类类(如如结结构构化化分分析析/结结构构化化设设计计即即SA/SD工工具具、界界面面设设计计工工具具、原原型型/模模拟拟即即PRO/SIM工工具具等等);程程序序设设计计与与编编码码类类(如如各各种种编编辑辑器器、调调试试器器、编编译译器、四代语言、面向对象语言工具等);器、四代语言、面向对象语言工具等);CASE工具按功能可划分为九大类工具按功能可划分为九大类原型建造类(如航空等某些领域的原型工具);原型建造类(如航空等某些领域的原型工具);测测试试类类(测测试试数数据据

82、获获取取工工具具、程程序序静静态态或或动动态态测测量量工具、测试管理工具等);工具、测试管理工具等);维维护护类类(如如从从程程序序到到规规格格说说明明的的逆逆向向工工程程工工具具、代代码的重构和分析工具等);码的重构和分析工具等);框框架架类类(指指支支持持数数据据库库管管理理、配配置置管管理理和和CASE工工具具集成的工具等)。集成的工具等)。qCASE工工具具和和环环境境的的进进一一步步开开发发和和使使用用,已已经经成成为为软软件工程的重要研究课题。件工程的重要研究课题。习题思考题习题思考题 1.3 什么是软件工程?构成软件工程的要素是什么?什么是软件工程?构成软件工程的要素是什么? 1

83、.4 软件工程的软件工程的7条原理都是什么?条原理都是什么? 1.5 软件工程的目标是什么?软件工程的目标是什么? 1.7 软软件件工工程程的的7条条原原则则是是什什么么?说说明明这这些些原原则则的的作作 用。用。 1.8 软软件件生生存存周周期期由由哪哪几几个个过过程程组组成成?每每个个过过程程分分别别 包括哪几个阶段?包括哪几个阶段? 1.13 软软件件开开发发模模型型、软软件件开开发发方方法法、集集成成的的CASE工工 具与环境在软件工程中各有什么作用?具与环境在软件工程中各有什么作用?课程名称:软件工程课程名称:软件工程 第第3讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第

84、教学题目:第2章章 软件项目管理软件项目管理 2.1 软件度量软件度量 2.2软件项目的估算软件项目的估算 2.2.1软件项软件项目估算方法目估算方法教学目的:了解软件度量的基本概念,掌握面向规模和教学目的:了解软件度量的基本概念,掌握面向规模和 面向功能点度量方法。了解项面向功能点度量方法。了解项目估算方法。目估算方法。教学重点:面向规模和面向功能点的度量方法。教学重点:面向规模和面向功能点的度量方法。教学难点:面向功能点的度量方法教学难点:面向功能点的度量方法教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第2章章 软件项目管理软件项目管理软件项目管理必须从项目的开头

85、介入,并贯穿于整软件项目管理必须从项目的开头介入,并贯穿于整个软件生存周期的全过程。个软件生存周期的全过程。 软件项目管理的范围主要集中于软件项目管理的范围主要集中于3个个P上,即:上,即:People(人员)、(人员)、Problem(问题)和(问题)和Process(过程)。(过程)。软件项目管理的主要任务是:软件项目管理的主要任务是: 根据选定的软件开发过程框架(即软件开发根据选定的软件开发过程框架(即软件开发模型)和对其估算的结果制定软件项目实施计划;模型)和对其估算的结果制定软件项目实施计划;再根据计划对人员进行组织、分工;按照计划的进再根据计划对人员进行组织、分工;按照计划的进度,

86、以及成本管理、风险管理、质量管理的要求,度,以及成本管理、风险管理、质量管理的要求,控制并管理软件开发和维护的活动,最终以最小的控制并管理软件开发和维护的活动,最终以最小的代价完成软件项目规定的全部任务。代价完成软件项目规定的全部任务。第第2章章软件项目管理软件项目管理q软件项目的成本管理、软件质量管理和软件配置管理软件项目的成本管理、软件质量管理和软件配置管理有一定的特殊性和独立性,可单独立项。有一定的特殊性和独立性,可单独立项。其任务分别其任务分别是:是:成本管理成本管理估算软件项目的成本,作为立项和签合估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费同的依

87、据之一,并在软件开发过程中按计划管理经费的使用;的使用;质量管理质量管理制定软件质量保证计划,按照质量评价制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进行评体系控制软件质量要素,对阶段性的软件产品进行评审,对最终软件产品进行确认,确保软件质量;审,对最终软件产品进行确认,确保软件质量;配置管理配置管理制定配置管理计划,对程序、数据、文制定配置管理计划,对程序、数据、文档的各种版本进行管理,确保软件的完整性和一致性。档的各种版本进行管理,确保软件的完整性和一致性。第第2章章软件项目管理软件项目管理q在在制制定定有有效效的的项项目目实实施施计计划划的的过过程程中中,首

88、首先先要要对对项项目目的的工工作作量量、完完成成期期限限等等等等参参考考量量进进行行估估算算。估估算算的的结结果果将将成成为为项项目目计计划划其其他他活活动动的的基基础础,同同时时,为为了了对对软软件件项项目目进进行行科科学学、有有效效的的管管理理,就就必必须须对对软软件件开开发发过过程程的的有有关关特特征征进进行行度度量量,度度量量的的结结果果用用于于软软件件开开发发过过程程的的管管理理与与监控。监控。q本章主要介绍软件度量的概念,软件的规模度本章主要介绍软件度量的概念,软件的规模度量,软件项目的估算,软件的质量度量、复杂量,软件项目的估算,软件的质量度量、复杂性度量、可靠性度量、风险的分析

89、与度量以及性度量、可靠性度量、风险的分析与度量以及软件项目管理过程与步骤等等。软件项目管理过程与步骤等等。第第2章章 软件项目管理软件项目管理 2.1 软件度量软件度量 2.2 软件项目估算软件项目估算 2.3 软件质量度量软件质量度量 2.4 软件复杂性度量软件复杂性度量 2.5 软件可靠性度量软件可靠性度量 2.6 软件开发过程的管软件开发过程的管理理 习题思考题习题思考题2.1软件度量软件度量q对对软软件件工工程程项项目目的的规规模模、成成本本、产产品品质质量量等等属属性性进进行行定定量量的的描描述述,可可以以帮帮助助项项目目管管理理人人员员和和开开发发者者制制定定有有效效的的项项目目计

90、计划划,监监控控项项目目的的风风险险、进进度度和和阶阶段段产产品品的的质质量量,并并为为调调整整过过程程中中活活动动和和做做出出重重要要决决策策提提供供可可靠靠的的依依据据。下下面面介介绍绍软软件件度度量量的的基基本本概概念念,并介绍软件的规模度量和功能度量。并介绍软件的规模度量和功能度量。2.1.1 软件度量的基本概念软件度量的基本概念1测量、度量、估算和指标测量、度量、估算和指标 软软件件工工程程项项目目的的定定量量描描述述涉涉及及测测量量、度度量量、估估算和指标等一些基本概念。算和指标等一些基本概念。1)测量()测量(measure):对产品或过程的某):对产品或过程的某个属性的范围、数

91、量、维度、容量或大个属性的范围、数量、维度、容量或大小提供一个定量的指示。小提供一个定量的指示。2)度度量量(metric):对对系系统统、部部件件或或过过程程的的某某一一特特性性所所具具有有的的程程度度进进行行的的量量化化测测量。如软件质量度量等。量。如软件质量度量等。3)估估算算(estimation):对对软软件件产产品品、过过程程、资资源源等等使使用用历历史史资资料料或或经经验验公公式式等等进进行行预预测测。如如工工作作量量、成成本本、完完成成期期限限等等。估估算算一一般般用用于于立立项项、签签订订合合同同、制制定工作计划等。定工作计划等。4)指标()指标(guideline)指标指标

92、是一个度量或度量的组合,它可对软件产是一个度量或度量的组合,它可对软件产 品、过程或资源提供更深入的理解。品、过程或资源提供更深入的理解。 如如有有4个个小小组组共共同同完完成成一一个个软软件件项项目目,每每一一个个小小组组都都必必须须采采用用自自行行选选择择的的评评审审类类型型进进行行技技术术评评审审。管管理理者者检检查查“每每小小时时每每人人所所发发现现的的错错误误数数”这这一一度度量量结结果果时时发发现现:采采用用正正式式技技术术评评审审方方法法的的两两个个小小组组的的该该度度量量值值要要比比另另外外两两个个小小组组高高出出40%。假假设设4个个小小组组的的其其他他参参数数都都相相同同,

93、这这就就给给管管理理者者提提供供了了一一个个指指标标:正正式式技技术术评评审审方方法法比比其其他他技技术术评评审审方方法法更更有有效效率率。于于是是,管管理理者者可可决决定定建建议议所所有有小小组组都都采采用用更加正式的技术评审方法。更加正式的技术评审方法。2软件项目管理的对象及其属性软件项目管理的对象及其属性q软件项目管理的对象主要包括产品、过程和资源等。软件项目管理的对象主要包括产品、过程和资源等。产产品品(product)是是指指软软件件开开发发过过程程得得到到的的文文档档和和程程序序,如如:需需求求规规格格说说明明、设设计计规规格格说说明明、源源代代码码、测测试报告等;试报告等;过过程

94、程(process)是是指指与与软软件件项项目目有有关关的的活活动动,如如软软件项目计划、开发活动、维护活动、管理活动等;件项目计划、开发活动、维护活动、管理活动等;资资源源(resource)是是指指进进行行软软件件项项目目所所需需要要的的各各种种支支持,如人力、经费、方法、工具、软硬件环境等。持,如人力、经费、方法、工具、软硬件环境等。 要要对对软软件件项项目目管管理理的的对对象象进进行行有有效效的的管管理理与与控控制制,就就必必须须对对这这些些对对象象的的属属性性进进行行测测量量、度度量量与与估估算算。一一般般来来说说,产产品品、过过程程、资资源源等等对对象象都都具具有有内内部属性和外部

95、属性。部属性和外部属性。对象的属性对象的属性内部属性是指对象本身的属性,如软件内部属性是指对象本身的属性,如软件产品的代码长度、模块化的程度、复杂产品的代码长度、模块化的程度、复杂性等。性等。对象的外部属性体现了对象与环境的关对象的外部属性体现了对象与环境的关系,如软件的可靠性、可维护性、可移系,如软件的可靠性、可维护性、可移植性、成本、人员的生产率等。对象的植性、成本、人员的生产率等。对象的部分属性如表部分属性如表21所示。所示。表表2-1软件工程的产品、过程、资源的属性软件工程的产品、过程、资源的属性产产品品过过程程资资源源内内部部属属性性程序代码行长度;程序代码行长度;程序功能;程序功能

96、;模块化;模块化;控制流结构;控制流结构;重用性;重用性;模块耦合度与内聚度。模块耦合度与内聚度。工作量;工作量;计划及进度;计划及进度;事件。事件。人员;人员;方法;方法;工具;工具;环境;环境;经验。经验。外外部部属属性性软件的可靠性;软件的可靠性;软件的可理解性;软件的可理解性;软件的有效性;软件的有效性;软件的可用性;软件的可用性;软件的可维护性;软件的可维护性;软件的可移植性。软件的可移植性。成本;成本;可控制性;可控制性;可观察性;可观察性;稳定性。稳定性。成本;成本;生产率;生产率;时间。时间。对象的属性对象的属性q项目管理员和用户都十分关心产品、过程、项目管理员和用户都十分关心

97、产品、过程、资源的外部属性,于是可将外部属性看成是资源的外部属性,于是可将外部属性看成是面向管理员和用户的属性。但在软件开发的面向管理员和用户的属性。但在软件开发的过程中,软件的外部属性一般是很难度量和过程中,软件的外部属性一般是很难度量和控制的。这些外部属性是由软件的内部属性控制的。这些外部属性是由软件的内部属性所决定的,因此,可以通过研究内部属性与所决定的,因此,可以通过研究内部属性与外部属性之间的关系来解决外部属性的度量外部属性之间的关系来解决外部属性的度量问题,进而逐步建立起了软件工程度量系统。问题,进而逐步建立起了软件工程度量系统。3软件度量的分类软件度量的分类可分为直接度量和间接度

98、量两类:可分为直接度量和间接度量两类: 1)直直接接度度量量。即即对对不不依依赖赖于于其其他他属属性性的的简简单单属属性性的的测测量量。如如软软件件的的模模块块数数、程程序序的的代码行数、操作符的个数,工作量、成本等。代码行数、操作符的个数,工作量、成本等。 2)间间接接度度量量。即即对对涉涉及及若若干干个个其其他他属属性性的的软软件件要要素素、准准则则或或属属性性的的度度量量。因因为为它它们们必必须须通通过过建建立立一一定定的的度度量量方方法法或或模模型型才才能能间间接接推推断断而而获获得得。如如软软件件的的功功能能性性、复复杂杂性性、可可靠靠性、可维护性等等。性、可维护性等等。 软件度量系

99、统还可进一步划分为两个侧软件度量系统还可进一步划分为两个侧面。它们之间的关系如图面。它们之间的关系如图211所示。所示。 图图211 两侧面间关系两侧面间关系面向规模的度量面向规模的度量面向功能的度量面向功能的度量面向人的度量面向人的度量生产率度量生产率度量质量度量质量度量技术度量技术度量2.1.2面向规模的度量面向规模的度量面面向向规规模模的的度度量量是是以以软软件件的的代代码码行行(LOC,Line of Code)数数为为基基础础的的直直接接度度量量。一一般般的的软软件件开开发发组组织织对对开开发发过过的的每每个个软软件件项项目目都都有有如如代代码码行行、工工作作量量、成成本本、错错误误

100、、人人数数、文文档档页页数数等等的的统统计计记记录录。利利用用代代码码行行数数可可以以度度量量软软件件规规模模、生生产产率率、平平均均成成本本、出出错错率率、文文档档率率等等参参考量。考量。设设:L表表示示软软件件的的代代码码行行数数,单单位位为为KLOC(千千行行代代码码)或或LOC;E表表示示开开发发软软件件所所需需工工作作量量,单单位位为为人人月月(PM)或或人人年年(PY);S表表示示软软件件成成本本,单单位位为为美美元元或或元元;N表表示示错错误误个个数数;Pd表表示示软软件件文文档档页页数数;M表表示示开开发发所所用用的的人人数数。则有:则有:1软软件件开开发发的的生生产产率率P(

101、即即平平均均每每人人月月开开发发的的代代码码行行数数,以以LOC/PM为单位)为:为单位)为: P = L / E (21) 2开开发发每每行行代代码码的的平平均均成成本本C(以以美美元元/LOC或或元元/LOC为单位)为:为单位)为: C = S / L (22) 3代代码码出出错错率率EQR(即即每每千千行行代代码码的的平平均均错错误误数,以个数,以个/KLOC为单位)为:为单位)为: EQR = N / L (23) 4软软件件的的文文档档率率D(即即平平均均每每千千行行代代码码的的文文档档页页数,以页数,以页/KLOC为单位)为:为单位)为: D = Pd / L(24)【例例2.1】

102、 已已知知有有一一个个国国外外典典型型的的软软件件项项目目的的记记录录,开开发发人人员员M=6人人,其其代代码码行行数数=20.2KLOC,工工作作量量E=43PM,成成本本S=314000美美元元,错错误误数数N=64,文文档档页页数数Pd=1050页页。试试计计算算开开发发该该软软件件项项目目的的生生产产率率P、平平均均成成本本C、代代码码出错率出错率EQR和文档率和文档率D。解:根据给出的已知数据,可得:解:根据给出的已知数据,可得: P = L / E =20.2 KLOC /43 PM = 0.47 KLOC / PM = 470 LOC / PM C = S / L = 31400

103、0美元美元 / 20.2 KLOC = 15.54 美元美元 / LOC EQR = N / L = 64个个 / 20.2KLOC = 3.17 个个 / KLOC D = Pd / L = 1050 页页 / 20.2 KLOC = 51.98 页页 / KLOC基于代码行面向规模的度量方法的基于代码行面向规模的度量方法的优缺点、适用场合优缺点、适用场合优点:简单、直接。优点:简单、直接。缺点:如它依赖于程序设计语言的功能和表达缺点:如它依赖于程序设计语言的功能和表达 等特征、在开发初期很难准确估等特征、在开发初期很难准确估算出算出 代码行数、对设计水平高的软件代码行数、对设计水平高的软件

104、项目项目 产生不利影响。产生不利影响。适用场合:适合于过程式程序设计语言和事后适用场合:适合于过程式程序设计语言和事后 度量。度量。2.1.3面向功能的度量面向功能的度量1简单功能点度量简单功能点度量 1979年年,Albrecht首首先先提提出出了了功功能能点点度度量量方方法法。这这是是一一种种面面向向功功能能的的间间接接度度量量方方法法,即即从从软软件件定定义义的的基基本本功功能能出出发发,来来估估算算软软件件系系统统的的规规模模。因因此此,该该方方法法可可以以在在软软件件开开发发项项目目的的初初期期,在在软软件件定定义义过过程程中中即可预测待开发软件的规模。即可预测待开发软件的规模。1简

105、单功能点度量简单功能点度量功能点功能点FP的度量公式如下:的度量公式如下:FP = CTTCF = CT 0.65 + 0.01F i (25)其中:其中: CT基本功能点。基本功能点。 CT值值按按表表22来来计计算算,它它的的值值为为5个参数加个参数加 权值的总和。权值的总和。14 i=1表表2-2简单功能点度量的基本功能点的计算简单功能点度量的基本功能点的计算测量参数测量参数值值加权因子加权因子加权值加权值简单简单一般一般复杂复杂用户输入数用户输入数346=用户输出数用户输出数457=用户查询数用户查询数346=文件数文件数71015=外部接口数外部接口数5710= 基本功能点基本功能点

106、CT表表22中的中的5个参数的含义个参数的含义1)用户输入数:用户为软件系统提供的输入参数的个)用户输入数:用户为软件系统提供的输入参数的个 数(不包括查询);数(不包括查询);2)用户输出数:软件为用户提供的输出参数(报告、)用户输出数:软件为用户提供的输出参数(报告、 屏屏幕幕帧帧、错错误误信信息息等等)的个数;的个数;3)用户查询数:一次联机输入导致软件以联机输出方)用户查询数:一次联机输入导致软件以联机输出方 式式实实时时产产生生一一个个响响应的个数;应的个数;4)文件数:)文件数: 逻辑主文件的个数;逻辑主文件的个数;5)外部接口数:机器可读的接口(如磁盘或磁带上的)外部接口数:机器

107、可读的接口(如磁盘或磁带上的 数据文件等)的个数。数据文件等)的个数。1简单功能点度量简单功能点度量在在FP度量公式中:度量公式中:TCF技术复杂性调节因子。技术复杂性调节因子。0.65和和0.01经验数据。经验数据。Fi(i=1,2,14)复杂性调节值。复杂性调节值。Fi所代表的因素如表所代表的因素如表23所示,每个所示,每个Fi可根据实可根据实际情况取际情况取0、1、2、3、4、5中的一个值。中的一个值。其中:其中:0没有影响、没有影响、1偶然的、偶然的、2适中、适中、 3普通、普通、4重要、重要、5极重要的极重要的影响。影响。TCF取值范围:取值范围:0.65 1.35。表表2-3Fi取

108、值表取值表i因素因素 Fii因素因素Fi1 12 23 34 45 56 67 7需要可靠的备份和恢复吗需要可靠的备份和恢复吗?需要数据通信吗?需要数据通信吗?有分布式处理的功能吗?有分布式处理的功能吗?性能是关键吗?性能是关键吗?在现存实用的操作环境下在现存实用的操作环境下运行吗?运行吗?需要联机数据入口吗?需要联机数据入口吗?联机数据入口需要用输入联机数据入口需要用输入信息构造复杂的界面或操信息构造复杂的界面或操作吗?作吗? 8 89 910101111121213131414 需要联机更新主文件吗?需要联机更新主文件吗?输入、输出、文件、查询输入、输出、文件、查询复杂吗?复杂吗?内部处理

109、过程复杂吗?内部处理过程复杂吗?要求代码设计可重用吗?要求代码设计可重用吗?设计中包含转换和安装吗设计中包含转换和安装吗?系统设计支持不同组织的系统设计支持不同组织的多次安装吗?多次安装吗?系统设计有利于用户的修系统设计有利于用户的修改、使用吗改、使用吗? 2功能点度量功能点度量简单功能点度量方法没有直接考虑软件本身的算法简单功能点度量方法没有直接考虑软件本身的算法的复杂性问题。所以它仅适用于度量算法简单的事的复杂性问题。所以它仅适用于度量算法简单的事务处理等系统。务处理等系统。1986年年Jones对简单功能点度量进行了推广,在计对简单功能点度量进行了推广,在计算软件系统的基本功能点算软件系

110、统的基本功能点CT时,引入了算法复杂性时,引入了算法复杂性因素,即使用表因素,即使用表24计算计算CT 。我们称这种推广的度。我们称这种推广的度量方法为功能点度量。量方法为功能点度量。这两种方法对一般的事务处理系统等算法简单的软这两种方法对一般的事务处理系统等算法简单的软件系统计算出来的件系统计算出来的FP值基本相同,但对于较复杂的值基本相同,但对于较复杂的软件系统,功能点度量方法比简单功能点度量方法软件系统,功能点度量方法比简单功能点度量方法计算出来的计算出来的FP值要高值要高20%35%。表表2-4推广的功能点度量的基本功能点的计算推广的功能点度量的基本功能点的计算测量参数测量参数值值权值

111、权值加权值加权值用户输入数用户输入数4=用户输出数用户输出数5=用户查询数用户查询数4=文件数文件数7=外部接口数外部接口数7=复杂算法数复杂算法数3=基本功能点基本功能点CT用功能点计算软件项目的有关参考量:用功能点计算软件项目的有关参考量:1)生产率)生产率P(平均每人月开发的功能点数,以功(平均每人月开发的功能点数,以功 能点能点 / PM为单位):为单位): P = FP / E (26)2)平均成本)平均成本C(以美元(以美元/功能点或元功能点或元/功能点为单功能点为单 位):位): C = S / FP (27)用功能点计算软件项目的有关参考量:用功能点计算软件项目的有关参考量:3

112、)代码出错率)代码出错率EQR(即每功能点的平均错误(即每功能点的平均错误 数,以个数,以个/功能点为单位)为:功能点为单位)为: EQR = N / FP (28) 4)软件的文档率)软件的文档率D(即平均每功能点的文档(即平均每功能点的文档 页数,以页页数,以页/功能点为单位)为:功能点为单位)为: D = Pd / FP(29)3功能点度量方法的优缺点功能点度量方法的优缺点优点:优点: 可可用用于于软软件件项项目目开开发发的的初初期期阶阶段段的的项项目目估估 算算。因因为为在在可可行行性性研研究究和和需需求求分分析析阶阶段已段已 能基本确定输入、输出等各个参考量;能基本确定输入、输出等各

113、个参考量; 与与程程序序设设计计语语言言无无关关。适适合合于于过过程程或或非非过过 程式语言。程式语言。缺点:缺点: 某些参考量的收集有一定困难;某些参考量的收集有一定困难; 度量值的主观因素较多,如度量值的主观因素较多,如Fi取值;取值; 功能点功能点FP本身没有直观的物理意义。本身没有直观的物理意义。4软件的代码行与功能点的关系软件的代码行与功能点的关系软件的功能点数和选用的程序设计语言软件的功能点数和选用的程序设计语言无关,但对于同一个软件(功能点数已无关,但对于同一个软件(功能点数已定),如用不同的程序设计语言来实现,定),如用不同的程序设计语言来实现,所得到的软件的代码行数可能会有较

114、大所得到的软件的代码行数可能会有较大差别。差别。Albrecht等人通过多个软件统计出等人通过多个软件统计出了用不同程序设计语言实现每个功能点了用不同程序设计语言实现每个功能点所需代码行数,即计算出各语言的所需代码行数,即计算出各语言的LOC/FP的平均值,如表的平均值,如表25所示。所示。表表2-5部分程序设计语言部分程序设计语言LOC/FP平均值的比较平均值的比较程序设计语言程序设计语言 LOC/FP程序设计语言程序设计语言LOC/FP汇编语言汇编语言C语言语言COBOLFORTRANPascal32012810510590Ada面向对象语言面向对象语言第四代语言(第四代语言(4GL)代码

115、生成器代码生成器图形语言(图标)图形语言(图标)7030201542.2软件项目估算软件项目估算2.2.1 软件项目的估算方法软件项目的估算方法常用的软件项目的估算方法主要有以下常用的软件项目的估算方法主要有以下4种:种:1自顶向下的估算方法自顶向下的估算方法基基本本思思想想:首首先先根根据据已已完完成成项项目目的的总总成成本本或或总总工工作作量量来来推推算算待待开开发发软软件件的的总总成成本本或或总总工工作作量量,然然后后再再按按比比例例将将其其分分配配到到各各开开发发任任务务中中去去。即即从整体到局部。从整体到局部。优点:估算工作量小、速度快。优点:估算工作量小、速度快。缺缺点点:对对项项

116、目目中中的的特特殊殊困困难难估估计计不不足足,有有可可能能产生遗漏,估算出的值盲目性较大。产生遗漏,估算出的值盲目性较大。2自底向上的估算方法自底向上的估算方法基基本本思思想想是是:把把待待开开发发软软件件细细分分,直直到到每每一一个个子子任任务务或或阶阶段段都都已已经经明明确确所所需需要要的的开开发发工工作作量量或或成成本本,然然后后再再把把它它们们累累加加起起来来,得得到到待待开开发发软件的总工作量或总成本。软件的总工作量或总成本。 需需要要指指出出,在在对对软软件件进进行行细细分分时时,一一种种是是按按照照功功能能将将大大的的软软件件项项目目划划分分为为若若干干个个子子项项目目;另另一一

117、种种是是按按照照软软件件生生命命周周期期分分解解为为各各个个阶阶段段。当然,也可以两者同时进行。当然,也可以两者同时进行。优点:计算各个部分的准确性较高。优点:计算各个部分的准确性较高。缺缺点点:缺缺少少各各个个子子任任务务之之间间相相互互联联系系的的工工作作量量和和系系统统工工作作量量(如如项项目目管管理理、配配置置管管理理、质质量量管管理理),估估算算值值往往往往偏偏低低,必必须须用用其其他他方方法法进进行校正。行校正。3差别估算法差别估算法基基本本思思想想:把把待待开开发发的的软软件件项项目目与与过过去去完完成成的的软软件件项项目目进进行行比比较较,从从各各子子任任务务中中区区分分出出类

118、类似似的的和和不不同同的的部部分分。类类似似的的部部分分按按已已知知的的实实际际量量计计算算,不不同同的的部部分分则则采采用用某某种种方方法法进进行行估估算算。差差别别估估算算法综合了以上两种方法的优点。法综合了以上两种方法的优点。优点:估算的准确程度高。优点:估算的准确程度高。缺点:不容易划分相似的界限。缺点:不容易划分相似的界限。4根据经验估算公式根据经验估算公式通通过过众众多多实实际际软软件件项项目目的的经经验验,总总结结出出一一些些有有价价值值的的软软件件成成本本和和工工作作量量估估算算的的经经验验模模型型。这这些些模模型型对对于于软软件件项项目目管管理理具具有有一一定定的的指指导导意

119、意义义和验证效果。和验证效果。没没有有一一种种估估算算模模型型能能够够适适合合于于所所有有类类型型的的软软件件项目。因此,对估算的结果应当慎重使用。项目。因此,对估算的结果应当慎重使用。q在在实实际际估估算算时时,几几种种估估算算方方法法可可单单独独、同同时时或或组合使用,以便提高估算的准确程度。组合使用,以便提高估算的准确程度。估算方法举例估算方法举例【例例2.2】Boehm给给出出了了“软软件件库库存存情情况况更更新新”项项目目采采用用自自顶顶向向下下估估算算方方法法的的一一个个参参考考例例子子,由由过过去去已已完完成成的的项项目目的的工工作作量量,估估算算出出该该项项目目的的总总工工作作

120、量量为为53。然然后后将将其其按按比比例例分分配配到到各各个个阶阶段段,如如表表26所所示示。从从中中可可以以看看出出软软件件开开发发各各阶阶段段工工作量的分配情况。作量的分配情况。表表2-6软件项目的自顶向下估算软件项目的自顶向下估算 软件库存情况更新软件库存情况更新开发者:开发者:W.Ward日期:日期:2/8/82阶段阶段任务任务工作量(工作量(1/53)小计小计(1/53)可行性研究与可行性研究与需求分析需求分析软件需求定义软件需求定义56开发计划开发计划1概要设计概要设计概要设计概要设计610初步用户手册初步用户手册3测试计划测试计划1详细设计详细设计详细详细PDL描述描述412数据

121、定义数据定义4测试数据及过程设计测试数据及过程设计2正式的用户手册正式的用户手册2编码编码编码编码616单元测试单元测试10组装与联合测试组装与联合测试编写文档编写文档49组装与联合测试组装与联合测试5总计总计53课程名称:软件工程课程名称:软件工程 第第4讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目:2.2.2 代码行和功能点的估算,代码行和功能点的估算,2.2.3软件软件 项目的经验估算模型项目的经验估算模型.教学目的:熟悉软件项目估算模型。教学目的:熟悉软件项目估算模型。教学重点:软件项目估算模型。教学重点:软件项目估算模型。教学难点:详细教学难点:详细CoCoMo

122、模型模型教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:2.2.2代码行和功能点的估算代码行和功能点的估算q采采用用2.2.1中中介介绍绍的的估估算算方方法法可可以以估估算算出出代代码码行行或或功功能能点点的的乐乐观观值值a、一一般般值值m和和悲悲观观值值b,并并用用如如下下 的的 加加 权权 平平 均均 公公 式式 计计 算算 LOC或或 FP的的 期期 望望 值值(expectation):): X =( a +4 m +b)/ 6 (210) 软件的软件的LOC或或FP的期望值估算出来后,就可的期望值估算出来后,就可以根据已有的标准生产率对成本和工作量等进行以根据已有

123、的标准生产率对成本和工作量等进行估算了。估算了。【例例2.3】对对CAD软件项目进行估算软件项目进行估算解:这里采用自底向上的估算方法。即首先,将解:这里采用自底向上的估算方法。即首先,将CAD项目按功能分解为项目按功能分解为7个子项目,并估算出每个个子项目,并估算出每个子项目子项目LOC的乐观值的乐观值a、一般值、一般值m和悲观值和悲观值b,由此,由此可估算出每个子项目的代码行的期望值可估算出每个子项目的代码行的期望值X。在根据。在根据已知的开发类似子项目的生产率已知的开发类似子项目的生产率P和平均成本和平均成本C即即可估算出每一个子项目的成本和工作量,最后将可估算出每一个子项目的成本和工作

124、量,最后将7个子项目的成本和工作量分别累加,即可估算出个子项目的成本和工作量分别累加,即可估算出软件项目的总成本软件项目的总成本S和总工作量和总工作量E。估算的各种值。估算的各种值如表如表27所示。所示。表表2-7采用加权平均、自底向上方法估算代码行、成本和工作量采用加权平均、自底向上方法估算代码行、成本和工作量子项目子项目a(LOC)m(LOC)b(LOC)X(LOC)每行成本每行成本C(美元美元/LOC)生产率生产率P(LOC/PM)成本成本S(美元美元)工作量工作量(PM)用户接口控制用户接口控制180024002700235014315329007.5二维几何造型二维几何造型41005

125、200750054002022010800024.5三维几何造型三维几何造型48006900870068502022013700031.1数据库管理数据库管理2900350037003350182406030013.9图形显示图形显示40004900640050002220011000025.0外设控制外设控制2000210025002150281406020015.4设计分析设计分析66008500980084001830015120028.0总计总计33500659600145.4估算的组织实施估算的组织实施为了使估算更准确,可以组织几个专家采用无为了使估算更准确,可以组织几个专家采用无记

126、名的方式分别填写表记名的方式分别填写表27,然后组织者计算出,然后组织者计算出这几个表格的平均值;这一过程可反复几次,这几个表格的平均值;这一过程可反复几次,直到获得一个得到多数专家共识的软件规模。直到获得一个得到多数专家共识的软件规模。另外,还可以将每个子项目再按生存周期划分,另外,还可以将每个子项目再按生存周期划分,估算其各阶段的工作量,再累加求出每个子项估算其各阶段的工作量,再累加求出每个子项目的工作量和整个项目的工作量。可将用几种目的工作量和整个项目的工作量。可将用几种方法估算的结果进行比较来验证估算的准确性。方法估算的结果进行比较来验证估算的准确性。2.2.3软件项目的经验估算模型软

127、件项目的经验估算模型1IBM模型模型1977年,年,IBM公司对公司对60个软件项目的个软件项目的 数据利用最小二乘法拟合,得到的经验估算公式:数据利用最小二乘法拟合,得到的经验估算公式: E = 5.2 L0.91 (211) D=4.1L0.36 = 2.136 E0. 3956 (212) S = 0.54 E0.6 (213) DOC = 49 L1.01 (214)其中:其中:E为工作量(为工作量(PM););L为源代码行数(为源代码行数( KLOC );); D为项目持续的时间,以月为单位;为项目持续的时间,以月为单位; S为为人人员员需需要要量量(人人);DOC为为文文档档数数量

128、量(页)。(页)。 1IBM模型模型IBM模型是根据已估算出的源代码行数来估算其模型是根据已估算出的源代码行数来估算其他资源的需要量的,因此该模型是面向他资源的需要量的,因此该模型是面向LOC的静态的静态单变量估算模型。单变量估算模型。还有一些面向还有一些面向FP的静态单变量估算模型。由于这的静态单变量估算模型。由于这些模型的准确度不高,在实际应用中必须对公式些模型的准确度不高,在实际应用中必须对公式中的参数进行调整,以适应目前情况。中的参数进行调整,以适应目前情况。2Putnam模型模型1978年,年,Putnam提出了大型软件项目的动态多提出了大型软件项目的动态多变量估算模型。变量估算模型

129、。该模型以工作量在该模型以工作量在30人年以上的大型软件项目人年以上的大型软件项目的实测数据为依据,推导出了工作量分布曲线,的实测数据为依据,推导出了工作量分布曲线,如图如图221所示。所示。图中的工作量分布曲线的形状与著名的图中的工作量分布曲线的形状与著名的RayleighNorden曲线相似。曲线相似。图图2-2-1软件项目的工作量分布曲线软件项目的工作量分布曲线系统定义系统定义功能设计功能设计规格说明规格说明设计编码设计编码测试和确认测试和确认维护维护管理管理系统定义、需求分析系统定义、需求分析开开 发发运行维护运行维护0开发占总工作量的开发占总工作量的40%维护占总工作量的维护占总工作

130、量的60%总工作量总工作量td时间时间t(年)(年)工作量工作量 (人年)(人年)2Putnam模型模型由上图可得出由上图可得出Putnam估算模型如下:估算模型如下: L = Ck E1/3 td 4/3 (215)其中:其中:L为源代码行数(以为源代码行数(以LOC计);计); E为开发与维护的工作量(以人年计);为开发与维护的工作量(以人年计); td为开发时间(以年计);为开发时间(以年计); C k为为技技术术状状态态常常数数,与与开开发发环环境境有有关关,如如下:下: 2000 较较差差,没没有有方方法法学学的的支支持持,缺缺乏文档乏文档 和和 评评 审审 ,采用批处理方式;采用批

131、处理方式;C k = 8000 一般,有方法学的支持,有适当的文档一般,有方法学的支持,有适当的文档 和和评评审审,采采用交互处理方式;用交互处理方式; 11000 较较好好,有有集集成成化化的的CASE工工具具和和环境。环境。2Putnam模型模型由式(由式(215)可以得出估算工作量的式子:)可以得出估算工作量的式子: E = L3 / (Ck3 td4) (216) 工作量估算出来之后,就可以估算软件项目的成本。工作量估算出来之后,就可以估算软件项目的成本。式中的式中的td是对应于软件交付时的时间,它正好是工是对应于软件交付时的时间,它正好是工作量曲线的峰值,说明此时的工作量最大、参加作

132、量曲线的峰值,说明此时的工作量最大、参加项目的人最多。项目的人最多。图图222给出了软件开发项目每年所需的人年数与给出了软件开发项目每年所需的人年数与开发时间的关系。开发时间的关系。RN分布分布线性分布线性分布0 1 2 3 4 t(年)(年)td人人年年数数年年图图222 概率密度概率密度2Putnam模型模型如图如图222所示,软件开发项目每年所需的人年数所示,软件开发项目每年所需的人年数与开发时间的关系满足与开发时间的关系满足RayleighNorden分布,即分布,即软件项目的工作量分布曲线不是线性的,因此,软件项目的工作量分布曲线不是线性的,因此,参加软件项目的人员就不能一成不变。参

133、加软件项目的人员就不能一成不变。如果按线性方案平均分配人员,则开发的初期一如果按线性方案平均分配人员,则开发的初期一部分人力是多余的,而到了峰值段人力明显不足,部分人力是多余的,而到了峰值段人力明显不足,到了开发的后期再临时增加人力已为时过晚,即到了开发的后期再临时增加人力已为时过晚,即造成了浪费,又拖延了进度。造成了浪费,又拖延了进度。2Putnam模型模型从公式(从公式(216)即)即 E = L3 / (Ck3 td4)还可以看出,还可以看出,开发软件项目的工作量和交货时间开发软件项目的工作量和交货时间td的的4次方成次方成反比,如果条件允许,适当地推迟交货时间反比,如果条件允许,适当地

134、推迟交货时间(即使(即使td增大),可大幅度降低开发工作量。增大),可大幅度降低开发工作量。 例如:如果以例如:如果以1.1td代替式(代替式(216)中的)中的td,即推迟即推迟10%的时间交货,可使开发工作量的时间交货,可使开发工作量E减少减少到原来的到原来的68%。反之,如果以。反之,如果以0.9td代替代替td,即,即提前提前10%的时间交货,会使的时间交货,会使E比原来增加比原来增加52%。因此,工作量与时间的折衷就显得十分重要。因此,工作量与时间的折衷就显得十分重要。图图223给出了各类人员随开发工作的进展在软给出了各类人员随开发工作的进展在软件工程各阶段参与情况的典型曲线。件工程

135、各阶段参与情况的典型曲线。图图2-2-3人力资源的分配人力资源的分配初级技术人员初级技术人员高级技术人员高级技术人员管理人员管理人员验验收收测测试试组组装装测测试试单单元元测测试试编编码码详详细细设设计计概概要要设设计计需需求求分分析析系系统统定定义义人数人数Putnam模型的优缺点模型的优缺点优点:揭示了软件项目的源程序代码长度、优点:揭示了软件项目的源程序代码长度、 软件开发时间和工作量三者软件开发时间和工作量三者之间的关之间的关 系,在理论上有重要意义。系,在理论上有重要意义。缺点:准确程度不高。缺点:准确程度不高。 没有反映软件产品、项目、没有反映软件产品、项目、参加人员、参加人员、

136、软硬件资源等属性。软硬件资源等属性。3CoCoMo模型模型 1981年,年,Boehm提出了提出了CoCoMo模型模型(Constructive Cost Model,即构造性成,即构造性成本模型)。该模型是以静态单变量模型为本模型)。该模型是以静态单变量模型为基础构造出来的。基础构造出来的。CoCoMo模型按其详细程模型按其详细程度分三个层次:度分三个层次: 基本基本CoCoMo模型;模型; 中间中间CoCoMo模型;模型; 详细详细CoCoMo模型。模型。1)基本)基本CoCoMo模型模型其工作量和开发时间的估算公式如下:其工作量和开发时间的估算公式如下: E = a Lb (217) D

137、 = c Ed (218)其中:其中:L 软件代码行的估算值(以软件代码行的估算值(以KLOC计);计);E 工作量(以工作量(以PM计);计);D开发时间(以月计);开发时间(以月计);a、b、c、d经验常数。应根据待开发软件所属的经验常数。应根据待开发软件所属的 类类型型按按照照表表28来来选选取。取。表表2-8a、b、c、d参数值的选取参数值的选取 基本基本CoComo模型主要用于系统开发的初期估算整模型主要用于系统开发的初期估算整 个系统开发和维护的工作量及软件开发所需时间。个系统开发和维护的工作量及软件开发所需时间。软件类型软件类型abcd适应领域适应领域组织型组织型2.41.052

138、.50.38 一般应用程序一般应用程序半独立型半独立型3.01.122.50.35实用程序、实用程序、编译程序等编译程序等嵌入型嵌入型3.61.202.50.32实时控制程序、实时控制程序、操作系统操作系统【例例2.4】用基本用基本CoCoMo模型计算开发模型计算开发CAD软件所软件所需的工作量、开发时间以及需要参加项目的平均人数。需的工作量、开发时间以及需要参加项目的平均人数。解:在解:在【例例2.3】中已估算出中已估算出CAD软件的代码行数为软件的代码行数为33.5KLOC,CAD软件为半独立型、中等规模的软件,软件为半独立型、中等规模的软件,由表由表28可查出可查出a = 3.0,b =

139、 1.12,c = 2.5,d = 0.35。CAD项目的开发工作量为项目的开发工作量为: E = a Lb = 3.033.51.12 = 153 PM开发时间为:开发时间为: D = c Ed =2.5 1530.35 = 14.54(月)(月)CAD项目平均需要的人力为:项目平均需要的人力为: N = E / D = 153 / 14.54 11人人2)中间)中间CoCoMo模型模型中中间间CoCoMo模模型型在在估估算算工工作作量量时时,在在基基本本CoCoMo模模型型的的基基础础上上再再乘乘以以由由15个个因因素素组组成成的的工工作作量量调调节节因子因子EAF,于是有:,于是有: E

140、 = a Lb EAF = a Lb F i (219)其中:其中: L 软件的代码行数(以软件的代码行数(以KLOC计);计); E 工作量(以工作量(以PM计);计); a、b 经验常数,其取值如表经验常数,其取值如表29所示;所示;i=115表表2-9a、b参数的取值参数的取值软件类型软件类型ab组织型组织型3.21.05半独立型半独立型3.01.12嵌入型嵌入型2.81.202)中间)中间CoCoMo模型模型工作量调节因子工作量调节因子EAF与软件的产品的取值属与软件的产品的取值属性、计算机属性、人员属性、项目属性等因性、计算机属性、人员属性、项目属性等因素有关。这素有关。这15个因素

141、个因素Fi(i=115)的值可按)的值可按等级取值,即可分为很低、低、正常、高、等级取值,即可分为很低、低、正常、高、很高、极高,共很高、极高,共6级。正常情况下级。正常情况下Fi=1。Boehm推荐的推荐的Fi值的范围是值的范围是0.701.66,F i的值的值可根据实际情况按表可根据实际情况按表210来选取。来选取。工作量工作量E求出之后,就可以用公式(求出之后,就可以用公式(218)即)即 D = c Ed计算出开发时间计算出开发时间D。表表2-10工作量调节因子工作量调节因子Fi的取值的取值Fi属性含义属性含义很低很低低低正常正常高高很高很高极高极高产品产品属性属性F1软件可靠性(软件

142、可靠性(RELY)0.750.881.001.151.40F2数据库规模(数据库规模(DATA)0.941.001.081.16F3软件复杂性(软件复杂性(CPLX)0.700.851.001.151.301.65计算计算机机属性属性F4执行时间约束(执行时间约束(TIME)1.001.111.301.66F5内存约束(内存约束(STOR)1.001.061.211.56F6开发环境变更率(开发环境变更率(VIRT)0.871.001.151.30F7开发环境响应速度开发环境响应速度(TURN)0.871.001.071.15人员人员属性属性F8分析员的能力(分析员的能力(ACAP)1.461

143、.191.000.860.71F9程序员的能力(程序员的能力(PCAP)1.421.171.000.860.70F10应用领域经验(应用领域经验(AEXP)1.291.131.000.910.82F11开发环境使用经验开发环境使用经验(VEXP)1.211.101.000.90F12程序设计语言经验程序设计语言经验(LEXP)1.141.071.000.95项目项目属性属性F13开发方法的能力(开发方法的能力(MODP)1.241.101.000.910.82F14软件工具的使用(软件工具的使用(TOOL)1.241.101.000.910.83F15开发进度约束(开发进度约束(SCED)1.

144、231.081.001.041.103)详细)详细CoCoMo模型简介模型简介详详细细CoCoMo模模型型的的基基本本工工作作量量(指指EAF=1时时的的工工作作量量)公公式式、开开发发时时间间公公式式与与中中间间CoCoMo模型相同。模型相同。所所不不同同的的是是详详细细CoCoMo模模型型在在计计算算EAF时时针针对对每每个个影影响响因因素素,分分层层次次(系系统统层层、子子系系统统层层、模模块块层层)并并按按软软件件生生存存周周期期分分阶阶段段给给出出工作量因素的分级表。工作量因素的分级表。详详细细CoCoMo模模型型可可以以更更准准确确地地估估算算软软件件项项目的工作量。目的工作量。表

145、表2-11子系统层软件可靠性工作量因素分级表子系统层软件可靠性工作量因素分级表阶段阶段可靠性级别可靠性级别需求分析和需求分析和概要设计概要设计详细详细设计设计编码及编码及单元测试单元测试集成及集成及测试测试综合综合很低很低0.800.800.800.600.75低低0.900.900.900.800.88正常正常1.001.001.001.001.00高高1.101.101.101.301.15很高很高1.301.30 1.301.701.40通信工作量通信工作量由由N个程序员组成的程序员小组的通信数量:个程序员组成的程序员小组的通信数量: C(N)=N(N1)/2设:每两个人之间通信的平均工

146、作量为设:每两个人之间通信的平均工作量为则:则:N人的程序员小组增加的通信工作量为:人的程序员小组增加的通信工作量为: EC = C(N)= N(N1)/ 2 (220)则该小组的总工作量则该小组的总工作量ET为:为: ET = E + EC (221)通信工作量通信工作量如图,由如图,由3人组成的程序员小组的通信数量:人组成的程序员小组的通信数量: C(3)=3(31)/2=3而由而由5人组成的程序员小组的通信数量:人组成的程序员小组的通信数量: C(5) = 5(51)/2 = 10。当程序员小组的人数较多时,通信工作量当程序员小组的人数较多时,通信工作量EC N2 /2与人数的平方成正比

147、,从而使程序员小组的生产与人数的平方成正比,从而使程序员小组的生产率随着人数的增加而迅速下降。率随着人数的增加而迅速下降。由此可见,当在开发的后期发现不能按时交货时,由此可见,当在开发的后期发现不能按时交货时,临时盲目增加程序员将会更加推迟交货的日期。临时盲目增加程序员将会更加推迟交货的日期。通信数通信数图图224 N=3 和和N=5 时的通信数时的通信数课程名称:软件工程课程名称:软件工程 第第5讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目:2.3 软件质量度量,软件质量度量,2.4软件复杂性度量软件复杂性度量教学目的:理解软件质量、复杂性度量方法。教学目的:理解软件质

148、量、复杂性度量方法。教学重点:软件质量、复杂性度量方法。教学重点:软件质量、复杂性度量方法。教学难点:软件质量要素的度量教学难点:软件质量要素的度量教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:2.3软件质量度量软件质量度量软件质量是软件的生命。它作为软件工程的软件质量是软件的生命。它作为软件工程的一部分,贯穿于整个软件生存周期之中。一部分,贯穿于整个软件生存周期之中。生产高质量的软件产品是软件工程的首要目生产高质量的软件产品是软件工程的首要目标。标。由于软件是逻辑产品,软件质量很难直接度由于软件是逻辑产品,软件质量很难直接度量。因此,应当给出软件质量的科学的、实量。因此

149、,应当给出软件质量的科学的、实用的定义,并通过一定的度量模型进行度量,用的定义,并通过一定的度量模型进行度量,以便在整个软件生存周期中对其进行评价和以便在整个软件生存周期中对其进行评价和控制。控制。2.3.1软件质量的定义软件质量的定义1983年年,ANSI/IEEE std729标标准准给给出出了了软软件件质质量的定义如下:量的定义如下: 软软件件质质量量是是软软件件产产品品满满足足规规定定的的和和隐隐含含的与需求能力有关的全部特征和特性,包括:的与需求能力有关的全部特征和特性,包括: 1软件产品满足用户要求的程度;软件产品满足用户要求的程度; 2软软件件拥拥有有所所期期望望的的各各种种属属

150、性性的的组组合合程程度;度; 3用户对软件产品的综合反映程度;用户对软件产品的综合反映程度; 4软软件件在在使使用用过过程程中中满满足足用用户户需需求求的的程程度。度。2.3.2软件质量的度量模型软件质量的度量模型q软件质量与软件的内部特性及其组合有关。要度量软件质量与软件的内部特性及其组合有关。要度量软件质量,就应根据这些内部特性(即软件属性)软件质量,就应根据这些内部特性(即软件属性)建立起软件度量模型,进而构建软件质量度量体系。建立起软件度量模型,进而构建软件质量度量体系。1976年,年,Boehm提出了定量度量软件质量的概念,提出了定量度量软件质量的概念,他给出了软件质量的层次模型,并

151、给出了他给出了软件质量的层次模型,并给出了60个软件个软件质量度量公式;质量度量公式;1978年,年,Walters和和McCall提出了三层次软件质量度提出了三层次软件质量度量模型;量模型;1985年,年,ISO提出了提出了SQM(Software Quality Metric,软件质量度量)工作报告等等。,软件质量度量)工作报告等等。1McCall等人的软件质量度量模型等人的软件质量度量模型qMcCall等人提出了由软件质量要素、评价准等人提出了由软件质量要素、评价准则、定量度量三个层次组成的三层次度量模则、定量度量三个层次组成的三层次度量模型。型。q其中其中:第一层是将对软件质量的度量归

152、结为对直接第一层是将对软件质量的度量归结为对直接影响软件质量的若干个软件质量要素的度量;影响软件质量的若干个软件质量要素的度量;第二层是用若干个可度量的评价准则来间接第二层是用若干个可度量的评价准则来间接度量软件质量要素;度量软件质量要素;第三层是对相应评价准则的直接度量。第三层是对相应评价准则的直接度量。图图231 软件质量三层次度量模型软件质量三层次度量模型要素要素j评价评价准则准则1评价评价准则准则2评价评价准则准则L度量度量1度量度量2度量度量L2软件质量要素软件质量要素q软件质量要素(软件质量要素(factor)是指直接影响软件质量的)是指直接影响软件质量的软件质量特性。软件质量特性

153、。q随着对软件质量的认识的逐步提高,软件质量要素随着对软件质量的认识的逐步提高,软件质量要素也可能有所变化。也可能有所变化。q当时当时McCall等人认为,软件质量由等人认为,软件质量由11个软件质量要个软件质量要素来衡量。这素来衡量。这11个质量要素可划分为三类:个质量要素可划分为三类:面向运行特征的软件质量要素有正确性、可靠性、面向运行特征的软件质量要素有正确性、可靠性、有效性、完整性和可用性;有效性、完整性和可用性;面向软件承受修改的质量要素有可维护性、灵活性、面向软件承受修改的质量要素有可维护性、灵活性、可测试性;可测试性;面向转移的软件质量要素有可移植性、可重用性、面向转移的软件质量

154、要素有可移植性、可重用性、可互操作性。这三类要素构成了软件质量的三个侧可互操作性。这三类要素构成了软件质量的三个侧面,如图面,如图232所示。所示。图图232 软件质量要素的构成软件质量要素的构成产品产品修正修正产品产品转移转移产品产品运行运行 可维护性可维护性 灵活性灵活性 可测试性可测试性 可移植性可移植性 可重用性可重用性 可互操作性可互操作性正确性正确性 可靠性可靠性 有效性有效性完整性完整性 可用性可用性质量要素新概念质量要素新概念1)正确性()正确性(correctness):):指程序满足需求规格说明及用户目标的程度;指程序满足需求规格说明及用户目标的程度;2)完整性()完整性(

155、integrity):): 指对未授权人员访问程序或数据加以控指对未授权人员访问程序或数据加以控制制 的程度;的程度;3)可用性()可用性(usability):): 指学习使用软件(即操作软件、准备输指学习使用软件(即操作软件、准备输入入 数据、解释输出结果等)的难易程度;数据、解释输出结果等)的难易程度;质量要素新概念质量要素新概念4)灵活性()灵活性(flexibility):): 指改变一个操作的顺序所需工作量的多指改变一个操作的顺序所需工作量的多少;少;5)可测试性()可测试性(testability):): 指测试软件以便使其具有预定功能所需指测试软件以便使其具有预定功能所需工工

156、作量的多少;作量的多少;6)可互操作性()可互操作性(interoperability):):指程序与其他系统相互交换并使用信息的能力。指程序与其他系统相互交换并使用信息的能力。 2软件质量要素软件质量要素软软件件质质量量要要素素不不是是独独立立的的,一一个个要要素素可可能能与与其他几个要素有关系,如表其他几个要素有关系,如表212所示,其中所示,其中: 正相关以正相关以“”“”表示,表示, 负相关以负相关以“”表示。表示。对对于于具具有有负负相相关关的的质质量量要要素素,在在开开发发时时应应根根据具体情况加以取舍或进行折衷。据具体情况加以取舍或进行折衷。 例例如如,对对于于实实时时控控制制系

157、系统统,必必须须确确保保系系统统的的可可靠靠性性和和有有效效性性,而而软软件件的的可可重重用用性性、可可移植性等质量要素就可以放宽要求。移植性等质量要素就可以放宽要求。表表2-12质量要素间的关系质量要素间的关系关系关系要素要素要素要素正正确确性性可可靠靠性性有有效效性性完完整整性性可可用用性性可可维维护护性性灵灵活活性性可可测测试试性性可可移移植植性性可可重重用用性性可可互互操操作作性性正确性正确性可靠性可靠性有效性有效性完整性完整性可用性可用性可维护性可维护性灵活性灵活性可测试性可测试性可移植性可移植性可重用性可重用性可互操作性可互操作性3软件质量要素的评价准则软件质量要素的评价准则软件质

158、量要素一般很难直接测量。为了软件质量要素一般很难直接测量。为了对对11个要素进行度量,个要素进行度量,McCall等人通过确等人通过确定影响软件质量要素的属性,定义了定影响软件质量要素的属性,定义了21个软件质量要素的评价准则。这些评价个软件质量要素的评价准则。这些评价准则既能够比较完整、准确地描述软件准则既能够比较完整、准确地描述软件质量要素,又比较容易测量。质量要素,又比较容易测量。通过这组评价准则就可以间接测量软件通过这组评价准则就可以间接测量软件质量要素,进而度量整个软件质量。质量要素,进而度量整个软件质量。评价准则新概念评价准则新概念1)可审查性()可审查性(auditability

159、):): 检查软件需求、文档、过程、标准等是否一致检查软件需求、文档、过程、标准等是否一致 的难易程度;的难易程度;2)准确性()准确性(accuracy):计算和控制的精确程度;):计算和控制的精确程度;3)简明性()简明性(conciseness):程序源代码的紧凑程):程序源代码的紧凑程度;度;4)通信通用性()通信通用性(communication commonality):): 使用标准接口、协议和带宽的程度;使用标准接口、协议和带宽的程度;5)数据通用性()数据通用性(data commonality):): 在程序中使用标准数据结构和类型的程度;在程序中使用标准数据结构和类型的程

160、度;6)容错性()容错性(errortolerance):): 在各种异常情况下软件能继续提供操作的能力;在各种异常情况下软件能继续提供操作的能力;评价准则新概念评价准则新概念7)执行效率()执行效率(execution efficiency):软件运行效):软件运行效率;率;8)可扩充性()可扩充性(expandability):): 结构、数据、过程等设计可以扩充的程度;结构、数据、过程等设计可以扩充的程度;9)通用性()通用性(generality):程序潜在应用领域的多少;):程序潜在应用领域的多少;10)硬件独立性()硬件独立性(hardware independence):): 软

161、件与其运行的硬件环境无关的程度;软件与其运行的硬件环境无关的程度;11)检测性()检测性(instrumentation):): 程序监视自身运行并标识错误的程度;程序监视自身运行并标识错误的程度;12)可操作性()可操作性(operability):): 操作该软件的难易程度;操作该软件的难易程度;评价准则新概念评价准则新概念13)安全性()安全性(security):控制或保护程序和数):控制或保护程序和数 据不被破坏、非法访问等机制的能力;据不被破坏、非法访问等机制的能力;14)自文档化()自文档化(selfdocumentation):): 源代码提供自身说明文档的程度;源代码提供自身

162、说明文档的程度;15)简简单单性性(simplicity):程程序序易易于于理理解解的的程程度;度;16)软件独立性()软件独立性(software independence):): 软软件件与与非非标标准准编编程程语语言言特特征征、操操作作系系统统特征特征 等软件环境约束无关的程度;等软件环境约束无关的程度;17)易培训性()易培训性(training):): 软件对使用它的新用户的支持程度。软件对使用它的新用户的支持程度。表表2-13质量要素与评价准则的关系质量要素与评价准则的关系评价准则评价准则关系关系质量要素质量要素可可追追踪踪性性完完全全性性一一致致性性容容错错性性准准确确性性简简单

163、单性性可可操操作作性性执执行行效效率率可可审审查查性性检检测测性性安安全全性性数数据据通通用用性性可可扩扩充充性性通通用用性性硬硬件件独独立立性性简简明明性性通通信信通通用用性性自自文文档档化化软软件件独独立立性性易易培培训训性性模模块块化化正确性正确性 可靠性可靠性 有效性有效性 完整性完整性 可用性可用性可维护性可维护性灵活性灵活性可测试性可测试性 可移植性可移植性 可重用性可重用性 可互操作性可互操作性4软件质量要素的度量软件质量要素的度量第第j种软件质量要素种软件质量要素Fj(j=1,2,11)的计算公式为:)的计算公式为: Fj = Cj k M k (221)其其中中:M k 是是

164、第第j 种种软软件件质质量量要要素素F j 对对第第k种种评评价价准准则则的的测测量量值值。评评价价准准则则多多数数只只能能按按主主观观想想法法定定值值。McCall将将每每个个评评价价准准则则都都划划分分为为0 10级级,并并且且M k 的值可以在的值可以在0,0.1,0.2,1.0中取一个。中取一个。 加权系数加权系数Cjk满足满足Cjk = 1,Cjk 0。 Cjk = 0表示质量要素与第表示质量要素与第k种评价准则无关。种评价准则无关。4软件质量要素的度量软件质量要素的度量例如,要度量某软件的例如,要度量某软件的F2(可靠性)(可靠性)假设假设C23=0.1,C24=0.3,C25=0

165、.4,C26=0.2,其余的其余的C2k = 0,而而M3=0.7、M4=0.6、M5=0.5,M6=0.8,则可靠性的度量值为:则可靠性的度量值为: F2 = C23M3+C24M4+C25M5+C26M6 =0.10.7+0.30.6+0.40.5+0.20.8 =0.61ISO三层次软件质量度量模型。三层次软件质量度量模型。q1985年,国际标准化组织也提出了三层次软件质量年,国际标准化组织也提出了三层次软件质量度量模型。其中:度量模型。其中:高层称为软件质量需求评价准则(高层称为软件质量需求评价准则(SQRC),并由),并由正确性、可容性、有效性、安全性、可用性、可维正确性、可容性、有

166、效性、安全性、可用性、可维护性、灵活性、可互操作性等护性、灵活性、可互操作性等8个要素组成;个要素组成;中层称为软件质量设计评价准则(中层称为软件质量设计评价准则(SQDC),并由),并由可追踪性、完全性可追踪性、完全性、等共、等共23个评价准则组成;个评价准则组成;低层称作软件质量度量评价准则(低层称作软件质量度量评价准则(SQMC)。)。qISO认为,应对高层和中层建立国际标准,而低层认为,应对高层和中层建立国际标准,而低层可由各使用单位自行制定。可由各使用单位自行制定。2.4软件复杂性度量软件复杂性度量通过软件的复杂性度量值可以估算出软通过软件的复杂性度量值可以估算出软件中故障的数量;件

167、中故障的数量;也能估算出软件开发所需的工作量;也能估算出软件开发所需的工作量;定量度量的结果还可以用于比较不同设定量度量的结果还可以用于比较不同设计方案的优劣。计方案的优劣。同时,软件的复杂性也能从某些方面影同时,软件的复杂性也能从某些方面影响软件的可维护性、可靠性等软件质量响软件的可维护性、可靠性等软件质量要素。要素。 因此,软件复杂性度量是软件度量的因此,软件复杂性度量是软件度量的一个重要组成部分。一个重要组成部分。2.4.1软件复杂性的概念及度量原则软件复杂性的概念及度量原则1软件复杂性的概念软件复杂性的概念K . Magel 从从6个方面来描述软件复杂性:个方面来描述软件复杂性: 1)

168、理解程序的难度;)理解程序的难度; 2)维护程序的难度;)维护程序的难度; 3)向其他人解释程序的难度;)向其他人解释程序的难度; 4)按指定方法修改程序的难度;)按指定方法修改程序的难度; 5)根据设计文件编写程序的工作量;)根据设计文件编写程序的工作量; 6)执行程序时需要资源的多少。)执行程序时需要资源的多少。软软件件复复杂杂性性反反映映了了软软件件的的可可理理解解性性、模模块块化化、简单性等属性。简单性等属性。2软件复杂性度量的原则软件复杂性度量的原则q软件复杂性的度量,的一些基本原则:软件复杂性的度量,的一些基本原则: 1)软软件件的的复复杂杂性性与与其其规规模模的的关关系系不不是是

169、线线性性的;的; 2)数据结构复杂的程序较复杂;)数据结构复杂的程序较复杂; 3)控制结构复杂的程序较复杂;)控制结构复杂的程序较复杂; 4)转向语句使用不当的程序较复杂;)转向语句使用不当的程序较复杂; 5)循循环环结结构构比比选选择择结结构构复复杂杂、选选择择结结构构比比顺顺 序结构复杂;序结构复杂; 6)语句、数据、子程序模块等出现的顺序)语句、数据、子程序模块等出现的顺序对对 复杂性有影响;复杂性有影响;2软件复杂性度量的原则软件复杂性度量的原则7)非局部变量较多的程序较复杂;)非局部变量较多的程序较复杂;8)参参数数按按地地址址调调用用(Call by reference)比比按按值

170、值调用(调用(Call by value)复杂;)复杂;9)函数副作用比显式参数传递难理解;)函数副作用比显式参数传递难理解;10)作用不同的变量同名时较难理解;)作用不同的变量同名时较难理解;11)模块、过程间联系密切的程序较复杂;)模块、过程间联系密切的程序较复杂;12)程序嵌套层数越多越复杂。)程序嵌套层数越多越复杂。以上这些基本原则是指导我们进一步研究定量度以上这些基本原则是指导我们进一步研究定量度量软件复杂性的基础。量软件复杂性的基础。2.4.2McCabe度量模型度量模型q1976年,年,McCabe提出了基于程序拓扑结构的提出了基于程序拓扑结构的软件复杂性度量模型。该方法是把程序

171、流程软件复杂性度量模型。该方法是把程序流程图转化为程序图:即把程序看成是有一个入图转化为程序图:即把程序看成是有一个入口结点和一个出口结点的有向图,图中每个口结点和一个出口结点的有向图,图中每个结点对应一个语句、一个简单判断或一个顺结点对应一个语句、一个简单判断或一个顺序流程的代码块,原来程序流程图中的箭头序流程的代码块,原来程序流程图中的箭头变成连接各结点的有向弧(或称为边)。一变成连接各结点的有向弧(或称为边)。一般地,可以假设从程序图中的开始结点可以般地,可以假设从程序图中的开始结点可以到达图中的任一结点,而从图中的任一结点到达图中的任一结点,而从图中的任一结点都可以到达出口结点。程序图

172、又称为程序控都可以到达出口结点。程序图又称为程序控制结构图或程序流图。制结构图或程序流图。2.4.2McCabe度量模型度量模型McCabe给给出出了了程程序序控控制制结结构构图图G的的巡巡回回秩秩数数V(G)作为程序控制结构复杂性的度量,其度量模型为:作为程序控制结构复杂性的度量,其度量模型为: V(G)= E N + 2 (222)其中:其中:E 程序图程序图G中边的总数;中边的总数; N 程序图中结点的总数。程序图中结点的总数。 V(G)又称为图)又称为图G的环形复杂度。的环形复杂度。可以证明,可以证明,V(G)的值等于结构图中有界和无界的)的值等于结构图中有界和无界的封闭区域的个数。封

173、闭区域的个数。R1图图241 三种基本结构的程序图三种基本结构的程序图R1R2R1R2(a)顺序结构)顺序结构V(G)= E N + 2 = 1 2 + 2 = 1(b)选择结构)选择结构V(G)= E N + 2 = 4 4 + 2 = 2 (c)while结构结构R1R2V(G)= E N + 2 = 3 3 + 2 = 2 (d)until 结构结构V(G)= E N + 2 = 3 3 + 2 = 2 2.4.2McCabe度量模型度量模型程序结构的复杂性度量值程序结构的复杂性度量值V(G)取决于程序)取决于程序控制流的复杂程度。当程序内的分支数和循控制流的复杂程度。当程序内的分支数和

174、循环数增加时,环数增加时,V(G)值将随之增加,即程序)值将随之增加,即程序的复杂性增大。的复杂性增大。McCabe研究大量程序后指出,研究大量程序后指出,V(G)可作)可作为程序规模的定量指标,为程序规模的定量指标,V(G)值越高的程)值越高的程序往往是越复杂、越容易出问题的程序。序往往是越复杂、越容易出问题的程序。McCabe建议模块规模应满足:建议模块规模应满足:V(G)10【例例2.5】程序流程图如图程序流程图如图2-4-2所示,所示,试求出其巡回秩数试求出其巡回秩数V(G)解:(解:(1)画出程序流程图对应的程序图。)画出程序流程图对应的程序图。开始开始abchgfdei结束结束图图

175、243 程序图程序图abcfghdeiR1R2R3R41234567891011图图242 程序流程图程序流程图【例例2.5】程序流程图如图程序流程图如图2-4-2所示,所示,试求出其巡回秩数试求出其巡回秩数V(G)(2)由程序图(或流图)可得:)由程序图(或流图)可得: V(G)= E N + 2 = 11 9 +2 = 4(3)由程序图可以看出,其有界)由程序图可以看出,其有界 区域有区域有R1、R2、R3共共3个,个, 还有还有1个无界区域个无界区域R4,共,共4个个 封闭区域,所以:封闭区域,所以: V(G)= 4abcfghdeiR1R2R3R412345678910112.4.3H

176、alstead度量模型度量模型q20世世纪纪70年年代代初初,Halstead给给出出了了称称为为文文本本复复杂杂性性度度量量的的模模型型。它它是是根根据据统统计计程程序序中中的的操操作作符符和和操操作作数数的的个个数数来来度度量量程程序序的的复复杂杂程程度度。程程序序可可以以看看成成是是由由操操作作符符和和操操作作数数组组成成的的符符号号序序列列。操操作作符符是是指指程程序序中中出出现现的的语语法法符符号号,如如+、ifthenelse、while等等。操操作作数数是是操操作作对对象象,如如程程序序中中定定义义或或使使用用的的变变量、常量、数组、指针等。量、常量、数组、指针等。令:令:N1为

177、程序中操作符出现的总个数,为程序中操作符出现的总个数, N2为程序中操作数出现的总个数。为程序中操作数出现的总个数。 则程序的语言符号长度则程序的语言符号长度N定义为:定义为:N = N1 + N2。2.4.3Halstead度量模型度量模型如果已经测得程序中不同操作符的个数如果已经测得程序中不同操作符的个数n1和不同操和不同操作数的个数作数的个数n2,则程序的长度,则程序的长度N可用下式来估算:可用下式来估算: N n1 log2 n1+n2 log2 n2 (223)Halstead用用下下式式来来定定义义程程序序量量(即即程程序序在在词词汇汇上上的的复杂性):复杂性): V = N lo

178、g 2( n1 + n2 ) (224)Halstead还给出了预测错误数的公式如下:还给出了预测错误数的公式如下: E = N log 2( n1 +n2 )/ 3000 (225)2.4.3Halstead度量模型度量模型可以对多个某种程序设计语言的程序进行可以对多个某种程序设计语言的程序进行统计分析,从而得出每千代码行(统计分析,从而得出每千代码行(KLOC)或每个功能点(或每个功能点(FP)所包含的操作符和操)所包含的操作符和操作数个数作数个数CL或或CF,于是,可以将程序语言符,于是,可以将程序语言符号长度号长度N折合成相应的代码行数或功能点数。折合成相应的代码行数或功能点数。课程名

179、称:软件工程课程名称:软件工程 第第6讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目:2.5 软件可靠性度量软件可靠性度量教学目的:了解可靠性的概念、理解可靠性估算教学目的:了解可靠性的概念、理解可靠性估算方法。方法。教学重点:可靠性的概念、估算方法。教学重点:可靠性的概念、估算方法。教学难点:可靠性的概念、估算方法。教学难点:可靠性的概念、估算方法。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:2.5软件可靠性度量软件可靠性度量2.5.1软件可靠性的有关概念软件可靠性的有关概念1软件可靠性软件可靠性 由由于于大大型型软软件件投投入入使使用用后后还还是

180、是要要残残留留一一定定数数量量的的错错误误。于于是是,当当某某些些操操作作或或输输入入数数据据导导致致遇遇到到这这些些错错误误时时,就就会会使使程程序序失失效,从而出现软件故障。效,从而出现软件故障。软软件件可可靠靠性性定定义义为为在在某某个个给给定定时时间间间间隔隔内内,程序按照规格说明成功运行的概率。程序按照规格说明成功运行的概率。1软件可靠性软件可靠性令:随机变量令:随机变量 t 表示发生故障的时刻,表示发生故障的时刻,t 0,; 函数函数f(t)为随机变量)为随机变量t 的概率密度函数,的概率密度函数, F(t)表示分布函数;)表示分布函数; P(0 t t1)表示从初始时刻到)表示从

181、初始时刻到t1时刻程序时刻程序 发发生生故故障障的概率。的概率。设:初始时刻程序运行正常,即设:初始时刻程序运行正常,即F(0)= 0。于是有:。于是有: F(t)= f(x)dx (226) f(t) = d F(t) (227)d t0t令:令:Pf(t1)表示从)表示从0到到t1时刻程序发生故障的概率,有:时刻程序发生故障的概率,有:Pf(t1)= P(0 t t1)= F(t1) F(0)= F(t1) 如如果果在在0,t区区间间程程序序成成功功运运行行的的概概率率为为Ps(t)、发生故障的概率为发生故障的概率为Pf(t),则有:),则有: Ps(t)+ Pf(t)= 1Ps(t)就就

182、是是可可靠靠性性,一一般般标标记记为为R(t)。由由以以上上几几个个式式子可导出:子可导出:R(t)= 1Pf(t)=1 F(t)= 1 f(x)dx (228) 上式说明,当软件残留的错误数一定时,程序上式说明,当软件残留的错误数一定时,程序运行的时间越长,发生故障的次数越多,软件的可靠运行的时间越长,发生故障的次数越多,软件的可靠性越小。性越小。0t下下面面引引入入故故障障率率函函数数Z(t),以以比比较较一一个个程程序序在在不不同同时时期期、或或不不同同程程序序在在同同一一时时期期的的可可靠靠性性。设设系系统统一一直直成成功功运运行行至至时时刻刻t,t t1,t1+ t,P(t1tt1+

183、 t,tt1)是是系系统统在在t1,t1+ t时时间间间间隔隔且且tt1时时发发生生故故障障的的概率。故障率函数概率。故障率函数Z(t1)的值定义为:)的值定义为:Z(t1)= lim P(t1tt1+ t,tt1)/ t (229)可以证明:可以证明: Z(t)= (230)对式(对式(228)的两端对时间)的两端对时间t求导得:求导得: dF(t)/dt = dR(t)/d t,代入上式,得:,代入上式,得: = Z(t)d t (231)1R(t)d F(t) d(t)d R(t) R(t)对上式两端积分,利用初始条件对上式两端积分,利用初始条件R(0)= 1,可得:,可得: R(t)=

184、exp Z(x)dx (232) 上式即为可靠性和故障率的基本方程式。据此上式即为可靠性和故障率的基本方程式。据此可以导出几个可以导出几个 常用的故障模型:常用的故障模型: 1)Z(t)= ,其中,其中是常数。将是常数。将代入式(代入式(232),可),可得:得: R(t)= e t (233) 上上式式称称为为故故障障率率为为常常数数的的可可靠靠性性模模型型。由由于于故故障率是常数,可靠性将随着时间障率是常数,可靠性将随着时间t的增加呈指数衰减。的增加呈指数衰减。 t02)Z(t)= kt,这这里里k为为常常数数,t 0。将将kt代代入入式式(232),可得:),可得: R(t)= e k

185、t 2/2 (234) 上式称为故障率是时间的线性函数时的可靠上式称为故障率是时间的线性函数时的可靠性模型。即当存在损耗和退化时,故障率将随着时性模型。即当存在损耗和退化时,故障率将随着时间的增加而线性增加。该模型一般不适合于软件产间的增加而线性增加。该模型一般不适合于软件产品。品。 需需要要指指出出,软软件件中中的的错错误误一一般般都都是是人人为为的的设设计计错错误误,其其中中多多数数是是逻逻辑辑错错误误。随随着着对对软软件件的的测测试试及及修修复复,软软件件系系统统中中的的错错误误会会越越来来越越少少。因因此此,实实际际软软件件系系统统的的故故障障率率函函数数曲曲线线应应如如图图251所所

186、示示,即即软软件件故故障障率率不不是是常常数数、也也不不是是线线性性函函数数,而而是是按按指指数规律下降。实际的统计结果也说明了这一点。数规律下降。实际的统计结果也说明了这一点。图图251 软件系统故障率软件系统故障率Z(t)Ot2软件的有效性及其度量软件的有效性及其度量软件的有效性函数软件的有效性函数A(t)定义为软件系统在时刻)定义为软件系统在时刻t按按照规格说明成功运行的概率。照规格说明成功运行的概率。可靠性与有效性之间的差别是,可靠性强调软件系可靠性与有效性之间的差别是,可靠性强调软件系统在统在0t这段时间间隔内都有效,而有效性强调软这段时间间隔内都有效,而有效性强调软件系统在时刻件系

187、统在时刻t这一时间点有效。这一时间点有效。A(200)= 0.93表示假设有表示假设有100个相同的系统同时启个相同的系统同时启动运行,运行到动运行,运行到200小时这一时刻,其中有小时这一时刻,其中有93个处个处于正常运行状态,于正常运行状态,7个出现故障,等待修复。个出现故障,等待修复。R(200)= 0.93表示假设有表示假设有100个相同的系统有个相同的系统有93个个无故障运行了无故障运行了200小时,有小时,有7个在此期间发生故障。个在此期间发生故障。2软件的有效性及其度量软件的有效性及其度量q一般来说,对一般来说,对R(200)= 0.93的要求比对的要求比对A(200)= 0.9

188、3的要求要严格得多。的要求要严格得多。对于不可修复系统(即不允许程序停止运行的系对于不可修复系统(即不允许程序停止运行的系统)或没有修复能力的情况:统)或没有修复能力的情况: A(t)= R(t)对于可修复系统并能及时修复的情况:对于可修复系统并能及时修复的情况: A(t)R(t)。)。 软件稳态有效性的两种度量方法软件稳态有效性的两种度量方法1)软件系统投入运行后,在一段时间内,可)软件系统投入运行后,在一段时间内,可 统统计计软软件件系系统统的的故故障障停停机机时时间间tdi和和正正常常运运 行时间行时间tuj,则软件系统的稳态有效性为:,则软件系统的稳态有效性为: A(t)= Tu /(

189、 Tu + Td ) (235)其中:其中:t = Tu + Td,Td = tdi,Tu = tuj软件稳态有效性的两种度量方法软件稳态有效性的两种度量方法2)软软件件系系统统在在稳稳态态运运行行时时,可可统统计计其其平平均均故故障障间间隔隔时时间间MTBF(mean time between failurs,即即程程序序正正常常运运行行时时间间的的平平均均值值)和和平平均均修修复复时时间间MTTR(mean time to repair,即即平平均均停停机机时时间间),则则软软件件系系统统的的稳稳态态有有效性为:效性为: A = MTBF/(MTBF + MTTR) (236)采采用用上上

190、述述方方法法,在在开开发发阶阶段段和和投投入入运运行行后后都都可可以以定定量量地度量软件系统的有效性和可靠性。地度量软件系统的有效性和可靠性。软软件件系系统统投投入入运运行行的的一一段段时时间间内内,可可以以用用各各种种输输入入和和操操作作来来引引发发程程序序中中残残留留的的错错误误,经经过过多多次次修修复复后后错错误误将逐渐减少,有效性和可靠性将不断提高。将逐渐减少,有效性和可靠性将不断提高。2.5.2软件可靠性的估算软件可靠性的估算软件可靠性估算模型大致分为宏观和微观模型两类。软件可靠性估算模型大致分为宏观和微观模型两类。宏宏观观模模型型是是从从程程序序中中残残留留错错误误数数的的角角度度

191、建建立立模模型型,并用统计方法确定模型参数。并用统计方法确定模型参数。而微观模型则以程序的控制结构和语句分析为基础。而微观模型则以程序的控制结构和语句分析为基础。 下面仅介绍几个典型的宏观模型。下面仅介绍几个典型的宏观模型。1残留错误总数的估算模型残留错误总数的估算模型 对残留错误总数的估算是可靠性估算的基础。对残留错误总数的估算是可靠性估算的基础。 典型的估算模型:典型的估算模型: 错误植入模型;错误植入模型; 分别分别测试模型。测试模型。1)错误植入模型)错误植入模型Mills首首先先提提出出了了估估算算程程序序中中残残留留错错误误总总数数的的错错误误植植入入模模型型。即即在在进进行行测测

192、试试之之前前,由由专专人人(比比如如统统计计人人员员)在在程程序序中中随随机机地地植植入入一一些些错错误误(称称为为带带有有标标记记的的错错误误),测测试试人人员员测测试试之之后后,通通过过统统计计测测试试人人员员发发现现的的原原有有错误和植入错误的比例来估算程序中原有错误总数。错误和植入错误的比例来估算程序中原有错误总数。设:设:N t 植入的错误数,植入的错误数, n 测试发现原有的错误数,测试发现原有的错误数, n t发现植入的错误数,发现植入的错误数, ET 原有的错误总数。原有的错误总数。则有:则有: ET/ N t n / n t于是于是ET的估算模型为:的估算模型为: ET =

193、N tn / n t (237)2)分别测试模型)分别测试模型1973年年,Hyman对对错错误误植植入入模模型型做做了了改改进进,即即用用甲甲、乙乙两两个个程程序序测测试试员员同同时时对对一一个个程程序序的的两两个个副副本本进进行行独立测试。独立测试。设:设:ET 程序中原有的残留错误总数,程序中原有的残留错误总数, E1 甲在甲在0,时间内发现的错误数,时间内发现的错误数, E2 乙在乙在0,时间内发现的错误数,时间内发现的错误数, E0 两两人人在在0,时时间间内内发发现现的的相相同同的的错错误误 的个数,的个数,则有:则有: ET = E1E2 / E0 (238) Hyman提出的分

194、别测试模型无论在技术上还是在提出的分别测试模型无论在技术上还是在 经济上都比错误植入模型优越。经济上都比错误植入模型优越。2软件平均故障间隔时间的估算软件平均故障间隔时间的估算软软件件的的平平均均故故障障间间隔隔时时间间MTBF是是可可靠靠性性度度量量的的一一个个重重要要参参数数,往往往往作作为为一一个个重重要要的的质质量量指指标标由由用用户户提出来。下面介绍提出来。下面介绍MTBF的估算方法。的估算方法。 1)软件故障率为常数)软件故障率为常数 当当软软件件故故障障率率为为常常数数时时,假假设设程程序序运运行行H小小时时,共发生共发生r次故障,则次故障,则的估算值为:的估算值为: r / H

195、于是有:于是有: MTBF = 1 / = H / r (239)2)软件故障率与程序残留错误数成正比)软件故障率与程序残留错误数成正比设:设:IT 程序代码长度;程序代码长度; ET 测试之前程序中残留错误总数;测试之前程序中残留错误总数; E c() 0,区间内改正的错误数;区间内改正的错误数; E r() 在在时刻程序中剩余的错误数;时刻程序中剩余的错误数;其中其中为调试和排错时间。为调试和排错时间。于是,剩余的错误数为:于是,剩余的错误数为: E r()= ET E c() (240)2)软件故障率与程序残留错误数成正比)软件故障率与程序残留错误数成正比 E r()= ET E c()

196、 (240)用用IT去除上式的两边,有:去除上式的两边,有: E r()/ IT = ET / IT E c()/ IT令:令:r()= E r()/ IT ,T = ET /IT , c()= E c()/ IT ,于是有:,于是有: r()=T c() (241) 2)软件故障率与程序残留错误数成正比)软件故障率与程序残留错误数成正比 由由于于软软件件故故障障率率=()与与程程序序残残留留错错误误数数成成正正比比,所以有:所以有: = kr()= k(T c() (242) 其中的比例因子其中的比例因子k可通过实验测试和统计的可通过实验测试和统计的方法来估算。设进行方法来估算。设进行n次软

197、件排错实验,时间区间次软件排错实验,时间区间为为0,j ,到,到j 时刻为止,共排除了时刻为止,共排除了E c(j)个错误,)个错误,而在时间区间而在时间区间0,j 内,程序运行了内,程序运行了H j小时,出现小时,出现了了rj个错误,个错误,j = 1,2,n 。此时。此时k的估计值为:的估计值为: k = r j /H j T c(j) (243)nj=1nj=12)软件故障率与程序残留错误数成正比)软件故障率与程序残留错误数成正比k = r j /H j T c(j) (243)当当n = 1时,时, k = r / HT c() (244 )当当n = 2时,时,k =(r1 + r2

198、)/ H1T c(1) + + H2T c(2) (245)k的的值值估估算算出出来来之之后后,即即可可利利用用式式(242)估估算算MTBF,它是,它是的函数。的函数。2)软件故障率与程序残留错误数成正比)软件故障率与程序残留错误数成正比对对于于确确定定的的值值, = kr()为为常常数数,于于是是,经经过过0,区间的排错后,软件可靠性估算为:区间的排错后,软件可靠性估算为: R(t)= exp kr()t = exp( t /MTBF ) (246) 上上式式中中时时间间参参数数以以月月计计,表表示示对对程程序序调调试试和和维维护护的的时时间间,t 0,以以小小时时计计,表表示示程程序序运

199、运行行的的时时间间。式式246可可理理解解为为经经过过个个月月的的调调试后所达到的软件可靠性。试后所达到的软件可靠性。【例例25】对一个包含对一个包含10000LOC的程序进行一个月的测的程序进行一个月的测试后,总共改正了试后,总共改正了15个错误,此时个错误,此时MTBF=10h,又经,又经过一个月测试后,改正了过一个月测试后,改正了10个错误,此时个错误,此时MTBF=15h。试求出:试求出:1)测试前程序中的错误总数;)测试前程序中的错误总数;2)为做到)为做到MTBF=100h,应进行多长时间的测试?此时程序中还,应进行多长时间的测试?此时程序中还残留多少个错误?残留多少个错误?3)分

200、析测试各阶段的可靠性。)分析测试各阶段的可靠性。解:解: 1) = kr(),),MTBF=1/ E r()= IT r()= IT/(k MTBF) EC()= ET IT/(k MTBF)即:即: 15 = ET 10000 / (k 10) 15 + 10 =ET 10000 / (k 15)解上述方程组,得:解上述方程组,得: ET = 45, k = 100 / 32)假设:单位时间内改正错误后剩余的错误数)假设:单位时间内改正错误后剩余的错误数与改正前错误总数成正比,于是有:与改正前错误总数成正比,于是有: Er( 1)= k1ET (1) Er( 2)= k1 Er( 1)=k1

201、2 ET (2) Er( )= k1 ET (3)由(由(1)式,)式,45 15 = k145,得,得k1=2/3 ,MTBF( )=IT / (k Er( ) ) =IT / (k k1 ET ) =10000 / (100 / 3)(2 / 3) 45) = 6.666667 (3 / 2) (4) MTBF( )= 6.666667 (3 / 2) (4) 将将已知已知MTBF() = 100,代入(,代入(4)式:)式: MTBF( )= (20 / 3) (3 / 2) 100= (20 / 3) (3 / 2) (1.5) = 15 = ln15 / ln1.5 = 6.68(月

202、)(月) 由上面的(由上面的(3)式,)式, Er( )= k1 ET =(2/3) 45, 将将=6.68(月)代入,得:(月)代入,得: Er( 6.68)= 45 (2/3)6.68 =2.998633(个)(个)3)分析测试各阶段的可靠性:)分析测试各阶段的可靠性: MTBF与与的关系曲线的关系曲线(月月)MTBF( )(小时)(小时)120110100 90 80 70 60 50 40 30 20 101 2 3 4 5 6 7 8113.975.950.637.7522.251510100可靠性的公式如下:可靠性的公式如下:R(t)= exp kr()t = exp( t /MT

203、BF( ) )当当 = 1(月月)时时, MTBF(1)=10h,此此时时的的可可靠靠性性公公式为:式为: R(t)= exp( t /MTBF(1 ) ) = exp( t /10 ) = e 0. 1t 当当 = 6.68(月)时,(月)时, MTBF(6.68)=100h,则:,则: R(t)= exp( t /MTBF(6.68 ) ) = exp( t /10 0) = e 0. 01t测试测试月后的可靠性月后的可靠性R(t)曲线)曲线 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1t (小时)(小时)R( t)10 20 30 40 50 60 70 8

204、0 =6.68月,月,R(t)= e 0. 01t =1月,月,R(t)= e 0. 1t课程名称:软件工程课程名称:软件工程 第第7讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:教学题目:2.6 软件开发过程管理软件开发过程管理教学目的:了解软件项目管理过程、风险分析、进度安教学目的:了解软件项目管理过程、风险分析、进度安 排、人员的组织与分工等。排、人员的组织与分工等。教学重点:风险分析、进度安排、人员的组织与分工。教学重点:风险分析、进度安排、人员的组织与分工。教学难点:风险分析。教学难点:风险分析。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:习题业:习题4

205、、5、7、8、9、102.6软件开发过程的管理软件开发过程的管理在前几节中介绍了软件度量和估算,这些即是评价软在前几节中介绍了软件度量和估算,这些即是评价软件的重要依据,也是软件开发过程管理的组成部分和件的重要依据,也是软件开发过程管理的组成部分和基础。在本节中将介绍软件项目管理的过程、风险分基础。在本节中将介绍软件项目管理的过程、风险分析,软件开发计划的进度安排,软件开发人员的组织析,软件开发计划的进度安排,软件开发人员的组织与分工等等。与分工等等。2.6.1 软件开发项目管理过程软件开发项目管理过程为达到软件工程的目标,必须对软件开发项目的工作为达到软件工程的目标,必须对软件开发项目的工作

206、范围、所需的工作量和成本、必需的人力和软硬件资范围、所需的工作量和成本、必需的人力和软硬件资源、可能遇到风险、进度的安排、待实现的任务、经源、可能遇到风险、进度的安排、待实现的任务、经历的里程碑等进行管理。软件开发过程的管理应在所历的里程碑等进行管理。软件开发过程的管理应在所有技术工作开始之前启动,直至软件工程过程的结束。有技术工作开始之前启动,直至软件工程过程的结束。软件开发项目管理过程主要包括以下几个方面:软件开发项目管理过程主要包括以下几个方面:1启动一个软件项目启动一个软件项目 一一般般情情况况,软软件件人人员员与与客客户户是是在在可可行行性性研研究究阶阶段段确确定定软软件件工工程程项

207、项目目的的范范围围和和目目标标的的。其其中中,目目标标指指明明了了软软件件开开发发项项目目的的目目的的,范范围围标标明明了了软软件件要要实实现现的的基基本本功功能能,并并寻寻求求解解决决方方案。案。2成本估算成本估算 在在软软件件项项目目管管理理过过程程中中的的一一个个关关键键活活动动是是制制定定项项目目计计划划。在在制制定定计计划划时时,必必须须对对项项目目的的规规模模、所所需需的的人人力力等等资资源源、项项目目的的持持续续时时间间、工作量和成本进行估算。工作量和成本进行估算。软件开发项目管理过程主要包括以下几个方面软件开发项目管理过程主要包括以下几个方面3风险分析风险分析 开开发发一一个个

208、软软件件项项目目总总存存在在某某些些不不确确定定性性,即即存存在在风风险险。有有些些风风险险如如果果控控制制得得不不好好,可可能能导导致致灾灾难难性性的的后后果果。风风险险分分析析实实际际上上就就是是贯贯穿穿于于软软件件工工程程过过程程中中的的一一系系列列风风险险管管理理步步骤骤,包包括括风风险险标标识识、风风险估算、风险评价、风险驾驭和监控。险估算、风险评价、风险驾驭和监控。4进度安排进度安排 首首先先识识别别一一组组项项目目任任务务,再再确确定定各各任任务务之之间间的的相相互互关关联联,然然后后估估算算各各个个任任务务的的工工作作量量,制制定定进进度度时时序序,建建立立分分隔隔任任务务的的

209、里里程程碑碑,确确定定关关键键路路径径,分分配配人力和其他资源。人力和其他资源。软件开发项目管理过程主要包括以下几个方面软件开发项目管理过程主要包括以下几个方面5追踪和控制追踪和控制 项项目目管管理理人人员员负负责责追追踪踪和和控控制制在在进进度度安安排排中中标标识识的的每每一一个个任任务务。如如果果任任务务实实际际完完成成日日期期滞滞后后于于进进度度安安排排,则则管管理理员员可可以以使使用用一一种种自自动动的的项项目目进进度度安安排排工工具具来来确确定定在在项项目目的的中中间间里里程程碑碑上上进进度度误误期期所所带带来来的的影影响响,并并及及时时采采取取措措施施加加以以解解决决。如如重重新新

210、分分配配资资源源、对对任任务务重重新新安安排排等等等等。作作为为最最坏坏的的情情况况,只只好好推推迟软件产品的交付日期。迟软件产品的交付日期。2.6.2风险分析风险分析风险的特点:风险的特点:具有不确定性,某项风险可能发生也可能不发生;具有不确定性,某项风险可能发生也可能不发生; 一旦某项风险变成了现实,就必然会给项目带来一旦某项风险变成了现实,就必然会给项目带来不良的影响和损失,甚至灾难性后果。不良的影响和损失,甚至灾难性后果。 风险分析的四个主要活动:风险分析的四个主要活动: 风险标识;风险标识; 风险估算;风险估算; 风险评价;风险评价; 风险驾驭和监控。风险驾驭和监控。 1风险标识风险

211、标识风险按影响的范围,可分为三类:风险按影响的范围,可分为三类: 项项目目风风险险是是指指项项目目在在预预算算、进进度度、人人力力等等资资源源、客客户户和和需需求求等等方方面面可可能能存存在在的的问问题题。这这些些问问题题一一旦旦发生将对软件开发项目产生不利影响。发生将对软件开发项目产生不利影响。 技技术术风风险险是是指指在在需需求求、设设计计、实实现现、接接口口、验验证证和和维维护护等等方方面面的的潜潜在在问问题题。如如果果技技术术风风险险发发生生了了,将直接威胁软件产品的质量和交付日期。将直接威胁软件产品的质量和交付日期。 商商业业风风险险是是指指开开发发一一个个没没人人需需要要的的优优质

212、质软软件件产产品品、开开发发一一个个销销售售部部门门不不知知道道如如何何销销售售的的软软件件产产品品、或开发一个不再符合整体商业策略的产品等等。或开发一个不再符合整体商业策略的产品等等。1风险标识风险标识Boehm建议使用各类风险检测表来标识风险。建议使用各类风险检测表来标识风险。在风险检测表中列出所有可能的与每一个风险在风险检测表中列出所有可能的与每一个风险因素有关的问题。因素有关的问题。包括产品规模风险检测表、商业风险检测表、包括产品规模风险检测表、商业风险检测表、客户风险检测表、过程风险检测表、开发环境客户风险检测表、过程风险检测表、开发环境风险检测表、技术风险检测表、人员风险检测风险检

213、测表、技术风险检测表、人员风险检测表等等。表等等。例如,例如,“人员风险检测表人员风险检测表”可如表可如表214所示。所示。 在表在表214中,可以根据实际情况选用中,可以根据实际情况选用0、1、2、3、4、5来回答每一个问题,某个问题来回答每一个问题,某个问题取值越大表示该项风险也越大。人员风险检测取值越大表示该项风险也越大。人员风险检测表反映了人的因素可能对软件项目的影响。表反映了人的因素可能对软件项目的影响。表表2-14人员风险检测表人员风险检测表序序号号问问题题回回答答(0、1、2、3、4、51开发人员的水平如何?开发人员的水平如何?22开发人员在技术上是否配套?开发人员在技术上是否配

214、套?13是否有足够的人员可用?是否有足够的人员可用?04开发人员是否能自始至终参加软件项目的工作?开发人员是否能自始至终参加软件项目的工作?25开发人员是否能把全部精力投入到软件开发工作中开发人员是否能把全部精力投入到软件开发工作中?26开发人员对自己的工作是否有正确的期望?开发人员对自己的工作是否有正确的期望?17开发人员是否已接受了必要的培训?开发人员是否已接受了必要的培训?08开发人员的流动是否还能保证工作的连续性?开发人员的流动是否还能保证工作的连续性?32风险估算风险估算风险预测。风险预测。软软件件项项目目管管理理人人员员主主要要从从影影响响风风险险的的因因素素和和风风险险发发生生后

215、带来的损失来度量风险。后带来的损失来度量风险。要要对对风风险险进进行行估估算算,首首先先应应建建立立风风险险度度量量指指标标体体系系、指指明明风风险险带带来来的的影影响响和和损损失失,确确定定影影响响风风险险的的因因素素,估计风险出现的可能性或概率,即进行定量的估算。估计风险出现的可能性或概率,即进行定量的估算。估算方法如下:估算方法如下:设设:某某一一风风险险检检测测表表由由m项项组组成成,每每项项可可在在0,1,2,N中中根根据据实实际际情情况况选选取取一一个个整整数数值值。其其中中0表表示示最最好好情况,情况,N表示最差情况。表示最差情况。又又设设:第第i 种种风风险险检检测测表表的的第

216、第j项项取取值值为为Xi j,对对应应的的加加权权系数为系数为Wi j,则第,则第i种风险的估算值可以定义为:种风险的估算值可以定义为: i = Wi jXi j /(mN) (247) m j=12风险估算风险估算其中:其中: Wi j = m,Wi j 0 设:第设:第i种风险对整个项目的风险估算的加权系数为种风险对整个项目的风险估算的加权系数为i,i = 1,2,l,其中,其中l为风险的种类数,且满足为风险的种类数,且满足1 +2 +l = 1,则整个软件项目的风险估算值,则整个软件项目的风险估算值R定义为:定义为:R = ii = i Wi jXi j /(mN) (248) 容易验证

217、,容易验证,0 R 1。估算的结果,如果。估算的结果,如果R接近接近于于0,说明项目风险比较小,如果,说明项目风险比较小,如果R接近于接近于1,说明项,说明项目风险比较大。如果目风险比较大。如果ii的值比较大,说明第的值比较大,说明第i类风险类风险出现的可能性比较大。出现的可能性比较大。 m j=1 m j=1 l i=1 l i=13风险评价风险评价常常采采用用三三元元组组 r i,p i,x i 来来描描述述风风险险。其其中中r i代代表表第第i 种种风风险险,p i表表示示第第i 种种风风险险发发生生的的概概率率,x i代代表表该该风风险险带带来来的的影影响响,i=1,2,l ,表表示示

218、软软件件开开发发项目共有项目共有l 种风险,种风险,i 为风险序号。为风险序号。一一个个风风险险评评价价技技术术就就是是定定义义风风险险参参照照水水准准。对对于于大大多多数数软软件件项项目目来来说说,成成本本、进进度度、性性能能就就是是典典型型的的风风险险参参照照水水准准。在在软软件件开开发发过过程程中中由由于于成成本本超超支支、进进度度拖拖延延、软软件件性性能能下下降降、支支持持困困难难,或或它它们们的的某某种种组组合合,都都有有一一个个水水准准。当当软软件件项项目目的的风风险险的的某某种种组组合合达达到到或或超超过过了了一一个个或或多多个个参参照照水水准准时时,项项目目就就应终止。应终止。

219、3风险评价风险评价比如,在软件开发的过程中,项目的进度应与投比如,在软件开发的过程中,项目的进度应与投入的成本相一致,如果投入的成本与进度的拖延入的成本相一致,如果投入的成本与进度的拖延之间超过某一个参照水准时,项目就应该终止。之间超过某一个参照水准时,项目就应该终止。图图261给出了这样的参照曲线,当风险的一个组给出了这样的参照曲线,当风险的一个组合所引起的成本超支和进度拖延超过参照水准而合所引起的成本超支和进度拖延超过参照水准而进入图中的封闭区域时,项目将被迫终止。进入图中的封闭区域时,项目将被迫终止。3风险评价风险评价261 风险参照水准风险参照水准参照点(成本,时间)参照点(成本,时间

220、) 将造成项目终止。将造成项目终止。估算成本超出估算成本超出估估计计进进度度超超出出3风险评价风险评价一般来说,参照点不是一条平滑的曲线,而是一个一般来说,参照点不是一条平滑的曲线,而是一个易变动的区域,在这个区域要做出基于参照值组合易变动的区域,在这个区域要做出基于参照值组合的管理判断往往是不准确的。因此,风险评价过程的管理判断往往是不准确的。因此,风险评价过程可分四步进行:可分四步进行: 1)定义项目的风险参照水准;)定义项目的风险参照水准; 2)定定义义每每种种风风险险的的三三元元组组 r i,p i,x i ,并并找找出出 和每个参照水准之间的关系;和每个参照水准之间的关系; 3)预测

221、一组参照点以定义一个项目终止区域,)预测一组参照点以定义一个项目终止区域, 用一条曲线或一些易变动区域来定界;用一条曲线或一些易变动区域来定界; 4)预测各种风险组合的影响是否超出参照水准。)预测各种风险组合的影响是否超出参照水准。4风险驾驭和监控风险驾驭和监控风险分析的目的是建立处理风险的策略,监控、风险分析的目的是建立处理风险的策略,监控、驾驭风险。驾驭风险。驾驭风险是利用原型化、软件自动化、可靠性驾驭风险是利用原型化、软件自动化、可靠性工程学等技术和软件项目管理方法设法避开或工程学等技术和软件项目管理方法设法避开或转移风险。转移风险。描述风险的三元组描述风险的三元组 r i,p i,x

222、i 是驾驭风险的基是驾驭风险的基础。础。风险驾驭与监控活动如图风险驾驭与监控活动如图262所示。所示。4风险驾驭和监控风险驾驭和监控图图262 风险驾驭和监控风险驾驭和监控风险驾驭风险驾驭风险风险1风险风险2风险风险n风险风险1分析数据分析数据 r 1,p 1,x 1 风险风险1驾驭步骤驾驭步骤风险风险2分析数据分析数据 r 2,p 2,x 2 风险风险2驾驭步骤驾驭步骤风险风险n分析数据分析数据 r n,p n,x n 风险风险n驾驭步骤驾驭步骤风险驾驭和监控计划风险驾驭和监控计划【例例2.6】对开发人员的频繁流动这一风险的驾对开发人员的频繁流动这一风险的驾驭与监控。驭与监控。设设:人员的流

223、动给项目带来的风险为人员的流动给项目带来的风险为r 1,该风险发生的,该风险发生的概率的估算值概率的估算值p1为为70%,而该风险的出现给项目带,而该风险的出现给项目带来的影响的估算值来的影响的估算值x1是项目开发时间延长是项目开发时间延长15%,总,总成本增加成本增加20%。软件项目管理人员可以采取以下的。软件项目管理人员可以采取以下的风险驾驭步骤:风险驾驭步骤:1)项项目目开开始始前前要要控控制制人人员员流流动动的的原原因因,项项目目开开始始后后要设法减轻风险的影响;要设法减轻风险的影响;2)了了解解开开发发人人员员变变动动的的原原因因,在在开开发发期期间间对对这这些些原原因加以控制,降低

224、风险发生的概率;因加以控制,降低风险发生的概率;3)采用适当的方法和技术以防止人员流动给项目带)采用适当的方法和技术以防止人员流动给项目带 来损失;来损失;4)建立项目组,在开发的过程中应及时公布、交流)建立项目组,在开发的过程中应及时公布、交流 项目开发信息;项目开发信息;5)制定文档标准,建立及时生成文档的机制;)制定文档标准,建立及时生成文档的机制;6)对工作组织集体评审,使多数人都能了解工作的)对工作组织集体评审,使多数人都能了解工作的 细节和按计划进度完成自己的工作;细节和按计划进度完成自己的工作;7)为关键技术培养后备人员。)为关键技术培养后备人员。一个大型软件项目的开发可能存在一

225、个大型软件项目的开发可能存在3040种风险。种风险。如果每一种风险都有如果每一种风险都有37个风险驾驭步骤,则风险个风险驾驭步骤,则风险驾驭和监控本身也可能构成一个子项目,所以它也驾驭和监控本身也可能构成一个子项目,所以它也需要人力、时间和经费。需要人力、时间和经费。4风险驾驭和监控风险驾驭和监控为为了了更更好好地地对对风风险险进进行行驾驾驭驭和和监监控控,应应制制定定详详细细的的风风险险驾驾驭驭与与监监控控计计划划(RMMP,Risk Management and Monitoring Plan),RMMP中中给给出出了了风风险险分分析析的全部工作。的全部工作。风风险险驾驾驭驭与与监监控控计

226、计划划随随着着软软件件项项目目的的开开始始而而开开始始。风险驾驭与监控的主要目标有三个:风险驾驭与监控的主要目标有三个:1)判断一个预测的风险是否已经发生;)判断一个预测的风险是否已经发生;2)确保针对每一个风险而制定的风险驾驭步骤正在)确保针对每一个风险而制定的风险驾驭步骤正在 合理地实施;合理地实施;3)收集有关风险分析的所有信息,以备将来使用。)收集有关风险分析的所有信息,以备将来使用。表表2-15风险驾驭与监控计划目录风险驾驭与监控计划目录1引言引言1.1本文档的范围和目的本文档的范围和目的1.2概述概述a.目标目标b.风险转化的优先级风险转化的优先级1.3组织组织a.管理管理b.职责

227、职责c.工作流程工作流程1.4软件演进过程软件演进过程a.进度安排进度安排b.里程碑和评审里程碑和评审c.预算预算2风险分析风险分析2.1风险标识风险标识a.风险概述及风险源风险概述及风险源b.风险分类风险分类2.2风险估算风险估算a.估计风险概率估计风险概率b.风险估计的重要性风险估计的重要性c.估计准则估计准则d.估计误差的来源估计误差的来源2.3风险评价风险评价a.评价方法评价方法b.评价假设和局限性评价假设和局限性c.评价风险参照评价风险参照d.评价结果评价结果3风险驾驭与监控风险驾驭与监控3.1.建议建议3.2风险转化方案风险转化方案3.3控制风险转化的方案控制风险转化的方案3.4风

228、险监控过程风险监控过程4附录附录4.1软件开发形势的风险估算软件开发形势的风险估算4.2风险减轻或排除计划风险减轻或排除计划 2.6.3进度安排进度安排进度安排可能是如下两种方式之一:进度安排可能是如下两种方式之一: 1)软软件件产产品品最最终终交交付付日日期期已已经经确确定定,开开发发方方只只能能根根据最终交付日期安排进度;据最终交付日期安排进度;2)最后交付日期主要由软件开发方来确定。)最后交付日期主要由软件开发方来确定。软件项目的进度安排的准确程度可能比成本估算的软件项目的进度安排的准确程度可能比成本估算的准确程度更重要,如果进度安排不当会导致客户不准确程度更重要,如果进度安排不当会导致

229、客户不满、丧失市场机会和成本的增加。因此,进度安排满、丧失市场机会和成本的增加。因此,进度安排必须解决好以下几个问题。必须解决好以下几个问题。 1任务、人力、时间等资源的分配应与工程进任务、人力、时间等资源的分配应与工程进度相一致度相一致由于大型软件项目的开发必然是项目管理人员、分由于大型软件项目的开发必然是项目管理人员、分析人员、设计人员等的集体劳动,又是一项复杂的析人员、设计人员等的集体劳动,又是一项复杂的智力劳动,因此,必须制定合理的进度计划,并根智力劳动,因此,必须制定合理的进度计划,并根据计划合理地分配任务、人力、时间等资源。据计划合理地分配任务、人力、时间等资源。比如,人力的分配要

230、符合大型软件项目的比如,人力的分配要符合大型软件项目的RayleighNorden曲线。如果人力分配不合理,比如在设计高曲线。如果人力分配不合理,比如在设计高峰投入的程序员不足,拖延了进度,这时临时加入峰投入的程序员不足,拖延了进度,这时临时加入新的程序员不但不能加快进度,反而会使进度变得新的程序员不但不能加快进度,反而会使进度变得更慢。项目管理人员应努力寻求任务、人力、时间更慢。项目管理人员应努力寻求任务、人力、时间的最佳组合,以便在满足进度要求的前提下获得最的最佳组合,以便在满足进度要求的前提下获得最大的效益。在可能的情况下,适当减少开发人员、大的效益。在可能的情况下,适当减少开发人员、相

231、对延长一些开发时间,也可以取得较大的经济效相对延长一些开发时间,也可以取得较大的经济效益。益。2任务的分解与并行开发任务的分解与并行开发为了充分发挥开发人员的潜力、缩短工期,软件工为了充分发挥开发人员的潜力、缩短工期,软件工程项目的任务分解与安排应尽力挖掘可并行开发的程项目的任务分解与安排应尽力挖掘可并行开发的部分。部分。图图263是一个典型项目任务网络图。其中是一个典型项目任务网络图。其中“”“”表表示软件工程过程的里程碑,当软件开发活动到达某示软件工程过程的里程碑,当软件开发活动到达某个里程碑时,应当交付包括文档在内的阶段性产品个里程碑时,应当交付包括文档在内的阶段性产品并要通过评审。软件

232、开发项目的里程碑为管理人员并要通过评审。软件开发项目的里程碑为管理人员提供了项目进度的可靠依据。图中给出了各个子任提供了项目进度的可靠依据。图中给出了各个子任务间的相互依赖关系。务间的相互依赖关系。由图可见,概要设计与软件测试计划工作可以并行由图可见,概要设计与软件测试计划工作可以并行进行,对于各个模块的详细设计、编码、单元测试进行,对于各个模块的详细设计、编码、单元测试等工作和测试过程的设计工作可以并行。等工作和测试过程的设计工作可以并行。图图263 软件项目任务分解网络图软件项目任务分解网络图需求分析需求分析规格说明规格说明需求复审需求复审概要设计概要设计概要设计复审概要设计复审过程设计过

233、程设计设计走查设计走查编码编码代码走查代码走查单元测试单元测试集成测试集成测试验收测试验收测试测试计划测试计划测试过程测试过程测试复审测试复审3工作量的分配工作量的分配图图264给出了在整个软件项目定义与开发各阶给出了在整个软件项目定义与开发各阶段一种典型的工作量分布原则,称为段一种典型的工作量分布原则,称为402040分布原则。即:分布原则。即: 编码前的工作量约占编码前的工作量约占40%左右;左右; 编码的工作量仅占编码的工作量仅占20%左右;左右; 编码后的工作量约占编码后的工作量约占40%左右。左右。该原则只能从宏观上作为一个指南,实际工作该原则只能从宏观上作为一个指南,实际工作量分配

234、的比例必须根据具体项目的类型和特点量分配的比例必须根据具体项目的类型和特点来确定。比如,和人命相关的软件项目在测试来确定。比如,和人命相关的软件项目在测试阶段的工作量可能达到其余各个阶段的阶段的工作量可能达到其余各个阶段的3 5倍。倍。图图264 软件开发工作量的分布软件开发工作量的分布分析和设计分析和设计40%50%编码编码15%20%测试和调试测试和调试40%50%3工作量的分配工作量的分配在制定进度计划时,可以利用估算模型对工作量做在制定进度计划时,可以利用估算模型对工作量做出估计。如果利用基本出估计。如果利用基本CoCoMo模型或其他公式,模型或其他公式,可参照表可参照表216给出的进

235、度分配百分比来安排进度。给出的进度分配百分比来安排进度。可按照表可按照表216给出的比例进一步确定每一阶段所需给出的比例进一步确定每一阶段所需的开发时间。然后,在每一阶段,进行任务分解,的开发时间。然后,在每一阶段,进行任务分解,对各个任务再进行工作量和进度的分配。对各个任务再进行工作量和进度的分配。表表216 进度分配百分比进度分配百分比阶段阶段需求需求分析分析设计设计编码与编码与单元测试单元测试组装与测试组装与测试占开发时占开发时间百分比间百分比10301727256016283工作量的分配工作量的分配由于待开发软件的类型不同,规模不同,由于待开发软件的类型不同,规模不同,所需的开发工作量

236、和进度也不同。利用所需的开发工作量和进度也不同。利用基本基本CoCoMo模型,可以给出较为准确的模型,可以给出较为准确的进度安排,如表进度安排,如表217所示。所示。如果要进一步缩短开发时间、保证开发如果要进一步缩短开发时间、保证开发进度,就必须考虑影响工作量的各个因进度,就必须考虑影响工作量的各个因素,按照可减小工作量的因素取值,并素,按照可减小工作量的因素取值,并利用中间或详细利用中间或详细CoCoMo模型给出比较精模型给出比较精确的工作量的分配和进度安排。确的工作量的分配和进度安排。表表2-17较精确的进度分配表较精确的进度分配表 项目项目类型类型微型微型2小型小型8中型中型32大型大型

237、128特大型特大型512组组织织型型计划与需求计划与需求设计设计编码与单元测试编码与单元测试组装与测试组装与测试10111217191919196359555118222630半半独独立立型型计划与需求计划与需求设计设计编码与单元测试编码与单元测试组装与测试组装与测试1618202224242526272856524844402023262932嵌嵌入入型型计划与需求计划与需求设计设计编码与单元测试编码与单元测试组装与测试组装与测试2428323640303234363848444036322224262830规模(规模(KLOC) 进度分配进度分配阶段阶段 4具体进度安排具体进度安排目前,软

238、件项目的进度安排的两种比较常用的目前,软件项目的进度安排的两种比较常用的方法是程序评估与审查技术(方法是程序评估与审查技术(PERT)和关键)和关键路径法(路径法(CPM),这两种方法都生成描述项目),这两种方法都生成描述项目进展状态的任务网络图。进展状态的任务网络图。图图265给出了用给出了用MacProject软件工具生成的软件工具生成的项目进度安排图的一部分。图中:项目进度安排图的一部分。图中: 方框方框子任务;子任务; 带圆角的方框带圆角的方框里程碑;里程碑; 框左上方的日期框左上方的日期子任务的开始时间;子任务的开始时间; 框左下角的数字框左下角的数字完成本子任务所需的天完成本子任务

239、所需的天数数4具体进度安排具体进度安排图图265 软件项目进度安排网络图(部分)软件项目进度安排网络图(部分)过程设计过程设计完成完成控制模块控制模块代码走查代码走查计算模块计算模块代码走查代码走查界面模块界面模块代码走查代码走查开始开始集成测试集成测试控制模块控制模块过程设计过程设计5 / 18 / 964走查与迭代走查与迭代5 / 24 / 962计算模块计算模块过程设计过程设计5 / 18 / 962走查与迭代走查与迭代5 / 22 / 961走查与迭代走查与迭代5 / 25 / 961界面模块界面模块过程设计过程设计5 / 18 / 965控制模块控制模块编码编码5 / 28 / 96

240、1计算模块计算模块编码编码5 / 28 / 961界面模块界面模块编码编码5 / 28 / 9625 / 27 / 9605 / 28 / 9605 / 28 / 9605 / 29 / 960控制模块控制模块单元测试单元测试5 / 29 / 961计算模块计算模块单元测试单元测试5 / 29 / 961界面模块界面模块单元测试单元测试5 / 29 / 9625 / 31 / 960基于设计启基于设计启动测试过程动测试过程5 / 15 / 966单元测试单元测试结果复审结果复审5 / 29 / 9624具体进度安排具体进度安排PERT和和CPM方方法法为为软软件件项项目目规规划划人人员员提提供

241、供了了定定量描述工具,具体有:量描述工具,具体有:1)用用经经验验模模型型估估算算完完成成每每个个子子任任务务所所需需的的工工作作量和时间;量和时间;2)确确定定关关键键路路径径。完完成成关关键键路路径径上上的的所所有有任任务务所需时间为项目开发所需的最短时间;所需时间为项目开发所需的最短时间;3)确确定定各各子子任任务务的的时时间间窗窗口口,即即确确定定各各子子任任务务的最早启动时间和最迟启动时间。的最早启动时间和最迟启动时间。4具体进度安排具体进度安排某某子子任任务务的的最最早早启启动动时时间间是是指指该该子子任任务务的的所所有有各前导子任务完成的最早时间;各前导子任务完成的最早时间;该该

242、子子任任务务的的最最早早启启动动时时间间与与完完成成该该子子任任务务所所需需时间之和就是该子任务的最早结束时间。时间之和就是该子任务的最早结束时间。而而某某个个子子任任务务的的最最迟迟启启动动时时间间是是指指在在保保证证项项目目按时完成的前提下最晚启动该子任务的时间;按时完成的前提下最晚启动该子任务的时间;最最迟迟启启动动时时间间与与完完成成该该子子任任务务所所需需时时间间之之和和就就是该子任务的最迟结束时间。是该子任务的最迟结束时间。 在制定进度计划时,应首先找到影响进度的在制定进度计划时,应首先找到影响进度的关键路径,并在关键路径上安排一定的节假日关键路径,并在关键路径上安排一定的节假日和

243、机动时间,以便应付可能出现的问题和难点。和机动时间,以便应付可能出现的问题和难点。2.6.4软件质量保证软件质量保证1软件质量保证活动的内容软件质量保证活动的内容 为为了了开开发发出出高高质质量量的的软软件件,达达到到软软件件工工程程的的目目标标,必必须须有有计计划划地地、系系统统地地进进行行软软件件质质量量保保证证(SQA,Software Quality Assurance)活活动。动。SQA活动主要包括以下内容:活动主要包括以下内容:1)在在需需求求分分析析阶阶段段提提出出对对软软件件质质量量的的需需求求,并并将将其其自自顶顶向向下下逐逐步步分分解解为为可可以以度度量量和和控控制制的的质

244、质量量要要素素,为为软软件件开开发发、维维护护各各阶阶段段软软件件质质量量的的定性分析和定量度量打下基础;定性分析和定量度量打下基础;2)研究并选用软件开发方法和工具;)研究并选用软件开发方法和工具;1软件质量保证活动的内容软件质量保证活动的内容3)对软件生存周期各阶段进行正式的技术评审)对软件生存周期各阶段进行正式的技术评审 (FTR););4)制定并实施软件测试策略和测试计划;)制定并实施软件测试策略和测试计划;5)及时生成软件文档并进行其版本控制;)及时生成软件文档并进行其版本控制;6)保证软件开发过程与选用的软件开发标准相一致;)保证软件开发过程与选用的软件开发标准相一致;7)建立软件

245、质量要素的度量机制;)建立软件质量要素的度量机制;8)记录)记录SQA的各项活动,并生成各种的各项活动,并生成各种SQA报告。报告。 这里仅介绍软件工程的正式技术评审,其他这里仅介绍软件工程的正式技术评审,其他内容在本书的其他章节中介绍。内容在本书的其他章节中介绍。2软件工程的正式技术评审软件工程的正式技术评审1)FTR的作用的作用FTR是保证软件质量的重要措施。是保证软件质量的重要措施。 由于开发者在软件生存周期各个阶段的工作都由于开发者在软件生存周期各个阶段的工作都可能产生错误。错误将随着工作的进展而具有一种可能产生错误。错误将随着工作的进展而具有一种积累和放大效应,如图积累和放大效应,如

246、图266所示。所以,在每一个所示。所以,在每一个阶段结束时,都要进行正式的技术评审,以便及时阶段结束时,都要进行正式的技术评审,以便及时发现并消除阶段性产品中的错误或缺陷,从而可以发现并消除阶段性产品中的错误或缺陷,从而可以保证软件质量。保证软件质量。 正式的技术评审是降低软件成本的重要措施。正式的技术评审是降低软件成本的重要措施。 软件开发实践表明,后期改正一个错误要比早软件开发实践表明,后期改正一个错误要比早期改正同一个错误需要付出的成本和代价高出二到期改正同一个错误需要付出的成本和代价高出二到三个数量级,错误发现得越早,越易改正,损失越三个数量级,错误发现得越早,越易改正,损失越少。少。

247、图图266 软件错误的积累和放大效应软件错误的积累和放大效应原始需求原始需求 正确的规格说明正确的规格说明 错误的规格说明错误的规格说明 正确的设计正确的设计 错误的设计错误的设计 对错误说明的设计对错误说明的设计 正确编码正确编码 错误编码错误编码 对错误设计的编码对错误设计的编码 对错误说明的编码对错误说明的编码 正确功能正确功能 可改正的错误可改正的错误 不可改正的错误不可改正的错误 潜伏的错误潜伏的错误不完善的软件产品不完善的软件产品需求分析需求分析设设 计计编编 码码测测 试试2软件工程的正式技术评审软件工程的正式技术评审2)正式的技术评审的组织和过程)正式的技术评审的组织和过程 F

248、TR采用正式会议的方式。通常的做法采用正式会议的方式。通常的做法是成立一个由是成立一个由35人组成的技术评审小组,他人组成的技术评审小组,他们是熟悉软件项目且水平较高的技术人员、管们是熟悉软件项目且水平较高的技术人员、管理人员。其中由组长理人员。其中由组长1人、设计者人、设计者1人、评审员人、评审员13人组成,人组成,1人兼做记录员。组长的任务是组人兼做记录员。组长的任务是组织和领导评审过程的工作。设计者的任务是负织和领导评审过程的工作。设计者的任务是负责回答技术上的问题,评审员的任务是合理、责回答技术上的问题,评审员的任务是合理、公证地评论工程中的技术问题。公证地评论工程中的技术问题。2软件

249、工程的正式技术评审软件工程的正式技术评审2)正式的技术评审的组织和过程)正式的技术评审的组织和过程FTR的过程一般由的过程一般由6个步骤组成:个步骤组成:制定评审计划,即安排好评审会议日程。制定评审计划,即安排好评审会议日程。介绍工程情况。介绍工程情况。 设计者应向评审小组提供有关阶段产品的各种设计者应向评审小组提供有关阶段产品的各种文档,其中包括软件质量要素的度量数据及软件文档,其中包括软件质量要素的度量数据及软件质量的阶段性追踪报告;并应从技术角度简要地质量的阶段性追踪报告;并应从技术角度简要地介绍软件阶段性产品和文档资料的概况,且仅介介绍软件阶段性产品和文档资料的概况,且仅介绍基本事实,

250、讲清做了什么,如何做的,不要介绍基本事实,讲清做了什么,如何做的,不要介绍做法的理由,避免产生误导。绍做法的理由,避免产生误导。2)正式的技术评审的组织和过程)正式的技术评审的组织和过程准备工作。评审小组成员自己审阅文档资料,并准备工作。评审小组成员自己审阅文档资料,并把发现的问题和错误记录下来,以备在评审会议上把发现的问题和错误记录下来,以备在评审会议上讨论。讨论。 正式召开评审会议。评审会议由组长主持,评审小正式召开评审会议。评审会议由组长主持,评审小组人员参加,记录员记录。评审人员根据事先准备组人员参加,记录员记录。评审人员根据事先准备的有关设计指标完成情况、工程达到的技术水平等的有关设

251、计指标完成情况、工程达到的技术水平等问题和发现的错误提问,设计者回答。评审只针对问题和发现的错误提问,设计者回答。评审只针对产品而不针对具体人员、只指出问题而不讨论如何产品而不针对具体人员、只指出问题而不讨论如何解决问题,并要避免无休止的争论。评审会议一般解决问题,并要避免无休止的争论。评审会议一般不超过不超过2小时。会议结束时,必须对参评产品是否小时。会议结束时,必须对参评产品是否通过评审明确表态,并通过评审报告。报告内容有:通过评审明确表态,并通过评审报告。报告内容有:会议的主持人和参加人、评审的产品及内容、发现会议的主持人和参加人、评审的产品及内容、发现的问题及评审结论等。的问题及评审结

252、论等。2)正式的技术评审的组织和过程)正式的技术评审的组织和过程工程返工。由评审组长召开由设计者集体参加的工程返工。由评审组长召开由设计者集体参加的讨论会,讨论讨论会,讨论FTR会议的评审结论,分析产生问题会议的评审结论,分析产生问题和错误的原因,限期解决或改正。和错误的原因,限期解决或改正。工程复审。当工程中的问题和错误由设计者解决或工程复审。当工程中的问题和错误由设计者解决或改正后,由评审组长再次召开评审会议,对返工的改正后,由评审组长再次召开评审会议,对返工的结果进行复审,如此反复、直至通过复审为止。结果进行复审,如此反复、直至通过复审为止。 需要指出,对于大型、复杂、重要的软件工需要指

253、出,对于大型、复杂、重要的软件工程项目,在正式的技术评审之后,还要进行管理复程项目,在正式的技术评审之后,还要进行管理复审。管理复审是对软件工程进行管理和控制的重要审。管理复审是对软件工程进行管理和控制的重要手段,它可以及时发现工程中的问题,采取措施加手段,它可以及时发现工程中的问题,采取措施加以解决。如果发现工程项目不划算继续开发时,应以解决。如果发现工程项目不划算继续开发时,应决策停止开发,以避免造成更大的损失。决策停止开发,以避免造成更大的损失。2.6.5软件项目组织的建立与人员分工软件项目组织的建立与人员分工1组织原则组织原则 建立一个好的软件项目组织是保证软件开建立一个好的软件项目组

254、织是保证软件开发能够顺利进行的必要条件之一。在建立软发能够顺利进行的必要条件之一。在建立软件开发组织的时候要注意的原则是:件开发组织的时候要注意的原则是:尽早落实责任。特别是项目负责人的责任;尽早落实责任。特别是项目负责人的责任;减少接口。组织应该有良好的组织结构、合减少接口。组织应该有良好的组织结构、合 理的人员分工,以减少不必要的通信;理的人员分工,以减少不必要的通信;责权均衡。指软件经理的责任不应比赋予他责权均衡。指软件经理的责任不应比赋予他 的权力还大。的权力还大。2组织结构的模式组织结构的模式常采用的常采用的3种种1)按课题划分的模式()按课题划分的模式(Project Format

255、) 将将软软件件人人员员按按照照项项目目(课课题题)组组成成小小组组,小小组组成成员员始始终终参参加加所所承承担担课课题题的的各各项项任任务务,即即参参加加软软件件产产品品的的定定义义、设设计计、编编码码、测测试试、评评审审、文文档档编编制制、直到维护的全过程。直到维护的全过程。2)按职能划分的模式()按职能划分的模式(Functional Format) 将人员按照软件生存周期各个阶段划分成若干将人员按照软件生存周期各个阶段划分成若干个专业小组。比如分别建立计划组、需求分析组、个专业小组。比如分别建立计划组、需求分析组、设计组、实现组、测试组、维护组、质量保证组等设计组、实现组、测试组、维护

256、组、质量保证组等等。等。 优点:便于熟悉本组的工作。优点:便于熟悉本组的工作。 缺点:各个小组之间通信频繁。缺点:各个小组之间通信频繁。2组织结构的模式组织结构的模式常采用的常采用的3种种3)矩阵模式()矩阵模式(Matrix Format) 这这种种模模式式是是以以上上2种种模模式式的的组组合合。一一方方面面,按按工工作作性性质质成成立立一一些些专专门门组组,如如开开发发组组、业业务务组组、测测试试组组、维维护护组组等等;另另一一方方面面,每每个个项项目目都都指指派派一一个个项项目目经经理理负负责责管管理理。于于是是,每每个个软软件件人人员员即即属属于于某某一一个个专专门门组组,又又参参加加

257、某某一一个个项项目目的的工工作作。因因此此,他他要要接接受受专专门门组组和和项项目目经经理理的双重领导。的双重领导。 优优点点:专专门门组组内内的的成成员员可可互互相相交交流流在在各各自自参参加加的的项项目目中中取取得得的的经经验验教教训训,从从而而有有利利于于发发挥挥专专业业人人员员的的作作用用;而而每每个个项项目目又又有有专专人人负负责责管管理,有利于项目完成。理,有利于项目完成。3程序设计小组的组织形式程序设计小组的组织形式程序设计小组的组织和小组内部人员的组织形式对生程序设计小组的组织和小组内部人员的组织形式对生产率都会产生影响。常采用的组织形式有主程序员制产率都会产生影响。常采用的组

258、织形式有主程序员制小组、民主制小组、层次式小组小组、民主制小组、层次式小组3种。种。1)主程序员制小组()主程序员制小组(Chief Programmer Team) 小小组组由由1位位主主程程序序员员(高高级级工工程程师师)、2 5位位程程序序员员(技技术术员员)、1位位后后援援工工程程师师组组成成,还还可可以以配配备备辅辅助助人人员员(如如资资料料员员)。主主程程序序员员是是小小组组的的领领导导和和核核心心,他他负负责责小小组组全全部部技技术术活活动动的的计计划划、协协调调与与管管理理、关关键键技技术术、评评审审等等工工作作。程程序序员员负负责责项项目目的的开开发发、文文档档资资料料的的编

259、编写写等等具具体体工工作作。后后援援工工程程师师协协助助和和支支持持主主程程序序员员的的工工作作,也也做做部部分分具具体体工工作作,必必要要时时代代替替主主程程序序员员的工作。的工作。 (a)主程序员制小组)主程序员制小组 这种组织形式强调主程序员与其他程序员的直接这种组织形式强调主程序员与其他程序员的直接联系,从而简化了程序员之间的通信。而工作效果联系,从而简化了程序员之间的通信。而工作效果的好坏主要取决于主程序员的技术水平和管理才能。的好坏主要取决于主程序员的技术水平和管理才能。主程序员主程序员后援后援工程师工程师程序员程序员资料员资料员2)民主制小组()民主制小组(DemocraticT

260、eam)虽然也设置一位组长,但是每当遇到问题时,组内的成虽然也设置一位组长,但是每当遇到问题时,组内的成员可以进行民主协商,以平等的地位交换意见。工作目员可以进行民主协商,以平等的地位交换意见。工作目标的制定、做出决定都有全体组员参加,即强调发挥小标的制定、做出决定都有全体组员参加,即强调发挥小组每一个成员的积极、主动性和协作精神。组每一个成员的积极、主动性和协作精神。优点:集思广益、取长补短,适于时间长难度大的项目;优点:集思广益、取长补短,适于时间长难度大的项目;缺点:削弱了个人的责任心、并使开发效率有所降低。缺点:削弱了个人的责任心、并使开发效率有所降低。(b)民主制小组)民主制小组3)

261、层次式小组()层次式小组(HierarchicalTeam)如图(如图(c)所示,即将组内人员分为)所示,即将组内人员分为3级:级: 组长组长1人:他作为项目负责人负责全组工作;他人:他作为项目负责人负责全组工作;他直直 接领导接领导2 7名高级程序员;名高级程序员; 高级程序员:通过基层小组管理若干名程序员。高级程序员:通过基层小组管理若干名程序员。层次式小组比较适合于这种本身就是层次结构状的层次式小组比较适合于这种本身就是层次结构状的课题或大型软件项目。此时可以按照组织形式划分课题或大型软件项目。此时可以按照组织形式划分课题,然后把子项目分配给各个基层小组去完成。课题,然后把子项目分配给各

262、个基层小组去完成。3)层次式小组)层次式小组软件开发小组的组织形式应根据实际问题的特点进软件开发小组的组织形式应根据实际问题的特点进行调整,软件开发小组内部和小组之间应经常交流行调整,软件开发小组内部和小组之间应经常交流情况和信息,以减少误解,消除软件中的个人特征,情况和信息,以减少误解,消除软件中的个人特征,从而有利于软件质量的提高。从而有利于软件质量的提高。项目负责人项目负责人高级程序员高级程序员若干程序员若干程序员若干程序员若干程序员(c)层次式小组)层次式小组4人员配备人员配备q实践表明,软件开发各个阶段所需要的技术人员的实践表明,软件开发各个阶段所需要的技术人员的类型、层次和数量是不

263、同的。类型、层次和数量是不同的。在软件项目的计划和分析阶段,只需要少数人,主在软件项目的计划和分析阶段,只需要少数人,主要是系统分析员、从事软件系统论证和概要设计的要是系统分析员、从事软件系统论证和概要设计的软件高级工程师和项目高级管理人员,人数虽不多,软件高级工程师和项目高级管理人员,人数虽不多,但都是高层次人员。但都是高层次人员。概要设计阶段要增加几个高级程序员。概要设计阶段要增加几个高级程序员。详细设计阶段要增加软件工程师和程序员。详细设计阶段要增加软件工程师和程序员。在编码和测试阶段还要增加初级程序员和软件测试在编码和测试阶段还要增加初级程序员和软件测试员。在这一过程中,各类专门人员和

264、管理人员也在员。在这一过程中,各类专门人员和管理人员也在逐渐增加。逐渐增加。到验收测试时,维护人员也加入其中,使各类人员到验收测试时,维护人员也加入其中,使各类人员的数量达到了最高峰。的数量达到了最高峰。4人员配备人员配备在软件产品交付使用的初期,参加软件维护的人员较在软件产品交付使用的初期,参加软件维护的人员较多,此时为防止给维护活动带来困难,不应过早地解多,此时为防止给维护活动带来困难,不应过早地解散软件开发人员。软件经过一段时间的纠错性维护后,散软件开发人员。软件经过一段时间的纠错性维护后,出错率会明显减少,这时可以逐步撤出软件开发人员,出错率会明显减少,这时可以逐步撤出软件开发人员,之

265、后,软件维护人员也逐步撤离。之后,软件维护人员也逐步撤离。q按照上述方法安排人力资源符合按照上述方法安排人力资源符合RayleighNorden曲线,曲线,即符合软件工程项目工作量的分布,是比较合理的。即符合软件工程项目工作量的分布,是比较合理的。q根据根据Putnam给出的开发工作量与开发时间的给出的开发工作量与开发时间的4次方成次方成反比的规律,可以得出软件开发人员与开发时间的折反比的规律,可以得出软件开发人员与开发时间的折衷定律:在时间允许的条件下,通过适当减少开发人衷定律:在时间允许的条件下,通过适当减少开发人员就会提高工作效率,大大降低成本。员就会提高工作效率,大大降低成本。q实践表

266、明,向一个已经延期的软件项目追加新的开发实践表明,向一个已经延期的软件项目追加新的开发人员,可能使项目完成得更晚。人员,可能使项目完成得更晚。1)配备人员的)配备人员的3个主要个主要原则原则重质量:软件项目开发是一种高智力、高技术型重质量:软件项目开发是一种高智力、高技术型的的 工作,使用少量有实践经验、工作,使用少量有实践经验、素质高、有素质高、有 能力的人员去完成关键性任务,能力的人员去完成关键性任务,常常比使常常比使 用较多的经验不足的人员更有用较多的经验不足的人员更有效。效。重培训:花力气培养所需的技术和管理人员重培训:花力气培养所需的技术和管理人员 是解决人员问题的有效方法。是解决人

267、员问题的有效方法。双阶梯提升:人员要么按照技术职务提升,要么按双阶梯提升:人员要么按照技术职务提升,要么按 照管理职务提升,两者不应兼照管理职务提升,两者不应兼得。得。2)对项目经理人员的要求)对项目经理人员的要求对项目经理除了管理能力外,还要求应具有的能力:对项目经理除了管理能力外,还要求应具有的能力: 把把用用户户提提出出的的非非技技术术性性要要求求加加以以整整理理提炼,提炼, 以以技技术术说说明明书书形形式式转转告告给给分分析析员员和和测试员。测试员。 能能说说服服用用户户放放弃弃那那些些不不切切实实际际的的要要求求,以保以保 证合理的要求得以满足。证合理的要求得以满足。 具有综合问题的

268、能力。具有综合问题的能力。 具有很强的沟通能力。具有很强的沟通能力。3)评价人员的标准)评价人员的标准需需要要确确定定正正确确的的人人员员评评价价标标准准并并采采用用较较好好的的方方法法了了解解和评价开发人员的素质、管理能力和技术水平。和评价开发人员的素质、管理能力和技术水平。一个好的开发人员应具备的素质和能力有:一个好的开发人员应具备的素质和能力有: 善于与周围人员团结协作,建立良好的人际善于与周围人员团结协作,建立良好的人际 关系,善于听取别人的意见。关系,善于听取别人的意见。 牢固掌握计算机软件的基本知识和技能。牢固掌握计算机软件的基本知识和技能。 善善于于分分析析和和综综合合问问题题,

269、具具有有严严密密的的逻逻辑辑思思维维能力。能力。 工作踏实、细致,遵循标准和规范,不靠碰工作踏实、细致,遵循标准和规范,不靠碰 运气,具有严格的科学作风。运气,具有严格的科学作风。 工作中表现有责任心、有毅力、有耐心。工作中表现有责任心、有毅力、有耐心。 具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。2.6.6软件项目的跟踪与控制软件项目的跟踪与控制软软件件项项目目管管理理的的重重要要任任务务是是对对正正在在开开发发的的软软件件项项目目进进行行跟跟踪踪和和控控制制,以以便便及及时时发发现现和和处处理理问问题题,使使开开发发人人员员能能够够按按计计划划和和要要求求有有条条不不紊紊地

270、地工作。工作。项目管理人员经常采用的跟踪方式主要有:项目管理人员经常采用的跟踪方式主要有: 定定期期召召开开项项目目工工作作会会议议,让让每每个个项项目目成成员汇报任务进展情况和存在的问题。员汇报任务进展情况和存在的问题。 在在软软件件开开发发过过程程中中,请请专专家家和和用用户户按按照照里里程程碑碑对对阶阶段段性性成成果果进进行行管管理理复复审审,判判定定实实际际开发进度是否与计划中定义的里程碑保持一致。开发进度是否与计划中定义的里程碑保持一致。2.6.6软件项目的跟踪与控制软件项目的跟踪与控制对照进度计划检查各子任务的实际开始时间是对照进度计划检查各子任务的实际开始时间是否与计划的开始时间

271、一致。否与计划的开始时间一致。及时了解项目开发人员的进展情况及存在的主及时了解项目开发人员的进展情况及存在的主要问题。要问题。 如果在跟踪的过程中发现了问题,比如,如果在跟踪的过程中发现了问题,比如,关键路径上的某个子任务拖后了,管理人员应关键路径上的某个子任务拖后了,管理人员应迅速查明原因,及时采取措施尽早解决。比如,迅速查明原因,及时采取措施尽早解决。比如,利用机动时间或节假日加班等方法赶上进度。利用机动时间或节假日加班等方法赶上进度。2.6.7软件开发标准软件开发标准软软件件开开发发的的标标准准化化有有利利于于提提高高软软件件的的一一致致性性、完完整整性、可理解性,有助于提高软件的质量。

272、性、可理解性,有助于提高软件的质量。目前我国颁布的部分软件开发标准有:目前我国颁布的部分软件开发标准有:1.计算机软件开发规范计算机软件开发规范 GB 856688;2.计算机软件产品开发文件编制指南计算机软件产品开发文件编制指南 GB 856788;3.计算机软件需求说明编制指南计算机软件需求说明编制指南 GB 938588;4.计算机软件测试文件编制规范计算机软件测试文件编制规范 GB 938688;5.计算机软件质量保证计划规范计算机软件质量保证计划规范 GB/T 1250490;6.计算机软件配置管理计划规范计算机软件配置管理计划规范 GB/T 1250590。2.6.7软件开发标准软

273、件开发标准国外的部分软件工程标准有:国外的部分软件工程标准有:1软件工程术语标准词汇软件工程术语标准词汇 IEEE Std 7291983;2软件质量保证计划标准软件质量保证计划标准 IEEE Std 7301984;3软件配置管理计划标准软件配置管理计划标准 IEEE Std 8281983;4软件测试文档标准软件测试文档标准 IEEE Std 8291983;5软件需求规格说明指南软件需求规格说明指南 IEEE Std 8301983;6军用软件开发标准军用软件开发标准 DOD Std 1679A(Navy)。7质量管理体系标准质量管理体系标准 ISO9000系列标准系列标准2.6.7软件

274、开发标准软件开发标准其中:其中:IEEEInstitute of Electrical and Electronics Engineers, 指(美国)电气和电子工程师协会;指(美国)电气和电子工程师协会;DODDepartment of Defense, 指(美国)国防部。指(美国)国防部。Navy海军部;海军部;ISOInternational Standards Organization, 指国际标准化组织。指国际标准化组织。软件项目管理的软件项目管理的CASE工具工具v软件项目管理的软件项目管理的CASE工具十分丰富,主要有:工具十分丰富,主要有:正文正文/表格表格/图形编辑工具;图形

275、编辑工具;工作量和成本估算工具;工作量和成本估算工具;制定工程计划工具、制定项目进度工具、软件质量、制定工程计划工具、制定项目进度工具、软件质量、复杂性、可靠性度量工具;复杂性、可靠性度量工具;配置管理工具;配置管理工具;报告生成工具等等。报告生成工具等等。v这些工具应该有统一的界面,并应按照一定规则访问这些工具应该有统一的界面,并应按照一定规则访问软件工程信息库中的软件项目信息(包括:项目合同、软件工程信息库中的软件项目信息(包括:项目合同、工程计划、工程进度表、人员组织与分工、开发各阶工程计划、工程进度表、人员组织与分工、开发各阶段的产品及评审文件、相关的软件文档标准等等)。段的产品及评审

276、文件、相关的软件文档标准等等)。习题思考题习题思考题2.4 、2.5、 2.7、 2.8、 2.9、 2.102.4 已知有一个国外典型的软件项目的记录,开发人员已知有一个国外典型的软件项目的记录,开发人员M=3人,其代码行数人,其代码行数=12.1KLOC,工作量,工作量E=24PM,成,成本本S=168000美元,错误数美元,错误数N=29,文档页数,文档页数Pd=365页。页。试计算开发该软件项目的生产率试计算开发该软件项目的生产率P、平均成本、平均成本C、代码、代码出错率出错率EQR和文档率和文档率D。解:解: 1软件开发的生产率软件开发的生产率P为:为: P = L / E = 12

277、.1103LOC / 24PM = 504 LOC/PM 2开发每行代码的平均成本开发每行代码的平均成本C为:为: C = S / L = 168000美美元元 / 12100LOC=13.9美美元元/LOC 3代码出错率代码出错率EQR为:为: EQR = N / L = 29个个/12.1KLOC=2.4个个/KLOC 4软件的文档率软件的文档率D为:为: D = Pd / L = 365页页 / 12.1KLOC = 30页页/ KLOC2.5 已知某软件项目的特征为:用户输入数为已知某软件项目的特征为:用户输入数为30,用户,用户输出数为输出数为60,用户查询数为,用户查询数为24,共

278、有,共有8个文件,有个文件,有2个个外部界面。如果每个信息量的加权因子都取外部界面。如果每个信息量的加权因子都取“一般一般”值,所有的技术复杂性调节因子都取值,所有的技术复杂性调节因子都取“普通普通”值,用值,用Albrecht方法计算该软件项目的功能点。方法计算该软件项目的功能点。解:基本功能点解:基本功能点CT为:为: CT =用户输入数用户输入数 4+用户输出数用户输出数5+ +用户查询数用户查询数4+文件数文件数10+外部接口数外部接口数7 =304+605+244+810+27 =610 FP = CTTCF = CT 0.65 + 0.01F i = 610 0.65 + 0.01

279、 3 14 = 652.7功能点功能点答:该软件项目共有答:该软件项目共有652.7功能点。功能点。14 i=1K = = 1 / 0.5 4 = 162.7 根据根据Putnam模型,模型,Et d4 = 常数,其中常数,其中E为工作为工作量(人年),量(人年),t d为开发时间(年)。如果将开为开发时间(年)。如果将开发时间减少到原计划的发时间减少到原计划的50%,其工作量将增加,其工作量将增加多少倍?多少倍? 解:根据解:根据Putnam估算模型估算模型L = Ck E1/3 td 4/3 可得:可得: E = L3 / (Ck3 td4) 于是工作量增加的倍数于是工作量增加的倍数K为:

280、为: L3/ Ck3(0.5t d ) 4 L3 / Ck3 ( t d ) 4 答:工作量将增加答:工作量将增加16倍。倍。2.8 如图如图1所示的程序流程图,试计算其巡回秩数所示的程序流程图,试计算其巡回秩数V(G)。解:由程序流程图画流图如下:解:由程序流程图画流图如下: (1)V(G)=E N +2=13 10 +2=5 (2)V(G)=封闭区域个数封闭区域个数=5 (3)V(G)=谓词结点个数谓词结点个数+1=4+1=5图图1 程序流程图程序流程图开始开始abcdej结束结束fghidabcfhgeijR2R1R3R4R512354671011 1213892.9 甲甲乙乙两两名名程

281、程序序测测试试员员同同时时对对一一个个程程序序进进行行独独立立测测试试一一个个月月,甲甲发发现现并并改改正正了了24个个错错误误;乙乙发发现现并并改改正正了了20个个错错误误,其其中中有有10个个错错误误甲甲也也发发现现了了。试试估估算算该该程程序序经经过过甲甲乙乙两两人人这这一一个个月月测测试试后后,还还残残留留多多少少个个错错误误?解:由题意知,解:由题意知,E 1 = 24, E 2 = 20,E 0 = 10,该程序所含,该程序所含错误总数可估算如下:错误总数可估算如下: ET=E1E 2 / E 0 = 24 20 / 10 = 48(个)(个) 经过一个月的测试,该程序还残留的错误

282、数为:经过一个月的测试,该程序还残留的错误数为: E r()= ET EC( ) = ET (E 1+E 2 E 0) =48 (24+2010) =14 答:还残留答:还残留14个错误个错误课程名称:软件工程课程名称:软件工程 第第8讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第3章章 计算机系统工程计算机系统工程教学目的:了解计算机系统工程的概念,理解可行性教学目的:了解计算机系统工程的概念,理解可行性研究的基本任务和步骤、理解成本研究的基本任务和步骤、理解成本/效益分析的方效益分析的方法,了解系统模型、系统规格说明和评审。法,了解系统模型、系统规格说明和评审。教

283、学重点:可行性研究。教学重点:可行性研究。教学难点:成本教学难点:成本/效益分析。效益分析。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第3章章 计算机系统工程计算机系统工程一般地,基于计算机的系统是由硬件、软件、一般地,基于计算机的系统是由硬件、软件、人、文档、数据库、过程等系统要素就构成人、文档、数据库、过程等系统要素就构成的。其中各系统要素间的关系如图的。其中各系统要素间的关系如图301所示。所示。若不考虑系统内部结构和功能,基于计算机若不考虑系统内部结构和功能,基于计算机的系统可用输入的系统可用输入处理处理输出(输出(IPO)模型表示。)模型表示。其中:其中:

284、 I(Input)指信息的输入;)指信息的输入; P(Process)指对信息的处理;)指对信息的处理; O(Output)指信息的输出。)指信息的输出。图图301 基于计算机的系统的要素及其间的关系基于计算机的系统的要素及其间的关系人人硬件硬件软件软件文档文档过程过程数据库数据库系统系统输入输入输输出出基于计算机的系统基于计算机的系统第第3章章 计算机系统工程计算机系统工程对于大型基于计算机的系统,其要素的本对于大型基于计算机的系统,其要素的本身可能也是一个基于计算机的系统。这时,身可能也是一个基于计算机的系统。这时,系统将具有复杂的层次结构。系统将具有复杂的层次结构。本章主要包括计算机系统

285、工程的概念、系本章主要包括计算机系统工程的概念、系统的可行性研究、系统建模与模拟、系统统的可行性研究、系统建模与模拟、系统规格说明与评审等内容。规格说明与评审等内容。3.1计算机系统工程的概念计算机系统工程的概念计算机系统工程是用工程、科学和数学的原则与方计算机系统工程是用工程、科学和数学的原则与方法研制基于计算机的系统的有关技术、方法和过程。法研制基于计算机的系统的有关技术、方法和过程。计算机系统工程是一种从系统层面上的问题求解活计算机系统工程是一种从系统层面上的问题求解活动。在开始构造一个新的基于计算机的系统时:动。在开始构造一个新的基于计算机的系统时:计算机系统工程师(系统分析人员和系统

286、开发人员)计算机系统工程师(系统分析人员和系统开发人员)首先根据用户定义的系统目标和约束条件进行系统首先根据用户定义的系统目标和约束条件进行系统可行性研究和系统需求分析,此时必须做大量、细可行性研究和系统需求分析,此时必须做大量、细致的研究、论证工作,如有必要,还需建造系统或致的研究、论证工作,如有必要,还需建造系统或其中关键部分的原型,以便正确、完整地确定系统其中关键部分的原型,以便正确、完整地确定系统的功能需求和性能需求。的功能需求和性能需求。3.1计算机系统工程的概念计算机系统工程的概念然后,系统工程师将系统功能和性能分配到系然后,系统工程师将系统功能和性能分配到系统各要素之中。统各要素

287、之中。 此时系统工程师应提出多种预选的方案,之此时系统工程师应提出多种预选的方案,之后根据系统设计目标和约束条件并按照一定的后根据系统设计目标和约束条件并按照一定的原则设计并选择最佳方案。比如,在成本、进原则设计并选择最佳方案。比如,在成本、进度、系统资源、系统性能、支撑环境等方面进度、系统资源、系统性能、支撑环境等方面进行取舍和折衷。行取舍和折衷。 在此基础上,对系统需求进行分解并分配给在此基础上,对系统需求进行分解并分配给硬件、软件等系统要素,进而生成硬件、软件硬件、软件等系统要素,进而生成硬件、软件等系统要素的需求,并分别通过硬件工程、软等系统要素的需求,并分别通过硬件工程、软件工程、人

288、机工程、数据库工程等几个子工程件工程、人机工程、数据库工程等几个子工程予以实现。予以实现。3.1.1硬件工程硬件工程q硬件工程师根据系统硬件需求设计、制造或选择主机、硬件工程师根据系统硬件需求设计、制造或选择主机、外部设备、网络设备等硬部件或设备。硬件工程师可外部设备、网络设备等硬部件或设备。硬件工程师可通过硬件工程来实现硬件系统。通过硬件工程来实现硬件系统。q硬件工程可划分为硬件定义、硬件设计、硬件制造与硬件工程可划分为硬件定义、硬件设计、硬件制造与销售维修三个阶段。其中销售维修三个阶段。其中:硬件定义阶段的任务是:硬件定义阶段的任务是:制定硬件开发计划,确定制定硬件开发计划,确定项目成本和

289、工程进度;项目成本和工程进度;进行硬件需求分析,给出硬进行硬件需求分析,给出硬件规格说明。件规格说明。硬件设计阶段的任务是:硬件设计阶段的任务是:设计分析,画出设计图;设计分析,画出设计图;必要时建造原型(即样机)并对其进行测试;必要时建造原型(即样机)并对其进行测试;制制造分析,画出生产图。造分析,画出生产图。硬件制造与销售维修阶段的任务是:按照质量保证计硬件制造与销售维修阶段的任务是:按照质量保证计划生产硬件产品并出售,相应的服务机构对硬件产品划生产硬件产品并出售,相应的服务机构对硬件产品进行售后服务。进行售后服务。图图312 硬件工程硬件工程设计设计分析分析建造原型建造原型测试测试制造制

290、造分析分析制制 造造再加工再加工经经 销销评审评审评审评审评审评审评审评审评审评审成本成本进度进度硬件规格说硬件规格说明明设计设计草图草图设计图设计图原型原型硬件功硬件功能能评审评审维修组织维修组织分析分析结果结果设计设计结果结果制定开制定开发计划发计划硬件需硬件需求分析求分析3.1.2软件工程软件工程q系统工程师在系统的论证阶段应确定系统对软件的系统工程师在系统的论证阶段应确定系统对软件的功能和性能的要求,这将成为软件需求分析的基础。功能和性能的要求,这将成为软件需求分析的基础。q软件工程师根据分配给软件要素的功能和性能进行软件工程师根据分配给软件要素的功能和性能进行详细的需求分析,并进行软

291、件总体结构设计。在此详细的需求分析,并进行软件总体结构设计。在此基础上应尽力寻求可重用软部件来支持软件的详细基础上应尽力寻求可重用软部件来支持软件的详细设计和编码。设计和编码。q基于计算机系统的软件要素中的软部件由程序、数基于计算机系统的软件要素中的软部件由程序、数据和文档组成。按照功能,软部件可划分为系统软据和文档组成。按照功能,软部件可划分为系统软件和应用软件两类。件和应用软件两类。系统软件实现系统各要素的控制、交互和通用信息系统软件实现系统各要素的控制、交互和通用信息处理等功能;处理等功能;而应用软件实现专用信息处理等功能。而应用软件实现专用信息处理等功能。3.1.2软件工程软件工程q软

292、件在基于计算机的系统的软件在基于计算机的系统的IPO模型的各个部分都起模型的各个部分都起着重要的作用。其主要作用有:着重要的作用。其主要作用有:实现系统的输入和输出。实现系统的输入和输出。 系统的输入信息来自于系统的外部实体,而系统内系统的输入信息来自于系统的外部实体,而系统内部某一子系统的输入可能来自系统外部或内部的其他部某一子系统的输入可能来自系统外部或内部的其他子系统。软件可提供交互式的人机界面,实现提示机子系统。软件可提供交互式的人机界面,实现提示机制、数据输入、输出等人机交互的逻辑功能,并用软制、数据输入、输出等人机交互的逻辑功能,并用软件驱动程序驱动和控制硬件完成输入输出操作。件驱

293、动程序驱动和控制硬件完成输入输出操作。如有必要,软件可设置与数据库的接口,支持系统对如有必要,软件可设置与数据库的接口,支持系统对数据库的访问。数据库的访问。软件通过一系列的算法和操作控制程序使各个系统要软件通过一系列的算法和操作控制程序使各个系统要素有条不紊地工作,从而实现系统的功能和性能。素有条不紊地工作,从而实现系统的功能和性能。图图313 软件工程软件工程制定软件制定软件开发计划开发计划数据和数据和结构分析结构分析过程设计过程设计维维 护护评审评审评审评审评审评审评审评审评审评审项目计划项目计划需求规格说明验收测需求规格说明验收测试计划初步用户手册试计划初步用户手册概要设计规格说明概要

294、设计规格说明集成测试计划集成测试计划需求分析原型设计需求分析原型设计原型原型软件软件功能功能评审评审分析分析结果结果原型原型详细设计规格说明详细设计规格说明单元测试计划单元测试计划编码编码程序程序源代码源代码单元、集成单元、集成验收测试验收测试评审评审测试过程测试过程测试报告测试报告返回到前面返回到前面返回到前面返回到前面返回到前面返回到前面开发开发结果结果提提 交交经经 销销被修改的被修改的源代码源代码被修改被修改的文档的文档用户用户文档文档可运行可运行程序程序1软件项目定义部分软件项目定义部分该该部部分分由由制制定定软软件件项项目目开开发发计计划划、需需求求分分析析2个个阶阶段段组成,主要

295、完成以下组成,主要完成以下4项任务:项任务:1)制制定定软软件件项项目目计计划划。即即界界定定软软件件工工作作范范围围、进进行行风风险险分分析析、提提出出项项目目开开发发所所需需资资源源、进进行行成成本本和和进进度度估估算算,进进而而进进行行可可行行性性论论证证,生生成成软软件件项项目目计计划划并并经经过过技术和管理评审。技术和管理评审。2)软软件件需需求求分分析析和和定定义义。即即确确定定软软件件的的功功能能需需求求和和性性能能需需求求、详详细细定定义义软软件件系系统统要要素素,确确定定软软件件资资源源约约束束。在在进进行行需需求求分分析析时时,如如有有必必要要,还还可可以以为为软软件件或或

296、其其中中的关键部分开发原型,以获得用户满意的软件需求。的关键部分开发原型,以获得用户满意的软件需求。3)为软件要素制定验收准则,制定软件验收测试计划。)为软件要素制定验收准则,制定软件验收测试计划。4)生成软件需求规格说明,通过由客户、系统分析员、)生成软件需求规格说明,通过由客户、系统分析员、软件工程师和管理部门负责人参加的评审后生效,并软件工程师和管理部门负责人参加的评审后生效,并作为软件开发和软件产品验收的依据。作为软件开发和软件产品验收的依据。2软件开发部分的任务软件开发部分的任务软软件件开开发发部部分分的的任任务务是是将将系系统统对对软软件件的的需需求求转转换换成成可操作的系统要素,

297、即软件。可操作的系统要素,即软件。该部分由总体设计、过程设计和编码该部分由总体设计、过程设计和编码3个阶段组成。个阶段组成。 1)软件总体设计阶段)软件总体设计阶段 软软件件总总体体设设计计是是指指软软件件总总体体结结构构设设计计和和数数据据设设计,该阶段的主要任务是:计,该阶段的主要任务是:设计软件的模块结构。设计软件的模块结构。定义接口并建立数据结构。定义接口并建立数据结构。生成概要设计规格说明和组装测试计划。生成概要设计规格说明和组装测试计划。评审概要设计的质量,重点评审总体设计是否评审概要设计的质量,重点评审总体设计是否 支持软件需求规格说明的完全性和可追踪性。支持软件需求规格说明的完

298、全性和可追踪性。2软件开发部分的任务软件开发部分的任务2)软件过程设计阶段)软件过程设计阶段主要任务是:主要任务是: 对对概概要要设设计计规规格格说说明明中中的的每每一一个个模模块块的的过过程程 进行详细的描述。进行详细的描述。 制制定定单单元元测测试试计计划划。生生成成详详细细设设计计规规格格说说明。明。 对详细设计的阶段产品进行评审。对详细设计的阶段产品进行评审。3)编码阶段)编码阶段任务是:任务是: 用用选选定定的的编编程程语语言言将将每每一一个个模模块块的的详详细细过过程程描描述述转转换换成成程程序序。应应注注意意良良好好的的编编程程风风格格、简简洁洁性性和和自自文档化,同时还应保持与

299、过程设计的可跟踪性。文档化,同时还应保持与过程设计的可跟踪性。3软件产品的验证、提交、经销与维护部分软件产品的验证、提交、经销与维护部分1)软件验证阶段的主要任务是:)软件验证阶段的主要任务是:软件开发人员根据单元测试计划对每一个软件开发人员根据单元测试计划对每一个 模块进行单元测试,验证模块的功能是否模块进行单元测试,验证模块的功能是否 正确且符合设计要求。正确且符合设计要求。组织开发人员和专门的软件测试工程师组织开发人员和专门的软件测试工程师 对软件进行综合测试,测试软件总体结构对软件进行综合测试,测试软件总体结构 和接口是否满足设计要求,测试各软部件和接口是否满足设计要求,测试各软部件

300、是否满足相应的软件功能需求和性能需求。是否满足相应的软件功能需求和性能需求。组织专家、用户和客户对测试结果进行评审。组织专家、用户和客户对测试结果进行评审。3软件产品的验证、提交、经销与维护部分软件产品的验证、提交、经销与维护部分2)软件的提交与经销的主要任务是:)软件的提交与经销的主要任务是:开发正式的用户手册、对文档进行分类、整理、开发正式的用户手册、对文档进行分类、整理、 归档,建立配置控制机制。归档,建立配置控制机制。将软件提交给用户,必要时应负责把软件安装将软件提交给用户,必要时应负责把软件安装 到用户的环境中。到用户的环境中。3)软件维护的任务是:)软件维护的任务是: 修修正正软软

301、件件在在运运行行中中发发现现的的错错误误、改改善善软软件件的的功功能能和和性性能能、适适应应软软件件运运行行环环境境的的变变化化、提提高软件的可维护性和可靠性等等。高软件的可维护性和可靠性等等。以上所介绍的就是将系统工程的观点和方法引以上所介绍的就是将系统工程的观点和方法引入软件工程,用于指导软件的开发。入软件工程,用于指导软件的开发。3.1.3人机工程人机工程目目前前,友友好好的的“人人机机界界面面”(HCI,Human Computer Interface)已已成成为为基基于于计计算算机机的的系系统统的的一一项项重重要要的的技技术术指指标标。因因此此,开开发发人人机机界界面面的的人人机机工

302、工程程已已经经成成为为开开发发基基于于计计算算机机的的系系统统的的一一个个重重要要组组成部分。成部分。要要设设计计出出高高质质量量的的人人机机界界面面,不不仅仅涉涉及及到到计计算算机机技技术术,还还涉涉及及到到美美学学、心心理理学学等人文科学知识。等人文科学知识。人机界面开发过程的主要人机界面开发过程的主要5个步骤:个步骤:1)活活动动分分析析。即即分分析析人人机机交交互互的的所所有有过过程程,标标识识该该过过程程中中人人的的活活动动并并据据此此确确定定需需要要计计算算机机执执行的任务。行的任务。2)动动作作定定义义和和设设计计。根根据据活活动动分分析析所所标标识识的的活活动动,精精确确的的定

303、定义义人人机机界界面面的的每每一一个个动动作作的的内内容容,即进行人机交互的详细设计。即进行人机交互的详细设计。3)动动作作的的实实现现。用用特特定定的的人人机机交交互互语语言言的的语语句句和和命命令令去去实实现现每每一一个个动动作作,进进而而实实现现各各个个人人机机界界面面的的交交互互活活动动。如如有有必必要要,可可以以设设计计人人机机交交互互语语言言,精精确确地地定定义义语语言言的的语语法法和和语语义义,并并实实现语言中的每一个动作和命令现语言中的每一个动作和命令人机界面开发过程的主要人机界面开发过程的主要5个步骤个步骤4)用用户户环环境境的的设设计计。要要设设计计高高质质量量的的人人机机

304、界界面面,必必须须考考虑虑将将支支撑撑人人机机界界面面的的软软件件和和硬硬件件集集成成后后,构构成成集集成成的的用用户户环环境境的的整整体体设设计计效效果果,还还应应考考虑空间、光线、温度等环境因素。虑空间、光线、温度等环境因素。5)原原型型设设计计。软软件件工工程程师师根根据据以以上上4个个步步骤骤的的结结果果设设计计原原型型,并并请请用用户户对对原原型型进进行行评评价价和和审审查查。并并根根据据用用户户提提出出的的意意见见修修改改原原型型,这这是是一一个个迭迭代代过过程程,直直至至通通过过用用户户的的评评审审。软软件件工工程程师师以以通通过过评评审审的的原原型型为为基基础础设设计计人人机机

305、界界面面,就就可可以以设计出用户满意的高质量的人机界面来。设计出用户满意的高质量的人机界面来。3.1.4数据库工程数据库工程任任何何一一个个基基于于计计算算机机的的系系统统工工程程都都包包括括硬硬件工程、软件工程和人机工程三部分。件工程、软件工程和人机工程三部分。在在以以信信息息处处理理为为核核心心的的基基于于计计算算机机的的系系统统中中,数数据据库库系系统统也也是是其其重重要要的的组组成成部部分分。它它将将系系统统硬硬件件、软软件件、数数据据、数数据据库库管管理理员组合起来为用户提供信息服务。员组合起来为用户提供信息服务。数数据据库库工工程程就就是是指指开开发发、运运行行和和管管理理数数据据

306、库库系系统统的的工工程程,它它也也是是一一个个复复杂杂而而独独特特的的软件工程项目。软件工程项目。数据库工程完成的主要任务数据库工程完成的主要任务1)调调查查用用户户对对信信息息和和信信息息处处理理的的需需求求,进进行行可可行行性性论论证证,进进行行成成本本、进进度度估估算算,制制定定项项目目计计划。划。2)选择支持数据库系统的硬件和软件。特别是)选择支持数据库系统的硬件和软件。特别是确定数据库管理系统(确定数据库管理系统(DBMS),它支持数据),它支持数据的查询、维护和分析,是管理数据库的工具,的查询、维护和分析,是管理数据库的工具,为数据库的设计和使用提供了方便。在选择为数据库的设计和使

307、用提供了方便。在选择DBMS时,还应考虑支持其运行的操作系统和时,还应考虑支持其运行的操作系统和网络环境。网络环境。数据库工程完成的主要任务数据库工程完成的主要任务3)数数据据库库设设计计与与实实现现。软软件件人人员员根根据据用用户户对对数数据据库库系系统统的的需需求求进进行行需需求求分分析析和和数数据据分分析析,产产生生需需求求说说明明和和数数据据说说明明;以以此此为为基基础础,进进行行概概念念设设计计,产产生生依依赖赖用用户户的的概概念念模模型型;接接着着以以概概念念模模型型为为基基础础,进进行行逻逻辑辑设设计计,产产生生依依赖赖DBMS的的逻逻辑辑模模型型;再再以以此此为为基基础础进进行

308、行物物理理设设计计,产产生生一一个个完完整整、可可实实现现的的数数据据库库。和和软软件件工工程程一一样样,数数据据库库工工程程的的每每一一步步骤骤结结束束时时都都应应进进行行评评审,最后应对数据库系统进行测试,并生成各种文档。审,最后应对数据库系统进行测试,并生成各种文档。4)数数据据的的收收集集与与存存储储。应应按按照照系系统统的的范范围围和和用用户户需需要要将数据进行收集、整理,并存入数据库中。将数据进行收集、整理,并存入数据库中。5)运运行行、管管理理与与维维护护。数数据据库库系系统统开开发发完完成成并并投投入入到到系系统统中中运运行行,此此时时数数据据库库管管理理人人员员负负责责数数据

309、据库库的的管管理理与维护工作,并为用户提供培训和有关资料等。与维护工作,并为用户提供培训和有关资料等。3.2可行性研究可行性研究3.2.1可行性研究的任务及步骤可行性研究的任务及步骤1可行性研究的任务可行性研究的任务开发任何一个基于计算机的系统都会受到时间开发任何一个基于计算机的系统都会受到时间和资源的限制。因此,开发方在接受客户的项和资源的限制。因此,开发方在接受客户的项目之前,必须根据客户可能提供的时间和资源目之前,必须根据客户可能提供的时间和资源等条件进行可行性研究。等条件进行可行性研究。可行性研究工作要在初步的需求定义之后进行。可行性研究工作要在初步的需求定义之后进行。其主要任务不是研

310、究如何解决问题,而是要用其主要任务不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否值最小的代价在最短的时间内确定该项目是否值得去解决,是否存在可行的解决方案。即在系得去解决,是否存在可行的解决方案。即在系统层面上论证系统开发的可行性。统层面上论证系统开发的可行性。1.可行性研究的任务可行性研究的任务1)经经济济可可行行性性研研究究:估估算算项项目目的的开开发发成成本本和和投投入入使使用用后后可可能能带带来来的的利利润润,进进行行成成本本效效益益分分析析。及及对对其其他产品或利润的影响。他产品或利润的影响。2)技技术术可可行行性性研研究究:根根据据客客户户提提出出的的系系统统

311、功功能能、性性能能要要求求及及实实现现系系统统的的各各项项约约束束条条件件,从从技技术术的的角角度度研究实现系统的可行性。研究实现系统的可行性。3)运运行行、操操作作可可行行性性研研究究:主主要要研研究究系系统统的的运运行行方方式式在在用用户户单单位位是是否否可可以以有有效效地地实实施施,是是否否与与原原有有其其他他系系统统相相矛矛盾盾;系系统统的的操操作作规规程程在在用用户户单单位位内内是是否否可行,它包括人事、科技政策、管理方法等。可行,它包括人事、科技政策、管理方法等。1.可行性研究的任务可行性研究的任务4)法法律律可可行行性性研研究究:研研究究新新系系统统的的开开发发和和使使用用是是否

312、否会会侵侵犯犯他他人人的的权权益益,是是否否触触犯犯了了国国家家的的法法律律法法规。规。5)开开发发方方案案的的选选择择:可可行行性性研研究究的的最最主主要要任任务务是是对对以以后后的的行行动动提提出出建建议议。如如果果问问题题没没有有可可行行的的解解,分分析析人人员员应应建建议议停停止止该该项项目目,以以避避免免造造成成进进一一步步的的浪浪费费;如如果果问问题题值值得得解解决决,则则提提出出并并评评价价实实现现系系统统的的各各种种可可行行的的开开发发方方案案,从从中中选选择择一一种种最最佳佳方案,并为系统制定一个初步的开发计划。方案,并为系统制定一个初步的开发计划。2.可行性研究的步骤可行性

313、研究的步骤1)复查初步分析结果。)复查初步分析结果。 对对系系统统初初步步的的分分析析结结果果和和报报告告书书进进行行复复查查,改改正正含含糊糊或或不不确确切切的的叙叙述述,重重新新确确定定系系统统目目标标与规模,清晰地描述对系统的所有约束条件。与规模,清晰地描述对系统的所有约束条件。2)研究现有的系统。)研究现有的系统。 找找出出其其基基本本功功能能和和信信息息,指指出出其其缺缺点点或或局局限限性。性。3)导出新系统高层逻辑模型。)导出新系统高层逻辑模型。 用用某某种种图图形形工工具具导导出出系系统统高高层层逻逻辑辑模模型型,并并与现有系统进行比较。与现有系统进行比较。2.可行性研究的步骤可

314、行性研究的步骤4)导导出出新新系系统统的的高高层层次次物物理理解解法法,提提出出多多个个供供选选择择的的方方案案,并并对对每每一一个个方方案案的的经经济济可可行行性性、技技术术可可行行性性、运行和操作可行性等进行分析比较。运行和操作可行性等进行分析比较。5)推荐建议的方案。)推荐建议的方案。 如如果果系系统统分分析析员员认认为为值值得得开开发发,则则应应指指出出开开发发的的价价值值、推推荐荐方方案案的的理理由由并并为为推推荐荐的的系系统统草草拟拟一一份份开开发发计计划划;若若分分析析员员认认为为不不值值得得开开发发,也也应应拿拿出出充充分分的的理理由。并提交可行性研究报告等全部文档。由。并提交

315、可行性研究报告等全部文档。6)评审、复审和决策。)评审、复审和决策。 可行性研究最后要通过技术评审和管理复审,开发可行性研究最后要通过技术评审和管理复审,开发方和客户方或使用部门负责人根据成本方和客户方或使用部门负责人根据成本效益分析等效益分析等各项可行性研究的结论,决策是否继续这项工程。各项可行性研究的结论,决策是否继续这项工程。3.2.2经济可行性经济可行性对待开发系统的经济可行性的论证(其中主要是成对待开发系统的经济可行性的论证(其中主要是成本本效益分析)是可行性研究的重要内容。它可用于效益分析)是可行性研究的重要内容。它可用于评估系统的经济合理性、给出系统开发的成本估算,评估系统的经济

316、合理性、给出系统开发的成本估算,并将估算的成本与可获得的利润进行对比,从经济并将估算的成本与可获得的利润进行对比,从经济角度论证待开发系统是否可行。角度论证待开发系统是否可行。项目开发的成本受项目的特点、规模等多种因素的项目开发的成本受项目的特点、规模等多种因素的制约,尤其是其中的软件要素的开发成本在可行性制约,尤其是其中的软件要素的开发成本在可行性研究阶段很难准确估算。研究阶段很难准确估算。 经济效益经济效益指应用系统可为用户增加的收入。指应用系统可为用户增加的收入。 社会效益社会效益指应用系统给社会带来的好处。指应用系统给社会带来的好处。1成本估算成本估算基于计算机系统的成本主要由基于计算

317、机系统的成本主要由4部分组成:部分组成: 购置并安装软硬件及有关设备的费用。购置并安装软硬件及有关设备的费用。 系统开发费用。系统开发费用。 系统安装、运行和维护费用。系统安装、运行和维护费用。 人员培训费用。人员培训费用。在在可可行行性性研研究究阶阶段段只只能能对对上上述述费费用用所所构构成成的的成成本本进进行行估估算算。其其中中软软件件开开发发成成本本可可用用前前面面已已介介绍绍的的估估算算方方法法进进行行估估算算。在在系系统统开开发发完完毕毕并并交交付付用用户户运运行行后后,即可统计出实际开发成本。即可统计出实际开发成本。【例例3.1】已已知知一一个个基基于于计计算算机机的的系系统统的的

318、软软件件升升级级的的开开发发成成本本估估算算值值为为5000元元,预预计计新新系系统统投投入入运运行行后后每每年年可可以以带带来来2500元元的的收收入入,假假定定新新软软件件的的生生存存周周期期(不不包包括括开开发发时时间间)为为5年年,当当年年的的年年利利率率为为12%,试试对对该该系系统的开发进行成本统的开发进行成本效益分析。效益分析。1货币的时间价值:货币的时间价值: 指同样数量的货币随时间的不同具有不同的价值。指同样数量的货币随时间的不同具有不同的价值。 一般货币在不同时间的价值可用年利率来折算。一般货币在不同时间的价值可用年利率来折算。设:设:i 表示年利率,现在存入表示年利率,现

319、在存入P元,元,n年后的价值为年后的价值为F元,元,则有:则有: F=P(1 + i )n (31)表表3-1将来的收入折算成现在值将来的收入折算成现在值如如果果n年年后后能能收收入入F元元,这这些些钱钱折折算算成成现现在在的的价价值值称称为为折现值,折现公式为:折现值,折现公式为: P = F /(1 + i )n (32)对本题的将来的收入折现,计算结果如表对本题的将来的收入折现,计算结果如表31所示。所示。n(年年)第第n年年的收入的收入(1+i)n折现值折现值累计折现值累计折现值125001.122232.142232.14225001.25441992.984225.12325001

320、.4049281779.456004.57425001.573519361588.807593.37525001.7623416831418.579011.942纯纯收收入入。是是指指在在整整个个生生存存周周期期系系统统的的累累计计收收入入的的折折现值现值PT 与总成本折现值与总成本折现值S T 之差,以之差,以T表示,则有:表示,则有: T= PT ST = 9011.94 5000 = 4011.94(元元) (33) 如如果果纯纯收收入入小小于于或或等等于于0,则则这这项项工工程程单单从从经经济济观观点来看是不值得投资的。点来看是不值得投资的。3. 投资回收期。投资回收期。 是是指指系系

321、统统投投入入运运行行后后累累计计的的经经济济效效益益的的折折现现值值正正好好等于投资所需的时间。本例中的投资回收期为:等于投资所需的时间。本例中的投资回收期为: 2+(5000 4225.12)/1779.45 = 2 + 0.44 = 2.44(年)(年) 投投资资回回收收期期越越短短,就就能能越越快快地地获获得得利利润润,工工程程越越值得投资。值得投资。4投投资资回回收收率率。把把资资金金投投入入到到项项目目中中与与把把资资金金存存入入银银行行比比较较,其其中中投投入入到到项项目目中中可可获获得得的的年年利利率率就就称称为为项项目目的的投投资资回回收收率率。设设S为为现现在在的的投投资资额

322、额,Fi是是第第i年年到到年年底底一一年年的的收收益益(i=1,2,n),n是是系系统统的的寿寿命命,j是投资回收率,则是投资回收率,则 j 满足方程:满足方程: S= F1 (1+j) 1 + F2 (1+j) 2 + + Fn (1+j) n (34) 解解这这个个方方程程就就可可以以得得到到投投资资回回收收率率j。本本题题的的投投资资回回收收率率为为41.04%,而而如如果果直直接接把把资资金金存存入入银银行行的的投投资资回收率就是年利率回收率就是年利率12%。 如如果果仅仅考考虑虑经经济济效效益益,只只有有项项目目的的投投资资回回收收率率大大于于年利率时,才考虑开发问题。还要考虑社会效

323、益。年利率时,才考虑开发问题。还要考虑社会效益。3.2.3技术可行性研究技术可行性研究技技术术可可行行性性是是可可行行性性研研究究的的关关键键内内容容。由由于于系系统统分分析析和和定定义义过过程程与与系系统统技技术术可可行行性性评评估估过过程程同同时时进进行行,此此时时系系统统的的功功能能、性性能能和和目目标标的的不不确确定定性性会会给给技技术术可行性论证带来许多困难。其主要包括:可行性论证带来许多困难。其主要包括:1)风风险险分分析析。其其任任务务是是在在给给定定的的约约束束条条件件下下,论论证证能否实现系统所需的功能和性能。能否实现系统所需的功能和性能。2)资资源源分分析析。其其任任务务是

324、是论论证证是是否否具具备备系系统统开开发发所所需需各类人员的数量和质量、软硬件资源和工作环境等。各类人员的数量和质量、软硬件资源和工作环境等。3)技术分析。其任务是论证现有的科学技术水平和)技术分析。其任务是论证现有的科学技术水平和开发能力是否支持开发的全过程并达到系统功能和开发能力是否支持开发的全过程并达到系统功能和性能的目标。性能的目标。3.2.3技术可行性研究技术可行性研究为为了了进进行行有有效效的的技技术术可可行行性性研研究究,系系统统分分析析员员应应采采集集系系统统功功能能、性性能能、各各种种约约束束条条件件、所所需需的的各各种种资资源源等等方方面面的的信信息息,进进而而分分析析系系

325、统统开开发发可可能能承承担担的的技技术术风风险险;分分析析实实现现系系统统功功能能和和性性能能所所需需的的各各种种设设备备、人人员员、技技术术、方方法法、工工具具和和过过程程;从从而而从从技技术术角角度度分分析析开开发发系系统统的的可可行行性性。如如果果可可能能,应应充充分分研研究究与与新新系系统统类类似似的的原原有系统。有系统。数数学学建建模模、原原型型建建造造和和模模拟拟是是基基于于计计算算机机系系统统技术可行性研究的有效工具。技术可行性研究的有效工具。3.2.3技术可行性研究技术可行性研究建造的基于计算机系统的模型必须具备以下特点:建造的基于计算机系统的模型必须具备以下特点:1)模模型型

326、应应能能反反映映要要评评估估系系统统的的构构成成的的动动态态特特性性,容容易易理理解解和和操操作作,能能够够尽尽量量提提供供系系统统真真实实的的结结果果并并有有利利于于评审。评审。2)模模型型应应包包括括与与系系统统有有关关的的全全部部相相关关元元素素,能能够够再再现现系统运行的结果。系统运行的结果。3)模模型型应应突突出出表表现现与与系系统统相相关关的的重重要要因因素素,忽忽略略无无关关或次要因素。或次要因素。4)模型设计应尽量简单、易于实现、易于修改。)模型设计应尽量简单、易于实现、易于修改。 如果系统十分复杂,则需将模型分解为若干个如果系统十分复杂,则需将模型分解为若干个具有层次结构的小

327、模型。可以借助模型对系统中某个具有层次结构的小模型。可以借助模型对系统中某个重要的独立要素进行专门的评估。如有必要,可以对重要的独立要素进行专门的评估。如有必要,可以对其中的关键要素建造原型并进行模拟,以便准确分析其中的关键要素建造原型并进行模拟,以便准确分析其技术可行性。其技术可行性。 3.2.3技术可行性研究技术可行性研究技术可行性研究应明确给出技术风险分析、资源技术可行性研究应明确给出技术风险分析、资源分析和技术分析的结论,以便使项目管理人员据分析和技术分析的结论,以便使项目管理人员据此做出是否进行系统开发的决策。此做出是否进行系统开发的决策。如果技术风险很大,或者资源不足,或者当前的如

328、果技术风险很大,或者资源不足,或者当前的技术、方法与工具不能实现系统预期的功能和性技术、方法与工具不能实现系统预期的功能和性能,项目管理人员就应及时做出撤消项目的决定。能,项目管理人员就应及时做出撤消项目的决定。3.2.4方案选择方案选择在可行性研究阶段,系统工程师根据系统分析所在可行性研究阶段,系统工程师根据系统分析所确定的系统目标开始研究问题的求解方案。确定的系统目标开始研究问题的求解方案。对于较复杂的大系统,一般都要将其分解为若干对于较复杂的大系统,一般都要将其分解为若干个子系统,接着精确地定义各子系统的界面、功个子系统,接着精确地定义各子系统的界面、功能和性能,给出各子系统之间的关系。

329、能和性能,给出各子系统之间的关系。 分解技术可降低解的复杂性,有利于人员的组分解技术可降低解的复杂性,有利于人员的组织与分工,提高开发生产率和开发质量。织与分工,提高开发生产率和开发质量。3.2.4方案选择方案选择由于系统的分解方法可以有多种,因此实现系由于系统的分解方法可以有多种,因此实现系统目标的方案也可以有多种。采用的方案不同,统目标的方案也可以有多种。采用的方案不同,对成本、进度、技术及各种资源的要求就会不对成本、进度、技术及各种资源的要求就会不同,系统在功能和性能方面也可能有较大差异。同,系统在功能和性能方面也可能有较大差异。从另一个角度来看,在系统开发的总成本不变从另一个角度来看,

330、在系统开发的总成本不变的前提下,由于系统开发各阶段的成本分配方的前提下,由于系统开发各阶段的成本分配方案的不同也会影响系统的功能和性能。案的不同也会影响系统的功能和性能。另外,由于系统的各功能和性能可能由多种因另外,由于系统的各功能和性能可能由多种因素组成,而某些因素之间又是相互关联彼此制素组成,而某些因素之间又是相互关联彼此制约、不可兼得的。比如系统的计算精度和系统约、不可兼得的。比如系统的计算精度和系统的执行时间就是互相矛盾的。的执行时间就是互相矛盾的。3.2.4方案选择方案选择综上所述,要选择一个较好的方案,首综上所述,要选择一个较好的方案,首先要对系统采用多种分解和组合方法提先要对系统

331、采用多种分解和组合方法提出多种备选的求解方案,然后依据系统出多种备选的求解方案,然后依据系统的功能、性能、成本、进度、系统开发的功能、性能、成本、进度、系统开发所采用的技术、风险、软硬件资源、对所采用的技术、风险、软硬件资源、对开发人员的要求等方面评价每一个预选开发人员的要求等方面评价每一个预选方案,并利用方案,并利用折衷折衷手段对预选方案进行手段对预选方案进行充分论证,反复比较各种方案的成本充分论证,反复比较各种方案的成本效效益,最后选择出一种较好的方案。益,最后选择出一种较好的方案。 可行性研究报告可行性研究报告阶段性成果阶段性成果它可作为系统规格说明书的一个附件。其主要内容如下:它可作为

332、系统规格说明书的一个附件。其主要内容如下:1)引引言言:说说明明可可行行性性研研究究的的目目的的,项项目目的的名名称称、背背景景,本文档用到的术语和参考资料。本文档用到的术语和参考资料。2)可可行行性性研研究究的的前前提提:说说明明待待开开发发项项目目的的功功能能、性性能能和和基基本本要要求求,要要达达到到的的目目标标,各各种种约约束束条条件件,可可行行性性研究的方法和决定可行性的主要因素。研究的方法和决定可行性的主要因素。3)对对现现行行系系统统的的分分析析:如如果果有有现现行行系系统统,说说明明现现行行系系统统的的处处理理流流程程和和数数据据流流程程,系系统统状状态态,费费用用支支出出,所

333、所需专业人员的种类和数量,所需设备,存在的问题等。需专业人员的种类和数量,所需设备,存在的问题等。4)方方案案选选择择:所所选选择择方方案案的的系系统统配配置置,选选择择方方案案的的标标准。准。5)所所建建议议方方案案的的技技术术可可行行性性分分析析:对对所所选选择择的的较较好好的的方方案案的的风风险险分分析析、资资源源分分析析和和技技术术分分析析;对对子子系系统统的的技术分析。技术分析。可行性研究报告可行性研究报告阶段性成果阶段性成果6)经经济济可可行行性性分分析析:说说明明所所建建议议系系统统的的成成本本效效益分析结果。益分析结果。7)运行、操作可行性分析。)运行、操作可行性分析。8)法律

334、可行性分析。)法律可行性分析。9)其其他他可可供供选选择择方方案案:分分别别说说明明每每一一个个可可供供选选择的方案,并应说明未被推荐的理由。择的方案,并应说明未被推荐的理由。10)结结论论意意见见:说说明明项项目目是是否否能能开开发发,还还需需要要什什么条件才能开发以及对项目目标有何变动等。么条件才能开发以及对项目目标有何变动等。 可行性研究报告应提交管理部门,由可行性研究报告应提交管理部门,由管理人员对可行性研究报告进行评审并做出决管理人员对可行性研究报告进行评审并做出决策。策。3.3系统模型系统模型1结构模板结构模板系系统统分分析析员员将将基基于于计计算算机机系系统统的的功功能能和和性性

335、能能分分解解为为若若干干个个子子系系统统并并精精确确定定义义各各子子系系统统的的界界面面之之后后,开开始建立系统模型。始建立系统模型。任任何何一一个个基基于于计计算算机机系系统统都都可可以以用用输输入入处处理理输输出出(IPO)图图来来描描述述,它它将将该该系系统统转转换换成成一一个个信信息息变变换换模模型型。在在IPO模模型型的的基基础础上上,Hatley和和Pirbhai又又补补充充了了用用户户界界面面处处理理、维维护护和和自自测测试试处处理理两两方方面面的的内内容容,从从而而构构成成了了系系统统结结构构模模板板,如如图图331所所示示。它它是系统建模的基础。是系统建模的基础。图图331

336、结构模板结构模板用户界面处理用户界面处理处理与控制功能处理与控制功能维护与自测试处理维护与自测试处理输输入入处处理理输输出出处处理理3.3系统模型系统模型2结构图结构图系统分析员用结构模板来开发系统模型。借助于结构系统分析员用结构模板来开发系统模型。借助于结构模板,按照系统工程和软件工程的建模技术自顶向下、模板,按照系统工程和软件工程的建模技术自顶向下、由粗到细地建立具有层次结构的系统模型。由粗到细地建立具有层次结构的系统模型。在这里,使用一种结构关系图(在这里,使用一种结构关系图(ACD,Architectural Connector Detail)来描述系统的总体结构,它位于系)来描述系统

337、的总体结构,它位于系统模型的最顶层。统模型的最顶层。利用利用ACD可以定义系统的组成、各子系统使用和产生可以定义系统的组成、各子系统使用和产生的信息,建立系统与环境间的信息界面,实现系统与的信息,建立系统与环境间的信息界面,实现系统与外部环境间的通信等等。外部环境间的通信等等。图图3-3-2传送带传送带在线货物在线货物分类系统总体结构关系图分类系统总体结构关系图方框方框外部实体,即系统信息的生产者和消费者;外部实体,即系统信息的生产者和消费者;圆角方框圆角方框系统或子系统;系统或子系统;有向边有向边系统的信息流(数据流或控制流)。系统的信息流(数据流或控制流)。分类操作员分类操作员分类操作员分

338、类操作员主机主机传送带传送带分类机制分类机制卡片机卡片机传送带传送带分类系统分类系统分类命令分类命令卡片代码卡片代码要求要求查询查询报告报告带速带速报告数据报告数据诊断诊断数据数据2结构图结构图系统分析员利用系统分析员利用ACD定义系统和各个子系定义系统和各个子系统的结构流图(统的结构流图(AFD,Architectural Factor Detail)。)。图图333给出了系统结构流图的层次结构。给出了系统结构流图的层次结构。首先定义系统顶层首先定义系统顶层AFD,其中的每一个圆,其中的每一个圆角矩形结点代表一个子系统或一个系统角矩形结点代表一个子系统或一个系统要素;之后对每一个较复杂的结点

339、进行要素;之后对每一个较复杂的结点进行分解,定义出下一层更详细的结构流图;分解,定义出下一层更详细的结构流图;如此逐步分解,直至能够支持以后的系如此逐步分解,直至能够支持以后的系统开发时为止。统开发时为止。图图333 系统分层结构流图系统分层结构流图系统顶层系统顶层AFD子系统子系统B的的AFDABA的的AFDCC的的AFD3系统结构规格说明系统结构规格说明q在系统模型建立的过程中,系统分析人员应撰写结构在系统模型建立的过程中,系统分析人员应撰写结构图规格说明(图规格说明(ADS),用来准确、详细地说明系统结),用来准确、详细地说明系统结构、组成系统的各个子系统及其间的信息流和控制流。构、组成

340、系统的各个子系统及其间的信息流和控制流。q每个子系统的结构图规格说明都应包括系统模板说明、每个子系统的结构图规格说明都应包括系统模板说明、系统结构字典和系统结构互连图。其中系统结构字典和系统结构互连图。其中:系统模板说明描述各子系统的功能、性能、处理的信系统模板说明描述各子系统的功能、性能、处理的信息对象和结果,与其他子系统的连接关系等;息对象和结果,与其他子系统的连接关系等;系统结构字典定义系统结构图中的每一个信息项,信系统结构字典定义系统结构图中的每一个信息项,信息项的类型、信息源、流向的目标可以从系统结构流息项的类型、信息源、流向的目标可以从系统结构流图中提取;图中提取;系统结构互连图和

341、对应的规格说明描述系统信息的传系统结构互连图和对应的规格说明描述系统信息的传送方式,如电的方式或光的方式等等。送方式,如电的方式或光的方式等等。4系统建模和模拟系统建模和模拟基于计算机的系统一般来说都是比较复杂的。所以在基于计算机的系统一般来说都是比较复杂的。所以在系统建立之前人们很难理解和预测系统的性能、效率系统建立之前人们很难理解和预测系统的性能、效率和行为。如果等到系统开发出来并投入运行后再进行和行为。如果等到系统开发出来并投入运行后再进行实验和纠错已为时太晚。特别是对于实时嵌入式计算实验和纠错已为时太晚。特别是对于实时嵌入式计算机系统的试验的风险和代价都是很大的。因此,人们机系统的试验

342、的风险和代价都是很大的。因此,人们在系统分析和设计阶段普遍采用系统建模和模拟技术在系统分析和设计阶段普遍采用系统建模和模拟技术进行系统分析,以减少在真实环境中试验的风险和代进行系统分析,以减少在真实环境中试验的风险和代价。价。系统模拟是指用一个系统表现某个实际系统的特征或系统模拟是指用一个系统表现某个实际系统的特征或表现系统中选定行为的特征。目前,可以借助于计算表现系统中选定行为的特征。目前,可以借助于计算机系统来表现现实世界的物理、社会现象,即所谓虚机系统来表现现实世界的物理、社会现象,即所谓虚拟现实。系统模拟的目的是借助于系统模型进行现实拟现实。系统模拟的目的是借助于系统模型进行现实系统的

343、特征实验。系统的特征实验。系统建模与模拟的主要步骤系统建模与模拟的主要步骤1)分析问题,确定模拟的目标。)分析问题,确定模拟的目标。2)建立模型。模型是现实系统的一种描述,抽象和简化。)建立模型。模型是现实系统的一种描述,抽象和简化。模型必须由现实系统的元素组成、反映这些元素之间模型必须由现实系统的元素组成、反映这些元素之间的关系、反映现实系统的本质和实际。这是一个迭代的关系、反映现实系统的本质和实际。这是一个迭代的过程,直至通过评价,得到恰当的模型为止。的过程,直至通过评价,得到恰当的模型为止。3)借助模型对现实系统进行模拟,并评价模拟结果。)借助模型对现实系统进行模拟,并评价模拟结果。4)

344、如如果果模模拟拟结结果果不不正正确确,则则修修改改模模型型,之之后后在在3)和和4)间进行迭代,直至得到满意的模拟结果为止。间进行迭代,直至得到满意的模拟结果为止。5)撰写模拟文档。)撰写模拟文档。 采采用用系系统统建建模模和和模模拟拟技技术术,可可以以提提供供实实验验的的机机会会、缩短实验的时间、降低实验的成本、减小风险。缩短实验的时间、降低实验的成本、减小风险。3.4系统规格说明与评审系统规格说明与评审3.4.1系统规格说明系统规格说明系统规格说明是系统分析和定义阶段生成的一种系统规格说明是系统分析和定义阶段生成的一种文档。文档。 该文档描述了基于计算机系统应达到的目标,该文档描述了基于计

345、算机系统应达到的目标,应具有的功能、性能和支配系统开发的各种约束应具有的功能、性能和支配系统开发的各种约束条件;条件; 指明了各子系统在整个系统中的作用和地位;指明了各子系统在整个系统中的作用和地位; 描述了系统的输入输出数据和控制信息。描述了系统的输入输出数据和控制信息。系统规格说明是硬件工程、软件工程、数据库工系统规格说明是硬件工程、软件工程、数据库工程和人机工程的基础。程和人机工程的基础。可供参考的系统规格说明目录可供参考的系统规格说明目录1引言引言 1)文档的范围和目的)文档的范围和目的 2)概述)概述 目标目标 约束约束2功能和数据描述功能和数据描述 1)系统结构)系统结构 系统结构

346、关系图系统结构关系图 系统结构关系图的描述系统结构关系图的描述3子系统描述子系统描述 1)子系统)子系统N的规格说明的规格说明 结结构构流流图图 系系统统模模型型说说明明 性性能能说明说明 设计约束条件设计约束条件 分配系统部件分配系统部件 2)结构字典)结构字典 3)结构互连图及说明)结构互连图及说明可供参考的系统规格说明目录可供参考的系统规格说明目录4系统建模和模拟系统建模和模拟 1)用于模拟的系统模型)用于模拟的系统模型 2)模拟结果)模拟结果 3)特殊性能)特殊性能5项目问题项目问题 1)开发成本)开发成本 2)进度安排)进度安排6附录附录3.4.2系统规格说明的评审系统规格说明的评审

347、首先,系统开发人员应当和用户、客户通力合作,对首先,系统开发人员应当和用户、客户通力合作,对系统规格说明进行技术评审。技术评审主要解决的问系统规格说明进行技术评审。技术评审主要解决的问题有:题有: 系统规格说明中的定义是否正确,是否正系统规格说明中的定义是否正确,是否正确地描述了项目的范围、准确定义了系统的功能、性确地描述了项目的范围、准确定义了系统的功能、性能和界面,开发人员和用户对系统的目标是否有共同能和界面,开发人员和用户对系统的目标是否有共同的认识等。的认识等。 系统功能的复杂性是否与开发风险、成本和系统功能的复杂性是否与开发风险、成本和进度预测保持一致。进度预测保持一致。 系统及各子

348、系统功能定义是否足够详细。系统及各子系统功能定义是否足够详细。 系统与环境及各子系统之间的接口定义是否系统与环境及各子系统之间的接口定义是否详细、有否遗漏。详细、有否遗漏。 是否指明系统性能、可靠性和可维护性等需是否指明系统性能、可靠性和可维护性等需求。求。 是否为以后的开发打下坚实的基础。是否为以后的开发打下坚实的基础。管理复审管理复审技技术术评评审审通通过过后后,还还要要进进行行由由项项目目管管理理部部门门和和客客户户方方负负责责人人参参加加的的管管理理复复审审。管管理理复复审审主主要要解解决决的的问问题有:题有: 系系统统是是否否有有稳稳定定的的商商业业需需求求、经经济济和和社社会会效效

349、益。益。 系统开发是否还有其他的选择方案。系统开发是否还有其他的选择方案。 系统各部分开发风险如何。系统各部分开发风险如何。 系统开发所需资源是否具备。系统开发所需资源是否具备。 成本和进度计划是否合理等。成本和进度计划是否合理等。 管理复审最后应做出是否继续开发项目的决策。管理复审最后应做出是否继续开发项目的决策。系统规格说明技术评审和管理复审通过后,即可按系统规格说明技术评审和管理复审通过后,即可按照硬件工程、软件工程、数据库工程、人机工程等照硬件工程、软件工程、数据库工程、人机工程等并行进行开发工作。并行进行开发工作。 管理复审:管理复审: 技技术术评评审审通通过过后后,还还要要进进行行

350、由由项项目目管管理理部部门门和和客客户户方方负责人参加的管理复审。管理复审主要解决的问题有:负责人参加的管理复审。管理复审主要解决的问题有: 系统是否有稳定的商业需求、经济和社会效益。系统是否有稳定的商业需求、经济和社会效益。 系统开发是否还有其他的选择方案。系统开发是否还有其他的选择方案。 系统各部分开发风险如何。系统各部分开发风险如何。 系统开发所需资源是否具备。系统开发所需资源是否具备。 成本和进度计划是否合理等。成本和进度计划是否合理等。 管理复审最后应做出是否继续开发项目的决策。管理复审最后应做出是否继续开发项目的决策。 系统规格说明技术评审和管理复审通过后,即可按系统规格说明技术评

351、审和管理复审通过后,即可按照硬件工程、软件工程、数据库工程、人机工程等并行照硬件工程、软件工程、数据库工程、人机工程等并行进行开发工作。进行开发工作。 课程名称:软件工程课程名称:软件工程 第第9讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第4章章 需求分析需求分析教学目的:了解需求分析的任务和步骤、评审标准和过教学目的:了解需求分析的任务和步骤、评审标准和过 程,掌握基本技术,理解需求规程,掌握基本技术,理解需求规格说明书的格说明书的 作用与组成。作用与组成。教学重点:基本技术、需求规格说明书的教学重点:基本技术、需求规格说明书的 作用与组成。作用与组成。教学难点:基

352、本技术。教学难点:基本技术。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:习题业:习题 3、4第第4章章需求分析需求分析软件需求是指用户对目标软件系统在功能、性能、软件需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。行为、设计约束等方面的期望。需求分析就是通过对应用问题及其环境的分析与理需求分析就是通过对应用问题及其环境的分析与理解,采用一系列的分析方法和技术,将用户的需求解,采用一系列的分析方法和技术,将用户的需求逐步精确化、完全化、一致化,最终形成需求规格逐步精确化、完全化、一致化,最终形成需求规格说明文档的过程。说明文档的过程。系统分析阶段产生的系统

353、规格说明和项目规划是软系统分析阶段产生的系统规格说明和项目规划是软件需求分析的基础,分析人员需从软件的角度对其件需求分析的基础,分析人员需从软件的角度对其进行检查和调整,并在此基础上展开需求分析。进行检查和调整,并在此基础上展开需求分析。第第4章章需求分析需求分析需求分析阶段的成果主要是需求规格说明,该成需求分析阶段的成果主要是需求规格说明,该成果又是软件设计、编码、测试直至维护的主要基果又是软件设计、编码、测试直至维护的主要基础。础。需求分析是系统分析和软件设计的重要桥梁,是需求分析是系统分析和软件设计的重要桥梁,是软件生存周期的关键性阶段。良好的分析活动能软件生存周期的关键性阶段。良好的分

354、析活动能够减少错误和遗漏,从而可提高软件生产率和产够减少错误和遗漏,从而可提高软件生产率和产品质量、降低开发与维护成本。品质量、降低开发与维护成本。第第4章章需求分析需求分析q本章介绍需求分析的基础知识。主要包括:本章介绍需求分析的基础知识。主要包括:需求分析的三个主要步骤:问题分析、需求描述、需求分析的三个主要步骤:问题分析、需求描述、需求评审及各个步骤的主要任务;需求评审及各个步骤的主要任务;进行需求分析的一般技术和方法简介,包括初步进行需求分析的一般技术和方法简介,包括初步需求获取技术、需求建模技术、快速原型技术、需求获取技术、需求建模技术、快速原型技术、多视点分析方法等;多视点分析方法

355、等;需求规格说明的作用和内容及需求评审的标准和需求规格说明的作用和内容及需求评审的标准和评审过程等。评审过程等。4.1需求分析的任务需求分析的任务 需需求求分分析析的的任任务务可可通通过过问问题题分分析析、需需求求描描述述和和需需求求评审三个步骤来完成。评审三个步骤来完成。 1问题分析问题分析软软件件系系统统分分析析人人员员在在这这一一步步骤骤中中的的任任务务是是根根据据对对问问题题及及其其环环境境的的理理解解与与软软件件开开发发经经验验,改改正正用用户户需需求求的的模模糊糊性性、歧歧义义性性和和不不一一致致性性,排排除除由由于于用用户户的的片片面面性性和和短短期期行行为为所所导导致致的的不不

356、合合理理要要求求、挖挖掘掘用用户户尚尚未未提提出出但但具具有有价价值值的的潜潜在在需需求求,并并在在用用户户的的帮帮助助下下对对相相互互冲冲突突的的要要求求进进行行折折衷衷,使使用用户户需需求求逐逐步步精精确确化、一致化和完全化。化、一致化和完全化。4.1需求分析的任务需求分析的任务1问题分析问题分析在这一过程中,需要用某种方法为原始问题及在这一过程中,需要用某种方法为原始问题及其软件解建立模型,以便精确地记录用户从各其软件解建立模型,以便精确地记录用户从各个视点、在不同抽象级别上对原始问题的描述,个视点、在不同抽象级别上对原始问题的描述,并包含了问题及其环境所涉及的信息流、处理并包含了问题及

357、其环境所涉及的信息流、处理功能、用户界面、行为及设计约束等各方面内功能、用户界面、行为及设计约束等各方面内容。容。于是可通过对模型的精确化来达到需求分析的于是可通过对模型的精确化来达到需求分析的目标。比如,可以采用面向数据流的分析方法,目标。比如,可以采用面向数据流的分析方法,利用数据流图和数据字典等工具来建立模型。利用数据流图和数据字典等工具来建立模型。该模型是形成需求规格说明、进行软件设计的该模型是形成需求规格说明、进行软件设计的基础。基础。2需求描述需求描述该该步步骤骤的的主主要要任任务务是是以以需需求求模模型型为为基基础础,生生成成需需求求规规格格说说明明和和初初步步的的用用户户手手册

358、册,并并制制定定软软件件产品验收测试计划。产品验收测试计划。需需求求规规格格说说明明是是软软件件项项目目的的一一个个关关键键性性文文档档。其其中中应应包包含含对对目目标标软软件件系系统统的的功功能能、外外部部行行为为、性性能能、质质量量、可可靠靠性性、可可维维护护性性、约约束束条条件件和和需求验证标准等的完整的描述。需求验证标准等的完整的描述。初初步步用用户户手手册册应应包包括括目目标标软软件件系系统统的的用用户户界界面面的描述和使用方法的初步构想。的描述和使用方法的初步构想。验收测试计划是进行软件产品验收测试的依据。验收测试计划是进行软件产品验收测试的依据。3需求评审需求评审需求评审是软件开

359、发过程中的一个重要的里程碑。需求评审是软件开发过程中的一个重要的里程碑。需需求求评评审审的的主主要要任任务务是是分分析析人人员员在在用用户户(客客户户)和和软软件件设设计计人人员员的的配配合合下下对对需需求求规规格格说说明明和和初初步步用用户户手手册册进进行行审审核核,检检验验软软件件需需求求的的精精确确性性、完完全全性性和和一一致致性性,并并使使用用户户(客客户户)和和软软件件设设计计人人员员对对规规格格说明和用户手册达成一致的理解。说明和用户手册达成一致的理解。经经过过评评审审确确认认的的需需求求规规格格说说明明将将成成为为客客户户方方与与开开发发方方的的合合同同。如如果果评评审审未未通通

360、过过,比比如如发发现现了了遗遗漏漏或或错错误,则必须进行迭代,直至通过评审为止。误,则必须进行迭代,直至通过评审为止。4.2 需求分析的一般性技术需求分析的一般性技术为了克服困难,更有效地开展需求分析工作,为了克服困难,更有效地开展需求分析工作,软件系统分析人员必须掌握一些基本的需求分软件系统分析人员必须掌握一些基本的需求分析技术,主要包括:析技术,主要包括: 初步需求获取技术;初步需求获取技术; 需求建模技术;需求建模技术; 快速原型技术;快速原型技术; 问题的分解与抽象;问题的分解与抽象; 多视点分析技术等。多视点分析技术等。4.2.1 初步需求获取技术初步需求获取技术在在分分析析阶阶段段

361、的的初初期期,由由于于分分析析人人员员和和用用户户的的共共同同知知识识领领域域可可能能不不多多,致致使使分分析析人人员员对对问问题题往往往往知知之之不不多多,而而用用户户对对目目标标软软件件的的要要求求及及对对要要求求的的描描述述常常常常是是零零乱乱而而模模糊糊的的,从从而而会会造造成成相相互互交交流流和和相相互互理理解解上上的的困困难难。为为了了克克服服困困难难,获取初步需求,可以采用如下的技术手段:获取初步需求,可以采用如下的技术手段: 访谈与会议;访谈与会议; 观察用户工作流程;观察用户工作流程; 分析人员和用户组成联合小组。分析人员和用户组成联合小组。1访谈与会议访谈与会议分分析析人人

362、员员采采用用个个别别访访谈谈或或小小组组会会议议的的形形式式与与用用户户进进行行初初步步交交流流。在在访访谈谈和和会会议议之之前前,分分析析人人员员根根据据对对问问题题的的初初步步描描述述精精心心准准备备一一系系列列问问题题,通通过过用用户户对对问题的回答或互相商讨来逐步理解用户的需求。问题的回答或互相商讨来逐步理解用户的需求。准备问题的原则有:准备问题的原则有:首首先先应应搞搞清清一一般般性性、整整体体性性问问题题,然然后后再再涉涉及及细细节节问题。问题。在在组组织织问问题题时时要要尽尽量量做做到到客客观观、公公证证,不不应应限限制制用用户的自由发挥。户的自由发挥。所所提提问问题题汇汇总总后

363、后应应能能反反映映应应用用问问题题及及其其子子问问题题的的全全貌、并且不要过分详细。貌、并且不要过分详细。2观察用户工作流程观察用户工作流程如如果果可可能能,可可通通过过实实际际观观察察用用户户的的手手工工操作过程来提取新系统的初步用户需求。操作过程来提取新系统的初步用户需求。观观察察手手工工操操作作过过程程不不是是为为了了模模拟拟手手工工操操作作过过程程,而而是是为为了了获获取取第第一一手手资资料料,并并从从中中提提取取出出有有价价值值的的需需求求。分分析析人人员员有有了了第第一一手手资资料料,再再结结合合自自己己的的软软件件开开发发和和应应用用的的经经验验,就就能能够够发发现现不不合合理理

364、的的用用户户需需求求、提提出出用用户户还还没没有有意意识识到到的的潜潜在在的的但但却却很很有有价价值值的的用用户户需需求求,并并能能够够从从软软件件的的角角度度改改进进操操作作流流程程和和操操作作规规范范,从而可获得用户满意的分析结果。从而可获得用户满意的分析结果。3用户和开发人员共同组成联合小组用户和开发人员共同组成联合小组为为加加强强信信息息沟沟通通、减减少少误误解解和和避避免免产产生生遗遗漏漏、充充分分调调动动用用户户的的积积极极性性,在在可可能能的的条条件件下下,可可以以建建立立由由开开发发方方和和用用户户方方共同组成的联合小组。共同组成的联合小组。联联合合小小组组除除了了双双方方的的

365、分分析析人人员员外外,应应设设专专门门的的记记录录员员、负负责责会会议议议议程程的的人人员员和和资资料料员员等等,并并制制定定小小组组的的规规章章制制度度和和计计划划,选选定定一一种种易易于于理理解解、简简洁洁、精精确确的的表表示示机机制制作作为为双双方方的的共共同同语语言言,比比如如采采用带文字说明的流程图等。用带文字说明的流程图等。【例例4.1】这里以这里以“家庭保安系统家庭保安系统”为例,简要说明为例,简要说明初步需求的获取过程。假设用户的原始需求描述如下:初步需求的获取过程。假设用户的原始需求描述如下: 根根据据家家庭庭保保安安市市场场的的增增长长趋趋势势,我我们们希希望望建建立立一一

366、种种基基于于微微处处理理器器的的家家庭庭保保安安系系统统,它它能能够够识识别别异异常常事事件件并并采采取取相相应应的的报报警警措措施施。这这些些异异常常事事件件有有:非非法法进进入入、火火灾灾、水水淹淹,等等等等。当当传传感感器器一一旦旦探探测测出出相相应应的的异异常常事事件件时时,系系统统应应自自动动用用电电话话向向监监控控中中心心报报警警。此此外外,系系统统应应允允许许户户主对其行为实施程序式控制。主对其行为实施程序式控制。【例例4.1】为进行初步的需求分析,这里采用开发方和用户方组为进行初步的需求分析,这里采用开发方和用户方组成联合小组的方法。为此,联合小组应制定工作制度:成联合小组的方

367、法。为此,联合小组应制定工作制度:每次会议开始前必须有确定的议程,小组成员必须针每次会议开始前必须有确定的议程,小组成员必须针对议程进行充分准备并应形成文字。对议程进行充分准备并应形成文字。联合小组会议首先应明确问题的范围、问题与环境的联合小组会议首先应明确问题的范围、问题与环境的关系,并就开发软件产品的必要性达成共识。关系,并就开发软件产品的必要性达成共识。之后的会议,小组负责人要求每位参加者根据负责的之后的会议,小组负责人要求每位参加者根据负责的范围列出应用问题及环境中有关的对象、对象的操作范围列出应用问题及环境中有关的对象、对象的操作及对象间的关系。如市场营销人员列出控制面板、电及对象间

368、的关系。如市场营销人员列出控制面板、电话机、监控中心等对象和用户编程控制、电话拨号、话机、监控中心等对象和用户编程控制、电话拨号、报警等操作;负责传感器的用户可能列举烟雾传感器、报警等操作;负责传感器的用户可能列举烟雾传感器、门窗监视器、警报器等对象。门窗监视器、警报器等对象。【例例4.1】接着,将对这些列举的对象和操作进行更详细接着,将对这些列举的对象和操作进行更详细的讨论和描述,比如,详细地描述接收传感器的讨论和描述,比如,详细地描述接收传感器事件、用户编程控制、电话报警等操作等。事件、用户编程控制、电话报警等操作等。之后,用户可能提出一些约束条件。比如,造之后,用户可能提出一些约束条件。

369、比如,造价不应超过价不应超过3000元,对传感器事件的响应时间元,对传感器事件的响应时间不得超过不得超过1秒,事件必须按优先级顺序进行处秒,事件必须按优先级顺序进行处理等等。理等等。 会后,小组负责人应对这些信息加以整理并会后,小组负责人应对这些信息加以整理并形成文档,该文档应能反映形成文档,该文档应能反映“家庭保安系统家庭保安系统”的全貌。的全貌。【例例4.1】之之后后,根根据据“家家庭庭保保安安系系统统”的的特特点点,将将联联合合小小组组分分成成两两个个小小组组,并并行行处处理理用用户户编编程程控控制制和和传传感感器器检检测测两两个个子子系系统统,以以便便使使子子问问题题的的软软件件需需求

370、求进进一一步步细细化化,这这时时可可能能又又会会增增加加新新对对象象、新新操操作作、新新约约束束条条件件。在在子子系系统统的的需需求求基基本本明明确确并并形形成成文文档档后后,还还应应就就子子系系统统的的整整合合及及需需求求验证标准等进行初步的讨论。验证标准等进行初步的讨论。最最后后,初初步步需需求求分分析析应应形形成成结结论论性性文文档档。比比如如,经经过过初初步步的的需需求求分分析析,“家家庭庭保保安安系系统统”的的部部分初步需求文档如下:分初步需求文档如下:【例例4.1】 “家家庭庭保保安安系系统统”的的软软件件允允许许用用户户在在安安装装时时进进行行系系统统配配置置,实实施施对对传传感

371、感器器的的监监控控并并通通过过控控制制面面板板与与户户主主进进行行信息交互。信息交互。 系系统统开开机机后后,软软件件系系统统负负责责显显示示系系统统当当前前的的工工作作状状态,接收并处理户主的命令。态,接收并处理户主的命令。 当当系系统统处处于于配配置置状状态态,软软件件系系统统允允许许户户主主进进行行配配置置操操作作。配配置置操操作作包包括括:指指定定每每一一传传感感器器的的种种类类和和编编号号;设设置置开开、关关机机密密码码;指指定定报报警警电电话话号号码码;指定报警延迟和电话重拨延迟时间(以秒为单位)。指定报警延迟和电话重拨延迟时间(以秒为单位)。 当当系系统统处处于于监监视视状状态态

372、时时,软软件件系系统统即即开开始始对对所所有有传传感感器器实实施施监监控控。当当软软件件系系统统接接收收到到传传感感器器发发出出的的数数据据后后,判判别别是是否否出出现现异异常常事事件件,如如果果是是,则则经经过过指指定定的的延延迟迟时时间间即即开开始始拨拨报报警警电电话话号号码码,拨拨号号操操作作将将按按照照重重拨拨延延迟迟反反复复进进行行,直直至至电电话话接接通通。此此时时软软件件系系统统负负责责向监控中心报告异常事件发生的地点、时间和性质。向监控中心报告异常事件发生的地点、时间和性质。【例例4.1】 以以上上文文档档没没有有包包括括约约束束条条件件、测测试试标标准准等等方方面面的内容。的

373、内容。初初步步需需求求文文档档将将是是后后续续详详细细需需求求分分析析的的基基础础。在在此此基基础础上上,就就可可以以采采用用某某种种需需求求分分析析方方法法进进行详细的需求分析。行详细的需求分析。在在以以后后几几章章中中,将将分分别别介介绍绍几几种种详详细细的的需需求求分分析方法和其中最重要的需求建模技术,它们是:析方法和其中最重要的需求建模技术,它们是: “面面向向数数据据流流的的需需求求分分析析方方法法”; “ “面向数据的需求分析方法面向数据的需求分析方法”; “ “面向对象的需求分析方法面向对象的需求分析方法”。4.2.2需求建模技术需求建模技术为为了了使使用用户户需需求求逐逐步步精

374、精细细化化、完完全全化化、一一致致化化,通通常常采采用用需需求求建建模模技技术术,即即用用建建立立目目标标软软件件系系统统模模型型的的方方法法来来刻刻画画软软件件系系统统中中的的信信息息、处处理理功能和外部行为。功能和外部行为。通通常常,分分析析人人员员选选定定一一种种分分析析方方法法,并并用用该该方方法法中中的的一一些些图图形形记记号号分分别别表表示示信信息息流流、处处理理功功能能和和系系统统行行为为,并并利利用用受受限限制制的的自自然然语语言言给给出出用用户户需需求求的的描描述述。这这种种模模型型的的表表示示机机制制还还应应具具有有良良好好的的结结构构化化能能力力,以以便便处处理理大大型型

375、问问题题的的按按层次分解的问题。层次分解的问题。软软件件需需求求分分析析的的过过程程,实实际际上上是是软软件件模模型型的的建建造和不断完善的过程。造和不断完善的过程。需求建模的步骤需求建模的步骤在分析的初期,分析人员通过访谈、会议、实际观在分析的初期,分析人员通过访谈、会议、实际观 察、分析现有系统等方法获取初步的用户需求。察、分析现有系统等方法获取初步的用户需求。分析人员根据选定的一种分析方法,在初步用户需分析人员根据选定的一种分析方法,在初步用户需 求的基础上构筑初步的模型作为开发方和用户相互求的基础上构筑初步的模型作为开发方和用户相互 沟通的表示机制。沟通的表示机制。分析人员在用户的密切

376、配合下,利用选定的分析方分析人员在用户的密切配合下,利用选定的分析方 法不断地对模型进行精细化、一致化、完全化,直法不断地对模型进行精细化、一致化、完全化,直 至获得满意的用户需求为止。至获得满意的用户需求为止。在在分分析析阶阶段段构构筑筑的的模模型型不不应应涉涉及及软软件件实实现现的的细细节节,以以免免分分散散分分析析人人员员的的注注意意力力、限限制制软软件件设设计计人人员员为为提提高高软件质量和效率而选择实现方法的自由度。软件质量和效率而选择实现方法的自由度。需需求求分分析析结结束束时时确确立立的的软软件件模模型型是是生生成成需需求求规规格格说说明明的依据,也是软件设计和实现的基础。的依据

377、,也是软件设计和实现的基础。4.2.3 快速原型技术快速原型技术 如如果果按按照照传传统统的的软软件件开开发发方方法法,需需要要经经过过漫漫长长的的开开发发时时间间之之后后用用户户才才能能看看到到目目标标软软件件的的最最初初版版本本。此此时时用用户户常常常常会会提提出出许许多多修修改改意意见见,有有时时甚甚至至全全盘盘否否定定,导导致致开开发发失失败败。为为了了降降低低开开发发风风险险,在在需需求求分分析阶段常常采用快速原型技术。析阶段常常采用快速原型技术。 1快速原型技术的基本思想快速原型技术的基本思想 在在软软件件开开发发的的早早期期,快快速速开开发发一一个个目目标标软软件件系系统统的的原

378、原型型,让让用用户户对对其其进进行行评评价价并并提提出出修修改改意意见见,然然后后开开发发人人员员根根据据用用户户的的意意见见对对原原型型进进行行改改进进。当当原原型型几几经经改改进进最最终终确确认认后后,它它将将直直接接进进化化成成软软件件产产品品,或或者者由由软软件件设设计计、编编码码人人员员按按照照模模型型所所确确立立的的外外部部特征去实现软件产品。特征去实现软件产品。2采用快速原型技术的具体步骤采用快速原型技术的具体步骤采采用用一一种种分分析析方方法法生生成成一一个个软软件件系系统统或或其其中中所所关关心心部分的简化需求规格说明。部分的简化需求规格说明。对对该该规规格格说说明明进进行行

379、评评审审通通过过后后,立立即即生生成成设设计计规规格格说说明明。为为了了快快速速生生成成原原型型,这这种种设设计计仅仅注注重重所所关关心心的的问问题题,如如软软件件的的总总体体结结构构、用用户户界界面面和和数数据据设设计计、或或者者某个复杂的算法等等,不注重过程内部的控制流设计。某个复杂的算法等等,不注重过程内部的控制流设计。使使用用可可重重用用软软部部件件、用用户户界界面面自自动动生生成成器器等等工工具具快快速速生成可运行的软件原型并通过测试。生成可运行的软件原型并通过测试。将原型提交给用户进行评价,以便征求改进意见。将原型提交给用户进行评价,以便征求改进意见。上上述述过过程程反反复复迭迭代

380、代,直直至至用用户户完完全全满满意意。此此时时的的原原型型已已完完全全、准准确确地地反反映映了了目目标标软软件件在在所所关关心心方方面面的的需需求求,可作为需求规格说明的一部分而成为软件设计的基础。可作为需求规格说明的一部分而成为软件设计的基础。3快速原型技术的适用场合快速原型技术的适用场合该该技技术术特特别别适适合合于于软软件件产产品品要要求求大大量量的的用用户户交交互互、或或产产生生大大量量的的可可视视输输出出、或或设设计计一一些些复复杂杂的的算算法法等等场场合合,目目前前的的绝绝大多数软件都适合于快速原型技术。大多数软件都适合于快速原型技术。除除非非由由于于问问题题相相当当复复杂杂,致致

381、使使开开发发快快速速原原型型可可以以获获得得的的支支持持太太少少、所所冒冒的的风风险险太太大大时时,就就不不易易采采用用。但但对对于于其其中中的的某某些些子子问问题题,尤尤其其是是用用户户界界面面,还还可可采采用用快速原型技术进行部分分析。快速原型技术进行部分分析。4.2.4 问题分解与抽象、多视点分析技术问题分解与抽象、多视点分析技术问题分解技术问题分解技术 分分析析人人员员常常常常采采用用一一种种问问题题分分解解的的技技术术。即即将将一一个个大大型型复复杂杂的的问问题题分分解解为为若若干干个个子子问问题题,然然后后对对每每一一个个子子问问题题逐逐个个进进行行分分析析,再再自自底底向向上上综

382、综合合成成整整个个问问题题的的分分析析结结果果。这这种种分分解解可可以以逐逐级级进进行行,直直至至子子问问题题的的规规模降到合适的程度。模降到合适的程度。问题抽象技术问题抽象技术 分分析析人人员员在在分分析析过过程程中中要要善善于于从从诸诸多多的的特特殊殊问问题题中中抽抽象象出出一一般般的的问问题题,首首先先关关注注一一般般问问题题的的解解决决途途径径,再再用用其其指指导导特特殊殊问问题题的的求求解解。在在抽抽象象的的过过程程中中,还还要要注注意意用用户户的的描描述述所所处处的的抽抽象象级级别别的的不不同同,以以便便建建立立清清晰的思路。晰的思路。4.2.4 问题分解与抽象、多视点分析技术问题

383、分解与抽象、多视点分析技术 比如,在比如,在“家庭保安系统家庭保安系统”中,用户可能提出中,用户可能提出“系系统状态显示统状态显示”、“用户编制程序时的系统外部行为用户编制程序时的系统外部行为”等的需求。分析人员则应在等的需求。分析人员则应在“用户界面用户界面”这一抽这一抽象级别上统一地规划软件系统与用户的交互行为。象级别上统一地规划软件系统与用户的交互行为。可见,在不同的抽象级别上去分析不同层次的问题,可见,在不同的抽象级别上去分析不同层次的问题,也是解决复杂问题的一个重要方法,它可以避免不也是解决复杂问题的一个重要方法,它可以避免不一致性,减少分析的工作量。一致性,减少分析的工作量。多视点

384、分析技术:多视点分析技术: 为了获得全面的需求分析结果,防止遗漏,有必为了获得全面的需求分析结果,防止遗漏,有必要从各个视点分别对问题进行理解与分析,然后综要从各个视点分别对问题进行理解与分析,然后综合成全面的理解。分析人员可以就系统视点与用户合成全面的理解。分析人员可以就系统视点与用户视点、信息视点、功能视点与行为视点等多个视点视点、信息视点、功能视点与行为视点等多个视点分别进行分析,以确保需求分析的完全性。分别进行分析,以确保需求分析的完全性。4.3 需求规格说明与评审需求规格说明与评审需求分析的主要阶段性产品是需求规格说明书。它必需求分析的主要阶段性产品是需求规格说明书。它必须通过需求评

385、审后才能生效,这是一个重要的里程碑。须通过需求评审后才能生效,这是一个重要的里程碑。4.3.1 需求规格说明书的作用与内容需求规格说明书的作用与内容1. 需求规格说明书的作用主要有:需求规格说明书的作用主要有:1)它是软件设计人员进行设计和编码的出发点和基础;)它是软件设计人员进行设计和编码的出发点和基础;2)它它是是对对目目标标软软件件产产品品进进行行验验收收测测试试的的依依据据。这这就就要要求需求规格说明书中的各项需求都应该是可测试的;求需求规格说明书中的各项需求都应该是可测试的;3)它它起起到到软软件件开开发发方方和和客客户户(或或用用户户)方方之之间间的的一一份份合同的作用。合同的作用

386、。4.3.1 需求规格说明书的作用与内容需求规格说明书的作用与内容2. 需求规格说明书中的内容需求规格说明书中的内容q应应主主要要包包括括功功能能与与行行为为的的需需求求描描述述和和非非行行为为需需求求描描述。述。功功能能与与行行为为需需求求的的分分析析与与描描述述方方法法将将在在以以后后几几章章中中根据不同的需求建模方法分别介绍。根据不同的需求建模方法分别介绍。非非行行为为需需求求是是指指目目标标软软件件系系统统在在工工作作时时应应具具备备的的属属性性,主主要要有有运运行行效效率率、可可靠靠性性、安安全全性性、可可维维护护性性、可移植性等等。可移植性等等。在在需需求求规规格格说说明明书书中中

387、不不应应包包括括如如人人员员需需求求、成成本本预预算算、进进度度计计划划、质质量量保保证证计计划划等等内内容容,以以便便使使其其简简洁、目标明确。洁、目标明确。需求规格说明书的基本格式框架需求规格说明书的基本格式框架目录目录1 引言引言 1.1 本说明的编写目的本说明的编写目的 1.2 软件产品的作用范围软件产品的作用范围 1.3 定义、同义词与缩写定义、同义词与缩写 1.4 参考文献参考文献2 概述概述 2.1 产品与其环境间的关系产品与其环境间的关系 2.2 功能概述功能概述 2.3 用户特征用户特征 2.4 约束条件约束条件 2.5 假设与前提条件假设与前提条件需求规格说明书的基本格式框

388、架需求规格说明书的基本格式框架3功能或行为需求功能或行为需求 3.1 功功能能或或行行为为需需求求1:1)引引言言 2)输输入入 3)处理过程描述)处理过程描述 4)输出)输出 3.2 功功能能或或行行为为需需求求2:1)引引言言 2)输输入入 3)处理过程描述)处理过程描述 4)输出)输出 3.n 功能或行为需求功能或行为需求n: 1)引言)引言 2)输入)输入 3)处理过程描述)处理过程描述 4)输出)输出需求规格说明书的基本格式框架需求规格说明书的基本格式框架4外部界面需求外部界面需求 4.1 用户界面用户界面 4.2 硬件界面硬件界面 4.3 软件界面软件界面5性能需求性能需求 5.1

389、 精度精度 5.2 时间特征时间特征 5.3 灵活性灵活性6设计约束设计约束 6.1 标准化约束标准化约束 6.2 硬件约束硬件约束 需求规格说明书的基本格式框架需求规格说明书的基本格式框架7其他需求其他需求 7.1 数据库需求数据库需求 7.2 用户操作需求用户操作需求 7.3 工作场地需求工作场地需求8软件产品属性软件产品属性 8.1 可用性可用性 8.2 安全性安全性 8.3 可维护性可维护性 8.4 可移植性可移植性附录附录索引索引4.3.2 需求评审需求评审软软件件系系统统中中的的错错误误约约有有15%来来源源于于需需求求分分析析中中的的错错误误。而而在在维维护护阶阶段段去去改改正正

390、这这部部分分错错误误是是相相当当困困难难的的。为为了了及及时时发发现现并并纠纠正正这这类类错错误误,必必须须对对需需求求规规格格说说明书进行评审,即需求评审。明书进行评审,即需求评审。1. 评审标准(按照重要性的次序)评审标准(按照重要性的次序)1)正正确确性性。指指需需求求规规格格说说明明书书中中的的每每一一项项功功能能、行行为为、性性能能的的描描述述都都是是正正确确的的、合合理理的的,并并能能满满足足用用户的期望。户的期望。2)无无歧歧义义性性。指指规规格格说说明明书书中中的的每每个个需需求求陈陈述述都都只只有有唯唯一一的的解解释释。要要避避免免产产生生歧歧义义性性,就就应应使使用用标标准

391、准化术语,并对术语的语义进行统一的解释。化术语,并对术语的语义进行统一的解释。1. 评审标准(按照重要性的次序)评审标准(按照重要性的次序)3)完完全全性性。指指不不遗遗漏漏任任何何用用户户需需求求。即即需需求求规规格格说说明明书书中中包包括括了了所所有有的的功功能能、行行为为、性性能能约约束等。束等。4)可可验验证证性性。指指需需求求规规格格说说明明书书中中的的每每一一项项需需求都是可以检验的。求都是可以检验的。5)一致性。指陈述的需求之间不存在矛盾之处。)一致性。指陈述的需求之间不存在矛盾之处。6)可可理理解解性性。指指规规格格说说明明应应尽尽量量简简洁洁、明明确确,便便于于分分析析人人员

392、员、客客户户(用用户户)、设设计计人人员员、测测试试人人员员和和维维护护人人员员的的理理解解。因因此此,应应尽尽量量减减少少专业化的词汇。专业化的词汇。 1. 评审标准(按照重要性的次序)评审标准(按照重要性的次序)7)可可修修改改性性。指指需需求求规规格格说说明明书书的的框框架架结结构构应应能能比比较较容容易易地地实实现现对对其其可可能能进进行行的的增增补补、删删除除和和修修改改,并能保持总体结构不变。并能保持总体结构不变。8)可可追追踪踪性性。指指规规格格说说明明可可向向前前追追踪踪,即即其其中中的的每每一一项项需需求求与与用用户户的的原原始始需需求求项项清清晰晰地地联联系系起起来来;也也

393、可可向向后后追追踪踪,即即为为后后续续开开发发和和其其他他文文档档引引用用这这些需求项提供了依据。些需求项提供了依据。2. 需求评审过程需求评审过程 需求评审过程应采用召开正式评审会议的形式。需求评审过程应采用召开正式评审会议的形式。 参参加加的的人人员员应应当当有有用用户户、系系统统分分析析员员、系系统统设设计计人人员员等等。在在评评审审会会上上,分分析析人人员员应应说说明明软软件件产产品品的的总总体体目目标标,也也就就是是介介绍绍需需求求规规格格说说明明书书中中的的主主要要内内容容。之之后后,与与会会人人员员对对说说明明书书的的核核心心部部分分需需求求模模型型进进行行评评估估。并并按按照照

394、上上述述的的评评审审标标准准逐逐一一进进行行审审查查,最最后后确确认认其其是是否否具具有有良良好好的的品品质质、是是否否构构成成以以后后开开发发的的良良好好的的基基础础。如如果果在在评评审审过过程程中中发发现现说说明明书书中中存存在在错错误误或或遗遗漏漏,应应责责承承分分析析人人员员返返工工,并并再再行行评评审审。需需求求评评审审也也可可采采用用先先进进行行技技术术评评审审,再再进进行行管管理理复复审审的的方方法法进进行行。管管理理复复审审应应有有开开发发方方和和客客户户方方(或或用用户户方方)管管理理部部门门负负责责人人参参加加,复复审审通通过过后后,双双方方应应签签订订正正式式的的合同。合

395、同。部分习题答案,仅供参考部分习题答案,仅供参考4.3 以以下下描描述述哪哪些些属属于于不不精精确确的的用用户户需需求求描描述述?如如果果不不精确,应如何改正?精确,应如何改正? 1)系统应表现出良好的响应速度。)系统应表现出良好的响应速度。 2)系统必须用菜单驱动。)系统必须用菜单驱动。 3)在数据录入界面,应该有)在数据录入界面,应该有10个按钮。个按钮。 4)系统运行时占用的内存不得超过)系统运行时占用的内存不得超过256KB。 5)电梯应平稳运行。)电梯应平稳运行。 6)即使系统崩溃,也不能损坏用户数据。)即使系统崩溃,也不能损坏用户数据。答:答:1)不精确,应指出具体项目和响应时间。

396、)不精确,应指出具体项目和响应时间。 2)“必须必须”不精确,因系统还可以用其他方式不精确,因系统还可以用其他方式驱动。驱动。 3)不精确,因过于细致,限制了设计的自由度。)不精确,因过于细致,限制了设计的自由度。 5)不精确,应指出加速、减速、运行速度的大)不精确,应指出加速、减速、运行速度的大小。小。 6)不精确,因这是一个难以保证的)不精确,因这是一个难以保证的“用户需求用户需求”。 4)仅是一个约束条件。)仅是一个约束条件。部分习题答案,仅供参考部分习题答案,仅供参考4.4 判断下述语句对中两种陈述的一致性:判断下述语句对中两种陈述的一致性: 1)所有命令的响应时间应小于)所有命令的响

397、应时间应小于1秒。秒。 EDIT命令的响应时间应小于命令的响应时间应小于3秒。秒。 2)所有命令的响应时间应小于)所有命令的响应时间应小于3秒。秒。 EDIT命令的响应时间应小于命令的响应时间应小于1秒。秒。 3)所有命令的响应时间都应该恰为)所有命令的响应时间都应该恰为3秒。秒。 EDIT命令的响应时间应小于命令的响应时间应小于5秒。秒。 4)EDIT命令的响应时间应小于命令的响应时间应小于3秒。秒。 EDIT命令的响应时间应小于命令的响应时间应小于1秒。秒。答:答:1)、)、3)、)、4)语句中的两种陈述不一致。)语句中的两种陈述不一致。课程名称:软件工程课程名称:软件工程 第第10讲讲班

398、班 级:计级:计011、2、3、4班班 日日 期:期:2004年年9月月30日星期四日星期四7、8节节教教 室:室:3教教13楼多媒体教室楼多媒体教室教学题目:第教学题目:第5章章 面向数据流的分析方法。面向数据流的分析方法。教学目的:掌握数据流图与数据字典的概念及用法,理教学目的:掌握数据流图与数据字典的概念及用法,理 解实体解实体关系图的绘制方法和作用,关系图的绘制方法和作用,初步掌握初步掌握 基于数据流的分析方法。基于数据流的分析方法。教学重点:数据流图与数据字典、实体教学重点:数据流图与数据字典、实体关系图、基于数关系图、基于数 据流的分析方法。据流的分析方法。教学难点:实体教学难点:

399、实体关系图。关系图。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第5章章面向数据流的分析方法面向数据流的分析方法面向数据流的分析方法(面向数据流的分析方法(datafloworiented analysis method)与面向数据、面向对象的分析方法,都是)与面向数据、面向对象的分析方法,都是需求建模方法。它们均有一组规范的语言表达机制,需求建模方法。它们均有一组规范的语言表达机制,用于需求分析人员表达用户需求、构造软件系统模型。用于需求分析人员表达用户需求、构造软件系统模型。此外,它们还含有一些规则和经验知识,指导分析人此外,它们还含有一些规则和经验知识,指导分析

400、人员提取需求信息,促进用户需求精确化、全面化和一员提取需求信息,促进用户需求精确化、全面化和一致化。致化。面向数据流的分析方法是结构化分析方法系列中的一面向数据流的分析方法是结构化分析方法系列中的一支,具有明显的结构化特征。结构化分析方法的雏形支,具有明显的结构化特征。结构化分析方法的雏形出现于出现于20世纪世纪60年代后期。但是,直到年代后期。但是,直到1979年才由年才由DeMarco将其作为一种需求分析方法正式提出。由此,将其作为一种需求分析方法正式提出。由此,结构化分析方法得到了迅速发展和广泛应用。结构化分析方法得到了迅速发展和广泛应用。 本本章章主主要要介介绍绍广广为为使使用用的的数

401、数据据流流方方法法,以以及及需求分析需求分析CASE工具。工具。5.1 数据流图与数据字典数据流图与数据字典一个基于计算机的信息处理系统由数据流一个基于计算机的信息处理系统由数据流和一系列的转换构成,而这些转换将输入和一系列的转换构成,而这些转换将输入数据流变换为输出数据流。数据流变换为输出数据流。数据流图就是用来刻画数据流和转换的信数据流图就是用来刻画数据流和转换的信息系统建模技术。它用简单的图形记号分息系统建模技术。它用简单的图形记号分别表示数据流、转换、数据源以及外部实别表示数据流、转换、数据源以及外部实体,如下图所示。体,如下图所示。数据流图的图形记号数据流图的图形记号外部实体外部实体

402、位于软件系统边界之外位于软件系统边界之外的信息生产者或消费者的信息生产者或消费者转换转换转换数据流的处理过程,转换数据流的处理过程,又称泡(又称泡(bubble)数据源数据源数据流数据流为一个或多个转换提供数据源或数据为一个或多个转换提供数据源或数据存储服务的缓冲区、文件或数据库存储服务的缓冲区、文件或数据库在转换之间有向流动的在转换之间有向流动的数据项或数据项集合数据项或数据项集合 “与与”,即同时输入,即同时输入/出;出; + “或或”,即至少一项输入,即至少一项输入/出;出; “异或异或”,即非同时输入,即非同时输入/出出*数据流图数据流图数据流图提供了层次结构,让分析人员能数据流图提供

403、了层次结构,让分析人员能够方便地表示任意抽象级别上的信息系统够方便地表示任意抽象级别上的信息系统或其子系统,并支持问题分解、逐步求精或其子系统,并支持问题分解、逐步求精的分析方法。的分析方法。初始时,整个信息处理系统可以用图初始时,整个信息处理系统可以用图512所示的顶级(第所示的顶级(第0级)数据流图表示。级)数据流图表示。图图512 “家庭保安系统家庭保安系统”顶级数据流图顶级数据流图警报类别警报类别显示信息显示信息电话拨号音频电话拨号音频传感数据传感数据用户命令用户命令家庭保家庭保安系统安系统控制面板控制面板传感器传感器显示器显示器电话机电话机警报器警报器 随着需求分析活动的逐渐深入,较

404、高抽象级别上的复随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列相互关联的数据流和子转换,杂转换可以精化为一系列相互关联的数据流和子转换,如图如图513所示。在数据流方法中,对数据(数据流)所示。在数据流方法中,对数据(数据流)的精化是伴随着对转换的逐步精化而同步进行的。的精化是伴随着对转换的逐步精化而同步进行的。Z2Y2X2N1M1D1D1C1C1E1E1B0A0A0F1F3FF2F4F5F41F42F43F44B0第第0级级第第1级级第第2级级图图513 数据流图的精化与层间平衡数据流图的精化与层间平衡建立数据流模型要遵循以下的原则建立数据流模型要遵循以下的原则1每每个

405、个加加工工至至少少应应有有一一个个输输入入数数据据流流(反反映映被被处处理理数数据的来源)和一个输出数据流(反映加工的结果)。据的来源)和一个输出数据流(反映加工的结果)。2数数据据流流图图中中各各构构成成元元素素的的名名称称必必须须具具有有明明确确的的含含义义且能够代表对应元素的内容或功能。且能够代表对应元素的内容或功能。3对对某某个个加加工工进进行行细细化化生生成成的的下下层层数数据据流流图图,称称为为其其上上层层图图的的子子图图。应应保保证证分分层层数数据据流流图图中中任任意意对对应应的的父父图和子图的输入图和子图的输入/输出数据流保持一致。输出数据流保持一致。4应应按按照照层层次次给给

406、每每个个加加工工编编号号,用用于于表表明明该该加加工工所所处处的的层层次次及及上上、下下层层的的父父图图与与子子图图的的关关系系。编编号号的的规规则则为为:顶顶层层加加工工不不用用编编号号;第第一一层层加加工工的的编编号号为为1,2,n。第第二二层层加加工工的的编编号号为为11,12,21,22,n1,n2,等等,以以此类推。此类推。建立数据流模型要遵循以下的原则建立数据流模型要遵循以下的原则5在在父父图图中中不不要要出出现现子子图图中中涉涉及及的的局局部部数数据据存存储储文文件件。通通常常除除底底层层数数据据流流图图中中需需表表明明所所有有数数据据存存储储外外,为为保保持持画画面面整整洁洁,

407、各各中中间间层层数数据据流流图图只只需需显显示示处处于于加加工工之之间的接口文件即可。间的接口文件即可。 6数数据据流流图图只只能能由由四四种种基基本本符符号号组组成成,是是实实际际业业务务流流程程的的客客观观映映象象,用用于于说说明明系系统统应应该该“做做什什么么”,而而不不需要指明系统需要指明系统“如何做如何做”。7数数据据流流图图的的分分解解速速度度应应保保持持适适中中。通通常常一一个个加加工工每每次次可可分分解解为为24个个子子加加工工,最最多多不不要要超超过过七七个个,否否则则会会增增加加用用户户的的理理解解难难度度。同同时时要要注注意意,逐逐层层精精化化必必须须适可而止。适可而止。

408、8 如果为了便于数据流图在计算机上的输入和输出,如果为了便于数据流图在计算机上的输入和输出,应免除斜线、弧线、圆等符号。应免除斜线、弧线、圆等符号。数据字典数据字典数据流图机制没有描述数据流的内容。数据流图必须数据流图机制没有描述数据流的内容。数据流图必须与描述并组织数据条目的数据字典配套使用。与描述并组织数据条目的数据字典配套使用。表表51 数据字典中的基本符号及其含义数据字典中的基本符号及其含义符号符号含义含义说明说明=表示定义为表示定义为用于对用于对=左边的条目进行确切的定义左边的条目进行确切的定义+表示与关系表示与关系X=a+b表示表示X由由a和和b共同构成共同构成|或或, 表示或关系

409、表示或关系X=a|b与与X=a,b的等价,表示的等价,表示X由由a或或b组成组成()表示可选项表示可选项X=(a)表示表示a可以在可以在X中出现,也可以不出现中出现,也可以不出现表示重复表示重复大括号中的内容重复大括号中的内容重复0到多次到多次mn表示规定次数的重复表示规定次数的重复 重复的次数最少重复的次数最少m次,最多次,最多n次次“”表示基本数据元素表示基本数据元素“”中的内容是基本数据元素,不可再分中的内容是基本数据元素,不可再分.连接符连接符Month=1.12表示表示month可取可取112中的任意值中的任意值*表示注释表示注释两个星号之间的内容为注释信息两个星号之间的内容为注释信

410、息数据字典中每一数据条目包含的内容数据字典中每一数据条目包含的内容1数据流图中标识数据流、数据源或外部数据流图中标识数据流、数据源或外部 实体的名称与别名;实体的名称与别名;2数据类型;数据类型;3所有以它作为输入流或输出流的转换的所有以它作为输入流或输出流的转换的 列表;列表;4如何使用该数据条目的简要说明;如何使用该数据条目的简要说明;5数据条目的解释性说明;数据条目的解释性说明;6其他补充说明,例如取值范围与缺省值其他补充说明,例如取值范围与缺省值 有关的设计约束等。有关的设计约束等。支持数据流分析的支持数据流分析的CASE工具具备工具具备数据字典管理功能包括:数据字典管理功能包括:1一

411、一般般性性检检查查。例例如如:自自动动进进行行重重名名检检查查,可可避免数据流图中不一致的数据定义。避免数据流图中不一致的数据定义。2可可根根据据已已有有的的数数据据流流图图生生成成相相关关转转换换的的列列表表。并并且且,随随着着数数据据流流图图的的进进化化,可可自自动动修修改改该该列列表表,以以便便数数据据字字典典和和数数据据流流图图在在任任何何时时刻刻都都保保持一致。持一致。3自自动动完完成成有有关关数数据据条条目目的的各各种种查查询询。例例如如:该该数数据据条条目目在在何何处处使使用用?修修改改某某一一部部分分数数据据流流图图将将会会影影响响哪哪些些数数据据条条目目?修修改改某某数数据据

412、条条目目又又会会造造成成哪哪些些影影响响?这这将将有有助助于于分分析析人人员员在在需需求求模型的进化过程中维持模型的一致性。模型的进化过程中维持模型的一致性。数据字典数据字典数据条目的定义必须遵循以下原则:数据条目的定义必须遵循以下原则: 精确、精确、 简洁,简洁, 能为用户方和软件开发方共能为用户方和软件开发方共同理解。同理解。 例如,可以使用形式语言中的语法定义机例如,可以使用形式语言中的语法定义机制制 描述数描述数 据条目的内容。原子据条目的内容。原子语法成语法成 分则用简单明了的自然语言分则用简单明了的自然语言予以描述。予以描述。数据字典举例数据字典举例家家庭庭保保安安系系统统中中的的

413、“电电话话号号码码”数数据据条条目目可可以以定定义义如如下:下:电话号码分机号电话号码分机号|外线号码外线号码分机号分机号1816 | 1817 | | 1858外线号码外线号码9 +(市话号码(市话号码|长话号码)长话号码)长话号码长话号码0 +(区号(区号+市话号码)市话号码)区号区号* * 任何长度为任何长度为3的数字串的数字串* *市话号码局号市话号码局号+分局号分局号局号局号395 | 396 | 397 | 303 | 304 | 305分局号分局号* * 任何长度为任何长度为4的数字串的数字串* *数据流图与数据字典数据流图与数据字典综上所述,综上所述,利用数据字典可以对数据流图

414、中的数据流、数据利用数据字典可以对数据流图中的数据流、数据源以及外部实体进行描述、组织和管理。源以及外部实体进行描述、组织和管理。对于转换,也需要一种比图形记号更为详尽的表对于转换,也需要一种比图形记号更为详尽的表示机制,这就是结构化的文字描述。分析人员可示机制,这就是结构化的文字描述。分析人员可以在数据流图的任一转换上附加一段文字,用以以在数据流图的任一转换上附加一段文字,用以说明转换的功能、性能要求及设计约束等,这种说明转换的功能、性能要求及设计约束等,这种说明应尽可能简洁、清晰、易于理解。说明应尽可能简洁、清晰、易于理解。5.2 实体实体关系图关系图在数据密集型应用问题中,对复杂数据及数

415、据在数据密集型应用问题中,对复杂数据及数据之间复杂关系的分析和建模将成为需求分析的之间复杂关系的分析和建模将成为需求分析的重要任务。重要任务。实体实体关系图关系图在数据流分析方法中适合于复在数据流分析方法中适合于复杂数据建模的工具。杂数据建模的工具。5.2.1 数据对象、属性与关系数据对象、属性与关系 数据对象:是现实世界中实体的数据表现;数据对象:是现实世界中实体的数据表现; 是省略了功能和行为的是省略了功能和行为的实体。实体。 数据源数据源 ; 数据对象包括:数据对象包括: 外部实体的数据部分外部实体的数据部分 ; 数据流数据流的内容。的内容。5.2.1 数据对象、属性与关系数据对象、属性

416、与关系数据对象由其属性刻画。通常属性包括:数据对象由其属性刻画。通常属性包括: 1命名性属性:对数据对象的实例命名,其中必命名性属性:对数据对象的实例命名,其中必 含含有有一一个个或或一一组组关键属性,以便关键属性,以便 唯唯一一地地标标识识数数据据对象的实例。对象的实例。 2描述性属性:对数据对象实例的性质进行刻画。描述性属性:对数据对象实例的性质进行刻画。 3引用性属性:将自身与其他数据对象的实例关引用性属性:将自身与其他数据对象的实例关 联起来。联起来。一般而言,现实世界中任何给定实体都具有许多属性,一般而言,现实世界中任何给定实体都具有许多属性,分析人员应当并且只能考虑与应用问题有关的

417、属性。分析人员应当并且只能考虑与应用问题有关的属性。例如,在汽车销售管理问题中,汽车的属性可能有:例如,在汽车销售管理问题中,汽车的属性可能有:制造商、型号、标识码、车体类型、颜色和买主。制造商、型号、标识码、车体类型、颜色和买主。5.2.1 数据对象、属性与关系数据对象、属性与关系应应用用问问题题中中的的任任何何数数据据对对象象都都不不是是孤孤立立的的,它它们与其他数据对象一定存在各种形式的关联。们与其他数据对象一定存在各种形式的关联。 例例如如,在在汽汽车车销销售售管管理理问问题题中中,“制制造造商商”与与“汽汽车车”之之间间存存在在“生生产产”关关系系,“购购车车者者”与与“汽车汽车”之

418、间存在之间存在“购买购买”关系。关系。当当然然,关关系系的的命命名名及及内内涵涵因因具具体体问问题题而而异异。分分析人员必须善于剔除与应用问题无关的关系。析人员必须善于剔除与应用问题无关的关系。基于数据对象、属性与关系,分析人员可以为基于数据对象、属性与关系,分析人员可以为应用问题建立数据模型。应用问题建立数据模型。5.2.1 数据对象、属性与关系数据对象、属性与关系建立数据模型的规范化规则:确保一致性并消除冗余建立数据模型的规范化规则:确保一致性并消除冗余 1数据对象的任何实例对每个属性必须有且仅有数据对象的任何实例对每个属性必须有且仅有 一个属性值。一个属性值。 2属性是原子数据项,不能包

419、含内部数据结构。属性是原子数据项,不能包含内部数据结构。 3如果数据对象的关键属性多于一个,那么其他如果数据对象的关键属性多于一个,那么其他 的的非非关关键键属属性性必必须须表表示示整整个个数数据据对对象象而而不不是部是部 分关键属性的特征。分关键属性的特征。 4所有的非关键属性必须表示整个对象而不是部所有的非关键属性必须表示整个对象而不是部 分属性的特征。分属性的特征。 例例如如,在在“汽汽车车”数数据据对对象象中中增增加加“经经销销商商”属属性性并并将将其其与与标标识识码码一一起起作作为为关关键键属属性性。如如再再添添加加“经经销销商商地地址址”属属性性就就违违背背了了规规则则3。因因其其

420、仅仅仅仅是是“经经销销商商”的的特特征征,它它与与汽汽车车的的“标识码标识码”无关。无关。 例例如如,在在“汽汽车车”数数据据对对象象中中,增增加加“油油漆漆名名称称”属属性性,就就违违背背了了规规则则4,因因为为它它仅仅仅仅与与“颜颜色色”有有关关,而而不不是是整整个个“汽车汽车”的特征。的特征。5.2.2 实体实体关系图关系图实实体体关关系系(EntityRelation)图图简简称称ER图图,是是表示数据对象及其之间关系的图形语言机制。表示数据对象及其之间关系的图形语言机制。数数据据对对象象(实实体体)用用长长方方形形、关关系系用用菱菱形形、属属性性用用椭椭圆圆表表示示。数数据据对对象象

421、之之间间数数量量上上的的对对应应关关系的表示如下图所示:系的表示如下图所示: 0 : 1 1 : 1 0 : 多多 1 : 多多为了便于区分,在为了便于区分,在ER模型中的实体、关系和属模型中的实体、关系和属 性都应在对应的框中写上各自的名字。性都应在对应的框中写上各自的名字。5.2.2 实体实体关系图关系图图图522 实体实体关系图实例关系图实例制造商制造商生产生产经销商经销商汽车汽车经销经销存储存储标识码标识码颜色颜色型号型号制造商制造商车体类型车体类型买主买主5.3 基于数据流的分析方法基于数据流的分析方法 5.3.1 创建数据流模型创建数据流模型数据流图是目标软件系统中各个处理子功能以

422、及它们数据流图是目标软件系统中各个处理子功能以及它们之间的数据流动的图形表示。数据流图的精化过程实之间的数据流动的图形表示。数据流图的精化过程实际上是处理子功能和数据流的细化过程。随着这一过际上是处理子功能和数据流的细化过程。随着这一过程的进行,用户需求逐步精确化、一致化和完备化。程的进行,用户需求逐步精确化、一致化和完备化。创建用户需求的数据流模型应遵循以下创建用户需求的数据流模型应遵循以下5条规则条规则:1)首首先先建建立立顶顶级级数数据据流流图图,其其中中只只含含有有一一个个代代表表目目标标软件系统整体处理功能的转换。软件系统整体处理功能的转换。 根根据据软软件件系系统统与与外外部部环环

423、境境的的关关系系确确定定顶顶级级数数据据流流图图中的外部实体以及它们与软件系统之间的数据流。中的外部实体以及它们与软件系统之间的数据流。例如例如图图512 “家庭保安系统家庭保安系统”顶级数据流图顶级数据流图警报类别警报类别显示信息显示信息电话拨号音频电话拨号音频传感数据传感数据用户命令用户命令家庭保家庭保安系统安系统控制面板控制面板传感器传感器显示器显示器电话机电话机警报器警报器创建数据流模型的创建数据流模型的5条规则条规则2)对对用用户户需需求求的的文文字字描描述述进进行行语语法法分分析析,其其中中的的名名词词和和名名词词短短语语构构成成潜潜在在的的外外部部实实体体、数数据据源源或或数数据

424、据流流,动动词词构构成成潜潜在在的处理功能。的处理功能。 结结合合分分析析人人员员对对问问题题域域和和用用户户需需求求的的理理解解,确确定定软软件件系系统统的的主主要要功功能能以以及及它它们们之之间间的的数数据据流流,产产生生“家家庭庭保保安安系统系统”1级数据流图如图级数据流图如图531所示。所示。图图531 “家庭保安系统家庭保安系统”1级数据流图级数据流图警报类别警报类别电话拨电话拨号音频号音频传感信息传感信息配置数据配置数据传感数据传感数据配置数据配置数据原口令原口令口令有效口令有效/口令无效口令无效口令口令配置数据配置数据配置命令配置命令显示信息显示信息启动启动/停止时停止时的显示信

425、息的显示信息口令有效口令有效启动启动/停止停止命令命令用户命令用户命令配置信息配置信息控制面板控制面板用用户户命命令处理令处理系统系统配置配置口令口令核对核对信息信息显示显示启动启动/停止停止处理处理显示面板显示面板传感器传感器监测监测传感器传感器警报器警报器电话机电话机创建数据流模型的创建数据流模型的5条规则条规则3)采采用用通通常常的的功功能能分分解解方方法法,按按照照“强强内内聚聚、松松耦耦合合”的的原原则则逐逐个个对对处处理理功功能能进进行行精精化化;与与此此同同时时逐逐步步完完成成对对数数据据流流的的精精化化,并并针针对对被被精精化的处理功能生成下一级数据流图。化的处理功能生成下一级

426、数据流图。 “强强内内聚聚、松松耦耦合合”的的原原则则对对于于目目标标软软件件系系统统的的可可修修改改性性、可可扩扩充充性性大大有有益益处处,因因为为开开发发人人员员可可以以缩缩小小软软件件修修改改或或扩扩充充的的影影响响传传播播范范围。围。 对对数数据据流流的的精精化化包包含含两两个个方方面面的的意意义义。首首先先,伴伴随随着着功功能能分分解解的的进进行行,数数据据流流的的内内容容及及各各项项特特征征将将逐逐步步彰彰显显,所所以以要要将将其其作作为为数数据据字字典典的的一一个个条条目目,并并不不断断精精化化、调调整整内内容容。其其次次,在在父父数数据据流流图图中中的的复复合合数数据据项项可可

427、被被分分解解为为子子数数据项,这种数据流分解不能违背平衡原则。据项,这种数据流分解不能违背平衡原则。图图532 “家庭保安系统家庭保安系统”2级数据流图:级数据流图: 对对“传感器监测传感器监测”的分解的分解传感器传感器ID, ,类别类别传感数据传感数据(内部表示)(内部表示)传感传感数据数据报警信息报警信息电话拨电话拨号音频号音频配置数据配置数据报警类别报警类别电话号码电话号码传感信息传感信息配置信息配置信息读取传读取传感数据感数据生成报生成报警信号警信号异常数异常数据判别据判别电话电话拨号拨号创建数据流模型的创建数据流模型的5条规则条规则4)精化过程中必须维持各级数据流图之间的)精化过程中

428、必须维持各级数据流图之间的数据流平衡。数据流平衡。 5)精化过程应适可而止,避免涉及软件设计)精化过程应适可而止,避免涉及软件设计细节。一般说来,如果某子功能可以用一细节。一般说来,如果某子功能可以用一段简洁、精确的文字描述清楚,就无需进段简洁、精确的文字描述清楚,就无需进一步分解。一步分解。5.3.2 过程规格说明过程规格说明对对于于数数据据流流图图中中不不再再分分解解的的处处理理功功能能,分分析析人人员员要要借借助助结结构构化化自自然然语语言言对对其其功功能能进进行精确、简洁的描述。行精确、简洁的描述。图图531中中“口口令令核核对对”子子功功能能分分解解出出来来的的“设置口令设置口令”子

429、功能可描述如下页:子功能可描述如下页:过程规格说明举例过程规格说明举例“设置口令设置口令”子功能子功能1参数:口令;类别:字符串参数:口令;类别:字符串2处理步骤:处理步骤: 1)检检查查系系统统是是否否已已有有口口令令。若若有有,则则验验证证用用户户输输入入口口令令的的有有效效性性。如如果果有有效效,则则显显示示提提示示信信息息要求输入新口令;否则,显示失败信息并退出。要求输入新口令;否则,显示失败信息并退出。 2)检检查查口口令令长长度度是是否否合合法法。如如果果非非法法,则则显显示提示信息要求重新输入。示提示信息要求重新输入。 3)要要求求用用户户再再次次键键入入合合法法口口令令,以以便

430、便用用户户确确认和记忆。如果两次键入的口令不符,则返回。认和记忆。如果两次键入的口令不符,则返回。 4)将将确确认认后后的的口口令令按按某某种种加加密密方方法法转转换换为为另另一一字字符符串串存存放放于于系系统统配配置置文文件件中中。显显示示成成功功信信息息并并退出。退出。3约约束束条条件件:在在上上述述1)、2)、3)步步骤骤中中,用用户户重重试的机会不超过试的机会不超过3次。次。5.4基于数据流图的需求分析基于数据流图的需求分析CASE工具工具使使用用前前述述方方法法进进行行需需求求分分析析时时,需需要要计计算算机机在在数数据据流流图图的的绘绘制制、数数据据字字典典的的存存储储、检检索索及

431、及一一致致性性检检查查等等方方面面提提供帮助。供帮助。本本节节给给出出一一个个基基于于数数据据流流图图的的需需求求分分析析CASE工工具具的的蓝蓝本本DFA_Tool。下下面面就就来来介介绍绍使使用用DFA_Tool进进行行需需求求分分析析的的方方法。法。5.4.1DFA_Tool的核心思想的核心思想DFA_Tool的的核核心心思思想想可可归归纳纳为为:多多视视点点需需求求分分析、可视形式化和可执行的需求规格说明语言。析、可视形式化和可执行的需求规格说明语言。1多视点需求分析多视点需求分析 DFA_Tool从从相相互互关关联联的的结结构构、功功能能和和行行为为三个方面分别为目标软件系统建立模型

432、。三个方面分别为目标软件系统建立模型。1)在在结结构构视视点点,分分析析人人员员可可根根据据系系统统的的物物理理结结构构或或软软件件结结构构(例例如如,物物理理构构件件、软软件件模模块块、任任务务等等)进进行行层层次次分分解解,并并标标识识系系统统各各部部分分之之间的数据流,进而建立系统的结构图。间的数据流,进而建立系统的结构图。5.4.1DFA_Tool的核心思想的核心思想2)在功能视点,分析人员利用功能分解方法刻画系)在功能视点,分析人员利用功能分解方法刻画系统的活动(类似于数据流图中的转换)以及活动统的活动(类似于数据流图中的转换)以及活动之间可能出现的数据流,以逐层精化的方式建立之间可

433、能出现的数据流,以逐层精化的方式建立系统的活动图。与数据流图一样,系统的活动图。与数据流图一样,DFA_Tool的活的活动图不包括任何动态性质。它既不关心活动是如动图不包括任何动态性质。它既不关心活动是如何启动和终止的,也不关心活动能否与其他活动何启动和终止的,也不关心活动能否与其他活动并行执行。至于数据流,活动图只说明它们可以并行执行。至于数据流,活动图只说明它们可以在某些活动之间流动,并不指明何时流动在某些活动之间流动,并不指明何时流动5.4.1DFA_Tool的核心思想的核心思想3)应应用用系系统统在在时时间间坐坐标标系系中中的的所所有有控控制制行行为为均均由由行行为为视视点点描描述述。

434、对对于于层层次次结结构构中中的的每每一一级级活活动动图图,均均有有一一个个相相应应的的行行为为图图,它它们们刻刻画画系系统统的的动动态态行行为,包括:为,包括: 由由于于各各时时间间点点上上事事件件的的刺刺激激,某某些些活活动动被被启启动动或或终止,并引发新的事件;终止,并引发新的事件;对活动的活跃情况及数据的流动情况进行连续监对活动的活跃情况及数据的流动情况进行连续监测,据此决定系统的下一步行为。测,据此决定系统的下一步行为。 5.4.1DFA_Tool的核心思想的核心思想系统的活动图(功能视点)和行为图(行为视点)是紧系统的活动图(功能视点)和行为图(行为视点)是紧密耦合的,它们共同构成系

435、统的概念模型。结构图与活密耦合的,它们共同构成系统的概念模型。结构图与活动图之间的关系是简单而直接的:结构图中的某些构件动图之间的关系是简单而直接的:结构图中的某些构件负责实现活动图中的某些功能。负责实现活动图中的某些功能。功能视点功能视点数据流与功数据流与功能分解方法能分解方法行为视点行为视点事件驱动与事件驱动与时序关系时序关系概念模型概念模型结构模型结构模型物理构件物理构件及其信息流及其信息流图图541 DFA_Tool 的模型结构的模型结构 5.4.1DFA_Tool的核心思想的核心思想2可视形式化可视形式化 与文字相比,图形更为直观、简洁。因此,与文字相比,图形更为直观、简洁。因此,需

436、求分析活动往往离不开图形机制的支持,例如需求分析活动往往离不开图形机制的支持,例如前述的数据流图。前述的数据流图。DFA_Tool的结构图、活动图及的结构图、活动图及状态图均基于一组共同的简单图形记号,并且都状态图均基于一组共同的简单图形记号,并且都具有形式化语义。因此,具有形式化语义。因此,DFA_Tool兼备了图形的兼备了图形的简单直观和形式化机制的精确严谨。简单直观和形式化机制的精确严谨。5.4.1DFA_Tool的核心思想的核心思想3可执行的需求规格说明语言可执行的需求规格说明语言 为为了了需需求求规规格格说说明明进进行行详详细细的的测测试试,用用于于表表述述需需求求规规格格说说明明的

437、的语语言言机机制制应应该该具具有有可可执执行行语语义义,以以便便系系统统能能够够在在需需求求分分析析阶阶段段实实际际展展示示目目标标软软件件系系统统的的动动态态行行为为,为为分分析析人人员员提提供供动动态态分分析析、调调试试和和测测试试等等手手段段。并并让让用用户户尽尽早早进进行行需需求求确确认认。DFA_Tool为为图图形形语语言言机机制制定定义义了了操操作作语语义义。它它可可以以演演示示系系统统的的动动态态行行为为。DFA_Tool提提供供一一种种元元级级模模拟拟控控制制语语言言SCL(Simulation Control Language)。借借助助SCL,分分析析人人员员可可以以采采用

438、用各各种种方方式式模模拟拟外外部部环环境境,捕捕获获目目标标软件系统的状态或事件,并进行元级控制。软件系统的状态或事件,并进行元级控制。5.4.2 基于基于CASE工具的需求分析工具的需求分析基于基于DFA_Tool的需求分析过程大致如下:的需求分析过程大致如下:1)从从多多个个视视点点分分别别建建立立目目标标软软件件系系统统的的结结构构模模型型、功功能模型和行为模型。能模型和行为模型。2)在在上上述述建建模模过过程程中中可可以以采采取取功功能能分分解解、逐逐步步求求精精的的方方法法首首先先对对部部分分子子系系统统展展开开分分析析活活动动。一一般般而而言言,首首先先应应建建立立子子系系统统的的

439、活活动动图图(功功能能模模型型),然然后后再再给给出出相应的状态图(行为模型)。相应的状态图(行为模型)。3)利利用用DFA_Tool表表格格说说明明机机制制对对各各种种图图形形表表示示中中的的所所有有图图元元的的内内容容进进行行描描述述,这这些些图图元元包包括括数数据据流流、事事件件、状态和原子活动等。状态和原子活动等。4)利用)利用DFA_Tool的动态分析能力对目标软件系统或其的动态分析能力对目标软件系统或其子部分的模型进行模拟执行,以便发现不一致性、不子部分的模型进行模拟执行,以便发现不一致性、不完全性,并进行相应的修改完善。完全性,并进行相应的修改完善。5.4.2 基于基于CASE工

440、具的需求分析工具的需求分析DFA_Tool可以为分析人员自动完成以下繁琐任务:可以为分析人员自动完成以下繁琐任务: 1模型的图示、存储与检索;模型的图示、存储与检索; 2模型之间、数据条目之间的一致性检查;模型之间、数据条目之间的一致性检查; 3行为模型中状态的可达性分析、死锁分析;行为模型中状态的可达性分析、死锁分析; 4模型的动态模拟执行;模型的动态模拟执行; 5模型修改的影响传播范围的确定等。模型修改的影响传播范围的确定等。课程名称:软件工程课程名称:软件工程 第第11讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第6章章 面向数据的分析方法。面向数据的分析方法。教

441、学目的:理解教学目的:理解Warnier图及图及DSSD、Jackson系统开系统开 发方法。发方法。教学重点:教学重点: Warnier图及图及DSSD、Jackson系统开发方系统开发方 法。法。教学难点:教学难点: Jackson系统开发方法。系统开发方法。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第6章章 面向数据的分析方法与形式化方法面向数据的分析方法与形式化方法除了面向数据流的分析方法,仍有其他一些方法可除了面向数据流的分析方法,仍有其他一些方法可供分析人员选择,这些方法包括面向数据结构的系供分析人员选择,这些方法包括面向数据结构的系统开发方法(统开发方

442、法(DSSD),),Jackson系统开发方法系统开发方法(JSD)以及形式化软件规格说明技术。前两种统)以及形式化软件规格说明技术。前两种统称为面向数据的需求分析方法。它们的共同特点是:称为面向数据的需求分析方法。它们的共同特点是: 1以以信信息息对对象象及及其其操操作作为为核核心心进进行行需需求求分分析析,这这 一点与面向对象分析有相似之处。一点与面向对象分析有相似之处。 2认认为为复复合合信信息息对对象象具具有有层层次次结结构构,并并且且可可按按顺顺 序序、选选择择、重重复复三三种种结结构构分分解解为为成成员员信信息对象。息对象。 3提供将层次信息结构映射为程序结构的机制,提供将层次信息

443、结构映射为程序结构的机制, 从而为软件设计奠定较好的基础。从而为软件设计奠定较好的基础。6.1 面向数据结构的系统开发方法面向数据结构的系统开发方法DSSD也叫也叫WarnierOrr方法。方法。1974年,法国人年,法国人J.D.Warnier提出了一种提出了一种LCP(Logical Construction of Programs,逻辑构造程序)。他利用,逻辑构造程序)。他利用顺序、选择、重复三种结构表示信息的层次分解,顺序、选择、重复三种结构表示信息的层次分解,并指出可以从信息层次结构推导出程序结构。并指出可以从信息层次结构推导出程序结构。1981年年Ken Orr对对Warnier的

444、工作进行了扩充,使其不的工作进行了扩充,使其不仅包含了仅包含了Warnier的信息层次结构,还引进了数据流的信息层次结构,还引进了数据流和处理功能,从而发展成为一种需求分析方法。和处理功能,从而发展成为一种需求分析方法。 本节首先介绍本节首先介绍Warnier图,然后以此为基础阐述图,然后以此为基础阐述DSSD方法,其主要内容包括:如何创建实体图、信方法,其主要内容包括:如何创建实体图、信息过程图及息过程图及Warnier Orr原型图。原型图。Warnier图图Warnier图又称为图又称为WarnierOrr图,可以表示数据结图,可以表示数据结构和程序结构。考虑一个典型的报纸自动组版系统。

445、构和程序结构。考虑一个典型的报纸自动组版系统。报纸作为其中重要的信息对象,具有以下内容:报纸作为其中重要的信息对象,具有以下内容:1首版首版 1)标题新闻)标题新闻 2)国内新闻)国内新闻 3)本地新闻)本地新闻2商业金融版商业金融版 1)股市行情)股市行情 2)商业新闻)商业新闻 3)广告)广告3文化体育版文化体育版 1)文化、体育新闻)文化、体育新闻 2)散文)散文 3)新书评论)新书评论该信息结构用该信息结构用Warnier图如图图如图6 1 1所示。所示。Warnier图图图图6 1 1 Warnier 图示例图示例标题新闻标题新闻国内新闻国内新闻本地新闻本地新闻股市行情股市行情(0,

446、1)商业新闻商业新闻广告广告(1,5)文化、体育新闻文化、体育新闻散文散文 新书评论新书评论文化体育版文化体育版首首 版版商业金融版商业金融版报报 纸纸Warnier图图花括号内的信息条目构成顺序关系;花括号内的信息条目构成顺序关系;花括号从左至右排列表示树型层次结构;花括号从左至右排列表示树型层次结构;符号符号“”“”表示不可兼具的选择关系;表示不可兼具的选择关系;“”表示表示“非非”。圆括号内的数字表示重复次数:圆括号内的数字表示重复次数: (1,n)表示重复结构,)表示重复结构, (1)或不标次数表示顺序结构,)或不标次数表示顺序结构, (0,1)表示选择结构。)表示选择结构。 6.1.

447、2DSSD方法方法基于基于DSSD需求分析方法的主要步骤是:需求分析方法的主要步骤是: 1)标识与应用问题有关的实体。)标识与应用问题有关的实体。 2)创建一种类似于数据流图的信息)创建一种类似于数据流图的信息 过程图。过程图。 3)创建)创建Warnier Orr原型图。原型图。在详细介绍在详细介绍DSSD的具体步骤之前,首先用数据流图的具体步骤之前,首先用数据流图描述一个基于计算机的软件专卖店管理系统,见图描述一个基于计算机的软件专卖店管理系统,见图6 1 2。(该数据流图并非。(该数据流图并非DSSD的组成部分,仅用的组成部分,仅用于说明后面将要用到的应用问题实例。)于说明后面将要用到的

448、应用问题实例。)图图6 1 2 软件专卖店管理系统的数据流图软件专卖店管理系统的数据流图结算系统结算系统管理系统管理系统客户客户订订单单处处理理员员接接收收并并登登录订单录订单邮邮寄寄员员提提取取、包包装装软件产品软件产品订单订单订单编号订单编号订单文件订单文件订单编号订单编号客户姓名、地址客户姓名、地址预定日期预定日期支票编号支票编号软件名称、编号软件名称、编号作者作者数量数量单价单价总价总价软件编号软件编号数量数量预定日期预定日期客户姓名、地址客户姓名、地址邮局邮局邮寄品邮寄品订单编号订单编号1标识实体图标识实体图在在DSSD中中,与与应应用用问问题题有有关关的的实实体体及及它它们们之之间

449、间的的信信息流用实体图表示。息流用实体图表示。 具具体体地地,分分析析人人员员可可以以通通过过对对下下述述问问题题的的回回答答来生成实体图:来生成实体图: 1)软件系统必须处理哪些信息项?)软件系统必须处理哪些信息项? 2)信息项的生产者和消费者分别是哪些实体?)信息项的生产者和消费者分别是哪些实体? 在上述应用问题中,有关的实体是:客在上述应用问题中,有关的实体是:客户、订单处理员、邮寄员、银行、结算员、管理员户、订单处理员、邮寄员、银行、结算员、管理员和邮局,如图和邮局,如图6 1 3(a)所示。)所示。 订单处理员的实体图如图订单处理员的实体图如图6 1 3(b)所示。)所示。注:实体图

450、中的结点表示实体、有向边表示实体之间的信息流。注:实体图中的结点表示实体、有向边表示实体之间的信息流。 (a)信息的生产者和消费者)信息的生产者和消费者 (b)实体图示例)实体图示例图图6 1 3软件名称、软件名称、编号编号地地 址址订单编号订单编号支票编号支票编号客户姓名客户姓名客户客户邮寄员邮寄员订单订单处理员处理员银行银行结算员结算员管理员管理员邮局邮局客户客户邮寄员邮寄员结算员结算员订订单单处处理理员员订单订单编号编号订单编号订单编号图图614组合实体图示例组合实体图示例当所有实体的实体图都构造完成后,将它们综合起当所有实体的实体图都构造完成后,将它们综合起来便形成整个目标软件系统的实

451、体图。来便形成整个目标软件系统的实体图。客户客户邮寄员邮寄员软件产品库软件产品库结算员结算员管理员管理员银行银行订单信息订单信息= 客户姓名客户姓名+ 地址地址+ 软件名称与编码软件名称与编码+ 支票编号支票编号邮寄品邮寄品支付支付催款催款软件软件 产品产品月报表月报表收据收据存款存款订单编号订单编号订单编号订单编号订单信息订单信息订单编号订单编号订单订单处理员处理员2创建信息创建信息过程图过程图DSSD中中的的信信息息 过过程程图图与与数数据据流流图图的的作作用用类类似似,都都是是用用来来表表示示信信息息流流及及其其处处理理功功能能的的。但但是是,信信息息 过过程程图图从从每每个个实实体体的

452、的输输出出信信息息流流开开始始,逆逆向向寻寻找找用用于于生生成成该该输输出出信信息息的的输入信息流及相应的处理功能。输入信息流及相应的处理功能。2创建信息创建信息过程图过程图图图6 1 5 信息信息 过程图示例过程图示例邮邮寄寄品品是是由由订订单单编编号号和和软软件件产产品品经经过过邮邮寄寄品品包包装装过过程程生生成成的的,订订单单编编号号又又是是由由客客户户订订购购信信息息和订单编号过程生成的。和订单编号过程生成的。邮寄品邮寄品订单编号订单编号软件产品软件产品+邮寄品包装邮寄品包装订购信息订购信息+订单编号过程订单编号过程3创建创建WarnierOrr原型图原型图DSSD方方法法要要求求分分

453、析析人人员员在在最最后后以以表表格格形形式式给给出出主主要要的的输输出出信信息息的的组组成成元元素素(见见图图6 1 6(a),然然后后将将其其精精确地表示为确地表示为Warnier Orr图(见图图(见图6 1 6(b) 姓名姓名 客户信息客户信息 地址地址 电话电话 软件编号软件编号(1n)邮寄品邮寄品 单价单价(1n) 总价总价 姓名姓名 客户信息客户信息 地址地址 电话电话邮寄品邮寄品客户姓名客户姓名地地址址电电话话总总价价发件人姓名发件人姓名地址地址电话电话定单编号定单编号软件编号软件编号单单价价数数量量总总价价(a)输出信息的表格表示)输出信息的表格表示 (b)Warnier Or

454、r图图 图图6 1 6 软件产品软件产品 信息信息6.2Jackson系统开发方法系统开发方法1975年,英国人年,英国人M.A.Jackson提出了软件工程领域中提出了软件工程领域中著名的著名的Jackson方法,当时它只用于软件设计。方法,当时它只用于软件设计。1983年,年,Jackson又对它进行了多方面的扩充和完善,最又对它进行了多方面的扩充和完善,最终发展成为一种需求分析方法。终发展成为一种需求分析方法。其核心思想是:根据作用于数据的行为序列的结构其核心思想是:根据作用于数据的行为序列的结构(顺序、选择、重复),建立目标软件系统的模型,(顺序、选择、重复),建立目标软件系统的模型,

455、然后在软件设计阶段将模型转换为相应的程序结构。然后在软件设计阶段将模型转换为相应的程序结构。Jackson方法在需求分析阶段的主要步骤是:方法在需求分析阶段的主要步骤是:(1)标识实体与行为。)标识实体与行为。(2)生成实体结构图。)生成实体结构图。(3)创建软件系统模型。)创建软件系统模型。6.2.1 标识实体与行为标识实体与行为类似于面向对象分析中对象及其行为的识别,类似于面向对象分析中对象及其行为的识别,Jackson方法针对初步需求分析形成的用户需方法针对初步需求分析形成的用户需求描述进行语法分析:求描述进行语法分析: 名词及名词短语名词及名词短语潜在的实体,潜在的实体, 相关的动词相

456、关的动词构成实体的潜在行为。构成实体的潜在行为。分析人员根据应用问题的边界及自己的理解,分析人员根据应用问题的边界及自己的理解,决定对潜在实体和行为的取舍。决定对潜在实体和行为的取舍。 6.2.1标识实体与行为标识实体与行为【例例6.1】北华大学决定将分处两地的校园用直达北华大学决定将分处两地的校园用直达交通车连接起来。在每个校园设一个站,站内配交通车连接起来。在每个校园设一个站,站内配置一个按钮。学生通过按钮请求交通车搭载。交置一个按钮。学生通过按钮请求交通车搭载。交通车应尽快满足学生的请求。空闲时,交通车停通车应尽快满足学生的请求。空闲时,交通车停在任意站等候。在任意站等候。 分析人员可从

457、分析人员可从“大学大学”、“校园校园”、“交通车交通车”、“车站车站”、“学生学生”、“按钮按钮”等名等名词中选取与应用问题相关的实体:词中选取与应用问题相关的实体:“交通车交通车”、“车站车站”、“按钮按钮”。与它们有关的行为是:。与它们有关的行为是:“到站到站”、“离站离站”、“按键按键”。“等候等候”和和“运运行行”可以作为可以作为“交通车交通车”的状态。的状态。6.2.2生成实体结构图生成实体结构图在在Jackson方方法法中中,实实体体结结构构是是指指实实体体在在时时间间坐坐标标系系中中的的行行为为序序列列。这这种种序序列列以以顺顺序序、选选择择和和重重复复三三种种结结构构进进行行复

458、复合合。Jackson给给出出的的实实体体结结构构图图的的表表示示机机制制如如图图6 2 1所所示示。其其中中的的子子结结点点既既可可以以是是行行为为,也也可可以以是是子子实实体体。在在后后一一种种情情况况下下,子子实实体体应应该该继继续续分分解解,不不能能作为实体结构图的叶结点。作为实体结构图的叶结点。顺序结构顺序结构 *重复结构重复结构 选择结构选择结构图图6 2 1 实体结构图的图形记号实体结构图的图形记号 图图622实体结构图示例实体结构图示例例例6.1的实体结构图如图的实体结构图如图6 2 2所示。在图中,所示。在图中,i 只能只能取值取值1或或2。并且,在。并且,在“站(站(i)”

459、的重复序列中,的重复序列中,i首先取首先取2,然后交替变化。交通车首先停在站,然后交替变化。交通车首先停在站1,然,然后在两站之间反复往返运行,最后停靠在站后在两站之间反复往返运行,最后停靠在站1。为。为了刻画交通车在两站之间的往返穿梭,引入了虚拟了刻画交通车在两站之间的往返穿梭,引入了虚拟的概念实体的概念实体“Shuttle body”。ShuttleShuttle* bodyStation(i)Arrive(i)Leave(i)Arrive(1)ButtonPush*Leave(1)6.2.3创建软件系统模型创建软件系统模型创建目标软件系统模型的第一步,创建目标软件系统模型的第一步,Jac

460、kson方法要求方法要求分析人员首先用图分析人员首先用图6 2 3所示的图形记号建立系统规所示的图形记号建立系统规格说明图(格说明图(System Specification Diagram)。)。“数据流数据流”(Data Stream)记号)记号表示现实世界中表示现实世界中的过程或装置不断地向目标软件系统中的相应过程的过程或装置不断地向目标软件系统中的相应过程发送数据,后者以先进先出方式消费数据。两者之发送数据,后者以先进先出方式消费数据。两者之间的缓冲区容量是无限的。间的缓冲区容量是无限的。“状态向量状态向量”(State Vector)记号)记号表示在两者之表示在两者之间存在状态向量,

461、发送方设置状态向量,接收方读间存在状态向量,发送方设置状态向量,接收方读取状态向量。取状态向量。约定:约定:0 表示现实世界中的过程或装置,表示现实世界中的过程或装置, 1 表示目标软件系统中的过程表示目标软件系统中的过程图图6 2 3 系统规格说明图的图形记号系统规格说明图的图形记号过程过程1DS过程过程0过程过程1SV数据流(数据流(Data Stream)过程过程0状态向量(状态向量(State Vector)图图624系统规格说明图示例系统规格说明图示例 在前述应用问题中,站内按钮和目标软件在前述应用问题中,站内按钮和目标软件中的按钮处理过程之间以中的按钮处理过程之间以“数据流数据流”

462、方方式连接,交通车和交通车控制过程之间式连接,交通车和交通车控制过程之间则应以则应以“状态向量状态向量”方式连接。见图方式连接。见图6 2 4。Button 1DSShuttle 0Shuttle 1SV数据流联系数据流联系Button 0状态向量联系状态向量联系创创建建模模型型的的第第二二步步是是利利用用Jackson给给出出的的“结结构构正正文文”(Structure Text)将将实实体体结结构构图图和和系系统统规规格格说说明明图图综综合合起起来来,并并针针对对目目标标软软件件系系统统中中的的每每一一过过程程用用正正文文方式给出更为精确、更为详尽的描述。方式给出更为精确、更为详尽的描述。

463、BUUTTON_1 Read ButtonDown 信号信号 PUSH_BODY itr while ButtonDown /* 循环结构循环结构 * */ PUSH /* 按键处理按键处理 * */ Read ButtonDown 信号信号 PUSH_BODY endBOTTON_1 end6.2.3创建软件系统模型创建软件系统模型SHUTTLE_1 seq /* 顺序结构顺序结构 * */ Read 状态向量状态向量 WAIT_BODY1 itr while Wait(1) /* 如果状态向量如果状态向量 中等待标中等待标志置位,则循环等待志置位,则循环等待 * */ Read 状态向量状

464、态向量 WAIT_BODY1 end TRANSIT_BODY1 itr while Transit(1) /* 如果状态向如果状态向 量中运行标志量中运行标志置位,则一直运行置位,则一直运行 * */ Read 状态向量状态向量 TRANSIT_BODY1 endLeave(1) /* 控制交通车离开站控制交通车离开站1 */SHUTTLE_BODY itr /* 往返重复运行往返重复运行 * */ STATION seq Arrive(i) /* 控制交通车减速,准备停靠站控制交通车减速,准备停靠站i */ WAIT_BODY itr while Wait(i) /* 如果状态向量如果状态

465、向量 中在站中在站i的等待标志置位,的等待标志置位,则循环等待则循环等待 * */ Read 状态向量状态向量 WAIT_BODY end Leave(i) TRANSIT_BODY itr while Wait(i) Read 状态向量状态向量 TRANSIT_BODY end STATION end SHUTTLE_BODY end Arrive(1) SHUTTLE_1 end图图6 2 5 对应于结构正文的结构图对应于结构正文的结构图Shuttle 1Station(i)*Arrive(1)Leave(1)Shuttle body1TRANSit body1wait body1Tran

466、sit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit bodywait bodyWait(i)*6.3形式化方法简介形式化方法简介前面对数据流图等语言机制并未给出数学意义上严前面对数据流图等语言机制并未给出数学意义上严格的语法和语义说明。因此,这些需求模型都或多格的语法和语义说明。因此,这些需求模型都或多或少地带有不精确性、不完整性,甚至不一致性。或少地带有不精确性、不完整性,甚至不一致性。需求分析完成后,软件开发的正确实施仍有赖于设需求分析完成后,软件开发的正确实施仍有赖于设计人员对分析人员主观意图的揣摩,而不仅仅取决计人员对分析人员主观意图的

467、揣摩,而不仅仅取决于他们对需求文档的客观理解。于他们对需求文档的客观理解。许多软件开发实践都希望借助于形式化方法严格地许多软件开发实践都希望借助于形式化方法严格地定义用户需求,并通过数学推演而不是代价昂贵的定义用户需求,并通过数学推演而不是代价昂贵的失败教训来确保需求定义的一致性和完整性。本节失败教训来确保需求定义的一致性和完整性。本节简要介绍形式方法的引入、主要思想、分类、优缺简要介绍形式方法的引入、主要思想、分类、优缺点以及软件形式开发方法。点以及软件形式开发方法。6.3.1形式化方法的引入形式化方法的引入 在传统的软件开发过程中,人们普遍采用许多非形式化在传统的软件开发过程中,人们普遍采

468、用许多非形式化的图形工具和文字符号工具,例如:数据流图(的图形工具和文字符号工具,例如:数据流图(DFD)、)、模块结构图(模块结构图(SC)、)、IPO图、结构化语言、类程序设计图、结构化语言、类程序设计语言、判定表、判定树等,并按照一定的设计原则和有语言、判定表、判定树等,并按照一定的设计原则和有序步骤,或自上而下或循环往复逐步开发出目标软件,序步骤,或自上而下或循环往复逐步开发出目标软件,同时手工或辅助编写有关设计文档。同时手工或辅助编写有关设计文档。 软件工程的实践表明,用户需求规格说明的质量对于软件工程的实践表明,用户需求规格说明的质量对于后续的软件开发过程是非常重要的。系统分析人员

469、依据后续的软件开发过程是非常重要的。系统分析人员依据用户需求,为目标软件系统创建了需求规格说明用户需求,为目标软件系统创建了需求规格说明(Specification)。设计和编程人员根据这个需求规格)。设计和编程人员根据这个需求规格说明进行系统结构和模块设计及编码。软件测试及验收说明进行系统结构和模块设计及编码。软件测试及验收人员则根据这个需求规格说明验证目标系统。人员则根据这个需求规格说明验证目标系统。6.3.1形式化方法的引入形式化方法的引入若若采采用用自自然然语语言言描描述述的的规规格格说说明明具具有有模模糊糊性性和和二二义义性性,给给下下一一步步的的开开发发工工作作造造成成理理解解上上

470、的的困困难难。同同时时自自然然语语言言又又是是非非形形式式化化的的,无无法法得得到到计算机的支持,使软件生成自动化几乎不可能。计算机的支持,使软件生成自动化几乎不可能。程程序序设设计计语语言言着着重重描描述述的的是是“如如何何做做”(How to do)而而不不是是“做做什什么么”(What to do)的的问问题题。因因此此程程序序设设计计语语言言并并不不太太适适合合描描述述抽抽象象程程度较高的需求规格说明。度较高的需求规格说明。6.3.1形式化方法的引入形式化方法的引入近近年年来来,人人们们正正在在发发展展一一种种更更抽抽象象的的程程序序设设计计语语言言更更高高级级语语言言(Very Hi

471、gh Language),也也称称为为第第四四代代语语言言4GL。这这种种语语言言更更多多地地采采用用了了过过程程抽抽象象和和数数据据抽抽象象技技术术。但但这这种种语语言言的的出出发发点点仍仍在在系系统统的的设设计计方方面面,作为需求规格的描述语言仍存在不足。作为需求规格的描述语言仍存在不足。20世世纪纪80年年代代中中期期以以来来,一一种种专专用用于于需需求求规规格格说说明明的的形形式式规规格格说说明明语语言言应应运运而而生生。这这种种形形式式规规格格说说明明语语言言克克服服了了自自然然语语言言和和程程序序设设计计语语言言的的不不足足,应应用用形形式式化化、规规范范化化的的数数学学理理论论,

472、严严格格定定义义软软件件系系统统“做做什什么么”的的形形式式语语义义模模型型,并并支支持持自自动动程程序序转转换换系系统统将将需需求求规规格格说说明明的的语语义义模模型型转转换换为为可可执执行行代代码码。由由此此产产生生的的软软件件形式开发方法正日益受到各国软件界的重视。形式开发方法正日益受到各国软件界的重视。6.3.2形式方式的主要思想形式方式的主要思想形式化需求分析方法的主要思想,是利用形式形式化需求分析方法的主要思想,是利用形式化规格说明语言严格地定义用户需求,并采用化规格说明语言严格地定义用户需求,并采用数学推演的方法证明需求定义的性质,例如一数学推演的方法证明需求定义的性质,例如一致

473、性、实时系统的活性(致性、实时系统的活性(liveness)和公平性)和公平性(fairness)等。)等。从某种意义上讲,形式化方法是克服需求分析从某种意义上讲,形式化方法是克服需求分析阶段中主要困难(不精确性、不一致性和不完阶段中主要困难(不精确性、不一致性和不完全性)的有效途径。全性)的有效途径。形式化规格说明语言包括:严格的语法定义、形式化规格说明语言包括:严格的语法定义、严格的语义定义以及一系列的数学推演规则。严格的语义定义以及一系列的数学推演规则。6.3.2形式方式的主要思想形式方式的主要思想规规格格说说明明语语言言的的语语法法一一般般基基于于集集合合论论、数数理理逻逻辑或代数学。

474、辑或代数学。规规格格说说明明语语言言的的语语义义是是其其所所有有语语法法符符号号的的意意义义的的数数学学描描述述。经经典典的的语语义义定定义义方方法法包包括括指指称称语语义、代数语义和操作语义方法。义、代数语义和操作语义方法。形形式式化化规规格格说说明明语语言言的的推推演演规规则则一一般般与与其其数数学学基基础础和和语语义义定定义义方方法法密密切切相相关关。例例如如,以以集集合合论论和和谓谓词词逻逻辑辑为为基基础础的的Z语语言言就就包包含含了了原原数数学学系系统统中中有有关关的的规规则则。规规则则必必须须在在规规格格说说明明语语言言的的语语义义系系统统中中可可证证。因因此此,可可以以认认为为规

475、规则则是是派派生生的的语语义义定定义义,它它们们可可以以直直接接应应用用于于软软件件规规格格说明的性质证明并简化推演过程。说明的性质证明并简化推演过程。6.3.3形式化方法的分类形式化方法的分类形形式式化化方方法法是是应应用用严严格格的的形形式式符符号号和和数数学学方方法法定定义义或或描描述述目目标标软软件件系系统统需需求求规规格格说说明明的的一一种种方方法法。根根据据对对需需求求规规格格说说明明的的定定义义方方式式,形形式式方方法法可可分分为为以以下下两两大大类:类:1面面向向模模型型的的形形式式方方法法。面面向向模模型型的的形形式式方方法法又又称称为为基基于于状状态态描描述述的的形形式式方

476、方法法。其其基基本本思思想想是是利利用用域域、元元组组、集集合合、序序列列、映映射射、包包等等这这些些已已知知特特性性的的数数学学抽抽象象概概念念来来为为目目标标软软件件系系统统的的状状态态特特征征和和行行为为特特征征构构造造形形式式语语义义模模型型。语语义义模模型型就就作作为为目目标标软软件件系系统统需需求求规规格格的的形形式式说说明明。面面向向模模型型的的形形式式方方法法的的主主要要代代表表有有:VDM方法(维也纳开发方法)、软件工程方法(维也纳开发方法)、软件工程Z方法等。方法等。2代数构造形式方法。代数形式方法为目标软件系统代数构造形式方法。代数形式方法为目标软件系统的需求规格说明提供

477、一些特殊的构造机制,并以代数的需求规格说明提供一些特殊的构造机制,并以代数构造方式描述目标系统的结构、功能。构造方式描述目标系统的结构、功能。6.3.4软件形式开发方法软件形式开发方法将形式化方法应用于软件开发过程称为软件形式开发将形式化方法应用于软件开发过程称为软件形式开发方法。方法。其主要内容是:其主要内容是: 首先,在需求分析阶段的信息收集和信息分析两项首先,在需求分析阶段的信息收集和信息分析两项工作中,采用形式化的规格说明语言(如:工作中,采用形式化的规格说明语言(如:Z、VDM、LoTos、OBJ、Larch等)构造目标软件系统严格的形式等)构造目标软件系统严格的形式需求规格说明(形

478、式语义)。需求规格说明(形式语义)。 然后,以该形式需求规格说明为起点,借助相应的然后,以该形式需求规格说明为起点,借助相应的形式开发支持工具辅助实现目标软件系统。形式开发支持工具辅助实现目标软件系统。目前,除了在软件设计、编码阶段采用形式方法外,目前,除了在软件设计、编码阶段采用形式方法外,还在开展软件系统形式化测试的研究工作。还在开展软件系统形式化测试的研究工作。6.3.5形式方法的优缺点形式方法的优缺点优点:优点:1对系统的需求规格说明描述精确、定义完整。对系统的需求规格说明描述精确、定义完整。2形式化的需求规格说明有利于系统的设计与实现。形式化的需求规格说明有利于系统的设计与实现。3软

479、件实现的正确性可以形式验证,确保软件质量。软件实现的正确性可以形式验证,确保软件质量。缺点:缺点:1形式化的需求规格说明可读性差。形式化的需求规格说明可读性差。2对软件设计人员要求较高,需进行更专业化的培训。对软件设计人员要求较高,需进行更专业化的培训。3只只适适用用于于能能静静态态定定义义的的软软件件系系统统,它它无无法法定定义义动动态态系系统行为。统行为。4形式化的规格说明(形式语义模型)的正确性验证形式化的规格说明(形式语义模型)的正确性验证 费时费力,目前还不能简化或自动化。费时费力,目前还不能简化或自动化。5形式方法目前还缺乏软件工程环境的支持。形式方法目前还缺乏软件工程环境的支持。

480、形式化方法近年来的发展形式化方法近年来的发展近年来形式化方法在以下两方面发展改善了其实用性:近年来形式化方法在以下两方面发展改善了其实用性: (1)形形式式化化方方法法与与图图形形语语言言机机制制相相结结合合。为为图图形形语语言言机机制制赋赋予予形形式式化化的的语语法法和和语语义义,从从而而兼兼具具了了图图形形表表示示的的直直观观、简简洁洁,以以及及形形式式化化方方法法的的严严谨谨、精精确确等等优优点。点。 (2)用用CASE工工具具支支持持形形式式化化软软件件开开发发。CASE工工具具不不仅仅可可以以简简化化需需求求分分析析和和需需求求描描述述工工作作,而而且且还还可可以以利利用用自自动动定

481、定理理证证明明技技术术帮帮助助分分析析人人员员验验证证软软件件规规格格说说明明的数学性质。的数学性质。实践证明,这两条技术途径对于克服形式化方法的主实践证明,这两条技术途径对于克服形式化方法的主要缺陷是行之有效的。因此,它们仍将在形式化方法要缺陷是行之有效的。因此,它们仍将在形式化方法的未来发展中发挥重要作用。的未来发展中发挥重要作用。课程名称:软件工程课程名称:软件工程 第第12讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第7章章 面向对象的需求分析。面向对象的需求分析。教学目的:理解面向对象的概念、教学目的:理解面向对象的概念、Coad/Yourdon方法、方法、熟

482、悉需求分析熟悉需求分析CASE工具和工具和Rational过程。过程。教学重点:教学重点: Coad/Yourdon方法、方法、CASE工具。工具。教学难点:教学难点: CASE工具。工具。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第7章章面向对象的需求分析面向对象的需求分析面向对象(面向对象(Object Oriented)方法是将现实世)方法是将现实世界的事物以对象的方式映射到计算机世界的方界的事物以对象的方式映射到计算机世界的方法。用面向对象的方法求解现实世界问题的第法。用面向对象的方法求解现实世界问题的第一步便是面向对象分析。面向对象分析包含两一步便是面向对

483、象分析。面向对象分析包含两个可以重叠的过程:用面向对象的方法对现实个可以重叠的过程:用面向对象的方法对现实世界的问题进行分析;用面向对象的工具对分世界的问题进行分析;用面向对象的工具对分析结果进行描述。析结果进行描述。本本章章重重点点介介绍绍面面向向对对象象的的方方法法,并并用用银银行行系系统统作作为为贯贯穿穿本本章章的的例例子子。在在介介绍绍方方法法的的同同时时,还还将将简简单单介介绍绍面面向向对对象象的的CASE工工具具Rational Rose和和Rational统一过程。统一过程。7.1面向对象的概念面向对象的概念从事物的过程侧面来描述事物的方法被称之为面向过从事物的过程侧面来描述事物

484、的方法被称之为面向过程的方法。该方法在认识现实事物的整个过程中是把程的方法。该方法在认识现实事物的整个过程中是把事物内部的处理过程作为核心来描述的。事物内部的处理过程作为核心来描述的。从事物的属性侧面来描述事物的方法就是面向数据的从事物的属性侧面来描述事物的方法就是面向数据的方法,该方法在认识事物的过程中始终把事物的属性方法,该方法在认识事物的过程中始终把事物的属性作为描述的核心。作为描述的核心。从事物的组成部件及每个部件的属性、功能来认识事从事物的组成部件及每个部件的属性、功能来认识事物。比如,汽车由发动机,底盘,变速箱等组成,发物。比如,汽车由发动机,底盘,变速箱等组成,发动机有排量,有冲

485、程数等属性,同时发动机还具有启动机有排量,有冲程数等属性,同时发动机还具有启动,加大油门等操作。这就是将现实世界的事物的属动,加大油门等操作。这就是将现实世界的事物的属性和及其过程一并进行描述的方法,这种方法被称为性和及其过程一并进行描述的方法,这种方法被称为面向对象的方法。面向对象的方法。7.1面向对象的概念面向对象的概念在抽象现实世界的事物时,必须把抽象的范围限定在抽象现实世界的事物时,必须把抽象的范围限定在我们的问题域内。现实世界的事物都有很多侧面,在我们的问题域内。现实世界的事物都有很多侧面,我们只应关心那些跟我们要解决的问题相关的侧面。我们只应关心那些跟我们要解决的问题相关的侧面。

486、比如,在抽象和描述比如,在抽象和描述“学生学生”对象时,针对不同对象时,针对不同的问题域,可能得到不同的抽象结果。对于学生管的问题域,可能得到不同的抽象结果。对于学生管理系统,学生的成绩、所选的课程等在问题域范围理系统,学生的成绩、所选的课程等在问题域范围内,而学生的病史,过敏史则不在问题域内;如果内,而学生的病史,过敏史则不在问题域内;如果是一个医管系统,病史,过敏史则落在问题域内。是一个医管系统,病史,过敏史则落在问题域内。7.1.1对象(对象(Object)对象是现实世界事物或个体的抽象表示,抽象的结对象是现实世界事物或个体的抽象表示,抽象的结果不仅包括事物个体的属性,还包括事物的操作。

487、果不仅包括事物个体的属性,还包括事物的操作。属性值表示了对象的内部状态。属性值表示了对象的内部状态。在分析阶段,对象的操作是对象展现给外部的服务。在分析阶段,对象的操作是对象展现给外部的服务。对象状态的改变是由对对象的操作引起的。对象状态的改变是由对对象的操作引起的。 例如,对于民航机场的指挥控制系统,例如,对于民航机场的指挥控制系统,MU9114航班就是该问题域中的对象,该对象的属航班就是该问题域中的对象,该对象的属性可以包含:航班号、起飞机场、降落机场、起飞性可以包含:航班号、起飞机场、降落机场、起飞时间、降落时间,位置等;可能的操作包括离港、时间、降落时间,位置等;可能的操作包括离港、到

488、港等。当对到港等。当对MU9114航班对象进行离港操作时,航班对象进行离港操作时,对象的状态将从停靠状态改变成飞行状态。对象的状态将从停靠状态改变成飞行状态。7.1.2类(类(Class)类是对具有共同特征的对象的进一步抽象。类通常类是对具有共同特征的对象的进一步抽象。类通常被认为是对象的模板,通过该模板可以创建特性一被认为是对象的模板,通过该模板可以创建特性一致的对象。使用类创建对象的过程实际上是类的实致的对象。使用类创建对象的过程实际上是类的实例化过程。例化过程。 7.1.3 继承(继承(Inheritance) 继承关系模拟了现实世界的一般与特殊的关继承关系模拟了现实世界的一般与特殊的关

489、系。它允许我们在已有的类的特性基础上构造新类。系。它允许我们在已有的类的特性基础上构造新类。被继承的类我们称之为基类(父类),在基类的基被继承的类我们称之为基类(父类),在基类的基础上新建立的类我们称之为派生类(子类)。派生础上新建立的类我们称之为派生类(子类)。派生类的特性比基类的特性更细致。类的特性比基类的特性更细致。 继承关系可以表述为:派生类是基类。因此继承关系可以表述为:派生类是基类。因此可以说:动物是生物。生物比动物具有更一般的特可以说:动物是生物。生物比动物具有更一般的特性。性。7.1.4聚合(聚合(Aggregation)聚合模拟了现实世界的部分与整体的关系。它允许利聚合模拟了

490、现实世界的部分与整体的关系。它允许利用现有的类组成新类。比如说汽车,它是由发动机、用现有的类组成新类。比如说汽车,它是由发动机、变速箱、底盘等组成,那么我们就可以利用发动机、变速箱、底盘等组成,那么我们就可以利用发动机、变速箱、底盘等类聚合成一个新的类:汽车类。变速箱、底盘等类聚合成一个新的类:汽车类。7.1.5 消息(消息(Message) 消息是对象之间交互的唯一途径,一个对象要想使用消息是对象之间交互的唯一途径,一个对象要想使用其他对象的服务,必须向该对象发送服务请求消息。其他对象的服务,必须向该对象发送服务请求消息。而接收服务请求的对象必须对请求做出响应。而接收服务请求的对象必须对请求

491、做出响应。 例如:当我们向银行系统的帐号对象发送取款消息例如:当我们向银行系统的帐号对象发送取款消息时,帐号对象将根据消息中携带的取款金额对客户的时,帐号对象将根据消息中携带的取款金额对客户的帐号进行取款操作:验证帐号余额,如果帐号余额足帐号进行取款操作:验证帐号余额,如果帐号余额足够,并且操作成功,对象将把执行成功的消息返回给够,并且操作成功,对象将把执行成功的消息返回给服务请求的发送对象,否则发送交易失败消息。服务请求的发送对象,否则发送交易失败消息。面向对象需求分析方法的概念面向对象需求分析方法的概念面面向向对对象象的的需需求求分分析析方方法法通通过过提提供供对对象象、对对象象间间消消息

492、息传传递递等等语语言言机机制制,让让分分析析人人员员在在解解空空间间中中直直接接模模拟拟问问题题空空间间中中的的对对象象,从从而而消消减减运运用用其其他他分分析析方方法法带带来来的的语语义义断断层层,为为需需求求建建模模活活动动提提供供直直观观、自自然然的的语语言支持和方法学指导。言支持和方法学指导。7.2面向对象的分析方法面向对象的分析方法面向对象的分析和设计面向对象的分析和设计(OOA&OOD)方法出方法出现在现在20世纪世纪70年代中期。从年代中期。从1989年到年到1994年,面向对象方法从不到年,面向对象方法从不到10种增加到种增加到50多多种。这些不同的面向对象的方法具有不同种。这

493、些不同的面向对象的方法具有不同的建模符号体系,建模语言本身又各有优的建模符号体系,建模语言本身又各有优劣,用户很难从这些方法中找到一个适合劣,用户很难从这些方法中找到一个适合自己的方法。自己的方法。7.2.1OMT方法方法对对象象建建模模技技术术(Object Modeling Technique,OMT)由由Rumbaugh等等提提出出,其其目目的的是是不不断断对对系系统统设设计计进进行细化,直到最后的模型适合于实现为止。行细化,直到最后的模型适合于实现为止。7.2.2 Booch方法方法 Booch方方法法提提出出了了描描述述对对象象系系统统的的两两个个模模型型:用用于于描描述述逻逻辑辑结

494、结构构的的逻逻辑辑模模型型(Logical Model)和和 描描 述述 系系 统统 物物 理理 结结 构构 的的 物物 理理 模模 型型 ( Physical Model),而而对对于于这这两两个个模模型型又又可可以以采采用用描描述述系系统统静静态态侧侧面面的的静静态态模模型型(Static Model)和和描描写写系系统统动动态态特特性性的的动动态态模模型型(Dynamic Model)两两种种方方式式来描述。来描述。7.2.3OOSE方法方法OOSE (Object Oriented Software Engineering)是用)是用例(例(use case)驱动的方法。在该方法中,用

495、例模型)驱动的方法。在该方法中,用例模型是分析阶段的模型。用例模型主要用来描述系统外部是分析阶段的模型。用例模型主要用来描述系统外部角色和软件系统为这些外部角色提供的服务和功能。角色和软件系统为这些外部角色提供的服务和功能。比如银行系统中的转帐功能既是客户角色的一个用例。比如银行系统中的转帐功能既是客户角色的一个用例。通过确定系统外部角色与系统内部功能的交互作用,通过确定系统外部角色与系统内部功能的交互作用,用例模型描述了系统的完整功能。用例模型描述了系统的完整功能。 OOSE的分析阶段,要构造两种模型:的分析阶段,要构造两种模型: 需求模型从用户的角度描述了系统具有的所有需求模型从用户的角度

496、描述了系统具有的所有功能。功能。 用例模型用例模型 需求模型由三部分组成需求模型由三部分组成 问题域对象模型问题域对象模型 接口描述接口描述需求模型需求模型分析模型分析模型7.2.3OOSE方法方法 分析模型是通过对接口对象、实体对象和控分析模型是通过对接口对象、实体对象和控制对象的分析和描述而建立的模型。接口制对象的分析和描述而建立的模型。接口对象、实体对象和控制对象可以完成用例对象、实体对象和控制对象可以完成用例视图所要求的全部功能。视图所要求的全部功能。 OOSE方法的最大的贡献就是引入了方法的最大的贡献就是引入了用例的概念。用例的概念。7.2.4Coad/Yourdon的的OOA/OO

497、D方法方法Coad/Yourdon面向对象的方法包含面向对象的方法包含5个步骤:个步骤: 识别对象识别对象 标识对象的属标识对象的属性性 标识对象的性标识对象的性为为 识别对象所属识别对象所属的类的类 定义主题词定义主题词 这些步骤之间并无严格的边界,比如可这些步骤之间并无严格的边界,比如可以在识别对象的同时标识对象的属性和行为等以在识别对象的同时标识对象的属性和行为等活动。活动。7.2.4Coad/Yourdon的的OOA/OOD方法方法1. 识别对象识别对象OOA最最困困难难的的部部分分就就是是如如何何将将系系统统分分解解成成相相互互作作用用的的对对象象集集合合。识识别别对对象象是是面面向

498、向对对象象分分析析的的第第一一步步也也是是很很关关键键的的一一步步,分分析析阶阶段段的的模模型型基基本上决定了系统的可重用性和可修改性指标。本上决定了系统的可重用性和可修改性指标。分分析析阶阶段段所所得得到到的的对对象象应应该该是是实实际际问问题题域域中中有有意意义义的的个个体体或或概概念念实实体体。对对象象应应该该具具有有记记忆忆其其自自身身状状态态的的能能力力。也也就就是是对对象象具具有有软软件件系系统统所所关关心心的的属属性性。而而且且对对象象不不应应该该是是孤孤立立的的。它它必必须以某种方式与系统中的其他对象进行交互。须以某种方式与系统中的其他对象进行交互。识识别别对对象象包包括括两两

499、个个基基本本步步骤骤:标标识识潜潜在在的的对对象象和筛选对象。和筛选对象。1)标识潜在的对象)标识潜在的对象识别潜在对象主要依据用户的需求描述。识别潜在对象主要依据用户的需求描述。具具体体方方法法找找出出需需求求描描述述中中的的名名词词或或名名词词短短语语并并合合并并同同义义词词。除除去去有有动动作作含含义义的的名名词词,他他们们将将被被描述为对象的操作而非对象本身。描述为对象的操作而非对象本身。可可修修改改性性和和可可重重用用性性是是面面向向对对象象系系统统的的目目标标,因因此此仅仅仅仅通通过过上上述述的的机机械械方方法法不不能能符符合合对对象象系系统统的的目目标标。其其中中正正确确的的分分

500、析析类类之之间间的的继继承承、聚聚合合关关系系以以及类之间的通讯方式是至关重要的。及类之间的通讯方式是至关重要的。1)标识潜在的对象)标识潜在的对象需求描述中的对象可能呈现以下方式:需求描述中的对象可能呈现以下方式:外外部部实实体体。通通过过与与目目标标系系统统交交换换信信息息来来实实现现交交互互。例例如物理设备,操作人员或用户,其他相关系统等。如物理设备,操作人员或用户,其他相关系统等。信息域内的概念实体。如信号、报表等。信息域内的概念实体。如信号、报表等。需需记记忆忆的的系系统统事事件件。如如交交通通监监管管系系统统中中的的一一次次汽汽车车超超速事件。速事件。角角色色。管管理理员员,工工程

501、程师师,销销售售员员等等。不不同同的的角角色色具具有有不同的职能和权限。不同的职能和权限。场场所所、位位置置。如如卫卫星星定定位位系系统统中中被被定定位位对对象象的的位位置置,包括经度、纬度和高程。包括经度、纬度和高程。组织机构。如财务部,项目部等。组织机构。如财务部,项目部等。聚聚集集对对象象。如如物物理理设设备备,它它由由多多个个成成分分对对象象聚聚集集而而成成,有时概念实体对象和外部实体对象也是聚集对象。有时概念实体对象和外部实体对象也是聚集对象。标识潜在的对象举例标识潜在的对象举例根据描述识别潜在的对象如表根据描述识别潜在的对象如表71 银行系统的需求描述:银行系统的需求描述: 一个银

502、行可以有多个帐号。一个银行可以有多个帐号。 一个银行可以有多个客户。一个银行可以有多个客户。 一个客户可以持有多个帐号。一个客户可以持有多个帐号。 一个帐号可以被多个客户持有。一个帐号可以被多个客户持有。 可可以以开开户户、注注销销帐帐户户、存存钱钱、取取钱钱、银银行内转帐、银行间转帐行内转帐、银行间转帐 表表71 银行系统潜在的对象银行系统潜在的对象潜在对象潜在对象理由理由银行(银行(Bank)帐号(帐号(Account)资金(资金(Funds)客户(客户(Client)交易交易(Transaction)概念实体概念实体概念实体概念实体概念实体概念实体外部实体外部实体事件对象事件对象2)筛选

503、对象)筛选对象对潜在的对象进行筛选的原则:对潜在的对象进行筛选的原则: 对对象象应应具具有有记记忆忆自自身身状状态态的的能能力力。并并且且对对象象的的属属性性应该是系统所关心的,或者是目标系统所必须的。应该是系统所关心的,或者是目标系统所必须的。对对象象应应具具有有有有意意义义的的操操作作,以以某某种种方方式式修修改改其其状状态态。并并且且,对对象象应应利利用用其其操操作作为为目目标标系系统统中中的的其其他他对对象象提提供外部服务。供外部服务。对对象象应应具具有有多多种种意意义义的的属属性性。仅仅有有一一种种属属性性的的对对象象最最好表示为其他对象的属性。好表示为其他对象的属性。对对象象的的属

504、属性性和和操操作作应应该该适适用用于于对对象象的的所所有有实实例例,这这是是对象所必须具备的基本条件。对象所必须具备的基本条件。对对象象应应是是软软件件需需求求模模型型的的必必要要成成分分,与与设设计计和和实实现现方方法法无无关关。需需求求分分析析阶阶段段只只关关心心对对象象的的外外部部表表现现,而而对对象象的的具具体体实实现现则则在在设设计计阶阶段段才才会会考考虑虑。所所以以在在分分析析阶阶段不应包含实现对象功能所用到的对象。段不应包含实现对象功能所用到的对象。表表7-2银行系统潜在对象的筛选结果银行系统潜在对象的筛选结果对象的识别和筛选结果没有正确与错误之分,识别对象的识别和筛选结果没有正

505、确与错误之分,识别和筛选对象的结果依赖于分析人员的素质和经验。和筛选对象的结果依赖于分析人员的素质和经验。好的分析员会得出一个易于重用和适应需求变更的好的分析员会得出一个易于重用和适应需求变更的分析结果。随着分析活动的逐步展开,需求分析员分析结果。随着分析活动的逐步展开,需求分析员可以根据需要增加和删除原有的对象。可以根据需要增加和删除原有的对象。潜在对象潜在对象理由理由银行(银行(Bank)帐号(帐号(Account)资金(资金(Funds)客户(客户(Client)交易(交易(Transaction)符合符合符合符合概念实体概念实体不符合不符合符合符合符合符合图图7-2-1Account类

506、类在在Rational Rose中类用图中类用图721符号表示。其中第一框符号表示。其中第一框为类名(帐号);第二框为类的属性,为类名(帐号);第二框为类的属性,accountNo为为帐号号码、帐号号码、bank为银行、为银行、createDate为建立日期、为建立日期、holder为持有人、为持有人、balance为余额;第三框是类的行为,为余额;第三框是类的行为,withdraw为取款操作。为取款操作。2.标识对象的属性标识对象的属性对对象象属属性性的的组组合合标标明明了了对对象象状状态态,而而对对象象状状态态的的改改变变则则依依赖赖于于对对对对象象的的操操作作。对对于于银银行行帐帐号号对

507、对象象来来说说,帐帐号号accountNo、帐帐号号创创建建时时间间createDate、帐帐号号归归属属银银行行bank、帐帐号号持持有有者者holder、帐帐号号余余额额balance表表明明了了该该帐帐号号当当前前状状态态。从从银银行行系系统统的的业业务务描描述述中中得得知知,一一个个客客户户可可以以拥拥有有多多个个帐帐号号,同同时时一一个个帐帐号号可可为为多多个个客客户户 拥拥 有有 , 因因 此此 帐帐 号号 持持 有有 者者 holder为为 客客 户户 类类(Costumer)的的集集合合(可可以以是是链链表表或或静静态态数数组组)。帐帐号号余余额额的的改改变变只只能能通通过过三

508、三种种操操作作来来实实现现:取取款款( Withdraw) 、 存存 款款 ( Deposit) 和和 转转 帐帐(Transfer)。)。在标识对象属性时,分析人员要保证识别出来对象的在标识对象属性时,分析人员要保证识别出来对象的属性落在所分析系统的信息域内。为了更准确的标识属性落在所分析系统的信息域内。为了更准确的标识对象的属性,分析人员还要认真的研究用户的需求陈对象的属性,分析人员还要认真的研究用户的需求陈述,从中找到关键的形容词和带所有格的名词。述,从中找到关键的形容词和带所有格的名词。2.标识对象的属性标识对象的属性v例如在用户需求的描述中有例如在用户需求的描述中有“帐号的余额帐号的

509、余额”这样的这样的短语,余额便可以识别为帐号的属性。而短语,余额便可以识别为帐号的属性。而“帐号可帐号可以有两种状态,开放的和关闭的,开放的帐号可以以有两种状态,开放的和关闭的,开放的帐号可以进行存入、提取、转帐操作进行存入、提取、转帐操作”这段描述则可以识别这段描述则可以识别出帐号对象的一个重要的枚举类型的属性:帐号状出帐号对象的一个重要的枚举类型的属性:帐号状态,它可以取开放和关闭两个值,如果业务需要,态,它可以取开放和关闭两个值,如果业务需要,还可以取其他的值,比如还可以取其他的值,比如“只存入只存入”,处于这种状,处于这种状态的帐号只能进行存入和转入操作,而不能进行提态的帐号只能进行存

510、入和转入操作,而不能进行提取和转出操作。取和转出操作。有时,客户的需求描述中并没有陈述,但是它是对有时,客户的需求描述中并没有陈述,但是它是对象必须的的属性,这时候。也要把该属性作为对象象必须的的属性,这时候。也要把该属性作为对象的属性。在帐号对象中,用户可能没有描述帐号所的属性。在帐号对象中,用户可能没有描述帐号所属的银行,但它是银行跨行操作必须的一个属性。属的银行,但它是银行跨行操作必须的一个属性。2.标识对象的属性标识对象的属性为为防防止止冗冗余余的的、不不正正确确的的属属性性,在在识识别别对对象象属属性性的的过程中应该注意以下过程中应该注意以下5个问题:个问题:去除对象的导出属性。去除

511、对象的导出属性。 例例如如“年年龄龄”可可通通过过出出生生日日期期和和当当前前时时间间导导出出,因因此此没没有有必必要要将将“年年龄龄”作作为为人人的的基基本本属属性性。导导出出属属性性可可以以通通过过提提供供导导出出属属性性的的服服务务来来来来实实现现。例例如如可可以以提提供供导导出出属属性性方方法法GetAge来来获获得得人人的的“年年龄龄”属性。属性。去去除除外外部部不不可可见见状状态态。在在需需求求分分析析阶阶段段,没没必必要要关关注对象的内部实现细节。注对象的内部实现细节。2.标识对象的属性标识对象的属性 如果标识属性时出现以下情况,则对象的识别可能有如果标识属性时出现以下情况,则对

512、象的识别可能有问题,应返回去调整。问题,应返回去调整。属性不适用于全部对象。属性不适用于全部对象。仅仅有有一一种种属属性性的的对对象象可可以以表表示示为为其其他他对对象象的的属属性性,而而不需要单独作为一个对象来实现。不需要单独作为一个对象来实现。对对于于对对象象的的某某种种属属性性,如如果果该该对对象象的的特特定定实实例例会会有有多多重属性值,则应该将对象分成两个对象。重属性值,则应该将对象分成两个对象。 例例如如在在家家庭庭财财产产保保险险系系统统中中,每每个个客客户户对对象象都都具具有有名名字字、住住址址、家家用用汽汽车车排排照照等等属属性性。如如果果有有些些家家庭庭拥拥有有多多辆辆汽汽

513、车车,则则应应考考虑虑分分裂裂“客客户户”对对象象,建建立立“家家用汽车用汽车”对象。对象。3.识别对象的行为识别对象的行为对对象象的的行行为为是是对对象象所所能能完完成成的的功功能能,也也是是对对象象所所展展现现外部服务的总和。外部服务的总和。对象的功能是由提供给其他对象的服务来定义的。对象的功能是由提供给其他对象的服务来定义的。对象的操作以外界的可见性可分为服务和内部操作。对象的操作以外界的可见性可分为服务和内部操作。 其其中中内内部部操操作作是是为为了了完完成成服服务务功功能能而而定定义义的的,外外部部不不可可见见,是是对对象象职职责责的的实实现现细细节节,因因此此不不是是分分析析阶阶段

514、段的的描描述述的的内内容容。而而服服务务则则是是对对象象提提供供给给外外界界对对象象的的操作接口。是分析阶段要描述的重要内容。操作接口。是分析阶段要描述的重要内容。 面面向向对对象象的的系系统统是是一一个个庞庞大大的的对对象象系系统统,同同类类对对象象之之间间和和不不同同的的对对象象之之间间通通过过相相互互通通信信来来完完成成复复杂杂的的系系统状态的控制。统状态的控制。3.识别对象的行为识别对象的行为通常将对象的行为分为三类:通常将对象的行为分为三类:对象生存期行为:对象创建、维护和销毁行为;对象生存期行为:对象创建、维护和销毁行为;计算性行为;计算性行为;监视性行为或称状态事件响应行为。监视

515、性行为或称状态事件响应行为。识别对象的行为的过程:识别对象的行为的过程:提提取取对对象象外外部部行行为为的的大大致致功功能能和和名名称称,同同时时进进行适当的精化;行适当的精化;标识对象之间的消息传递;标识对象之间的消息传递;使使用用模模板板描描述述对对象象的的外外部部服服务务和和对对象象间间的的消消息息传传递递。所所谓谓模模板板是是软软件件组组织织制制定定的的用用于于描描述述对对象行为的标准格式。象行为的标准格式。3.识别对象的行为识别对象的行为1)提取外部服务)提取外部服务v 分分析析人人员员通通过过对对问问题题陈陈述述的的分分析析,得得到到可可以以作作为为对对象象外外部部服服务务的的动动

516、词词。如如“银银行行系系统统”中中用用户户的的问问题题描描述述“可可以以存存款款、取取款款、转转帐帐.”。分分析析员员通通过过分分析析得得到到“存存款款”操操作作是是帐帐号号的的外外部部行行为为。因因此此提提取取出出帐帐号号的外部行为的外部行为“存款存款”,并命名为,并命名为Deposit。v有有些些外外部部服服务务可可能能需需要要分分析析员员通通过过对对对对象象生生存存期期、对对象象应应该该展展现现的的计计算算性性行行为为和和监监视视性性行行为为的的仔仔细细分分析析,才能得到对象潜在的外部服务。才能得到对象潜在的外部服务。 如如在在帐帐号号对对象象中中,应应添添加加潜潜在在的的服服务务:对对

517、帐帐号号持持有有者者的的操操作作,GetHolders用用于于得得到到帐帐号号的的所所有有持持有有者者;AddHolders用用 于于 为为 帐帐 号号 添添 加加 新新 的的 持持 有有 者者 ;DeleteHolders用于删除帐号中的持有者。用于删除帐号中的持有者。3.识别对象的行为识别对象的行为对象生存期行为分析对象生存期行为分析 在面向对象系统中的对象必须提供用于在对象外在面向对象系统中的对象必须提供用于在对象外部创建、销毁和维护该对象的方法。这些方法就是对象部创建、销毁和维护该对象的方法。这些方法就是对象的生存期行为。在使用对象前应该先创建(的生存期行为。在使用对象前应该先创建(c

518、reate)它,)它,然后可以不改变或多次改变对象的状态。当对象不再被然后可以不改变或多次改变对象的状态。当对象不再被使用的时候,要使用对象的使用的时候,要使用对象的Destroy方法来销毁对象。方法来销毁对象。CreateDestroyChange图图722 对象生存期对象生存期3.识别对象的行为识别对象的行为对象计算性行为分析对象计算性行为分析 多多用用来来利利用用对对象象的的基基本本属属性性计计算算对对象象的的导导出出属属性性,或或者者应应其其他他对对象象的的请请求求完完成成数数据据处处理理。根根据据职职员员的的出出生生年年月月计计算算其其年年龄龄的的方方法法即即是是职职员员对对象象的的

519、计计算性方法。算性方法。对象监视性行为分析对象监视性行为分析 为为了了分分析析和和提提取取对对象象的的监监视视性性行行为为。分分析析人人员员首首先先应应提提取取对对象象的的状状态态。然然后后列列出出该该状状态态在在外外部部事事件件的的激激励励后后所所处处的的状状态态值值。表表73给给出出了了帐帐号号对对象象的状态的状态事件事件响应表。响应表。3.识别对象的行为识别对象的行为表表73 帐号对象状态帐号对象状态事件事件响应表响应表状态状态事件事件响应(状态)响应(状态)opencloseclosedcloseopenopenedopenwriteoffwirteoffclosewriteoffwr

520、iteoffwriteoff 销帐(注销)销帐(注销)3.识别对象的行为识别对象的行为比状态比状态事件事件响应表更为有效的工具是对象状态图。响应表更为有效的工具是对象状态图。它可以精确地描述对象所有可能的状态和导致状态跃它可以精确地描述对象所有可能的状态和导致状态跃迁的事件。下面给出了帐号对象的状态图:对象创建迁的事件。下面给出了帐号对象的状态图:对象创建时的状态为打开状态,当使用事件时的状态为打开状态,当使用事件close关闭帐号时,关闭帐号时,帐号的状态变成帐号的状态变成close。同样我们可以用注销事件使对。同样我们可以用注销事件使对象的状态跃迁至注销状态。象的状态跃迁至注销状态。wri

521、teoffCloseopenwriteoffOpenCloseWriteoff图图723 “帐帐号号”对对象象状状态态图图3.识别对象的行为识别对象的行为2)标识对象间的消息传递)标识对象间的消息传递v对对象象之之间间的的交交互互和和通通讯讯是是由由对对象象之之间间的的消消息息传传递递来来实实现现的的。消消息息的的传传递递过过程程涉涉及及到到三三个个方方面面:消消息息的的发发送送者、消息的接收者和消息本身。消息可分为以下几类:者、消息的接收者和消息本身。消息可分为以下几类:Obj1激激活活Obj2;如如在在Obj1中中使使用用CreateObj2( )创创建建Obj2。Obj1提提供供信信息息

522、给给Obj2;如如在在Obj1中中使使用用Obj2.SetPara( ),用于设置,用于设置Obj2的某些属性。的某些属性。Obj1询询问问Obj2;如如在在Obj1中中使使用用Obj2.GetPara( )获获得得Obj2的基本属性或导出属性。的基本属性或导出属性。Obj1命命令令Obj2 完完成成某某项项功功能能。如如调调用用Obj2.SendData( )发送数据。发送数据。3.识别对象的行为识别对象的行为图图724 消息传递消息传递MessageObj1Obj23.识别对象的行为识别对象的行为3)外部服务的表示)外部服务的表示v筛选和描述对象外部服务的策略:筛选和描述对象外部服务的策略

523、:只有外部可以观察的行为才构成外部服务只有外部可以观察的行为才构成外部服务使用统一的模板或工具描述对象及其外部服务使用统一的模板或工具描述对象及其外部服务使使用用简简洁洁、精精确确、无无歧歧义义的的文文字字描描述述外外部部服服务务的的处处理步骤和功能。理步骤和功能。v在在系系统统分分析析阶阶段段,对对象象行行为为的的定定义义只只局局限限在在对对象象的的外外部部行行为为上上,至至于于对对象象职职责责的的实实现现细细节节,则则是是面面向向对象设计的任务。对象设计的任务。v在在CASE工工具具中中可可以以使使用用活活动动图图对对服服务务过过程程进进行行详详细细描描述述,以以使使分分析析员员、客客户户

524、、和和其其他他参参项项人人员员在在对对象象的职责上达成共识。的职责上达成共识。4.识别对象所属的类识别对象所属的类具具有有共共同同特特性性的的对对象象可可以以抽抽象象成成类类,抽抽象象出出来来的的类类又又可可以以实实例例化化成成对对象象。在在面面向向对对象象的的方方法法中中。每每个个对对象象都都是是通通过过实实例例化化类类来来创创建建的的,因因此每个对象应该有自己所属的类。此每个对象应该有自己所属的类。 面向对象的需求模型中,对象可能属面向对象的需求模型中,对象可能属于不同的类,这些类之间可能存在继承关系和于不同的类,这些类之间可能存在继承关系和聚合关系。因此在面向对象方法的分析阶段,聚合关系

525、。因此在面向对象方法的分析阶段,主要任务就是标识对象所属的类并建立类之间主要任务就是标识对象所属的类并建立类之间的继承关系和聚合关系。从而形成类族。的继承关系和聚合关系。从而形成类族。5.定义主题词定义主题词当当分分析析模模型型中中的的某某些些类类具具有有很很大大的的相相关关性性、且且用用于于完完成成一一组组内内聚聚性性很很高高的的功功能能时时,我我们们可可以以把把这这些些类类定定义义为为一一个个主主题题,或或称称子子系系统统,不不同同主主题题词词下下的的类类的的耦耦合合则则较较松松散散,只只通通过过少少量量的的消息进行连接。消息进行连接。有有的的面面向向对对象象的的类类库库也也将将主主题题词

526、词同同其其包包含含的的类类统统称称为为包包(Package)。如如JAVA 类类库库中中的的数数据据库库操操作作包包,界界面面包包等等。主主题题是是抽抽象象的的概概念念,需需要分析员在分析的过程中给予合适的概括。要分析员在分析的过程中给予合适的概括。5.定义主题词定义主题词定义主题词应遵循的策略:定义主题词应遵循的策略:由由经经验验丰丰富富的的的的分分析析人人员员标标识识系系统统的的对对象象和和类类,在在此此基基础础上上将将紧紧密密结结合合的的类类划划分分成成主主题题词词。这这些主题词在现实世界中应该是自然的。些主题词在现实世界中应该是自然的。根根据据主主题题词词将将需需求求分分析析的的任任务

527、务划划分分给给各各分分析析小小组。组。随随着着分分析析的的进进行行,主主题题词词可可以以按按照照树树状状结结构构继继续续划划分分,直直到到主主题题词词的的内内容容是是类类而而不不是是主主题题词词为止。为止。5.定义主题词定义主题词例如,银行系统通常可划分为三个主题词:例如,银行系统通常可划分为三个主题词:人机界面主题词人机界面主题词包含了用于实现人机界面操作的类;包含了用于实现人机界面操作的类;银行业务主题词银行业务主题词包含了所有实现银行业务的类,客包含了所有实现银行业务的类,客户类就在这个主题词下;户类就在这个主题词下;数据操作主题词数据操作主题词包含所有有关数据操作的类。比如包含所有有关

528、数据操作的类。比如完成添加、更新、查询等操作的类。完成添加、更新、查询等操作的类。人机界面人机界面银行业务银行业务数据操作数据操作图图725 银行系统的主题词银行系统的主题词 5.定义主题词定义主题词人机界面主题词下还可进一步细分为前台主题人机界面主题词下还可进一步细分为前台主题词和分析主题词:词和分析主题词:前台主题词前台主题词包含所有前台操作界面的类,比包含所有前台操作界面的类,比如用于实现登录界面的登录界面类,用于实现如用于实现登录界面的登录界面类,用于实现存款界面的存款界面类。存款界面的存款界面类。分析主题词分析主题词包含银行决策者所使用的所有用包含银行决策者所使用的所有用于经营状况分

529、析的界面。于经营状况分析的界面。前台前台分析分析图图726 人机界面的主题词人机界面的主题词 7.3 面向对象的需求分析面向对象的需求分析CASE工具工具Rational(现已被(现已被IBM公司兼并)公司遵公司兼并)公司遵循循UML(统一建模语言)标准的(统一建模语言)标准的CASE工工具具Rational Rose集面向对象分析、面向对集面向对象分析、面向对象设计、测试、代码框架生成、逆向工象设计、测试、代码框架生成、逆向工程等工具于一身。在构建面向对象系统程等工具于一身。在构建面向对象系统的整个过程中,除编码之外,我们可以的整个过程中,除编码之外,我们可以不离开不离开Rational R

530、ose的工具环境,就能生的工具环境,就能生成软件工程全部配置。成软件工程全部配置。7.3 面向对象的需求分析面向对象的需求分析CASE工具工具用用例视、设计视、过程视、实现视和部署视便可以用用例视、设计视、过程视、实现视和部署视便可以完整的描述一个面向对象的系统。完整的描述一个面向对象的系统。UML的各种图则为系统的不同视提供了建模工具。的各种图则为系统的不同视提供了建模工具。图图731 面向对象系统的视面向对象系统的视设计视设计视实现视实现视过程视过程视配置视配置视用例视用例视7.3.1视视1)用例视()用例视(use case view) 系系统统的的用用例例视视通通过过用用例例来来描描述

531、述可可为为用用户户、分分析析人人员员和和测测试试人人员员所所能能看看见见和和理理解解的的系系统统行行为为,用用例例视视的的静静态态方方面面由由用用例例图图来来描描述述。动动态态方方面面由由交交互互作作用用图图、状态图和活动图来描述。状态图和活动图来描述。2)设计视()设计视(design view) 系系统统的的设设计计视视包包括括系系统统中中的的类类、接接口口和和协协作作,也也包包括括系系统统应应该该提提供供给给用用户户的的服服务务。设设计计视视的的静静态态方方面面由由类类图图和和对对象象图图来来描描述述。动动态态方方面面也也由由交交互互作作用用图图、状态图和活动图来描述。状态图和活动图来描

532、述。3)过程视()过程视(process view) 过过程程视视包包括括形形成成系系统统的的并并发发和和同同步步机机制制的的线线程程和和过过程程,描描述述了了系系统统的的性性能能、可可扩扩展展性性和和总总的的处处理理能能力力。过过程程视视的的静静态态方方面面由由类类图图和和对对象象图图来来描描述述。动动态态方方面面由交互作用图、状态图和活动图来描述。由交互作用图、状态图和活动图来描述。7.3.1视视4)实现视()实现视(Implementation view) 系系统统的的实实现现视视包包括括用用于于组组装装物物理理系系统统的的组组件件和和文文件件,主主要要描描述述了了系系统统版版本本的的配

533、配置置管管理理。系系统统版版本本是是由由独独立立的的组组件件和和文文件件构构成成的的可可运运行行系系统统。实实现现视视的的静静态态方方面面由由组组件件图图来来描描述述,动动态态方方面面也也由由交交互互作作用图、状态图和活动图来描述。用图、状态图和活动图来描述。5)部署视)部署视(deployment view) 部署视包括了构成并能够与运行软件系统硬件拓部署视包括了构成并能够与运行软件系统硬件拓扑的节点,主要描述了物理系统组成部分的分布、扑的节点,主要描述了物理系统组成部分的分布、交付和安装,部署视的静态方面由部署图来描述;交付和安装,部署视的静态方面由部署图来描述;动态方面也由交互作用图、状

534、态图和活动图来描述。动态方面也由交互作用图、状态图和活动图来描述。7.3.2UML的图的图1)类图)类图 类类图图描描述述了了类类接接口口协协作作以以及及类类之之间间的的关关系系。类类图图是是 在面向对象系统建模中的最常用的图。在面向对象系统建模中的最常用的图。2)对象图)对象图 对对象象图图描描述述了了对对象象以以及及对对象象之之间间的的关关系系。通通常常是是系系 统某一时刻对象的快照。统某一时刻对象的快照。3)用例图)用例图 用例图描述了用例、参与者以及它们之间的关系。用例图描述了用例、参与者以及它们之间的关系。4)交互作用图)交互作用图 交互作用图包括时序图和协作图两种。交互作用图交互作

535、用图包括时序图和协作图两种。交互作用图 描述了对象之间的交互作用,它由对象和对象之间描述了对象之间的交互作用,它由对象和对象之间的关系组成。时序图强调的是消息以时间为顺序的交的关系组成。时序图强调的是消息以时间为顺序的交互作用;协作图则强调发送和接收消息的对象的结构互作用;协作图则强调发送和接收消息的对象的结构组织的交互作用。时序图和协作图可以相互转换。组织的交互作用。时序图和协作图可以相互转换。7.3.2UML的图的图5)状态图)状态图 状状态态图图描描述述了了一一个个状状态态机机,由由状状态态、跃跃迁迁、事事件件和和活活动动组组成成,状状态态图图强强调调了了对对象象按按事事件件排排序序的的

536、行行为为,在对实时系统建模时在对实时系统建模时,状态图尤其有用。状态图尤其有用。6)活动图)活动图 一一种种特特殊殊的的状状态态图图,描描述述了了系系统统中中从从活活动动到到活活动动的的控控制制流流,活活动动图图在在为为系系统统进进行行功功能能建建模模时时尤尤其其有有用。用。7)组件图)组件图 描述了系统中组件的组织结构和依赖关系。描述了系统中组件的组织结构和依赖关系。8)部署图)部署图 描述运行处理节点和位于节点上的软件组件的配描述运行处理节点和位于节点上的软件组件的配置。置。7.3.3银行系统的需求分析银行系统的需求分析1)用例图)用例图 用例图用于描述系统的参与者和系统应完成用例图用于描

537、述系统的参与者和系统应完成的功能,下面给出银行系统的用例图(图的功能,下面给出银行系统的用例图(图732)。)。在用例图的设计过程中需要完成识别参与者和识在用例图的设计过程中需要完成识别参与者和识别用例两个步骤。别用例两个步骤。v参与者即是用例的激发者,它可以是角色,也可参与者即是用例的激发者,它可以是角色,也可以是外部系统。以是外部系统。v用例则是系统提供给参与者的功能。图中的椭圆用例则是系统提供给参与者的功能。图中的椭圆代表的是用例,人形标记代表的是参与者。代表的是用例,人形标记代表的是参与者。7.3.3银行系统的需求分析银行系统的需求分析图图732 银行系统的用例图银行系统的用例图存款存

538、款取款取款转帐转帐登录登录帐号维护帐号维护银行职员银行职员客户客户银行银行行间转帐行间转帐行内转帐行内转帐银行职员银行职员7.3.3银行系统的需求分析银行系统的需求分析2)类图)类图 图图733仅给出银行系统中银行业务下的类图,仅给出银行系统中银行业务下的类图,其中其中Account和和Bank之间是聚合关系,而之间是聚合关系,而Withdraw和和Transaction则是子类和父类的关系。则是子类和父类的关系。图图733 “银行业务银行业务”类图类图 输入姓名输入姓名和密码和密码7.3.3银行系统的需求分析银行系统的需求分析3)活动图)活动图 活活动动图图描描述述了了用用例例的的动动态态执

539、执行行过过程程,活活动动图图强强调调从从活活动动到到活活动动的的控控制制流流。在在设设计计活活动动图图时时,每每个个用用例例对对应应一一个个活活动动图图。登登录录用用例例的的活活动动图图,如如右图所示。右图所示。银行职员银行职员系统系统提示提示输入帐号输入帐号错误信息错误信息提交提交校验信息校验信息进入银行系统进入银行系统7.3.3银行系统的需求分析银行系统的需求分析4)时序图)时序图v描描述述从从对对象象到到对对象象的的控控制制流流,即即完完成成特特定定功功能能发发生在系统对象之间的信息交换。生在系统对象之间的信息交换。v下下面面给给出出取取款款的的时时序序图图(如如图图735所所示示)。“

540、取取款款”时时序序图图精精确确的的描描述述了了取取款款过过程程,也也就就是是银银行行系统中各对象以时间为基准的信息交互过程。系统中各对象以时间为基准的信息交互过程。7.3.3银行系统的需求分析银行系统的需求分析图图735 取款的时序图取款的时序图7.4Rational统一过程统一过程RUP(Rational Unified Process)属于软件工程过)属于软件工程过程的范畴,它提供了在开发机构中分派任务和责程的范畴,它提供了在开发机构中分派任务和责任的方法,其目标是在可预见的日程和预算前提任的方法,其目标是在可预见的日程和预算前提下确保满足最终用户需求的高质量软件的产生。下确保满足最终用户

541、需求的高质量软件的产生。RUP是是一一个个可可裁裁减减的的过过程程,RUP为为配配置置适适合合特特定定需需要要的的开开发发过过程程提提供供了了支支持持,因因此此RUP适适用用于于规规模模从小到大的各类软件的开发。从小到大的各类软件的开发。7.4Rational统一过程统一过程RUP的二维结构包括时间和过程组件两个轴(如图的二维结构包括时间和过程组件两个轴(如图741所示)。为使软件项目开发成功,两个轴都要所示)。为使软件项目开发成功,两个轴都要被考虑。其中被考虑。其中:v商业建模(商业建模(Business Modeling)、需求)、需求(Requirements)、分析和设计()、分析和设

542、计(AnalysisDesign)、实现()、实现(Implementation)、测试)、测试(Test)和部署()和部署(Deployment)是)是RUP的核心过的核心过程工作流。程工作流。v配置和变更管理(配置和变更管理(Configuration Change Management)、项目管理()、项目管理(Project Management)和环境()和环境(Environment)是)是RUP的的核心支持工作流。核心支持工作流。7.4Rational统一过程统一过程图图741 RUP的二维结构的二维结构7.4.1时间轴时间轴RUP过过程程是是一一个个迭迭代代递递增增的的开开发发

543、过过程程。使使用用迭迭代代递递增增式式的的开开发发方方法法,不不是是在在项项目目结结束束时时一一次次性性提提交交软软件件,而而是是分分块块逐逐次次开开发发和和提提交交,每每次次迭迭代代选选择择一一些些功功能能点点,添添加加到到现现有有的的软软件件中中去去,经经过过一一次次迭迭代代后后,再再选选择择其其他他的的功功能能点点,进进行行新的迭代过程。新的迭代过程。RUP将将软软件件生生命命周周期期划划分分成成小小的的执执行行周周期期,每每个个周周期期都都致致力力于于构构造造软软件件的的新新版版本本。RUP软软件件生生命命周周期期被被分分成成四四个个连连续续的的阶阶段段:初初始始阶阶段段(Incept

544、ion);细细化化阶阶段段(Elaboration);构构 造造 阶阶 段段 ( Construction) ; 交交 付付 阶阶 段段(Transition)。)。7.4.1时间轴时间轴1)初始阶段)初始阶段 初初始始阶阶段段的的主主要要任任务务是是建建立立软软件件系系统统的的商商业业模模型型,需需要要考考虑虑项项目目的的效效益益,并并进进行行初初步步的的需需求求分分析析。这一阶段需要与系统的用户和领域专家进行讨论。这一阶段需要与系统的用户和领域专家进行讨论。 在初始阶段,要为系统建立商业案例并确定在初始阶段,要为系统建立商业案例并确定项目的边界。为完成这些任务,必须识别出所有与项目的边界。

545、为完成这些任务,必须识别出所有与系统交互的外部实体,并在较高层次上定义交互的系统交互的外部实体,并在较高层次上定义交互的特性。这包括识别出所有用例并描述几个重要的用特性。这包括识别出所有用例并描述几个重要的用例。例。 商业案例包括验收标准、风险评估、所需资商业案例包括验收标准、风险评估、所需资源的估计以及体现项目开发重要里程碑的阶段计划。源的估计以及体现项目开发重要里程碑的阶段计划。7.4.1时间轴时间轴初始阶段的主要输出:初始阶段的主要输出:蓝蓝图图文文档档:是是关关于于项项目目核核心心需需求求、关关键键特性和主要约束的总体蓝图。特性和主要约束的总体蓝图。用例模型:应完成至少用例模型:应完成

546、至少20。项目术语表:规范项目范围内的术语。项目术语表:规范项目范围内的术语。初始的商业案例和风险评估。初始的商业案例和风险评估。项目计划、体现阶段和迭代。项目计划、体现阶段和迭代。商业模型。商业模型。一个或多个原型。一个或多个原型。7.4.1时间轴时间轴2)细化阶段)细化阶段 细化阶段的主要任务是分析问题域,建细化阶段的主要任务是分析问题域,建立坚实的体系结构基础、制定项目计划、立坚实的体系结构基础、制定项目计划、消除项目中高风险因素。消除项目中高风险因素。 在细化阶段,通过一次或多次迭代在细化阶段,通过一次或多次迭代建立可执行的结构原型,这个工作应该至建立可执行的结构原型,这个工作应该至少

547、处理初始阶段中识别出来的关键用例通少处理初始阶段中识别出来的关键用例通常揭示了项目中存在的主要技术风险。常揭示了项目中存在的主要技术风险。7.4.1时间轴时间轴细化阶段的主要输出:细化阶段的主要输出:基本完成的用例模型:至少完成基本完成的用例模型:至少完成80以上。以上。补充非功能需求和无法与特定用例关联的需求。补充非功能需求和无法与特定用例关联的需求。软件体系结构的描述。软件体系结构的描述。可执行的软件原型。可执行的软件原型。修订过的风险清单和商业案例。修订过的风险清单和商业案例。整个项目的开发计划,包括每一次迭代系统应整个项目的开发计划,包括每一次迭代系统应实现的目标。实现的目标。更新的开

548、发案例。更新的开发案例。初步的用户手册。初步的用户手册。7.4.1时间轴时间轴3)构造阶段)构造阶段 在构造阶段,系统的新特性被开发并集成在构造阶段,系统的新特性被开发并集成到产品中,所有的新特性都被充分和彻底的测到产品中,所有的新特性都被充分和彻底的测试。试。 构造阶段的输出:构造阶段的输出: 软件产品。软件产品。 用户手册。用户手册。 当前版本的描述。当前版本的描述。 4)交付阶段。)交付阶段。 部署和配置系统,并交付给用户。部署和配置系统,并交付给用户。7.4.2工作流工作流沿沿着着过过程程组组件件轴轴,过过程程被被划划分分为为核核心心过过程程工工作作流流和和核核心心支支持持工工作作流流

549、。工工作作流流是是由由活活动动构构成成的的活动序列。活动序列。过过程程组组件件轴轴的的每每个个活活动动都都应应用用于于时时间间轴轴的的每每个个阶阶段段,例例如如,构构造造阶阶段段是是由由多多次次迭迭代代组组成成,每每一一次次迭迭代代都都包包含含商商业业建建模模、需需求求、分分析析和和设设计计、实实现现和和测测试试,在在构构造造的的最最后后一一次次迭迭代代还还应应包包括括配配置置,每每次次迭迭代代所所得得到到的的产产品品应应满满足足项项目目需需求求的的某某一一个个子子集集,或或被被提提交交给给用用户户,或或是是软软件件组组织织内内部部提提交交。每每一一次次迭迭代代都都包包含含了了软软件件生生命命

550、周周期的所有阶段。期的所有阶段。7.4.2工作流工作流活活动动在在各各个个阶阶段段应应用用的的程程度度由由开开发发阶阶段段决决定定。例例如如,在在初初始始阶阶段段,商商业业建建模模的的工工作作要要比比需需求求工工作作多多;在在细细化化阶阶段段,分分析析与与设设计计的的工工作作要要比比实实现现的的工工作作多多;系系统统的的实实现现主主要要发发生生在在构构造造阶阶段段;系系统统的的配配置置工工作作主主要发生在交付阶段。要发生在交付阶段。7.4.3微过程的划分微过程的划分由由图图741可可以以看看出出,每每次次迭迭代代通通常常都都包包含含一一个个微微过过程程,微微过过程程是是由由上上述述九九个个工工

551、作作流流组组成成。每每个个微微过过程程的的任任务务类类似似于于瀑瀑布布模模型型的的各各个个阶阶段段,这这里里不不再再详述。详述。课程名称:软件工程课程名称:软件工程 第第13讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第8章章 软件设计基础。软件设计基础。8.1.18.1.3教学目的:理解软件设计过程、抽象与逐步求精、教学目的:理解软件设计过程、抽象与逐步求精、模块化与信息隐藏等概念。模块化与信息隐藏等概念。 教学重点:几个软件设计的基本概念。教学重点:几个软件设计的基本概念。教学难点:教学难点: 模块划分与软件损耗的关系。模块划分与软件损耗的关系。教教 具:多媒体教室

552、、电子教案具:多媒体教室、电子教案作作 业:业:第第8章章 软件设计基础软件设计基础软软件件设设计计阶阶段段的的工工作作是是以以需需求求分分析析阶阶段段的的成成果果为为前前提提和和基基础础的的,即即经经过过系系统统分分析析小小组组签签字字认认可可的的需需求求规规格格说说明明书书及及有有关关技技术术文文档档。经经过过软软件件工工程程师师们们多多年年的的努努力力,一一些些软软件件设设计计技技术术、质质量量评评估估标标准准和和设设计计表表示示法法逐逐步步形形成成并并用用于于软软件工程实践。件工程实践。软件设计是软件工程的重要阶段。软件设计过软件设计是软件工程的重要阶段。软件设计过程是对程序结构、数据

553、结构和过程细节逐步求程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程,本章讨论与软件精、复审并编制文档的过程,本章讨论与软件设计有关的主要概念。设计有关的主要概念。8.1 软件设计基本概念软件设计基本概念 8.1.1软件设计过程软件设计过程一般认为,软件开发阶段由设计、编码和测试三一般认为,软件开发阶段由设计、编码和测试三个基本活动组成,其中个基本活动组成,其中“设计设计”活动是获取高质活动是获取高质量、低耗费、易维护软件的一个最重要环节。量、低耗费、易维护软件的一个最重要环节。需求分析阶段获得的需求规格说明书包括对将要需求分析阶段获得的需求规格说明书包括对将要实现的系统在信息

554、、功能和行为等各个方面的描实现的系统在信息、功能和行为等各个方面的描述,这是软件设计的基础。对此不论采用何种软述,这是软件设计的基础。对此不论采用何种软件设计方法都将产生件设计方法都将产生: 系统的总体结构设计(系统的总体结构设计(architectural design);); 系统的数据设计(系统的数据设计(data design);); 系统的过程设计(系统的过程设计(procedural design)。)。8.1.1软件设计过程软件设计过程图图811 开发阶段的信息流开发阶段的信息流程序程序模块模块总体结构设计总体结构设计设计设计编码编码信息描述信息描述功能描述功能描述行为描述行为描

555、述其他需求其他需求过程设计过程设计数据设计数据设计集集成成并并确确认认的的软件软件测试测试8.1.1软件设计过程软件设计过程软件设计也可看作将需求规格说明逐步转换为软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。软件源代码的过程。从工程管理的角度软件设计可分为概要从工程管理的角度软件设计可分为概要(preliminary)设计和详细()设计和详细(detail)设计两)设计两大步骤。大步骤。概要设计是根据需求确定软件和数据的总体框概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法架,详细设计是将其进一步精化成软件的算法表示和数据结构。表示和数据结构。而在

556、技术上,概要设计和详细设计又由若干活而在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独程设计外,许多现代应用软件,还包括一个独立的界面设计活动。立的界面设计活动。8.1.2抽象与逐步求精抽象与逐步求精抽象是控制复杂性的基本策略。抽象是控制复杂性的基本策略。“抽象抽象” ” 要求人要求人们将注意力集中在某一层次上考虑问题,而忽略们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。那些低层次的细节。软件设计过程应当是在不同抽象级别上考虑和处软件设计过程应当是在不同抽象级别上考虑和处

557、理问题的过程。最初,应在最高抽象级别上,用理问题的过程。最初,应在最高抽象级别上,用面向问题域的语言叙述面向问题域的语言叙述“问题问题”,概括,概括“问题解问题解”的形式,而后不断地具体化,不断地用面向过的形式,而后不断地具体化,不断地用面向过程的语言描述问题,最后,在最低的抽象级别上程的语言描述问题,最后,在最低的抽象级别上给出可直接实现的给出可直接实现的“问题解问题解”,即程序。,即程序。8.1.2抽象与逐步求精抽象与逐步求精软件工程过程的每一步都是对较高一级抽象的解作一软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。次进一步具体化的描述。v在系统定义阶段,软件系统被描

558、述为基于计算机的大在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分;系统的一个组成部分;v在软件规划和需求分析阶段,软件用问题域约定的习在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达;惯用语表达;v从概要设计过渡到详细设计时,抽象级再一次降低;从概要设计过渡到详细设计时,抽象级再一次降低;v编码完成后达到了抽象的最低级。编码完成后达到了抽象的最低级。在上述由高级抽象到低级抽象的转换过程中,伴随着在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。一连串的过程抽象和数据抽象。v过程抽象把完成一个特定功能的动作序列抽象为一个过程抽象把完成一个特定功能

559、的动作序列抽象为一个过程名和参数表;过程名和参数表;v数据抽象把一个数据对象的定义(或描述)抽象为一数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。个数据类型名。【例例8.1】考虑适用于低级考虑适用于低级CAD的图形软件包。的图形软件包。抽象抽象 该该CAD软件系统配有能与绘图员进行可软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具,视化通信的图形界面,能用鼠标代替绘图工具,画各种直线和曲线;能完成所有几何计算以及画各种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。图形设计的所有截面视图和辅助视图的设计。图形设计的结果存在图形文件中,图形文件可

560、包含几何的、结果存在图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。正文的和其他各种补充设计信息。 显而易见,在这一抽象级别上,用问题域本显而易见,在这一抽象级别上,用问题域本身的术语来描述问题的解。身的术语来描述问题的解。【例例8.1】考虑适用于低级考虑适用于低级CAD的图形软件包。的图形软件包。抽象抽象 CAD软件任务;软件任务; 用户界面子任务;用户界面子任务; 创建二维图形子任务;创建二维图形子任务; 显示图形子任务;显示图形子任务; 管理图形文件子任务;管理图形文件子任务; end CAD. 在在这这一一抽抽象象级级别别上上,给给出出了了组组成成CAD软软件件任任务务

561、的的所所有有主主要要子子任任务务,尽尽管管术术语语已已与与问问题题域域有有所所不同,但仍然不是实现所用的语言。不同,但仍然不是实现所用的语言。【例例8.1】考虑适用于低级考虑适用于低级CAD的图形软件包。的图形软件包。抽象抽象(仅以(仅以“创建二维图形子任务创建二维图形子任务”为例)为例) PROCEDURE 创建二维图形创建二维图形 REPEAT UNTIL DO WHILE 数字仪接口任务;数字仪接口任务; 判断作图请求:判断作图请求: 线:画线任务;线:画线任务; 圆:画圆任务;圆:画圆任务; END;【例例8.1】考虑适用于低级考虑适用于低级CAD的图形软件包。的图形软件包。 DO W

562、HILE 键盘接口任务;键盘接口任务; 选择分析或计算:选择分析或计算: 辅辅助助视视图图:辅辅助助视视图图任务;任务; 截截面面视视图图:截截面面视视图图任务;任务; END; END REPEAT;END PROCEDURE.【例例8.1】考虑适用于低级考虑适用于低级CAD的图形软件包。的图形软件包。在这一抽象级别上,给出了初步的过在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软程性表示,此时所有术语都是面向软件(比如采用件(比如采用do while结构)并且模块结构)并且模块结构也开始明朗。求精过程还可继续结构也开始明朗。求精过程还可继续下去,直至产生源代码。下去,直至产

563、生源代码。数据抽象数据抽象数数据据抽抽象象与与过过程程抽抽象象一一样样,能能使使设设计计者者按按不不同同的详细程度表示数据对象。的详细程度表示数据对象。仍仍以以CAD软软件件为为例例,我我们们可可定定义义一一个个称称为为drawing(图)的数据对象:(图)的数据对象:TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED notes IS STRING LENTH(256); bom DEFINEDEND drawing TYPE;数据抽象数据抽象在在此此,drawing被被表表示示为为一一

564、种种结结构构,其其各各个个组组成成部部 件件 本本 身身 又又 可可 为为 某某 种种 数数 据据 抽抽 象象 , 比比 如如geometry(几何图形)和(几何图形)和bom。一一旦旦抽抽象象数数据据类类型型drawing定定义义完完毕毕,即即可可用用类类型型名名直直接接说说明明数数据据对对象象,而而不不必必涉涉及及其其内内部部构构造的细节,例如,可用语句造的细节,例如,可用语句: blueprint IS INSTANCE OF drawing; 或或 schematic IS INSTANCE OF drawing; 说说明明blueprint和和schematic具具有有drawing

565、的的一一切切特特性。性。blueprint蓝图,蓝图,schematic简(略)图。简(略)图。数据抽象数据抽象在抽象数据类型的定义中可以附加一组操作的定在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。义,用以确定在此类数据对象上可进行的操作。以抽象数据类型以抽象数据类型drawing为例,可以定义擦除为例,可以定义擦除(erase)、存储()、存储(save)、分类()、分类(catalog)和)和拷贝(拷贝(copy)等操作。)等操作。许多程序设计语言都提供了对抽象数据类型的支许多程序设计语言都提供了对抽象数据类型的支持,持,Ada 的程序包机制是对数据

566、抽象和过程抽象的程序包机制是对数据抽象和过程抽象的双重支持的双重支持 逐步求精逐步求精关于关于“逐步求精逐步求精”,N.Wirth曾经做过如下说明:曾经做过如下说明: “ “我们对付复杂问题的重要办法是抽象,因此,我们对付复杂问题的重要办法是抽象,因此,对一个复杂的问题不应该立即用计算机指令、对一个复杂的问题不应该立即用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽数字和逻辑符号来表示,而应该用较自然的抽象语言来表示,从而得出抽象程序。抽象程序象语言来表示,从而得出抽象程序。抽象程序对抽象的数据进行某些特定的运算并用某些合对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)

567、来表示。对抽象适的记号(可能是自然语言)来表示。对抽象程序做进一步分解,进入下一个抽象层次,重程序做进一步分解,进入下一个抽象层次,重复这一精化过程直到程序能被计算机接受为止。复这一精化过程直到程序能被计算机接受为止。这时的程序可能是用某种高级语言或机器指令这时的程序可能是用某种高级语言或机器指令书写的。书写的。”过程求精与数据求精过程求精与数据求精因因为为求求精精的的每每一一步步都都是是用用更更为为详详细细的的描描述述替替代代上上一一层层次次的的抽抽象象描描述述,所所以以在在整整个个设设计计过过程程中中产产生生的的,具具有有不不同同详详细细程程度度的的各各种种描描述述,组组成成了了系系统统的

568、的层层次次结结构构。层层次次结结构构的的上上一一层层是是下下一一层层的的抽抽象象,下一层是上一层的求精。下一层是上一层的求精。在过程求精的同时自然伴随着数据的求精,无论在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每一步细化都蕴涵着某些设计是过程还是数据,每一步细化都蕴涵着某些设计决策,因此设计人员必须掌握一些基本的准则,决策,因此设计人员必须掌握一些基本的准则,比较各种可能的候选方案。比较各种可能的候选方案。 8.1.3模块化与信息隐藏模块化与信息隐藏软软件件总总体体结结构构(下下一一节节讨讨论论)体体现现了了模模块块化化思思想想,即即把把软软件件划划分分为为可可独独立立命命名名

569、和和编编制制的的部部件件,每每个个部部件件称称为为一一个个模模块块,当当把把所所有有模模块块组组装装到到一一起起时时,便便可可获获得得满满足足问问题需要的一个解。题需要的一个解。“模块化是唯一对软件中的程序进行智能模块化是唯一对软件中的程序进行智能化管理的一个属性化管理的一个属性”。8.1.3模块化与信息隐藏模块化与信息隐藏假设:假设:函数函数C(X)问题问题X的复杂性;的复杂性;函数函数E(X)求解问题求解问题X需要花费的工作量(时间);需要花费的工作量(时间);对于问题对于问题P1和和P2,如果,如果 : C(P1)C(P2) 则有则有 : E(P1)E(P2) 结论:解决一个复杂问题总比

570、解决一个简单问题耗费结论:解决一个复杂问题总比解决一个简单问题耗费 更多的工作量。更多的工作量。 同时同时 有:有:C(P1+P2)C(P1)+C(P2) 结论:由结论:由P1、P2组合而成的问题的复杂性往往比考虑组合而成的问题的复杂性往往比考虑 单个问题复杂性的和更大。单个问题复杂性的和更大。 于是有:于是有: E(P1+P2)E(P1)+E(P2)8.1.3模块化与信息隐藏模块化与信息隐藏图图812 模块与软件耗费模块与软件耗费最小成本最小成本区域区域MO软件总成本软件总成本用于接口的成本用于接口的成本每个模块成本之和每个模块成本之和模块总数模块总数成本或成本或工作量工作量1信息隐蔽信息隐

571、蔽信息隐蔽原理告诉我们,模块应该设计得使其所信息隐蔽原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息含信息(过程和数据)对于那些不需要这些信息的模块不可访问;每个模块只完成一个相对独立的模块不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些为完成系统的特定功能;模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。显然,功能必须交换的信息,即模块应该独立。显然,模块独立的概念是模块化、抽象、信息隐蔽和局模块独立的概念是模块化、抽象、信息隐蔽和局部化等诸多概念的直接结果。部化等诸多概念的直接结果。信息隐蔽原理的好处信息隐蔽原理的好处它不仅

572、支持模块的并行开发,而且还可减它不仅支持模块的并行开发,而且还可减少测试和后期维护的工作量。因为测试和少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐蔽模块对大多数数据和过程处理细节的隐蔽可以减少错误向外传播。此外,整个系统可以减少错误向外传播。此外,整个系统欲扩充功能亦只需欲扩充功能亦只需“插入插入”新模块,原有新模块,原有的多数模块无须改动。的多数模块无须改动。2内聚度(内聚度(cohesion)内聚度是前述信息隐蔽和局部化概念内聚度是前述信息隐蔽和局部化概念的自然扩展,它标志一个模块内部各的自然

573、扩展,它标志一个模块内部各成分彼此结合的紧密程度。成分彼此结合的紧密程度。 内聚度按其高低程度可分为七级,内内聚度按其高低程度可分为七级,内聚度越高越好。聚度越高越好。1)偶然性内聚)偶然性内聚低级内聚低级内聚偶然性内聚(偶然性内聚(coincidental cohesion)。是指一个模)。是指一个模块内各成分为完成一组功能而组合在一起,它们相互块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。常见的偶然性内聚情形之间即使有关系,也很松散。常见的偶然性内聚情形是,当程序员写完一个程序后发现有一组语句多处出是,当程序员写完一个程序后发现有一组语句多处出现,于是为节省内存便

574、将这组语句单独组成一个模块。现,于是为节省内存便将这组语句单独组成一个模块。XYZW2)逻辑性内聚)逻辑性内聚低级内聚低级内聚如果一个模块完成的诸任务逻辑上相关,则称如果一个模块完成的诸任务逻辑上相关,则称之为逻辑性内聚(之为逻辑性内聚(logical cohesion)例如:一个模块产生所有与类型无关的输出,即例如:一个模块产生所有与类型无关的输出,即为逻辑性内聚。为逻辑性内聚。又如:模块又如:模块X、Y分别调用分别调用A、B,A、B相似,将相似,将其合并为模块其合并为模块AB,模块,模块AB即为逻辑性内聚。即为逻辑性内聚。XYSABXYSAB3)时间性内聚)时间性内聚低级内聚低级内聚如果一

575、个模块包含的诸任务必须在同一时如果一个模块包含的诸任务必须在同一时间段内执行(例如一个初始化模块),则间段内执行(例如一个初始化模块),则称之为时间性内聚(称之为时间性内聚(temporal cohesion)。)。以上三种内聚形式通常认为是低级内聚。以上三种内聚形式通常认为是低级内聚。4)过程性内聚)过程性内聚中级内聚中级内聚过程性内聚(过程性内聚(procedural cohesion) 模块的过程性内聚度是指,模块内成分彼模块的过程性内聚度是指,模块内成分彼此相关,并且必须按特定的次序执行;此相关,并且必须按特定的次序执行;过程内聚模块的各组成功能由控制流联结过程内聚模块的各组成功能由控

576、制流联结在一起。在一起。5)通信性内聚度)通信性内聚度中级内聚中级内聚通信性内聚(通信性内聚(communicational cohesion)。)。 模块的通信性内聚度是指,模块中各成分都模块的通信性内聚度是指,模块中各成分都将对数据结构的同一区域进行操作,以达到将对数据结构的同一区域进行操作,以达到通信的目的。通信的目的。例如,模块例如,模块A的处理单元是由同一数据文件的处理单元是由同一数据文件的数据产生不同的表格的数据产生不同的表格模块模块A从文件从文件FILE读出数据读出数据1. 由数据产生报表一由数据产生报表一2. 由数据产生报表二由数据产生报表二6)顺序性内聚)顺序性内聚 高级内聚

577、高级内聚顺序性内聚(顺序性内聚(sequential cohesion) 。如果一个模块内的各处理成分均与同一如果一个模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行,功能相关,且这些处理必须顺序执行,则称顺序内聚;则称顺序内聚; 通常,一个处理成分的通常,一个处理成分的输出是另一个处理成分的输入。例如:输出是另一个处理成分的输入。例如:1. 输入系数输入系数2. 求方程的根求方程的根3. 打印方程的根打印方程的根求一元二次方程求一元二次方程根的模块根的模块7)功能性内聚)功能性内聚高级内聚高级内聚功能性内聚(功能性内聚(functional cohesion)。)。如果模块内所有成

578、分形成一个整体,完如果模块内所有成分形成一个整体,完成单个功能,则称功能内聚,功能内聚成单个功能,则称功能内聚,功能内聚是最高程度的内聚形式。是最高程度的内聚形式。例如,一个模块仅完成一个矩阵的输出,例如,一个模块仅完成一个矩阵的输出,就是一个具有功能性内聚的模块。就是一个具有功能性内聚的模块。q设计软件时,应该能够识别内聚度的高设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性。聚度,从而获得较高的模块独立性。3耦合度耦合度耦合度是对软件结构中模块间关联程度的一种度量。耦合度是对软件结构中模块间关联程度的一种度

579、量。耦合的强弱取决于模块间接口的复杂性、进入或调耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。用模块的位置以及通过界面传送数据的多少等。与内聚度正好相反,在设计软件时应追求尽可能松与内聚度正好相反,在设计软件时应追求尽可能松散耦合的系统。因为对这类系统中任一模块的设计、散耦合的系统。因为对这类系统中任一模块的设计、测试和维护相对独立。由于模块间联系较少,错误测试和维护相对独立。由于模块间联系较少,错误在模块间传播的可能性也随之变小。在模块间传播的可能性也随之变小。模块间的耦合程度直接影响系统的可理解性、可测模块间的耦合程度直接影响系统的可理解性、可测试性

580、、可靠性和可维护性。试性、可靠性和可维护性。耦合度也可以分为七级耦合度也可以分为七级1)非直接耦合)非直接耦合最松散的耦合最松散的耦合耦合度也可以分为七级:耦合度也可以分为七级:如果两模块中任一个都不依赖于对方能如果两模块中任一个都不依赖于对方能独立工作,则称这两模块为(独立工作,则称这两模块为(nodirect coupling),这类耦合度最低。例如:),这类耦合度最低。例如: XYAB无关系无关系2)数据耦合)数据耦合数据耦合(数据耦合(data coupling) 如果两模块间通过参数交换信息,而信如果两模块间通过参数交换信息,而信息仅限于数据,则称这两模块为数据耦息仅限于数据,则称这

581、两模块为数据耦合。一般软件系统中都存在数据耦合,合。一般软件系统中都存在数据耦合,它是完成大多数功能所必需的。例如:它是完成大多数功能所必需的。例如:AB通过参数通过参数传递数据传递数据3)特征耦合)特征耦合特征耦合(特征耦合(stamp coupling)。)。介于数据耦合和控制耦合之间的是特征耦合介于数据耦合和控制耦合之间的是特征耦合(stamp coupling)。例如,传递了求平均成)。例如,传递了求平均成绩以外的参数:绩以外的参数:producereport cardscalculateaverage printreport cardstudengt recordaverragest

582、udengt recordaverrage4)控制耦合)控制耦合控制耦合(控制耦合(control coupling)。)。如果两模块间通过参数交换信息,此时若如果两模块间通过参数交换信息,此时若传递的信息中含有控制信息,则耦合度上传递的信息中含有控制信息,则耦合度上升为控制耦合。控制耦合通常会增加系统升为控制耦合。控制耦合通常会增加系统的复杂性,有时适当分解模块可消除控制的复杂性,有时适当分解模块可消除控制耦合。耦合。5)外部耦合)外部耦合外部耦合(外部耦合(external coupling)。)。当若干模块均与同一个外部环境关联(例当若干模块均与同一个外部环境关联(例如,如,I/O处理使

583、所有处理使所有I/O模块与特定的设备、模块与特定的设备、格式和通信协议相关联),它们之间便存格式和通信协议相关联),它们之间便存在外部耦合。外部耦合尽管需要,但应限在外部耦合。外部耦合尽管需要,但应限制在少数几个模块上。制在少数几个模块上。6)公共耦合)公共耦合公共耦合(公共耦合(common coupling)当若干模块通过全局的数据环境相互作用当若干模块通过全局的数据环境相互作用时,它们之间存在公共耦合。全局数据环时,它们之间存在公共耦合。全局数据环境中可能含有全局变量、公用区、内存公境中可能含有全局变量、公用区、内存公共覆盖区、任何存储介质上的文件、物理共覆盖区、任何存储介质上的文件、物

584、理设备等。设备等。7)内容耦合)内容耦合内容耦合(内容耦合(content coupling)。)。最高耦合度是内容耦合,出现内容耦合的最高耦合度是内容耦合,出现内容耦合的情形包括:当一个模块使用另一个模块内情形包括:当一个模块使用另一个模块内部的数据或控制信息;一个模块直接转移部的数据或控制信息;一个模块直接转移到另一个模块内部,等等。到另一个模块内部,等等。8.1.3模块化与信息隐藏模块化与信息隐藏一般来说,设计软件时应尽量使用数据耦合,减一般来说,设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。杜绝内容

585、耦合。值得指出,模块化设计的思想适用于任何软件系值得指出,模块化设计的思想适用于任何软件系统的设计。当某些软件系统(如实时软件等),统的设计。当某些软件系统(如实时软件等),因不能容忍子程序调用引起的时间开销而必须以因不能容忍子程序调用引起的时间开销而必须以整块软件的形式出现时,软件设计仍然应该以模整块软件的形式出现时,软件设计仍然应该以模块化设计的思想为指导,直至编码时再改用代入块化设计的思想为指导,直至编码时再改用代入式(式(in line)方法。这样,源程序中虽不含明显)方法。这样,源程序中虽不含明显的模块,但模块化设计所带来的大部分益处却已的模块,但模块化设计所带来的大部分益处却已被系

586、统获得。被系统获得。课程名称:软件工程课程名称:软件工程 第第14讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:教学题目:8.1.48.1.6,8.2,8.3教学目的:理解软件设计的概念,掌握几种设计教学目的:理解软件设计的概念,掌握几种设计 技术和工具,了解设计规格说技术和工具,了解设计规格说明和评审。明和评审。 教学重点:几种设计技术和工具。教学重点:几种设计技术和工具。教学难点:教学难点: 判定表。判定表。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:8.1.4 软件总体结构设计软件总体结构设计软件总体结构(软件总体结构(software architec

587、ture)应该包括)应该包括两方面内容:两方面内容: 1) 由系统中所有过程性部件(即模块)由系统中所有过程性部件(即模块) 构成的层次结构,即程序结构;构成的层次结构,即程序结构; 2) 对应于程序结构的输入输出数据结构。对应于程序结构的输入输出数据结构。软件总体结构设计的目标就是产生一个模块化的软件总体结构设计的目标就是产生一个模块化的程序结构并明确各模块之间的控制关系,此外还程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和数据结构。进一步协调程序结构和数据结构。8.1.4 软件总体结构设计软

588、件总体结构设计软件总体结构(软件总体结构(software architecture)应该)应该包括两方面内容:包括两方面内容: 1) 由系统中所有过程性部件(即模块)由系统中所有过程性部件(即模块) 构成的层次结构,即程序结构;构成的层次结构,即程序结构; 2) 对应于程序结构的输入输出数据结构。对应于程序结构的输入输出数据结构。软件总体结构设计的目标就是产生一个模块化软件总体结构设计的目标就是产生一个模块化的程序结构并明确各模块之间的控制关系,此的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和

589、数据结构。据流,进一步协调程序结构和数据结构。1.结构演变结构演变图图8-1-3 8-1-3 结构演变结构演变软软件件“解解”S1S4S2待待解解问问题题S3P1 P2P4P32.同一个同一个“问题问题”的多种软件解的多种软件解图图814 对应于同一问题的各种软件结构对应于同一问题的各种软件结构问题问题P结构结构1结构结构2结构结构3M1M2M3M4M1M2M3M4M1M2M3M4MMM3.表示程序结构的工具表示程序结构的工具类树图(类树图(tree like diagram)Warnier Orr图图Jackson图图v最常见的是如图最常见的是如图815所示的类树图。为便所示的类树图。为便于

590、讨论,下面定义几个有关的术语和度量。于讨论,下面定义几个有关的术语和度量。4.有关程序结构的术语有关程序结构的术语图图815 有关程序结构的术语有关程序结构的术语Mabcdemfgihopqrntjks扇出扇出扇入扇入宽度宽度深度深度4.有关程序结构的术语有关程序结构的术语一个软件的深度(一个软件的深度(depth) 控制的层数;控制的层数;一个软件的宽度(一个软件的宽度(width) 其控制的层数其控制的层数和跨度;和跨度;一个模块的一个模块的“扇出数扇出数”(fan out) 该模该模块直接控制的其他模块数;块直接控制的其他模块数;一个模块的一个模块的“扇入数扇入数”(fan in)指能直

591、接)指能直接控制该模块的模块数。控制该模块的模块数。4.有关程序结构的术语有关程序结构的术语如果一个模块控制另一个模块,称前者为如果一个模块控制另一个模块,称前者为“主控主控”模块,后者为模块,后者为“从属从属”模块。在图模块。在图815中模块中模块M主控模块主控模块a、b、c,模块,模块d从属模从属模块块a,因此也从属,因此也从属M。此外,软件结构中还有两个重要的特性,即此外,软件结构中还有两个重要的特性,即可见域和连通域。可见域和连通域。v模块的可见域模块的可见域该模块可直接或间接引用该模块可直接或间接引用 的一的一组模块;组模块;v模块的连通域模块的连通域仅包括该模块可直接引用仅包括该模

592、块可直接引用 的模的模块。块。8.1.5数据结构设计数据结构设计数据结构描述各数据分量之间的逻辑关系,数数据结构描述各数据分量之间的逻辑关系,数据结构一经确定,数据的组织形式、访问方法、据结构一经确定,数据的组织形式、访问方法、组合程度及处理策略等随之而定,所以数据结组合程度及处理策略等随之而定,所以数据结构是影响软件总体结构的重要因素。构是影响软件总体结构的重要因素。数据结构与程序结构一样,也可以在不同的抽数据结构与程序结构一样,也可以在不同的抽象级别上表示。以栈为例,作为一个抽象数据象级别上表示。以栈为例,作为一个抽象数据类型,在概念级上只关心类型,在概念级上只关心“先进后出先进后出”特性

593、,特性,而在实现级上则要考虑物理表示及内部工作的而在实现级上则要考虑物理表示及内部工作的细节,比如,用向量实现,或用链表实现等。细节,比如,用向量实现,或用链表实现等。8.1.5数据结构设计数据结构设计数据结构对程序结构和过程复杂性有直接的影响,从数据结构对程序结构和过程复杂性有直接的影响,从而在很大程度上决定了软件的质量。而在很大程度上决定了软件的质量。数据设计的目标是为在需求规格说明中定义的那些数数据设计的目标是为在需求规格说明中定义的那些数据对象选择合适的逻辑表示,并确定可能作用在这些据对象选择合适的逻辑表示,并确定可能作用在这些逻辑结构上的所有操作(包括选用已存在的程序包)。逻辑结构上

594、的所有操作(包括选用已存在的程序包)。数据抽象和信息隐蔽两个概念是数据设计的基础。数据抽象和信息隐蔽两个概念是数据设计的基础。通常,数据设计方案不是唯一的,有时需进行算法复通常,数据设计方案不是唯一的,有时需进行算法复杂性分析、综合各种因素之后才能从多种候选方案中杂性分析、综合各种因素之后才能从多种候选方案中筛选出最佳的设计方案。筛选出最佳的设计方案。8.1.6软件过程设计软件过程设计过程设计紧跟在数据结构和程序结构设计之后,过程设计紧跟在数据结构和程序结构设计之后,其基本任务是描述模块内各处理元素和判断元其基本任务是描述模块内各处理元素和判断元素的顺序,图素的顺序,图816展示了模块展示了模

595、块B的内部过程。的内部过程。 过程说明过程说明图图816 模块模块B的内部结构的内部结构模块模块B 模块模块B程序结构程序结构8.1.6软件过程设计软件过程设计所谓过程,应包括有关处理的精确说明,诸如所谓过程,应包括有关处理的精确说明,诸如事件的顺序、判断的位置和条件、循环操作以事件的顺序、判断的位置和条件、循环操作以及数据的组成,内部变量和外部变量的引用问及数据的组成,内部变量和外部变量的引用问题等等。题等等。过程设计也应遵循过程设计也应遵循“自上而下,逐步求精自上而下,逐步求精”的的原则和单入口单出口的结构化设计思想。原则和单入口单出口的结构化设计思想。过程设计的任务是描述算法的细节。结构

596、化程过程设计的任务是描述算法的细节。结构化程序流程图、盒图(序流程图、盒图(NS图)、判定表和判定树,图)、判定表和判定树,以及过程设计语言(以及过程设计语言(PDL)、)、PAD图等是人们图等是人们经常使用的工具。经常使用的工具。8.2软件过程设计技术和工具软件过程设计技术和工具8.2.1结构化程序设计结构化程序设计 结构化程序设计定义:是程序设计技术,它采用自顶结构化程序设计定义:是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。向下逐步求精的设计方法和单入口单出口的控制构件。 结构化程序设计的思想,应该在软件设计中体现出来,结构化程序设计的思想,应该在软件设计中体

597、现出来,但这并不排除为效率或其他原因对结构化程序设计作但这并不排除为效率或其他原因对结构化程序设计作一点修正。随着面向对象、软件重用等新的软件开发一点修正。随着面向对象、软件重用等新的软件开发方法和技术的发展,更现实、更有效的开发途径可能方法和技术的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方法有机地结合。是自顶向下和自底向上两种方法有机地结合。8.2.2图形表示法图形表示法1流程图(也称为程序框图)是最常用的一种流程图(也称为程序框图)是最常用的一种表示法,表示法, “ “顺序顺序”、“分支分支”和和“循环循环”三个三个基本控制构件用流程图表达的形式如图基本控制构件用流程图表

598、达的形式如图821所所示。示。F第二个任务第二个任务顺序结构顺序结构then部分部分else部分部分do while循环循环第一个任务第一个任务T分支条件分支条件If then else结构结构循环条件循环条件循环体循环体TF图图821 流程图构件流程图构件 8.2.2图形表示法图形表示法2盒图也称为盒图也称为NS图或图或Chapin图。这种表达方式图。这种表达方式取消了流程线,它强迫程序员以结构化方式思取消了流程线,它强迫程序员以结构化方式思考和解决问题。考和解决问题。第一个任务第一个任务第二个任务第二个任务第三个任务第三个任务顺序结构顺序结构else部分部分then部分部分条件条件FTif

599、thenelse结构结构dowhile部分部分循环条件循环条件循环结构循环结构图图823 盒图的构件盒图的构件8.2.3判定表与判定树判定表与判定树当模块中包含复杂的条件组合,并要根据这当模块中包含复杂的条件组合,并要根据这些条件的组合选择动作时,只有判定表和判些条件的组合选择动作时,只有判定表和判定树能够清晰地表达出复杂的条件组合与各定树能够清晰地表达出复杂的条件组合与各种动作之间的对应关系。种动作之间的对应关系。 判定表由四部分组成:判定表由四部分组成:左上部左上部列出所有条件;列出所有条件;左下部左下部列出所有可能的动作;列出所有可能的动作;右上部右上部所有可能的条件组合(矩阵);所有可

600、能的条件组合(矩阵);右下部右下部条件组合与动作之间的对应关系。条件组合与动作之间的对应关系。判定表的每一列可解释为一条处理规则。判定表的每一列可解释为一条处理规则。8.2.3判定表与判定树判定表与判定树【例例8.2】问题处理描述:耗电记费系统可问题处理描述:耗电记费系统可以采用固定价格收费、浮动价格收费和其以采用固定价格收费、浮动价格收费和其他方式收费三种方式。若采用固定价格方他方式收费三种方式。若采用固定价格方式收费,对每月耗电式收费,对每月耗电100kWh以下的用户以下的用户只征收最低标准费,超过只征收最低标准费,超过100kWh的用户的用户按价格表按价格表A收费;若采用浮动价格方式收收

601、费;若采用浮动价格方式收费,则每月耗电费,则每月耗电100kWh以下的用户按价以下的用户按价格格A收费,超过收费,超过100kWh的用户按价格的用户按价格B收收费。费。表表81判定表判定表规规则则12345固定价格方式固定价格方式浮动价格方式浮动价格方式耗电耗电100kW.h耗电耗电100kW.hTFTFTFFTFTTFFTFTFF收取最低标准费收取最低标准费按价格表按价格表A收费收费按价格表按价格表B收费收费其他处理其他处理条件条件动作动作【例例8.2】判定树判定树 耗电耗电100kWh 收取最低标准费收取最低标准费 固定方式固定方式 耗电耗电100kWh 按价格表按价格表A收费收费 耗电耗

602、电100kWh 按价格表按价格表A收费收费耗电收费耗电收费 浮动方式浮动方式 耗电耗电100kWh 按价格表按价格表B收费收费 其他方式其他方式 其他处理其他处理图图825 用判定树表示计算耗电收费的算法用判定树表示计算耗电收费的算法 8.2.3判定表与判定树判定表与判定树判定树的优点:形式简单,直观明了,易于判定树的优点:形式简单,直观明了,易于掌握。掌握。判定树的缺点:判定树的缺点:存在着数据冗余的问题,相同的数据元素往存在着数据冗余的问题,相同的数据元素往往要重复多次,而且越接近树的叶端重复的往要重复多次,而且越接近树的叶端重复的次数越多。次数越多。 判定树要求对条件进行层次划分,若条件

603、判定树要求对条件进行层次划分,若条件所处层次不对,可能会导致增加判定树的复所处层次不对,可能会导致增加判定树的复杂性。杂性。8.2.4过程设计语言(过程设计语言(PDL)PDL(Procedure Design Language)也称)也称为结构英语或伪码,是所有正文形式的为结构英语或伪码,是所有正文形式的过程设计工具的统称。过程设计工具的统称。PDL经常表现为一种经常表现为一种“混杂混杂”的形式,允的形式,允许自然语言(如英语)的词汇与某种结许自然语言(如英语)的词汇与某种结构化程序设计语言(如构化程序设计语言(如Pascal、C、Ada等)等)的语法结构交织在一起的语法结构交织在一起8.2

604、.4过程设计语言(过程设计语言(PDL)PDL应具有下述特点:应具有下述特点: 1关键字采用固定语法并支持结构化构件、关键字采用固定语法并支持结构化构件、数据说明机制和模块化;数据说明机制和模块化; 2处理部分采用自然语言描述;处理部分采用自然语言描述; 3允许说明简单(标量、数组等)和复杂允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构;(链表、树等)的数据结构; 4子程序的定义与调用规则不受具体接口方子程序的定义与调用规则不受具体接口方式的影响。式的影响。8.2.4过程设计语言(过程设计语言(PDL)考察一个考察一个PDL的原型,它可以建立在任意一个通的原型,它可以建立在任意一个

605、通用的结构化程序设计语言之上。基本成分包括:用的结构化程序设计语言之上。基本成分包括:子程序定义、界面描述、数据说明、块结构、分子程序定义、界面描述、数据说明、块结构、分支结构、循环结构和支结构、循环结构和I/O结构。结构。数据说明的形式为:数据说明的形式为: TYPE IS 其中:其中:局部变量或全局变量;局部变量或全局变量;某个特定关键字(例如,某个特定关键字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);等);说明此处定义的变量在该过程或整说明此处定义的变量在该过程或整个程序中应如何使用。个程序中应如何使用。8.2.4过程设计语言(过程设计语言(PDL)可

606、进行抽象数据类型的定义,例如可进行抽象数据类型的定义,例如 :TYPE table_1 IS INSTACE OF symbol_table 而而symbol_table在另一处已定义如下:在另一处已定义如下:TYPE symbol_table IS STRUCTURE DEFINED8.2.4过程设计语言(过程设计语言(PDL)该该PDL的的块块结结构构描描述述一一个个过过程程元元素素,即即一一个个块块内的所有语句将作为一个整体执行,形式为内的所有语句将作为一个整体执行,形式为 BEGIN END该该PDL的的分分支支结结构构有有ifthenelse和和case两两种种形形式式,分别为分别为

607、 IF THEN ELSE ENDIF8.2.4过程设计语言(过程设计语言(PDL)CASE OF WHEN SELECT WHEN SELECT WHEN SELECT DEFAULT:ENDCASE8.2.4过程设计语言(过程设计语言(PDL)循环结构包括三类,表达形式分别为循环结构包括三类,表达形式分别为 :DO WHILE ENDWHILEREPEAT UNTIL ENDREPEATDOFOR = ENDFOR8.2.4过程设计语言(过程设计语言(PDL)此此PDL还提供了还提供了NEXT和和EXIT两种语句:两种语句: EXIT语句,退出本层循环;语句,退出本层循环; NEXT语句强

608、迫本次循环结束,新一轮循环开语句强迫本次循环结束,新一轮循环开始。始。在该在该PDL中,子程序说明为:中,子程序说明为: PROCEDURE INTERFACE END 其中属性表指明该子程序的引用特性(比如,是其中属性表指明该子程序的引用特性(比如,是INTERNAL还是还是EXTERNAL模式)和其他依赖于实现模式)和其他依赖于实现(即程序设计语言)的特性。(即程序设计语言)的特性。8.2.4过程设计语言(过程设计语言(PDL)输入输入/输出说明部分常用的形式有输出说明部分常用的形式有 READ/WRITE TO 或或 ASK ANSWER 后一种形式多用于人机交互部分的设计。后一种形式多

609、用于人机交互部分的设计。8.3设计规格说明与评审设计规格说明与评审软件设计阶段的输出主要是设计规格说明书:软件设计阶段的输出主要是设计规格说明书:第一节:描述与设计活动有关的各个方面,该节第一节:描述与设计活动有关的各个方面,该节中许多信息取自系统规格说明书和系统定义阶中许多信息取自系统规格说明书和系统定义阶段产生的其他文档。段产生的其他文档。第二节:具体指明引用信息的出处。第二节:具体指明引用信息的出处。第三节:设计描述,是概要设计的产物,此时设第三节:设计描述,是概要设计的产物,此时设计由信息驱动,即软件总体结构主要受数据流计由信息驱动,即软件总体结构主要受数据流程、数据结构的影响,需求分

610、析时产生的程、数据结构的影响,需求分析时产生的DFD或其他某种形式的数据表示将在这一节中进一或其他某种形式的数据表示将在这一节中进一步精化,用于确定软件结构。当信息流程确定步精化,用于确定软件结构。当信息流程确定后,界面亦可作为整个软件的一部分进行描述。后,界面亦可作为整个软件的一部分进行描述。8.3设计规格说明与评审设计规格说明与评审第四、五两节是概要设计向详细设计过渡后形成的。第四、五两节是概要设计向详细设计过渡后形成的。第四节:模块指软件中可单独编址的部件,如函数和第四节:模块指软件中可单独编址的部件,如函数和过程,最初用自然语言描述它们的功能,随后采用过程,最初用自然语言描述它们的功能

611、,随后采用某种过程设计工具将这些自然语言描述转换为结构某种过程设计工具将这些自然语言描述转换为结构化描述。化描述。第五节:主要描述数据组织结构,包括辅存的文件结第五节:主要描述数据组织结构,包括辅存的文件结构、全局数据(例如构、全局数据(例如FORTRAN公共区)的赋值以及公共区)的赋值以及这些文件与全局数据的交叉访问关系。这些文件与全局数据的交叉访问关系。8.3设计规格说明与评审设计规格说明与评审第六节:是与需求规格说明书的交叉访问表,根据交叉第六节:是与需求规格说明书的交叉访问表,根据交叉访问表可断定设计是否满足所有需求,这对于完成某访问表可断定设计是否满足所有需求,这对于完成某个具体需求

612、的模块来说十分重要。个具体需求的模块来说十分重要。第七节:是测试的初步计划。一旦软件结构和模块间界第七节:是测试的初步计划。一旦软件结构和模块间界面确定下来之后,即可制定模块单元测试和联调的计面确定下来之后,即可制定模块单元测试和联调的计划。某些场合,要求同时开发测试规格说明书与设计划。某些场合,要求同时开发测试规格说明书与设计规格说明书,此时第七节可从设计规格说明书中删去。规格说明书,此时第七节可从设计规格说明书中删去。第八节:将逐条说明各种限制和造成的影响。第八节:将逐条说明各种限制和造成的影响。第九、十两节:包括若干辅助数据,如从其他文档中节第九、十两节:包括若干辅助数据,如从其他文档中

613、节选的算法描述、候选的过程、表格化数据和其他相关选的算法描述、候选的过程、表格化数据和其他相关信息,这些信息是对设计的一种特殊注释信息,这些信息是对设计的一种特殊注释最后开发一基本操作规格说明或安装手册作为附录。最后开发一基本操作规格说明或安装手册作为附录。设计规格说明书示例设计规格说明书示例.作用范围作用范围 A. 系统目标系统目标 B. 硬件、软件和人机界面硬件、软件和人机界面 C. 主要的系统功能主要的系统功能 D. 外部数据库定义外部数据库定义 E. 主要的设计约束和限制主要的设计约束和限制 .文档文档 A. 现有的软件文档现有的软件文档 B. 系统文档系统文档 C. 卖主(硬件的和软

614、件的)的有关文档卖主(硬件的和软件的)的有关文档 D. 技术参考书技术参考书设计规格说明书示例设计规格说明书示例.设计描述设计描述 A.数据描述数据描述 1.数据流复审数据流复审 2.数据结构复审数据结构复审 B. 导出的程序结构导出的程序结构 C. 结构之间的界面结构之间的界面设计规格说明书示例设计规格说明书示例. 模块描述;针对每个模块给出模块描述;针对每个模块给出 A. 处理过程陈述处理过程陈述 B. 接口描述接口描述 C. 设计语言(或其他形式)描述设计语言(或其他形式)描述 D. 引用的模块引用的模块 E. 数据组织数据组织 F. 注释注释设计规格说明书示例设计规格说明书示例.文件结

615、构及全局数据文件结构及全局数据 A. 外部文件结构外部文件结构 1.逻辑结构逻辑结构 2.逻辑记录描述逻辑记录描述 3.访问方式访问方式 B. 全局数据全局数据 C. 文件与数据的交叉访问表文件与数据的交叉访问表.需求交叉访问矩阵需求交叉访问矩阵设计规格说明书示例设计规格说明书示例. 测试准备测试准备 A. 测试指南测试指南 B. 集成策略集成策略 C. 特殊考虑特殊考虑. 装配装配 A. 特殊的程序覆盖要求特殊的程序覆盖要求 B. 转换方面的考虑转换方面的考虑. 特别注释特别注释. 附录附录设计规格说明的评审设计规格说明的评审为了确保文档的质量,还必须对设计文档进行为了确保文档的质量,还必须

616、对设计文档进行评审。评审的目的在于及早发现设计中的缺陷评审。评审的目的在于及早发现设计中的缺陷和错误。和错误。评审包括软件总体结构、数据结构、结构之间评审包括软件总体结构、数据结构、结构之间的界面以及模块过程细节四个方面,重点考虑:的界面以及模块过程细节四个方面,重点考虑:软件结构能否满足需求?结构的形态是否合理软件结构能否满足需求?结构的形态是否合理?层次是否清晰?模块的划分是否遵循模块化?层次是否清晰?模块的划分是否遵循模块化和信息隐蔽的思想?系统的人机界面、各模块和信息隐蔽的思想?系统的人机界面、各模块的接口以及出错处理是否恰当?模块的设计能的接口以及出错处理是否恰当?模块的设计能否满足

617、功能与性能要求?选择的算法与数据结否满足功能与性能要求?选择的算法与数据结构是否合理,能否适应编程语言,等等。构是否合理,能否适应编程语言,等等。设计规格说明的评审设计规格说明的评审评审分正式与非正式的两种方式。评审分正式与非正式的两种方式。v正式评审除软件开发人员外,还邀请用户代表和领域正式评审除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式,与会者有备而来(即专家参加,通常采用答辩形式,与会者有备而来(即提前审阅了文档),设计人员在对设计方案详细说明提前审阅了文档),设计人员在对设计方案详细说明后,答复与会者的问题并记下各种重要的评审意见。后,答复与会者的问题并记下各种重要

618、的评审意见。v非正式评审多少有些同行切磋的性质,不拘时间,不非正式评审多少有些同行切磋的性质,不拘时间,不拘形式。拘形式。需求阶段使用的需求阶段使用的“走查走查”法同样适用于设计评审,此法同样适用于设计评审,此时由一名设计人员带领到会的同事逐行审阅文档,记时由一名设计人员带领到会的同事逐行审阅文档,记录发现的问题。录发现的问题。 评审应对事不对人,防止把评审变为质询或辩论。最评审应对事不对人,防止把评审变为质询或辩论。最后,对评审中提出的问题应详细记录。评审结束前,后,对评审中提出的问题应详细记录。评审结束前,还应对本次评审做出结论。还应对本次评审做出结论。课程名称:软件工程课程名称:软件工程

619、 第第15讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:第教学题目:第9章章 面向数据流的设计方法面向数据流的设计方法 9.1SD方法,方法, 9.2变换分析变换分析教学目的:掌握教学目的:掌握SD方法的基本概念,掌握变换分析方法的基本概念,掌握变换分析 方法。方法。 教学重点:教学重点: SD方法、变换分析方法。方法、变换分析方法。教学难点:变换分析方法。教学难点:变换分析方法。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:看书业:看书第第9章章 面向数据流的设计方法面向数据流的设计方法面向数据流的设计方法,即通常所说的结构设计法面向数据流的设计方法,即通常所说的

620、结构设计法(Structure Design,简称,简称SD方法),由方法),由Yourdon和和Constantine等人于等人于1974年提出的,与结构化分析年提出的,与结构化分析(SA)相衔接,根据对数据流的分析设计软件结构。)相衔接,根据对数据流的分析设计软件结构。本章所述技术用于软件的概要设计描述,包括模块、本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发的基础。界面和数据结构的定义,这是所有后续开发的基础。 SD方法对那些顺序处理信息且不含层次数据结构的系方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、统

621、最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用。当以及科学与工程方面的应用。当SD方法用于完全的数方法用于完全的数据处理时,即使系统中使用层次数据也同样行之有效。据处理时,即使系统中使用层次数据也同样行之有效。9.1SD方法的设计过程和有关概念方法的设计过程和有关概念SD方方法法能能方方便便地地将将数数据据流流图图转转换换为为软软件件结结构构,其其过过程分为五步:程分为五步: 1 确定信息流的类型;确定信息流的类型; 2 划定流界;划定流界; 3 将数据流图映射为程序结构;将数据流图映射为程序结构; 4 提取层次控制结构;提取层次控制结构; 5 通过设计复审和使用启发式策

622、略进通过设计复审和使用启发式策略进 一步精化所得到的结构。一步精化所得到的结构。1)变换流)变换流变换流变换流 在基本系统模型(即顶级数据在基本系统模型(即顶级数据流图)中信息通常以流图)中信息通常以“外部世界外部世界”所具所具有的形式进入系统,经过处理后又以这有的形式进入系统,经过处理后又以这种形式离开系统。种形式离开系统。输入流输入流外外部部表示表示内内部部表示表示信息信息时间时间图图9 1 1 信息流信息流输出流输出流变换流变换流1)变换流)变换流图图912 典型的变换流典型的变换流变换流的特点是:经过变换变换流的特点是:经过变换B的数据流一部分的数据流一部分先经过变换先经过变换C到达变

623、换到达变换E,然后另一部分经过变,然后另一部分经过变换换D到达到达E;即;即C和和D是顺序结构。是顺序结构。ABCDEF2)事务流)事务流事务流事务流单个数据项称为事务(单个数据项称为事务(transaction)沿)沿传入路径(也称接受通道)进入系统,由外部形式传入路径(也称接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。据项计值结果从若干动作路径中选定一条继续执行。可见它是一个选择结构。可见它是一个选择结构。事务中心事务中心TB事务事务CA图图9 1 3 事务流事务流图图91

624、4面向数据流面向数据流的设计的设计精化数据流图精化数据流图流的类型流的类型确定事务中心确定事务中心和各动作路径和各动作路径确定输入输出确定输入输出流界流界映射为事务结构映射为事务结构映射为变换结构映射为变换结构提取控制结构提取控制结构利用启发式策略利用启发式策略精化软件结构精化软件结构描述接口和全局描述接口和全局数据结构数据结构事务分析事务分析变换分析变换分析复审复审详细设计详细设计通过通过“变换变换”“事务事务”9.2变换分析变换分析下面以下面以“家庭保安系统家庭保安系统”的传感器监测的传感器监测子系统为例说明变换分析的各个步骤。子系统为例说明变换分析的各个步骤。 步骤一、复审基本系统模型步

625、骤一、复审基本系统模型 基本系统模型指顶级基本系统模型指顶级DFD和所有由外部和所有由外部提供的信息。这一设计步骤是对系统规提供的信息。这一设计步骤是对系统规格说明书和软件需求规格说明书进行评格说明书和软件需求规格说明书进行评估。这两个文档描述软件界面上信息的估。这两个文档描述软件界面上信息的流程和结构。流程和结构。 图图9 2 1 “家庭保安系统家庭保安系统”的顶级数据流图的顶级数据流图警报类别警报类别家庭保安家庭保安系统软件系统软件控制面板控制面板显示器显示器警报器警报器电话线电话线传感器传感器用户命令用户命令显示信息显示信息传感数据传感数据电话拨号音频电话拨号音频图图9 2 2 “家庭保

626、安系统家庭保安系统”的第一级的第一级DFD 电话拨号音频电话拨号音频配置数据配置数据配置配置 数据数据配置数据配置数据用户命用户命令处理令处理显示信息显示信息和状态和状态传感器传感器监测监测系统系统配置配置控制面板控制面板显示器显示器警报器警报器电话线电话线传感器传感器配置信息配置信息配置配置 命令命令启动启动/ 停止命令停止命令原口令原口令有效口令有效口令传感器信息传感器信息报警类别报警类别传感数据传感数据显示显示 信息信息用户命令用户命令口令口令启动启动/停止停止系统和状态系统和状态启动或启动或停止消息停止消息口令口令核对核对用用户户交交互互子子系系统统9.2变换分析变换分析步骤二、复审和

627、精化软件数据流图步骤二、复审和精化软件数据流图 这这一一步步主主要要是是对对软软件件需需求求规规格格说说明明书书中中的的分分析模型进行精化,直至获得足够详细的析模型进行精化,直至获得足够详细的DFD。v例例如如,由由“传传感感器器监监测测子子系系统统”的的第第一一级级(图图9 2 2的的局局部部)和和第第二二级级(图图9 2 3)DFD进进一一步步推推导导出出第第三三级级数数据据流流图图(图图9 2 4),此此时时,每每个个变变换换对对应应一一个个独独立立的的功功能能,可可以以用用一一个个具具有有较较高高内内聚聚度度的的模模块块实实现现,至至此此已已有有足足够够的的信信息息可可用用于于设设计计

628、“传传感感器器监监测测子子系系统统”的的程程序序结结构构,精化过程亦可结束。精化过程亦可结束。图图9 2 3 “传感器监测子系统传感器监测子系统”的第二级的第二级DFD 传感器信息传感器信息传感器标志传感器标志的类型和位置的类型和位置传感数据传感数据警报类别警报类别警报数据警报数据显示显示格式格式产生警产生警报信号报信号电话电话拨号拨号异常数据异常数据判别判别读取传感读取传感数据数据配配 置置 信信 息息配置数据配置数据传感器传感器标识类型标识类型电话号码电话号码电话拨号音频电话拨号音频图图9 2 4 “传感器监测子系统传感器监测子系统”的第三级的第三级DFD 配配 置置 信信 息息警报条件码

629、警报条件码传感器标志传感器标志定时信息定时信息传感数据传感数据电话号码电话号码对应的音频对应的音频电话拨电话拨号音频号音频传感器信息传感器信息号码表号码表电话号码电话号码读取传读取传感数据感数据获取响获取响应信息应信息建立警建立警报条件报条件选择电选择电话号码话号码连通电连通电话网话网产生拨产生拨号脉冲号脉冲产生警产生警报信号报信号格式化格式化显示显示产生产生显示显示传感器标志的传感器标志的类型和位置类型和位置格式化标志的格式化标志的类型和位置类型和位置置传感器标识置传感器标识警报数据警报数据警报类别警报类别配配 置置 数数 据据9.2变换分析变换分析步骤三、确定步骤三、确定DFD的特性,判定

630、它为变换流的特性,判定它为变换流还是事务流。还是事务流。v 以图以图9 2 4所示所示DFD为例,数据沿一个传入为例,数据沿一个传入路径进来,沿三个传出路径离开,没有明路径进来,沿三个传出路径离开,没有明显的事务中心,因此,该信息流应属变换显的事务中心,因此,该信息流应属变换流。流。步骤四、划定输入流和输出流的边界,孤步骤四、划定输入流和输出流的边界,孤立变换中心。立变换中心。9.2变换分析变换分析步骤五、执行步骤五、执行“一级分解一级分解”(first level factoring) 一级分解的目标是导出具有三个层次的程一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;底层模块执

631、行序结构,顶层为主控模块;底层模块执行输入、计算和输出功能;中层模块控制、输入、计算和输出功能;中层模块控制、协调底层的工作。协调底层的工作。9.2变换分析变换分析程程序序结结构构可可用用Yourdon结结构构图图表表示示。结结构构图图中中,方方框框代代表表模模块块,框框内内名名称称表表示示模模块块的的功功能能;方方框框之之间间的的有有向向边边(无无二二义义时时也也可可用用无无向向边边)表表示示模模块块间间的的调调用用关关系系。调调用用模模块块上上无无标标志志表表示示顺顺序序调调用用:从从左左至至右右;菱菱形形表表示示选选择择调调用用;弧弧形形箭箭头头表表示示循循环环调调用用。但但本本书书后后

632、面除了顺序调用外,并没有遵循这些规定。面除了顺序调用外,并没有遵循这些规定。acbacbab a) 顺序调用顺序调用 b) 选择调用选择调用 c) 循环调用循环调用9.2变换分析变换分析图图9 2 5所所示示的的结结构构图图对对应应于于一一级级分分解解的的上上两两层层模模块块,即即主主控控模模块块和和下下面面几几个个中中层层控控制模块:制模块: 输入流控制模块,接收所有输入数据;输入流控制模块,接收所有输入数据; 变换流控制模块,对内部形式数据进行加变换流控制模块,对内部形式数据进行加工、处理;工、处理; 输出流控制模块,产生输出数据。输出流控制模块,产生输出数据。9.2变换分析变换分析图图9

633、 2 5 一级分解一级分解输入流输入流变换流变换流变换流变换流控制模块控制模块输入流输入流控制模块控制模块输出流输出流主控模块主控模块输出流输出流控制模块控制模块ABCDEFGH9.2变换分析变换分析图图9 2 5展示的是一个简单三叉结构,实展示的是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能际处理大型系统的复杂数据流时,可能需要多个模块对应图需要多个模块对应图925中一个模块的中一个模块的功能。功能。“一级分解一级分解”总的原则是,在完总的原则是,在完成控制功能并保持低耦合度、高内聚度成控制功能并保持低耦合度、高内聚度的前提下尽可能地减少模块的数量。的前提下尽可能地减少模块的数量。

634、“传感器监测子系统传感器监测子系统”一级分解如图一级分解如图9 2 6所示,其中控制模块的名字概括了所示,其中控制模块的名字概括了所有下属模块的功能。所有下属模块的功能。图图9 2 6 传感器监测子系统一级分解结果传感器监测子系统一级分解结果 警报条件控制模警报条件控制模块块传感器输入控制传感器输入控制模块模块主控模块主控模块警报输出控制模警报输出控制模块块配配 置置 信信 息息9.2变换分析变换分析步骤六、执行步骤六、执行“二级分解二级分解”。 二级分解的任务是把数据流图中每个处理二级分解的任务是把数据流图中每个处理框映射为结构图中的一个模块。其过程是框映射为结构图中的一个模块。其过程是从变

635、换中心的边界开始沿输入、输出通道从变换中心的边界开始沿输入、输出通道向外移动;从变换中心的输入向外移动;从变换中心的输入(出出)边界向外边界向外移动,把遇到的每个处理框映射为结构图移动,把遇到的每个处理框映射为结构图中相应控制模块下的一个模块。中相应控制模块下的一个模块。图图927 二级分解二级分解 输入流输入流变换流变换流输入流控制模输入流控制模块块输出流输出流主控模块主控模块ABCDEFGHBDAC变换流控制模变换流控制模块块输出流控制模块输出流控制模块EFGH9.2变换分析变换分析DFD的处理框与程序结构模块一一对应,的处理框与程序结构模块一一对应,但按照软件设计原则进行设计时,可能但按

636、照软件设计原则进行设计时,可能需要把几个处理框聚合为一个模块,或需要把几个处理框聚合为一个模块,或者把一个处理框裂变为几个模块。总之,者把一个处理框裂变为几个模块。总之,应根据应根据“良好良好”设计的标准,进行二级设计的标准,进行二级分解。分解。 二二级级分分解解后后得得到到的的仅仅仅仅是是程程序序结结构构的的“雏雏形形”(first cut),后后续续的的复复审审和和精精化化会反复修改。会反复修改。9.2变换分析变换分析程序结构的模块名已隐含了模块功能,但仍程序结构的模块名已隐含了模块功能,但仍有必要为每个模块写一个简要的处理说明,有必要为每个模块写一个简要的处理说明,它应当包括:它应当包括

637、: 1进出模块的信息(接口描述);进出模块的信息(接口描述); 2模块的局部信息;模块的局部信息; 3处理过程陈述,包括任务和主要的判处理过程陈述,包括任务和主要的判 断点的位置、条件;断点的位置、条件; 4对有关限制和一些专门特性的简要说对有关限制和一些专门特性的简要说 明(例如,文件明(例如,文件I/O,独立于硬件的,独立于硬件的 特性,特殊的实时要求等)。特性,特殊的实时要求等)。这些描述构成第一版设计规格说明书。这些描述构成第一版设计规格说明书。9.2变换分析变换分析步骤七、采用启发式设计策略,精化所得步骤七、采用启发式设计策略,精化所得程序结构雏形,改良软件质量程序结构雏形,改良软件

638、质量 对于程序结构的雏形,以对于程序结构的雏形,以“模块独立模块独立”为为指导思想,对模块进行整合或分解,旨在指导思想,对模块进行整合或分解,旨在追求高内聚、低耦合,以及易实现、易测追求高内聚、低耦合,以及易实现、易测试、易维护的软件结构。试、易维护的软件结构。图图928 结构的优化结构的优化输入流控制模块输入流控制模块主控模块主控模块BDAC变换流控制模块变换流控制模块输出流控制模块输出流控制模块EFGH输入流控制模块输入流控制模块主控模块主控模块BDACEFGH9.2变换分析变换分析上述七个设计步骤的目标是给出软件上述七个设计步骤的目标是给出软件的一个整体描述。的一个整体描述。一旦有了这样

639、一个描述,设计人员即一旦有了这样一个描述,设计人员即可从整体角度评价和精化软件的总体可从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能结构,此时修改所需耗费不多,却能大大提高软件质量。大大提高软件质量。课程名称:软件工程课程名称:软件工程 第第16讲讲班班 级:级:日日 期:期:教教 室:室:教学题目:教学题目:9.3事务分析,事务分析,9.4设计优化原则设计优化原则教学目的:掌握事务分析方法,理解设计优化原则。教学目的:掌握事务分析方法,理解设计优化原则。教学重点:事务分析方法。教学重点:事务分析方法。教学难点:事务分析方法。教学难点:事务分析方法。教教 具:多媒体教室、电子教

640、案具:多媒体教室、电子教案作作 业:习题业:习题79.3事务分析事务分析当数据流具有明显的事务特征时,即能找到一当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个事务中心,个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。采用事务分析法更为适宜。下面以下面以“家庭保安系统家庭保安系统”中中“用户交互子系统用户交互子系统”为例,说明事务分析法。为例,说明事务分析法。该子系统的第一级数据流图精化后得到如图该子系统的第一级数据流图精化后得到如图9 3 1所示第二级数据流图。图中所示第二级数据流图。图中“用户命令数用户命令数据据”流入系统后,沿三条动作路径之一离开系流

641、入系统后,沿三条动作路径之一离开系统,若将数据项统,若将数据项“命令类型命令类型”看作事务,该子看作事务,该子系统的信息流具有明显的事务特征。系统的信息流具有明显的事务特征。图图9 3 1 用户交互子系统的二级数据流图用户交互子系统的二级数据流图 无效口令无效口令启动启动/停止命停止命令令口令口令启动启动/停止停止消息消息配置数据配置数据配置数据配置数据配置命令配置命令显示信息显示信息“再再试试”信信息息读取读取用户用户命令命令启动启动命令命令处理处理启动启动/停止停止系统系统产生无效产生无效的信息的信息读取读取系统系统数据数据读取读取配置配置文件文件读取读取口令口令显示信息显示信息和状态和状

642、态比较口令比较口令与文件与文件配配 置置 信信 息息用户命令数据用户命令数据系统参数和数据系统参数和数据原始配置项原始配置项格式化的格式化的配置数据配置数据命令类型命令类型确认口令确认口令四位数四位数有效口令有效口令9.3事务分析事务分析事务分析法可概括为七个步骤:事务分析法可概括为七个步骤:步骤一、复审基本系统模型;步骤一、复审基本系统模型;步骤二、复审并精化软件数据流图;步骤二、复审并精化软件数据流图;步骤三、确定数据流图的特征;步骤三、确定数据流图的特征;步骤四、指出事务中心,确定接收部分步骤四、指出事务中心,确定接收部分 和发送部分的流界;和发送部分的流界;步骤五、映射出系统上层模块结

643、构;步骤五、映射出系统上层模块结构;图图932 映射系统上层结构模块映射系统上层结构模块9861254371011事务中心事务中心接收部分接收部分发送部分发送部分SYSTEM输入输入 1散转散转 2SUBSYS1SUBSYS2SUBSYS39.3事务分析事务分析步骤六、分解并精化事务结构以及每条动步骤六、分解并精化事务结构以及每条动作路径所对应的结构。这些子结构是根据作路径所对应的结构。这些子结构是根据流经每一动作路径的数据流特征,采用本流经每一动作路径的数据流特征,采用本节或上节所述设计步骤逐一导出的。节或上节所述设计步骤逐一导出的。图图933 设计系统下层模块结构设计系统下层模块结构986

644、1254371011事务中心事务中心接收部分接收部分发送部分发送部分SUBSYS2 710411输入控制输入控制变换控制变换控制输出控制输出控制9.3事务分析事务分析图图934 将模块结构组合,得到程序结构雏形将模块结构组合,得到程序结构雏形SYSTEM输入输入 1散转散转 2SUBSYS1SUBSYS2SUBSYS3 710411输入控制输入控制变换控制变换控制输出控制输出控制365899.3事务分析事务分析步骤七、使用启发式设计策略,精化所步骤七、使用启发式设计策略,精化所得程序结构雏形,改良软件质量。这一得程序结构雏形,改良软件质量。这一步骤与变换分析法相同。步骤与变换分析法相同。SYS

645、TEM输入输入 1散转散转 2SUBSYS2 710411365899.4设计优化及原则设计优化及原则9.4.1 启发式设计策略启发式设计策略 1调整模块的功能和规模,降低耦合度,提高内聚调整模块的功能和规模,降低耦合度,提高内聚度。度。若在几个模块中发现了共有的子功能,一般应将若在几个模块中发现了共有的子功能,一般应将此子功能独立出来作为一个模块,以提高单个模此子功能独立出来作为一个模块,以提高单个模块的内聚度。合并模块通常是为了减少控制信息块的内聚度。合并模块通常是为了减少控制信息的传递以及对全程数据的引用,同时降低接口的的传递以及对全程数据的引用,同时降低接口的复杂性。复杂性。 模块的规

646、模没有固定的要求。以保持模块的独立模块的规模没有固定的要求。以保持模块的独立性为原则。一般而言,模块规模以一页左右为宜性为原则。一般而言,模块规模以一页左右为宜(高级语言在(高级语言在75个语句左右)。个语句左右)。9.4.1启发式设计策略启发式设计策略2调整软件结构的深度、宽度、扇出和扇入调整软件结构的深度、宽度、扇出和扇入数目,改善软件结构性能。数目,改善软件结构性能。经验表明,设计良好的软件结构通常顶层经验表明,设计良好的软件结构通常顶层扇出较高,中层扇出较低,底层又高扇入扇出较高,中层扇出较低,底层又高扇入到公共的实用模块中去。到公共的实用模块中去。 图图9 4 1 应追求与避免的程序

647、结构应追求与避免的程序结构 应追求的结构应追求的结构应避免的结构应避免的结构9.4.1启发式设计策略启发式设计策略9.4.1启发式设计策略启发式设计策略3改造程序结构,使任一模块的作用域改造程序结构,使任一模块的作用域 在其控制域之内。在其控制域之内。判定判定受受F中判定的影中判定的影响响ACFEGHDB违背第三条原则违背第三条原则满足第三条原则满足第三条原则ADCEFHGB图图9 4 2 作用域与控制域作用域与控制域 9.4.1启发式设计策略启发式设计策略4分析模块之间的接口信息,降低界面分析模块之间的接口信息,降低界面 的复杂性和冗余程度,提高协调性。的复杂性和冗余程度,提高协调性。 界界

648、面面复复杂杂是是引引起起软软件件错错误误的的一一个个基基本本因因素素,界界面面上上传传递递的的数数据据应应尽尽可可能能简简单单并并与与模模块块的的功功能能相相协协调调,界界面面不不协协调调(即即在在同同一一个个参参数数表表内内或或以以其其他他某某种种方方式式传传递递不不甚甚相相关关的一堆数据)本身就是模块低内聚的表征。的一堆数据)本身就是模块低内聚的表征。9.4.1启发式设计策略启发式设计策略5模块功能应该可预言,避免对模块施加模块功能应该可预言,避免对模块施加过多限制。过多限制。 模块功能可预言指,只要模块的输入数模块功能可预言指,只要模块的输入数据相同,其运行产生的输出必然相同,据相同,其

649、运行产生的输出必然相同,也就是可以依据其输入数据预测模块的也就是可以依据其输入数据预测模块的输出结果。此外,如果设计时对模块中输出结果。此外,如果设计时对模块中局部数据的体积,控制流程的选择及外局部数据的体积,控制流程的选择及外部接口方式等诸因素限制过多,则以后部接口方式等诸因素限制过多,则以后为去掉这些限制要增加维护开销。为去掉这些限制要增加维护开销。9.4.1启发式设计策略启发式设计策略6. 改造程序结构,追求单入口单出口的模块。改造程序结构,追求单入口单出口的模块。7. 为满足设计或可移植性的要求,把某些软为满足设计或可移植性的要求,把某些软 件用包(件用包(package)的形式封装起

650、来。)的形式封装起来。软软件件设设计计常常常常附附带带一一些些特特殊殊限限制制,例例如如,要要求求程程序序采采用用覆覆盖盖技技术术。此此时时,根根据据模模块块重重要要的的程程度度、被被访访问问的的频频率率及及两两次次引引用用的的间间隔隔等等因因素素对对模块分组。模块分组。此此 外外 , 程程 序序 中中 那那 些些 供供 选选 择择 的的 或或 “单单 调调”(one shot)的的模模块块应应单单独独存存在在,以以便便高高效效地加载。地加载。辅助文档辅助文档获获得得程程序序结结构构后后,必必须须开开发发一一系系列列辅辅助助文文档档,作作为为软软件件总总体体设设计计的的组组成成部部分分。主要工

651、作包括:主要工作包括:1)陈述每个模块的处理过程;)陈述每个模块的处理过程;2)描述每个模块的界面;)描述每个模块的界面;3)根据数据字典定义数据结构;)根据数据字典定义数据结构;4)综述设计中所有限制和约束;)综述设计中所有限制和约束;5)对概要设计进行复审;)对概要设计进行复审;6)对设计进行优化。)对设计进行优化。9.4.2设计优化原则设计优化原则我我们们努努力力追追求求的的设设计计应应该该是是既既满满足足功功能能和和性性能能的的要要求求,又又符符合合一一般般软软件件设设计计原原理理和和上上述述种种种种启发式设计原则。启发式设计原则。对对软软件件结结构构的的修修改改越越早早越越好好。必必

652、要要时时,可可以以并并行行地地开开发发若若干干个个软软件件结结构构,通通过过评评比比,求求得得“最佳最佳”结果。结果。简简洁洁的的程程序序结结构构容容易易测测试试、容容易易维维护护,应应该该使使用用尽尽可可能能少少的的模模块块;只只要要满满足足信信息息要要求求,应应该该使用尽可能简单的数据结构。使用尽可能简单的数据结构。结结构构优优化化是是一一个个精精益益求求精精的的过过程程。优优化化过过程程可可以以在在设设计计的的早早期期,甚甚至至要要延延续续到到详详细细设设计计乃乃至至编码阶段。编码阶段。9.4.2设计优化原则设计优化原则对时间有特殊要求的软件,应根据普遍存在的对时间有特殊要求的软件,应根

653、据普遍存在的“百百分之二十规则分之二十规则”(即(即20%的代码占用的代码占用80%的处理时间,的处理时间,80%的错误出自的错误出自20%的代码)采用下述对策:的代码)采用下述对策:1在不考虑时、空耗费的情况下,设计并精化软在不考虑时、空耗费的情况下,设计并精化软 件结构;件结构;2借用借用CASE工具模拟分析运行时的性能,定位出工具模拟分析运行时的性能,定位出 低效的部分,加以改进;低效的部分,加以改进;3详细设计时对最耗时的模块,认真地设计它们的处详细设计时对最耗时的模块,认真地设计它们的处 理过程(算法),以便减少时间的开销;理过程(算法),以便减少时间的开销;4尽量用高级语言编程以利

654、于软件的优化;尽量用高级语言编程以利于软件的优化;5对大量占用计算机系统资源的模块必要时用低级语对大量占用计算机系统资源的模块必要时用低级语 言重新编码,以提高效率。言重新编码,以提高效率。设计优化的格言设计优化的格言“先让它干起来,再让它快起来先让它干起来,再让它快起来”。习题习题9.7 针对图针对图9 21所示的所示的DFD,采用事务分析,采用事务分析法导出程序结构,因其主体数据流为法导出程序结构,因其主体数据流为事务流(事务流(c为事务中心)。显然,区域为事务中心)。显然,区域为变换流;区域为变换流;区域为事务流,但其为事务流,但其各个子流为变换流;区域各个子流为变换流;区域为变换流。为

655、变换流。在你所设计的程序结构中,除了每个在你所设计的程序结构中,除了每个变换对应一个模块外,可能还需增加变换对应一个模块外,可能还需增加若干控制模块。若干控制模块。图图921edbacfghikjlmnopqrstuZADxyvwEFIJ区域区域区域区域区域区域BHG习题习题9.7解解:(:(仅供参考)仅供参考)(1)复审基本系统模型)复审基本系统模型(2)复审并精化软件数据流图)复审并精化软件数据流图(3)确定数据流的特征:由图)确定数据流的特征:由图921可见,可见,c为为事务中心,所以具有事务流的特征。事务中心,所以具有事务流的特征。(4)划分流界,孤立事务中心,如图。)划分流界,孤立事

656、务中心,如图。(5)执行一级分解,如图)执行一级分解,如图1所示所示习题习题9.7图图1 一级分解一级分解SYSTEMb散转散转 cadeSUBSUB SUB 习题习题9.7(6)将每条动作路径映射为对应的结构:)将每条动作路径映射为对应的结构:区域区域的程序结构:的程序结构:出控出控1gfhSUBljik区域区域的程序结构:的程序结构:散转散转mnqSUB 路路2rop出出3路路3stBD路路4入入4AZxyuvw散转散转mw控制控制uv区域区域的程序结构:的程序结构:SUB 出控出控3GFEHJI(7)组合得程序结构的雏形,精化雏形,如下图:)组合得程序结构的雏形,精化雏形,如下图:SYS

657、TEMb散转散转 cade出控出控1gfhSUBjilk散转散转mnq路路2opBD路路4入入4AZr出出3路路3stxyuvwSUB 出控出控3GFEHJIw控制控制uv课程名称:软件工程课程名称:软件工程 第第17讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第10章面向数据的设计方法章面向数据的设计方法 10.1面向数据设计的概念面向数据设计的概念 10.2Jackson系统开发方法系统开发方法教学目的:了解概念,掌握教学目的:了解概念,掌握Jackson系统开发方法。系统开发方法。教学重点:教学重点:JSP技术。技术。教学难点:教学难点: JSP技术。技术。教教

658、 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第10章章 面向数据的设计方法面向数据的设计方法面向数据的设计(面向数据的设计(data structuredoriented design)方法就是根据问题的数据结构定义一)方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程组映射,把问题的数据结构转换为问题解的程序结构。序结构。 面向数据流的设计来源于程序的模块化和功能面向数据流的设计来源于程序的模块化和功能分解的概念;分解的概念; 而面向数据结构的设计,则侧重于问题的数据而面向数据结构的设计,则侧重于问题的数据结构,把程序结构设计成与问题的数据结构一结

659、构,把程序结构设计成与问题的数据结构一致,不强调模块定义。模块只是设计过程的副致,不强调模块定义。模块只是设计过程的副产品,对于模块独立性原则也未过分强调。这产品,对于模块独立性原则也未过分强调。这种程序结构容易理解,也易于修改。种程序结构容易理解,也易于修改。10.1面向数据设计的概念面向数据设计的概念在许多应用领域中,信息有着清晰的层在许多应用领域中,信息有着清晰的层次结构,输入数据、存储信息(即数据次结构,输入数据、存储信息(即数据库)及输出数据都有各自的组织形式。库)及输出数据都有各自的组织形式。一般说来,顺序出现的数据可以用顺序一般说来,顺序出现的数据可以用顺序控制结构的程序处理;选

660、择出现的数据控制结构的程序处理;选择出现的数据用分支控制结构的程序处理;重复出现用分支控制结构的程序处理;重复出现的数据用循环控制结构的程序处理。的数据用循环控制结构的程序处理。因此可以根据数据的组织形式确定使用因此可以根据数据的组织形式确定使用和处理这些数据的程序的组织形式。和处理这些数据的程序的组织形式。10.1面向数据设计的概念面向数据设计的概念面向数据的设计就是根据数据结构的表示面向数据的设计就是根据数据结构的表示获得软件表示。获得软件表示。本章重点讨论:本章重点讨论:1. Jackson系统开发方法系统开发方法 Jackson System Development,简称,简称JSD2

661、. 基于结构化数据的系统开发方法基于结构化数据的系统开发方法 Data Structured System Development,简,简称称DSSD10.1面向数据设计的概念面向数据设计的概念JSD方法是方法是Jackson 于于1989年对软件设计中广年对软件设计中广为使用的为使用的Jackson结构程序设计(结构程序设计(Jackson Structured Programming,简称,简称JSP)方法的)方法的扩展。扩展。DSSD方法,也称为方法,也称为Warnier Orr方法,是对方法,是对Warnier程序逻辑构造(程序逻辑构造(Logical Construction of

662、Program,简称,简称LCP)方法的扩充,除了设)方法的扩充,除了设计能力以外,还加强了分析能力。计能力以外,还加强了分析能力。10.1面向数据设计的概念面向数据设计的概念面向数据设计方法一般都包括下列任务:面向数据设计方法一般都包括下列任务: 1确定数据结构特征;确定数据结构特征; 2用顺序、选择和重复三种基本形式表用顺序、选择和重复三种基本形式表示示 数据;数据; 3把数据结构表示映射为软件的控制结把数据结构表示映射为软件的控制结构;构; 4用与具体方法配套的设计指南进一步用与具体方法配套的设计指南进一步精精 化控制结构;化控制结构; 5开发软件的过程性描述。开发软件的过程性描述。10

663、.1面向数据设计的概念面向数据设计的概念JSD和和DSSD方法的软件总体结构设计与软方法的软件总体结构设计与软件过程性设计的分界并不明显,都能很件过程性设计的分界并不明显,都能很快地过渡到过程性描述。这也是易于理快地过渡到过程性描述。这也是易于理解和易于维护的重要表现之一。解和易于维护的重要表现之一。 JSD和和DSSD也是分析与设计一体化的也是分析与设计一体化的 ,本章侧重于讨论与设计有关的技术。面本章侧重于讨论与设计有关的技术。面向数据的设计方法,要求信息结构用层向数据的设计方法,要求信息结构用层次图表示,在软件需求规格说明中与信次图表示,在软件需求规格说明中与信息域的描述相对应。息域的描

664、述相对应。10.1面向数据设计的概念面向数据设计的概念面向数据的设计方法的适用场合面向数据的设计方法的适用场合 具有明显的层次信息结构的应用:具有明显的层次信息结构的应用: 企事业的信息管理系统;企事业的信息管理系统; 系统软件(如操作系统);系统软件(如操作系统); 科学与工程计算;科学与工程计算; 计算机辅助教学;计算机辅助教学; 组合问题求解等领域。组合问题求解等领域。例如:例如:CAD/CAE/CIM类应用软件。类应用软件。10.2Jackson系统开发方法系统开发方法用用JSD方法开发一个软件的步骤:方法开发一个软件的步骤: 1)标识实体与动作:用与面向对象方法类似的)标识实体与动作

665、:用与面向对象方法类似的分析技术识别出系统中的实体(包括人、对象、分析技术识别出系统中的实体(包括人、对象、产生或使用信息的组织)和动作(客观世界中产生或使用信息的组织)和动作(客观世界中影响系统实体的那些事件);影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它)生成实体结构图:针对每一实体,将影响它的所有动作按发生的时间顺序用的所有动作按发生的时间顺序用Jackson结构图结构图(Jackson diagrams)表示出来。为了描述时)表示出来。为了描述时间约束,同一动作必须出现在多张结构图中;间约束,同一动作必须出现在多张结构图中;用用JSD方法开发一个软件的步骤:方

666、法开发一个软件的步骤:3)初建系统模型:将实体和动作统一用一个过程模)初建系统模型:将实体和动作统一用一个过程模型表示,并定义该模型中的过程与客观世界中的过型表示,并定义该模型中的过程与客观世界中的过程之间的联系。所用描述工具为系统规格说明图程之间的联系。所用描述工具为系统规格说明图(System Specification Diagram,简称,简称SSD););4)扩充功能性过程:在过程模型中扩充交互型功能)扩充功能性过程:在过程模型中扩充交互型功能和信息型功能,分别产生内部输入信息和系统输出和信息型功能,分别产生内部输入信息和系统输出信息;信息;5)系统定时:确定实现必须满足的时间约束;

667、)系统定时:确定实现必须满足的时间约束;6)实现:确定系统中所有软硬件成分,形成一个完)实现:确定系统中所有软硬件成分,形成一个完整设计方案。整设计方案。 前三个步骤主要在需求分析阶段完成,后三步是前三个步骤主要在需求分析阶段完成,后三步是软件设计的任务。软件设计的任务。10.2.1JSD分析技术回顾分析技术回顾我们曾以大学校园内直达交通车系统我们曾以大学校园内直达交通车系统USS为例为例进行需求分析,结果得出进行需求分析,结果得出“交通车交通车”和和“按钮按钮”两实体及其动作对应的实体结构图如下图所两实体及其动作对应的实体结构图如下图所示。示。ShuttleShuttle* bodyStat

668、ion(i)Arrive(i)Leave(i)Arrive(1)ButtonPush*Leave(1)10.2.1JSD分析技术回顾分析技术回顾初建系统模型后,得到初建系统模型后,得到USS的系统规格说明图的系统规格说明图(图(图7 2 4)。其中后缀为)。其中后缀为“_0”的过程表示客的过程表示客观世界中的过程(或外部过程),后缀为观世界中的过程(或外部过程),后缀为“_1”的过程表示系统模型内的过程(或模型的过程表示系统模型内的过程(或模型过程)。过程)。 图图724 USS的系统规格说明图的系统规格说明图Button 1DSShuttle 0Shuttle 1SV数据流联系数据流联系Bu

669、tton 0状态向量联系状态向量联系10.2.1JSD分析技术回顾分析技术回顾将实体结构图与初建系统模型(系统规将实体结构图与初建系统模型(系统规格说明图)综合起来,可导出目标软件格说明图)综合起来,可导出目标软件系统中每个过程内部细节的结构正文表系统中每个过程内部细节的结构正文表示,如示,如6.2.3节过程节过程BUTTON_1和和SHUTTLE_1所描述。所描述。上述结构正文也可对应地用上述结构正文也可对应地用Jackson结构结构图表示。图图表示。图6 2 5是与模型过程是与模型过程SHUTTLE_1的结构正文对应的的结构正文对应的Jackson结结构图。构图。图图6 2 5 对应于结构

670、正文的结构图对应于结构正文的结构图Shuttle 1Station(i)*Arrive(1)Leave(1)Shuttle body1TRANSit body1wait body1Transit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit bodywait bodyWait(i)*10.2.2扩充功能性过程扩充功能性过程这一步骤以初建系统模型为基础,通过数据流和这一步骤以初建系统模型为基础,通过数据流和状态向量两种方式将新定义的功能性过程与原有状态向量两种方式将新定义的功能性过程与原有的模型过程联系起来。具体考虑两类功能:的模型过程联系起来。具

671、体考虑两类功能: 1信息型功能(信息型功能(information function):从模型):从模型过程产生的数据流和状态向量中提取信息并生成过程产生的数据流和状态向量中提取信息并生成输出信息。嵌入型功能只需在原有模型过程的结输出信息。嵌入型功能只需在原有模型过程的结构正文中插入一些操作;构正文中插入一些操作; 2交互型功能(交互型功能(interactive function):监视模型):监视模型过程的状态向量,在输出结果的同时产生内部输过程的状态向量,在输出结果的同时产生内部输入信息,反过来影响模型化过程的动作。入信息,反过来影响模型化过程的动作。图图10 2 1 两类功能性过程与系

672、统模型的关系两类功能性过程与系统模型的关系外部过程外部过程系统模型系统模型信息型信息型功能过程功能过程交互型交互型功能过程功能过程客观世界客观世界系统系统10.2.2扩充功能性过程扩充功能性过程假设在交通车上有一块发光板,专门显示车到站假设在交通车上有一块发光板,专门显示车到站的信息,发光板的信息,发光板“亮亮”说明车到站,说明车到站,“暗暗”说明说明车离开。此板或亮或暗受车离开。此板或亮或暗受LON(i)、)、LOFF(i)两)两命令的控制。在过程命令的控制。在过程SHUTTLE_1中可嵌入一个新中可嵌入一个新功能:当交通车到达站(功能:当交通车到达站(i)时,发出命令)时,发出命令LON(

673、i);离开站();离开站(i)时,发出命令)时,发出命令LOFF(i)。)。交通车在两站之间往返运行过程中,输出交通车在两站之间往返运行过程中,输出“开关开关发光板发光板”的命令数据流,图的命令数据流,图10 2 2为增加这一功为增加这一功能后的能后的SSD,结构正文修改为:,结构正文修改为:10.2.2扩充功能性过程扩充功能性过程图图10 2 2 修改后的修改后的SSDLAMPCMDSLamp commandsButton 0BDSVButton 1Shuttle 0Shuttle 1LAMPCMDSSHUTTLE_1 seq LON(1) /* 控制发光板控制发光板“亮亮”,说,说 明明交

674、交通通车车正正停停在站在站1上上 * */ read 状态向量状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控交通车即将离站;控 制制发发光光板板“暗暗” *” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量状态向量 TRANSIT_BODY1 endSHUTTLE_BODY1 itr STATION seq ARRIVE(i) LON(i) /* 交通车已停靠站(交通车已停靠站(i) * */ WAIT_BOD

675、Y itr while Wait(i) read 状态向量状态向量 WAIT_BODY end LOFF(i) /* 交通车将离开站(交通车将离开站(i) * */ LEAVE(i) TRANSIT_BODY itr while Transit(i) read 状态向量状态向量 TRANSIT_BODY end STATION end SHUTTL_BODY1 end ARRIVE(1)SHUTTL_1 end10.2.2扩充功能性过程扩充功能性过程第二个功能是产生关于启动(第二个功能是产生关于启动(START)和关闭)和关闭(STOP)发动机的命令,以此控制交通车的)发动机的命令,以此控制交

676、通车的运行。下达运行。下达STOP命令的条件是,传感器显示车命令的条件是,传感器显示车已到站,而下达已到站,而下达START 命令的条件是乘客压下命令的条件是乘客压下按钮招呼交通车并恰好交通车在某个站上等待。按钮招呼交通车并恰好交通车在某个站上等待。为此引入一个功能性过程为此引入一个功能性过程mcontrol,它从,它从SHUTTLE_1和和BUTTON_2两过程接收数据,适时两过程接收数据,适时地发出地发出START和和STOP两种命令。两种命令。过程过程SHUTTLE_1与过程与过程mcontrol之间用数据流之间用数据流“S1D”连接。因此连接。因此SHUTTLE_1的结构正文进一的结构

677、正文进一步修改为:步修改为:SHUTTLE_1 seq LON(1) read 状态向量状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量状态向量 WAIT_BODY1 end LOFF(1) LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量状态向量 TRANSIT_BODY1 end SHUTTLE_BODY1 itr STATION seq ARRIVE(i) write arrive to S1D /* 向向mcontrol发送数据流,发送数据流, 说明车已到站(说明车已到站(i)* */ LO

678、N(i) WAIT_BODY itr while Wait(i) read 状态向量状态向量 WAIT_BODY end LOFF(i) LEAVE(i) TRANSIT_BODY itr while Transit(i) read 状态向量状态向量 TRANSIT_BODY end STATION end SHUTTLE_BODY1 end ARRIVE(1) write arrive to S1D /* 发送数据流,说明车已到站发送数据流,说明车已到站1 */ SHUTTLE_1 end10.2.2扩充功能性过程扩充功能性过程过程过程SHUTTLE_1执行执行“read状态向量状态向量”操

679、作和操作和过程过程mcontrol对对“S1D”的访问都必须有足够快的访问都必须有足够快的频率,否则交通车将不能及时停下来。的频率,否则交通车将不能及时停下来。 为完成为完成USS实例,还需进一步考虑实体实例,还需进一步考虑实体BUTTON模型。过程模型。过程BUTTON_1是对按钮动作的精确描是对按钮动作的精确描述(即每次压下都对应过程述(即每次压下都对应过程push的一次调用),的一次调用),实际上系统应把第一次压下按钮招呼交通车的实际上系统应把第一次压下按钮招呼交通车的动作与一次运行未开始之前乘客压下按钮招呼动作与一次运行未开始之前乘客压下按钮招呼交通车的请求区分开来。用已有实体无法描述

680、交通车的请求区分开来。用已有实体无法描述和区分动作之间的时间约束,常常引入额外的和区分动作之间的时间约束,常常引入额外的实体实体为此设计过程为此设计过程BUTTON_2,结构图如图,结构图如图10 2 3所示所示图图10 2 3 button 2的结构图的结构图Button 2Push group*ExtraArrival bodyExtrapush bodyRequestpushArrival Extra Arrival*Extra push*10.2.2扩充功能性过程扩充功能性过程功能性过程功能性过程mcontrol既负责检查既负责检查BUTTON_2的状态向量的状态向量“B2V”,确定是

681、否有未满足的,确定是否有未满足的请求,又负责把从请求,又负责把从SHUTTLE_1处(处(S1D)获)获取的信息(即交通车已到达发出请求的车取的信息(即交通车已到达发出请求的车站)传递给站)传递给BUTTON_2(MBD流)。在此定流)。在此定义了一个交互型功能。义了一个交互型功能。 BUTTON_2的结构正文描述如下:的结构正文描述如下:BUTTON_2 seq request:=no /* 置初值置初值 * */ read MBD and B1D /* 检查是否有未满足请求和交检查是否有未满足请求和交 通通车是否停在站上车是否停在站上 * */ BUTTON_BODY itr PUSH_G

682、ROUP seq EXTRA_AR_BODY itr while (ARRIVAL) /* 交通车已靠站但尚无请求,交通车已靠站但尚无请求, 或或既既无请求交通车也未靠站无请求交通车也未靠站 * */ read MBD and B1D EXTRA_AR_BODY end RQ_PUSH seq /* 首次请求到达,置请求标志首次请求到达,置请求标志 * */ request:=yes read MBD and B1D RQ_PUSH endEXTRA_RQ_PUSH itr while (REQUEST) /* 因交通车尚未靠站,请求因交通车尚未靠站,请求 暂暂 不不 满满足,循环等待足,循环

683、等待 * */ read MBD and B1D EXTRA_RQ_PUSH end ARRIVAL seq/* 请求满足,清请求标志请求满足,清请求标志 * */ request:=no read MBD and B1D ARRIVAL end PUSH GROUP end BUTTON_BODY end BUTTON_2 end10.2.2扩充功能性过程扩充功能性过程图图10 2 4给出的系统规格说明图反映了在给出的系统规格说明图反映了在此步骤完成的所有工作。我们在此步骤完成的所有工作。我们在SHUTTLE_1中嵌入了一个功能,产生开、中嵌入了一个功能,产生开、关发光板的命令,增加了一个功

684、能性过关发光板的命令,增加了一个功能性过程程mcontrol,它除了负责完成,它除了负责完成BUTTON_2上的交互型功能外,还产生启动、关闭上的交互型功能外,还产生启动、关闭发动机的命令。至于发动机的命令。至于mcontrol过程的内部过程的内部结构可采用传统的结构可采用传统的JSP技术导出,关于技术导出,关于JSP技术我们将在技术我们将在10.2.4和和10.2.5节讨论。节讨论。图图10 2 4扩充功能扩充功能1和和2后的系统规格说明图后的系统规格说明图Button 0BDSVButton 1Shuttle 0Shuttle 1LAMPCMDSB1DButton 2S1DMBDMcont

685、rolB2VMOTORCMDS10.2.3施加时间约束施加时间约束经过前几个步骤,获得一个由若干顺序过程组成的经过前几个步骤,获得一个由若干顺序过程组成的系统,它们通过数据流或状态向量进行通信,但对系统,它们通过数据流或状态向量进行通信,但对这些处理过程的执行速度尚未考虑。所以,对于输这些处理过程的执行速度尚未考虑。所以,对于输出流,定义输出速度和更新频率;对于输入流,要出流,定义输出速度和更新频率;对于输入流,要求子系统保证及时收集所有输入信息并保持它们的求子系统保证及时收集所有输入信息并保持它们的到达顺序不变。到达顺序不变。 在在USS实例中,关于时间方面的约束包括:实例中,关于时间方面的

686、约束包括: 1停车命令允许的最大延迟时间;停车命令允许的最大延迟时间; 2开、关发光板命令的响应时间。开、关发光板命令的响应时间。目前在目前在JSD方法中,时间约束的描述仍采用非形式方法中,时间约束的描述仍采用非形式化的方式。一种解决办法是引入时间标志流(化的方式。一种解决办法是引入时间标志流(time marker stream)作为模型过程的输入,时间标志流)作为模型过程的输入,时间标志流由特定的时钟过程产生。由特定的时钟过程产生。10.2.4实现与实现与JSP技术技术实现是实现是JSD方法的最后一个步骤,它将系方法的最后一个步骤,它将系统功能说明配置到给定的软硬件环境上,统功能说明配置到

687、给定的软硬件环境上,并满足性能方面的约束。并满足性能方面的约束。这一步骤主要考虑:过程在多处理机上这一步骤主要考虑:过程在多处理机上的调度(的调度(scheduling)、根据)、根据SSD和和Jackson结构图进行过程变换结构图进行过程变换(transformation)、过程状态向量的)、过程状态向量的存储和访问(存储和访问(storage and access of state vectors)以及借助)以及借助JSP技术描述功能性过技术描述功能性过程。因篇幅所限,本节及下节仅讨论最程。因篇幅所限,本节及下节仅讨论最后一个问题。后一个问题。10.2.4实现与实现与JSP技术技术JSP技

688、术是一种详细设计技术,它由问题所固有技术是一种详细设计技术,它由问题所固有的数据结构导出过程的内部结构。所用的基本的数据结构导出过程的内部结构。所用的基本工具称为数据结构图,是工具称为数据结构图,是Jackson结构图的变种,结构图的变种,专门用于描述数据元素之间的逻辑关系。例如专门用于描述数据元素之间的逻辑关系。例如在图在图10 2 5中,数据集合中,数据集合A由若干个由若干个B结构结构(“*”“*”表示重复)组成,而每个表示重复)组成,而每个B由若干个由若干个C结构后跟一个结构后跟一个D结构组成(同级分叉表示顺序),结构组成(同级分叉表示顺序),D结构或为数据项结构或为数据项E或为或为F(

689、“”表示选择),这表示选择),这种层次信息结构的表示方法同样适用于输入、种层次信息结构的表示方法同样适用于输入、输出和数据库中的数据。输出和数据库中的数据。图图10 2 5 数据结构图数据结构图AB*C*DEF图图10 2 6 信用卡记帐系统信用卡记帐系统Outstanding balCNO主文件主文件YYYY 1749.30CNODATEAMTXXXX 10.17 25.30XXXX 10.27 108.20XXXX 10.30 65.40YYYY 10.13 158.00YYYY 10.28 307.90 支付文件支付文件支付记录支付记录*CNO分组分组*CNOCNO主文件主文件顾客记录顾

690、客记录*余款额余款额支付文件支付文件XXXX 2373.50 简化的信用卡付帐系统简化的信用卡付帐系统如图如图10 2 6所示。系统的输入是支付文件所示。系统的输入是支付文件和顾客主文件。和顾客主文件。支付文件的每个记录由顾客号(支付文件的每个记录由顾客号(CNO)、)、支付日期(支付日期(DATE)和支付金额()和支付金额(AMT)三个数据项组成,并假定已按顾客号预三个数据项组成,并假定已按顾客号预先分组。先分组。顾客主文件由顾客号(顾客主文件由顾客号(CNO)和余款额)和余款额(Outstanding bal)两项组成。两个文)两项组成。两个文件分别对应图件分别对应图1026中所示数据结构

691、图。中所示数据结构图。假设该系统输出报表如下图所示。假设该系统输出报表如下图所示。 Accounting Report CNO Date Amt Old bal New bal XXXX YYYY Grand tot图图10 2 7 系统输出报表所对应的数据结构图系统输出报表所对应的数据结构图记帐报表记帐报表情况汇总情况汇总顾客数据顾客数据总付款额总付款额总余额总余额CNO组组*CNO支付记录支付记录*付款总数付款总数平帐数据平帐数据原余额原余额现余额现余额10.2.5产生过程表示产生过程表示JSP方法通过综合、对照过程的输入方法通过综合、对照过程的输入/输出数据结构的层输出数据结构的层次关系

692、导出对应的过程性表示次关系导出对应的过程性表示程序。具体步骤如下:程序。具体步骤如下:1找出输入与输出数据结构中有对应关系的数据元素,找出输入与输出数据结构中有对应关系的数据元素,即有直接因果关系者,它们在程序中可一并处理。即有直接因果关系者,它们在程序中可一并处理。2依据下述三条规则从数据结构图导出依据下述三条规则从数据结构图导出Jackson结构图。结构图。 1)在)在Jackson结构图中,为有对应关系的每对数据元素结构图中,为有对应关系的每对数据元素 画一个处理框,该框所处层次取这两个数据元素画一个处理框,该框所处层次取这两个数据元素在在 各自数据结构图中层次较低者。各自数据结构图中层

693、次较低者。 2)参照输入数据结构图中剩余的每个数据元素所处层)参照输入数据结构图中剩余的每个数据元素所处层 次,在次,在Jackson结构图的相应层次上画一个处理框。结构图的相应层次上画一个处理框。 3)参照输出数据结构图中剩余的每个数据元素所处层)参照输出数据结构图中剩余的每个数据元素所处层 次,在次,在Jackson结构图的相应层次上画一个处理框。结构图的相应层次上画一个处理框。10.2.5产生过程表示产生过程表示3列出所有操作和条件(包括分支和循环条列出所有操作和条件(包括分支和循环条件),并把它们分配到件),并把它们分配到Jackson结构图中。结构图中。4根据根据Jackson结构图

694、,产生结构正文描述。结构图,产生结构正文描述。 将上述第将上述第1步骤用于信用卡付帐系统发现,输步骤用于信用卡付帐系统发现,输入数据结构入数据结构“支付文件支付文件”中的中的“CNO组组”、“支付记录支付记录”分别与输出数据结构中的分别与输出数据结构中的“CNO组组”、“支付记录支付记录”对应,输入数据结构对应,输入数据结构“顾顾客主文件客主文件”中的中的“顾客记录顾客记录”与输出数据结与输出数据结构中的构中的“CNO组组”对应。参照上述第对应。参照上述第2步骤得步骤得到该系统的结构图(图到该系统的结构图(图10 2 8)。)。图图10 2 8 导出导出Jackson结构图(程序结构)结构图(

695、程序结构)信用卡信用卡付帐系统付帐系统情况汇总情况汇总处理处理顾客数据顾客数据总付款额总付款额总余额总余额处理处理CNO组组*处理处理CNO处理处理支付记录支付记录*计算顾客计算顾客支付总额支付总额平帐数据平帐数据原余额原余额现余额现余额执行完执行完3、4两步骤后,该结构图中两步骤后,该结构图中“处理顾客数据处理顾客数据”一框对应的结构正文应一框对应的结构正文应为:为:PROCESS_CUST_DATA seq open PAY_FILE; open CNO_MASTER_FILE; PROCESS CNO_GROUP itr until eof:PAY_FILE; read PAY_FILE

696、; PROCESS_CNO; /* 读顾客总文件,找出原余额读顾客总文件,找出原余额 * */PROCESS_PAY_REC itr until end:CNO_GROUP; write report line; computer total payments; read PAY_FILE; end PROCESS_PAY_REC COMPUTE_CUST_TOTAL; COMPUTE_BALANCE seq PROCESS_OLD_BAL; COMPUTE_NEW_BAL; write report line; end COMPUTE_BALANCE end PROCESS_CNO_GROU

697、Pend PROCESS_CUST_DATA课程名称:软件工程课程名称:软件工程 第第18讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目:10.3 DSSD方法方法教学目的:掌握教学目的:掌握DSSD方法,了解复杂过程逻辑方法,了解复杂过程逻辑 的描述。的描述。教学重点:教学重点: DSSD方法。方法。教学难点:教学难点: DSSD方法。方法。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:习题业:习题410.3基于结构化数据的系统开发基于结构化数据的系统开发(DSSD)方法)方法DSSD需求分析阶段产生的需求规格说明,将作为设需求分析阶段产生的需求规格说明

698、,将作为设计过程的输入信息。设计过程的输出为设计规格说计过程的输入信息。设计过程的输出为设计规格说明,具体包括输出数据结构、过程描述和设计约束明,具体包括输出数据结构、过程描述和设计约束三方面内容。三方面内容。DSSD设计分为逻辑设计和物理设计两个步骤,逻辑设计分为逻辑设计和物理设计两个步骤,逻辑设计着重考虑软件的输出、界面及过程性表示,物设计着重考虑软件的输出、界面及过程性表示,物理设计则在逻辑设计的基础上考虑如何满足性能、理设计则在逻辑设计的基础上考虑如何满足性能、可维护性和其他一些设计约束。可维护性和其他一些设计约束。基本工具:基本工具:Warnier Orr图,既可描述程序结构,又图,

699、既可描述程序结构,又可描述数据结构。这里介绍一种简化的可描述数据结构。这里介绍一种简化的DSSD方法。方法。10.3.1DSSD设计步骤设计步骤DSSD的逻辑设计步骤主要有两个:的逻辑设计步骤主要有两个: 1推导输出数据的逻辑结构(推导输出数据的逻辑结构(Logical Output Structure,简称,简称LOS);); 2由由LOS导出处理过程的逻辑结构导出处理过程的逻辑结构 (Logical Process Structure,简称,简称LPS)。)。10.3.1DSSD设计步骤设计步骤按下述简化方法,按下述简化方法,LOS可分四步导出:可分四步导出: 1)从问题描述本身或其他相关

700、需求信息)从问题描述本身或其他相关需求信息 中找出所有不同的原子数据项中找出所有不同的原子数据项(即不(即不 可再分的数据项);可再分的数据项); 2)说明每个原子数据项的出现频率;)说明每个原子数据项的出现频率; 3)找出那些可再分的一般数据项;)找出那些可再分的一般数据项; 4)用)用WarnierOrr图表示图表示LOS。【例例10.1】产生如图产生如图1031所示的所示的“机器使机器使 用情况日报表用情况日报表”系统。系统。 Daily_Machine_Tool_Usage_Report Date:DATE Tool category Tool ID status NO.parts p

701、roduced Tool_CAT TID S NO_PARTS CATEGORY TOTAL PARTS: CAT_TOT_PARTS CATEGORY TOTAL PARTS: TOTAL PARTS PRODUCED THIS DATE: MANUF_TOTAL10.3.2推导输出数据的逻辑结构推导输出数据的逻辑结构输出数据结构表现为数据项的一种层次输出数据结构表现为数据项的一种层次结构。结构。按照按照LOS推导步骤:推导步骤:1)首先从问题描述(例)首先从问题描述(例10.1所给报表原型)所给报表原型)中找出原子数据项;中找出原子数据项;2)确定每个原子数据项出现的频率(图)确定每个原子

702、数据项出现的频率(图10 3 2)。)。图图10 3 2 原子数据项及出现频率原子数据项及出现频率原子数据项原子数据项频率频率细节细节HEADING(标题)(标题)DATE(日期)(日期)COLUME_HEAD(列标题)(列标题)TOOL_CAT(工具类名称)(工具类名称)TID(工具标志)(工具标志)S(状态)(状态)NO_PARTS(产品件数)(产品件数)SUB_TOTAL_HEAD(按类汇总小标题)(按类汇总小标题)CAT_TOT_PARTS(按类汇总)(按类汇总)TOTAL_HEAD(按目汇总标题)(按目汇总标题)MANUF_TOTAL(每日产品总计)(每日产品总计)1/报表报表1/报

703、表报表1/报表报表1/工具类工具类1/工具工具1/工具工具1/工具工具1/工具类工具类1/工具类工具类1/报表报表1/报表报表每日机器使用情况报表每日机器使用情况报表若干类,每类有若干项若干类,每类有若干项按类汇总按类汇总按日汇总按日汇总10.3.2推导输出数据的逻辑结构推导输出数据的逻辑结构3)找出一般数据项,有:)找出一般数据项,有: 报表(出现一次)、报表(出现一次)、 工具类(每报表出现工具类(每报表出现t次)、次)、 工具(每类出现工具(每类出现s次)。次)。4)用)用WarnierOrr图表示图表示LOS10.3.2推导输出数据的逻辑结构推导输出数据的逻辑结构图图10 3 3 LO

704、S的的Warnier Orr图示图示标题标题日期标题日期标题日期日期 工具类名称工具类名称 工具标识工具标识列标题列标题 工具工具 状态状态工具类工具类 (1,s) 产品件数产品件数 (1,t) 按类汇总小标题按类汇总小标题每日汇总标题每日汇总标题 按类汇总按类汇总每日产品总计每日产品总计生产生产日报表日报表10.3.3推导处理过程的逻辑结构推导处理过程的逻辑结构(LPS)LPS是软件的过程性表示,推导步骤如下:是软件的过程性表示,推导步骤如下:1)从)从LOS的的Warnier Orr图示中去掉所有原子数据项;图示中去掉所有原子数据项;生产生产日报表日报表图图10 3 4 去掉所有原子数据项

705、去掉所有原子数据项 工具工具 工具类工具类 (1,s) (1,t) 2)对每个一般数据项加上)对每个一般数据项加上“.BEGIN、.END”分隔符;分隔符;.BEGIN .BEGIN 工具工具 工具类工具类 (1,s) (1,t) .END.END生产生产日报表日报表3)定义所有初始、终止的指令或过程;)定义所有初始、终止的指令或过程;4)说明所有数值计算和非数值处理;)说明所有数值计算和非数值处理;.BEGIN 置置MANUF_TOTAL为为0 .BEGIN 置置CAT_TOTALPARTS为为0 工具类工具类 工具工具 (1,t) (1,s) 把把NO_PARTS加到加到 CAT_TOTA

706、L_PARTS上上 .END.END生产生产日报表日报表把把CAT_TOTAL_PARTS加到加到MANUF_TOTAL上上5)说明所有输出指令或过程;)说明所有输出指令或过程; 6)说明所有输入指令或过程。)说明所有输入指令或过程。图图10 3 6 完整的完整的LPS生生产产日日报报表表.BEGIN工具类工具类(1,t).END输出标题、日期标题、日期、列标题输出标题、日期标题、日期、列标题置置MANUF_TOTAL为为0取一条逻辑记录取一条逻辑记录.BEGIN工具工具(1,s).END输出输出TOOL_CAT置置CAT_TOTAL_PARTS为为0输出输出TID,S,NO_PARTS把把N

707、O_PARTS加到加到CAT_TOTAL_CAT上上取一条逻辑记录取一条逻辑记录输出输出SUB_TOTAL_HEAD把把CAT_TOTAL_PARTS加到加到MANUF_TOTAL上上输出输出CAT_TOTAL_PARTS输出输出TOTAL_HEAD输出输出MANUF_TOTAL图图10 3 6 完整的完整的LPS生生产产日日报报表表.BEGIN工具类工具类(1,t).END输出标题、日期标题、日期、列标题输出标题、日期标题、日期、列标题置置MANUF_TOTAL为为0取一逻辑记录取一逻辑记录.BEGIN工具工具(1,s).END输出输出TOOL_CAT置置CAT_TOTAL_PARTS为为0

708、输出输出TID,S,NO_PARTS把把NO_PARTS加到加到CAT_TOTAL_CAT上上取一条逻辑记录取一条逻辑记录输出输出SUB_TOTAL_HEAD把把CAT_TOTAL_PARTS加到加到MANUF_TOTAL上上输出输出CAT_TOTAL_PARTS输出输出TOTAL_HEAD输出输出MANUF_TOTAL10.3.4复杂过程逻辑的描述复杂过程逻辑的描述DSSD提供了一种复杂过程逻辑(提供了一种复杂过程逻辑(Complex Process Logic,简称,简称CPL)的工具。)的工具。 【例例11.2】假设某邮购系统按下面算法计算顾假设某邮购系统按下面算法计算顾客购物的总费用,

709、即货物本身的价格加上客购物的总费用,即货物本身的价格加上运费减去折头。按表运费减去折头。按表101计算运费,按表计算运费,按表102计算折头:计算折头:表表10-1表表101距离(英里)距离(英里)重量(磅)重量(磅)收费收费=10010010050500.01距离距离重量重量1.10重量重量0.02距离距离重量重量2.35重量重量货款总额(美元)货款总额(美元)折头率(折头率(%)100500且且100500012购购物物总总费费用用货款总额货款总额 + 运费运费 折头折头每种物品的费用每种物品的费用 + (1,i)单价单价 数量数量本地本地/?1 远程远程/?2轻轻/?3 重重/?40.0

710、1 距离距离重量重量1.10 重量重量轻轻/?3 重重/?40.02 距离距离重量重量2.35 重量重量货款总额货款总额 折头率折头率0% (/?5) 1% (/?6) 2% (/?7)10.3.4复杂过程逻辑的描述复杂过程逻辑的描述其中:其中:/?i分支条件或循环条件;分支条件或循环条件; +、算术运算符;算术运算符; 表示不可兼具的选择关表示不可兼具的选择关系。系。本例中:本例中:/?1距离距离100英里;英里;/?3 重量重量 50 磅;磅; /?5 货款总额货款总额100美元;美元;/?6 100美元美元=货款总额货款总额=500美元;美元;习习题题10.4 用用Jackson数据结构

711、图表示数据结构图表示Pascal文件结构:文件结构: type persons=record age: integer; sex: (male,female); case t of 1: factory; 2: office; 3: administration end; end; var thefile:file of persons;解:解:office record *age sex tthefile Administration Factory female male 课程名称:软件工程课程名称:软件工程 第第19讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第

712、11章章 面向对象的设计方法面向对象的设计方法教学目的:了解面向对象设计的概念和方法。教学目的:了解面向对象设计的概念和方法。教学重点:面向对象的设计方法。教学重点:面向对象的设计方法。教学难点:面向对象的设计方法。教学难点:面向对象的设计方法。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第11章章 面向对象的设计方法面向对象的设计方法面向对象设计是将面向对象分析所创建的面向对象设计是将面向对象分析所创建的分析模型进一步细化形成软件设计模型的分析模型进一步细化形成软件设计模型的过程。如果说,分析模型描述了系统需要过程。如果说,分析模型描述了系统需要完成的功能,在设计阶

713、段则描述了如何实完成的功能,在设计阶段则描述了如何实现分析阶段所定义的软件功能。现分析阶段所定义的软件功能。本章介绍面向对象设计的概念,并主要介本章介绍面向对象设计的概念,并主要介绍绍CoadYourdon的面向对象设计方法的细的面向对象设计方法的细节问题。节问题。11.1 面向对象设计的概念面向对象设计的概念面向对象分析的任务是解决系统面向对象分析的任务是解决系统“做什么做什么”的问的问题。而在面向对象设计阶段则着重完成题。而在面向对象设计阶段则着重完成“如何做如何做”的问题,也就是着重考虑对象的实现细节。设的问题,也就是着重考虑对象的实现细节。设计阶段可能扩展分析阶段所定义类的属性和方法,

714、计阶段可能扩展分析阶段所定义类的属性和方法,这些扩展的方法和属性都是实现类行为所必须的,这些扩展的方法和属性都是实现类行为所必须的,同时扩展的属性和方法应该是内部的。因为定义同时扩展的属性和方法应该是内部的。因为定义对象的外部行为是分析阶段的任务。为了实现系对象的外部行为是分析阶段的任务。为了实现系统的功能,在设计阶段还可能引入其他的类和对统的功能,在设计阶段还可能引入其他的类和对象。象。11.1.1 对象、操作和消息对象、操作和消息在面向对象的设计过程中,数据结构在面向对象的设计过程中,数据结构和对数据结构的操作被封装到了对象和对数据结构的操作被封装到了对象里,因此对象成了面向对象设计的基里

715、,因此对象成了面向对象设计的基本单位,对象之间通过消息进行连接。本单位,对象之间通过消息进行连接。11.1.2 类、实例和继承类、实例和继承具有共同属性的对象的抽象就是类。本质上,类具有共同属性的对象的抽象就是类。本质上,类是对象的模板,通过类可以生成具有该类的特性是对象的模板,通过类可以生成具有该类的特性的对象,该对象称为该类的一个实例,这个过程的对象,该对象称为该类的一个实例,这个过程就是类的实例化。就是类的实例化。 继承提供了一种重用对象的方式,基类(父类)继承提供了一种重用对象的方式,基类(父类)是派生类(子类)的更通用化的抽象。是派生类(子类)的更通用化的抽象。比如,通过提取取款类、

716、存款类以及转帐类的共同比如,通过提取取款类、存款类以及转帐类的共同特点就可以抽象出具有一般特性的概念类:交易特点就可以抽象出具有一般特性的概念类:交易类。类。11.1.2 类、实例和继承类、实例和继承图图1111 类的继承关系类的继承关系ClassAClassB11.2 面向对象的设计方法面向对象的设计方法由由Cord和和Yourdon提出面向对象的提出面向对象的OOD模型模型如图如图1121,模型由用户交互部件(,模型由用户交互部件(HIC)、)、问题域部件(问题域部件(PDC)、任务管理部件)、任务管理部件(TMC)和数据管理部件()和数据管理部件(DMC)组成。)组成。每个部件又由主题层

717、、类与对象层、结构每个部件又由主题层、类与对象层、结构层、属性层和服务层组成。五层分别对应层、属性层和服务层组成。五层分别对应面向对象分析的五个活动:定义主题词、面向对象分析的五个活动:定义主题词、标识对象、标识对象所属的类、标识对象标识对象、标识对象所属的类、标识对象的属性和行为。的属性和行为。11.2 面向对象的设计方法面向对象的设计方法图图1121 CordYourdon 的的OOD模型模型主题层主题层类及对象层类及对象层结构层结构层属性层属性层服务层服务层问问题题域域部部件件PDC用用户户交交互互部部件件HIC任任务务管管理理部部件件TMC数数据据管管理理部部件件DMC11.2 面向对

718、象的设计方法面向对象的设计方法问题域部件包括完成目标系统主要功能所必须问题域部件包括完成目标系统主要功能所必须的类或对象。的类或对象。用户界面部件定义用于完成人机交互所必须的用户界面部件定义用于完成人机交互所必须的类或对象。类或对象。任务管理部件定义了用于协调系统中各个任务任务管理部件定义了用于协调系统中各个任务所必须的类或对象。所必须的类或对象。数据库管理部件定义用于实现平台无关的数据数据库管理部件定义用于实现平台无关的数据操作的类和对象。操作的类和对象。OOD是在是在OOA模型的基础上对模型的基础上对OOA模型进行扩模型进行扩展和精化,从而得到系统设计的过程描述。展和精化,从而得到系统设计

719、的过程描述。11.2.1 问题域部件问题域部件(PDC)的设计的设计问题域部件的设计是通过对分析阶段问题域部件的设计是通过对分析阶段模型的扩展和调整,使之满足可修改模型的扩展和调整,使之满足可修改性和可重用性的目标和要求,并给出性和可重用性的目标和要求,并给出为完成系统功能所需要的类、对象、为完成系统功能所需要的类、对象、属性和操作的实现细节。属性和操作的实现细节。“扩展和调整扩展和调整OOA模型模型”策略策略1重用已有软部件重用已有软部件 1)使用非面向对象的组件)使用非面向对象的组件 如果软部件库中包含计算利息的面向如果软部件库中包含计算利息的面向过程的部件过程的部件CalculateIn

720、terest(AccountID aid),在设计),在设计CAccount类时就可以重用类时就可以重用这个部件对该帐号进行记息。也就是在这个部件对该帐号进行记息。也就是在CAccount的的CalculateInterest方法中直接方法中直接调用该过程部件调用该过程部件CalculateInterest(AccountID aid)即可,)即可,从而达到了重用非面向对象软部件的目从而达到了重用非面向对象软部件的目的。的。“扩展和调整扩展和调整OOA模型模型”策略策略2)使用面向对象的软部件)使用面向对象的软部件 假设组件库中包含假设组件库中包含CCalcuInterest类用类用于计算帐号

721、的利息,那么重用可以采用于计算帐号的利息,那么重用可以采用下面的方式:下面的方式: 继承:继承:class CAccount:public CCalcuInterest.聚合:聚合:class CAccount public: CCalcuInterest m_cci;.直接使用:直接使用: CAccount:CalculateInterest()CCalcuInterest cci(this););cci.CalculateInterest(); “扩展和调整扩展和调整OOA模型模型”策略策略2引入新父类,分组管理相关类引入新父类,分组管理相关类 主要目的:主要目的: 增增加加类类库库结结构

722、构的的清清晰晰度度,便便于于管管理理相相关关类,从而进一步支持软件重用。类,从而进一步支持软件重用。 如:在银行系统中,为了增加所有业务类如:在银行系统中,为了增加所有业务类之间的亲缘关系,为所有的业务类引入一之间的亲缘关系,为所有的业务类引入一个公共的父类:个公共的父类:CBankObject。其类图如图。其类图如图1122所示。所示。2引入新父类,分组管理相关类引入新父类,分组管理相关类图图1122 “银行系统银行系统”业务类类图业务类类图CBankObjectCAccountCBankCTransaction“扩展和调整扩展和调整OOA模型模型”策略策略3引入新父类,简化软件设计与编码引

723、入新父类,简化软件设计与编码 OOA模型中并没有对类的共性进行适模型中并没有对类的共性进行适当的识别。在某些场合,若干类由一组当的识别。在某些场合,若干类由一组类似的操作或属性。在设计主体部件时,类似的操作或属性。在设计主体部件时,可引入一个新类,在新类中提供所有公可引入一个新类,在新类中提供所有公共操作的协议,而把各个操作的细节隐共操作的协议,而把各个操作的细节隐藏在子类的定义中。藏在子类的定义中。例子例子在在“银行系统银行系统”中,无论是转帐、取款中,无论是转帐、取款和存款都有共性的操作,把这个共性的和存款都有共性的操作,把这个共性的操作抽象出来形成一个新类操作抽象出来形成一个新类CTra

724、nsaction,便可以提高系统的可修改性和可重用,便可以提高系统的可修改性和可重用性。转帐、取款和存款的共性包括属性:性。转帐、取款和存款的共性包括属性:帐号;操作:交易和保存交易日志。在帐号;操作:交易和保存交易日志。在子类中(如子类中(如CDeposit)需要重新实现)需要重新实现Transaction和和SaveLog操作,因为在子类操作,因为在子类中,要给出操作的具体语义或实现。如中,要给出操作的具体语义或实现。如图图1123所示所示 图图1123 提取交易对象的共性提取交易对象的共性CTransferCWithdrawCDepositCTransactionaccount:CAcc

725、ountTransaction()SavaLog()“扩展和调整扩展和调整OOA模型模型”策略策略4转换继承结构适应实现的限制转换继承结构适应实现的限制 在面向对象分析和设计阶段,虽然并不涉在面向对象分析和设计阶段,虽然并不涉及到面向对象编程语言,但是由于不同的及到面向对象编程语言,但是由于不同的面向对象的语言对面向对象概念的支持层面向对象的语言对面向对象概念的支持层次不一样,所以在设计阶段要考虑不同面次不一样,所以在设计阶段要考虑不同面向对象语言的限制。常见的限制是面向对向对象语言的限制。常见的限制是面向对象语言是否支持多重继承。象语言是否支持多重继承。转换的方法有如下几种:转换的方法有如下

726、几种: 1)将多重继承结构分离成部分)将多重继承结构分离成部分整体的关系整体的关系 一个人员可以具备多个角色,而角色则可以一个人员可以具备多个角色,而角色则可以是店员、店主等,具体实现很简单,在人员类是店员、店主等,具体实现很简单,在人员类中聚合多个角色对象,每个对象代表人员应具中聚合多个角色对象,每个对象代表人员应具有的角色,聚合对象可以用线性表来管理。如有的角色,聚合对象可以用线性表来管理。如图图1125。2)平板化)平板化 所谓平板化就是将多重继承类在类的继承层所谓平板化就是将多重继承类在类的继承层次中上移,使纵向结构向横向结构转化,也就次中上移,使纵向结构向横向结构转化,也就是平板化。

727、图是平板化。图1124中的多重继承经过平板化中的多重继承经过平板化后如图后如图1126。多重继承平板化后某些属性和。多重继承平板化后某些属性和操作将在子类中被重复定义,因而会影响面向操作将在子类中被重复定义,因而会影响面向系统的性能。系统的性能。图图1124 多重继承多重继承 图图1125 用部分用部分整体的关系整体的关系 表示多重继承表示多重继承店员店员店主店主人员人员店主兼店员店主兼店员人员人员角色角色店员店员店主店主图图1126 多重继承平板化多重继承平板化店员店员店主店主人员人员店主兼店员店主兼店员“扩展和调整扩展和调整OOA模型模型”策略策略5调整调整OOA模型,提高软件的执行速度模

728、型,提高软件的执行速度 通过合并相互通信频繁的类或对象,可降低通过合并相互通信频繁的类或对象,可降低因对象之间的通信而给系统带来的性能损失,因对象之间的通信而给系统带来的性能损失,从而提高系统的效率。另外还可以在类中增加从而提高系统的效率。另外还可以在类中增加属性或直接增加用于低级操作的类,用以保存属性或直接增加用于低级操作的类,用以保存中间结果,等等。中间结果,等等。6设计复审设计复审 依据高内聚度、低耦合度及简单性等软件设依据高内聚度、低耦合度及简单性等软件设计原则进行设计复审。计原则进行设计复审。11.2.2 用户界面部件用户界面部件(HIC)的设计的设计在分析阶段确定人机交互的属性和外

729、部服务,在在分析阶段确定人机交互的属性和外部服务,在设计阶段则要给出人机交互的全部细节。其中包设计阶段则要给出人机交互的全部细节。其中包括:括: 用户如何与系统交互;用户如何与系统交互;系统如何响应用户的命令;系统如何响应用户的命令;系统的正常操作、成功、以及操作失败时的系统的正常操作、成功、以及操作失败时的 提示信息;提示信息;如果系统中包含复杂的输出,如报表或查询如果系统中包含复杂的输出,如报表或查询 结果,也应在设计阶段给出详细的格式。结果,也应在设计阶段给出详细的格式。用户接口部件的设计过程:用户接口部件的设计过程:1)熟悉用户并对用户进行合理的分类)熟悉用户并对用户进行合理的分类 通

730、常按照用户的熟练程度、工作性质和权通常按照用户的熟练程度、工作性质和权限对用户进行分类。以便设计与用户层次限对用户进行分类。以便设计与用户层次相适应的用户界面。相适应的用户界面。 2)选取用户代表并分析其工作流程与习惯)选取用户代表并分析其工作流程与习惯 。 一般的做法是为每一类用户选取代表,一般的做法是为每一类用户选取代表,对其工作流程与操作习惯进行分析并建立对其工作流程与操作习惯进行分析并建立调查表。调查表。用户接口部件的设计过程用户接口部件的设计过程调查表应包括如下的内容:调查表应包括如下的内容: 姓名;姓名; 期望软件用途;期望软件用途; 自然特征(年龄、文化程度、限制等);自然特征(

731、年龄、文化程度、限制等); 主要要求与喜好;主要要求与喜好; 技术熟练程度;技术熟练程度; 任务客观场景描述。任务客观场景描述。用户接口部件的设计过程用户接口部件的设计过程3)设计并优化命令系统)设计并优化命令系统 在设计命令系统时,应该遵循界面设计在设计命令系统时,应该遵循界面设计的原则和规范。通过对用户的分析确定命的原则和规范。通过对用户的分析确定命令系统的原型,然后进行命令系统的优化。令系统的原型,然后进行命令系统的优化。命令系统通常表现为菜单、工具栏或按钮。命令系统通常表现为菜单、工具栏或按钮。 优化命令时应先考虑命令使用的频度,优化命令时应先考虑命令使用的频度,应该给常用的命令提供快

732、捷键。应该给常用的命令提供快捷键。用户接口部件的设计过程用户接口部件的设计过程4)对用户界面的细节进行设计)对用户界面的细节进行设计 包括界面一致性、耗时操作的状态显示、包括界面一致性、耗时操作的状态显示、“撤销撤销”和和“重做重做”机制、帮助用户记忆操作序机制、帮助用户记忆操作序列、自封闭的集成环境等等。列、自封闭的集成环境等等。 5)增加用户界面类)增加用户界面类 用户界面类的设计有赖于系统平台以及开发用户界面类的设计有赖于系统平台以及开发中所使用的底层类库。系统级的窗口包括中所使用的底层类库。系统级的窗口包括microsoft的的Windows,Unix下的下的XWindow等。等。通常

733、开发环境会提供功能强大的界面类库。通常开发环境会提供功能强大的界面类库。 6)为用户演示快速原型,依据用户的反馈意见)为用户演示快速原型,依据用户的反馈意见改进界面设计改进界面设计 图图1127 “银行系统银行系统”窗口类图窗口类图CWithdrawWndCDepositWndCTransferWndCWnd11.2.3 任务管理部件任务管理部件(TMC)的设计的设计任务通常指软件功能需求所载明的软件应完成任务通常指软件功能需求所载明的软件应完成的功能。任务管理器则用于协调各个功能的调的功能。任务管理器则用于协调各个功能的调度和执行。在度和执行。在OOA中并未引入任务管理部件,中并未引入任务管

734、理部件,是因为在分析阶段并未涉及系统的具体实现细是因为在分析阶段并未涉及系统的具体实现细节。在节。在OOD阶段引入任务管理部件有两点原因:阶段引入任务管理部件有两点原因: 多用户、多任务系统之上开发应用程序的多用户、多任务系统之上开发应用程序的需需 要;要; 通过任务管理部件协调各个子系统之间的通过任务管理部件协调各个子系统之间的通通 信和协同;信和协同;任务管理部件设计步骤任务管理部件设计步骤识别由事件驱动的任务识别由事件驱动的任务 事件一般来自外系统、硬件或用户的处理请求。事件一般来自外系统、硬件或用户的处理请求。 当当用用户户在在银银行行系系统统中中点点击击存存款款菜菜单单时时,就就启启

735、动动了了由由该菜单事件触发的存款任务。该菜单事件触发的存款任务。识别时间驱动的任务识别时间驱动的任务 时时间间驱驱动动的的任任务务一一般般指指与与时时间间相相关关的的任任务务,该该任任务务由由时时间间来来触触发发。如如银银行行系系统统每每月月一一次次的的计计算算利利息息的的任任务,就是时间驱动的任务。务,就是时间驱动的任务。识别关键性任务及任务的优先级识别关键性任务及任务的优先级 关关键键任任务务是是指指可可靠靠性性高高,关关系系到到系系统统成成败败的的重重要要任任务务。在在银银行行系系统统中中,“转转帐帐”、“取取款款”、“存存款款”等等均均属属关关键键性性任任务务。识识别别关关键键性性任任

736、务务的的同同时时还还要要对对任任务务的的优优先先级级进进行行排排队队,以以便便任任务务管管理理部部件件对对任任务务进进行行正确的调度。正确的调度。任务管理部件设计步骤任务管理部件设计步骤定义任务协调器定义任务协调器 如如果果系系统统中中包包含含三三个个以以上上的的任任务务,那那么么系系统统中中应应该该定定义义一一个个任任务务协协调调器器类类用用于于协调、调度和仲裁系统中的任务。协调、调度和仲裁系统中的任务。定义任务定义任务 经经过过、步步建建立立的的任任务务草草稿稿要要经经过过详详尽尽的的定定义义和和描描述述。在在描描述述中中说说明明任任务务的的名名称称、功功能能、优优先先级级、包包含含此此任

737、任务务的的服服务务、该该任任务务与与其其他他任任务务的的协协同同方方式。表式。表111示出了转帐任务的定义。示出了转帐任务的定义。表表111 转帐任务的定义转帐任务的定义任务名称任务名称转帐转帐描述描述在不同的帐号中转移资金在不同的帐号中转移资金包含此任务的服务包含此任务的服务Transfer.transaction优先级优先级高高协同方式协同方式事件驱动事件驱动通信方式通信方式从从HIC取值取值任务管理部件设计步骤任务管理部件设计步骤必必要要时时在在OOD中中扩扩充充有有关关任任务务的的类类和和对对象象,调调整整原原有有的的语语法法成成分分,以以适适应应任任务务定定义义的的要求。要求。 如果

738、在设计类时违背了高内聚的原则,比如果在设计类时违背了高内聚的原则,比如单个类完成多于一个的不相关的任务。如单个类完成多于一个的不相关的任务。必须调整设计。通常一个类只用于实现一必须调整设计。通常一个类只用于实现一个任务。个任务。图图1128 TMC的任务类和任务协调器类的任务类和任务协调器类mCTaskTNameTDescribeTPrivilegeTServiceTCooperateModeTCommunicateModeInitialize()Startup()Wait()Shutdown()1CTaskCooperateCooperate()11.2.4 数据管理部件数据管理部件(DMC

739、)的设计的设计主要目的是将目标软件系统中依赖于开发平台主要目的是将目标软件系统中依赖于开发平台的数据存取部分与其他功能进行分离,从而使的数据存取部分与其他功能进行分离,从而使数据存储部分与业务逻辑(数据处理)部分进数据存储部分与业务逻辑(数据处理)部分进行充分的去耦合。这样在数据设计或业务逻辑行充分的去耦合。这样在数据设计或业务逻辑发生改变时,可以使改变只限定在各自的部件发生改变时,可以使改变只限定在各自的部件范围之内,而不会扩散至其他部件。范围之内,而不会扩散至其他部件。数据存取通过数据管理系统(文件系统、关系数据存取通过数据管理系统(文件系统、关系数据库或面向对象数据库)来实现。业务逻辑数

740、据库或面向对象数据库)来实现。业务逻辑和数据操作的分离同时又有利于软件的扩充、和数据操作的分离同时又有利于软件的扩充、移植、维护并能减少测试的工作量。移植、维护并能减少测试的工作量。举例举例比如银行系统,可能先前的配置文件(数据部比如银行系统,可能先前的配置文件(数据部分)使用的是数据库表,由于频繁的访问数据分)使用的是数据库表,由于频繁的访问数据库导致系统响应时间增长。用户提出要提高效库导致系统响应时间增长。用户提出要提高效率(降低系统的响应时间)的新需求,这样配率(降低系统的响应时间)的新需求,这样配置数据的存取就要改成效率更高的文件方式。置数据的存取就要改成效率更高的文件方式。如果先前的

741、系统没有采用数据和业务逻辑分离如果先前的系统没有采用数据和业务逻辑分离的设计方式。修改设计将是一个痛苦的过程,的设计方式。修改设计将是一个痛苦的过程,如图如图1129所示。在主体部件内对数据管理系所示。在主体部件内对数据管理系统的操作分布在不同的类的不同方法中,当数统的操作分布在不同的类的不同方法中,当数据管理系统的设计和实现改变时,对主体部件据管理系统的设计和实现改变时,对主体部件改动的工作量将会很大。改动的工作量将会很大。 图图1129 主体部件直接操作数据管理系统主体部件直接操作数据管理系统主体部件主体部件BClass1BClass2BClassn数据管理系统(文件或数据库)数据管理系统

742、(文件或数据库)举例(续)举例(续)如果我们在主体部件和数据管理系统如果我们在主体部件和数据管理系统之间使用数据管理部件进行隔离,数之间使用数据管理部件进行隔离,数据管理系统设计和实现的改变就不会据管理系统设计和实现的改变就不会影响到主体部件,如图影响到主体部件,如图11210所示。所示。在数据管理系统改变时,只须在数据在数据管理系统改变时,只须在数据管理部件中做相应的修改即可。管理部件中做相应的修改即可。图图11210主体部件通过数据管理部件操作数据管理系统主体部件通过数据管理部件操作数据管理系统数据管理系统(文件或数据库)数据管理系统(文件或数据库)主体部件主体部件BClass1BClas

743、s2BClassn数据管理部件(数据管理部件(DMC)11.2.4 数据管理部件的设计数据管理部件的设计无论基于哪种数据管理方法,无论基于哪种数据管理方法,DMC设计都包括设计都包括定义数据格式和定义相应操作两部分。定义数据格式和定义相应操作两部分。 1定义数据格式定义数据格式 1)文件系统:)文件系统:以表格的形式给出每个类的所有属性:以表格的形式给出每个类的所有属性:将所有表格规范为一阶范式;将所有表格规范为一阶范式;为每个范式定义一个文件;为每个范式定义一个文件;针对存储限制和性能要求评估已获得的结果,针对存储限制和性能要求评估已获得的结果, 迫不得已时只得牺牲范式形式。迫不得已时只得牺

744、牲范式形式。11.2.4 数据管理部件的设计数据管理部件的设计为了使文件具有自描述性,文件中的每个为了使文件具有自描述性,文件中的每个记录都由标志名、开始标志、登录项目和记录都由标志名、开始标志、登录项目和结束标志四部分组成。而在数据管理部件结束标志四部分组成。而在数据管理部件的每个定义中应相应地增加属性的每个定义中应相应地增加属性“标志名标志名”和和“按登陆方式存储对对象的操作按登陆方式存储对对象的操作”。同时还要设计一个分析器,负责对文件的同时还要设计一个分析器,负责对文件的各个字段进行解析,并还原出原来的对象。各个字段进行解析,并还原出原来的对象。11.2.4 数据管理部件的设计数据管理

745、部件的设计2)关系型数据库:)关系型数据库:列表给出每种类定义的所有属性;列表给出每种类定义的所有属性;将所有表规范为第三范式;将所有表规范为第三范式;为每一范式定义一个关系;为每一范式定义一个关系;针对存储限制和其他性能要求评估已针对存储限制和其他性能要求评估已 获得的结果,必要时回退到第二或更获得的结果,必要时回退到第二或更 低的范式。低的范式。11.2.4 数据管理部件的设计数据管理部件的设计对于由关系数据库扩充而来的面向对对于由关系数据库扩充而来的面向对象数据库(象数据库(OODB)。其数据格式的)。其数据格式的定义步骤基本与关系数据库的定义步定义步骤基本与关系数据库的定义步骤类似。如

746、果骤类似。如果OODB由由OOPL扩充而来,扩充而来,则无需对属性进行规范化,因为对象则无需对属性进行规范化,因为对象的存储已由数据库系统本身来完成。的存储已由数据库系统本身来完成。11.2.4 数据管理部件的设计数据管理部件的设计2定义相应的操作定义相应的操作对于数据管理部件类,应该为其增加对于数据管理部件类,应该为其增加一个属性和一个操作。增加的属性用一个属性和一个操作。增加的属性用于说明对象所属的类。增加的操作用于说明对象所属的类。增加的操作用于完成存储和提取操作。因为该属性于完成存储和提取操作。因为该属性和方法属于数据管理部件类的实现细和方法属于数据管理部件类的实现细节,所以一般不作为

747、外部属性和方法节,所以一般不作为外部属性和方法并为外部使用。并为外部使用。11.2.4 数据管理部件的设计数据管理部件的设计2定义相应的操作定义相应的操作Coad和和Yourdon建建议议在在设设计计数数据据库库管管理理部部件件时时,创创建建一一个个数数据据库库管管理理部部件件类类的的根根类类,并并 将将 其其 称称 之之 为为 对对 象象 服服 务务 器器 ( objectserver)类。该类的职责有两个:)类。该类的职责有两个:1)通知对象存储自身。)通知对象存储自身。2)检索对象的值,并用检索值初始化对象。)检索对象的值,并用检索值初始化对象。11.2.4 数据管理部件的设计数据管理部

748、件的设计2定义相应的操作定义相应的操作以上操作通常被称为串行化(以上操作通常被称为串行化(Serialize)或对象持久化(或对象持久化(Object Persistence)。)。如图如图11211所示。在银行系统的数据管理所示。在银行系统的数据管理部件中,定义了全部数据管理类的根类部件中,定义了全部数据管理类的根类CObejectServer,它定义了数据操作的全部,它定义了数据操作的全部功能。通过继承,数据管理部件中的类都功能。通过继承,数据管理部件中的类都具备了更新和初始化的能力。具备了更新和初始化的能力。图图11211 银行系统的数据管理部件类的层次银行系统的数据管理部件类的层次课程

749、名称:软件工程课程名称:软件工程 第第20讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第12章章 人机界面设计人机界面设计教学目的:了解人机界面的特点、风格、设计过教学目的:了解人机界面的特点、风格、设计过 程和实现原则。程和实现原则。教学重点:设计过程和实现原则。教学重点:设计过程和实现原则。教学难点:设计过程和实现原则。教学难点:设计过程和实现原则。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第12章章 人机界面设计人机界面设计人机界面(人机界面(HumanComputer Interface,简称简称HCI)又称人)又称人 机接口或用户

750、界面,机接口或用户界面,它是用户与计算机系统交换信息的媒介,它是用户与计算机系统交换信息的媒介,更是用户使用计算机系统的综合操作环更是用户使用计算机系统的综合操作环境。境。设计用户界面不仅需要计算机科学的理设计用户界面不仅需要计算机科学的理论和知识,而且需要认知心理学以及人论和知识,而且需要认知心理学以及人机工程学、语言学等学科的知识。机工程学、语言学等学科的知识。本章讨论人的因素、人机界面风格、人本章讨论人的因素、人机界面风格、人机界面设计过程和人机界面实现的原则。机界面设计过程和人机界面实现的原则。12.1 人的因素人的因素所谓所谓“人的因素人的因素”有三层含义:有三层含义: 人对感知过程

751、的认识,包括视觉、阅人对感知过程的认识,包括视觉、阅 读时的认知心理、记忆、归纳与演读时的认知心理、记忆、归纳与演绎绎 推理等;推理等; 用户已有的技能和行为方式;用户已有的技能和行为方式; 用户所要求完成的整个任务以及用户用户所要求完成的整个任务以及用户 对人机交互部分的特殊要求。对人机交互部分的特殊要求。12.1.1 人类感知基础人类感知基础感官是人类认知客观世界的初始通道。因此,设感官是人类认知客观世界的初始通道。因此,设计人机界面要充分考虑视觉、触觉和听觉的作用,计人机界面要充分考虑视觉、触觉和听觉的作用,这样才能使用户有效地从系统获取信息,并存入这样才能使用户有效地从系统获取信息,并

752、存入记忆中,并通过大脑用归纳和演绎的方法进行推记忆中,并通过大脑用归纳和演绎的方法进行推理。理。 大多数人机界面都在可视介质上实现,此时,用大多数人机界面都在可视介质上实现,此时,用户总是眼脑并用,并根据所显示的内容、体积、户总是眼脑并用,并根据所显示的内容、体积、形状、颜色、方向、移动和其他表现解释所获可形状、颜色、方向、移动和其他表现解释所获可视信息。如何表示这些可视信息是设计视信息。如何表示这些可视信息是设计“友好友好”界面的关键。界面的关键。12.1.1 人类感知基础人类感知基础阅读阅读从正文中提取信息仍为大多数从正文中提取信息仍为大多数 界面的主要活动。界面的主要活动。 人们首先对可

753、视的句式(人们首先对可视的句式(patterns)进行解码,然后在大脑内检索字或短语进行解码,然后在大脑内检索字或短语的意思。这个过程的快慢受到眼球运动的意思。这个过程的快慢受到眼球运动模式的控制,字号、字体、行长、大小模式的控制,字号、字体、行长、大小写、位置和颜色等诸多因素也会直接影写、位置和颜色等诸多因素也会直接影响到信息提取的难易程度。响到信息提取的难易程度。12.1.1 人类感知基础人类感知基础人脑的组成:人脑的组成:短期记忆系统(短期记忆系统(Short Term Memory,STM)长期记忆系统(长期记忆系统(Long Term Memory,LTM)。)。感官输入(视、听、触

754、)一开始放在感官输入(视、听、触)一开始放在“缓冲区缓冲区”中,随即存入中,随即存入STM,STM中的信息可立即重中的信息可立即重用。但缓冲区的大小、用。但缓冲区的大小、STM中信息可重用的时中信息可重用的时间间隔都十分有限。间间隔都十分有限。知识知识 指语法、语义信息,一般存在指语法、语义信息,一般存在LTM中,中,它们是人对事物做出反应的依据。它们是人对事物做出反应的依据。因此,系统分析员在说明人机界面时,若对因此,系统分析员在说明人机界面时,若对STM和(或)和(或)LTM有什么过分要求,必将导致有什么过分要求,必将导致系统性能的下降。系统性能的下降。12.1.1 人类感知基础人类感知基

755、础大多数人遇到问题时并不进行形式的演大多数人遇到问题时并不进行形式的演绎和归纳推理,而是使用一组启发式策绎和归纳推理,而是使用一组启发式策略。这组策略是从以往对类似问题的处略。这组策略是从以往对类似问题的处理中逐渐获得的。因此,设计人机界面理中逐渐获得的。因此,设计人机界面时还应便于用户积累有关交互工作的经时还应便于用户积累有关交互工作的经验,同时要注意这些启发式策略的一致验,同时要注意这些启发式策略的一致性,不宜受特殊交互领域的影响。性,不宜受特殊交互领域的影响。12.1.2 用户的技能用户的技能用户本身的技能,个性上的差异,行为方式的用户本身的技能,个性上的差异,行为方式的不同,都会对人机

756、界面造成影响。不同,都会对人机界面造成影响。终端用户的技能,直接影响到他从人机界面上终端用户的技能,直接影响到他从人机界面上获取信息、对系统做出反应、以及使用启发式获取信息、对系统做出反应、以及使用启发式策略与系统和谐地进行交互的能力。大多数情策略与系统和谐地进行交互的能力。大多数情况下,特定领域的知识比广泛的教育和智慧更况下,特定领域的知识比广泛的教育和智慧更重要。重要。此外,每个人的个性又往往与思维方式或认知此外,每个人的个性又往往与思维方式或认知方式相联系。因此理想的人机界面应针对具有方式相联系。因此理想的人机界面应针对具有典型个性的特定的一类用户设计,不过目前在典型个性的特定的一类用户

757、设计,不过目前在这方面可供人机界面设计人员参考的经验还很这方面可供人机界面设计人员参考的经验还很贫乏。贫乏。12.1.3 任务与用户的特殊要求任务与用户的特殊要求设计交互式应用软件系统,大多数情况下设计交互式应用软件系统,大多数情况下是为了追求速度、效率、精度或降低成本,是为了追求速度、效率、精度或降低成本,使那些原来由手工或其他方式完成的任务使那些原来由手工或其他方式完成的任务能自动(或半自动)地完成。因任务本身能自动(或半自动)地完成。因任务本身基本不变,用户自然要求人机界面能提供基本不变,用户自然要求人机界面能提供一个他早已熟悉,并感到亲切自然的环境。一个他早已熟悉,并感到亲切自然的环境

758、。12.1.3 任务与用户的特殊要求任务与用户的特殊要求任务千差万别,但大致可分为下面几类:任务千差万别,但大致可分为下面几类:1通通信信型型任任务务(communication task):使使信信息息 从生产者传递到使用者的活动。从生产者传递到使用者的活动。2对对话话型型任任务务(dialogue task):使使用用户户能能指指挥挥 和控制与系统交互的活动。和控制与系统交互的活动。3认知型任务(认知型任务(cognitive task):获得信息即):获得信息即 可执行的活动,或与系统功能关联的活动。可执行的活动,或与系统功能关联的活动。4控制型任务(控制型任务(control task

759、):允许用户对信):允许用户对信 息及其他任务处理的顺序进行控制的活动。息及其他任务处理的顺序进行控制的活动。具体开发这些任务时,将用到用户界面设计技具体开发这些任务时,将用到用户界面设计技 术术任务分析和建模。任务分析和建模。12.2 人机界面风格人机界面风格人机界面的风格人机界面的风格四代。四代。 第一代界面第一代界面命令和询问方式。命令和询问方式。 通信完全以正文形式并通过用户命令和用户通信完全以正文形式并通过用户命令和用户对系统询问的响应来完成。例如:对系统询问的响应来完成。例如:Drun prog1.exe /debug=on /out=pl /in=t1 /alloc=1000kR

760、UN ALLOCATION TO BE QUEUED?yesAUTOMATIC CHECK POINTING INTERVAL?5缺点:易出错、不友好,且不易于学习。缺点:易出错、不友好,且不易于学习。12.2 人机界面风格人机界面风格第二代界面第二代界面简单的菜单式,例如:简单的菜单式,例如: choose program option that is desired: 1=input data manually 2=input data from existing data file 3=perform simplified analysis 4=perform detailed anal

761、ysis 5=produce tabular output 6=produce graphical output 7=other options classes select option?_这种方式与命令行方式相比不易出错,但使用这种方式与命令行方式相比不易出错,但使用起来仍然乏味。起来仍然乏味。12.2 人机界面风格人机界面风格第三代界面第三代界面面向窗口的点选界面面向窗口的点选界面 (point and pick interface) 亦称为亦称为WIMP界面,界面,即:窗口(即:窗口(windows)、)、 四位一四位一体,体, 图标(图标(icons)、)、 形形成桌面成桌面 菜单(

762、菜单(menus)、)、 (desktop) 指示器(指示器(pointing device)12.2 人机界面风格人机界面风格第三代界面的优点第三代界面的优点1能能同同时时显显示示不不同同种种类类的的信信息息,使使用用户户可可在在几几个个工工作作环环境境中中切切换换而而不不丢丢失失几几个个工工作作之之间间的的联联系系,窗窗口口使使用用户户能能自自如如地地执执行行许许多多通通信信型型和和认认知型任务。知型任务。2用用户户通通过过下下拉拉式式菜菜单单(pull down menu)可可方便地执行控制型和对话型任务。方便地执行控制型和对话型任务。3引入图标、下拉式菜单、按钮和滚动条技术,引入图标、

763、下拉式菜单、按钮和滚动条技术,可大大减少键盘输入,这对那些不精于打字的可大大减少键盘输入,这对那些不精于打字的用户无疑提高了交互效率,极大地推动了计算用户无疑提高了交互效率,极大地推动了计算机应用。机应用。12.2 人机界面风格人机界面风格第四代界面:第四代界面:最新一代最新一代HCI,把第三代,把第三代HCI技术与超文技术与超文本、多任务概念结合起来,使用户可本、多任务概念结合起来,使用户可同时执行多个任务(以用户的观点)。同时执行多个任务(以用户的观点)。第四代界面已出现在许多工作站和高第四代界面已出现在许多工作站和高性能性能PC机上。机上。12.3 人机界面设计过程人机界面设计过程人机界

764、面设计过程可分为下面几个步骤:人机界面设计过程可分为下面几个步骤: 1)创建系统功能的外部模型;)创建系统功能的外部模型; 2)确确定定为为完完成成此此系系统统功功能能人人和和计计算算机机应应分别完成的任务;分别完成的任务; 3)考虑界面设计中的典型问题;)考虑界面设计中的典型问题; 4)借助)借助CASE工具构造界面原型;工具构造界面原型; 5)实现设计模型;)实现设计模型; 6)评估界面质量。)评估界面质量。12.3.1 界面设计的有关模型界面设计的有关模型在人机界面的设计过程中先后涉及四个模型:在人机界面的设计过程中先后涉及四个模型:1)由软件工程师创建的设计模型()由软件工程师创建的设

765、计模型(design model),),2)由人机工程师(或软件工程师)创建的用户)由人机工程师(或软件工程师)创建的用户模型(模型(user model),),3)终端用户对未来系统的假想()终端用户对未来系统的假想(system perception或或users model)4)系统实现后得到的系统映象()系统实现后得到的系统映象(system image)。)。一般来说,这四个模型之间差别很大,界面设一般来说,这四个模型之间差别很大,界面设计时要充分平衡四者之间的差异,设计协调一计时要充分平衡四者之间的差异,设计协调一致的界面。致的界面。12.3.1 界面设计的有关模型界面设计的有关模

766、型设计模型主要考虑软件的数据结构、总体结构和过程设计模型主要考虑软件的数据结构、总体结构和过程性描述,界面设计一般只作为附属品;性描述,界面设计一般只作为附属品;用户模型概括了终端用户的大致情况,只有对假想用用户模型概括了终端用户的大致情况,只有对假想用户的情况有所了解,才能设计出有效的用户界面;户的情况有所了解,才能设计出有效的用户界面;系统假想是终端用户主观想象的系统映象,它描述了系统假想是终端用户主观想象的系统映象,它描述了期望系统能提供的操作,至于这些描述的准确程度,期望系统能提供的操作,至于这些描述的准确程度,则完全依赖于用户的情况和他对软件的熟悉程度;则完全依赖于用户的情况和他对软

767、件的熟悉程度;系统映象是系统的外部特征(指界面形式和感观)与系统映象是系统的外部特征(指界面形式和感观)与所有支撑信息(书、手册)的总和,一般来说,若系所有支撑信息(书、手册)的总和,一般来说,若系统映象能与系统假想吻合,用户即对系统感到满意并统映象能与系统假想吻合,用户即对系统感到满意并能有效地使用它能有效地使用它 。12.3.1 界面设计的有关模型界面设计的有关模型为了达到上述模型间的统一,建立设为了达到上述模型间的统一,建立设计模型时应充分考虑用户模型中给出计模型时应充分考虑用户模型中给出的信息,系统映象必须准确地反映系的信息,系统映象必须准确地反映系统的语法和语义信息。统的语法和语义信

768、息。总之,只有了解用户、了解任务,才总之,只有了解用户、了解任务,才能设计出好的用户界面。能设计出好的用户界面。12.3.2 任务分析与建模任务分析与建模q任务分析有两种途径。任务分析有两种途径。一种是从实际出发,通过对原有处于手工一种是从实际出发,通过对原有处于手工或半手工状态下的应用系统的剖析,将其或半手工状态下的应用系统的剖析,将其映射为在人机界面上执行的一组类似的任映射为在人机界面上执行的一组类似的任务。务。另一种是通过研究系统的需求规格说明,另一种是通过研究系统的需求规格说明,导出一组与设计模型、用户模型和系统假导出一组与设计模型、用户模型和系统假想相协调的用户任务。想相协调的用户任

769、务。12.3.2 任务分析与建模任务分析与建模q任务分析采用的技术:任务分析采用的技术:逐步求精技术逐步求精技术可把任务不断划分为子任可把任务不断划分为子任务,直至对每个任务的表达都十分清楚。务,直至对每个任务的表达都十分清楚。面向对象分析技术面向对象分析技术可识别出与应用有关可识别出与应用有关的所有客观的对象以及与对象关联的动作。的所有客观的对象以及与对象关联的动作。界面设计界面设计一旦每个任务或动作定义清晰,界面设计即可开一旦每个任务或动作定义清晰,界面设计即可开 始。界面设计首先要完成下列工作:始。界面设计首先要完成下列工作: 1确定任务的目标和含义;确定任务的目标和含义; 2将每个目标

770、将每个目标/含义映射为一系列特定动作;含义映射为一系列特定动作; 3说明这些动作将来在界面上执行的顺序;说明这些动作将来在界面上执行的顺序; 4指明各个系统状态,即上述各动作序列中每个指明各个系统状态,即上述各动作序列中每个 动作在界面上执行时界面呈现的形式;动作在界面上执行时界面呈现的形式; 5定义控制机制,即便于用户修改系统状态的一定义控制机制,即便于用户修改系统状态的一 些设置和操作;些设置和操作; 6说明控制机制怎样作用于系统状态;说明控制机制怎样作用于系统状态; 7指明用户应怎样根据界面上反映出的信息解释指明用户应怎样根据界面上反映出的信息解释 系统的状态。系统的状态。12.3.3

771、界面设计的一般问题界面设计的一般问题设计人机界面,必须考虑四个方面:设计人机界面,必须考虑四个方面: 系统的响应时间;系统的响应时间; 用户求助机制;用户求助机制; 错误信息处理;错误信息处理; 命令方式。命令方式。 1)系统响应时间指当用户执行了某个控制动作)系统响应时间指当用户执行了某个控制动作后(如,点击鼠标器等),系统做出反应的时后(如,点击鼠标器等),系统做出反应的时间(指输出信息或执行对应的动作)。间(指输出信息或执行对应的动作)。 系统响应时间过长、不同命令在响应时间上系统响应时间过长、不同命令在响应时间上的差别过于悬殊,用户将难以接受。的差别过于悬殊,用户将难以接受。12.3.

772、3 界面设计的一般问题界面设计的一般问题2)用户都希望得到联机帮助。)用户都希望得到联机帮助。 联机求助系统有两类:集成式和叠加式。联机求助系统有两类:集成式和叠加式。集成式求助一般都与软件设计同时考虑,上下集成式求助一般都与软件设计同时考虑,上下文敏感,整个求助过程快捷而友好;文敏感,整个求助过程快捷而友好;叠加式求助一般是在软件完成后附上一个受限叠加式求助一般是在软件完成后附上一个受限的联机用户手册。的联机用户手册。 此外,还要考虑诸如帮助范围(仅考虑部分此外,还要考虑诸如帮助范围(仅考虑部分还是全部功能)、用户求助的途径、帮助信息还是全部功能)、用户求助的途径、帮助信息的显示、用户如何返

773、回正常交互工作及帮助信的显示、用户如何返回正常交互工作及帮助信息本身如何组织等一系列问题。息本身如何组织等一系列问题。12.3.3 界面设计的一般问题界面设计的一般问题3)错误信息处理)错误信息处理 出出错错信信息息应应选选用用用用户户明明了了、含含义义准准确确的的术术语语描描述述,同同时时还还应应尽尽可可能能提提供供一一些些有有关关错错误误恢恢复复的的建建议议。此此外外,显显示示出出错错信信息息时时,若若辅辅以以听听觉觉(如如铃铃声声)、视视觉觉(专专用用颜颜色色)刺激,则效果更佳。刺激,则效果更佳。12.3.3 界面设计的一般问题界面设计的一般问题4)命令方式)命令方式 键盘命令曾经一度是

774、用户与软件系统之键盘命令曾经一度是用户与软件系统之间最通用的交互方式,随着面向窗口的点间最通用的交互方式,随着面向窗口的点选界面的出现,键盘命令虽不再是唯一的选界面的出现,键盘命令虽不再是唯一的交互形式,但许多有经验的熟练的软件人交互形式,但许多有经验的熟练的软件人员仍喜爱这一方式,更多的情形是菜单与员仍喜爱这一方式,更多的情形是菜单与键盘命令并存,供用户自由选用。键盘命令并存,供用户自由选用。12.3.4 实现工具实现工具用户界面设计是一个迭代过程,直至与用户模用户界面设计是一个迭代过程,直至与用户模型和系统假想一致为止。型和系统假想一致为止。修改设计修改设计创建新界面创建新界面原型原型用户

775、评审界面用户评审界面创建界面创建界面原型原型1初步设计初步设计设计人员分析设计人员分析用户评审意见用户评审意见界面设计界面设计完毕完毕图图1231 界面设计演进过程界面设计演进过程12.3.4 实现工具实现工具为支持这种迭代式设计,大量的用户界为支持这种迭代式设计,大量的用户界面快速原型工具涌现出来:面快速原型工具涌现出来: 用户界面工具箱(用户界面工具箱(user interface toolkits)或用户界面开发系统或用户界面开发系统 (user interface development systems)。)。这些工具通过提供现成的模块和对象,这些工具通过提供现成的模块和对象,包括窗口

776、、菜单、设备交互、出错信息包括窗口、菜单、设备交互、出错信息和命令等。和命令等。12.4 人机界面实现的原则与标准人机界面实现的原则与标准人机界面设计得好坏与设计者的经验有直接的人机界面设计得好坏与设计者的经验有直接的关系,本节从一般可交互性、信息显示和数据关系,本节从一般可交互性、信息显示和数据输入三个方面简单介绍一些界面设计的经验。输入三个方面简单介绍一些界面设计的经验。 12.4.1 一般可交互性一般可交互性 提高可交互性的措施:提高可交互性的措施: 1在在同同一一用用户户界界面面中中,所所有有的的菜菜单单选选择择、命命 令令输输入入、数数据据显显示示和和其其他他功功能能应应始始终终保持

777、保持 同一种形式和风格;同一种形式和风格; 2通过向用户提供视觉和听觉上的反馈,通过向用户提供视觉和听觉上的反馈,保保 持用户与界面间的双向通信;持用户与界面间的双向通信;12.4.1 一般可交互性一般可交互性提高可交互性的措施:提高可交互性的措施:3. 对所有可能造成损害的动作,坚持要求用户对所有可能造成损害的动作,坚持要求用户 确确认认,例例如如,提提问问“你你确确实实要要删删除除?”;4对大多数动作应允许恢复(对大多数动作应允许恢复(UNDO););5尽量减少用户记忆的信息量;尽量减少用户记忆的信息量;6提高对话、移动和思考的效率,即最大可能提高对话、移动和思考的效率,即最大可能 地地减

778、减少少击击键键次次数数,缩缩短短鼠鼠标标移移动动的的距距离离,避避 免使用户产生无所适从的感觉;免使用户产生无所适从的感觉;7用户出错时采取宽容的态度;用户出错时采取宽容的态度;8按功能分类组织界面上的活动;按功能分类组织界面上的活动;9提供上下文敏感的求助系统;提供上下文敏感的求助系统;10用简短的动词和动词短语提示命令。用简短的动词和动词短语提示命令。12.4.2 信息显示信息显示信息显示的形式和方式的一些原则:信息显示的形式和方式的一些原则:1仅显示与当前上下文有关的信息;仅显示与当前上下文有关的信息;2采用简单明了的表达方式,避免用户采用简单明了的表达方式,避免用户 置身于大量的数据中

779、;置身于大量的数据中;3采用统一的标号、约定俗成的缩写和采用统一的标号、约定俗成的缩写和 预先定义好的颜色;预先定义好的颜色;4允许用户对可视环境进行维护,如放允许用户对可视环境进行维护,如放 大、缩小图象;大、缩小图象;12.4.2 信息显示信息显示信息显示的形式和方式的一些原则:信息显示的形式和方式的一些原则:5只显示有意义的出错信息;只显示有意义的出错信息;6用大、小写,缩进和按意群分组等方用大、小写,缩进和按意群分组等方 法提高可理解性;法提高可理解性;7用窗口(在适合的情况下)分隔不同用窗口(在适合的情况下)分隔不同 种类的信息;种类的信息;8用用“类比类比”手法,生动形象地表示信息

780、;手法,生动形象地表示信息;9合理划分并高效使用显示屏。合理划分并高效使用显示屏。12.4.3 数据输入数据输入用户与系统交互的大部分时间用于输入用户与系统交互的大部分时间用于输入命令,提供数据或系统要求的其他输入命令,提供数据或系统要求的其他输入信息。目前,键盘仍为最常用的输入设信息。目前,键盘仍为最常用的输入设备,但鼠标、数字化仪、甚至语言识别备,但鼠标、数字化仪、甚至语言识别系统正迅速成为替代品。系统正迅速成为替代品。数据输入的一般准则:数据输入的一般准则: 1尽量减少用户输入的动作;尽量减少用户输入的动作; 2保证信息显示方式与数据输入方式保证信息显示方式与数据输入方式的的 协调一致;

781、协调一致;12.4.3 数据输入数据输入数据输入的一般准则:数据输入的一般准则:3. 允许用户定做输入格式;允许用户定做输入格式;4采用灵活多样的交互方式,允许用户采用灵活多样的交互方式,允许用户 自选输入方式;自选输入方式;5隐藏当前状态下不可选用的命令;隐藏当前状态下不可选用的命令;6允许用户控制交互过程;允许用户控制交互过程;7为所有输入动作提供帮助信息;为所有输入动作提供帮助信息;8去除所有无实际意义的输入,尽量采去除所有无实际意义的输入,尽量采 用缺省值。用缺省值。12.4.4 人机界面标准人机界面标准人们普遍认识到,迫切需要推行用户界面设人们普遍认识到,迫切需要推行用户界面设计标准

782、,这将给开发者和终端用户双方都带计标准,这将给开发者和终端用户双方都带来便利。来便利。目前,最通用的界面标准是目前,最通用的界面标准是X Windows系统,系统,它定义了人机界面设计的语法和语义,提供它定义了人机界面设计的语法和语义,提供了一套用于创建显示(了一套用于创建显示(display)、窗口)、窗口(window)和图形()和图形(graphics)的工具,)的工具,以及有关资源处理(以及有关资源处理(resource handling)、)、设备交互(设备交互(device interaction)和事件处理)和事件处理(event handling)的一套协议。)的一套协议。课程

783、名称:软件工程课程名称:软件工程 第第21讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第13章章 程序设计语言与编码程序设计语言与编码教学目的:了解程序设计语言的特点、发展,掌握选教学目的:了解程序设计语言的特点、发展,掌握选 择语言的原则,理解编程标准,择语言的原则,理解编程标准,良好编程良好编程 风格。风格。教学重点:选择语言的原则,编程标准,编程风格。教学重点:选择语言的原则,编程标准,编程风格。教学难点:选择语言的原则,编程标准。教学难点:选择语言的原则,编程标准。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第13章章 程序设计语言与

784、编码程序设计语言与编码编码编码以详细设计说明书为输入,将该以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算输入用某种程序设计语言翻译成计算 机可以理解并最终可运行的代码的过机可以理解并最终可运行的代码的过程。程。本章介绍程序设计语言的特点、发展和本章介绍程序设计语言的特点、发展和分类、开发时选择程序设计语言的标准、分类、开发时选择程序设计语言的标准、编程质量与程序设计语言的关系、编程编程质量与程序设计语言的关系、编程标准和编程风格,最后简单介绍目前程标准和编程风格,最后简单介绍目前程序设计的支持环境。序设计的支持环境。13.1 程序设计语言程序设计语言 13.1.1 程序设计语言的

785、特点程序设计语言的特点 语言的几种特性。语言的几种特性。 1)一致性()一致性(Uniformity) 指语言中采用的标记(指语言中采用的标记(Token)法协调一致)法协调一致的程度。的程度。 例如例如“”在在C语言中即可以在声明中表示其语言中即可以在声明中表示其后的变量为指针变量,又可作间接访问运算符,后的变量为指针变量,又可作间接访问运算符,还可以作乘法运算符,这种还可以作乘法运算符,这种“一词多用一词多用” ” 、一、一致性不好的语言程序不仅可读性差,而且在编致性不好的语言程序不仅可读性差,而且在编写程序的过程中容易出错。写程序的过程中容易出错。13.1.1 程序设计语言的特点程序设计

786、语言的特点语言的几种特性。语言的几种特性。 2)二义性()二义性(ambiguity) 语言的二义性是指语言是否允许使语言的二义性是指语言是否允许使用具有二义性的语句。允许使用二义用具有二义性的语句。允许使用二义性语句的语言在可理解性和可修改性性语句的语言在可理解性和可修改性上都要差一些。上都要差一些。13.1.1 程序设计语言的特点程序设计语言的特点语言的几种特性。语言的几种特性。3)紧致性()紧致性(compactness) 紧紧致致性性是是指指程程序序员员写写程程序序时时必必须须记记忆忆的的关关于于语言的信息总量。决定紧致性的指标包括:语言的信息总量。决定紧致性的指标包括:语言对结构化的

787、支持程度。语言对结构化的支持程度。关关键键字字及及操操作作符符的的数数目目,显显然然关关键键字字和和操操作作符符的数目越多,则紧致性越差。的数目越多,则紧致性越差。标准函数的个数及复杂程度。标准函数的个数及复杂程度。通常紧致性和一致性是矛盾的。在选择程序语通常紧致性和一致性是矛盾的。在选择程序语言时,必须在这两者之间找到平衡点。言时,必须在这两者之间找到平衡点。13.1.1 程序设计语言的特点程序设计语言的特点语言的几种特性。语言的几种特性。4)局部性)局部性(locality) 局部性是指语言的模块化和信息隐藏特局部性是指语言的模块化和信息隐藏特性。一个局部性差的语言必然会导致程性。一个局部

788、性差的语言必然会导致程序的复杂性增加。比如,一种不具有块序的复杂性增加。比如,一种不具有块机制的语言,那么信息的作用域必然是机制的语言,那么信息的作用域必然是全局的,程序的走向也是全局的,从而全局的,程序的走向也是全局的,从而导致程序的复杂性增加,可读性、可修导致程序的复杂性增加,可读性、可修改性和可维护性都会相应降低。改性和可维护性都会相应降低。程序设计语言其他连带的特性:程序设计语言其他连带的特性:1)将设计翻译成代码的难易程度)将设计翻译成代码的难易程度 设计阶段的输出是编码阶段的输入,设计阶段的输出是编码阶段的输入,因此以设计说明书为输入编写代码时程因此以设计说明书为输入编写代码时程序

789、语言对设计概念的支持程度就决定了序语言对设计概念的支持程度就决定了翻译过程的难易。翻译过程的难易。 如果在分析阶段和设计阶段采用的是如果在分析阶段和设计阶段采用的是面向对象的方法,而在编码阶段采用的面向对象的方法,而在编码阶段采用的是面向过程的语言,那么这种翻译就比是面向过程的语言,那么这种翻译就比较困难。较困难。程序设计语言其他连带的特性:程序设计语言其他连带的特性:2)编译器所生成代码的效率)编译器所生成代码的效率 对于实时或时间关键性的项目来说,除对于实时或时间关键性的项目来说,除在设计和编码时对效率进行充分的考虑外,在设计和编码时对效率进行充分的考虑外,高效率的编译器也是必须的。好的编

790、译器高效率的编译器也是必须的。好的编译器会对程序作最佳的性能优化。不同语言生会对程序作最佳的性能优化。不同语言生成的目标系统的效率不同,即使是同一种成的目标系统的效率不同,即使是同一种语言,采用不同的编译器,目标系统的效语言,采用不同的编译器,目标系统的效率也会不同。率也会不同。程序设计语言其他连带的特性:程序设计语言其他连带的特性:3)源代码的可移植性)源代码的可移植性 选选择择一一种种可可移移植植性性强强的的语语言言可可以以为为代代码码的的重重用用和和项项目目的的移移植植奠奠定定好好的的基基础础。源源代代码码的的可可移移植植性性也也是是选选择择开开发发语语言言要要考考虑的因素。虑的因素。

791、4)配套的开发工具)配套的开发工具 主流的语言都有良好的集成开发环境主流的语言都有良好的集成开发环境(IDE)。其中不仅包括源代码的编辑器、)。其中不仅包括源代码的编辑器、编译和连接器、调试器,同时还包含配编译和连接器、调试器,同时还包含配置管理工具、安装部署工具以及代码的置管理工具、安装部署工具以及代码的转换工具。转换工具。13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类第一代:机器语言和汇编语言,也称为低第一代:机器语言和汇编语言,也称为低级语言。级语言。第二代:第一代和第三代的过渡语言。这第二代:第一代和第三代的过渡语言。这代语言是代语言是50年代末至年代末至60年代初出现

792、的,这年代初出现的,这些语言应用面广,有大量成熟的程序库。些语言应用面广,有大量成熟的程序库。这代语言包括这代语言包括FORTRAN、COBOL、BASIC等。等。13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类第三代语言:高级语言。第三代语言:高级语言。高级语言通常被分成三类:高级语言通常被分成三类: 1)通用高级语言。)通用高级语言。Algol 60,C、Pascal, PL/1,Modula2和和Ada等。等。 2)面向对象的语言,如)面向对象的语言,如C+、Java、 Smalltalk等。等。 3)专用语言,专用语言只用于特定的领域。)专用语言,专用语言只用于特定的领域

793、。 LISP和和Prolog适用于人工智能领域;适用于人工智能领域; APL是为数组和向量运算设计的语言;是为数组和向量运算设计的语言; 而而Forth则用于开发微处理器软件。则用于开发微处理器软件。 专用语言可移植性和可维护性较差。专用语言可移植性和可维护性较差。13.1.2 程序设计语言的发展和分类程序设计语言的发展和分类第四代语言(第四代语言(4GL) 4GL还局限在某些领域内,如数据库查询还局限在某些领域内,如数据库查询语言。语言。 程序生成器代表了更为通用的一类程序生成器代表了更为通用的一类4GL,程序生成器可以将更为自然的语言描述翻程序生成器可以将更为自然的语言描述翻译成第三代语言

794、程序,进而更好地消除设译成第三代语言程序,进而更好地消除设计和代码之间的语义断层。计和代码之间的语义断层。13.1.3 程序设计语言的选择标准程序设计语言的选择标准选择语言时要考虑的因素:选择语言时要考虑的因素: 1)项目的应用领域)项目的应用领域 2)项目中算法和计算的复杂性)项目中算法和计算的复杂性 3)项目中数据结构的复杂性)项目中数据结构的复杂性 4)用户的性能需求)用户的性能需求 5)软件运行的环境)软件运行的环境 6)软件开发人员开发水平。)软件开发人员开发水平。 7)可用的编译器和交叉编译器。)可用的编译器和交叉编译器。13.2 编程质量与程序设计语言编程质量与程序设计语言程序的

795、可靠性、可维护性和效率通常由程序的可靠性、可维护性和效率通常由程序设计语言、源代码的质量、和语言程序设计语言、源代码的质量、和语言的实现机制决定的。的实现机制决定的。 13.2.1 程序设计语言与可靠性程序设计语言与可靠性 程序设计语言的可靠性是指程序设计语程序设计语言的可靠性是指程序设计语言本身不出错或对错误的纠正能力。言本身不出错或对错误的纠正能力。如:如:JAVA由于其抛弃了指针和动态存储分由于其抛弃了指针和动态存储分配等易于出错的语言特性。从而具有较配等易于出错的语言特性。从而具有较高的可靠性。高的可靠性。13.2.2 程序设计语言与可维护性程序设计语言与可维护性程程序序设设计计语语言

796、言的的可可维维护护性性通通常常指指这这种种语语言言编编写写的的程程序序被理解,被修改及调整和改进的难易程度。被理解,被修改及调整和改进的难易程度。程序设计语言的可维护性一般由下面几个因素决定:程序设计语言的可维护性一般由下面几个因素决定:程序设计语言的一致性和紧致性程序设计语言的一致性和紧致性 一一致致性性刻刻画画了了语语言言标标记记的的语语义义单单义义性性,因因此此一一致致性性好的语言的可维护性要好于一致性差的语言。好的语言的可维护性要好于一致性差的语言。程序设计语言的语法规则程序设计语言的语法规则 语法规则的严格程度也影响语言的可维护性和可读语法规则的严格程度也影响语言的可维护性和可读性,

797、语法要求严格的语言要比语法自由的语言的可维性,语法要求严格的语言要比语法自由的语言的可维护性差些。因为修改和理解语法严格的语言要困难些。护性差些。因为修改和理解语法严格的语言要困难些。比如比如FORTRAN和和Perl语言,其语法要求很严格。因此语言,其语法要求很严格。因此其可维护性与其可维护性与C/C+等语法较自由的语言相比要差些。等语法较自由的语言相比要差些。13.2.3 程序设计语言与效率程序设计语言与效率不不同同程程序序设设计计语语言言在在程程序序的的效效率率上上的的差差异异很很大大。程序设计语言的效率由下面因素决定:程序设计语言的效率由下面因素决定: 程序设计语言的实现机制;程序设计

798、语言的实现机制; 解解释释性性程程序序(如如解解释释BASIC)和和编编译译成成中中间间语语言言然然后后又又解解释释执执行行的的语语言言(如如JAVA)的的效效率率一一般般要远远低于编译语言。要远远低于编译语言。 程序语言对系统底层的访问和控制能力;程序语言对系统底层的访问和控制能力; 设计良好的低级语言程序效率最高。设计良好的低级语言程序效率最高。 编译器的效率;编译器的效率;13.3 编程标准编程标准编码的依据是详细设计说明书。编码的编码的依据是详细设计说明书。编码的任务就是按照详细设计说明的要求写出任务就是按照详细设计说明的要求写出满足要求的代码。设计阶段的成果基本满足要求的代码。设计阶

799、段的成果基本上决定了系统的可修改性和可维护性。上决定了系统的可修改性和可维护性。在编码阶段,遵循下述原则,将有助于在编码阶段,遵循下述原则,将有助于编写清晰、紧凑、高效的程序。从而进编写清晰、紧凑、高效的程序。从而进一步提高程序的可修改性、可维护性和一步提高程序的可修改性、可维护性和可测试性。可测试性。编码原则编码原则1)编写易于修改和维护的代码)编写易于修改和维护的代码 编编码码阶阶段段,在在设设计计基基础础上上对对程程序序进进行行进进一一步步的的数数据据和和操操作作的的分分离离有有利利于于代代码码和数据的单独改变。和数据的单独改变。 2)编写易于测试的代码)编写易于测试的代码 在编码阶段对

800、代码的可测试性进行考虑在编码阶段对代码的可测试性进行考虑可以减少测试阶段的工作量。以条件编可以减少测试阶段的工作量。以条件编译和注释的方法融入源代码中,是一种译和注释的方法融入源代码中,是一种有效的增加代码可测试性的手段。有效的增加代码可测试性的手段。编码原则编码原则3)编写详细的程序文档)编写详细的程序文档程程序序文文档档一一般般指指以以注注释释的的形形式式嵌嵌入入程程序序中中的的代代码描述。程序文档应该与程序保持高度一致。码描述。程序文档应该与程序保持高度一致。程序文档应该包括下列内容程序文档应该包括下列内容 代码的功能;代码的功能; 代码的完成者;代码的完成者; 代码在整个软件系统中的位

801、置;代码在整个软件系统中的位置; 代码编制、复审时间;代码编制、复审时间; 保留代码的原因;保留代码的原因; 代码中如何使用数据结构和算法。代码中如何使用数据结构和算法。程序文档的例子程序文档的例子/* Modual name: gameserver Function: game server for realtime game information process Author: chejinhui Create date: 2003/11/12 Platform: IA32,Windows Modify list: 2003/11/14 line 28 should be = 2003/

802、11/15 line 29 .*/ 程序文档的例子程序文档的例子/*-include stdio&socket libarary-*/#include #include /*-Global var area-*/int iUserCount;程序文档的例子程序文档的例子/*-Initialize Socket Subsysteminput: noneoutput:DLL initialize result0:faultother:success-*/程序文档的例子程序文档的例子int InitSockInterface( ) WORD wVersionRequested; WSADATA ws

803、aData; int err; wVersionRequested = MAKEWORD( 2, 2 ); /start socket subsystem err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; 程序文档的例子程序文档的例子/see if socket version meet our request (must be 2.2 ) if ( LOBYTE( wsaData.wVersion ) != 2 | HIBYTE( wsaData.wVersion ) != 2 ) WSACl

804、eanup(); return 0; /*- this is the end of program document demo -*/编码原则编码原则4)编编程程中中采采用用统统一一的的标标准准和和约约定定,降降低低程程序序的复杂性的复杂性 软件组织通常会制定一份软件组织通常会制定一份“编码规范编码规范”,程序员在编写代码时。必须严格按照程序员在编写代码时。必须严格按照“编编码规范码规范”编写代码。表编写代码。表131是软件组织是软件组织“编编码规范码规范”的通用格式和内容。的通用格式和内容。表表131 编码规范编码规范规范项规范项规范内容规范内容1排版排版排版格式,如缩进、块语句、分行等排版

805、格式,如缩进、块语句、分行等2注释注释规范注释的格式规范注释的格式3标识符命名标识符命名规范标识符的命名规则规范标识符的命名规则4可读性可读性为提高可读性所作的规范,如禁止使用技巧性高的语句为提高可读性所作的规范,如禁止使用技巧性高的语句5变量、结构变量、结构规范变量和结构的定义,如禁止局部与全局变量同名等规范变量和结构的定义,如禁止局部与全局变量同名等6函数、过程函数、过程规范函数的定义,如规范函数的定义,如“不要设计多用途面面俱到的函数不要设计多用途面面俱到的函数”7可测性可测性为提高可测性的规范,如为提高可测性的规范,如“用断言确认函数的参数用断言确认函数的参数”等等8程序效率程序效率为

806、程序效率所作的规范,如为程序效率所作的规范,如“循环体内工作量最小化循环体内工作量最小化”9质量保证质量保证为提高软件质量所作的规范,如为提高软件质量所作的规范,如“防止内存操作越界防止内存操作越界”编码原则编码原则5)分离功能独立的代码块形成新的模块)分离功能独立的代码块形成新的模块将功能独立的代码块独立出来形成新的模将功能独立的代码块独立出来形成新的模块,增加模块的内聚度,有利于代码的重块,增加模块的内聚度,有利于代码的重用和可修改性。用和可修改性。13.4 编程风格编程风格不同的程序员可能具有不同的编程风格,有时不同的程序员可能具有不同的编程风格,有时候很难说哪种风格好,哪种风格不好,比

807、如在候很难说哪种风格好,哪种风格不好,比如在分支语句之后的语句块,一些程序员可能习惯分支语句之后的语句块,一些程序员可能习惯这样:这样:if(ab).而另外的程序员喜欢这样:而另外的程序员喜欢这样:if(ab).13.4 编程风格编程风格一般的软件组织允许程序员在不影响一般的软件组织允许程序员在不影响代码的可读性、可修改性、可测试性、代码的可读性、可修改性、可测试性、可维护性的基础上使用自己的风格编可维护性的基础上使用自己的风格编写程序。但是有些规则则是所有程序写程序。但是有些规则则是所有程序员必须遵守的。员必须遵守的。好的编程风格应遵循的规则好的编程风格应遵循的规则1)节简化()节简化(ec

808、onomy)不使用不必要的变量和函数不使用不必要的变量和函数避避免免变变量量重重名名,变变量量重重名名可可导导致致很很难难被被发发现现的错误。的错误。尽量减小代码量。尽量减小代码量。尽量减少代码的执行时间,提高执行效率。尽量减少代码的执行时间,提高执行效率。避免功能冗余的模块。避免功能冗余的模块。尽量不使用全局变量。尽量不使用全局变量。好的编程风格应遵循的规则好的编程风格应遵循的规则2)模块化()模块化(Modularity) 确保物理和逻辑功能密切相关。确保物理和逻辑功能密切相关。 限定一个模块完成一个独立的功能,限定一个模块完成一个独立的功能, 提高模块的内聚度。提高模块的内聚度。 检查代

809、码的重复率,重复多的代码,检查代码的重复率,重复多的代码, 要抽出来作为一个单独的模块。要抽出来作为一个单独的模块。好的编程风格应遵循的规则好的编程风格应遵循的规则3)简单化()简单化(Simplicity) 采用直接了当的算法,避免使用技巧采用直接了当的算法,避免使用技巧 性高和难懂的代码。性高和难懂的代码。 使用简单的数据结构,避免使用多维使用简单的数据结构,避免使用多维 数组、指针和复杂的表。数组、指针和复杂的表。 注意对象命名的一致性。注意对象命名的一致性。 以手工的方式简化算术和逻辑表达式。以手工的方式简化算术和逻辑表达式。好的编程风格应遵循的规则好的编程风格应遵循的规则4)结构化)

810、结构化按标准化的次序说明数据;按标准化的次序说明数据;按字母顺序说明对象名按字母顺序说明对象名使用读者明了的结构化程序部件;使用读者明了的结构化程序部件;采用直截了当的算法;采用直截了当的算法;根据应用背景排列程序各个部分;根据应用背景排列程序各个部分;好的编程风格应遵循的规则好的编程风格应遵循的规则4)结构化()结构化(structure)不随意为效率而牺牲程序的清晰度和可读性;不随意为效率而牺牲程序的清晰度和可读性;让机器多做烦琐的工作,如重复、库函数;让机器多做烦琐的工作,如重复、库函数;用公共函数调用代替重复出现的表达式;用公共函数调用代替重复出现的表达式;避免循环、分支的嵌套层数过高

811、;避免循环、分支的嵌套层数过高;单入口单出口。单入口单出口。好的编程风格应遵循的规则好的编程风格应遵循的规则5)文档化()文档化(documentation)有效、适当地使用注释。有效、适当地使用注释。协调使用程序块注释和程序行注释。协调使用程序块注释和程序行注释。保持文档和程序的同步。保持文档和程序的同步。好的编程风格应遵循的规则好的编程风格应遵循的规则6)格式化()格式化(layout)始终采用统一缩进规则;始终采用统一缩进规则;适当插入括号表明运算次序、排除二义性;适当插入括号表明运算次序、排除二义性;有效地使用空格符以区别程序的不同意群。有效地使用空格符以区别程序的不同意群。13.5

812、程序设计支持环境(程序设计支持环境(PSE)PSE,programming support environment 即编程所使用的集成开发环境:即编程所使用的集成开发环境: IDE,integrated development environmentPSE完成程序编辑、编译、调试、配置管理、完成程序编辑、编译、调试、配置管理、项目管理等一组任务。项目管理等一组任务。13.5 程序设计支持环境(程序设计支持环境(PSE)好的好的PSE应该具有如下的特性:应该具有如下的特性: 1)通通用用性性。适适用用于于不不同同的的语语言言、不不同同的的应应用领域和开用领域和开 发方法。发方法。2)适适应应性性

813、。通通过过设设置置,可可以以配配置置出出满满足足不不同需要的同需要的PSE实例。实例。3)开放性。能方便的增加新工具。)开放性。能方便的增加新工具。4)支支持持重重用用。能能支支持持可可重重用用组组件件的的查查询询、存储和使用。存储和使用。13.5 程序设计支持环境(程序设计支持环境(PSE)5)自控性。保证自身操作的正确性和协调。)自控性。保证自身操作的正确性和协调。6)自带数据库。提供数据库用于管理已开)自带数据库。提供数据库用于管理已开 发软件产品发软件产品7)保证质量。有助于提高所开发软件的质)保证质量。有助于提高所开发软件的质 量。量。8)吸引用户。用户愿意使用。)吸引用户。用户愿意

814、使用。9)有竞争力。)有竞争力。PSE能真正提高软件的生产能真正提高软件的生产 率。率。微软的微软的VS.Net微软的微软的VS.Net集成了上述全部的特性,该环集成了上述全部的特性,该环境不仅包含了开发软件所需的全部工具,境不仅包含了开发软件所需的全部工具,还包括项目安装部署工具。还包括项目安装部署工具。通用性:通用性:VS.Net可以使用的语言包括可以使用的语言包括CC+,C# VB.Net等,它不仅支持面向对象的开等,它不仅支持面向对象的开发方法,也支持面向过程的开发方法。如发方法,也支持面向过程的开发方法。如图图1351所示。所示。 图图1351 VS.Net的通用性的通用性适应性:适

815、应性:VS.Net可提供多种界面和操作可提供多种界面和操作风格以迎合具有不同编程背景的程序员。风格以迎合具有不同编程背景的程序员。图图1352 VS.Net的适应性的适应性开放性:开放性:VS.Net提供了开放工具的方法提供了开放工具的方法图图1353 VS.Net的开放性的开放性 支持重用:支持重用:VS.Net对组件的操作提供了完全的支持对组件的操作提供了完全的支持图图1354 VS.Net的支持重用开放性的支持重用开放性课程名称:软件工程课程名称:软件工程 第第22讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第14章章 软件测试软件测试 14.1 软件测试的基础

816、知识软件测试的基础知识 14.2 软件测试技术软件测试技术 14.2.1 白盒测试白盒测试 1. 逻辑逻辑覆盖覆盖 教学目的:了解软件测试的基本知识。掌握逻辑覆盖测教学目的:了解软件测试的基本知识。掌握逻辑覆盖测 试技术。试技术。教学重点:软件测试的步骤和常见错误类型、逻辑覆盖。教学重点:软件测试的步骤和常见错误类型、逻辑覆盖。教学难点:软件测试的步骤、逻辑覆盖。教学难点:软件测试的步骤、逻辑覆盖。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第14章章 软件测试软件测试软件测试是对软件规格说明、软件设计软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。和

817、编码的最全面也是最后的审查。通过软件测试,可以发现软件中绝大部通过软件测试,可以发现软件中绝大部分潜伏的错误,从而可以大大提高软件分潜伏的错误,从而可以大大提高软件产品的正确性、可靠性,进而可显著提产品的正确性、可靠性,进而可显著提高产品质量。高产品质量。统计表明,软件测试工作往往占软件开统计表明,软件测试工作往往占软件开发总工作量的发总工作量的40%以上。甚至以上。甚至35倍以上。倍以上。第第14章章 软件测试软件测试本章将介绍:本章将介绍:软件测试的基本知识;软件测试的基本知识;软件测试的常用方法和技术;软件测试的常用方法和技术;软件测试的过程;软件测试的过程;软件的调试与排错技术;软件的

818、调试与排错技术;软件测试的工具。软件测试的工具。第第14章章软件测试软件测试14.1 软件测试的基本知识软件测试的基本知识14.2 软件测试技术软件测试技术14.3 软件测试过程软件测试过程14.4 调试调试14.5 测试工具测试工具14.1 软件测试的基本知识软件测试的基本知识软件测试是执行程序发现并排除程软件测试是执行程序发现并排除程序中潜伏的错误的过程。序中潜伏的错误的过程。软件测试是软件投入运行前,对软软件测试是软件投入运行前,对软件需求分析、设计、实现的强有力件需求分析、设计、实现的强有力的最终审查。的最终审查。14.1.1 软件测试的目标与原则软件测试的目标与原则测试用例测试用例为

819、了进行有效的测试而设计的输为了进行有效的测试而设计的输入数据和预期的输出结果数据。入数据和预期的输出结果数据。Myers在其软件测试著作中对软件测试的目标在其软件测试著作中对软件测试的目标提出以下观点:提出以下观点: 软件测试是为了发现错误而运行程序的过软件测试是为了发现错误而运行程序的过程;程; 一个好的测试用例能够发现至今尚未发现一个好的测试用例能够发现至今尚未发现的的 错误;错误; 一个成功的测试是发现了至今尚未发现的一个成功的测试是发现了至今尚未发现的错错 误的测试。误的测试。测试原则测试原则应尽早和不断地进行软件应尽早和不断地进行软件“测试测试”,即将这种,即将这种“测试测试”贯穿于

820、软件开发的各个阶段,坚持各贯穿于软件开发的各个阶段,坚持各个阶段的技术评审,以便尽早地发现和预防错个阶段的技术评审,以便尽早地发现和预防错误。误。测试用例中,不仅要选择合理的输入数据,还测试用例中,不仅要选择合理的输入数据,还要选择不合理的输入数据。要选择不合理的输入数据。在开发各阶段应事先分别制定出相应的测试计在开发各阶段应事先分别制定出相应的测试计划,在测试开始后应严格执行,防止随意性。划,在测试开始后应严格执行,防止随意性。对发现错误较多的程序模块,应进行重点测试。对发现错误较多的程序模块,应进行重点测试。Pareto指出,测试发现错误的指出,测试发现错误的80%集中在集中在20%的的模

821、块中。发现错误较多的模块质量较差,需重模块中。发现错误较多的模块质量较差,需重点测试,并要测试是否引入了新的错误。点测试,并要测试是否引入了新的错误。测试原则测试原则避免程序员测试自己的程序。避免程序员测试自己的程序。 测试用例的设计应有第三方参与。对于大型测试用例的设计应有第三方参与。对于大型软件的测试,一般的做法是:设计者与测试者软件的测试,一般的做法是:设计者与测试者共同完成单元测试任务,而综合测试由专门的共同完成单元测试任务,而综合测试由专门的测试机构负责,有时其中也可以有设计者参加测试机构负责,有时其中也可以有设计者参加用穷举测试是不现实的,一般通过设计测试用用穷举测试是不现实的,一

822、般通过设计测试用例,充分覆盖所有条件或所有语句即可。例,充分覆盖所有条件或所有语句即可。长期妥善保存测试计划、测试用例、出错统计长期妥善保存测试计划、测试用例、出错统计和有关的分析报告。和有关的分析报告。14.1.2 软件测试的步骤软件测试的步骤图图1411 测试步骤测试步骤部件部件代码代码部件部件代码代码单元测试单元测试单元测试单元测试单元测试单元测试部件部件代码代码集成测试集成测试功能测试功能测试性能测试性能测试验收测试验收测试安装测试安装测试设计设计规格说明规格说明系统系统功能需求功能需求其他其他软件需求软件需求用户需求用户需求规格说明规格说明用户用户环境环境集成后集成后的模块的模块功能

823、功能系统系统验证,验证,生效的生效的软件软件被接受被接受的系统的系统在使用中的系统在使用中的系统测试后测试后的模块的模块14.1.2 软件测试的步骤软件测试的步骤q在本书中,从软件工程的角度:在本书中,从软件工程的角度:将单元测试与详细设计对应起来,即在详细设计阶段将单元测试与详细设计对应起来,即在详细设计阶段就应制定出单元测试计划;就应制定出单元测试计划;而集成测试又称为综合测试,可以把概要设计和集成而集成测试又称为综合测试,可以把概要设计和集成测试对应起来,在概要设计阶段就可以制定集成测试测试对应起来,在概要设计阶段就可以制定集成测试计划;计划;将功能测试、性能(行为)测试、验收测试统称为

824、验将功能测试、性能(行为)测试、验收测试统称为验收测试(也称确认测试),与软件系统需求分析阶段收测试(也称确认测试),与软件系统需求分析阶段对应起来,在需求分析阶段就应制定出验收准则和验对应起来,在需求分析阶段就应制定出验收准则和验收测试计划,验收测试应提交经用户确认的软件产品;收测试计划,验收测试应提交经用户确认的软件产品;最后,将软件、硬件等要素构成一个完整的基于计算最后,将软件、硬件等要素构成一个完整的基于计算机的系统,再进行系统测试,使系统测试与系统定义机的系统,再进行系统测试,使系统测试与系统定义相对应,即在系统定义阶段就应制定系统测试计划。相对应,即在系统定义阶段就应制定系统测试计

825、划。14.1.2 软件测试的步骤软件测试的步骤图图1412 软件工程的开发与测试的关系软件工程的开发与测试的关系系统工程系统工程需求分析需求分析概要设计概要设计设计、编码设计、编码单元测试单元测试集成测试集成测试验收测试验收测试系统测试系统测试14.1.3 测试阶段的信息流测试阶段的信息流图图1413 测试阶段的信息流测试阶段的信息流测试测试评价评价排错排错可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试结果测试结果错误错误错误统计错误统计预期结果预期结果正确的程序正确的程序可靠性预测可靠性预测14.1.3 测试阶段的信息流测试阶段的信息流q测试的输入流有软件配置和测试配置。测试的输入

826、流有软件配置和测试配置。软件配置由需求规格说明、设计说明、源软件配置由需求规格说明、设计说明、源代码等组成;代码等组成;测试配置包括测试计划、测试用例(其中测试配置包括测试计划、测试用例(其中包括预期的结果)、测试工具等组成。包括预期的结果)、测试工具等组成。 测试结果评价测试结果评价经常发现严重的错误并需要修改软件,经常发现严重的错误并需要修改软件,则软件的质量和可靠性一定不高,需要则软件的质量和可靠性一定不高,需要进一步测试;进一步测试;如果测试所发现的错误不多且易于改正,如果测试所发现的错误不多且易于改正,软件功能看起来也较完善,则需考虑两软件功能看起来也较完善,则需考虑两种可能:种可能

827、:1)软件质量和可靠性确实令人满意;)软件质量和可靠性确实令人满意;2)测试不全面,很可能还潜伏着严重错误;)测试不全面,很可能还潜伏着严重错误;如果测试过程没有发现任何错误,则很如果测试过程没有发现任何错误,则很有可能是测试配置不合理。有可能是测试配置不合理。14.1.4 软件测试的常用方法软件测试的常用方法1静态测试静态测试q静静态态测测试试是是采采用用人人工工检检测测和和计计算算机机辅辅助助静静态态分分析的方法对程序进行检测。析的方法对程序进行检测。人人工工检检测测是是指指靠靠人人工工走走查查程程序序或或评评审审软软件件。这这种种走走查查与与评评审审主主要要针针对对编编码码的的质质量量和

828、和软软件件开开发发各各个个阶阶段段的的文文档档,特特别别是是总总体体设设计计和和详详细细设设计计阶阶段段的的错错误误。能能发发现现30%70%的的逻逻辑辑设设计计和和编编码错误。码错误。计计算算机机辅辅助助静静态态分分析析是是指指利利用用静静态态分分析析软软件件工工具具对对程程序序进进行行静静态态分分析析,主主要要检检测测变变量量是是否否用用错错、参参数数是是否否匹匹配配、循循环环嵌嵌套套是是否否有有错错、是是否否有有死死循循环环和和永永远远执执行行不不到到的的死死代代码码等等等等。同同时时,它还可对程序的特性进行分析。它还可对程序的特性进行分析。14.1.4 软件测试的常用方法软件测试的常用

829、方法2动态测试动态测试 动态测试是指事先设计好一组测试用例,动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。然后通过运行程序来发现错误。动态测试有两种测试方法:动态测试有两种测试方法: 黑盒测试;黑盒测试; 白盒测试。白盒测试。14.1.4 软件测试的常用方法软件测试的常用方法黑盒测试,又称为功能测试黑盒测试,又称为功能测试把被测的把被测的程序模块看成一个黑匣子,即完全不考程序模块看成一个黑匣子,即完全不考虑程序的内部结构和处理过程,测试仅虑程序的内部结构和处理过程,测试仅在程序的接口上进行。在程序的接口上进行。 白盒测试白盒测试把被测的程序看成一个透明把被测的程序看成一个透明

830、的白匣子,即完全了解程序的内部结构的白匣子,即完全了解程序的内部结构和详细的处理过程,测试是在程序的内和详细的处理过程,测试是在程序的内部结构上进行。即要求针对每一条逻辑部结构上进行。即要求针对每一条逻辑路径都要设计测试用例,检查每一个分路径都要设计测试用例,检查每一个分支和每一次循环的情况。支和每一次循环的情况。穷举测试是不现实的。如上图,设循环体应执穷举测试是不现实的。如上图,设循环体应执行行30次,循环体中有次,循环体中有4个独立的分支,则最多个独立的分支,则最多有有4 30 10 18个逻辑路径,假设每运行一个测试个逻辑路径,假设每运行一个测试用例平均花费用例平均花费1毫秒,则需花费毫

831、秒,则需花费3千多万年。一千多万年。一般选用少量最有效的测试用例,以便覆盖每一般选用少量最有效的测试用例,以便覆盖每一个条件、每一个路径和每一个语句,从而以最个条件、每一个路径和每一个语句,从而以最少的代价发现尽可能多的错误。少的代价发现尽可能多的错误。开始开始结束结束14.1.5 软件测试中常见的错误类型软件测试中常见的错误类型按照错误的影响和造成的后果进行分类,按照错误的影响和造成的后果进行分类,可分为:较小错误,中等错误,较严重可分为:较小错误,中等错误,较严重错误,严重错误,非常严重的错误,最错误,严重错误,非常严重的错误,最严重的错误。严重的错误。按照软件生存周期各个阶段分类,可分按

832、照软件生存周期各个阶段分类,可分为:问题定义错误、需求分析规格说明为:问题定义错误、需求分析规格说明错误、设计错误、编码错误等等。错误、设计错误、编码错误等等。这里重点介绍一种按照错误的性质和范这里重点介绍一种按照错误的性质和范围进行分类的方法,可以将错误分为如围进行分类的方法,可以将错误分为如下几类:下几类:按照错误的性质和范围进行分类按照错误的性质和范围进行分类1功能错误功能错误 需求规格说明错误。主要是指其中有需求规格说明错误。主要是指其中有错误、多余或遗漏的功能,有二义性错误、多余或遗漏的功能,有二义性或自相矛盾。或自相矛盾。设计实现错误。设计或实现的功能不设计实现错误。设计或实现的功

833、能不是规格说明或用户所要求的功能。是规格说明或用户所要求的功能。按照错误的性质和范围进行分类按照错误的性质和范围进行分类2系统错误系统错误 外部接口错误。如与打印机的接口错误。外部接口错误。如与打印机的接口错误。内部接口错误。指各程序模块间的联系存在错内部接口错误。指各程序模块间的联系存在错误。如输入误。如输入/输出、数据保护、子程序访问等。输出、数据保护、子程序访问等。硬件结构错误。如错误地理解硬件结构错误。如错误地理解I/O指令、中断指令、中断处理、设备启动和初始化等而引起的错误。处理、设备启动和初始化等而引起的错误。软件结构错误。由于软件结构不合理或不清晰软件结构错误。由于软件结构不合理

834、或不清晰所引起的错误。往往在系统满载时才能发现。所引起的错误。往往在系统满载时才能发现。操作系统错误。该类错误是由于不了解操作系操作系统错误。该类错误是由于不了解操作系统而引起的,操作系统本身也有错误。统而引起的,操作系统本身也有错误。控制与顺序错误。包括事件的时间顺序不正确、控制与顺序错误。包括事件的时间顺序不正确、等待一个不可能发生的事件等等。等待一个不可能发生的事件等等。资源管理错误。既资源使用不当。资源死锁等。资源管理错误。既资源使用不当。资源死锁等。按照错误的性质和范围进行分类按照错误的性质和范围进行分类3加工错误(算法错误)加工错误(算法错误)计算与操作错误。指计算、函数求值和一般

835、计算与操作错误。指计算、函数求值和一般操作过程中的错误。操作过程中的错误。初始化错误。如忘记了初始化工作区、数据初始化错误。如忘记了初始化工作区、数据区,错误地对循环变量赋初值,不正确的初区,错误地对循环变量赋初值,不正确的初始化等等。始化等等。局部控制和次序错误。如遗漏路径、不可达局部控制和次序错误。如遗漏路径、不可达到的代码段、循环嵌套或终止条件不正确、到的代码段、循环嵌套或终止条件不正确、死循环等等。死循环等等。逻辑错误。如多分支、判断条件不正确等。逻辑错误。如多分支、判断条件不正确等。按照错误的性质和范围进行分类按照错误的性质和范围进行分类4数据错误数据错误 动态数据错误。动态数据错误

836、。静态数据错误。静态数据指直接或间接地出现静态数据错误。静态数据指直接或间接地出现在程序或数据库中的数据,其内容和格式都是在程序或数据库中的数据,其内容和格式都是固定的。因此在内容或格式上都可能存在错误。固定的。因此在内容或格式上都可能存在错误。数据内容错误。是指由于内容被破坏或被错误数据内容错误。是指由于内容被破坏或被错误地解释而造成的错误。地解释而造成的错误。数据结构错误。包括数据结构说明错误和数据数据结构错误。包括数据结构说明错误和数据结构使用错误。结构使用错误。数据属性错误。数据属性是指数据内容的含义数据属性错误。数据属性是指数据内容的含义或语义,如整数、字符等。数据属性错误是指或语义

837、,如整数、字符等。数据属性错误是指对数据属性的错误解释和错误使用而导致的错对数据属性的错误解释和错误使用而导致的错误。误。按照错误的性质和范围进行分类按照错误的性质和范围进行分类5代码错误代码错误 代码错误主要包括语法错误、键入错误、代码错误主要包括语法错误、键入错误、对语句的理解错误等。对语句的理解错误等。 例如,例如,Myers(1976)指出,美国第一个)指出,美国第一个去金星的太空任务的失败是由于在一个去金星的太空任务的失败是由于在一个Fortran do循环中缺少一个逗号。循环中缺少一个逗号。14.2 软件测试技术软件测试技术 14.2.1 白盒测试白盒测试 白盒测试的原则是:白盒测

838、试的原则是:保证程序中每一独立的路径至少执行一次;保证程序中每一独立的路径至少执行一次;保证所有判定的每一个分支至少执行一次;保证所有判定的每一个分支至少执行一次;保证每个判定表达式中每个条件的所有可能结保证每个判定表达式中每个条件的所有可能结果至少出现一次;果至少出现一次;保证每一循环都在边界条件和一般条件至少各保证每一循环都在边界条件和一般条件至少各执行一次;执行一次;验证所有内部数据结构的有效性。验证所有内部数据结构的有效性。几种典型的白盒测试技术几种典型的白盒测试技术1逻辑覆盖逻辑覆盖 逻辑覆盖是指设计测试用例对程序的内逻辑覆盖是指设计测试用例对程序的内部分支逻辑结构进行部分或全部覆盖

839、的部分支逻辑结构进行部分或全部覆盖的技术。技术。 1)语)语句覆盖句覆盖 2)判)判定覆盖定覆盖 3)条)条件覆盖件覆盖 4)判)判定定/条件覆盖条件覆盖 5)条)条件组合覆盖件组合覆盖 6)路)路径覆盖径覆盖逻辑覆盖逻辑覆盖1)语句覆盖)语句覆盖 使程序中的每个语句至少执行一次。使程序中的每个语句至少执行一次。令令x=2,y=0,z=4作为测试数据,程序执作为测试数据,程序执行路径为行路径为abcde,使语句段,使语句段1和和2各执行一各执行一次,实现了语句覆盖。它不能检测所有次,实现了语句覆盖。它不能检测所有判定条件的错误。比如,错把判定条件的错误。比如,错把z1写成了写成了z1) AND

840、 (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde2)判定覆盖)判定覆盖分支覆盖分支覆盖判定覆盖是指设计足够多的测试用例,使判定覆盖是指设计足够多的测试用例,使每个判定的每种可能结果都至少出现一次,每个判定的每种可能结果都至少出现一次,也就是使每个判定的每个分支都至少执行也就是使每个判定的每个分支都至少执行一次。一次。可以设计如下两组数据以满足判定覆盖:可以设计如下两组数据以满足判定覆盖:x=3,y=0,z=1(通过路径(通过路径abce););x=2,y=1,z=2(通过路径(通过路径acde)。)。 判定覆盖必然满足语句覆盖。覆盖程度仍判定

841、覆盖必然满足语句覆盖。覆盖程度仍然不高。比如,错把然不高。比如,错把z1写成了写成了z1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde3)条件覆盖)条件覆盖条件覆盖是指设计足够的测试用例,使每个判定表条件覆盖是指设计足够的测试用例,使每个判定表达式中的每个条件的每种可能值都至少出现一次。达式中的每个条件的每种可能值都至少出现一次。如图,共有如图,共有4个条件:个条件:x 1,y = 0,x = 2,z 1。 条件覆盖要求设计测试用例,覆盖第一个判定表达条件覆盖要求设计测试用例,覆盖第一个判定表达式的式的x 1,y = 0,x 1,

842、y0等各种结果,并覆盖第等各种结果,并覆盖第二个判定表达式的二个判定表达式的x = 2,z 1,x 2,z 1等各种等各种结果。结果。(x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde3)条件覆盖)条件覆盖设计如下两组测试用例,可以满足条件覆盖的标准:设计如下两组测试用例,可以满足条件覆盖的标准: x=2,y=0,z=3(覆盖(覆盖x1,y=0,x=2,z1,通过路径,通过路径abcde);); x=1,y=1,z=1(覆盖(覆盖x1,y0,x2,z1,通过路径,通过路径ace)。)。(x1) AND (y=0)(x=2) OR

843、 (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde3)条件覆盖)条件覆盖但是,如果设计如下一组测试用例:但是,如果设计如下一组测试用例: x=1,y=0,z=3(覆盖(覆盖x1,y=0,x2,z1,通过路径,通过路径acde);); x=2,y=1,z=1(覆盖(覆盖x1,y0,x=2,z1,通过路径,通过路径ace)。)。 虽满足条件覆盖,但不满足语句覆盖和判定覆盖。虽满足条件覆盖,但不满足语句覆盖和判定覆盖。 (x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde4)判定)判定/条件覆盖条件覆盖它是指设计足

844、够的测试用例,使得判它是指设计足够的测试用例,使得判定表达式中的每个条件都取到所有可定表达式中的每个条件都取到所有可能的值(即满足条件覆盖),并使每能的值(即满足条件覆盖),并使每个判定表达式也都取到所有可能的判个判定表达式也都取到所有可能的判定结果(即满足判定覆盖)。定结果(即满足判定覆盖)。4)判定)判定/条件覆盖条件覆盖x=2,y=0,z=3(覆盖(覆盖x1,y=0,x=2,z1,通过路径,通过路径abcde);); x=1,y=1,z=1(覆盖(覆盖x1,y0,x2,z1,通过路径,通过路径ace)。)。(x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2

845、开始开始结束结束TTFFabcde5)条件组合覆盖)条件组合覆盖条件组合覆盖是指设计足够的测试用条件组合覆盖是指设计足够的测试用例,使得每个判定表达式中条件的各例,使得每个判定表达式中条件的各种可能值的组合都至少出现一次。这种可能值的组合都至少出现一次。这是一种较强的逻辑覆盖。是一种较强的逻辑覆盖。如图,两个判定表达式中含有如图,两个判定表达式中含有4个条件,个条件,共有共有8种组合:种组合: x1,y=0; x1,y0; x1,y=0; x1,y0; x=2,z1; x=2,z1; x2,z1;x2,z1。(x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始

846、开始结束结束TTFFabcdex=2,y=0,z=3; 覆盖条件组合覆盖条件组合和和,通过路径,通过路径abcde; x=2,y=1,z=1; 覆盖条件组合覆盖条件组合和和,通过路径,通过路径acde; x=0,y=0,z=3; 覆盖条件组合覆盖条件组合和和,通过路径,通过路径acde; x=1,y=1,z=1; 覆盖条件组合覆盖条件组合和和,通过路径,通过路径ace。但未通过路。但未通过路径径abce。(x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde6)路径覆盖)路径覆盖路径覆盖是指设计足够的测试用例,以覆盖被路径覆盖是指设

847、计足够的测试用例,以覆盖被测程序中所有可能的路径。测程序中所有可能的路径。如图,共有如图,共有4条路径,设计以下条路径,设计以下4组测试用例,组测试用例,就可以覆盖这就可以覆盖这4条路径:条路径:x=2,y=0,z=3;覆盖路径;覆盖路径abcde x=2,y=1,z=1;覆盖路径;覆盖路径acde x=1,y=1,z=1;覆盖路径;覆盖路径ace x=3,y=0,z=1;覆盖路径;覆盖路径abce(x1) AND (y=0)(x=2) OR (z1)语句段语句段1语句段语句段2开始开始结束结束TTFFabcde没有覆盖条件组没有覆盖条件组合合和和x1,y=0x2,z1实际测试实际测试在实际测

848、试时,为了达到充分测试的在实际测试时,为了达到充分测试的目的,一般以条件组合覆盖为主设计目的,一般以条件组合覆盖为主设计测试用例,然后再补充部分测试用例,测试用例,然后再补充部分测试用例,以便实现路径覆盖。以便实现路径覆盖。课程名称:软件工程课程名称:软件工程 第第23讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目:14.2 软件测试技术软件测试技术 14.2.1 白盒测试白盒测试 14.2.2 黑盒测试黑盒测试教学目的:掌握白盒、黑盒测试的概念和测试方教学目的:掌握白盒、黑盒测试的概念和测试方 法步骤。法步骤。教学重点:基本路径测试、黑盒测试技术教学重点:基本路径测试、黑

849、盒测试技术教学难点:基本路径测试。教学难点:基本路径测试。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:14.2.1 白盒测试白盒测试 2基本路径测试基本路径测试 其主要思想是根据软件详细设计的过程性其主要思想是根据软件详细设计的过程性描述或源代码中的控制流程求出程序的环描述或源代码中的控制流程求出程序的环形复杂性度量,然后用此度量确定程序的形复杂性度量,然后用此度量确定程序的基本路径集合,并由此导出一组测试用例基本路径集合,并由此导出一组测试用例来覆盖该集合中的每一个独立的路径,从来覆盖该集合中的每一个独立的路径,从而可以保证每个语句至少执行一次。而可以保证每个语句至少

850、执行一次。2基本路径测试基本路径测试【例例14.1】试用基本路径测试法对如下试用基本路径测试法对如下的的PDL描述或如图描述或如图1422所示的程序流所示的程序流程图设计测试用例。该例子描述了最程图设计测试用例。该例子描述了最多输入多输入50个值(以个值(以1作为输入结束标作为输入结束标志),计算其中有效的学生分数的个志),计算其中有效的学生分数的个数、总分数和平均值。数、总分数和平均值。PROCEDURE averageINTERFACE RETURNS average,sum,n1;* *n1为有效成绩的个数。为有效成绩的个数。* * INTERFACE ACCEPTS score; TY

851、PE score1,50 IS SCALAR ARRAY; TYPE average,n1,n2,sum IS SCALAR;* *n2为输入值的个数。为输入值的个数。* * TYPE i IS INTEGER; i = 1;n1=n2=0;sum=0; DO WHILE (score i 1)AND(n2=0)AND(score i 0 THEN average = sum/n1; ELSE average = 1; END IF;END average 图图1422 过程过程average的程序流程图的程序流程图开始开始 i =1,n1=n2=0,sum=0Score i 1 AND n2

852、0 AND scorei0average=sum/n1average= 1 返回返回FFFTTT12和和345和和6789101112【例例14.1】解:可按如下步骤解:可按如下步骤设计测试用例:设计测试用例: 步骤步骤1:根据详:根据详细设计或代码导细设计或代码导出过程出过程average的的流图。流图。123456789111012R1R2R3R4R5R6【例例14.1】步骤步骤2:据流图确定环形复杂性度量:据流图确定环形复杂性度量V(G):):1)V(G)=E N +2 = 16 12 + 2 = 6 ; 其中其中E为流图中的边数,为流图中的边数,N为结点数;为结点数;2)V(G)= 6

853、 (个区域);(个区域);3)V(G)= P + 1 = 5 + 1 = 6 ; 其中其中P为谓词结点的个数。在流图中,结点为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。是谓词结点。【例例14.1】步步骤骤3:确确定定基基本本路路径径集集合合(即即独独立立路路径径集集合合)。一一条条独独立立路路径径是是指指,和和其其他他的的独独立立路路径径相相比比,至至少少引引入入一一个个新新处处理理语语句句或或一一个个新新判判断断的的程程序序通通路路。V(G)值值正正好好等等于于该该程程序序的的独独立立路路径径的的条数。于是可确定条数。于是可确定6条独立的路径:条独立的路径:路径路径1:12

854、291012路径路径2:1291112路径路径3:12391012路径路径4:1234582路径路径5:12345682路径路径6:123456782【例例14.1】步步骤骤4:为为每每一一条条独独立立路路径径各各设设计计一一组组测测试试用用例例,以便强迫程序沿着该路径至少执行一次。以便强迫程序沿着该路径至少执行一次。1)路径)路径1的测试用例:的测试用例: scorek=有效分数值,当有效分数值,当k i ; score i = 1 , 2i50;期期望望结结果果:根根据据输输入入的的有有效效分分数数算算出出正正确确的的分分数数个数个数n1、总分、总分sum和平均分和平均分average。2

855、)路径)路径2的测试用例:的测试用例: score 1 = 1 ; 期望的结果:期望的结果:average = 1 ,其他量保持初值。,其他量保持初值。【例例14.1】3)路径)路径3的测试用例:的测试用例: 输输入入多多于于50个个有有效效分分数数,即即试试图图处处理理51个个分数,要求前分数,要求前51个为有效分数;个为有效分数;期期望望结结果果:n1=50、且且算算出出正正确确的的总总分分和和平平均分。均分。4)路径)路径4的测试用例:的测试用例: score i =有效分数,有效分数, 当当i50; score k 0 , k i ;期期望望结结果果:根根据据输输入入的的有有效效分分数

856、数算算出出正正确确的的 分分 数数 个个 数数 n1、 总总 分分 sum和和 平平 均均 分分average。【例例14.1】5)路径)路径5的测试用例:的测试用例: score i =有效分数,有效分数, 当当i100 , k i ;期期望望结结果果:根根据据输输入入的的有有效效分分数数算算出出正正确确的的 分分 数数 个个 数数 n1、 总总 分分 sum和和 平平 均均 分分average。6)路径)路径6的测试用例:的测试用例: score i =有效分数,有效分数, 当当i50;期期望望结结果果:根根据据输输入入的的有有效效分分数数算算出出正正确确的的 分分 数数 个个 数数 n1

857、、 总总 分分 sum和和 平平 均均 分分average。3循环测试循环测试1)对对于于最最多多为为n次次的的单单循循环环,可可设设计计测测试试用用例例实实现下列测试:现下列测试:跳过循环,即一次也不执行;跳过循环,即一次也不执行;仅循环仅循环1次;次;循环循环2次;次;循环循环m次,次,mn ;分别循环分别循环n 1次,次,n次,次,n+1次。次。2)对于嵌套循环的测试:)对于嵌套循环的测试:从从最最内内层层循循环环开开始始测测试试,此此时时外外层层循循环环都都取取最最小值,对内层进行单循环的测试;小值,对内层进行单循环的测试;向向外外退退一一层层进进行行测测试试,此此时时其其内内层层循循

858、环环取取一一些些典型值,其外层循环仍取最小值;典型值,其外层循环仍取最小值;继续向外层扩展,直至测试完成。继续向外层扩展,直至测试完成。14.2.2 黑盒测试黑盒测试主要是测试软件是否满足功能需求。主要是测试软件是否满足功能需求。黑盒测试主要测试的错误类型有:黑盒测试主要测试的错误类型有:不正确或遗漏的功能;不正确或遗漏的功能;接口错误;接口错误; 性能错误;性能错误;数据结构或外部数据访问错误;数据结构或外部数据访问错误;初始化或终止条件错误等等。初始化或终止条件错误等等。黑盒测试设计测试用例的方法:黑盒测试设计测试用例的方法: 等价类的划分、边界值分析、等价类的划分、边界值分析、 错误推测

859、、组合数据测试等。错误推测、组合数据测试等。1等价类划分等价类划分等价类划分的思想是将输入数据按有效的(合等价类划分的思想是将输入数据按有效的(合理的)和无效的(不合理的)划分成若干个等理的)和无效的(不合理的)划分成若干个等价类,认为测试等价类中的一个代表值的结果价类,认为测试等价类中的一个代表值的结果就等于对该类其他值的测试。利用等价类划分就等于对该类其他值的测试。利用等价类划分的测试步骤如下:的测试步骤如下: 1)划分等价类)划分等价类 从程序的功能说明中找出每个输入条件,然从程序的功能说明中找出每个输入条件,然后将其划分成若干个有效和无效的等价类。下后将其划分成若干个有效和无效的等价类

860、。下面给出等价类划分的几条经验性原则供参考:面给出等价类划分的几条经验性原则供参考:等价类划分的几条经验性原则等价类划分的几条经验性原则如如果果规规定定了了输输入入值值的的范范围围,则则可可划划分分出出一一个个有有效效的的等等价价类类(输输入入值值在在此此范范围围内内)和和两两个个无无效效的等价类(输入值小于最小值或大于最大值)。的等价类(输入值小于最小值或大于最大值)。 如如果果规规定定了了数数据据输输入入的的个个数数,则则可可划划分分出出一一个个有有效效的的等等价价类类(输输入入值值的的个个数数符符合合规规定定)和和两两个个无无效效的的等等价价类类(输输入入值值的的个个数数少少于于或或多多

861、于于规定个数)。规定个数)。 如如果果规规定定了了输输入入数数据据的的一一组组值值,而而且且程程序序对对不不同同的的输输入入值值进进行行不不同同的的处处理理,则则每每个个允允许许的的输输入入值值是是一一个个有有效效的的等等价价类类,此此外外还还有有一一个个无无效的等价类(规定的这一组值以外的值)。效的等价类(规定的这一组值以外的值)。等价类划分的几条经验性原则等价类划分的几条经验性原则如如果果规规定定了了输输入入数数据据必必须须遵遵循循的的规规则则,则则可可划划分分出出一一个个有有效效的的等等价价类类(符符合合规规则则)和和若若干干个个无无效效的的等等价价类类(从从不不同同的的角角度度违违反规

862、则)。反规则)。如如果果输输入入条条件件规规定定了了一一个个集集合合,则则可可划划分分出出一一个个有有效效的的等等价价类类(此此集集合合)和和一一个个无无效的等价类(此集合的补集)。效的等价类(此集合的补集)。 1等价类划分等价类划分2)设计测试用例)设计测试用例等等价价类类划划分分应应列列表表,并并为为每每一一个个等等价价类类编号。编号。设设计计一一个个有有效效等等价价类类的的测测试试用用例例,使使其其尽尽可可能能多多地地覆覆盖盖尚尚未未被被覆覆盖盖过过的的有有效效等等价价类类。如如此此重重复复,直直到到所所有有有有效效等等价价类类都被覆盖为止。都被覆盖为止。设计一个测试用例,仅覆盖一个无效

863、等设计一个测试用例,仅覆盖一个无效等价类,如此重复,直到所有无效等价类价类,如此重复,直到所有无效等价类都被覆盖为止。都被覆盖为止。2)设计测试用例)设计测试用例【例例14.1】设有一个档案管理系统,要求用户设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在输入以年月表示的日期。假设日期限定在1990年年1月月2003年年12月,并规定日期由月,并规定日期由6位位数字字符组成,前数字字符组成,前4位表示年,后位表示年,后2位表示位表示月。现用等价类划分法设计测试用例,来月。现用等价类划分法设计测试用例,来测试程序的测试程序的“日期检查功能日期检查功能”。【例例14.1】1)划分

864、等价类并编号)划分等价类并编号表表141等价类划分的结果等价类划分的结果输入等价类输入等价类有效等价类有效等价类无效等价类无效等价类日期的类型日期的类型及长度及长度6位数字字符位数字字符 有非数字字符有非数字字符少于少于6位数字字符位数字字符多于多于6位数字字符位数字字符年份范围年份范围在在19902003之间之间小于小于1990大于大于2003月份范围月份范围在在0112之间之间 等于等于00大于大于12【例例14.1】2)设计测试用例,以便覆盖所有的有效等)设计测试用例,以便覆盖所有的有效等 价类价类在在表表141中中列列出出了了3个个有有效效等等价价类类,编编号号分分别别为为、,设计的测

865、试用例如下:,设计的测试用例如下:测试数据测试数据 期望结果期望结果 覆盖的有效等价类覆盖的有效等价类200211 输入有效输入有效 、【例例14.1】3)为每一个无效等价类设计一个测试用例,)为每一个无效等价类设计一个测试用例, 设计结果如下:设计结果如下:测试数据测试数据 期望结果期望结果 覆盖的无效等价类覆盖的无效等价类95June 无效输入无效输入 20036 无效输入无效输入 2001006 无效输入无效输入 198912 无效输入无效输入 200401 无效输入无效输入 200100 无效输入无效输入 200113 无效输入无效输入 2边界值分析边界值分析边界值分析(边界值分析(b

866、oundary value analysis,BVA)是指设计测试用例,使程序在输入)是指设计测试用例,使程序在输入或输出的边界值或者边界值左右的值执或输出的边界值或者边界值左右的值执行。行。边界值分析方法可以单独设计测试用例,边界值分析方法可以单独设计测试用例,也可以作为等价类划分方法的补充,即也可以作为等价类划分方法的补充,即在各个等价类中主要是选择边界上及其在各个等价类中主要是选择边界上及其左右的值。例如例左右的值。例如例14.1中对月份范围的测中对月份范围的测试就可以选择试就可以选择00、01、02、11、12、13等数据作为测试用例。等数据作为测试用例。边界值分析方法设计测试用例的经

867、验性原则边界值分析方法设计测试用例的经验性原则1)如如果果输输入入条条件件指指定定了了范范围围a,b,则则a、b以以及及紧紧挨挨a、b左左右右的的各各一一个个值值都都应应作作为为测测试试用用例例。比比如如,学学生生成成绩绩为为0,100,应应取取1、0、1、99、100、101共共6个值作为测试用例。个值作为测试用例。2)如如果果输输入入条条件件指指定定了了输输入入数数据据的的个个数数范范围围,则则按按最最大大、最最小小个个数数及及其其左左右右的的个个数数各各设设计计一一个个测测试试用用例例。比比如如,一一个个输输入入文文件件应应包包括括1255个个记记录录,则则应应分分别别设设计计输输入入0

868、个个、1个个、2个、个、254个、个、255个、个、256个记录的测试用例。个记录的测试用例。3)将将规规则则1)和和2)应应用用于于输输出出条条件件,即即设设计计测测试用例使输出值达到边界值及其左右的值。试用例使输出值达到边界值及其左右的值。3错误推测错误推测错误推测法的基本思想是:程序测试错误推测法的基本思想是:程序测试员通过已经掌握的测试理论和实际测员通过已经掌握的测试理论和实际测试中积累的经验,推测程序在哪些情试中积累的经验,推测程序在哪些情况下可能发生错误,并将可能发生错况下可能发生错误,并将可能发生错误的情况列出,然后为每一可能发生误的情况列出,然后为每一可能发生错误的情况各设计一

869、个测试用例。错误的情况各设计一个测试用例。3错误推测错误推测例例如如,测测试试一一个个对对线线性性表表(比比如如数数组组)进进行行排排序序的的程程序序,可可推推测测列列出出以以下下几几项项需要特别测试的情况:需要特别测试的情况:1)输入的线性表为空表;)输入的线性表为空表;2)表中只含有一个元素;)表中只含有一个元素;3)输入表中所有元素已排好序;)输入表中所有元素已排好序;4)输入表已按逆序排好;)输入表已按逆序排好;5)输入表中部分或全部元素相同。)输入表中部分或全部元素相同。于于是是,可可以以针针对对以以上上列列出出的的每每一一种种情情况况各设计一个测试用例。各设计一个测试用例。4组合数

870、据测试组合数据测试实践表明,在单个测试用例没有测试出实践表明,在单个测试用例没有测试出错误的情况下,采用测试数据的某种组错误的情况下,采用测试数据的某种组合却可能检测出程序中隐藏很深的错误。合却可能检测出程序中隐藏很深的错误。组合数据测试法可以采用的有效工具有组合数据测试法可以采用的有效工具有判定表、判定树等。判定表、判定树等。以判定表为例,即列出输入数据的各种以判定表为例,即列出输入数据的各种组合情况和程序相应的动作、可能的输组合情况和程序相应的动作、可能的输出结果之间的对应关系,然后为判定表出结果之间的对应关系,然后为判定表的每一列至少设计一个测试用例。的每一列至少设计一个测试用例。课程名

871、称:软件工程课程名称:软件工程 第第24讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:教学题目: 14.3 软件测试过程软件测试过程 14.4 调试调试 14.5 测试工具测试工具教学目的:掌握软件的测试过程、调试的概念和教学目的:掌握软件的测试过程、调试的概念和 策略,了解自动测试工具策略,了解自动测试工具和调试工具。和调试工具。教学重点:基本路径测试、黑盒测试技术教学重点:基本路径测试、黑盒测试技术教学难点:基本路径测试。教学难点:基本路径测试。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:14.3 软件测试过程软件测试过程从宏观的角度讲,软件测试过程一般

872、可划分为从宏观的角度讲,软件测试过程一般可划分为单元测试、集成测试、验收测试和系统测试等单元测试、集成测试、验收测试和系统测试等几个主要测试阶段。几个主要测试阶段。对于每一个测试阶段,都应包含制定测试计划、对于每一个测试阶段,都应包含制定测试计划、设计测试用例、测试实施和测试结果的收集评设计测试用例、测试实施和测试结果的收集评估等。估等。其中,测试计划应包括具体的测试步骤、工作其中,测试计划应包括具体的测试步骤、工作量、进度和资源等。在测试的各个阶段,应适量、进度和资源等。在测试的各个阶段,应适宜地选择黑盒测试和白盒测试方法,由开发人宜地选择黑盒测试和白盒测试方法,由开发人员和一个独立的测试小

873、组单独、分别或共同完员和一个独立的测试小组单独、分别或共同完成测试任务,必要时还应有用户参加。成测试任务,必要时还应有用户参加。14.3.1 单元测试单元测试单元测试的测试对象单元测试的测试对象程序模块。程序模块。单元测试的依据单元测试的依据根据详细设计的描述根据详细设计的描述 制定的单元测试计划。制定的单元测试计划。单元测试单元测试多采用白盒测试技术。多采用白盒测试技术。单元测试单元测试可以并行进行。可以并行进行。14.3.1 单元测试单元测试1单元测试的任务单元测试的任务 1)模块接口测试)模块接口测试 2)模块局部数据结构的测试)模块局部数据结构的测试 3)模块中所有独立路径的测试)模块

874、中所有独立路径的测试 4)模块中各条错误处理路径的测)模块中各条错误处理路径的测试试 5)模块边界条件的测试)模块边界条件的测试1)模块接口测试)模块接口测试输入的实参与本模块的形参在个数、类型、输入的实参与本模块的形参在个数、类型、顺序、量纲上是否一致;顺序、量纲上是否一致;调调用用其其他他模模块块时时所所给给实实际际参参数数与与被被调调模模块块的的形形式参数在个数、类型、顺序、量纲上是否一致;式参数在个数、类型、顺序、量纲上是否一致;调调用用预预定定义义函函数数时时所所用用参参数数的的个个数数、类类型型、顺顺序、返回值的类型等是否正确;序、返回值的类型等是否正确;是否存在与当前入口点无关的

875、参数引用;是否存在与当前入口点无关的参数引用;是否修改了只读型参数;是否修改了只读型参数;1)模块接口测试)模块接口测试各各个个模模块块对对全全局局变变量量的的定定义义和和引引用用是是否否保持一致;保持一致;是否把某些约束作为参数传递。是否把某些约束作为参数传递。如果模块内包括外部输入输出,还应测如果模块内包括外部输入输出,还应测试文件属性、文件打开试文件属性、文件打开/关闭语句、格式关闭语句、格式说明、输入输出语句、缓冲区大小与记说明、输入输出语句、缓冲区大小与记录长度是否匹配、是否处理了文件尾、录长度是否匹配、是否处理了文件尾、输出信息中是否存在文字错误等方面的输出信息中是否存在文字错误等

876、方面的内容。内容。2)模块局部数据结构的测试)模块局部数据结构的测试主要的测试内容有:主要的测试内容有:不适合或不相容的类型说明;不适合或不相容的类型说明;变量名不正确(拼写或截断错误等);变量名不正确(拼写或截断错误等);变量无初值或初始化、缺省值有错;变量无初值或初始化、缺省值有错;出现上溢出、下溢出、地址异常等。出现上溢出、下溢出、地址异常等。3)模块中所有独立路径的测试)模块中所有独立路径的测试单元测试旨在找出如下错误:单元测试旨在找出如下错误:计计算算中中常常见见的的错错误误,有有:运运算算符符优优先先级级错错误误、混混合合运运算算类类型型匹匹配配错错误误、变变量量初初值错、达不到精

877、度、表达式不正确等。值错、达不到精度、表达式不正确等。不正确的比较判断和不恰当的控制流常不正确的比较判断和不恰当的控制流常见的错误,有:被比较的对象的类型不见的错误,有:被比较的对象的类型不匹配、错误地使用逻辑运算符及其优先匹配、错误地使用逻辑运算符及其优先级、计算误差引起的判断错误、循环终级、计算误差引起的判断错误、循环终止条件不合适、错误地修改了循环变量、止条件不合适、错误地修改了循环变量、迭代发散时不能退出循环等。迭代发散时不能退出循环等。4)模块中各条错误处理路径的测试)模块中各条错误处理路径的测试我我们们希希望望程程序序模模块块具具有有较较强强的的容容错错能能力力,这这就就需需要要在

878、在设设计计时时能能预预见见各各种种出出错错条条件件,并并预预先先设设计计好好各各种种出出错错处处理理通通路路,以以便便在在用用户户出出现现错错误误时时系系统统能给出恰当的提示而不使系统失效。能给出恰当的提示而不使系统失效。出错处理路径测试主要测试的错误有:出错处理路径测试主要测试的错误有:异常处理不当;异常处理不当;在在程程序序自自定定义义的的出出错错处处理理程程序序段段运运行行之之前前系系统统已已介入;介入;显显示示的的出出错错信信息息难难以以理理解解或或未未能能提提供供足足够够的的错错误误定位信息;定位信息;显示的错误与实际发生的错误不符等。显示的错误与实际发生的错误不符等。5)模块边界条

879、件的测试)模块边界条件的测试模块边界条件的测试是单元测试中最后、模块边界条件的测试是单元测试中最后、也是最重要的一项测试任务,因为程序最也是最重要的一项测试任务,因为程序最容易在边界上出错。可以采用边界值分析容易在边界上出错。可以采用边界值分析技术针对边界值及其左、右值设计测试用技术针对边界值及其左、右值设计测试用例,很有可能检测出新的错误。例,很有可能检测出新的错误。2单元测试的步骤单元测试的步骤通通常常,单单元元测测试试在在编编码码阶阶段段进进行行。在在源源程程序序代代码码编编制制完完成成并并经经过过编编译译检检查查和和评评审审后后,就就可可以以开开始始进进行行单单元元测测试试。测测试试用

880、用例例的的设设计计应应与与评评审审工工作作相相结结合合,根根据据测测试试计计划划和和详详细细设设计计信信息息设设计计测测试试数数据据,并并应应给出对应的期望结果。给出对应的期望结果。测试时需要为被测模块编制:测试时需要为被测模块编制: 一一个个驱驱动动模模块块(driver module)用用来来模模拟拟被被测测模模块块的的上上级级调调用用模模块块,用用它它接接收收测测试试数数据据,并并传传送送给被测模块,接收测试结果并输出。给被测模块,接收测试结果并输出。 若若干干个个桩桩模模块块(stub module)也也称称为为存存根根模模块块,用用来来代代替替被被测测模模块块所所调调用用的的子子模模

881、块块。其其作作用用是是为为被被测模块提供所需要的信息,因此,越简单越好。测模块提供所需要的信息,因此,越简单越好。图图14-3-1软件层次结构图软件层次结构图图图14-3-2模块模块A的单元测试环境的单元测试环境测试软件(指驱动模块和桩模块)并不作为软测试软件(指驱动模块和桩模块)并不作为软件产品的一部分提交给用户。件产品的一部分提交给用户。有些模块用单元测试的方法不能进行充分的测有些模块用单元测试的方法不能进行充分的测试,可在集成测试的过程中完成详尽的测试。试,可在集成测试的过程中完成详尽的测试。提高模块内聚度可简化单元测试过程。提高模块内聚度可简化单元测试过程。MABCDEF驱动驱动模块模

882、块A桩模块桩模块1桩模块桩模块2桩模块桩模块3测试测试用例用例测试测试结果结果14.3.2 集成测试集成测试集集成成测测试试 将将软软件件组组装装成成系系统统的的一一种种测测试试技技术。因此,又称为组装测试或综合测试。术。因此,又称为组装测试或综合测试。集集成成测测试试旨旨在在发发现现与与接接口口有有关关的的错错误误。这这些些错错误包括:误包括:数据通过接口时会丢失;数据通过接口时会丢失;一个模块的功能对另一个模块产生了不利影响;一个模块的功能对另一个模块产生了不利影响;几个子功能组合起来没有实现主功能;几个子功能组合起来没有实现主功能;全局数据结构出现错误;全局数据结构出现错误;误差的不断积

883、累达到不能接受的程度。误差的不断积累达到不能接受的程度。集成测试有两种集成方式:集成测试有两种集成方式: 非增量集成方式;非增量集成方式; 增量集成方式。增量集成方式。1非增量集成方式非增量集成方式非增量集成方式是将经过单元测试的所有非增量集成方式是将经过单元测试的所有模块一次性全部组装起来,然后进行整体模块一次性全部组装起来,然后进行整体测试,最后得到所要求的软件系统。测试,最后得到所要求的软件系统。这种集成方式容易出现混乱,开始可能遇这种集成方式容易出现混乱,开始可能遇到一大堆错误,错误定位非常困难,新旧到一大堆错误,错误定位非常困难,新旧错误交织在一起,会使测试变得更加困难。错误交织在一

884、起,会使测试变得更加困难。因此,一般不应采用这种集成方式。因此,一般不应采用这种集成方式。2增量集成方式增量集成方式可分为自顶向下集成和自底向上集成两种可分为自顶向下集成和自底向上集成两种方法。方法。 1)自顶向下集成)自顶向下集成 自顶向下集成方式是从主控模块开始,按自顶向下集成方式是从主控模块开始,按照软件的控制层次结构,以深度优先或广照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块组装在一度优先的策略,逐步把各个模块组装在一起。起。自顶向下集成测试的具体步骤自顶向下集成测试的具体步骤以以主主控控模模块块作作为为驱驱动动模模块块,其其直直接接调调用用的的下下属属模块都用模块

885、都用“桩模块桩模块”代替;代替;依依据据所所选选用用的的集集成成策策略略(深深度度优优先先或或广广度度优优先先)所所规规定定的的次次序序,每每次次只只用用一一个个实实际际模模块块替替代代一一个对应的桩模块;个对应的桩模块;每结合进一个模块立即测试一遍;每结合进一个模块立即测试一遍;为为了了检检测测加加入入新新模模块块是是否否引引入入了了新新的的错错误误,每每次次都都需需要要进进行行回回归归测测试试(即即部部分分或或全全部部地地重重复复以前做过的测试)。以前做过的测试)。 重复执行步骤重复执行步骤、,每重复一次,增,每重复一次,增加一个模块,直至构造起整个软件结构为止。加一个模块,直至构造起整个

886、软件结构为止。图图14-3-3被测软件被测软件系统结构图系统结构图深度优先策略深度优先策略 :以以M1作为驱动模块,作为驱动模块,首先将模块首先将模块M2加入其中,此时模块加入其中,此时模块M3、M4、M5、M6分别以桩模块分别以桩模块S3、S4、S5、S6代替,于是对由代替,于是对由M1、M2、S3、S4、S5、S6组成的子系统测试一遍;组成的子系统测试一遍;M1M2M4M5M6M7M8M3M1M2S4S3S5S6深度优先策略深度优先策略 :用用M5代替代替S5,并将,并将M8用桩模块用桩模块S8代替,对由代替,对由M1、M2、M5、S3、S4、S8、S6组成的子系统再测试一组成的子系统再测

887、试一遍;遍;M1M2M4M5M6M7M8M3M1M2S4S3M5S6S8深度优先策略深度优先策略 :用用M8代替代替S8,对由,对由M1、M2、M5、 M8、 S3、S4、S6组组成的子系统再测试一遍;成的子系统再测试一遍;M1M2M4M5M6M7M8M3M1M2S4S3M5S6M8深度优先策略深度优先策略 :用用M6代替代替S6,对由,对由M1、M2、M5、 M8、 M6 、 S3、S4组组成的子系统再测试一遍;成的子系统再测试一遍;M1M2M4M5M6M7M8M3M1M2S4S3M5M6M8深度优先策略深度优先策略 :用用M3代替代替S3,并以,并以S7代替代替M7,对由,对由M1、M2、

888、M5、 M8、 M6 、 M3、S7、S4组成的子系统再测试组成的子系统再测试一遍;一遍;M1M2M4M5M6M7M8M3M1M2S4M3M5M6M8S7深度优先策略深度优先策略 :用用M7代替代替S7,对由,对由M1、M2、M5、 M8、 M6 、 M3、M7、S4组成的子系统再测试一遍;组成的子系统再测试一遍;M1M2M4M5M6M7M8M3M1M2S4M3M5M6M8M7深度优先策略深度优先策略 :用用M4代替代替S4,对由,对由M1、M2、M5、 M8、 M6 、 M3、M7、M4组成的子系统再测试一遍;组成的子系统再测试一遍; 至此,整至此,整个系统测试完。个系统测试完。M1M2M4

889、M5M6M7M8M3M1M2M4M3M5M6M8M7广度优先策略广度优先策略广度优先策略广度优先策略沿控制层次结构水平地沿控制层次结构水平地向下移动,按一层一层的顺序将模块一向下移动,按一层一层的顺序将模块一个个地集成起来。如图的集成的顺序为个个地集成起来。如图的集成的顺序为M1、M2、M3、M4、M5、M6、M7、M8,在集成的过程中也需桩模块的配合。,在集成的过程中也需桩模块的配合。M1M2M4M5M6M7M8M3自顶向下集成的优缺点自顶向下集成的优缺点自顶向下集成的特点是不需要驱动模块,自顶向下集成的特点是不需要驱动模块,但需要大量的桩模块。但需要大量的桩模块。优点是能够尽早地验证程序的

890、主要控制优点是能够尽早地验证程序的主要控制和判断机制,可以较早发现此类错误,和判断机制,可以较早发现此类错误,从而减少以后的返工。从而减少以后的返工。缺点是在测试较高层模块时,低层模块缺点是在测试较高层模块时,低层模块采用较简单的桩模块来代替,不能反映采用较简单的桩模块来代替,不能反映实际情况,测试可能不充分。实际情况,测试可能不充分。2)自底向上集成)自底向上集成即从程序结构的最底层模块开始组装和测试。即从程序结构的最底层模块开始组装和测试。这种测试需要一定数量的驱动模块,而不需要这种测试需要一定数量的驱动模块,而不需要桩模块。桩模块。自底向上集成测试的具体步骤:自底向上集成测试的具体步骤:

891、 把把低低层层模模块块组组织织成成实实现现某某个个特特定定的的软软件件子子功功能的模块群(能的模块群(module cluster);); 为为每每一一个个模模块块群群开开发发一一个个驱驱动动模模块块,控控制制测测试数据的输入和测试结果的输出;试数据的输入和测试结果的输出; 对每个模块群进行测试;对每个模块群进行测试; 去去掉掉测测试试用用的的驱驱动动模模块块,用用较较高高层层模模块块将将几几个模块群组成新的更大的模块群。个模块群组成新的更大的模块群。 上述的上述的、步重复执行,直至整个程步重复执行,直至整个程序构造完毕。序构造完毕。自底向上集成自底向上集成举例举例图图1434 自底向上集成自

892、底向上集成M1M2M3模块群模块群1模块群模块群2模块群模块群3自底向上集成自底向上集成举例举例图图1434 自底向上集成自底向上集成M1M2M3D2D1D3模块群模块群1模块群模块群2模块群模块群3自底向上集成优缺点自底向上集成优缺点优点:优点:只需设计驱动模块,不需要设计桩模块,测试只需设计驱动模块,不需要设计桩模块,测试用例的设计也相对简单。用例的设计也相对简单。由于涉及到复杂算法和直接输入输出的模块最由于涉及到复杂算法和直接输入输出的模块最先得到组装和测试,可以在早期解决这些最容先得到组装和测试,可以在早期解决这些最容易出问题的部分;易出问题的部分;自底向上集成可以实施多个模块并行测试

893、。自底向上集成可以实施多个模块并行测试。缺点:缺点: 对高层控制与判断进行测试的时间较晚,如对高层控制与判断进行测试的时间较晚,如果到测试的后期才发现整体存在较严重问题,果到测试的后期才发现整体存在较严重问题,就不得不进行较大的返工,此时代价将是巨大就不得不进行较大的返工,此时代价将是巨大的。的。3)混合式测试及重点测试)混合式测试及重点测试自自顶顶向向下下和和自自底底向向上上两两种种集集成成测测试试方方法法的的优优缺缺点点刚刚好好相相反反,可可结结合合起起来来使使用用,即即对对于于上上层层模模块块采采用用自自顶顶向向下下的的方方法法,而而对对于于下下层层模模块块采采用用自自底底向向上上的的方

894、方法法,这这样样不不但但可可以以大大大大减减少少了了开开发发驱驱动动模模块块和和桩桩模模块块的的数数量量,还还可可以以充充分分发发挥挥各自的优点。各自的优点。在在集集成成测测试试过过程程中中应应对对关关键键模模块块进进行行重重点点测测试试。关关键键模模块块是是指指具具有有如如下下一一个个或或多多个个特特征征的的模模块块:对对应应多多条条需需求求;具具有有高高层层控控制制功功能能;复复杂杂、易易出出错错;有有特特殊殊性性能能要要求求。对对关关键键模模块块应尽早测试,并应进行反复的回归测试。应尽早测试,并应进行反复的回归测试。3集成测试文档集成测试文档集成测试文档即测试说明书(集成测试文档即测试说

895、明书(test specifications)应给出集成的总体规)应给出集成的总体规划和某些特殊测试的描述。它将作划和某些特殊测试的描述。它将作为软件配置的一部分提交给用户。为软件配置的一部分提交给用户。测试说明书的主要内容提纲如下:测试说明书的主要内容提纲如下:测试说明书的主要内容提纲测试说明书的主要内容提纲1)测试范围)测试范围2)测试计划)测试计划 A测试的各个阶段和划分模块群情况测试的各个阶段和划分模块群情况 B进度安排进度安排 C开销软件(驱动和桩模块)开销软件(驱动和桩模块) D环境和资源环境和资源测试说明书的主要内容提纲测试说明书的主要内容提纲3)各个模块群测试过程的描述,包括:

896、)各个模块群测试过程的描述,包括: A集成的顺序集成的顺序 用途用途 被测模式被测模式 B模块群中各模块单元测试的情况模块群中各模块单元测试的情况 模块的测试描述模块的测试描述 开销软件描述开销软件描述 期望的结果期望的结果测试说明书的主要内容提纲测试说明书的主要内容提纲 C测试环境测试环境 特殊工具和技术特殊工具和技术 开销软件的描述开销软件的描述 D测试用例测试用例 E模块群的期望结果等模块群的期望结果等4)实际测试结果)实际测试结果5)参考文献)参考文献6)附录。)附录。14.3.3 验收测试验收测试又称为确认测试。确认测试是一种验又称为确认测试。确认测试是一种验收形式的测试,主要是检查

897、软件是否收形式的测试,主要是检查软件是否满足软件需求规格说明书中的确认标满足软件需求规格说明书中的确认标准,即测试软件能否按照合同的要求准,即测试软件能否按照合同的要求运行。运行。1验收测试的实施验收测试的实施验收测试需要采用一系列的黑盒测试来完成。验收测试需要采用一系列的黑盒测试来完成。参加人员有:专门的测试人员,参加人员有:专门的测试人员, 必须有用户或必须有用户或客户参加。客户参加。文档:需求规格说明书、用户手册等,应事先文档:需求规格说明书、用户手册等,应事先 制定测试计划,确定测试的种制定测试计划,确定测试的种类、测试类、测试 进度、设计具体的测试用例。进度、设计具体的测试用例。软件

898、验收测试的中心任务是测试软件是否满足软件验收测试的中心任务是测试软件是否满足合同规定的所有功能和性能,文档资料是否齐合同规定的所有功能和性能,文档资料是否齐全,人机界面以及可移植性、兼容性、可维护全,人机界面以及可移植性、兼容性、可维护性、容错能力等方面是否达到了用户的期望。性、容错能力等方面是否达到了用户的期望。1验收测试的实施验收测试的实施经经过过验验收收测测试试后后,其其结结果果可可能能是是以以下下两两种情况之一种情况之一 : 1)功能、性能等各项指标满足需求规格)功能、性能等各项指标满足需求规格 说明的要求,用户可以接受;说明的要求,用户可以接受; 2)功能、性能等各项指标不满足需求规

899、)功能、性能等各项指标不满足需求规 格说明的全部要求,用户不能接受。格说明的全部要求,用户不能接受。对于第二种结果,应提交一份问题分析对于第二种结果,应提交一份问题分析报告。报告。2软件配置复审软件配置复审软件配置复审是验收测试的重要环节之一。软件配置复审是验收测试的重要环节之一。软件配置复审的任务是审查软件配置(组软件配置复审的任务是审查软件配置(组成程序、所有文档资料、数据结构的所有成程序、所有文档资料、数据结构的所有项目)的正确性、完整性和一致性,以便项目)的正确性、完整性和一致性,以便确保软件配置齐全、分类有序,并包括软确保软件配置齐全、分类有序,并包括软件维护所必需的细节,从而为以后

900、的软件件维护所必需的细节,从而为以后的软件维护工作奠定了基础。维护工作奠定了基础。3、测试测试要验证所开发的软件是否真正满足最终用要验证所开发的软件是否真正满足最终用户的要求,就应由用户在其实际工作的环户的要求,就应由用户在其实际工作的环境中进行一系列的境中进行一系列的“验收测试验收测试”。但一方面用户进行但一方面用户进行“验收测试验收测试” ” 可能导致可能导致开发延期,另一方面是一个软件产品不可开发延期,另一方面是一个软件产品不可能由每个用户验收。因此,通常的做法是能由每个用户验收。因此,通常的做法是采用采用“、测试测试”的方法。的方法。1)测试测试所谓所谓测试,可以是由用户在开发环境下进

901、行测试,可以是由用户在开发环境下进行的一种测试,也可以是软件公司内部的的一种测试,也可以是软件公司内部的“用户用户”在模拟实际操作环境下进行的一种测试。被在模拟实际操作环境下进行的一种测试。被测试的是即将面市的软件产品的测试的是即将面市的软件产品的版本。版本。测试是在受控制的环境下进行的测试,其目测试是在受控制的环境下进行的测试,其目的是检测软件产品的功能(的是检测软件产品的功能(Function)、可使)、可使用性(用性(Usability)、可靠性()、可靠性(Reliability)、)、性能(性能(Performance)和支持()和支持(Support),),即即FURPS,特别是产

902、品的界面和特色。,特别是产品的界面和特色。参加参加测试的人员是除了开发人员之外最先测试的人员是除了开发人员之外最先“使用使用”产品的人员,他们提出的修改意见是很产品的人员,他们提出的修改意见是很有价值的。经过有价值的。经过测试并对软件进行修改后,测试并对软件进行修改后,所生成的软件产品称为所生成的软件产品称为版本。版本。2)测试测试测试是由软件的多个用户在用户的实际测试是由软件的多个用户在用户的实际使用环境下对软件产品的使用环境下对软件产品的版本进行的测版本进行的测试。试。测试,开发者不在现场,要求用户记录测试,开发者不在现场,要求用户记录所遇到的问题,并定期向开发者报告异所遇到的问题,并定期

903、向开发者报告异常情况、提出意见和建议,供开发者修常情况、提出意见和建议,供开发者修改、完善。改、完善。测试将进一步检测软件的测试将进一步检测软件的FURPS,并着,并着重于产品的支持性(包括文档、用户培重于产品的支持性(包括文档、用户培训等)。在训等)。在测试阶段,软件产品的所有测试阶段,软件产品的所有手册应完全定稿,可以向用户提交最终手册应完全定稿,可以向用户提交最终的软件产品了。的软件产品了。14.3.4 系统测试系统测试软件开发完毕,就应和系统硬件、数据软件开发完毕,就应和系统硬件、数据库等其他系统要素集成为一个完整的系库等其他系统要素集成为一个完整的系统。在集成的过程中,要进行一系列的

904、统。在集成的过程中,要进行一系列的系统调试和测试,以便验证各个系统要系统调试和测试,以便验证各个系统要素能否在软件的控制下有条不紊地工作,素能否在软件的控制下有条不紊地工作,实现系统规格说明中所规定的系统功能、实现系统规格说明中所规定的系统功能、性能等系统需求。性能等系统需求。系统测试需要有硬件工程师、软件工程系统测试需要有硬件工程师、软件工程师、数据库工程师、专业领域的专家等师、数据库工程师、专业领域的专家等各类技术人员参加,协同完成调试和测各类技术人员参加,协同完成调试和测试任务。试任务。14.3.4 系统测试系统测试在进行系统测试之前,软件工程师应该完成以下几在进行系统测试之前,软件工程

905、师应该完成以下几项工作:项工作:1)参与系统测试的规划和设计,从软件的角)参与系统测试的规划和设计,从软件的角 度保证系统测试的合理性;度保证系统测试的合理性; 2)设计测试用例,模拟错误数据和软件界面)设计测试用例,模拟错误数据和软件界面 可能发生的错误,记录测试结果,为系统可能发生的错误,记录测试结果,为系统 测试提供支持和帮助;测试提供支持和帮助; 3)为测试软件系统的输入信息设计出错处理通路。)为测试软件系统的输入信息设计出错处理通路。系统测试应根据系统规格说明书的验收准则进行各系统测试应根据系统规格说明书的验收准则进行各种不同的测试,目的是使系统充分运行,验证其是种不同的测试,目的是

906、使系统充分运行,验证其是否实现了系统需求。否实现了系统需求。几类系统测试简介几类系统测试简介功功能能测测试试:许许多多系系统统功功能能只只有有在在系系统统环环境境下下进进行测试,才能验证是否满足系统功能需求。行测试,才能验证是否满足系统功能需求。性性能能测测试试:在在整整个个系系统统的的真真实实环环境境下下,必必需需进进行行系系统统性性能能测测试试,以以便便全全面面、可可靠靠地地测测试试系系统统的运行性能。的运行性能。恢恢复复测测试试:主主要要是是验验证证系系统统的的容容错错能能力力以以及及在在发发生生错错误误导导致致系系统统失失败败后后系系统统的的恢恢复复能能力力。测测试试的的方方法法是是采

907、采取取各各种种方方法法使使系系统统失失败败,再再验验证证系统能否按照预定的要求尽快恢复。系统能否按照预定的要求尽快恢复。几类系统测试简介几类系统测试简介安安全全测测试试:检检查查系系统统对对非非法法入入侵侵者者的的防防范范能能力力。可由测试人员扮演入侵者的角色。可由测试人员扮演入侵者的角色。容容量量测测试试:例例如如使使操操作作系系统统作作业业队队列列“满满员员”,考核是否能处理规定数量的任务。,考核是否能处理规定数量的任务。压压力力测测试试:对对负负荷荷可可变变的的系系统统验验证证其其在在超超负负荷荷的情况下的承受能力。的情况下的承受能力。可可用用性性测测试试:对对接接口口结结构构、输输出出

908、量量定定义义、出出错错信息、精度、响应方式的可用性的考核。信息、精度、响应方式的可用性的考核。存存储储器器测测试试:考考核核有有关关存存储储器器的的指指标标,如如缓缓冲冲区的大小等。区的大小等。兼容性兼容性/转换性能测试:用于测试程序的兼容转换性能测试:用于测试程序的兼容性和变换规程。性和变换规程。几类系统测试简介几类系统测试简介构构成成测测试试:对对程程序序本本身身每每种种可可能能的的构构成成进进行行测测试试,至至少少对对每每种种硬硬设设备备,程程序序的的最小和最大构成进行测试。最小和最大构成进行测试。可可靠靠性性测测试试:按按照照规规格格说说明明的的规规定定,考考核程序的可靠性。核程序的可

909、靠性。可可服服务务性性测测试试:对对系系统统的的服服务务性性手手段段如如诊断程序、维护规程等的测试。诊断程序、维护规程等的测试。资料测试:测试用户资料的准确性。资料测试:测试用户资料的准确性。规程测试:测试各类人员应执行的规程。规程测试:测试各类人员应执行的规程。安装测试:对安装规程的考核测试。安装测试:对安装规程的考核测试。14.4 调试调试 14.4.1 调试的概念调试的概念 调试则是在进行了一次成功的测试之后调试则是在进行了一次成功的测试之后立即开始的。立即开始的。调试的目的是确定错误的位置和引起错调试的目的是确定错误的位置和引起错误的原因,并加以改正。因此,又称为误的原因,并加以改正。

910、因此,又称为排错或纠错。排错或纠错。实践表明,错误定位是软件工程中最困实践表明,错误定位是软件工程中最困难的工作,确定发生错误的位置和内在难的工作,确定发生错误的位置和内在原因所需的工作量几乎占整个调试工作原因所需的工作量几乎占整个调试工作量的量的90%。14.4.1 调试的概念调试的概念隐藏在程序中的错误的特殊的性质包括:隐藏在程序中的错误的特殊的性质包括:错误的表现远离引起错误的位置和内在原因,错误的表现远离引起错误的位置和内在原因,尤其对高度耦合的程序结构更是如此;尤其对高度耦合的程序结构更是如此;某些错误现象可能是假象;某些错误现象可能是假象;纠正一个错误可能引起多个错误,也可能掩盖纠

911、正一个错误可能引起多个错误,也可能掩盖其他错误;其他错误;由于操作员的疏忽致使错误现象无法重现,很由于操作员的疏忽致使错误现象无法重现,很难追踪;难追踪;错误可能不是直接由程序引起的;错误可能不是直接由程序引起的;某些输入条件难于精确地再构造(如某些实时某些输入条件难于精确地再构造(如某些实时系统的输入次序不确定);系统的输入次序不确定);错误现象时有时无。错误现象时有时无。14.4.2 调试策略调试策略分为三类:分为三类: 原始类;原始类; 归纳法归纳法 排除类;排除类; 回溯类。回溯类。 演绎法演绎法1原始类(原始类(brute force)其其主主要要思思想想是是“通通过过程程序序运运行

912、行现现场场找找错错”。例例如如输输出出存存储储器器、寄寄存存器器的的内内容容,在在程程序序中中插插入入打打印印语语句句等等等等。这这种种方方法法的的效效率率低低,还还需需要要修修改改程程序序,更依赖测试人员的能力和经验。更依赖测试人员的能力和经验。14.4.2 调试策略调试策略2归纳法调试归纳法调试 归归纳纳法法调调试试是是从从测测试试结结果果发发现现的的错错误误入入手手,收收集集正正常常执执行行或或出出错错的的数数据据,分分析析他他们们之之间间的的关关系系,提提出出出出错错原原因因的的假假设设,然然后后再再验验证证或或否否定定这这个个假假设设。其其具具体步骤如下:体步骤如下:1)收收集集数数

913、据据:收收集集程程序序做做对对了了什什么么和和做做错错了什么的有关全部数据;了什么的有关全部数据;2)整整理理、分分析析数数据据:对对收收集集的的数数据据进进行行分分析析、比比较较和和整整理理,注注意意观观察察数数据据间间的的关关系,从错误的症状中发现线索;系,从错误的症状中发现线索;2归纳法调试归纳法调试3)提提出出假假设设:对对这这些些线线索索进进行行研研究究和和推推测测,提提出出有有关关错错误误产产生生的的原原因因和和部部位位的的一一个个或或多多个个假假设设。如如果果有有多多个个假假设设,首首先先选选择可能性最大的一个。择可能性最大的一个。4)证证明明假假设设:由由数数据据验验证证或或反

914、反正正假假设设,如如果果假假设设得得到到证证实实,据据此此阅阅读读程程序序找找出出出出错错原原因因和和位位置置并并进进行行改改正正;如如果果无无法法验验证证,则则可可能能假假设设错错误误或或有有多多重重错错误误,需需要提出新的假设,进行新的验证。要提出新的假设,进行新的验证。14.4.2 调试策略调试策略3演绎法调试演绎法调试 演演绎绎法法是是枚枚举举所所有有可可能能引引起起出出错错的的原原因因作作为为假假设设,然然后后从从中中排排除除不不可可能能发发生生的的原原因因和和假假设设,对对余余下下的的假假设设进进行行不不断断地地验验证证和和改改进进,最最后后从从中推演出出错的原因和部位。中推演出出

915、错的原因和部位。4回溯法调试回溯法调试 对对小小型型程程序序进进行行调调试试,回回溯溯法法是是一一种种有有效效的的方方法法。该该方方法法是是从从发发现现错错误误现现象象的的地地方方出出发发,人人工工沿沿程程序序的的控控制制流流程程向向回回追追踪踪,直直至至找找到到产产生生错错误误的的原原因因为为止止。但但是是,当当程程序序的的规规模模较较大大时时,由由于于需需回回溯溯的的路路线线显显著著增增加加,因因此此无无法法做做到完全回溯,只好采用其他的调试方法。到完全回溯,只好采用其他的调试方法。14.5 测试工具测试工具 14.5.1 自动测试工具自动测试工具 1)模块驱动工具()模块驱动工具(mod

916、ule animate tool)2)静态分析器()静态分析器(static analyzers););3)测试覆盖监视器;)测试覆盖监视器;4)程序正确性证明器;)程序正确性证明器;5)测试数据生成器()测试数据生成器(test data generators););6)环境模拟器;)环境模拟器; 此此外外,还还有有:代代码码审审查查器器、测测试试文文件件产产生生器器、测测试试验验证证器器、符符号号处处理理系系统统、输输出出比比较较器器、测试套具,等等。测试套具,等等。14.5.2 调试工具调试工具在早期,调试工具用符号调试器。在早期,调试工具用符号调试器。目目前前的的大大多多数数程程序序设

917、设计计环环境境,如如VB、VC+、Borland C+ Builder、PB、C#等等都都是是带带有有CASE工工具具的的集集成成开开发发环环境境,即即将将编编辑辑、编编译译、连连接接、运运行行、调调试试、打打包包、项项目目管管理理、文文件件管管理理、部部件件管管理理、数数据据库库等等多多个个工工具具集集成成在在一一起起。其其中中的的调调试试工工具具常常见见的的功功能能有有设设置置断断点点,单单步步执执行行,跟跟踪踪,查查看看、修修改改变变量量或或表表达达式式的的值值等等等。等。习题习题14.6 假假设设某某程程序序读读入入三三个个整整数数,分分别别解解释释为为三三角角形形的的各各边边,并并据

918、据此此打打印印信信息息,说说明明三三角角形形是是普普通通的的、等等腰腰的的或或等等边边的的。为此程序设计一组有效的测试用例。为此程序设计一组有效的测试用例。 14.7 设设计计并并实实现现上上题题说说明明的的程程序序(必必要要的的地地方方增增加加出出错错处处理理),用用基基本本路路径径测测试试法法设设计计测测试试用用例例,实实际际测测试试和和调调试试后后总结所得到的结果。总结所得到的结果。解:解:1)程序流程图如下:)程序流程图如下:输入输入a,b,ca+b=ca=ba=0|b=0|c=0输入输入a,b,c输出不是输出不是a=c输出等边输出等边输出等腰输出等腰a=c输出等腰输出等腰b=c输出等

919、腰输出等腰输出普通输出普通FTTTTTTFFFFF开始开始结束结束12、3和和456 和和 7891011121314151617182)C语言程序如下:语言程序如下:#include math.h main( ) int a ,b , c; printf (please input a , b , c: ); scanf (%d%d%d , &a , &b , &c ); while ( a=0 | b=0 | c 0!nplease input a , b , c: ); scanf (%d%d%d ,&a , &b , &c ); if ( a+b = c ) printf (“It i

920、s not a triangle!n ); else if ( a=b ) if ( a=c ) printf ( It is a equilateral triangle!n ); else printf (It is a isosceles triangle!n ); else if (a=c ) printf (It is a isosceles triangle!n ); else if (b=c ) printf (It is a isosceles triangle!n ); else printf (It is a general triangle!n );3)程序图(流图)如下

921、:)程序图(流图)如下:4)求出巡回秩数:)求出巡回秩数:V(G)=EN+2=2618+2=10V(G)=P+1=9+1=10 其中结点其中结点2、3、4、6、7、9、10、13、15是谓词结点是谓词结点V(G)=10(个区域)(个区域)181716151413121110987654321R3R1R2R4R5R6R7R8R9R105)确定基本路径集合()确定基本路径集合(10条)条)路径路径1: 1 2 5 2 路径路径2: 1 2 3 5 2路径路径3: 1 2 3 4 5 2路径路径4: 1 2 3 4 6 8 18路径路径5: 1 2 3 4 6 7 8 18路径路径6: 1 2 3

922、4 6 7 9 10 11 18路径路径7: 1 2 3 4 6 7 9 10 12 18路径路径8: 1 2 3 4 6 7 9 13 14 18路径路径9: 1 2 3 4 6 7 9 13 15 16 18路径路径10:1 2 3 4 6 7 9 13 15 17 186)为每一条独立路径设计设计用例:)为每一条独立路径设计设计用例:路径路径1的测试用例:的测试用例:a = 3, b = 4, c = 5; 期望结果:期望结果:输出 出错:a , b , c must be 0! 提示输入:please input a , b , c: 路径路径2的测试用例:的测试用例:a = 3 ,

923、b = 4 , c = 5 ; 期望结果:期望结果:输出 出错:a , b , c must be 0! 提示输入:please input a , b , c: 路径路径3的测试用例:的测试用例:a = 3 , b = 4 , c = 5 ; 期望结果:期望结果:输出 出错:a , b , c must be 0! 提示输入:please input a , b , c: 路径路径4的测试用例:的测试用例:a = 3 , b = 1 , c = 5 ; 期望结果:期望结果:输出 : It is not a triangle!路径路径5的测试用例:的测试用例:a = 3 , b = 7 , c

924、 = 2; 期望结果:期望结果:输出 : It is not a triangle!路径路径6的测试用例:的测试用例:a = 3 , b = 3 , c = 3 ; 期望结果:期望结果:输出 : It is a equilateral triangle!路径路径7的测试用例:的测试用例:a = 3 , b = 3 , c = 5 ; 期望结果:期望结果:输出 : It is a isosceles triangle!路径路径8的测试用例:的测试用例:a = 3 , b = 4 , c = 3 ; 期望结果:期望结果:输出 : It is a isosceles triangle!路径路径9的测

925、试用例:的测试用例:a = 3 , b = 4 , c = 4 ; 期望结果:期望结果:输出 : It is a isosceles triangle!路径路径10的测试用例:的测试用例:a = 3 , b = 4 , c = 5 ; 期望结果:期望结果:输出 : It is a general triangle!课程名称:软件工程课程名称:软件工程 第第25讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第15章章 软件维护软件维护教学目的:了解维护的概念,掌握四类维护,教学目的:了解维护的概念,掌握四类维护, 了解维护过程、软件的了解维护过程、软件的可维护性。可维护性

926、。教学重点:维护的概念、维护过程、可维护性。教学重点:维护的概念、维护过程、可维护性。教学难点:维护过程。教学难点:维护过程。教教 具:多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第15章章 软件维护软件维护软件维护是软件生命周期的最后一个阶段,软软件维护是软件生命周期的最后一个阶段,软件从部署完毕到退役的整个时间内对软件的改件从部署完毕到退役的整个时间内对软件的改动所做的工作都是维护的内容。动所做的工作都是维护的内容。在项目的各个阶段对项目的可维护性进行充分在项目的各个阶段对项目的可维护性进行充分考虑、对可维护性的严格评审以及在维护阶段考虑、对可维护性的严格评审以及在维护阶段

927、有效地组织和管理维护活动,则是保证软件可有效地组织和管理维护活动,则是保证软件可维护性和降低维护费用的关键。维护性和降低维护费用的关键。本章重点内容:维护的主要内容、维护的流程、本章重点内容:维护的主要内容、维护的流程、如何在软件的生产过程各个阶段保证软件的可如何在软件的生产过程各个阶段保证软件的可维护性目标。维护性目标。15.1 软件维护的基本内容软件维护的基本内容软件维护的主要目标是使已部署的软件按软件维护的主要目标是使已部署的软件按照需求规格说明书的要求(或用户的新需照需求规格说明书的要求(或用户的新需求)运行,这要求软件不仅要满足用户所求)运行,这要求软件不仅要满足用户所需要的各项功能

928、需求,同时还要满足用户需要的各项功能需求,同时还要满足用户对软件的非功能需求。软件维护的基本内对软件的非功能需求。软件维护的基本内容则包含了实现这些目标所做的全部工作。容则包含了实现这些目标所做的全部工作。15.2 软件维护的分类软件维护的分类q按照维护的起因分类:按照维护的起因分类: 纠错性维护纠错性维护 适应性维护适应性维护 改善性维护改善性维护 预防性维护四类。预防性维护四类。 1. 纠错性维护纠错性维护为改正软件系统中潜藏为改正软件系统中潜藏 的错的错误而进行的活动。误而进行的活动。用户在使用软件过程中发现软件的错误用户在使用软件过程中发现软件的错误是激发该种维护的起因。是激发该种维护

929、的起因。四类四类15.2 软件维护的分类软件维护的分类2. 适应性维护适应性维护为适应软件运行环境的为适应软件运行环境的 变化而变化而修改软件的活动。修改软件的活动。软件的运行环境包括两个方面,硬件和软软件的运行环境包括两个方面,硬件和软件,软件则大体上包括操作系统、中间件、件,软件则大体上包括操作系统、中间件、虚拟机等等。虚拟机等等。15.2 软件维护的分类软件维护的分类3. 改善性维护改善性维护根据用户在软件使用过根据用户在软件使用过程中提出的建设性意见而进行的维护活程中提出的建设性意见而进行的维护活动。动。主要是针对用户提出的新的软件需求或主要是针对用户提出的新的软件需求或修改原有的软件

930、需求而进行的维护,该修改原有的软件需求而进行的维护,该种维护通常占所有维护工作量的一半以种维护通常占所有维护工作量的一半以上。软件在部署之后一段时间内,用户上。软件在部署之后一段时间内,用户的改善性维护应该是递减的。的改善性维护应该是递减的。15.2 软件维护的分类软件维护的分类4. 预防性维护预防性维护为了进一步改善软件系统为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠的可维护性和可靠性,并为以后的改进奠定基础。定基础。预防性维护可以采取逆向工程(预防性维护可以采取逆向工程(reverse engineering)和重构工程()和重构工程(reengineering)方式。)方式

931、。15.2 软件维护的分类软件维护的分类严格按照软件工程标准生产的软件产品在严格按照软件工程标准生产的软件产品在维护过程中纠错性维护的工作量很低,不维护过程中纠错性维护的工作量很低,不到总维护工作量的到总维护工作量的15。由于改善性维护和适应性维护需要修改需由于改善性维护和适应性维护需要修改需求规格说明书,应按照需求变更来进行管求规格说明书,应按照需求变更来进行管理,相当于螺旋模型中的又一次迭代过程,理,相当于螺旋模型中的又一次迭代过程,因此工作量很大。因此工作量很大。15.3 软件维护的特点软件维护的特点软件维护是一种繁琐而又不可或缺的软件维护是一种繁琐而又不可或缺的工作,由于维护通常要求维

932、护人员在工作,由于维护通常要求维护人员在用户现场进行,而且维护任务可能非用户现场进行,而且维护任务可能非常紧急,因此对现场维护人员的压力常紧急,因此对现场维护人员的压力很大。而且没有丝毫的成就感。很大。而且没有丝毫的成就感。15.3.1 结构化维护与非结构化维护结构化维护与非结构化维护非结构化维护非结构化维护软件的配置中只有源代软件的配置中只有源代码。码。由于没有分析和设计文档,无法对程序由于没有分析和设计文档,无法对程序的功能进行反向追踪,理解别人的代码的功能进行反向追踪,理解别人的代码是很痛苦的事情。是很痛苦的事情。由于配置中没有测试文档,所以维护后由于配置中没有测试文档,所以维护后的代码

933、无法进行回归测试。因而导致程的代码无法进行回归测试。因而导致程序的结构化被不断的破坏,维护的质量序的结构化被不断的破坏,维护的质量无法得到保证。无法得到保证。15.3.1 结构化维护与非结构化维护结构化维护与非结构化维护结构化维护结构化维护待维护的软件的配置是完待维护的软件的配置是完整的。整的。用户提出的维护申请用正向追踪很容易用户提出的维护申请用正向追踪很容易从分析设计文档追踪直至代码中,从而从分析设计文档追踪直至代码中,从而使维护人员很容易定位代码的维护点。使维护人员很容易定位代码的维护点。所以这种维护不会破坏软件的结构。所以这种维护不会破坏软件的结构。结构化维护不仅能减少维护的工作量,结

934、构化维护不仅能减少维护的工作量,还能提高维护的质量。还能提高维护的质量。图图1531 非结构化维护和结构化维护非结构化维护和结构化维护维护请求维护请求配置配置理解代码功能理解代码功能理解理解 ?修改代码修改代码测试复审测试复审理解设计理解设计方案规划方案规划修改设计修改设计修改代码修改代码测试复审测试复审交付使用交付使用软件软件代码代码15.3.2 维护成本维护成本20世纪世纪70年代,软件的维护费用约占软年代,软件的维护费用约占软件总预算的件总预算的3540%。80年代时,软件维护费用进一步增加,年代时,软件维护费用进一步增加,约占软件总预算的约占软件总预算的60%。近年来,该值已上升到近年

935、来,该值已上升到80%左右。左右。随着软件复杂性的不断提高,软件的维随着软件复杂性的不断提高,软件的维护难度越来越大。这不仅导致维护成本护难度越来越大。这不仅导致维护成本不断增高,软件生产率急剧下降,还会不断增高,软件生产率急剧下降,还会带来其他方面的负面影响。带来其他方面的负面影响。维护工作量的估算模型维护工作量的估算模型 MP+Ke(cd)其中:其中: M:维护所用工作量;:维护所用工作量; P:生产性工作量:生产性工作量 分析评价、修改设计和代码;分析评价、修改设计和代码; Ke(cd):助动性工作量:助动性工作量 理解文档和代码;理解文档和代码; K:经验常数;:经验常数; c:软件的

936、维护复杂度,由软件本身的复杂度,软:软件的维护复杂度,由软件本身的复杂度,软 件的设计质量以及文档化的程度等因素决定;件的设计质量以及文档化的程度等因素决定; d:维护人员对软件的熟悉程度;:维护人员对软件的熟悉程度; 可见维护工作量同软件的维护复杂度成指数关系。可见维护工作量同软件的维护复杂度成指数关系。15.3.3 维护可能存在的问题维护可能存在的问题1)无法追踪软件的整个创建过程。)无法追踪软件的整个创建过程。2)无法追踪软件版本的进化过程。)无法追踪软件版本的进化过程。 软件交付使用后对软件不断修复和完善的软件交付使用后对软件不断修复和完善的 过程,就是软件版本的进化过程,每一次过程,

937、就是软件版本的进化过程,每一次 进化都会使软件的主、次版本号增大。进化都会使软件的主、次版本号增大。3)理解别人的程序非常困难。)理解别人的程序非常困难。4)得不到开发人员的帮助。)得不到开发人员的帮助。5)软件配置不完整或不正确。)软件配置不完整或不正确。6)分析和设计的缺陷。)分析和设计的缺陷。7)维护工作让人没有成就感。)维护工作让人没有成就感。15.4 软件维护过程软件维护过程 15.4.1 维护组织维护组织 维护组织一般由维护员,维护管理员,系统管理维护组织一般由维护员,维护管理员,系统管理员,修改控制决策机构,配置管理员组成。员,修改控制决策机构,配置管理员组成。 维护员维护员真正

938、执行维护的人员;真正执行维护的人员; 维护管理员维护管理员协调维护活动的人员;协调维护活动的人员; 系统管理员系统管理员系统的管理者;系统的管理者; 修改控制决策机构修改控制决策机构决定一次维护的走向。决定一次维护的走向。修改控制和决策机构、用户、系统管理员、维护修改控制和决策机构、用户、系统管理员、维护人员之间不能跨越维护管理员进行沟通和采取行人员之间不能跨越维护管理员进行沟通和采取行动。动。图图1541 维护组织信息流图维护组织信息流图修改控制决策机构修改控制决策机构系统系统管理员管理员维护维护管理员管理员维护员维护员配置配置管理员管理员维护申请单维护申请单维护流程维护流程用户的维护请求激

939、发了一次维护活动,用户用户的维护请求激发了一次维护活动,用户将维护申请提交给维护管理员,维护管理员将维护申请提交给维护管理员,维护管理员将该维护请求交给系统管理员对维护活动可将该维护请求交给系统管理员对维护活动可能引起的软件修改进行评估,并将评估结果能引起的软件修改进行评估,并将评估结果反馈给维护管理员,维护管理员按照维护请反馈给维护管理员,维护管理员按照维护请求单制定软件修改报告单并提交给修改决策求单制定软件修改报告单并提交给修改决策机构进行维护决策。修改决策机构根据情况机构进行维护决策。修改决策机构根据情况决定采取的行动(拒绝请求还是接收请求),决定采取的行动(拒绝请求还是接收请求),并把

940、结果反馈给维护管理员,如果允许维护,并把结果反馈给维护管理员,如果允许维护,维护管理员将通知维护员执行该次维护。维护管理员将通知维护员执行该次维护。15.4.2 维护的报告与审核维护的报告与审核用户提出的维护申请必须采用标准的格式,须填写由用户提出的维护申请必须采用标准的格式,须填写由维护人员制定的:维护人员制定的:维护申请单(维护申请单(Maintenance Request Form,MRF)或或 软件问题报告单(软件问题报告单(Software Problem Report,SPR)。)。如果是纠错性维护,应填写如果是纠错性维护,应填写SPR。在填写。在填写SPR时,用户时,用户必须完整

941、地记录出错信息(什么错误)和出错场景必须完整地记录出错信息(什么错误)和出错场景(在什么情况下出现的错误)。(在什么情况下出现的错误)。其他种类的维护,要填其他种类的维护,要填MRF。在。在MRF中应该附加简短中应该附加简短的修改规格说明,也就是在需求规格说明书中应作哪的修改规格说明,也就是在需求规格说明书中应作哪些改动,比如增加功能或修改功能等。些改动,比如增加功能或修改功能等。15.4.2 维护的报告与审核维护的报告与审核维维护护管管理理员员将将MRF后后之之提提交交给给系系统统管管理理员员,并并据据此此对对软软件件改改动动量量作作评评估估。系系统统管管理理员员核核准准该该维维护护申申请请

942、后后,维维护护组组织织内内部部要要制制定定一一个个软软件件修修改改报报告告单单(Software Change Report,SCR),MRF并并不不是是软软件件文文档档的的配配置置项。而软件修改的真正依据是项。而软件修改的真正依据是SCR,其内容如下:,其内容如下:1)本次修改所需工作量;)本次修改所需工作量;2)本次维护活动的性质;)本次维护活动的性质;3)本次维护请求的优先级;)本次维护请求的优先级;4)本次修改的背景数据(来自于)本次修改的背景数据(来自于MRF或或SPR的陈述)。的陈述)。将将SCR提提交交给给修修改改控控制制决决策策机机构构,作作为为维维护护进进一一步步工工作作的的

943、依依据据。SCR是是保保证证软软件件版版本本进进化化可可跟跟踪踪性性所所必必须须的文档。的文档。15.4.3 维护过程的事件流维护过程的事件流用户的维护请求提交给维护组织后的信用户的维护请求提交给维护组织后的信息流程如图息流程如图1542所示。收到维护请求后,所示。收到维护请求后,维护组织首先要判断维护的类型,即本维护组织首先要判断维护的类型,即本次维护请求是纠错性维护还是其他类型次维护请求是纠错性维护还是其他类型的维护。对于纠错维护要启动纠错维护的维护。对于纠错维护要启动纠错维护流程,如果是其他类型的维护则启动适流程,如果是其他类型的维护则启动适应性或改善性维护流程。用户和维护组应性或改善性

944、维护流程。用户和维护组织有时会对维护的类型有不同的看法。织有时会对维护的类型有不同的看法。图图1542 维护活动的事件流维护活动的事件流其他其他出错出错维护请求维护请求类型类型“救火活动救火活动”当排在队列之首当排在队列之首严重性严重性按按SE方法学规划、组织、实施工程方法学规划、组织、实施工程队列中还有维护请求队列中还有维护请求评估后分类评估后分类评估后按优先级评估后按优先级在对列排队在对列排队通知请求者通知请求者并说明原因并说明原因资源用于开发新的软件资源用于开发新的软件采取行动采取行动从维护请求队列之首取一任务从维护请求队列之首取一任务类型类型按优先级在对列按优先级在对列中排队中排队评估

945、后按优先级在队评估后按优先级在队列排队列排队是是否否适应性适应性改善性改善性非常严重非常严重并不严重并不严重是是否否15.4.4 保存维护记录保存维护记录为为了了能能够够很很好好地地评评价价维维护护的的有有效效性性,必必须须详详细细记记录录软软件件维维护护过过程程中中的的各各种种数数据据,这这些些数数据据包包括:括:(1)程序标志;)程序标志;(2)源程序行数;)源程序行数;(3)目标程序的指令条数;)目标程序的指令条数;(4)所用的编程语言;)所用的编程语言;(5)安装程序的日期;)安装程序的日期;(6)自安装之日起程序运行的次数;)自安装之日起程序运行的次数;(7)自安装之日起程序失败的次

946、数;)自安装之日起程序失败的次数;(8)程序修改处的层数和标志;)程序修改处的层数和标志;15.4.4 保存维护记录保存维护记录(9)因程序变动而增加和删除的源程序行数;)因程序变动而增加和删除的源程序行数;(10)每处改动所耗费的人时数;)每处改动所耗费的人时数;(11)程序改动的日期;)程序改动的日期;(12)软件工程师标志;)软件工程师标志;(13)MRF的标志;的标志;(14)本次维护的类型;)本次维护的类型;(15)维护开始和结束的日期;)维护开始和结束的日期;(16)用于本次维护累计的人时数;)用于本次维护累计的人时数;(17)执行本次维护的纯利润。)执行本次维护的纯利润。上述数据

947、应保存到维护数据库里,作为维护评上述数据应保存到维护数据库里,作为维护评价的依据。价的依据。15.4.5 评价维护活动评价维护活动通通过过每每次次维维护护活活动动的的详详细细记记录录,可可通通过过下下面面的的指标度量维护的有效性:指标度量维护的有效性:(1)程序运行的平均失效次数(失效次数运)程序运行的平均失效次数(失效次数运 行的次数);行的次数);(2)维护活动耗费的总人时数;)维护活动耗费的总人时数;(3)各种程序,及各种语言的平均变动数;)各种程序,及各种语言的平均变动数;(4)维护阶段修改每条语句所花费的人时数;)维护阶段修改每条语句所花费的人时数;(5)维护每种语言的程序平均花费的

948、人时数;)维护每种语言的程序平均花费的人时数;(6)一张)一张MRF的平均周转时间;的平均周转时间;(7)各类维护请求的百分比。)各类维护请求的百分比。15.5 维护的副作用维护的副作用维护的副作用是指,由于维护或在维护过程中维护的副作用是指,由于维护或在维护过程中其他一些不期望的行为引入的错误。副作用可其他一些不期望的行为引入的错误。副作用可分三类:分三类: (1)代码副作用)代码副作用下面的修改最易引起副作用:下面的修改最易引起副作用:修改或删除子程序;修改或删除子程序;修改或删除语句标号;修改或删除语句标号;修改或删除标识符;修改或删除标识符;为提高程序效率而做的修改;为提高程序效率而做

949、的修改;修改逻辑操作符;修改逻辑操作符;由设计变动引起的代码修改;由设计变动引起的代码修改;修改分支处的判断条件;修改分支处的判断条件; 代码副作用大多数可在回归测试中发现。代码副作用大多数可在回归测试中发现。15.5 维护的副作用维护的副作用(2)数据副作用)数据副作用数数据据副副作作用用是是由由于于修修改改数数据据结结构构带带来来的的副副作作用用。容易引起数据副作用的修改包括:容易引起数据副作用的修改包括:局部和全局常量的再定义;局部和全局常量的再定义;记录或文件格式的再定义;记录或文件格式的再定义;增减数据或是由于修改数据结构的定义导致增减数据或是由于修改数据结构的定义导致 数据结构长度

950、的改变;数据结构长度的改变;修改全局数据;修改全局数据;重新初始化控制标志和指针;重新初始化控制标志和指针;重新排列重新排列I/O表或子程序参数表。表或子程序参数表。设设计计文文档档化化有有助助于于抑抑制制数数据据副副作作用用,在在设设计计文文档中有关于数据结构的详细描述和交叉访问表。档中有关于数据结构的详细描述和交叉访问表。15.5 维护的副作用维护的副作用(3)文档副作用)文档副作用由于程序修改而没有对文档进行相应的修由于程序修改而没有对文档进行相应的修改引起文档的副作用。改引起文档的副作用。必须保持文档和程序的一致性。每次维护必须保持文档和程序的一致性。每次维护之后,再次交付软件之前应仔

951、细评审整个之后,再次交付软件之前应仔细评审整个配置,这样才能更好地减少文档的副作用。配置,这样才能更好地减少文档的副作用。15.6 软件的可维护性软件的可维护性软件的可维护性是指软件被理解和被正确软件的可维护性是指软件被理解和被正确改动的难易程度。改动的难易程度。 软件的可维护性差是软件维护工作量和费软件的可维护性差是软件维护工作量和费用激增的直接原因,因此在软件工程的各用激增的直接原因,因此在软件工程的各个阶段都要保证软件具有较高可维护性,个阶段都要保证软件具有较高可维护性,从而降低软件维护成本,这是软件工程的从而降低软件维护成本,这是软件工程的重要目标之一。重要目标之一。15.6.1 影响

952、可维护性的因素影响可维护性的因素软件的可维护性主要受下面因素影响:软件的可维护性主要受下面因素影响:(1)软件的构造过程是否严格按照软件工)软件的构造过程是否严格按照软件工 程的方法进行;程的方法进行;(2)开发团队是否训练有素;)开发团队是否训练有素;(3)软件的开发平台(操作系统和开发语)软件的开发平台(操作系统和开发语 言)是否标准。言)是否标准。总总结结起起来来就就是是:开开发发团团队队(人人)是是否否使使用用了了通通用用的的工工具具采采用用标标准准的的方方法法来来构构造造软件。软件。15.6.2 可维护性的度量可维护性的度量通过维护记录可间接度量可维护性。通过维护记录可间接度量可维护

953、性。 (1)问问题题、收收集集维维护护工工具具以以及及分分析析问问题题所所用的时间;用的时间;(2)形成修改说明书所用的时间;)形成修改说明书所用的时间;(3)修改设计和源代码所用的时间;)修改设计和源代码所用的时间;(4)测试所用时间;)测试所用时间;(5)复审所用时间;)复审所用时间;(6)完全恢复所用时间。)完全恢复所用时间。以上时间越短则软件的可维护性越好。以上时间越短则软件的可维护性越好。15.6.3 可维护性复审可维护性复审在软件工程每一阶段的复审中,可维护性都是在软件工程每一阶段的复审中,可维护性都是一个重要的指标。一个重要的指标。 在需求分析阶段的复审中,应在规格说明书中在需求

954、分析阶段的复审中,应在规格说明书中对将来可能修改和可以改进的部分加以注明;对将来可能修改和可以改进的部分加以注明;在设计阶段的复审中,应该从易于维护和提高在设计阶段的复审中,应该从易于维护和提高设计总体质量的角度对设计进行全面评审;设计总体质量的角度对设计进行全面评审;代码复审主要审查代码风格和内部文档(程序代码复审主要审查代码风格和内部文档(程序注释等)这两个直接影响可维护性的因素。注释等)这两个直接影响可维护性的因素。最后,每一阶段性测试,直到软件正式交付之最后,每一阶段性测试,直到软件正式交付之前,都应该进行的预防性维护。前,都应该进行的预防性维护。正式的可维护性复审放在测试完成之后,称

955、为正式的可维护性复审放在测试完成之后,称为配置复审。目的是保证配置中所有成分的完整、配置复审。目的是保证配置中所有成分的完整、一致、易于理解且便于修改控制。一致、易于理解且便于修改控制。课程名称:软件工程课程名称:软件工程 第第26讲讲班班 级:级: 日日 期:期:教教 室:室:教学题目:第教学题目:第16章章 软件配置管理软件配置管理教学目的:掌握配置管理的概念、任务,了解配教学目的:掌握配置管理的概念、任务,了解配 置管理的标准和置管理的标准和CASE工工具。具。教学重点:配置管理的概念、任务。教学重点:配置管理的概念、任务。教学难点:教学难点: 访问和同步控制。访问和同步控制。教教 具:

956、多媒体教室、电子教案具:多媒体教室、电子教案作作 业:业:第第16章章 软件配置管理软件配置管理 即:即:Software Configuration Management,简,简称称SCM软件配置管理软件配置管理对正在被某个项目组建造的对正在被某个项目组建造的软件的修改进行标识、组织和控制的技术,用软件的修改进行标识、组织和控制的技术,用来协调和控制整个系统过程。来协调和控制整个系统过程。目标目标通过最大限度地减少错误来最大限度通过最大限度地减少错误来最大限度 地提高软件生产率。地提高软件生产率。软件配置管理是包括从软件项目计划到软件退软件配置管理是包括从软件项目计划到软件退役为止役为止贯穿

957、整个软件工程过程活动中的所贯穿整个软件工程过程活动中的所有追踪和控制软件变动的保护性活动。有追踪和控制软件变动的保护性活动。 16.1 软件配置管理概念软件配置管理概念 软件开发过程的最终结果包括三类信息:软件开发过程的最终结果包括三类信息: 计算机程序(源程序和目标程序);计算机程序(源程序和目标程序); 描述程序的文档(面向技术人员和面向用户)描述程序的文档(面向技术人员和面向用户);数据结构(包括程序内部和外部定义两部分);数据结构(包括程序内部和外部定义两部分)。组成上述信息的所有项目构成一个软件配置,组成上述信息的所有项目构成一个软件配置,其中每一项称为一个软件配置项(其中每一项称为

958、一个软件配置项(Software Configuration Item,简称,简称SCI),它是配置管理),它是配置管理的基本单位。一个的基本单位。一个SC中最早的中最早的SCI是系统规格说是系统规格说明书。明书。SCM要解决的主要问题就是保证软件的质量。要解决的主要问题就是保证软件的质量。 16.1.1 基线技术基线技术 基线(基线(baseline)的原意是棒球场的边线,在软件)的原意是棒球场的边线,在软件开发过程中,为了有效地控制变动,软件配置管理开发过程中,为了有效地控制变动,软件配置管理引入基线的概念。引入基线的概念。IEEE组织对于基线的定义组织对于基线的定义“已经通过正式复审和已

959、经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能遵循正式的变化控制过程得到改的基础,并且只能遵循正式的变化控制过程得到改变变”。根据这个定义,基线标志软件开发过程的各个里程根据这个定义,基线标志软件开发过程的各个里程碑,任一碑,任一SCI(例如,设计说明书),一旦形成文档(例如,设计说明书),一旦形成文档并复审通过,即成为一个基线,它标志开发过程中并复审通过,即成为一个基线,它标志开发过程中一个阶段的结束。对于已成为基线的一个阶段的结束。对于已成为基线的SCI,虽然可以,虽然可以修改,但必须按照一个特殊的、正式的过程进行评

960、修改,但必须按照一个特殊的、正式的过程进行评估,确认每一处修改。相反,对于未成为基线的估,确认每一处修改。相反,对于未成为基线的SCI,可以进行非正式修改。,可以进行非正式修改。 图图1611 基线基线 系统工程系统工程需求分析需求分析软件设计软件设计编编 码码测测 试试系统规格说明书系统规格说明书软件需求规格说明书软件需求规格说明书设计规格说明书设计规格说明书源代码源代码测试计划测试计划/过程过程/数据数据可操作的系统可操作的系统发发 布布16.1.1 基线技术基线技术某个某个SCI一旦成为基线,随即被放入项目一旦成为基线,随即被放入项目数据库(数据库(project database)。此

961、后,若)。此后,若开发小组中某位成员希望改动开发小组中某位成员希望改动SCI,首先,首先要将它拷贝到私有工作区并在项目数据要将它拷贝到私有工作区并在项目数据库中锁住,不允许他人使用。在私有工库中锁住,不允许他人使用。在私有工作区中完成修改控制过程并复审通过之作区中完成修改控制过程并复审通过之后,再把修改后的后,再把修改后的SCI推出并回送到项目推出并回送到项目数据库,同时解锁。数据库,同时解锁。 16.1.2 软件配置项软件配置项 一般软件配置需包括下列一般软件配置需包括下列SCI:1系统规格说明书系统规格说明书2软件项目规划软件项目规划3需求分析结果需求分析结果 1)软件需求规格说明书)软件

962、需求规格说明书 2)可执行的或)可执行的或“纸样纸样”原型原型4初步用户手册初步用户手册 16.1.2 软件配置项软件配置项5设计规格说明书设计规格说明书 1)数据设计描述)数据设计描述 2)总体结构设计描述)总体结构设计描述 3)模块设计描述)模块设计描述 4)界面设计描述)界面设计描述 5)对象描述(若采用面向对象技术)对象描述(若采用面向对象技术)6源代码清单源代码清单7测试规格说明书测试规格说明书 1)测试计划和过程)测试计划和过程 2)测试用例和实验结果)测试用例和实验结果 16.1.2 软件配置项软件配置项8操作和安装手册操作和安装手册9可执行程序可执行程序 1)每个模块的可执行代

963、码)每个模块的可执行代码 2)连接到一起的代码)连接到一起的代码10数据库描述数据库描述 1)数据模型和文件结构)数据模型和文件结构 2)初始化映象)初始化映象11联机用户手册联机用户手册12维护文档维护文档 1)软件问题报告单)软件问题报告单 2)维护申请单)维护申请单 3)预计变动的顺序)预计变动的顺序13软件工程的标准和过程软件工程的标准和过程 16.1.2 软件配置项软件配置项有有时时把把SCM活活动动也也列列入入配配置置管管理理的的范范畴畴。还还应应当当建建立立组组织织的的过过程程基基线线和和软软件件财财富富基基线线,以以便便在整个组织中共享过程和软件财富。在整个组织中共享过程和软件

964、财富。作作为为过过程程基基线线,应应当当将将组组织织的的质质量量体体系系、过过程程文文件件、工工程程操操作作指指南南、文文档档模模板板、工工作作样样表表、历历史史度度量量数数据据等等进进行行统统一一管管理理、集集中中维维护护、控控制发放和深入分析。制发放和深入分析。软件财富基线主要包括各类可复用的软件构件。软件财富基线主要包括各类可复用的软件构件。同同时时,把把软软件件开开发发中中选选用用的的编编辑辑器器、编编译译器器和和CASE工工具具等等作作为为软软件件配配置置的的一一部部分分,当当配配置置中中其其他他SCI发发生生变变化化时时,同同时时考考虑虑这这些些软软件件工工具具是是否与之适应和匹配

965、。否与之适应和匹配。 16.1.2 软件配置项软件配置项用面向对象的方法组织项目数据库,将每个用面向对象的方法组织项目数据库,将每个SCI看作一个配置对象,有自己的名字和一组属性,看作一个配置对象,有自己的名字和一组属性,各各SCI之间的联系用对象间的关系表示。之间的联系用对象间的关系表示。以图以图1612为例,五个配置对象,对象之间的为例,五个配置对象,对象之间的关系用有向连线表示。关系用有向连线表示。有向曲线有向曲线对象的部分对象的部分整体关系。整体关系。 例如,例如,“数据模型数据模型”和和“模块模块N”都是都是“设计设计规格说明书规格说明书”的组成部分。的组成部分。双向连线双向连线对象

966、间的关联联系。对象间的关联联系。 例如,一个模块的源代码一旦变动,对应的例如,一个模块的源代码一旦变动,对应的测试用例亦需修改,随之需要重新执行测试过测试用例亦需修改,随之需要重新执行测试过程。程。 图图1612 配置对象配置对象设计规格说明书设计规格说明书数据设计数据设计总体结构设计总体结构设计模块设计模块设计界面设计界面设计测试规格说明书测试规格说明书测试计划测试计划测试过程测试过程测试用例测试用例数据模型数据模型源代码源代码模块模块N16.2 软件配置管理任务软件配置管理任务 软件配置管理主要任务是控制软件的修软件配置管理主要任务是控制软件的修改,主要包括:改,主要包括:1标识软件配置中

967、各种对象;标识软件配置中各种对象;2管理软件的各种版本;管理软件的各种版本;3控制对软件的修改;控制对软件的修改; 4审计配置;审计配置;5报告配置情况。报告配置情况。 16.2.1 标识配置对象标识配置对象 所所有有SCI都都应应按按面面向向对对象象的的方方式式命命名名并并组组织织起起来来。对对象象命命名名是是为为了了能能够够根根据据名名称称提提取取对对象象;而而通通过过组组织织对对象象并并描描述述其其间间的的关关系系则则着着眼眼于于在在对对象象变变更更时时能能够够清楚地了解变更的影响范围。清楚地了解变更的影响范围。基基本本对对象象在在分分析析、设设计计、编编码码或或测测试试阶阶段段由由开开

968、发人员创建的某个发人员创建的某个“文本单元文本单元”(unit of text)。)。 例例如如,需需求求说说明明书书中中某某一一节节,某某个个模模块块的的源源代代码码,或按等价分类法制定的一套测试用例;或按等价分类法制定的一套测试用例;复复合合对对象象由由若若干干基基本本对对象象和和复复合合对对象象组组合合而而成成的对象,是一个递归的概念。的对象,是一个递归的概念。 例例如如,“设设计计规规格格说说明明书书”是是复复合合对对象象,它它由由“数据模块数据模块”和和“模块模块N”等基本对象组合而成。等基本对象组合而成。 16.2.1 标识配置对象标识配置对象每个配置对象都拥有名字、描述、资源列表

969、和每个配置对象都拥有名字、描述、资源列表和实际存在体四个部分:实际存在体四个部分:1. 对象名一般为无二义字符串;对象名一般为无二义字符串;2. 对象描述包括若干数据项,它们指明对象的类对象描述包括若干数据项,它们指明对象的类型(例如,文档、程序还是数据)、所属工程型(例如,文档、程序还是数据)、所属工程项目的标志及变动和版本的有关信息;项目的标志及变动和版本的有关信息;3. 资源列表给出该对象要求、引用、处理和提供资源列表给出该对象要求、引用、处理和提供的所有实体,如数据类型、特殊函数等,有时的所有实体,如数据类型、特殊函数等,有时变量也被看作资源;变量也被看作资源;4. 只有基本对象才有实

970、际存在体,它是指向该对只有基本对象才有实际存在体,它是指向该对象象“单元正文描述单元正文描述”的一个指针;对于复合对的一个指针;对于复合对象,此项取象,此项取null值。值。 16.2.1 标识配置对象标识配置对象除了标识配置对象外,还必须指明对象之间的除了标识配置对象外,还必须指明对象之间的关系,一个对象可标识为另一个复合对象的一关系,一个对象可标识为另一个复合对象的一部分,即此两对象之间存在一个部分,即此两对象之间存在一个关系。关系。若干若干关系可定义出对象之间的分层结关系可定义出对象之间的分层结构。例如:构。例如: “ “E R图图”“数据模型数据模型” “ “数据模型数据模型”“设计规

971、格说设计规格说明书明书”因一个配置对象可能与其他多个对象有关系,因一个配置对象可能与其他多个对象有关系,所以所以SCI的分层结构不一定是简单的树状结构,的分层结构不一定是简单的树状结构,而是更一般的网状结构。而是更一般的网状结构。 16.2.1 标识配置对象标识配置对象在标识对象时还应考虑对象随着开发过程的在标识对象时还应考虑对象随着开发过程的深入不断演进的因素。为此,可为每个对象深入不断演进的因素。为此,可为每个对象创建一个进化图,它概述某对象演化的历史,创建一个进化图,它概述某对象演化的历史,图中每个结点都是图中每个结点都是SCI的一个版本。的一个版本。 obj1.0obj1.1.1obj

972、1.1obj1.2obj1.3obj2.0obj2.1obj1.1.2obj1.1.3图图1621 进化图进化图 16.2.2 版本控制版本控制 为了适应不同环境特点和满足不同用户的个性为了适应不同环境特点和满足不同用户的个性需求,往往一个项目保存多个版本。需求,往往一个项目保存多个版本。配置管理的版本控制主要解决下列问题:配置管理的版本控制主要解决下列问题: 1)根据不同用户的需要配置不同的系统;)根据不同用户的需要配置不同的系统; 2)保存系统老版本,为以后调查问题使用;)保存系统老版本,为以后调查问题使用; 3)建立一个系统新版本,使它包含某些决策而)建立一个系统新版本,使它包含某些决策

973、而抛弃另一些;抛弃另一些; 4)支持两位以上工程师同时在一个项目中工作;)支持两位以上工程师同时在一个项目中工作; 5)高效存储项目的多个版本。)高效存储项目的多个版本。 16.2.2 版本控制版本控制版版本本控控制制系系统统都都为为配配置置对对象象的的每每个个版版本本设设置置一一组组属属性性,这这组组属属性性既既可可以以是是简简单单的的版版本本号号,也也可可以以是是一一串串复复杂杂的的布布尔尔变变量量(即即开开关关值值),用用以以说说明明该该版版本本功功能能上上的的变化。变化。进化图也可用于描述一个软件系统的不同版本。进化图也可用于描述一个软件系统的不同版本。 图图中中每每个个结结点点都都是

974、是软软件件的的一一个个完完整整版版本本,它它由由所所有有协协调调一一致致的的软软件件配配置置项项组组成成(源源代代码码,文文档档和和数数据据)。此外,一个版本还允许有多种变形(此外,一个版本还允许有多种变形(Variant)。)。例例如如,一一个个程程序序的的某某个个版版本本由由A、B、C、D、E五五个个部部件件组组成成,部部件件D仅仅在在系系统统配配有有彩彩色色显显示示器器时时使使用用,部部件件E则则适适用用于于单单显显,那那么么该该版版本本就就有有两两种种变变形形,一一种种由由A、B、C、D四四个个部部件件组组成成,另另一一种种由由A、B、C、E四四个个部部件组成。件组成。 16.2.3

975、修改控制修改控制 在大型软件开发过程中,无控制地修改在大型软件开发过程中,无控制地修改会迅速导致混乱。所谓修改控制,即把会迅速导致混乱。所谓修改控制,即把人的努力与自动工具结合起来,建立一人的努力与自动工具结合起来,建立一套机制,有意识地控制软件修改。套机制,有意识地控制软件修改。 图图1622 修改控制过程修改控制过程用户认识到有修改的必要用户认识到有修改的必要用户提出用户提出“修改申请修改申请”开发者评估开发者评估产生产生“修改报告单修改报告单”提交修改控制机构决策提交修改控制机构决策修改请求被拒绝修改请求被拒绝通知申请者通知申请者(用户用户)此修改申请入等待队列排队,此修改申请入等待队列

976、排队,同时产生同时产生“工程变动命令工程变动命令”将欲修改的各配置对象明确分工到人将欲修改的各配置对象明确分工到人从项目数据库中提出配置对象从项目数据库中提出配置对象图图1622 修改控制过程(续)修改控制过程(续)实施修改实施修改复审修改(审计)复审修改(审计)将修改后的配置项放回项目数据库将修改后的配置项放回项目数据库建立基线准备测试建立基线准备测试进行所有质量保证和测试活动进行所有质量保证和测试活动提示即将推出的下一个版本中已做的修改提示即将推出的下一个版本中已做的修改构造一个完整的新版本构造一个完整的新版本复审对所有配置项所做修改复审对所有配置项所做修改推出新版本推出新版本16.2.3

977、 修改控制修改控制当当一一个个“修修改改申申请请”提提出出后后,开开发发者者依依据据技技术术指指标标和和潜潜在在的的副副作作用用,对对其其他他配配置置对对象象和和系系统统功功能能可可能能造造成成的的影影响响以以及及项项目目成成本本等等诸诸多多因因素素进进行行评评估估。评评估估的的结结果果将将形形成成一一个个“修修改改报报告告单单”,提交给修改控制机构,提交给修改控制机构CCA决策。决策。CCA一一旦旦同同意意修修改改,应应立立即即提提供供一一个个“工工程程变变动动命命令令”ECO。它它指指明明修修改改任任务务、需需遵遵守守的的限限制制和和复复审审标标准准。然然后后从从项项目目数数据据库库中中“

978、提提出出”待修改对象,经修改后再待修改对象,经修改后再“推出推出”更新版本。更新版本。这这一一对对动动作作是是项项目目数数据据库库访访问问控控制制和和同同步步控控制制要要求求的的。访访问问控控制制决决定定哪哪些些人人员员有有权权访访问问或或修修改改某某个个配配置置对对象象;而而同同步步控控制制则则保保证证并并行行修修改改时不因互相重写而造成丢失修改。时不因互相重写而造成丢失修改。 15.4.4 保存维护记录保存维护记录访访问问和和同同步步控控制制流流可可用用图图1623说说明明。软软件件开开发发人人员员根根据据ECO从从项项目目数数据据库库中中提提出出待待修修改改对对象象,访访问问控控制制机机

979、构构,核核实实该该开开发发人人员员是是否否有有此此特特权权,而而同同步步控控制制机机构构则则及及时时锁锁住住待待修修改改对对象象,不不允允许许其其他他开开发发人人员员再再做做修修改改,直直至至该该对对象象的的新新版版本本推推出出。加加锁锁期期间间,其其他他工工程程人人员员仍仍可可提提取取该该对对象象的的副副本本(称称为为提提取版本)使用。取版本)使用。图图1622所所示示的的修修改改控控制制用用于于已已交交给给用用户户的的软软件件产产品品,称称为为正正式式修修改改控控制制。若若欲欲修修改改的的SCI虽虽已已为为基基线线版版本本,但但尚尚未未交交付付用用户户,此此时时修修改改控控制制称称为为工工

980、程程级级的的修修改改控控制制,它它除除了了不不涉涉及及用用户户外外,其其他他步步骤骤与与正正式式的的修修改改控控制制大大致致相相同同。若若SCI并并未未成成为为基基线线版版本本,只只需需进进行行非非正正式式的的修修改改控控制制,则则在在不不影影响响系系统统需需求求的前提下,该的前提下,该SCI的开发者可随意改动的开发者可随意改动 。图图16 2 3 修改过程中的同步和访问控制修改过程中的同步和访问控制提提出出访问访问控制控制推推出出软件工程师软件工程师项目数据库项目数据库访问请求访问请求特权信息特权信息解解锁锁加加锁锁配置对象配置对象(提取版本)(提取版本)配置对象配置对象(基线版本)(基线版

981、本)配置对象配置对象(基线版本)(基线版本)配置对象配置对象(修改版本)(修改版本)审计信息审计信息16.2.4 配置审计配置审计 对对于于变变更更工工作作,必必须须通通过过正正式式的的技技术术复复审审和和软软件件配配置置审审计计工工作作来来验验证证被被核核准准进进行行变变更更的的对对象象是是否否进进行行了了必必要要的的、正正确确的变更,并得到了重新的配置。的变更,并得到了重新的配置。正正式式的的技技术术复复审审着着重重考考虑虑所所修修改改对对象象在在技技术术上上的的正正确确性性,复复审审人人员员应应对对该该对对象象是是否否与与其其他他SCI协协调调以以及及在在修修改改中中可可能能产产生的疏忽

982、和副作用进行全面的评估。生的疏忽和副作用进行全面的评估。16.2.4 配置审计配置审计软件配置审计作为正式复审的一种补充措施,软件配置审计作为正式复审的一种补充措施,主要考虑下列在正式技术复审中未被考虑的因主要考虑下列在正式技术复审中未被考虑的因素:素:1ECO中指定的修改是否都已完成?有无进行未中指定的修改是否都已完成?有无进行未经指定的其他附加变更?经指定的其他附加变更?2是否做过正式技术复审?是否做过正式技术复审?3是否严格遵守软件工程标准?是否严格遵守软件工程标准?4是否对修改过的是否对修改过的SCI进行了强调说明?修改的进行了强调说明?修改的日期和执行修改的人员是否已经注明?该日期和

983、执行修改的人员是否已经注明?该SCI的的属性是否能够反映本次修改的结果?属性是否能够反映本次修改的结果?5是否遵循了标注变更、记录变更和报告变更是否遵循了标注变更、记录变更和报告变更的的SCM工作规程?工作规程?6所有相关的所有相关的SCI是否已一并修改?是否已一并修改? 16.2.5 配置状况报告配置状况报告 建立并发布配置状况报告(建立并发布配置状况报告(Configuration Status Reporting,简称,简称CSR)是软件配置管理)是软件配置管理的一项任务的一项任务.CSR主要概述下列问题:发生了什么事情;谁主要概述下列问题:发生了什么事情;谁做的;何时发生的;有什么影响

984、。做的;何时发生的;有什么影响。CSR的时机与图的时机与图1622所述过程紧密相关所述过程紧密相关: 当某个当某个SCI被赋予新标记或更新标记时被赋予新标记或更新标记时;或或CCA批准一项修改申请(产生一个批准一项修改申请(产生一个ECO)时)时;或配置审计完成时。或配置审计完成时。CSR的输出可放在联机数据库中,供开发人员的输出可放在联机数据库中,供开发人员和维护人员随时按关键字查询。和维护人员随时按关键字查询。16.3 软件配置管理标准软件配置管理标准 有若干种有若干种SCM标准:标准:较早的标准主要用于美国军界:较早的标准主要用于美国军界: MIL STD 483; DOD STD 48

985、0A; MIL STD 1521A。后来公布的后来公布的ANSI/IEEE标准,如标准,如828 1983,1042 1982和和1028 1988等。等。 16.4 配置管理的配置管理的CASE工具工具 一一个个配配置置管管理理工工具具DSEE(Domain Software Engineering Environment)的组成:)的组成: 历史管理程序(历史管理程序(history manager);); 配配 置置 管管 理理 程程 序序 ( configuration manager);); 任务管理程序(任务管理程序(task manager);); 监控管理程序(监控管理程序(m

986、onitor manager)。)。历史管理程序负责在库中存储管理配置项的各个版本;历史管理程序负责在库中存储管理配置项的各个版本;配置管理程序的主要功能是定义和建立配置;配置管理程序的主要功能是定义和建立配置;任务和监控管理程序则主要负责控制软件修改过程。任务和监控管理程序则主要负责控制软件修改过程。这里重点讨论配置管理部分。这里重点讨论配置管理部分。16.4 配置管理的配置管理的CASE工具工具使用使用DSEE建立一个配置(在此泛指系统或某建立一个配置(在此泛指系统或某个配置项)需涉及下面三个概念:个配置项)需涉及下面三个概念:1系统模型(系统模型(system model)欲导出此欲导出

987、此配置项所需的源项、工具(配置项所需的源项、工具(DSEE中称为翻中称为翻译器)和过程;译器)和过程; “ “系统模型系统模型”描述组成系统各分量之间的描述组成系统各分量之间的关系,即系统构成。它包括每一个分量的形关系,即系统构成。它包括每一个分量的形式(分为原子和聚合的),分量之间的依赖式(分为原子和聚合的),分量之间的依赖关系,以及每一个分量将被什么翻译器处理关系,以及每一个分量将被什么翻译器处理等。等。 16.4 配置管理的配置管理的CASE工具工具2配置依据(配置依据(configuration thread)推推导配置项版本时所用的一组规则、工具和工导配置项版本时所用的一组规则、工具

988、和工具中的选件(具中的选件(options);); “ “配置依据配置依据”主要描述对于一次具体的配主要描述对于一次具体的配置建立,源项的哪些版本和翻译器的哪些选置建立,源项的哪些版本和翻译器的哪些选件将被使用。因此涉及到版本和选件的命名件将被使用。因此涉及到版本和选件的命名与确定。为此,与确定。为此,DSEE引入一套专用语言,描引入一套专用语言,描述述“系统模型系统模型”的的“配置依据配置依据”。 16.4 配置管理的配置管理的CASE工具工具3导出项缓冲池(导出项缓冲池(derived element pool) 每一配置项建立后都放入缓冲池中,它每一配置项建立后都放入缓冲池中,它可以同时

989、存放某配置项的几个版本。因此可以同时存放某配置项的几个版本。因此缓冲池中每项均附一个缓冲池中每项均附一个BCT(Bound Configuration Thread,捆绑配置依据),它,捆绑配置依据),它列出推导此配置项所用的各源项和工具的列出推导此配置项所用的各源项和工具的版本及工具选件。版本及工具选件。首先根据首先根据“系统模型系统模型”和和“配置依据配置依据”确定此确定此次欲推导配置项的次欲推导配置项的“BCT”,然后在缓冲池中,然后在缓冲池中查找那些可直接用于推导新配置项的配置项。查找那些可直接用于推导新配置项的配置项。通过遍历项目依赖图,确定所有凡是其所依赖通过遍历项目依赖图,确定所

990、有凡是其所依赖的项在其建立之后从未改变过的项,直接使用的项在其建立之后从未改变过的项,直接使用它们,而不重新建立。如果在它们,而不重新建立。如果在“导出缓冲池导出缓冲池”中能找到某个配置项,其中能找到某个配置项,其BCT与欲推导配置项与欲推导配置项的的BCT匹配,则匹配,则DSEE立即重用它,不再重新推立即重用它,不再重新推导。导。DSEE的一个优点就是允许各配置尽可能共的一个优点就是允许各配置尽可能共享已经导出的配置项。享已经导出的配置项。 建立规格说明建立规格说明(即为所要求配(即为所要求配 置项建立置项建立BCT)源库源库翻译器翻译器导出项缓冲池导出项缓冲池系统模型系统模型配置依据配置依

991、据图图1641 用用DSEE建立一配置建立一配置图图1642 用用DSEE并行建立某编译器前端并行建立某编译器前端DSEE建立建立编译器前端编译器前端PARSER.O计算服务器计算服务器B文件服务器文件服务器D建立建立PARSER.C导出项导出项缓冲池缓冲池源源库库工作站工作站ALEX.O建立建立LEX.ASSLEX.ASSPARSER.CCONSTAXTS.LNC工作站工作站E工作站工作站C16.4 配置管理的配置管理的CASE工具工具DSEE可以在网络环境下工作,此时建立可以在网络环境下工作,此时建立配置的工作可在多个配置的工作可在多个CPU上并行完成,如上并行完成,如图图1642说明了并行建立机制。说明了并行建立机制。假设某用户在工作站假设某用户在工作站A上要求上要求DSEE建立某建立某编译程序前端(指词法分析与语法分析编译程序前端(指词法分析与语法分析部分)部分)DSEE确定需要分别建立彼此独立确定需要分别建立彼此独立的的LEX.ASS和和PARSER.C,选择结点,选择结点B、C完完成此项任务。这两个结点独立地从结点成此项任务。这两个结点独立地从结点D的库中取所需源项,又将已建立完成的的库中取所需源项,又将已建立完成的项目送到结点项目送到结点E的缓冲池中。的缓冲池中。

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

最新文档


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

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