软件工程ppt课件完整版

上传人:枫** 文档编号:591387582 上传时间:2024-09-17 格式:PPT 页数:475 大小:2.28MB
返回 下载 相关 举报
软件工程ppt课件完整版_第1页
第1页 / 共475页
软件工程ppt课件完整版_第2页
第2页 / 共475页
软件工程ppt课件完整版_第3页
第3页 / 共475页
软件工程ppt课件完整版_第4页
第4页 / 共475页
软件工程ppt课件完整版_第5页
第5页 / 共475页
点击查看更多>>
资源描述

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

1、第第1章章概述概述n软件,已处于信息技术的核心位置,软件,已处于信息技术的核心位置,软件产业,已成为信息产业中独立的支柱产软件产业,已成为信息产业中独立的支柱产业,软件业的发展造就了一个个业,软件业的发展造就了一个个 “童话童话”。软件工厂成为了科技时代的浪尖。软件工厂成为了科技时代的浪尖。n 自从自从19681968年首次软件工程一词以来,软件年首次软件工程一词以来,软件工程已成为计算机软件的一个重要分支和研工程已成为计算机软件的一个重要分支和研究方向。究方向。 作者作者 都是安抚都是安抚 主编主编 带我飞带我飞第二章第二章软件计划软件计划可行性研究可行性研究系统流程图系统流程图软件计划软件

2、计划成本成本/ /效益分析效益分析可行性研究可行性研究一、目的一、目的可行性研究的目的是用最小的代价在尽可能短可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。的时间内确定问题是否能够解决。可行性研究的目的不是解决问题,而是确定问题可行性研究的目的不是解决问题,而是确定问题是否值得解决。怎样达到这个目的呢?当然不能靠主是否值得解决。怎样达到这个目的呢?当然不能靠主观猜想而只能靠客观分析,必须分析几种主要的可能观猜想而只能靠客观分析,必须分析几种主要的可能解法的利弊,从而判定原定的系统目标和规模是否现解法的利弊,从而判定原定的系统目标和规模是否现实。系统完成后所能带来的效益是

3、否大到值得投资开实。系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,发这个系统的程度。因此,可行性研究实质上是要进可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程。行一次大大压缩简化了的系统分析和设计的过程。也也就是在较高层次上以较抽象的方式进行系统分析和设就是在较高层次上以较抽象的方式进行系统分析和设计的过程。计的过程。可行性研究可行性研究二、可行性研究集中在如下四个最为敏感的方面二、可行性研究集中在如下四个最为敏感的方面:1.经济可行性经济可行性这个系统的经济效益能超过它的开发成本吗?这个系统的经济效益能超过它的开发成本吗?2.技术可行性技术可行性使用现有

4、的技术能实现这个系统吗?分析技术冒使用现有的技术能实现这个系统吗?分析技术冒险的各种因素,例如有关的技术是否已进步到足以支险的各种因素,例如有关的技术是否已进步到足以支持该系统?能否有胜任开发该系统的熟练技术人员?持该系统?能否有胜任开发该系统的熟练技术人员?为开发项目的所有硬、软件资源是否能按期得到?为开发项目的所有硬、软件资源是否能按期得到?可行性研究可行性研究3.操作可行性操作可行性系统的操作方式在这个用户组织内行得通吗?系统的操作方式在这个用户组织内行得通吗?4.法律可行性法律可行性确定由于开发软件项目是否会侵犯他人、集体或国家确定由于开发软件项目是否会侵犯他人、集体或国家的利益,是否

5、会违反国家的法律,并由此承担法律责任。的利益,是否会违反国家的法律,并由此承担法律责任。可行性研究最根本的任务是对以后的行动方针提出建议,可行性研究最根本的任务是对以后的行动方针提出建议,如果问题没有可行的解,分析员应该建议停止这项开发工如果问题没有可行的解,分析员应该建议停止这项开发工程以避免时间、资源、人力和金钱的浪费。如果问题值得程以避免时间、资源、人力和金钱的浪费。如果问题值得解,分析员应该推荐一个较好的解决方案,并未工程制定解,分析员应该推荐一个较好的解决方案,并未工程制定一个初步的计划。一个初步的计划。可行性研究可行性研究三、可行性研究需要的时间长短取决于工程的规模。三、可行性研究

6、需要的时间长短取决于工程的规模。一般说来,可行性研究的成本只是工程总成本一般说来,可行性研究的成本只是工程总成本的的510。可行性研究可行性研究四、可行性研究的步骤四、可行性研究的步骤1、复查系统规模和目标复查系统规模和目标分析员访问关键人员,仔细阅读和分析有关的材分析员访问关键人员,仔细阅读和分析有关的材料,以便改正含糊或不正确的叙述,清晰的描述对目料,以便改正含糊或不正确的叙述,清晰的描述对目标系统的一切限制和约束标系统的一切限制和约束2、研究目前正在使用的系统研究目前正在使用的系统新系统必须解决旧系统中存在的问题新系统必须解决旧系统中存在的问题运行使用旧系统所需要的费用是一个重要经济指运

7、行使用旧系统所需要的费用是一个重要经济指标,如果新系统不能增加收入或减少使用费用,那么标,如果新系统不能增加收入或减少使用费用,那么从经济角度看新系统就不如旧系统。从经济角度看新系统就不如旧系统。可行性研究可行性研究注意了解并记录现有系统和其它系统之间接口情注意了解并记录现有系统和其它系统之间接口情况,这是况,这是设计新系统时的重要约束条件。设计新系统时的重要约束条件。常见的错误做法是花费过多时间去分析现有的系统。常见的错误做法是花费过多时间去分析现有的系统。3.导出新系统的高层逻辑模型导出新系统的高层逻辑模型优秀的设计过程通常总是从现有的物理系统出发,导出现优秀的设计过程通常总是从现有的物理

8、系统出发,导出现有系统的逻辑模型(有系统的逻辑模型(数据流图和业务流程图数据流图和业务流程图),在参考现有系),在参考现有系统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统统的逻辑模型,设想目标系统的逻辑模型,最后根据目标系统的逻辑模型建造新的物理系统。的逻辑模型建造新的物理系统。可行性研究可行性研究4.重新定义问题重新定义问题新系统的逻辑模型实质上表达了分析员对新系统必须做什么新系统的逻辑模型实质上表达了分析员对新系统必须做什么的看法,用户是否也有同样的看法呢?分析员应该和用户一起再次的看法,用户是否也有同样的看法呢?分析员应该和用户一起再次复查问题定义、工程规模和目标。复查问题定义、

9、工程规模和目标。这次复查应把数据流图和数据字典作为讨论的基础。这次复查应把数据流图和数据字典作为讨论的基础。可行性研究的前四个步骤实质上构成一个循环,分析员定义问可行性研究的前四个步骤实质上构成一个循环,分析员定义问题,分析这个问题,导出一个试探性的解,在此基础上再次定义问题,分析这个问题,导出一个试探性的解,在此基础上再次定义问题,再一次分析这个问题,修改这个解,继续这个循环过程,直到题,再一次分析这个问题,修改这个解,继续这个循环过程,直到提出的逻辑模型完全符合系统目标。提出的逻辑模型完全符合系统目标。可行性研究可行性研究5、导出和评价供选的解法、导出和评价供选的解法导出供选择的解法的最简

10、单的途径,是从技术角导出供选择的解法的最简单的途径,是从技术角度出发考虑解决问题的不同方案。度出发考虑解决问题的不同方案。依次从技术可行性、操作可行性、经济可依次从技术可行性、操作可行性、经济可行性三行性三个方面考虑。个方面考虑。6、推荐一个方案并说明理由推荐一个方案并说明理由7、推荐行动方针、推荐行动方针8、书写文档提交审查、书写文档提交审查请用户和使用部门的负责人仔细审查。请用户和使用部门的负责人仔细审查。可行性研究可行性研究 系统流程图是概括地描绘物理系统的传统工具。系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统它的基本思想是用图形符号以黑盒子

11、形式描绘组成系统的每个部件的每个部件(程序、文档、数据库和人工过程等程序、文档、数据库和人工过程等)。 系系统统流流程程图图表表达达的的是是数数据据在在系系统统各各部部件件之之间间流流动动的的情情况况,而而不不是是对对数数据据进进行行加加工工处处理理的的控控制制过过程程,它它用用来来表示物理数据流图而不是程序流程图。表示物理数据流图而不是程序流程图。系统流程图系统流程图1、系统流程图的符号、系统流程图的符号:如表:如表2-1、2-2所示所示(书书)2、系统流程图举例、系统流程图举例:如图:如图2-1、2-2所示所示(书书)3、分层、分层 描描绘绘复复杂杂的的系系统统时时,比比较较好好的的方方法

12、法是是分分层层次次地地描描绘绘这这个个系统。系统。(1)绘绘制制高高层层次次的的系系统统流流程程图图,描描绘绘系系统统总总体体概概貌貌,表表明明系系统的关键功能。统的关键功能。(2)然然后后分分别别对对每每个个关关键键功功能能进进行行详详细细描描述述,画画在在单单独独的的一一页纸上。页纸上。系统流程图系统流程图4、系统流程图的作用:、系统流程图的作用:(1)系系统统分分析析员员可可利利用用系系统统流流程程图图直直接接拟拟出出可可以以由由实实现现计计算机处理的部分算机处理的部分(2)通过用系统流程图来分析业务流程的合理性。)通过用系统流程图来分析业务流程的合理性。(3)系系统统流流程程图图还还是

13、是系系统统分分析析员员、管管理理人人员员和和业业务务操操作作人人员相互交流的工具。员相互交流的工具。系统流程图系统流程图软件计划以可行性研究报告为基础,由软件人员和用户共同确软件计划以可行性研究报告为基础,由软件人员和用户共同确立软件的功能和限制,提出软件计划任务书。立软件的功能和限制,提出软件计划任务书。一个典型的软件计划计划书的内容应该包括如下四个方面:一个典型的软件计划计划书的内容应该包括如下四个方面:1、软件范围、软件范围软件计划的第一个任务是确定软件需求描述,主要包括功能、性软件计划的第一个任务是确定软件需求描述,主要包括功能、性能、可靠性和接口等问题。能、可靠性和接口等问题。2、环

14、境资源、环境资源包括软件、硬件和人,每种资源均从资源的描述,对资源要求的包括软件、硬件和人,每种资源均从资源的描述,对资源要求的日程表时间以及对资源应用的持续时间三个方面来说明。日程表时间以及对资源应用的持续时间三个方面来说明。制定软件计划制定软件计划3、进度安排进度安排计划者要协调可用资源与项目的工作量,考虑各项任务之间计划者要协调可用资源与项目的工作量,考虑各项任务之间的互相依赖,而在可能时间时就并行地安排工作,预见潜在的问题的互相依赖,而在可能时间时就并行地安排工作,预见潜在的问题或瓶子口,并提供意外事故处理等。或瓶子口,并提供意外事故处理等。进度安排的主要内容进度安排的主要内容 进进度

15、度安安排排的的主主要要工工作作是是制制定定软软件件进进度度表表,以以明明确确开开发发各各阶阶段段的的任任务和时间安排情况。软件进度表的内容包括:务和时间安排情况。软件进度表的内容包括:软件的任务划分情况;软件的任务划分情况; 各任务的起始时间和结束时间;各任务的起始时间和结束时间;各任务的工作量和所需的人数;各任务的工作量和所需的人数; 各任务之间的衔接关系;各任务之间的衔接关系;各任务所需的资源情况;各任务所需的资源情况; 各任务完成后所应提交的文档;各任务完成后所应提交的文档;对各任务的审查和审查记录等。对各任务的审查和审查记录等。 制定软件计划制定软件计划3、进度安排、进度安排软件进度计

16、划的编制方法软件进度计划的编制方法甘特图法甘特图法甘特图甘特图(GanttChart)又称线条图,是一种对各项活动进行又称线条图,是一种对各项活动进行计划调度与控制的图表,它具有简单、醒目和便于编制等特点。计划调度与控制的图表,它具有简单、醒目和便于编制等特点。一般甘特图的横方向表示时间,纵方向列出工作。一般甘特图的横方向表示时间,纵方向列出工作。甘特图的描述符号和示例如图甘特图的描述符号和示例如图2-4、2-5所示(书)。所示(书)。特点:特点:能够动态反映软件项目开发进展的情况。能够动态反映软件项目开发进展的情况。难以反映多个任务之间存在的复杂的逻辑关系。难以反映多个任务之间存在的复杂的逻

17、辑关系。制定软件计划制定软件计划3、进度安排、进度安排软件进度计划的编制方法软件进度计划的编制方法网络计划法网络计划法网网络络计计划划法法是是用用网网状状图图表表安安排排与与控控制制各各项项活活动动的的方方法法,可可通通过过对对网网状状图图的的分分析析,方方便便地地确确定定完完成成整整个个工工程程至至少少需需要要多多少少时时间间,以以及及哪哪些些子子工工程程是是影影响响工工程程进进度度的的关关键键。一一般般适适应应于于工工作作步骤密切相关、错综复杂的工程项目的计划管理。步骤密切相关、错综复杂的工程项目的计划管理。网络计划法的描述符号和示例如图网络计划法的描述符号和示例如图2-6、2-7所示(书

18、)。所示(书)。制定软件计划制定软件计划成本效益分析的目的:成本效益分析的目的: 是从经济角度分析开发一个特定的新系统是否划是从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地做出是否投资于算,从而帮助客户组织的负责人正确地做出是否投资于这项开发工程的决定。这项开发工程的决定。成本成本/效益分析效益分析 1、成本估算技术、成本估算技术 常用的成本估算方法常用的成本估算方法:(1)基于代码行的成本估算方法基于代码行的成本估算方法(2)任务分解成本估算任务分解成本估算 (3)经验统计估算模型经验统计估算模型参数方程参数方程 动态多变量参数模型动态多变量参数模型 COCOMO

19、模型(模型(constructive Cost Model)自动估算工具自动估算工具 成本成本/效益分析效益分析成本成本/效益分析效益分析2、成本效益分析的方法成本效益分析的方法 在在估估计计开开发发成成本本的的基基础础上上,对对运运行行费费用用和和新新系系统统将将带带来来的的经经济济效效益益进进行行分分析析。运运行行费费用用取取决决于于系系统统的的操操作作费费用用(操操作作员员人人数数,工工作作时时间间,消消耗耗的的物物资资等等等等)和和维维护护费费用用。系系统统的的经经济济效效益益等等于于因因使使用用新新系系统统而而增加的收入加上使用新系统可以节省的运行费用。增加的收入加上使用新系统可以节

20、省的运行费用。 通过比较新系统的开发成本和经济效益,从经济角度判断这个系通过比较新系统的开发成本和经济效益,从经济角度判断这个系统是否值得投资。统是否值得投资。对成本对成本/效益分析考虑的问题有:效益分析考虑的问题有:1、货币的时间价值货币的时间价值2、投资回收期投资回收期3、纯收入纯收入4、投资回收率、投资回收率 第第3 3章章 需求分析需求分析需求分析的概念和任务获取需求的方法结构化分析方法原型法软件需求分析概述软件需求分析概述 从开发工作的流程来看,需求分析是软件计划的下一工从开发工作的流程来看,需求分析是软件计划的下一工作步骤,它为软件设计阶段提供一个软件需求规格说明书。作步骤,它为软

21、件设计阶段提供一个软件需求规格说明书。软件计划软件计划需求分析需求分析软件功能软件功能软件作软件作用范围用范围成本、资源估算成本、资源估算软件规格说明软件规格说明软件开发工作流程软件开发工作流程 1、需求的概念、需求的概念 比较权威的定义是比较权威的定义是IEEEIEEE软件工程标准词汇表中的需求定义:软件工程标准词汇表中的需求定义: 用户解决问题或达到目标所需的条件或权能用户解决问题或达到目标所需的条件或权能(Capability)(Capability)。 系系统统或或系系统统部部件件要要满满足足合合同同、标标准准、规规范范或或其其它它正正式式规规定定文文档档所所需需具具有的条件或权能。有

22、的条件或权能。 一种反映上面一种反映上面(1)(1)或或(2)(2)所描述的条件或权能的文档说明。所描述的条件或权能的文档说明。软件需求分析概述软件需求分析概述2 2、需求的层次、需求的层次 需需求求可可分分解解为为4 4个个层层次次:业业务务需需求求、用用户户需需求求、功功能能需需求求和和非非功功能能需求。需求。 业业务务需需求求:业业务务需需求求是是反反映映组组织织机机构构或或客客户户对对软软件件高高层层次次的的目目标标要要求求。这这项项需需求求是是用用户户高高层层领领导导机机构构决决定定的的,它它确确定定了了系系统统的的目目标标、规模和范围。规模和范围。 用户需求:用户需求是用户使用该软

23、件要完成的任务。用户需求:用户需求是用户使用该软件要完成的任务。 功能需求:功能需求定义了软件必须实现的功能。功能需求:功能需求定义了软件必须实现的功能。 非功能需求:非功能需求是对功能需求的补充。非功能需求:非功能需求是对功能需求的补充。 软件需求分析概述软件需求分析概述3 3、需求分析的目标和任务、需求分析的目标和任务需求分析的目标需求分析的目标构造一个完全地、精致构造一个完全地、精致地目标系统逻辑模型;地目标系统逻辑模型;确定设计约束和定义软件确定设计约束和定义软件有效性要求。有效性要求。软件规格说明软件规格说明软件需求分析概述软件需求分析概述 需求分析的任务需求分析的任务 需求分析阶段

24、研究的对象是软件项目的用户要求,其任务是借需求分析阶段研究的对象是软件项目的用户要求,其任务是借助当前系统的逻辑模型,助当前系统的逻辑模型, 调查研究、分析综合,并通过抽象思维、调查研究、分析综合,并通过抽象思维、逻辑推理导出目标系统的逻辑推理导出目标系统的逻辑模型逻辑模型,解决系统,解决系统“作什么作什么”的问题,并的问题,并将结果准确表达。将结果准确表达。3 3、需求分析的目标和任务、需求分析的目标和任务软件需求分析概述软件需求分析概述返回 软件开发项目是要实现目标系统的物理模型,包括确软件开发项目是要实现目标系统的物理模型,包括确定待开发软件系统的元素,将功能和信息结构分配到系统定待开发

25、软件系统的元素,将功能和信息结构分配到系统元素中。元素中。逻辑模型,忽视实现机制与细节,只描述系统要完成的逻辑模型,忽视实现机制与细节,只描述系统要完成的功能和要处理的信息功能和要处理的信息。软件需求分析概述软件需求分析概述实现步骤:实现步骤: (1) (1)分析现实世界,充分理解当前系统,并用一个具体模型描分析现实世界,充分理解当前系统,并用一个具体模型描述,获得当前系统的物理模型。述,获得当前系统的物理模型。 (2) (2)在理解当前系统在理解当前系统“怎么做怎么做”的基础上,抽取的基础上,抽取“作什么作什么”的的本质,抽象出系统的逻辑模型。本质,抽象出系统的逻辑模型。 (3) (3)分析

26、目标系统与当前系统逻辑上的差别,导出目标系统的分析目标系统与当前系统逻辑上的差别,导出目标系统的逻辑模型。逻辑模型。 (4) (4)对目标系统逻辑模型进行补充,以求完整地描述。对目标系统逻辑模型进行补充,以求完整地描述。软件需求分析概述软件需求分析概述当前系统当前系统逻辑模型逻辑模型物理模型物理模型目标系统目标系统模型化模型化物理模型物理模型怎么做怎么做具体化具体化抽象化抽象化逻辑模型逻辑模型做什么做什么实例化实例化导导出出理理解解需需求求表表达达需需求求由当前系统建立目标系统模型过程由当前系统建立目标系统模型过程软件需求分析概述软件需求分析概述需求分析的过程需求分析的过程 需求分析阶段的工作

27、有以下四个方面:需求分析阶段的工作有以下四个方面: 问题识别问题识别分析与综合分析与综合编制需求分析阶段文档编制需求分析阶段文档需求分析评审需求分析评审软件需求分析概述软件需求分析概述需求获取需求获取功能功能要要求求性能性能要要求求运行和扩充要求运行和扩充要求维护要求维护要求系统文档规格要求系统文档规格要求问题识别包括:问题识别包括:软件需求分析概述软件需求分析概述问题识别包括:问题识别包括:确定软件需求确定软件需求经济可行性经济可行性技术可行性技术可行性法律可行性法律可行性对不同方案进行比较选择对不同方案进行比较选择进行可行性研究进行可行性研究软件需求分析概述软件需求分析概述问题识别包括:问

28、题识别包括:确定软件需求确定软件需求进行可行性研究进行可行性研究建立分析的通讯关系建立分析的通讯关系管理人员管理人员用户用户/需求者需求者分析人员分析人员软件组软件组软件计划软件计划软软件件需需求求规规格格说说明明原型原型软件需求分析概述软件需求分析概述编写需求规格说明编写需求规格说明(1)需需求求规规格格说说明明包包含含对对目目标标软软件件系系统统的的外外部部行行为为的的完完整整描描述述、需需求求验验证证标标准准以以及及用用户户在在性性能能、质质量量、可可维维护护性性等等方方面面的的要求。要求。(2)用用户户手手册册包包括括用用户户界界面面描描述述以以及及有有关关目目标标系系统统使使用用方方

29、法法的初步构想。的初步构想。(3)在在需需求求分分析析中中确确立立测测试试标标准准,作作为为系系统统开开发发目目标标是是否否完完成的验收依据。成的验收依据。(4)修修改改的的项项目目开开发发计计划划是是根根据据新新的的分分析析结结果果,对对可可行行性性分分析析和和软软件件计计划划阶阶段段中中制制订订的的初初步步的的项项目目开开发发计计划划作作必必要要的的修修改改、补充和完善。补充和完善。软件需求分析概述软件需求分析概述需求验证需求验证由由专专家家、分分析析人人员员、开开发发人人员员、用用户户组组成成评评审审组组,对对需需求求分析所得的结果分析所得的结果进行评审。进行评审。完整性完整性正确性正确

30、性一致性一致性必要性必要性无歧义性无歧义性可验证性可验证性优先级的划分优先级的划分软件需求分析概述软件需求分析概述获取需求的方法 需需求求分分析析至至今今仍仍是是公公认认为为的的软软件件开开发发中中最最为为困困难难、亟待解决的一个问题。亟待解决的一个问题。1 1、存在问题、存在问题(1)(1)对需求的理解问题。对需求的理解问题。 (2)(2)分析人员与用户的通信问题。分析人员与用户的通信问题。 (3)(3)用户需求的可变性问题。用户需求的可变性问题。 分析方法和分析工具问题。分析方法和分析工具问题。 2、常用方法常用方法(1)访谈)访谈:正式的和非正式的访谈正式的和非正式的访谈(2)问卷调查)

31、问卷调查问问卷卷调调查查即即把把需需要要调调查查的的内内容容制制成成表表格格交交给给用用户户填填写写。该该方方法对需要调查大量人员的意见时,十分有效。法对需要调查大量人员的意见时,十分有效。(3)情景分析)情景分析情情景景分分析析就就是是对对目目标标系系统统解解决决某某个个具具体体问问题题的的方方法法和和结结果果,给出可能的情景描述,以获知用户的具体需求。给出可能的情景描述,以获知用户的具体需求。(4)实地考察)实地考察(5)构造原型)构造原型获取需求的方法3、需求分析的原则需求分析的原则(1)解决逻辑问题)解决逻辑问题需需求求分分析析是是对对问问题题的的识识别别和和说说明明过过程程,分分析析

32、员员要要回回答答的的是是“系统必须做什么系统必须做什么”的问题,而不是的问题,而不是“系统应该怎么做系统应该怎么做”的问题。的问题。(2)以运行环境为基础)以运行环境为基础需求分析工作应以具体的运行环境为基础,实事求是需求分析工作应以具体的运行环境为基础,实事求是。(3)用户参与的原则)用户参与的原则需求分析工作是系统分析人员同用户不断交互的过程。需求分析工作是系统分析人员同用户不断交互的过程。(4)构造高质量的需求规格说明)构造高质量的需求规格说明需求规格说明是需求分析工作重要的完成标志。需求规格说明是需求分析工作重要的完成标志。获取需求的方法4 4、需求分析方法概述、需求分析方法概述 不管

33、采用哪种方法进行需求分析,都应满足如下基本要求。不管采用哪种方法进行需求分析,都应满足如下基本要求。 必须能理解问题的数据域和功能域必须能理解问题的数据域和功能域 数数据据域域一一般般描描述述为为:数数据据内内容容、数数据据结结构构和和数数据据流流。其其中中,数数据据内内容容就就是是数数据据项项,数数据据结结构构就就是是数数据据项项的的组组织织形形式式,数数据据流流是数据通过系统时的变化方式。是数据通过系统时的变化方式。 对对数数据据进进行行的的一一系系列列的的转转换换即即系系统统应应实实现现的的功功能能和和子子功功能能。两个功能之间的数据传递就确定了功能之间的接口。两个功能之间的数据传递就确

34、定了功能之间的接口。 获取需求的方法4 4、需求分析方法概述、需求分析方法概述 不管采用哪种方法进行需求分析,都应满足如下基本要求。不管采用哪种方法进行需求分析,都应满足如下基本要求。 必须能按自顶向下、逐层分解的方式对问题进行分解和不断细化必须能按自顶向下、逐层分解的方式对问题进行分解和不断细化. . 分解是将求解的复杂问题,分解为若干相对简单问题求解的组合。分解是将求解的复杂问题,分解为若干相对简单问题求解的组合。分解的目的是为了降低问题求解的复杂性,将复杂问题分解成一分解的目的是为了降低问题求解的复杂性,将复杂问题分解成一些小的、容易控制和理解的子问题不仅便于理解,还可以将子问些小的、容

35、易控制和理解的子问题不仅便于理解,还可以将子问题划分给不同的开发小组,分别完成,然后再装配起来形成一个题划分给不同的开发小组,分别完成,然后再装配起来形成一个完整的系统。更重要的是可以促进软件开发走向构件开发的道路。完整的系统。更重要的是可以促进软件开发走向构件开发的道路。 获取需求的方法4 4、需求分析方法概述、需求分析方法概述 不管采用哪种方法进行需求分析,都应满足如下基本要求。不管采用哪种方法进行需求分析,都应满足如下基本要求。 要给出系统的逻辑视图和物理视图要给出系统的逻辑视图和物理视图 软件需求的逻辑视图软件需求的逻辑视图描述的是软件要达到的功能和要处理的信息之描述的是软件要达到的功

36、能和要处理的信息之间的关系,但没有描述实现的细节。间的关系,但没有描述实现的细节。 软件需求的物理视图软件需求的物理视图给出的是处理功能和信息结构的实际表现形式,给出的是处理功能和信息结构的实际表现形式,需考虑实际的环境和具体的设备。需考虑实际的环境和具体的设备。 获取需求的方法结构化分析方法结构化分析方法结构化分析方法:结构化分析方法: 是面向数据流进行需求分析,是面向数据流进行需求分析,以结构化的方式进行系统的以结构化的方式进行系统的分析方法。适用于分析大型的数据处理系统。分析方法。适用于分析大型的数据处理系统。该方法的该方法的特点特点是利用数据流图来帮助人们理解问题,对问是利用数据流图来

37、帮助人们理解问题,对问题进行分析。即利用图形工具来模拟数据处理过程。题进行分析。即利用图形工具来模拟数据处理过程。该方法的该方法的核心是数据流图核心是数据流图。数据流图是一种用来表示信息数据流图是一种用来表示信息流程和信息变换过程的图解方法,它将系统看成是由数据流联流程和信息变换过程的图解方法,它将系统看成是由数据流联系的各种功能的组合。数据流图可以方便的描述用数据流的流系的各种功能的组合。数据流图可以方便的描述用数据流的流动联系的各种功能。通过各种功能的输入动联系的各种功能。通过各种功能的输入/输出结果输出结果,表现现有表现现有系统或待开发系统的功能。系统或待开发系统的功能。此外此外: :

38、用用数据字典数据字典定义数据流图中的各项数据;定义数据流图中的各项数据; 结构化英语、判定树和判定表结构化英语、判定树和判定表对数据流图中的基本功能进行对数据流图中的基本功能进行描述。描述。 通过将系统分解成多层处理后,在较低层次上,可以看到数通过将系统分解成多层处理后,在较低层次上,可以看到数据流图的高层次加工的细节和相关的数据流。结构化分析方法的据流图的高层次加工的细节和相关的数据流。结构化分析方法的实质就是采用一组分层的数据流图及相应的数据字典作为系统的实质就是采用一组分层的数据流图及相应的数据字典作为系统的模型。模型。 结构化分析方法从总体上看是一种强烈依赖数据流的自顶向结构化分析方法

39、从总体上看是一种强烈依赖数据流的自顶向下的建模方法,它不仅是需求分析技术,也是完成规格说明文档下的建模方法,它不仅是需求分析技术,也是完成规格说明文档的技术手段。的技术手段。 结构化分析方法结构化分析方法结构化分析方法结构化分析方法( (structured analisys)structured analisys)结构化分析法使用的工具数据字典数据字典数据流图数据流图结构化英语结构化英语判定表或判定数判定表或判定数表达系统内部表达系统内部数据的运动情数据的运动情况况结构化分析法使用的工具数据字典数据字典数据流图数据流图结构化英语结构化英语判定表或判定数判定表或判定数定义系统的定义系统的数据。

40、数据。结构化分析方法结构化分析方法( (structured analisys)structured analisys)结构化分析法使用的工具数据字典数据字典数据流图数据流图结构化英语结构化英语判定表或判定数判定表或判定数描述数描述数据加工。据加工。结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据流图数据流图1、组成元素:四种基本图形符号、组成元素:四种基本图形符号圆框:表示从输入到输出的数据流中的一个加工,在框内注圆框:表示从输入到输出的数据流中的一个加工,在框内注明加工的名称;明加工的名称;方框:表示数据的源点或数据的汇

41、点,即外部实体,在框内方框:表示数据的源点或数据的汇点,即外部实体,在框内注明实体的名称;注明实体的名称;箭头:表示被加工数据的路径和流向,即数据流,可用名词箭头:表示被加工数据的路径和流向,即数据流,可用名词和或名词性短语命名;和或名词性短语命名;双杠:表示数据存储,可以是一个记录或一个数据文件,可双杠:表示数据存储,可以是一个记录或一个数据文件,可用名词和或名词性短语命名。用名词和或名词性短语命名。结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据流描述数据流描述DFD中各成分的接口。数据流的方向可以中各成分的接口。数据流

42、的方向可以:从加工流向加工:从加工流向加工:从加工流向数据存储;从加工流向数据存储;从源点流向加工;从源点流向加工;从加工流向终点。从加工流向终点。数据流数据流:结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据流的含义数据流的含义:(1)数数据据流流是是一一组组成成分分已已知知的的数数据据。可可以以是是一一个个数数据,也可以是一组数据。据,也可以是一组数据。(2)两两个个加加工工之之间间可可以以有有多多个个数数据据流流。当当数数据据流流间间毫毫无无关关系系,也也不不是是同同时时流流出出(或或同同时时到到达达时时)如如果果强强

43、制制和和为一个数据流会使问题含糊不清。为一个数据流会使问题含糊不清。(3)数数据据流流应应有有良良好好的的命命名名,它它不不仅仅作作为为数数据据的的标标识,还有利于深化对系统的认识。识,还有利于深化对系统的认识。数据流数据流:结构化分析方法结构化分析方法( (structured analisys)structured analisys)(4)同一数据流可流向不同加工,不同加工也可流出相)同一数据流可流向不同加工,不同加工也可流出相同的数据流。(合并与分解)。同的数据流。(合并与分解)。(5)流入)流入/流出简单存储的数据流不需要命名。因为数流出简单存储的数据流不需要命名。因为数据存储名已有足

44、够的信息来表示数据流的意义。据存储名已有足够的信息来表示数据流的意义。(6)数据流不代表控制流。数据流反映了处理的对象,)数据流不代表控制流。数据流反映了处理的对象,控制流是一种选择或用来影响加工的性质,而不是对它控制流是一种选择或用来影响加工的性质,而不是对它进行加工的对象。进行加工的对象。数据流的含义数据流的含义:数据流数据流:结构化分析方法结构化分析方法( (structured analisys)structured analisys)加加工工是是对对数数据据执执行行某某种种操操作作或或变变换换,是是把把输输入入数数据据流流变变成成输输出出数数据据流流的的一一种种变变换换。每每个个加加

45、工工应应有有一一个个名名字字代代表表它它的的意意义义。分分层层的的DFDDFD中中每每个个加加工工还还应应进进行行编号。编号。 加工加工结构化分析方法结构化分析方法( (structured analisys)structured analisys)数数据据存存储储可可以以表表示示文文件件、文文件件的的一一部部分分、数数据据库库的的元元素素或或记记录录的的一一部部分分等等。数数据据可可以以存存储储在在磁磁盘盘、磁磁带带、存存储储器器和和其其他他任任何何介介质质上上。应应对对数数据据文文件件进进行行命命名名。在在DFD中中应应注注意意指指向向数数据据文文件件的的箭箭头头的的方方向向(可可以以是是

46、双向的)。双向的)。数据存储数据存储结构化分析方法结构化分析方法( (structured analisys)structured analisys)源源点点和和终终点点是是代代表表系系统统之之外外的的人人、物物或或组组织织。它它们们发发出出或或接接受受系系统统的的数数据据,其其作作用用是是提提供供系系统统和和外外界界环环境境之之间间关关系系的的注注释释性性说说明明,说说明明数数据据的的来来龙龙去去脉脉,使数据流图更清晰。使数据流图更清晰。源点和终点源点和终点结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据流图实例数据流图实

47、例顾客顾客验证验证订单订单图书目录文件图书目录文件顾客档案顾客档案顾客信顾客信用情况用情况汇总对汇总对各出版社各出版社的要求的要求订单订单待处理订单文件待处理订单文件出版社档案文件出版社档案文件正确正确订单订单一批一批订单订单书目、地址书目、地址订货存根文件订货存根文件订货存根订货存根出版社出版社对出版社对出版社的订单的订单图书预定系统的数据流图图书预定系统的数据流图结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据流图的画法:数据流图的画法:基本原则:基本原则:数据流图中所有图形符号必须是四种元素之一;数据流图中所有图形符号

48、必须是四种元素之一;数据流图的主图必须含有四种元素,缺一不可;数据流图的主图必须含有四种元素,缺一不可;数据流图的主图必须封闭在外部实体之间,实体可以有多个;数据流图的主图必须封闭在外部实体之间,实体可以有多个;加工框至少有一个输入数据流和一个输出数据流;加工框至少有一个输入数据流和一个输出数据流;任何一个数据流子图必须与它的父图上的一个加工框对应,两者的任何一个数据流子图必须与它的父图上的一个加工框对应,两者的输入输入/输出数据流必须一致;输出数据流必须一致;图中的每一个元素都必须有名字。图中的每一个元素都必须有名字。结构化分析方法结构化分析方法( (structured analisys)

49、structured analisys)数据流图的画法:数据流图的画法:基本原则:基本原则: 可以在数据流图中加入物质流;可以在数据流图中加入物质流; 不可在数据流图中夹带控制流;不可在数据流图中夹带控制流; 初画时,可忽略一些细节。初画时,可忽略一些细节。注意:注意:画数据流图时,不考虑初始化,暂不考虑出错路径等细节,不画数据流图时,不考虑初始化,暂不考虑出错路径等细节,不画控制流和控制信息。基本原则是画控制流和控制信息。基本原则是“先外后内先外后内”。结构化分析方法结构化分析方法( (structured analisys)structured analisys)画数据流图的步骤:画数据流

50、图的步骤:1 1、找外部实体,找到外部实体即可确定系统与外部世界的界面,也就、找外部实体,找到外部实体即可确定系统与外部世界的界面,也就可确定数据流源和数据终点;可确定数据流源和数据终点;2 2、找出外部实体的输入和输出数据流;、找出外部实体的输入和输出数据流;3 3、画出外部实体;、画出外部实体;4 4、从外部实体的输出流(源)出发,按照系统的逻辑需要,逐步画出、从外部实体的输出流(源)出发,按照系统的逻辑需要,逐步画出一系列逻辑加工框,直至数据终点;一系列逻辑加工框,直至数据终点;5 5、按照一般原则进行检查和修改;、按照一般原则进行检查和修改;6 6、按上述步骤画出所需的子图。、按上述步

51、骤画出所需的子图。结构化分析方法结构化分析方法( (structured analisys)structured analisys) 控制系统复杂性的基本思想:控制系统复杂性的基本思想: 对大型对大型、复杂系统,最困难的是处理复杂性。、复杂系统,最困难的是处理复杂性。在软件工程中,控制复杂性的主要手段是在软件工程中,控制复杂性的主要手段是“分解分解”和和“抽象抽象”。 SA SA方法采用这种方法采用这种“分解分解”和和“抽象抽象”的手段来对的手段来对付复杂。付复杂。结构化分析方法结构化分析方法( (structured analisys)structured analisys)如何表示系统的功

52、能呢?如何表示系统的功能呢? “采用自顶向下逐层分解采用自顶向下逐层分解”的方法。的方法。 对系统作了合理的分解后,在最下层就可以分别理对系统作了合理的分解后,在最下层就可以分别理解系统的每一个细节,并为每一个细节写下小说明,再将解系统的每一个细节,并为每一个细节写下小说明,再将所有小说明组织起来,即得到整个系统的系统说明书。这所有小说明组织起来,即得到整个系统的系统说明书。这种逐层分解也体现了抽象的原则,使人们不至于一下子就种逐层分解也体现了抽象的原则,使人们不至于一下子就被许多细节淹没,而是有控制的逐步了解更多的细节,有被许多细节淹没,而是有控制的逐步了解更多的细节,有利于理解问题。利于理

53、解问题。结构化分析方法结构化分析方法( (structured analisys)structured analisys)S213FFFF2.22.32.42.13.23.13.3FDFD/L0DFD/L11.2F1.11.3DFD/L2.1DFD/L2.2DFD/L2.3分层数据流图分层数据流图结构化分析方法结构化分析方法( (structured analisys)structured analisys)父图和子图的平衡父图和子图的平衡3.13.23.3NXPQST123ABMSCN父父图图子子图图结构化分析方法结构化分析方法( (structured analisys)structure

54、d analisys)M3.13.23.4NXPQS3.3检查检查输出输出计算计算ACDEX0时时数据流图例:数据流图例:结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据字典数据字典数据字典是对数据流图上的每一个成分进行定义和说明的工数据字典是对数据流图上的每一个成分进行定义和说明的工具。具。 数据字典中有关系统的详细信息,是以后进行系统设计及维数据字典中有关系统的详细信息,是以后进行系统设计及维护的重要依据。护的重要依据。 数据字典编写的基本要求:数据字典编写的基本要求: 1 1、对数据流图上的各种元素的定义必须明确,一致

55、且易理解。、对数据流图上的各种元素的定义必须明确,一致且易理解。 2 2、命名、编号应与数据流图一致。、命名、编号应与数据流图一致。 3 3、对数据流图的成分定义与说明无遗漏,无同名异义,或异、对数据流图的成分定义与说明无遗漏,无同名异义,或异名同义。名同义。 4 4、格式规范,文字精练,符号正确。、格式规范,文字精练,符号正确。结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据字典中的条目包括数据字典中的条目包括6 6种形式:种形式: 1 1、数据项:数据处理中基本的不可分割的逻辑单位。(如材料、数据项:数据处理中基本的不可

56、分割的逻辑单位。(如材料号等)号等) 2 2、数据结构:描述数据流或数据存储的逻辑组成。、数据结构:描述数据流或数据存储的逻辑组成。 3 3、数据流:定义数据流图中的数据流,包括名字、编号、来源、数据流:定义数据流图中的数据流,包括名字、编号、来源去向、包含的数据结构名等。去向、包含的数据结构名等。 4 4、数据存储:说明存储文件的名称、编号,组成、记录数等。、数据存储:说明存储文件的名称、编号,组成、记录数等。 5 5、处理功能:说明加工的名称、编号,输入、处理功能:说明加工的名称、编号,输入/ /输出数据流,加工输出数据流,加工逻辑概括描述等。逻辑概括描述等。 6 6、外部实体:说明外部实

57、体的名称、编号,输入、外部实体:说明外部实体的名称、编号,输入/ /输出数据流等。输出数据流等。结构化分析方法结构化分析方法( (structured analisys)structured analisys)数据字典定义式中的符号:数据字典定义式中的符号:符号符号含义含义举例举例=被定义为被定义为日期日期=年年+月月+日日+与与学生输入数据学生输入数据=学号学号+姓名姓名,|或或学生输入数据学生输入数据=学号学号|姓名姓名.重复重复帐目帐目=账号账号+户名户名+款额款额+存期存期+地址地址mn重复重复密码密码=1字母字母+数字数字8(.)选择选择登录信息登录信息=用户名用户名+(密码密码)“

58、”基本数据元素基本数据元素印密印密=“0”.连接符连接符学号学号=“00001”.“99999”结构化分析方法结构化分析方法( (structured analisys)structured analisys)结构化英语(结构化英语(PDL):语言叙述描述加工逻辑,是一种最自然的方法。但自然语言有不语言叙述描述加工逻辑,是一种最自然的方法。但自然语言有不精确、容易产生二义性等问题。因此在自然语言上增加一些限制,形精确、容易产生二义性等问题。因此在自然语言上增加一些限制,形成半形式化语言。结构化语言在自然语言的基础上发展了成半形式化语言。结构化语言在自然语言的基础上发展了3 3种规范化的种规范化

59、的语言表达方式,它使用的词汇主要有语言表达方式,它使用的词汇主要有3 3种:英语命令动词;数据流图和种:英语命令动词;数据流图和数据字典中的名字;表示处理的逻辑结构的保留字。数据字典中的名字;表示处理的逻辑结构的保留字。 3 3种基本控制结构:种基本控制结构: 简单陈述结构:每一句子只能是祈使句、简单句,只有一个谓语简单陈述结构:每一句子只能是祈使句、简单句,只有一个谓语动词。动词。 判定结构;判定结构; 重复结构。重复结构。结构化分析方法结构化分析方法( (structured analisys)structured analisys)如果如果当前库存量当前库存量=0做缺货处理做缺货处理否则

60、否则如果如果当前库存量当前库存量库存下限库存下限做下限报警做下限报警否则否则如果如果当前库存量当前库存量订货点量订货点量做订货处理做订货处理否则否则如果如果当前库存量当前库存量上限上限做上限报警做上限报警否则否则正常处理正常处理结构化分析方法结构化分析方法( (structured analisys)structured analisys)判定表:判定表:在某些数据处理问题中,其数据流图的处理需要依赖于在某些数据处理问题中,其数据流图的处理需要依赖于多个逻辑条件的取值,这些取值可能构成多个逻辑条件的取值,这些取值可能构成多种不同的情况,相应执行不同的动作。这类问题适合使用多种不同的情况,相应执

61、行不同的动作。这类问题适合使用判定树或判定表作为描述加工小说明的工判定树或判定表作为描述加工小说明的工具具.判定表为说明复杂的决策逻辑提供了一种描述机制,它判定表为说明复杂的决策逻辑提供了一种描述机制,它以一种形式化的表格为基础。以一种形式化的表格为基础。结构化分析方法结构化分析方法( (structured analisys)structured analisys)判定表通常由四部分组成:判定表通常由四部分组成: (1 1)基本条件:列出所有可能的条件,通常这些条件的次)基本条件:列出所有可能的条件,通常这些条件的次序无关;序无关; (2 2)基本动作:列出所有可能采取的动作,通常次序无关;

62、)基本动作:列出所有可能采取的动作,通常次序无关; (3 3)条件项:各种条件给出的多种取值,即多个条件所取)条件项:各种条件给出的多种取值,即多个条件所取真假值的组合。真假值的组合。 (4 4)动作项:和条件项紧密相关,指出在各种条件的特定)动作项:和条件项紧密相关,指出在各种条件的特定取值下应采取的动作。取值下应采取的动作。 任何一个条件项的特定取值及其相应要执行的动作,称任何一个条件项的特定取值及其相应要执行的动作,称为规则(在判定表中贯穿条件项和动作项一列)。为规则(在判定表中贯穿条件项和动作项一列)。结构化分析方法结构化分析方法( (structured analisys)struc

63、tured analisys)判断条件判断条件不同条件的组合不同条件的组合处理行动处理行动采取的行动采取的行动结构化分析方法结构化分析方法( (structured analisys)structured analisys)判定表的组成:判定表的组成:构造步骤:构造步骤:1、计算所有可能的条件组合,确定规则个数,、计算所有可能的条件组合,确定规则个数,通常通常N个条件,最多可以有个条件,最多可以有2N个条件组合数。个条件组合数。2、列出所有的基本条件和基本动作。、列出所有的基本条件和基本动作。3、对每一种状态找出所有的条件,填入条件项。、对每一种状态找出所有的条件,填入条件项。4、对每一种规则

64、指定动作,填入动作项、对每一种规则指定动作,填入动作项。结构化分析方法结构化分析方法( (structured analisys)structured analisys)判定树:判定树:是判定表的一种变化,它是一种程树状的图形工具,适是判定表的一种变化,它是一种程树状的图形工具,适合于描述处理中具有多种策略,要根据若干条件的判定,确合于描述处理中具有多种策略,要根据若干条件的判定,确定所采用策略的情况。定所采用策略的情况。判定树的优点是清晰、直观,但当条件多,而且互相组判定树的优点是清晰、直观,但当条件多,而且互相组合时,不容易清楚地表达判断过程。合时,不容易清楚地表达判断过程。结构化分析方法

65、结构化分析方法( (structured analisys)structured analisys)库库存存量量0=0 库存下限库存下限库存下限库存下限 订货点量订货点量订货点量订货点量库存上限库存上限10万万能否按期付款能否按期付款距离本厂距离本厂800公里公里无折扣无折扣99%98%87%96%95%90%YYYYYNYNYYNNNYYNYNNNYNNN结构化分析方法结构化分析方法( (structured analisys)structured analisys)原型化方法原型化方法快速原型的概念快速原型的概念: : 通常通常, , 原型是指模拟某种产品的原始模型。而在软件开发中,原型是

66、指模拟某种产品的原始模型。而在软件开发中,原型是软件的一个早期可运行版本。原型是软件的一个早期可运行版本。 快速原型法是根据软件需求迅速地产生软件产品的系统的一个快速原型法是根据软件需求迅速地产生软件产品的系统的一个原型,该原型能够表现出目标系统的功能和行为特性,但不一定符原型,该原型能够表现出目标系统的功能和行为特性,但不一定符合其全部的实现需求。用户可通过原型作出评价,开发者根据用户合其全部的实现需求。用户可通过原型作出评价,开发者根据用户的意见对原型加以修改,这样能够尽早的获得更完整、更准确的需的意见对原型加以修改,这样能够尽早的获得更完整、更准确的需求和设计。求和设计。原型化方法原型化

67、方法快速原型的特性:快速原型的特性: “快速快速”:尽快向用户提供一个可在计算机上运行的目标系统的:尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者尽可能快地达成对目标系统模型,以便使用户和开发者尽可能快地达成对目标系统 “做什么做什么”的共识。的共识。 “易于修改易于修改”:如果原型的第一版不是用户所需要的,就必须根:如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速地修改它,构建出原型的第二版。据用户的意见迅速地修改它,构建出原型的第二版。 软件原型的分类:软件原型的分类: 废弃型:废弃型:先构造一个功能简单而且质量要求不高的模型系统,先构造一个功能简单而且质

68、量要求不高的模型系统,针对这个模型系统反复进行分析修改,形成比较好的设计思想,针对这个模型系统反复进行分析修改,形成比较好的设计思想,据此设计出更加完整、准确、一致、可靠的最终系统。系统构造据此设计出更加完整、准确、一致、可靠的最终系统。系统构造完成后,原来的模型系统就被废弃。完成后,原来的模型系统就被废弃。 追加型:追加型:先构造一个功能简单而且质量要求不高的模型系统,先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,最后发展成为最终系统。求,最后发展成为最终系统。原型化方法原型化

69、方法快速原型开发模型快速原型开发模型: : 快速分析快速分析 构造原型构造原型 运行和评价原型运行和评价原型 修正和改进修正和改进 判定原型是否完成判定原型是否完成 判定原型细部是否说明判定原型细部是否说明 对原型细部说明对原型细部说明 判定原型效果判定原型效果 整理原型、提供文档整理原型、提供文档原型化方法原型化方法第第4章章总体设计总体设计总体设计的任务及目标总体设计的任务及目标总体设计的概念和原理总体设计的概念和原理设计准则设计准则总体设计的常用方法及工具总体设计的常用方法及工具总体设计的任务及目标总体设计的任务及目标简单地说,总体设计就是根据需求分析的简单地说,总体设计就是根据需求分析

70、的“做什做什么么(Whattodo?)”,确定系统应该,确定系统应该“怎么做怎么做”(Howtodo?)。1、总体设计的任务、总体设计的任务第第4章章总体设计总体设计开发阶段的信息流开发阶段的信息流总体设计的任务及目标总体设计的任务及目标软软件件设设计计阶阶段段是是采采用用合合适适的的设设计计方方法法进进行行系系统统结结构构、数数据和过程的设计。其中,据和过程的设计。其中,系系统统结结构构的的设设计计定定义义软软件件组组成成及及各各主主要要成成分分之之间间的的关关系系,构造软件系统的整体框架;构造软件系统的整体框架;数据设计数据设计完成数据结构的定义;完成数据结构的定义;过过程程设设计计则则是

71、是对对软软件件系系统统框框架架和和数数据据结结构构进进行行细细化化,对对各各结结构构成成分分所所实实现现的的功功能能,用用很很接接近近程程序序的的软软件件表表示示形形式式进行过程性描述。进行过程性描述。编编码码阶阶段段将将过过程程性性描描述述转转换换为为某某种种程程序序设设计计语语言言描描述述的的源代码。源代码。最后经过最后经过测试测试即得到完整有效地软件系统。即得到完整有效地软件系统。总体设计的任务及目标总体设计的任务及目标总体设计阶段的具体任务如下:总体设计阶段的具体任务如下:(1)制定规范制定规范为软件开发组制定在设计时应该共同遵守的标准,为软件开发组制定在设计时应该共同遵守的标准,以便

72、协调组内各成员的工作。以便协调组内各成员的工作。总体设计的任务及目标总体设计的任务及目标(2)软件系统结构设计软件系统结构设计确定组成系统的程序以及相互的关系。确定组成系统的程序以及相互的关系。具体内容为:具体内容为:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。采用某种设计方法,将一个复杂的系统按功能划分成模块。(2)确定每个模块的功能。确定每个模块的功能。(3)确定模块之间的调用关系。确定模块之间的调用关系。(4)确定模块之间的接口,即模块之间传递的信息。确定模块之间的接口,即模块之间传递的信息。(5)评价模块结构的质量。评价模块结构的质量。总体设计的任务及目标总体设计的任务及

73、目标(3)数据结构及数据库设计数据结构及数据库设计数据结构的设计数据结构的设计主主要要是是对对数数据据字字典典的的一一些些相相关关内内容容加加以以细细化化,到到详详细细设设计计阶阶段段则则规规定定其其具具体体的的实实现现细细节节。在在该该阶阶段段应应使使用用抽抽象象的的数数据据类类型型描描述数据结构。述数据结构。数据库的设计数据库的设计概念结构设计概念结构设计:可以用可以用E-R模型模型表示,也可以用表示,也可以用3NF关系群表示关系群表示逻逻辑辑结结构构设设计计 :是是将将概概念念模模型型转转换换成成某某种种数数据据库库管管理理系系统统(DBMS)支持的数据模型。支持的数据模型。物物理理结结

74、构构设设计计:设设计计数数据据模模式式的的一一些些物物理理细细节节,选选定定合合适适的的存存储结构和存取方法储结构和存取方法,以获得数据库的最佳存取效率。,以获得数据库的最佳存取效率。总体设计的任务及目标总体设计的任务及目标(4)可靠性设计(可靠性设计(质量设计)质量设计)在在软软件件开开发发的的一一开开始始就就应应确确定定软软件件可可靠靠性性和和其其它它质质量量指指标标,考考虑虑相相应应措措施施,确确保保所所做做的的设设计计具具有有良良好好的的质质量量特特性性,使使软软件件易于修改和易于维护。易于修改和易于维护。(5)编写概要设计文档)编写概要设计文档概要设计说明书概要设计说明书数据库设计说

75、明书数据库设计说明书用户手册用户手册测试计划测试计划总体设计的任务及目标总体设计的任务及目标(6)设计审查和复审设计审查和复审审查和复审主要是为了审查和复审主要是为了及早发现软件缺陷,避免将错及早发现软件缺陷,避免将错误带到后序阶段,甚至放大错误,导致程序的质量下降。误带到后序阶段,甚至放大错误,导致程序的质量下降。评审的方式可以召开正式审查会议,也可以举行临时会议。评审的方式可以召开正式审查会议,也可以举行临时会议。总体设计的任务及目标总体设计的任务及目标2、总体设计的目标总体设计的目标软件设计的最终目标是要取得最佳方案软件设计的最终目标是要取得最佳方案,即在所有候选,即在所有候选方案中,节

76、省开发费用、降低资源消耗、缩短开发时间、能方案中,节省开发费用、降低资源消耗、缩短开发时间、能够赢得较高的生产效率、较高的可靠性和可维护性的方案。够赢得较高的生产效率、较高的可靠性和可维护性的方案。并且,方案可使开发软件满足以下特点:并且,方案可使开发软件满足以下特点:(1)功能、性能都符合指定的要求;)功能、性能都符合指定的要求;(2)软件是可维护的,可方便地进行修改)软件是可维护的,可方便地进行修改;(3)除了代码,还有一套配置齐全的文档。)除了代码,还有一套配置齐全的文档。总体设计的概念和原理总体设计的概念和原理1、软件结构和过程软件结构和过程软软件件结结构构:就就是是将将一一些些功功能

77、能模模块块按按照照某某种种关关系系连连接接形成的结构。形成的结构。树树状状结结构构的的特特点点是是:整整个个结结构构只只有有一一个个顶顶层层模模块块,而而对对于于任任何何一一个个下下层层模模块块,只只有有一一个个上上级级模模块块,而而且且同同一一层层模模块之间不发生联系。块之间不发生联系。网网状状结结构构的的特特点点是是:任任意意两两个个模模块块间间都都可可以以有有双双向向的的关关系系。由由于于模模块块间间不不存存在在上上下下的的关关系系,任任何何两两个个模模块块都都是是平平等的,因此分不出层次来。等的,因此分不出层次来。总体设计的概念和原理总体设计的概念和原理1、软件结构和过程软件结构和过程

78、软软件件过过程程:软软件件过过程程集集中中考考虑虑每每个个模模块块各各自自的的处处理理细细节节。过过程程必必须须提提供供一一个个精精确确的的处处理理规规格格说说明明,包包括括事事件件顺顺序序,精精确确的的判判定定位位置置、重重复复的的操操作作,以以及及数数据据组组织织和和结结构构等等。结结构构和和过过程程之之间间是是有有关关系系的的:描描述述一一个个模模块块的的实实现现,必必须须包包括括所所有有从从属属于于该该模模块块的的所所有有模模块块的的引引用用,而而从从属属于于该该模块的所有模块是通过结构体现的。模块的所有模块是通过结构体现的。总体设计的概念和原理总体设计的概念和原理2、模块化、模块化“

79、模块模块”,又称,又称“构件构件”,一般指用一个名字可调用的,一般指用一个名字可调用的一段程序。类似于高级语言中的一段程序。类似于高级语言中的procedure(过程)、(过程)、function(函数)、(函数)、subroutine(子程序)、(子程序)、section(节)(节)、block(块)等。设计中可以选择其它程序已编写好的模(块)等。设计中可以选择其它程序已编写好的模块,其本身也可供其它程序使用。它一般具有如下四个基本块,其本身也可供其它程序使用。它一般具有如下四个基本属性:属性:接口:指模块的输入与输出。接口:指模块的输入与输出。功功能能:指指模模块块实实现现的的功功能能。注

80、注意意这这里里所所说说的的模模块块功功能能,应应该该是模块本身的功能加上它所调用的所有子模块的功能。是模块本身的功能加上它所调用的所有子模块的功能。逻辑:描述内部如何实现要求的功能及所需的数据。逻辑:描述内部如何实现要求的功能及所需的数据。状态:该模块的运行环境,即模块的调用与被调用关系。状态:该模块的运行环境,即模块的调用与被调用关系。关于模块关于模块:结结构构化化设设计计的的一一个个重重要要的的组组成成部部分分就就是是一一系系列列对对模模块块的的评评价价方方法法。提提出出了了设设计计质质量量标标准准。为为评评价价软软件件设设计计提提供供了了两两种种有有效效的的方方法法:一一种种是是评评价价

81、模模块块本本身身质质量量,一一种种是是评评价价模模块块间间的的关关系。系。总体设计的概念和原理总体设计的概念和原理 模块化的特征:模块化的特征: 抽抽象象使使得得人人们们可可用用层层次次的的方方式式构构造造和和分分析析复复杂杂系系统统,实实践践证明这是处理复杂系统的唯一有效的方法。证明这是处理复杂系统的唯一有效的方法。逐逐步步求求精精:能能帮帮助助开开发发人人员员把把精精力力集集中中在在与与当当前前开开发发阶阶段段最最相相关关的的那那些些问问题题上上,而而忽忽略略那那些些对对整整体体解解决决方方案案来来说说虽虽然然是是必必要要的的,然然而而目目前前还还不不需需要要考考虑虑的的细细节节,而而这这

82、些些细细节节将将留留到到以以后再考虑。后再考虑。信信息息隐隐蔽蔽原原理理指指出出,应应该该这这样样设设计计和和确确定定模模块块:使使得得一一个个模模块块内内包包含含的的信信息息(过过程程和和数数据据),如如果果它它不不允允许许外外部部的的模模块块访访问问的话,其它模块是不能对它们访问的。的话,其它模块是不能对它们访问的。局局部部化化是是指指把把一一些些关关系系密密切切的的软软件件元元素素物物理理地地放放得得彼彼此此靠靠近,显然,局部化有助于实现信息隐蔽。近,显然,局部化有助于实现信息隐蔽。总体设计的概念和原理总体设计的概念和原理模块的独立性:模块的独立性:所谓模块的独立性,是指软件系统中每个模

83、块只涉及软所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而合软件系统中其它的模块的接口件要求的具体的子功能,而合软件系统中其它的模块的接口尽可能简单。例如,若一个模块只具有单一的功能且与其它尽可能简单。例如,若一个模块只具有单一的功能且与其它模块没有太多的联系,那么,我们称此模块具有模块独立性。模块没有太多的联系,那么,我们称此模块具有模块独立性。模块的独立性是软件质量好的关键,具有独立模块的软模块的独立性是软件质量好的关键,具有独立模块的软件容易开发,这是由于能够对软件的功能加以分割,而相互件容易开发,这是由于能够对软件的功能加以分割,而相互接口不复杂,可有一组人员同

84、时开发,由于模块相互独立,接口不复杂,可有一组人员同时开发,由于模块相互独立,在各自设计合修改代码时所引起的二次影响不大,错误传播在各自设计合修改代码时所引起的二次影响不大,错误传播少。少。 总体设计的概念和原理总体设计的概念和原理模块模块独立性的度量独立性的度量:一般采用两个准则度量模块独立性。即模块间的耦合性一般采用两个准则度量模块独立性。即模块间的耦合性合模块的内聚性。耦合性是模块之间互相连接的紧密程度的合模块的内聚性。耦合性是模块之间互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其独立性就越弱。内聚性是一个

85、模块内部各个元素彼此结而其独立性就越弱。内聚性是一个模块内部各个元素彼此结合的紧密程度的度量。一个模块内部各个元素之间的联系越合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。因此,模块独立性耦合性就会减低,而模块独立性就越强。因此,模块独立性比较强的模块应是高内聚低耦合的模块。比较强的模块应是高内聚低耦合的模块。总体设计的概念和原理总体设计的概念和原理耦合度:耦合度: 如果一个模块在不需要另一个模块的情况下,能够完整如果一个模块在不需要另一个模块的情况

86、下,能够完整地执行其功能,就称这两个模块完全独立。通常模块之间总地执行其功能,就称这两个模块完全独立。通常模块之间总是相互关联的,因为完全独立的模块是无法构成系统的。关是相互关联的,因为完全独立的模块是无法构成系统的。关键是连接的程度和复杂度。我们用耦合度衡量连接的强度,键是连接的程度和复杂度。我们用耦合度衡量连接的强度,模块间连接很强叫模块间连接很强叫“紧耦合紧耦合”,而模块间的连接弱叫,而模块间的连接弱叫“松耦松耦合合”。显然,我们的目标是努力实现。显然,我们的目标是努力实现“松耦合松耦合”系统。系统。总体设计的概念和原理总体设计的概念和原理总体设计的概念和原理总体设计的概念和原理模块模块

87、耦合性耦合性:非直接耦非直接耦合合数据耦合数据耦合 标记耦合标记耦合 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 内容耦合内容耦合低低高高耦合性耦合性强强弱弱模块独立性模块独立性模块模块内聚性内聚性:功能内聚功能内聚信息内聚信息内聚 通信内聚通信内聚 过程内聚过程内聚时间内聚时间内聚 逻辑内聚逻辑内聚 巧合内聚巧合内聚高高低低内聚性内聚性强强弱弱模块独立性模块独立性 耦合度耦合度描述了模块间的连接程度,是一个抽象的概念,但描述了模块间的连接程度,是一个抽象的概念,但它能用一个可操作的概念来描述,即程序员在编码、调试和修它能用一个可操作的概念来描述,即程序员在编码、调试和修改一个模块时

88、,需要考虑另外一个模块的概率。如果两个模块改一个模块时,需要考虑另外一个模块的概率。如果两个模块是紧耦合的,那么他修改一个模块,需要修改另外一个模块的是紧耦合的,那么他修改一个模块,需要修改另外一个模块的概率就高。显然整个系统的开发费用及系统的复杂性与模块间概率就高。显然整个系统的开发费用及系统的复杂性与模块间的耦合度有直接的关系。的耦合度有直接的关系。总体设计的概念和原理总体设计的概念和原理结构化设计方法的重要成果是找出影响耦合度的因素:结构化设计方法的重要成果是找出影响耦合度的因素: 1 1、连接方式的类型,正规联系低于非正规联系;、连接方式的类型,正规联系低于非正规联系; 2 2、接口的

89、复杂性;、接口的复杂性; 3 3、联系的作用(相互之间的影响)取决于传送的信息联系的作用(相互之间的影响)取决于传送的信息流的类型,通常包括三种:数据型、控制型或混合型;流的类型,通常包括三种:数据型、控制型或混合型; 4 4、耦合的时间:执行时间、装入时间及编译时间。、耦合的时间:执行时间、装入时间及编译时间。总体设计的概念和原理总体设计的概念和原理连接方式的类型:连接方式的类型: 模块间存在着各种不同的联系方式,耦合度由低到高分别是:模块间存在着各种不同的联系方式,耦合度由低到高分别是: 直接的控制和调用,独立性最强,一个模块通过模块名调用另一直接的控制和调用,独立性最强,一个模块通过模块

90、名调用另一模块,彼此之间的关系非常明确;间接的通过参数传递;公共数据区模块,彼此之间的关系非常明确;间接的通过参数传递;公共数据区(模块外部的全局变量;外部的公共数据环境,如共享公通信区,内(模块外部的全局变量;外部的公共数据环境,如共享公通信区,内存公共覆盖区);模块间的直接引用,可以直接引用其他模块的数据存公共覆盖区);模块间的直接引用,可以直接引用其他模块的数据或控制指令(如利用或控制指令(如利用GOTO语句转向另一模块)耦合度最强,一个模语句转向另一模块)耦合度最强,一个模块出错,错误有可能来自其它模块。尤其是控制直接引用,因为:接块出错,错误有可能来自其它模块。尤其是控制直接引用,因

91、为:接口不明显;程序难以理解,难以编写,也难以纠错、改错,所以通常口不明显;程序难以理解,难以编写,也难以纠错、改错,所以通常将该种联系称为病态联系,应避免将该种联系称为病态联系,应避免. .总体设计的概念和原理总体设计的概念和原理接口的复杂性:接口的复杂性: 接口间传递的信息数量以及穿越接口次数和类型决定接口间传递的信息数量以及穿越接口次数和类型决定了接口的复杂性了接口的复杂性. .例如当几个模块在一个公共数据区上工作时例如当几个模块在一个公共数据区上工作时, ,一个模块的改变一个模块的改变, ,可能造成另一些模块的错误可能造成另一些模块的错误, ,如果有如果有M M个模块个模块, ,共享共

92、享N N个数据的公共区个数据的公共区, ,可能产生可能产生M*(M-1)*NM*(M-1)*N联系。修改一处,联系。修改一处,就要考虑很多模块。若将公共数据区分割,就有可能大大减就要考虑很多模块。若将公共数据区分割,就有可能大大减少耦合度。少耦合度。总体设计的概念和原理总体设计的概念和原理 联系的作用(相互之间的影响)取决于传送的信息流联系的作用(相互之间的影响)取决于传送的信息流的类型:的类型: 混合型混合型: :当一个模块修改另一个模块的代码时当一个模块修改另一个模块的代码时, ,对修改对修改者来说者来说, ,修改的代码是当作数据来处理的修改的代码是当作数据来处理的, ,而对被修改的模而对

93、被修改的模块来说,则可能是对块来说,则可能是对“控制控制”的改变,这种情况最难处理,的改变,这种情况最难处理,耦合度最高。耦合度最高。总体设计的概念和原理总体设计的概念和原理 联系的作用(相互之间的影响)取决于传送的信息流联系的作用(相互之间的影响)取决于传送的信息流的类型:的类型: 控制型:如果出现一个模块直接转移到另一模块的某点上控制型:如果出现一个模块直接转移到另一模块的某点上的情况,就影响了两个模块的控制。由于很难找到这种转移地址,的情况,就影响了两个模块的控制。由于很难找到这种转移地址,通常可以通过传递参数来传递控制,如传递一个开关量来告诉另通常可以通过传递参数来传递控制,如传递一个

94、开关量来告诉另一模块任何工作。由于开关量不是用户现实环境中存在的一个数一模块任何工作。由于开关量不是用户现实环境中存在的一个数据,而是程序员创造的一种控制信号,模块据,而是程序员创造的一种控制信号,模块A A通过开关量实际上通过开关量实际上控制了模块控制了模块B B的工作。如果开关量设置错误,模块的工作。如果开关量设置错误,模块B B则会按照另一则会按照另一种方式工作。所以这种耦合度也很高。种方式工作。所以这种耦合度也很高。总体设计的概念和原理总体设计的概念和原理联系的作用(相互之间的影响)取决于传送的信息流的类型:联系的作用(相互之间的影响)取决于传送的信息流的类型: 解决控制耦合,可以通过

95、分裂模块的方法,将控制型耦合变为数据型耦解决控制耦合,可以通过分裂模块的方法,将控制型耦合变为数据型耦合。合。 类型选择是控制型参数,决定了模块类型选择是控制型参数,决定了模块B B是取阴历日期还是取阳历日期,是取阴历日期还是取阳历日期,消除开关信息,将模块分解,每个模块有明确的功能,成为数据耦合。消除开关信息,将模块分解,每个模块有明确的功能,成为数据耦合。总体设计的概念和原理总体设计的概念和原理A取阴历日期取阴历日期或或取阳历日期取阳历日期类型选择类型选择日期日期A取阴历取阴历取阳历取阳历阴历日期阴历日期阳历日期阳历日期耦合的时间:执行时间、装入时间及编译时间。耦合的时间:执行时间、装入时

96、间及编译时间。 耦合的时间有以下几种情况:耦合的时间有以下几种情况: 编写程序时(程序员编写一行语句时);编写程序时(程序员编写一行语句时); 模块编译或汇编时;模块编译或汇编时; 程序模块连接时;程序模块连接时; 系统运行时。系统运行时。 参数确定的越晚,就越容易修改,越灵活。参数确定的越晚,就越容易修改,越灵活。总体设计的概念和原理总体设计的概念和原理 耦合度是评价程序质量的重要指标,耦合度越小,则每耦合度是评价程序质量的重要指标,耦合度越小,则每个模块越容易独立地被理解、编写和修改,同时每个模块的个模块越容易独立地被理解、编写和修改,同时每个模块的错误越不容易扩散蔓延到其他模块。为降低耦

97、合度,可采取错误越不容易扩散蔓延到其他模块。为降低耦合度,可采取如下方法:如下方法:1、对于需要了解的内容,若是隐含的,应改为明显的,以便对于需要了解的内容,若是隐含的,应改为明显的,以便更容易理解;更容易理解;2、连接的方式尽量标准化,不要直接引用;连接的方式尽量标准化,不要直接引用;3 3、减少公共区,将公共区划分为若干个逻辑子区;减少公共区,将公共区划分为若干个逻辑子区;4、输入输出应局限在少量模块,不要分散在全系统;输入输出应局限在少量模块,不要分散在全系统;5 5、延迟耦合时间。、延迟耦合时间。总体设计的概念和原理总体设计的概念和原理内聚实例内聚实例TMOVATOBREADCardf

98、ileMOVCTODPQRS巧合性内聚巧合性内聚此例中此例中A、B、C、D、T之间各不相干,只因为之间各不相干,只因为P、Q、R、S都要用到它们,为了节省都要用到它们,为了节省一些存储空间,将它们放在一一些存储空间,将它们放在一个模块中。个模块中。问题:这种模块不易取名,模问题:这种模块不易取名,模块含义不易理解,难以测试,块含义不易理解,难以测试,不易修改。当不易修改。当P、Q有不同要有不同要求(如求(如P要求要求MOVEATOE)时时T的修改会很复杂。因为它的修改会很复杂。因为它们本来互不相关,所以变动的们本来互不相关,所以变动的可能性很大。可能性很大。当存储空间不是很紧张时,当存储空间不

99、是很紧张时,应尽量避免巧合性内聚。应尽量避免巧合性内聚。内聚实例内聚实例模块内各处理单元相关,模块内各处理单元相关,按特定次序执行,采用数据按特定次序执行,采用数据流图时往往会出现此种内聚。流图时往往会出现此种内聚。如图:读入的数据供编如图:读入的数据供编辑单元处理,读入和编辑这辑单元处理,读入和编辑这两个处理单元在一个过程中两个处理单元在一个过程中相关。相关。读入读入编辑编辑数据数据过程性内聚过程性内聚内聚实例内聚实例模块中的成分需要用同模块中的成分需要用同样的数据时称为通信性内聚。样的数据时称为通信性内聚。如图:修改和删除均需如图:修改和删除均需要利用某个文件进行操作。要利用某个文件进行操

100、作。问题随意性强,会割断功能问题随意性强,会割断功能关系。关系。修改修改删除删除通信性内聚通信性内聚文件文件内聚实例内聚实例模块中的各成分利用相模块中的各成分利用相同的输入产生相同的输出。同的输入产生相同的输出。对数据来说,其先后次序都对数据来说,其先后次序都依赖于前一成分的执行情况,依赖于前一成分的执行情况,耦合度较高,但由于它可能耦合度较高,但由于它可能包含几个功能或只是某个功包含几个功能或只是某个功能的一部分,内聚度也是高能的一部分,内聚度也是高的。的。打印打印报表报表A信息内聚信息内聚打印打印报表报表B打印打印报表报表C报表数据报表数据软件结构的设计优化准则:软件结构的设计优化准则:1

101、、划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。、划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。模模块划分的准则:块划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。将相关的各部分放在一起,无关的东西不要放在一起。”2、模块的大小要适中。、模块的大小要适中。3、模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测、模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。试和维护。4、一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与、一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。受其影

102、响的模块在层次上尽量靠近。5、软件结构的深度、宽度、扇入、扇出应适当。、软件结构的深度、宽度、扇入、扇出应适当。6、力求设计单入口和单出口的模块,避免、力求设计单入口和单出口的模块,避免“病态连接病态连接”,以防止内容耦,以防止内容耦合。合。7、设计功能可预测模块的模块,但应防止模块功能过分局限。、设计功能可预测模块的模块,但应防止模块功能过分局限。设计准则设计准则1、面向数据流的设计方法、面向数据流的设计方法面向数据流的设计方法,又称结构化设计即面向数据流的设计方法,又称结构化设计即SD(StructuredDesign)。结构化设计(结构化设计(SD)结结构构化化设设计计包包括括一一组组概

103、概念念、标标准准和和指指导导思思想想。其其目目的的是是降降低低软软件件开开发发费费用用及及维维护护费费用用,有有利利于于更更正正修修正正软软件件及及实实现现新新的的软软件件需需求求。其其最最大大好好处处是是极极大大地地增增加加了了软软件件复复用用能能力力。SD为为软软件件工工程程提提供供了了一一种高效地、可维护的系统。种高效地、可维护的系统。结结构构化化设设计计的的目目标标:将将软软件件设设计计为为结结构构相相互互、功功能能单单一一的的模模块块,建立系统的模块结构图。它的主要表示方法是一种分层次的结构图建立系统的模块结构图。它的主要表示方法是一种分层次的结构图。总体设计的常用方法及工具总体设计

104、的常用方法及工具总体设计的常用方法及工具总体设计的常用方法及工具SD设计方法的主要思想:设计方法的主要思想:认认为为一一个个程程序序、一一组组程程序序或或一一个个系系统统,无无非非是是由由一一组组功功能能操操作作来来构构成成的的,并并进进而而吸吸取取了了结结构构化化分分析析的的“黑黑盒盒子子”的概念。的概念。软软件件设设计计者者首首先先必必须须无无视视程程序序、模模块块或或过过程程的的内内部部情情况况,而而只只对对它它们们之之间间的的关关系系进进行行分分析析。将将系系统统看看作作是是,逻逻辑辑功功能能的的抽抽象象集集合合功功能能模模块块的的集集合合。这这样样软软件件设设计计者者能能够够有最大的

105、自由度设计系统结构。有最大的自由度设计系统结构。总体设计的常用方法及工具总体设计的常用方法及工具结构化设计的优点:结构化设计的优点:(1 1)减减少少设设计计复复杂杂性性。将将对对大大目目标标的的实实现现转转化化为为一一些些小小目目标来实现。结构化设计是一种减少设计复杂性的技术。标来实现。结构化设计是一种减少设计复杂性的技术。(2)结构独立。结构化设计将功能性程序划分成多个相对)结构独立。结构化设计将功能性程序划分成多个相对独立的程序模块。独立的程序模块。(3)单一的功能模块,可以使软件设计获得最大的益处。)单一的功能模块,可以使软件设计获得最大的益处。(4)易于进行软件修改。)易于进行软件修

106、改。(5)易于开发和维护。)易于开发和维护。(6)加强了代码的可重用性)加强了代码的可重用性。总体设计的常用方法及工具总体设计的常用方法及工具 描述工具:描述工具:结构化设计方法提出了一种图形工具结构化设计方法提出了一种图形工具结构图,进结构图,进行软件结构设计。行软件结构设计。结结构构图图是是精精确确表表达达程程序序结结构构的的图图形形表表示示方方法法。它它作作为为软软件件文文档档的的一一部部分分,清清楚楚地地反反映映出出程程序序中中模模块块之之间间的的层层次次调调用用关关系系和和联联系系。它它不不仅仅严严格格地地定定义义了了各各个个模模块块的的名名字字、功能和接口,而且还集中地反映了设计思

107、想。功能和接口,而且还集中地反映了设计思想。总体设计的常用方法及工具总体设计的常用方法及工具结构图的主要内容:结构图的主要内容:1、模块:方框表示,并用名字标识该模块。、模块:方框表示,并用名字标识该模块。2、模块的控制关系:用单向箭头或直线连接模块间的、模块的控制关系:用单向箭头或直线连接模块间的控制关系。控制关系。3、模块间的信息传递:用带注释的短箭头表示模块间、模块间的信息传递:用带注释的短箭头表示模块间传递的信息。通常箭头尾部带空心圆,表示传递的是数据,传递的信息。通常箭头尾部带空心圆,表示传递的是数据,箭头尾部带实心圆,表示传递的是控制信息。箭头尾部带实心圆,表示传递的是控制信息。4

108、、两个附加符号:弧形线表示循环调用,菱形表示选、两个附加符号:弧形线表示循环调用,菱形表示选择调用。择调用。总体设计的常用方法及工具总体设计的常用方法及工具结构结构图的形态特征:图的形态特征:深度深度表示控制的层数。表示控制的层数。宽度宽度表示控制的总分布。表示控制的总分布。扇出扇出是对由某一模块直接控制的模块数目的度量。是对由某一模块直接控制的模块数目的度量。扇入扇入指出有多少个模块直接控制一个给定的模块。指出有多少个模块直接控制一个给定的模块。如果一模块控制另一个模块便称前者如果一模块控制另一个模块便称前者“统帅统帅”后者;后者;反之反之,称后者,称后者“从属从属”于前者。于前者。总体设计

109、的常用方法及工具总体设计的常用方法及工具画结构图应注意的事项:画结构图应注意的事项:1、同一名字的模块在结构图中仅出现一次。、同一名字的模块在结构图中仅出现一次。2、调用关系只能从上到下。、调用关系只能从上到下。3、扇出:一个模块直接下属模块的个数。、扇出:一个模块直接下属模块的个数。4、结构图不严格表示模块的调用次序,习惯上从左到、结构图不严格表示模块的调用次序,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块的右。有时为了减少连线的交叉,适当地调整同一层模块的左右位置,以保持结构图的清晰。左右位置,以保持结构图的清晰。总体设计的常用方法及工具总体设计的常用方法及工具查询成绩学生

110、记录学号查询标志记录地址ABCMT1T3T2模块间的控制关模块间的控制关系及信息传递系及信息传递模块间选择调用模块间选择调用模块间循环调用模块间循环调用总体设计的常用方法及工具总体设计的常用方法及工具数据流图的类型数据流图的类型SD方方法法是是以以数数据据流流图图为为基基础础设设计计系系统统的的模模块块结结构构的的。不不同同类类型型的的数数据据流流图图设设计计的的过过程程以以及及所所导导出出的的初初始始的的软软件件结结构构不不同同。不不管管系系统统的的数数据据流流图图如如何何庞庞大大和和复复杂杂,一一般般均均可可分为变换型、事务型和变换分为变换型、事务型和变换/事务混合型。事务混合型。变换型变

111、换型变变换换型型的的数数据据流流图图是是一一个个线线性性结结构构,由由输输入入、变变换换和和输输出出三三部部分分组组成成。信信息息沿沿输输入入通通路路进进入入系系统统,同同时时由由外外部部形形式式变变换换成成内内部部形形式式。进进入入系系统统的的信信息息通通过过变变换换中中心心,经经加加工处理以后再沿输出通路变换成外部形式离开软件系统。工处理以后再沿输出通路变换成外部形式离开软件系统。总体设计的常用方法及工具总体设计的常用方法及工具物理输物理输入入物理输出物理输出输入流输入流变换中心变换中心输出流输出流逻辑输出逻辑输出逻辑输入逻辑输入变换型变换型DFD图图总体设计的常用方法及工具总体设计的常用

112、方法及工具事务型事务型事事务务型型的的数数据据流流图图中中,数数据据沿沿输输入入通通路路到到达达一一个个处处理理(如如图图4-27中中的的C),这这个个处处理理将将输输入入分分为为许许多多相相互互平平行行的的加加工工路路径径,并并根根据据输输入入数数据据的的类类型型,选选择择某某一一加加工工路路径径。其其中中C为为事事务务处处理理中中心心,其其任任务务是是输输入入数数据据(输输入入数数据据又又称称为为事事务务)、分分析析每每个个事事务务以以确确定定它它的的类类型型、据据事事务务类类型型选选取取一条活动通路。一条活动通路。总体设计的常用方法及工具总体设计的常用方法及工具C加工路径加工路径输入流输

113、入流事务处理中心事务处理中心事务型事务型DFD图图总体设计的常用方法及工具总体设计的常用方法及工具面向数据流设计方法的过程面向数据流设计方法的过程:1、精化、精化DFD。2、确定、确定DFD类型,和逻辑输入、逻辑输出的界限,映射出变换类型,和逻辑输入、逻辑输出的界限,映射出变换结构的顶层合第一层;如果为事务型,确定事务中心和加工路径,结构的顶层合第一层;如果为事务型,确定事务中心和加工路径,映射出事务结构的顶层合第一层。映射出事务结构的顶层合第一层。3、分解上层模块,设计中下层模块结构。、分解上层模块,设计中下层模块结构。4、根据优化准则对软件结构求精。、根据优化准则对软件结构求精。5、描述模

114、块功能、接口及全局数据结构。、描述模块功能、接口及全局数据结构。6、复查,如有错转向、复查,如有错转向2、修改完善,否则进入详细设计。、修改完善,否则进入详细设计。总体设计的常用方法及工具总体设计的常用方法及工具TOP模块的判定作用范围:菱形符号表示模块内有判定功能,模块的判定作用范围:菱形符号表示模块内有判定功能,阴影表示模块的作用范围。阴影表示模块的作用范围。ABCDEFTOPABCDEFTOPABCDEF总体设计的常用方法及工具总体设计的常用方法及工具系统结构图中有系统结构图中有4种类型的模块:种类型的模块:传入模块传入模块AA传出模块传出模块DD变换模块变换模块BC协调模块协调模块XX

115、YY总体设计的常用方法及工具总体设计的常用方法及工具变换分析设计:变换分析设计:1、确定、确定DFD中的变换中心,逻辑输入、逻辑输出。中的变换中心,逻辑输入、逻辑输出。通常几股数据流的通常几股数据流的汇合处就是系统的加工中心,也可用以下方法确定加工中心:从物理汇合处就是系统的加工中心,也可用以下方法确定加工中心:从物理输入(出)端开始,沿(逆)数据流方向向系统中心寻找,直到有这输入(出)端开始,沿(逆)数据流方向向系统中心寻找,直到有这样的数据流,它不能再被看作是系统的输入(出)时,则它的前一数样的数据流,它不能再被看作是系统的输入(出)时,则它的前一数据流就是系统的逻辑输入(出)。介于逻辑输

116、入和逻辑输出间的加工据流就是系统的逻辑输入(出)。介于逻辑输入和逻辑输出间的加工就是中心。就是中心。2、设计软件结构的顶层和一层、设计软件结构的顶层和一层变换结构。变换结构。顶层就是主模块的位置,顶层就是主模块的位置,其功能是完成对所有模块的控制,其名称就是系统名称;第一层一般其功能是完成对所有模块的控制,其名称就是系统名称;第一层一般至少有输入、变换、输出三种功能模块。至少有输入、变换、输出三种功能模块。3、设计中、下层模块。对第一层模块自顶向下逐层分解。设计中、下层模块。对第一层模块自顶向下逐层分解。输入模块下属模块的设计:为每个输入模块设计两个下属模块,一输入模块下属模块的设计:为每个输

117、入模块设计两个下属模块,一个接受数据,一个将数据转换成调用模块所需的信息。用类似的方法个接受数据,一个将数据转换成调用模块所需的信息。用类似的方法一直分解下去,直至物理输入端。一直分解下去,直至物理输入端。总体设计的常用方法及工具总体设计的常用方法及工具变换分析设计:变换分析设计:3、设计中、下层模块。对第一层模块自顶向下逐层分解。、设计中、下层模块。对第一层模块自顶向下逐层分解。输出模块下属模块的设计:为每个输出模块设计两个下属模块,一输出模块下属模块的设计:为每个输出模块设计两个下属模块,一个将数据转换成下属模块所需的信息,一个发送数据。用类似的方法个将数据转换成下属模块所需的信息,一个发

118、送数据。用类似的方法一直分解下去,直至物理输出端。一直分解下去,直至物理输出端。变换模块下属模块的设计:根据变换中心的组成情况,按照模块独变换模块下属模块的设计:根据变换中心的组成情况,按照模块独立性原则,为每个基本加工建立一个功能模块。立性原则,为每个基本加工建立一个功能模块。4、设计优化:根据优化准则对初始结构进行细化和改进。、设计优化:根据优化准则对初始结构进行细化和改进。根据设计准则,对模块进行合并和调整,为每个物理输入和物理输出根据设计准则,对模块进行合并和调整,为每个物理输入和物理输出设计专门模块,以体现系统的外部接口。设计专门模块,以体现系统的外部接口。总体设计的常用方法及工具总

119、体设计的常用方法及工具A物理输入物理输入BCD物理输出物理输出G变换中心变换中心逻辑输出逻辑输出逻辑输入逻辑输入f1f2f3EFHf4f5f6f7f8f9f10f11变换型分析设计变换型分析设计总体设计的常用方法及工具总体设计的常用方法及工具变换型分析设计变换型分析设计主模块主模块Getf3将将f3变换成变换成f7和和f8Putf7Putf8f3f3f7f8f8f7Getf2BGetf1AFPutf9GPutf8HPutf8CDEf3f5f4f4f6f7f8f5f6f2f2f1f1f2f8f10f10f11f10f11总体设计的常用方法及工具总体设计的常用方法及工具事务分析设计:事务分析设计:

120、1、确定、确定DFD中的事物中心和加工路径。中的事物中心和加工路径。通常当通常当DFD中的某个加工具有中的某个加工具有明显的将一个输入数据流分解成多个发散的输出数据流时,该加工就是明显的将一个输入数据流分解成多个发散的输出数据流时,该加工就是系统的事务中心,从事务中心辐射出去的数据流就是各个加工路径。系统的事务中心,从事务中心辐射出去的数据流就是各个加工路径。2、设计软件结构的顶层和一层、设计软件结构的顶层和一层事务结构。事务结构。顶层就是主模块的位置,顶层就是主模块的位置,有两个功能,一是接收数据,二是根据事务类型调度相应的处理模块。有两个功能,一是接收数据,二是根据事务类型调度相应的处理模

121、块。因此事务型软件结构应包括两个部分,接收分支和发送分支。因此事务型软件结构应包括两个部分,接收分支和发送分支。接收分支:负责接收数据,其设计方法与变换型接收分支:负责接收数据,其设计方法与变换型DFD的输入部分相同。的输入部分相同。发送分支:通常包含一个调度模块,控制管理所有的下层事务处理模发送分支:通常包含一个调度模块,控制管理所有的下层事务处理模块。块。3、设计中、下层模块并优化。设计中、下层模块并优化。具体过程同变换结构设计。具体过程同变换结构设计。总体设计的常用方法及工具总体设计的常用方法及工具AB加工路径加工路径输入流输入流事务处理中心事务处理中心事务分析设计事务分析设计CDf1总

122、体设计的常用方法及工具总体设计的常用方法及工具事务分析设计事务分析设计主模块主模块Getf1调度调度f1f1BCD接接收收分分支支发发送送分分支支动作层动作层细节层细节层总体设计的常用方法及工具总体设计的常用方法及工具面向数据结构的设计方法面向数据结构的设计方法是根据数据结构设计程序是根据数据结构设计程序处理过程的方法。处理过程的方法。目前比较成熟的有目前比较成熟的有MAJackson提出的提出的Jackson系统开发方法(系统开发方法(JSD,JacksonSystemDevelopment)和)和JDwarnier提出的程序逻辑构造方法提出的程序逻辑构造方法LCP(LogicalConst

123、ructionofPrograms)。总体设计的常用方法及工具总体设计的常用方法及工具Jackson方法方法(1)Jackson方法思想方法思想面面向向数数据据结结构构的的设设计计是是根根据据某某些些过过程程,从从一一些些数数据据结结构构中中导导出出程程序序结结构构,着着重重于于问问题题数数据据结结构构到到问问题题解解的的程程序序结结构构之间的转换,而不强调模块定义。之间的转换,而不强调模块定义。首首先先要要充充分分了了解解所所涉涉及及的的数数据据结结构构,而而且且用用工工具具清清晰晰地描述数据结构地描述数据结构;然然后后按按一一定定的的步步骤骤根根据据数数据据结结构构,导导出出解解决决问问题

124、题的的程程序结构,完成设计。序结构,完成设计。总体设计的常用方法及工具总体设计的常用方法及工具(2)Jackson图图Jackson图图表表示示的的三三种种基基本本结结构构,由由方方框框、连连线线和和一一些些附附加加标标记记组组成成。标标记记“o”代代表表选选择择,标标记记“*”代代表表重重复复。连连线可以理解为线可以理解为“包含包含”或或“由由组成组成”。ABCAB0C0AB*顺序顺序选择选择重复重复总体设计的常用方法及工具总体设计的常用方法及工具(3)Jackson伪代码伪代码AseqAselectcond1Aiteruntil或或whilecondBBCorcond2BendACendA

125、endA(a)顺序顺序(b)选择选择(c)重复重复总体设计的常用方法及工具总体设计的常用方法及工具Jackson图的优点是:图的优点是:便便于于表表示示层层次次结结构构,是是对对结结构构进进行行自自顶顶向向下下分分解解的的有有力工具;力工具;形象直观,可读性好;形象直观,可读性好;Jackson图不仅能表示数据结构,也能表示程序结构。图不仅能表示数据结构,也能表示程序结构。总体设计的常用方法及工具总体设计的常用方法及工具(4)Jackson方法的步骤方法的步骤一般可以归纳为五个步骤:一般可以归纳为五个步骤:1)分分析析并并确确定定输输入入数数据据和和输输出出数数据据的的逻逻辑辑结结构构,并并用

126、用Jackson结结构构图表示这些数据结构。图表示这些数据结构。2)找出输入数据结构和输出数据结构中有对应关系的数据单元找出输入数据结构和输出数据结构中有对应关系的数据单元。3)按按照照下下面面给给出出的的映映射射规规则则由由输输入入、输输出出的的数数据据结结构构导导出出用用Jackson图表示的程序结构:图表示的程序结构:为为每每对对在在输输入入结结构构与与输输出出结结构构中中有有对对应应关关系系的的数数据据单单元元,按按照照它它们们在在数数据据结结构构图图中中的的层层次次在在程程序序结结构构的的相相应应层层次次画画一一个个处处理理框框;总体设计的常用方法及工具总体设计的常用方法及工具为为输

127、输入入数数据据结结构构和和输输入入数数据据结结构构中中剩剩余余的的数数据据单单元元,按按照照每每个个数数据据单单元元所所处处的的层层次次,在在程程序序结结构构图图的的相相应应层层次次分分别别为为它它们们画上对应的处理框;画上对应的处理框;所所有有处处理理框框在在程程序序结结构构图图上上的的位位置置,应应与与由由它它处处理理的的数数据据单元在数据结构的单元在数据结构的Jackson图上的位置相对应。图上的位置相对应。根据需要对映射导出的程序结构图进行进一步的细化。根据需要对映射导出的程序结构图进行进一步的细化。列列出出完完成成结结构构图图各各框框处处理理功功能能的的全全部部操操作作和和条条件件,

128、并并且且把把它它们们分配到程序结构图的适当位置。分配到程序结构图的适当位置。用伪码表示程序。用伪码表示程序。详细设计的任务详细设计的任务详细设计的原则详细设计的原则详细设计的方法和工具详细设计的方法和工具详细设计的规格说明与复审详细设计的规格说明与复审界面设计界面设计软件体系结构软件体系结构几种新型的软件体系结构几种新型的软件体系结构软件体系结构与操作系统软件体系结构与操作系统第第5章章详细设计详细设计详细设计的基本任务:详细设计的基本任务:1、为每个模块进行详细的算法设计。、为每个模块进行详细的算法设计。用某种图形、表格、语言等用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来

129、。工具将每个模块处理过程的详细算法描述出来。2、对模块内的数据结构进行设计。、对模块内的数据结构进行设计。对需求分析、概要设计确定的对需求分析、概要设计确定的概念性的数据结构进行确切的定义。概念性的数据结构进行确切的定义。3、对数据库进行物理设计。、对数据库进行物理设计。确定数据库的物理结构(数据库存储确定数据库的物理结构(数据库存储记录格式、存储记录的安排、存储方法等,这些取决于使用何种数据库记录格式、存储记录的安排、存储方法等,这些取决于使用何种数据库系统)。系统)。4、其它设计。、其它设计。如代码设计、输入如代码设计、输入/输出格式设计、人机对话设计等。输出格式设计、人机对话设计等。5、

130、模块测试用例设计。、模块测试用例设计。6、编写详细设计说明书。、编写详细设计说明书。7、评审。、评审。详细设计的任务详细设计的任务详细设计的原则:详细设计的原则:(1)模块的逻辑描述要清晰易读、正确可靠。模块的逻辑描述要清晰易读、正确可靠。(2)详详细细设设计计的的目目标标不不仅仅仅仅是是逻逻辑辑上上正正确确地地实实现现每每个个模模块块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。的功能,更重要的是设计出的处理过程应该尽可能简明易懂。(3)选择恰当描述工具来描述各模块算法。选择恰当描述工具来描述各模块算法。详细设计的原则详细设计的原则1、详细设计的方法详细设计的方法结构程序化设计方法结

131、构程序化设计方法(SP方法方法)是详细设计的逻辑基础。是详细设计的逻辑基础。在对在对“GOTO”语句争论中产生结构程序设计方法学并广泛应用。语句争论中产生结构程序设计方法学并广泛应用。定定义义:结结构构化化程程序序设设计计是是一一种种设设计计程程序序的的技技术术,它它采采用用自自顶顶向向下下、逐逐步步求求精精的的设设计计方方法法。而而且且任任何何程程序序都都可可以以通通过过顺顺序序、分分支支、重重复复3种基本结构的复合实现。种基本结构的复合实现。结结构构化化程程序序设设计计的的宗宗旨旨是是,通通过过始始终终保保持持各各级级程程序序单单元元的的单单入入口口单单出出口口控控制制结结构构,使使设设计

132、计出出来来的的程程序序结结构构清清晰晰,容容易易阅阅读读,容易修改和容易验证。容易修改和容易验证。详细设计的方法和工具详细设计的方法和工具结构化程序设计方法基本要点:结构化程序设计方法基本要点:1、采用自顶向下、逐步求精的程序设计方法。、采用自顶向下、逐步求精的程序设计方法。在设计某模块的内部处理在设计某模块的内部处理过程中,仍逐步求精,降低处理细节的复杂程度。过程中,仍逐步求精,降低处理细节的复杂程度。2、采用三种基本控制结构构造程序。、采用三种基本控制结构构造程序。任何程序都可由顺序、选择、重复任何程序都可由顺序、选择、重复三种基本控制结构构造。(三种基本控制结构的共同点是单入口、单出三种

133、基本控制结构构造。(三种基本控制结构的共同点是单入口、单出口)。对一个模块处理过程细化时,开始是模糊的,可用以下方法进行口)。对一个模块处理过程细化时,开始是模糊的,可用以下方法进行分解:分解:用顺序方式对过程分解,确定各部分的执行顺序;用顺序方式对过程分解,确定各部分的执行顺序;用选择方式对过程分解,确定某部分的执行条件;用选择方式对过程分解,确定某部分的执行条件;用循环方式对过程分解,确定某部分进行重复的开始和结束条件;用循环方式对过程分解,确定某部分进行重复的开始和结束条件;对处理过程仍然模糊的部分,反复使用以上分解方法,最终确定细对处理过程仍然模糊的部分,反复使用以上分解方法,最终确定

134、细节。节。3、主程序员组的组织形式。、主程序员组的组织形式。详细设计的方法和工具详细设计的方法和工具结结构构化化程程序序设设计计方方法法在在设设计计处处理理过过程程时时,要要注注意意以以下下几几点:点:首首先先考考虑虑程程序序完完成成的的主主要要功功能能,细细节节问问题题(如如出出错错处处理理、例例外外情情况等)放在求精的步骤中考虑。况等)放在求精的步骤中考虑。要要考考虑虑判判断断处处理理和和重重复复处处理理的的问问题题,特特别别是是判判断断的的条条件件、重重复复开开始始和和终终止止的的条条件件,把把这这些些条条件件要要写写在在算算法法中中,可可借借助助判判定定表表把把判判定定的的条件及动作整

135、理出来,不至于有漏掉及冗余的情况。条件及动作整理出来,不至于有漏掉及冗余的情况。要要考考虑虑数数据据对对程程序序的的影影响响,外外部部数数据据一一般般在在数数据据字字典典中中有有定定义义,而而模模块块内内部部定定义义的的数数据据,不不会会在在数数据据字字典典中中出出现现,应应列列出出表表来来,有有利利于算法的理解。于算法的理解。三种基本控制结构只能按顺序出现或完整嵌套,不能出现相互交三种基本控制结构只能按顺序出现或完整嵌套,不能出现相互交叉的情况,否则算法就是非结构化的,不易于理解与修改。叉的情况,否则算法就是非结构化的,不易于理解与修改。详细设计详细设计2、详细设计的工具详细设计的工具图形工

136、具:利用图形工具可将过程的细节用图形描述出来;图形工具:利用图形工具可将过程的细节用图形描述出来;表表格格工工具具:可可以以用用一一张张表表来来描描述述过过程程的的细细节节,在在表表中中列列出出各各种可能的操作和相应的条件;种可能的操作和相应的条件;语语言言工工具具:用用某某种种高高级级语语言言(称称之之为为伪伪码码)来来描描述述过过程程的的细细节。节。下面介绍一些有代表性的详细设计工具:下面介绍一些有代表性的详细设计工具:详细设计的方法和工具详细设计的方法和工具2、详细设计的工具详细设计的工具下面介绍一些有代表性的详细设计工具:下面介绍一些有代表性的详细设计工具:(1)程序流程图)程序流程图

137、程序流程图又称之为程序框图,它是软件开发者最熟悉的一程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它的主要优点是独立于任何一种程序设计语言,种算法表达工具。它的主要优点是独立于任何一种程序设计语言,能够比较直观和清晰地描述过程的控制流程,易于学习掌握。能够比较直观和清晰地描述过程的控制流程,易于学习掌握。为为使使流流程程图图支支持持结结构构化化程程序序设设计计,限限制制在在流流程程图图中中只只能能使使用用下下述的五种基本控制结构。述的五种基本控制结构。详细设计的方法和工具详细设计的方法和工具程序流程图:程序流程图:是使用最广泛、历史最悠久的描述程序逻辑结构的工具。是使用最

138、广泛、历史最悠久的描述程序逻辑结构的工具。详细设计的方法和工具详细设计的方法和工具AB顺序顺序选择选择AB条件条件多分支选择多分支选择AB条件条件C“当型当型”循环循环A条件条件“直到型直到型”循环循环A条件条件FTTF注:注:其中其中A或或B为:为:非转移语句(可以非转移语句(可以为空)。为空)。三种基本结构之一。三种基本结构之一。2、详细设计的工具详细设计的工具(1)程序流程图)程序流程图程序流程图的主要缺点如下:程序流程图的主要缺点如下:程程序序流流程程图图本本质质上上不不是是逐逐步步求求精精的的好好工工具具,它它诱诱使使程程序序员员过过早早地地考考虑程序的控制流程,而不去考虑程序的全局

139、结构;虑程序的控制流程,而不去考虑程序的全局结构;程程序序流流程程图图使使用用的的符符号号不不规规范范,图图中中用用箭箭头头代代表表控控制制流流,程程序序员员不不受任何约束,可以完全不顾结构程序设计的原则,随意转移控制;受任何约束,可以完全不顾结构程序设计的原则,随意转移控制;程序流程图不易表示数据结构;程序流程图不易表示数据结构;对于大型软件而言,流程图过于琐碎,不容易阅读和修改。对于大型软件而言,流程图过于琐碎,不容易阅读和修改。详细设计的方法和工具详细设计的方法和工具(2)N-S图:图:是一种符合结构化程序设计原则的图形描述工具。是一种符合结构化程序设计原则的图形描述工具。在在n-s图中

140、,为了表示五种基本控制结构,规定了五种图形构件图中,为了表示五种基本控制结构,规定了五种图形构件。详细设计的方法和工具详细设计的方法和工具AB顺序顺序多分支选择多分支选择WHILE重复型重复型注:注:其中其中P为循环条为循环条件,件,S为循环体。为循环体。PFTBAPFTA选择选择=1P=2=nABNDO-WHILEPDO-UNTILPSSUNTIL重复型重复型2、详细设计的工具详细设计的工具(2)N-S图有下述特点:图有下述特点:功功能能域域(一一个个特特定定控控制制结结构构的的作作用用域域)明明确确,图图中中每每个个矩矩形形框框(除(除CASE构造中表示条件取值的矩形框外),就是功能域。构

141、造中表示条件取值的矩形框外),就是功能域。不不可可能能任任意意转转移移控控制制,约约束束设设计计人人员员必必须须遵遵守守结结构构化化程程序序设设计的要求。计的要求。在盒图上很容易确定局部和全程数据的作用域。在盒图上很容易确定局部和全程数据的作用域。很容易表现嵌套关系,也可以表示模块的层次结构。很容易表现嵌套关系,也可以表示模块的层次结构。详细设计的方法和工具详细设计的方法和工具(3)PAD图:图:问题分析图。是日本日立公司问题分析图。是日本日立公司1979年提出的一年提出的一种算法描述工具,它的结构是由左向右展开的二维树型结构。种算法描述工具,它的结构是由左向右展开的二维树型结构。详细设计的方

142、法和工具详细设计的方法和工具选择选择顺序顺序ABFT条件条件AB多分支选择多分支选择ACBCASE值值1值值2值值nPAD基本控制结构基本控制结构(3)PAD图:图:详细设计的方法和工具详细设计的方法和工具WHILE条件条件AUNTIL条件条件AAS1S3S2def“当型当型”循循环环“直到型直到型”循环循环定义定义A(对(对A细化)细化)PAD基本控制结构基本控制结构PAD图举例:图举例:将数组将数组A(1)到到A(10)进行选择法排序的算法描述。进行选择法排序的算法描述。详细设计的方法和工具详细设计的方法和工具PAD图的控制流程为自上而下、从左到右。图的控制流程为自上而下、从左到右。输入输

143、入A(1)到)到A(10)的值)的值开始开始置初值置初值:n=10sort输出输出A(1)到)到A(10)的值)的值结束结束PAD图举例:图举例:将数组将数组A(1)到到A(10)进行选择法排序的算法描述。进行选择法排序的算法描述。详细设计的方法和工具详细设计的方法和工具PAD图的控制流程为自上而下、从左到右。图的控制流程为自上而下、从左到右。WHILEin-1sorti=1defj=i+1max=A(j)WHILEjnA(i)=maxi=i+1FTmax1)个个线线索索(子子系系统统)组成;组成;(2)系统具有系统具有m(m1)个不同抽象级别的层;个不同抽象级别的层;(3)线索之间是相互独立

144、的(正交的);线索之间是相互独立的(正交的);(4)系系统统有有一一个个公公共共驱驱动动层层(一一般般为为最最高高层层)和和公公共共数数据据结结构构(一一般为最低层)。般为最低层)。几种新型的软件体系结构几种新型的软件体系结构1、正交软件体系结构、正交软件体系结构正交软件体系结构具有以下优点:正交软件体系结构具有以下优点:(1)层次结构清晰,便于理解。层次结构清晰,便于理解。(2)可移植性强,重用粒度大。可移植性强,重用粒度大。(3)易修改,可维护性强。易修改,可维护性强。几种新型的软件体系结构几种新型的软件体系结构2、三层、三层C/S软件体系结构软件体系结构C/S软软件件体体系系结结构构,即

145、即Client/Server(客客户户机机/服服务务器器)结结构构,是是基基于于资资源源不不对对等等,且且为为实实现现共共享享而而提提出出来来的的。C/S结结构构将将应应用用一一分分为为二二,服服务务器器(后后台台)负负责责数数据据管管理理,客客户户机机(前台)完成与用户的交互任务。(前台)完成与用户的交互任务。三三层层C/S结结构构是是将将应应用用功功能能分分成成表表示示层层、功功能能层层和和数数据据层层三三个个部部分分:表表示示层层是是应应用用的的用用户户接接口口部部分分,它它担担负负着着用用户户与与应应用用间间的的对对话话功功能。能。功功能能层层相相当当于于应应用用的的本本体体,它它是是

146、将将具具体体的的业业务务处处理理逻逻辑辑编编入入程程序序中。中。数据层数据层就是数据库管理系统,负责管理对数据库数据的读写。就是数据库管理系统,负责管理对数据库数据的读写。几种新型的软件体系结构几种新型的软件体系结构2、三层、三层C/S软件体系结构软件体系结构三层三层C/S结构具有以下优点:结构具有以下优点:(1)允允许许合合理理地地划划分分三三层层结结构构的的功功能能,使使之之在在逻逻辑辑上上保保持持相相对对独独立立性。性。(2)允允许许更更灵灵活活有有效效地地选选用用相相应应的的平平台台和和硬硬件件系系统统,使使之之在在处处理理负负荷荷能能力力上上与与处处理理特特性性上上分分别别适适应应于

147、于结结构构清清晰晰的的三三层层;并并且且这这些些平台和各个组成部分可以具有良好的可升级性和开放性平台和各个组成部分可以具有良好的可升级性和开放性。(3)三三层层C/S结结构构中中,应应用用的的各各层层可可以以并并行行开开发发,各各层层也也可可以以选选择择各自最适合的开发语言。各自最适合的开发语言。(4)允允许许充充分分利利用用功功能能层层有有效效地地隔隔离离开开表表示示层层与与数数据据层层,未未授授权权的的用用户户难难以以绕绕过过功功能能层层而而利利用用数数据据库库工工具具或或黑黑客客手手段段去去非非法法地地访访问数据层问数据层。几种新型的软件体系结构几种新型的软件体系结构3、C/S与与B/S

148、混合软件体系结构混合软件体系结构B/S与与C/S混合软件体系结构是一种典型的异构体系结构。混合软件体系结构是一种典型的异构体系结构。B/S软软件件体体系系结结构构,即即Browser/Server(浏浏览览器器/服服务务器器)结结构构,是是随随着着Internet技技术术的的兴兴起起,对对C/S体体系系结结构构的的一种变化或者改进的结构。一种变化或者改进的结构。在在B/S体体系系结结构构下下,用用户户界界面面完完全全通通过过WWW浏浏览览器器实实现现,一一部部分分事事务务逻逻辑辑在在前前端端实实现现,但但是是主主要要事事务务逻逻辑辑在在服服务器端实现。务器端实现。几种新型的软件体系结构几种新型

149、的软件体系结构3、C/S与与B/S混合软件体系结构混合软件体系结构B/S体系结构也有许多不足之处,例如体系结构也有许多不足之处,例如:(1)B/S体体系系结结构构缺缺乏乏对对动动态态页页面面的的支支持持能能力力,没没有有集集成成有有效效的的数据库处理功能。数据库处理功能。(2)B/S体系结构的系统扩展能力差,安全性难以控制。体系结构的系统扩展能力差,安全性难以控制。(3)在数据查询等响应速度上,要远远地低于)在数据查询等响应速度上,要远远地低于C/S体系结构。体系结构。(4)数数据据提提交交一一般般以以页页面面为为单单位位,数数据据的的动动态态交交互互性性不不强强,不不利于在线事务处理(利于在

150、线事务处理(OLTP)应用。)应用。几种新型的软件体系结构几种新型的软件体系结构3、C/S与与B/S混合软件体系结构混合软件体系结构C/S与与B/S混混合合软软件件体体系系结结构构的的优优点点是是外外部部用用户户不不直直接接访访问问数数据据库库服服务务器器,能能保保证证企企业业数数据据库库的的相相对对安安全全。企企业业内内部部用用户户的的交交互互性性较较强强,数数据据查查询询和和修修改改的的响响应应速速度度较快。较快。C/S与与B/S混混合合软软件件体体系系结结构构的的缺缺点点是是企企业业外外部部用用户户修修改改和和维维护护数数据据时时,速速度度较较慢慢,较较烦烦琐琐,数数据据的的动动态态交交

151、互互性性不强。不强。软件体系结构与操作系统软件体系结构与操作系统操作系统的体系结构操作系统的体系结构1、模块结构模块结构软件体系结构与操作系统软件体系结构与操作系统1、模块结构模块结构模模块块化化的的体体系系结结构构的的优优点点在在于于:系系统统具具有有紧紧凑凑的的总总体体结结构构,各组成模块之间的调用接口简单,系统效率较高。各组成模块之间的调用接口简单,系统效率较高。缺点:缺点:第第一一,模模块块之之间间的的随随意意调调用用,造造成成模模块块间间耦耦合合度度大大,独独立立性性差差,系系统没有清晰的结构;统没有清晰的结构;第第二二,数数据据基基本本都都被被作作为为全全程程变变量量来来使使用用,

152、意意味味着着相相关关模模块块都都有有可可能能进进行行读读取取或或写写入入操操作作,造造成成了了模模块块间间隐隐含含的的约约束束关关系系。系系统统维护也因此变得复杂维护也因此变得复杂第第三三,模模块块化化的的体体系系结结构构的的适适用用性性较较差差,一一般般只只能能用用于于模模块块较较小小、应用环境较为稳定但对效率要求较高的系统。应用环境较为稳定但对效率要求较高的系统。软件体系结构与操作系统软件体系结构与操作系统2、分层结构、分层结构分分层层风风格格的的系系统统按按照照层层次次结结构构组组织织,每每一一层层向向它它的的上上层层提提供供服服务务,同同时时又又是是它它的的下下层层的的客客户户。除除了

153、了邻邻接接的的层层,一一个个内内部部层层次次对对于于其其他他外外部部层层次次可可以以是是隐隐藏藏的的。这这样样,系系统统内内的的交交互互限限制制在在邻邻接接的的层层次次之之间间。同同时时,这这些些交交互互按按照照一一定定协协议议进行。进行。全全序序的的分分层层体体系系结结构构:各各层层之之间间是是单单向向调调用用的的,而而且且同同层层模模块块之之间间不不存存在在互互相相调调用用的的关关系系。该该方方式式无无法法实实现现循循环环调调用。用。半半序序的的分分层层体体系系结结构构:要要求求各各层层之之间间单单向向调调用用的的同同时时,允许同层模块之间的相互调用,允许在层次内出现现象。允许同层模块之间

154、的相互调用,允许在层次内出现现象。软件体系结构与操作系统软件体系结构与操作系统2、分层结构、分层结构层次划分的原则如下:层次划分的原则如下:(1)区区分分与与硬硬件件有有关关的的模模块块和和与与硬硬件件无无关关的的模模块块,把把和和特特定定机机器器相相关关的的模模块块(如如中中断断处处理理、输输入入输输出出管管理理等等)放放在在靠靠近近硬硬件件的最底层。的最底层。(2)一一个个操操作作系系统统往往往往具具有有多多种种操操作作方方式式,通通常常把把多多种种操操作作方方式式共共同同使使用用的的基基本本部部分分放放在在内内层层,而而把把随随着着这这些些操操作作方方式式而而改变的部分放在外层。改变的部

155、分放在外层。(3)通通常常把把各各种种系系统统调调用用功功能能模模块块放放置置在在系系统统的的内内层层,它它们们构构成了操作系统的内核。成了操作系统的内核。软件体系结构与操作系统软件体系结构与操作系统2、分层结构、分层结构分层结构的分层结构的优点:优点:分分层层体体现现了了不不断断增增加加的的抽抽象象层层次次,意意味味着着复复杂杂的的整整体体问问题题被被分分解为若干个较简单的独立成分。解为若干个较简单的独立成分。只只要要能能够够自自下下而而上上逐逐层层保保证证模模块块的的可可靠靠性性,系系统统的的整整体体可可靠靠性性就能得到保证。就能得到保证。各各个个模模块块之之间间的的组组织织结结构构清清晰

156、晰,具具有有明明确确的的调调用用关关系系和和依依赖赖关关系,系统具有良好的可读性和可适应性。系,系统具有良好的可读性和可适应性。在在修修改改、替替换换某某个个层层次次或或增增加加新新的的层层次次时时,基基本本不不影影响响其其他他层层次,系统便于修改和扩充。次,系统便于修改和扩充。软件体系结构与操作系统软件体系结构与操作系统3、微内核结构、微内核结构微内核结构的操作系统就是以客户微内核结构的操作系统就是以客户/服务器体系结构为基础的。服务器体系结构为基础的。它它的的特特点点是是:操操作作系系统统被被分分为为若若干干个个小小的的、自自包包含含的的分分支支(服服务务进进程程),每每个个分分支支运运行

157、行在在独独立立的的用用户户进进程程中中,相相互互之之间间通通过过规规范范一致的方式接收发送消息而联系起来。一致的方式接收发送消息而联系起来。操作系统由如下两大部分组成。操作系统由如下两大部分组成。(1)运运行行在在核核心心态态的的内内核核:它它提提供供操操作作系系统统基基本本都都具具有有的的常常用用操操作作,如如线线程程调调度度、虚虚拟拟存存储储、信信息息传传递递、设设备备驱驱动动以以及及内内核核的的原原语语操操作集和中断处理等。作集和中断处理等。(2)运运行行在在用用户户态态并并以以客客户户/服服务务器器方方式式运运行行的的进进程程层层:除除内内核核部部分分外外,操操作作系系统统的的其其他他

158、部部分分被被分分成成若若干干个个相相对对独独立立的的进进程程,每每一一个个进程实现一组服务,称为服务进程。进程实现一组服务,称为服务进程。软件体系结构与操作系统软件体系结构与操作系统3、微内核结构、微内核结构客户客户/服务器体系结构的操作系统具有很多优点。服务器体系结构的操作系统具有很多优点。(1)可可靠靠性性高高:每每个个分分支支是是独独立立的的和和自自包包含含的的(分分支支之之间间耦耦合合最最为为松松散散),因因此此即即使使某某个个服服务务进进程程出出现现问问题题,也也不不会会引引起起其其他他服服务务进进程或系统的其他组成部分的损坏或崩溃。程或系统的其他组成部分的损坏或崩溃。(2)可可维维

159、护护性性好好:操操作作系系统统的的各各个个功功能能组组成成部部分分是是自自包包含含的的,且且接接口口规规范范。无无论论是是增增加加新新的的操操作作系系统统服服务务功功能能,还还是是修修改改现现有有服服务务进进程的代码,系统其他部分都不会受到影响。程的代码,系统其他部分都不会受到影响。(3)适适宜宜于于分分布布式式处处理理的的计计算算环环境境:不不同同的的服服务务可可以以运运行行在在不不同同的的处处理器或计算机上,因此操作系统自然具有分布式处理能力。理器或计算机上,因此操作系统自然具有分布式处理能力。第第6章章软件编码软件编码软件编码:软件编码:软件编码是设计的继续,是将设计转化为计算机能够理软

160、件编码是设计的继续,是将设计转化为计算机能够理解的形式。解的形式。对源程序质量的要求:对源程序质量的要求:程序语法正确;程序语法正确;程序逻辑正确;程序逻辑正确;程序可读性好。程序可读性好。影响程序质量的因素:程序结构、程序设计风格。影响程序质量的因素:程序结构、程序设计风格。软件编码程序设计语言程序设计语言程序设计语言的分类程序设计语言的分类程序设计语言程序设计语言高级语言高级语言低级语言低级语言传统高级语言传统高级语言超高级语言超高级语言汇编语言汇编语言机器语言机器语言软件编码程序设计语言的特性程序设计语言的特性1、心理特性:影响程序、心理特性:影响程序员心理的语言性能。员心理的语言性能。

161、2、工程特性:、工程特性:3、技术特性:、技术特性:歧义性:歧义性:有些语法规则容易使人用不同的有些语法规则容易使人用不同的方式来解释语言,产生心理上的二义性。方式来解释语言,产生心理上的二义性。简洁性:简洁性:指人们必须记住的语言成分的数指人们必须记住的语言成分的数量,既要简洁,又要易读易懂。量,既要简洁,又要易读易懂。局部性和顺序性:局部性和顺序性:人的记忆特性有两方面:人的记忆特性有两方面:联想方式和顺序方式。局部性指语言的联联想方式和顺序方式。局部性指语言的联想性。想性。传统性:传统性:习惯于已掌握的语种。习惯于已掌握的语种。软件编码程序设计语言的特性程序设计语言的特性1、心理特性:影

162、响程序、心理特性:影响程序员心理的语言性能。员心理的语言性能。2、工程特性:、工程特性:3、技术特性:、技术特性:可移植性:可移植性:可方便地从一个计算机环境移可方便地从一个计算机环境移植到另一个计算机环境。植到另一个计算机环境。开发工具的可利用性:开发工具的可利用性:利用工具可有效地利用工具可有效地缩短开发时间。缩短开发时间。软件的可重用性:软件的可重用性:编程语言可提供可重用编程语言可提供可重用的软件成分,如模块程序可通过源代码的的软件成分,如模块程序可通过源代码的剪贴、包含、继承等方式重用以有软件。剪贴、包含、继承等方式重用以有软件。可维护性:可维护性:易于将详细设计翻译为源程序,易于将

163、详细设计翻译为源程序,易于修改需要变化的源程序。源程序的可易于修改需要变化的源程序。源程序的可读性、语言的文档化特性对此有直接影响。读性、语言的文档化特性对此有直接影响。软件编码程序设计语言的特性程序设计语言的特性1、心理特性:影响程序、心理特性:影响程序员心理的语言性能。员心理的语言性能。2、工程特性:、工程特性:3、技术特性:、技术特性:将软件设计转化为程序代码时,转化的质将软件设计转化为程序代码时,转化的质量往往受语言特性的影响,有时仅当语言量往往受语言特性的影响,有时仅当语言具有某种特性时,设计需求才能满足,应具有某种特性时,设计需求才能满足,应根据项目的特性选择相应语言。根据项目的特

164、性选择相应语言。软件编码程序设计语言程序设计语言选择程序设计语言的标准要综合考虑以下各方面因素来决定:选择程序设计语言的标准要综合考虑以下各方面因素来决定:1)从用户方面考虑:应选择一种既有利于系统功能实现,又是从用户方面考虑:应选择一种既有利于系统功能实现,又是用户所熟悉的程序设计语言。用户所熟悉的程序设计语言。2)从程序员方面考虑:应选择一种程序员熟悉的语言。从程序员方面考虑:应选择一种程序员熟悉的语言。3)从软件的可移植性方面考虑:应选择一种标准化程度高,并从软件的可移植性方面考虑:应选择一种标准化程度高,并且程序的可移植性好的语言实现设计且程序的可移植性好的语言实现设计。4)从应用领域

165、方面考虑:应选择一种可以简化编程,且有利于从应用领域方面考虑:应选择一种可以简化编程,且有利于后期的测试和维护工作。后期的测试和维护工作。软件编码程序设计风格:程序设计风格: 体现在四个方面:体现在四个方面: 源程序文档化源程序文档化 数据说明方法数据说明方法 语句结构语句结构 输入输入/ /输出方法输出方法软件编码程序设计风格:程序设计风格:源程序文档化:源程序文档化: 1 1)符号名的命名)符号名的命名 符号名即标识符,包括模块名、变量名、常量名、符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名及数据区名缓冲区名等。标号名、子程序名及数据区名缓冲区名等。 原则:名字应精练且有意

166、义。原则:名字应精练且有意义。软件编码程序设计风格:程序设计风格:源程序文档化:源程序文档化: 2 2)程序的注释:)程序的注释: 序言性注释:通常置于每个程序模块的开头部分,序言性注释:通常置于每个程序模块的开头部分,给出程序的整体说明,引导读者正确理解程序。有些软给出程序的整体说明,引导读者正确理解程序。有些软件开发部门对序言性注释的内容作了严格的规定,要求件开发部门对序言性注释的内容作了严格的规定,要求程序员逐项写出相关内容。程序员逐项写出相关内容。软件编码程序设计风格:程序设计风格:源程序文档化:源程序文档化: 功能性注释:嵌在源程序中,用于描述其后的程序段或功能性注释:嵌在源程序中,

167、用于描述其后的程序段或语句作什么。有关设计的说明也可以作为注释嵌入源程序内。语句作什么。有关设计的说明也可以作为注释嵌入源程序内。 书写功能性注释的原则:书写功能性注释的原则: 用于描述一段程序而不是每一条语句;用于描述一段程序而不是每一条语句; 使用缩进和空行,使程序和注释易于区分;使用缩进和空行,使程序和注释易于区分; 注释要正确。注释要正确。软件编码程序设计风格:程序设计风格:源程序文档化:源程序文档化: 3 3)层次结构)层次结构较较好好的的层层次次结结构构使使语语句句间间的的关关系系清清晰晰,便便于于对对程程序序的的阅阅读和理解。读和理解。 可通过对空格、空行和移行的灵活使用实现。可

168、通过对空格、空行和移行的灵活使用实现。软件编码程序设计风格:程序设计风格:数据说明方法数据说明方法 编写程序时应注意数据说明的风格,使得程序中的数编写程序时应注意数据说明的风格,使得程序中的数据易于理解和维护。据易于理解和维护。 原则:原则: 1 1)数据说明的次序应规范化,使得数据属性容易查)数据说明的次序应规范化,使得数据属性容易查找,并且有利于测试、排错和维护;找,并且有利于测试、排错和维护; 2 2)当多个变量使用一个说明语句时,变量名表应按)当多个变量使用一个说明语句时,变量名表应按字母排序;字母排序; 3 3)对于复杂的数据结构,应当使用注释说明程序实)对于复杂的数据结构,应当使用

169、注释说明程序实现时数据结构的固有特点现时数据结构的固有特点。软件编码程序设计风格:程序设计风格:语句结构语句结构:语句构造应力求简单、直接,易于理解,不要为片面追语句构造应力求简单、直接,易于理解,不要为片面追求效率而使程序复杂化。求效率而使程序复杂化。(1)一行内只写一条语句)一行内只写一条语句。(2)程程序序的的编编写写首首先先考考虑虑清清晰晰性性,不不要要刻刻意意追追求求技技巧巧性性。(3)合理利用空行、空格隔离符体现语句结构。)合理利用空行、空格隔离符体现语句结构。(4)嵌套层次不要过深。)嵌套层次不要过深。软件编码程序设计风格:程序设计风格:输入和输出输入和输出 由于输入输出信息和用

170、户紧密相关,输入和输出的方法由于输入输出信息和用户紧密相关,输入和输出的方法和格式应当尽量方便用户的使用,避免因设计不当给用户带和格式应当尽量方便用户的使用,避免因设计不当给用户带来麻烦,使用户因输入和输出的风格不好而拒绝接受整个系来麻烦,使用户因输入和输出的风格不好而拒绝接受整个系统。统。 设计时需注意以下几点:设计时需注意以下几点: (1 1)输入简单,并有)输入简单,并有简单明了的提示;简单明了的提示; (2 2)具有完备的出错检查和出错恢复功能,不能出现让)具有完备的出错检查和出错恢复功能,不能出现让用户摸不着头脑的问题,一切的问题都应由软件解决;用户摸不着头脑的问题,一切的问题都应由

171、软件解决; (3 3)输入)输入/ /输出格式的保持一致性。输出格式的保持一致性。软件编码 使用FORTRAN 语言编写的一个打印A、B、C三数中最小者的程序:ABBCAC打印B打印C打印ATFTTFF if(A.LT.B)goto120if(B.LT.C)goto110100write(6,*)Cgoto140110write(6,*)Bgoto140120if(A.LT.C)goto130goto100130write(6,*)A140continue流程图软件编码 使用FORTRAN 语言编写的一个打印A、B、C三数中最小者的程序:ABBCAC打印B打印C打印ATFTTFF if(A.L

172、T.B.AND.A.LT.C)thenwrite(6,*)Aelseif(A.GE.B.AND.B.LT.C)thenwrite(6,*)Belsewrite(6,*)Cendifendif流程图软件编码 设在闭区间a,b上函数F(X)有唯一的一个零点, 用二分法求方程F(X)=0在区间a,b上的根。abF0=F(a); F1=F(b);if (F0*F1=0) X0=a;X1=b; for (i=1;i=n;i+ ) Xm=(X0+X1)/2; Fm=F(Xm); if (abs(Fm)eps| abs(Fm)0) X0=Xm;F0=Fm; else X1=Xm Finish:printf(

173、“%dn”,Xm); 程序中, X0、X1是当前求根区间X0、X1的 上、下界,Xm是该区间中点, eps是一个给定的很小正数。程序中出现两个循环出口,不满足结构化要求。软件编码 设在闭区间a,b上函数F(X)有唯一的一个零点, 用二分法求方程F(X)=0在区间a,b上的根。abF0=F(a); F1=F(b);if (F0*F1=0) X0=a;X1=b; for (i=1;i=n;i+ ) Xm=(X0+X1)/2; Fm=F(Xm); if (abs(Fm)eps| abs(Fm)0) X0=Xm;F0=Fm; else X1=Xm printf(“%dn”,Xm); 程序中仍出现两个循

174、环出口,不是结构化的程序。利用了C语言的break语句,由于将转移语句和转出条件的判断直接联系在一起可读性较好。软件编码 设在闭区间a,b上函数F(X)有唯一的一个零点, 用二分法求方程F(X)=0在区间a,b上的根。abF0=F(a); F1=F(b);if (F0*F1=0) X0=a;X1=b; i=1; finished=0; while(i=n& finished=0) Xm=(X0+X1)/2; Fm=F(Xm); if (abs(Fm)eps| abs(Fm)0) X0=Xm;F0=Fm; else X1=Xm printf(“%dn”,Xm); 程序段中各种结构均为单入口单出口

175、,且没有使用GOTO语句, 是结构化的程序。但由于引入一个布尔变量控制循环结束,可读性较差。第第7章章软件测试软件测试软件测试是在软件投入运行之前软件测试是在软件投入运行之前,对软件的需求分析、对软件的需求分析、设计规格说明和编码的最后复审。设计规格说明和编码的最后复审。由于软件开发的各个阶段均包含了大量的人的创造由于软件开发的各个阶段均包含了大量的人的创造性劳动,不可避免地会引入错误,尤其是大型、复杂的性劳动,不可避免地会引入错误,尤其是大型、复杂的软件系统。软件系统。软件测试的概念和意义软件测试的概念和意义什么是软件测试:什么是软件测试:软件测试的定义:软件测试是为了发现错误而运行软件测试

176、的定义:软件测试是为了发现错误而运行程序的过程。是根据软件开发各阶段的规格说明和程序程序的过程。是根据软件开发各阶段的规格说明和程序内部结构精心设计一批测试用例,并利用这些用例去运内部结构精心设计一批测试用例,并利用这些用例去运行程序,以发现程序中的错误。行程序,以发现程序中的错误。软件测试的概念和意义软件测试的概念和意义软件测试在软件生命期中,跨越两个阶段。软件测试在软件生命期中,跨越两个阶段。编写每一个模块后,进行单元测试。通常模块的编编写每一个模块后,进行单元测试。通常模块的编写者和测试者是同一个人。写者和测试者是同一个人。每一个模块完成单元测试后,对软件进行各种综合每一个模块完成单元测

177、试后,对软件进行各种综合测试。由专门的测试人员完成。测试。由专门的测试人员完成。软件测试的概念和意义软件测试的概念和意义目前软件开发结构,将研制力量的目前软件开发结构,将研制力量的40%以上投入到以上投入到软件测试之中。软件测试之中。几个典型系统中软件测试的费用几个典型系统中软件测试的费用系统名称系统名称测试费用占软件开发预算的比例测试费用占软件开发预算的比例SAGE47%NAVALTACTICAL50%DATASYSTEMGENINI47%SATURNV44%软件测试的目标和原则软件测试的目标和原则软件测试的目的:软件测试的目的:1、软件测试是为了发现错误而运行程序的过程。、软件测试是为了发

178、现错误而运行程序的过程。2、一个好的测试用例能够发现至今尚未发现的错误。、一个好的测试用例能够发现至今尚未发现的错误。3、一个成功的测试是发现了至今尚未发现的错误的测、一个成功的测试是发现了至今尚未发现的错误的测试。试。软件测试的目标和原则软件测试的目标和原则软件测试的原则:软件测试的原则:(1)应当把)应当把“尽早地和不断地测试尽早地和不断地测试”作为开发者的座右铭作为开发者的座右铭(2)软件测试工作应该由独立的专业的软件测试机构来完成)软件测试工作应该由独立的专业的软件测试机构来完成(3)测试工作要全面,但不可能实现)测试工作要全面,但不可能实现“穷举穷举”。(4)把)把Pareto原理应

179、用到软件测试中。即对发现错误较多的程序段,原理应用到软件测试中。即对发现错误较多的程序段,应进行更深入的测试。应进行更深入的测试。(5)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性)妥善保存一切测试过程文档,作用是不言而喻的,测试的重现性往往要靠测试文档。往往要靠测试文档。(6)不要希望在极短的时间内完成一个高水平的测试。)不要希望在极短的时间内完成一个高水平的测试。(7)错误经过修改后,相关的测试必不可少。)错误经过修改后,相关的测试必不可少。软件测试的范围软件测试的范围软件测试的对象:软件测试的对象:软件测试不等于程序测试,对软件定义与开发的整个期软件测试不等于程序测试,对软件

180、定义与开发的整个期间所得到的各种文档资料,都是测试对象,包括需求规格间所得到的各种文档资料,都是测试对象,包括需求规格说明、概要设计规格说明、详细设计规格说明、源程序等。说明、概要设计规格说明、详细设计规格说明、源程序等。软件测试的工作软件测试的工作软件测试工作包括:软件测试工作包括:确认工作:确认工作:是一系列的活动和过程,其目的是证实在一个是一系列的活动和过程,其目的是证实在一个给定的外部环境中,软件的逻辑正确性。它包括需求规格说给定的外部环境中,软件的逻辑正确性。它包括需求规格说明的确认和程序的确认。而程序的确认又分为:明的确认和程序的确认。而程序的确认又分为: 静态测试静态测试分为两大

181、类:分为两大类: 动态测试动态测试黑盒测试黑盒测试白盒测试白盒测试软件测试的工作软件测试的工作静态:静态:静态测试指被测程序不在机器上运行,而采用人工检测静态测试指被测程序不在机器上运行,而采用人工检测和计算机辅助静态检测的手段对程序进行测试。和计算机辅助静态检测的手段对程序进行测试。1、人工检测:人工审查程序或评审软件。人工审查程序、人工检测:人工审查程序或评审软件。人工审查程序偏重于编码质量的检验,而人工评审软件除了审查编码还偏重于编码质量的检验,而人工评审软件除了审查编码还要对各阶段的软件产品进行检验。人工检测可以发现计算要对各阶段的软件产品进行检验。人工检测可以发现计算机不易发现的错误

182、,据统计人工检测可发现机不易发现的错误,据统计人工检测可发现30%70%的的逻辑设计和编码错误,从而减少系统测试的总工作量。逻辑设计和编码错误,从而减少系统测试的总工作量。2、计算机辅助静态检测:利用静态检测工具对程序进行、计算机辅助静态检测:利用静态检测工具对程序进行测试。测试。软件测试的工作软件测试的工作动态:动态:动态测试是通过运行程序发现错误。动态测试是通过运行程序发现错误。一般意义上的测试都是动态测试。为使测试发现尽可能多的一般意义上的测试都是动态测试。为使测试发现尽可能多的错误错误,动态测试时需采用一些有效的方法。一般有两种方法:一动态测试时需采用一些有效的方法。一般有两种方法:一

183、是测试产品的功能,二是测试产品的内部结构和处理程。分别称是测试产品的功能,二是测试产品的内部结构和处理程。分别称为黑盒测试和白盒测试。为黑盒测试和白盒测试。软件测试的工作软件测试的工作软件测试过程中的信息:软件测试过程中的信息:测试过程需要三类信息:测试过程需要三类信息:1、软件配置:包括需求规格说明、软件设计规格说明、源程序、软件配置:包括需求规格说明、软件设计规格说明、源程序等;等;2、测试配置:包括测试方案、测试用例、测试驱动程序等;、测试配置:包括测试方案、测试用例、测试驱动程序等;3、测试工具:计算机辅助测试的有关工具。如测试数据自动生、测试工具:计算机辅助测试的有关工具。如测试数据

184、自动生成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动成工具、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库。测试的测试数据库。软件测试的工作软件测试的工作软件测试信息流:软件测试信息流: 测试测试结果结果分析分析可靠性可靠性分析分析排错排错软件配置软件配置测试配置测试配置测试工具测试工具测试结果测试结果预期结果预期结果错误错误出错率出错率数据数据改正的软件改正的软件预测的可靠性预测的可靠性软件测试方法软件测试方法白盒测试:白盒测试:白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部结构为基础

185、,设计测试用例。构为基础,设计测试用例。1、逻辑覆盖:、逻辑覆盖:追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。(A1)AND(B=0)(A=2)OR(X1)语句段语句段语句段语句段TFFT12345如右图:一个被测如右图:一个被测程序的流程图。程序的流程图。软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖技术有:(1)语句覆盖:)语句覆盖:为了提高发现错误的可能性,在测试时应该执行到程序中

186、的每一个语句。为了提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。语句覆盖是指设计足够的测试用例,使被测程序的每个语句至少执行一次。(A1)AND(B=0)(A=2)OR(X1)语句段语句段TFFT12345测试路径为测试路径为1-2-4,即可保证每,即可保证每个语句至少执行一次。所以测试用例个语句至少执行一次。所以测试用例为:为:A=2、B=0、X=3。程序每个。程序每个语句都能执行,语句覆盖似乎全面地语句都能执行,语句覆盖似乎全面地检查了每个语句,但该测试用例只检检查了每个语句,但该测试用例只检查了逻辑表达式为查

187、了逻辑表达式为“真真”的情况,如的情况,如将将“AND”错写为错写为“OR”、X1错错写为写为X1)AND(B=0)(A=2)OR(X1)语句段语句段TFFT12345测试路径只要测试路径只要1-2-4,1-3-5或或1-2-5,1-3-4即可达到覆盖标准。所以测试即可达到覆盖标准。所以测试用例为:用例为:A=3、B=0、X=1(1-2-5),),A=2、B=1、X=2(1-3-4)。对于多)。对于多分支的判定,判定覆盖要使得每一个判定分支的判定,判定覆盖要使得每一个判定表达式获得每一个可能的值。判定覆盖比表达式获得每一个可能的值。判定覆盖比语句覆盖严格,若通过各个分支,各个语语句覆盖严格,若

188、通过各个分支,各个语句也执行了。但该测试仍不充分,上述数句也执行了。但该测试仍不充分,上述数据只覆盖了全部路径的一半,如将据只覆盖了全部路径的一半,如将X1错错写为写为X1B=oA=2,X1要选择足够的测试用例,使得:要选择足够的测试用例,使得:判定表达式判定表达式1出现:出现:A1,B=0;A1,B0判定表达式判定表达式2出现:出现:A=2,X1;A2,X1达到条件覆盖标准。达到条件覆盖标准。为满足上述要求,选择以下两组数据:为满足上述要求,选择以下两组数据:A=2,B=0,X=3(满足(满足A1,B=0,A=2,X1通过路径通过路径124)A=1,B=1,X=1(满足(满足A1,B0,X1

189、,A2通过路径通过路径135) 软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖技术有:(3)条件覆盖:)条件覆盖:以上两组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆以上两组数据不仅覆盖了判定表达式中的所有条件的可能取值,而且覆盖了盖了所有判定的取所有判定的取“真真”分支和取分支和取“假假”分支,在这种情况下条件覆盖强分支,在这种情况下条件覆盖强于判定覆盖。但也有例外,如选择以下两组数据:于判定覆盖。但也有例外,如选择以下两组数据:A=1,B=0,X=3(满足(满足A1,B=0,A2,X1)A=2,B=1,X=1(满足(满足A1,B0,X1,A=2)以上两组数据覆盖了判定表达式

190、中的所有条件的可能取值,但只覆盖了以上两组数据覆盖了判定表达式中的所有条件的可能取值,但只覆盖了第一个判定表达式的取第一个判定表达式的取“假假”分支和第二个判定表达式的取分支和第二个判定表达式的取“真真”分支,此分支,此例不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问例不满足判定覆盖。所以满足条件覆盖不一定满足判定覆盖。为了解决此问题,需要对条件和分支兼顾。题,需要对条件和分支兼顾。软件测试方法软件测试方法常用的覆盖技术有:常用的覆盖技术有:(4)判定)判定/条件覆盖:条件覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中该覆盖标准是指设计足够的测试用例,使

191、被测程序的每个判定表达式中每个条件的各种可能的值至少出现一次。并使每个判定表达式所有可能的结每个条件的各种可能的值至少出现一次。并使每个判定表达式所有可能的结果也至少出现一次。对该例程序,可选择以下两组数据达到判定果也至少出现一次。对该例程序,可选择以下两组数据达到判定/条件覆盖条件覆盖标准:标准:A=2,B=0,X=3A=1,B=1,X=1从表面上看,判定从表面上看,判定/条件覆盖测试了所有条件的取值,但实际上条件组条件覆盖测试了所有条件的取值,但实际上条件组合中的某些条件会抑制其它的条件,如合中的某些条件会抑制其它的条件,如“与与”运算的判定表达式中,第一个运算的判定表达式中,第一个条件为

192、条件为“假假”,则这个表达式后面的几个条件均不起作用,后面的表达式中,则这个表达式后面的几个条件均不起作用,后面的表达式中的错误也就测试不出来。的错误也就测试不出来。软件测试方法软件测试方法(5)条件组合覆盖:)条件组合覆盖:该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每该覆盖标准是指设计足够的测试用例,使被测程序的每个判定表达式中每个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。个条件的各种可能的值的组合至少出现一次。条件组合覆盖是较强的覆盖标准。该例中,两个判定表达式共有该例中,两个判定表达式共有4个条件,有个条件,有8种组合:种组合:A1,B=0;

193、A1,B0;A1,B=0;A1,B0;A=2,X1;A=2,X1;A2,X1;A2,X1;测试用例测试用例4组数据:组数据:A=2,B=0,X=2;覆盖条件组合;覆盖条件组合,路径,路径124A=2,B=1,X=1;覆盖条件组合;覆盖条件组合,路径,路径134A=1,B=1,X=1;覆盖条件组合;覆盖条件组合,路径,路径135A=1,B=0,X=2;覆盖条件组合;覆盖条件组合,路径,路径134显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定显然,满足条件组合覆盖的测试,一定满足判定覆盖、条件覆盖、判定/条件条件覆盖,但该测试没有覆盖程序所有可能的执行路径,覆盖,但该测试没有覆盖程

194、序所有可能的执行路径,125路径没有覆盖。路径没有覆盖。软件测试方法软件测试方法(6)路径覆盖:)路径覆盖:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该覆盖标准是指设计足够的测试用例,覆盖被测程序中所有可能路径:该例可选择以下测试用例,覆盖程序中的该例可选择以下测试用例,覆盖程序中的4条路径:条路径:A=2,B=0,X=2;覆盖路径;覆盖路径124,条件组合,条件组合;A=2,B=1,X=1;覆盖路径;覆盖路径134,条件组合,条件组合;A=1,B=1,X=1;覆盖路径;覆盖路径135,条件组合,条件组合;A=3,B=0,X=1;覆盖路径;覆盖路径125,条件组合,条件组合

195、;显然,该测试满足路径覆盖,但没有满足条件组合覆盖。显然,该测试满足路径覆盖,但没有满足条件组合覆盖。软件测试方法软件测试方法六种覆盖的比较:六种覆盖的比较: 语句覆盖语句覆盖每条语句至少执行一次每条语句至少执行一次判定覆盖判定覆盖每个判定的每个分支至少执行一次每个判定的每个分支至少执行一次条件覆盖条件覆盖每个判定的每个条件应取到各种可能的值每个判定的每个条件应取到各种可能的值判定判定/条件覆盖条件覆盖同时满足判定覆盖和条件覆盖同时满足判定覆盖和条件覆盖条件组合覆盖条件组合覆盖每个判定中各条件的每一种组合至少出现一次每个判定中各条件的每一种组合至少出现一次路径覆盖路径覆盖使程序中每一条可能的路

196、径至少执行一次使程序中每一条可能的路径至少执行一次发发现现错错误误能能力力强强力弱弱力软件测试方法软件测试方法2、控制结构测试、控制结构测试(1)基本路径测试)基本路径测试画出程序的控制流图画出程序的控制流图计算程序环路复杂度计算程序环路复杂度确定独立路径的基本集合确定独立路径的基本集合设计测试用例设计测试用例软件测试方法软件测试方法2、控制结构测试、控制结构测试(2)条件测试)条件测试条条件件测测试试重重点点测测试试程程序序中中的的每每个个条条件件,通通过过检检测测程程序序条条件件中中的的错错误,来发现程序中的其它错误误,来发现程序中的其它错误.主主要要是是测测试试组组成成条条件件的的各各个

197、个成成分分的的正正确确性性,条条件件可可能能是是一一个个布布尔尔变变量量、一一个个关关系系表表达达式式或或是是由由两两个个或或多多个个简简单单条条件件、布布尔尔运运算算符符和和括括弧弧组组成成的的复复杂杂条条件件最最简简单单的的条条件件测测试试策策略略应应该该是是分分支支测测试试,分分支支测测试试主主要要是是保保证证条条件件中中的的每每个个简简单单条条件件,以以及及取取真真、取取假假的的分分支支都都至至少少执执行一次。行一次。力软件测试方法软件测试方法2、控制结构测试、控制结构测试(3)循环测试)循环测试根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种根据循环的复杂性,可分为简单循环、

198、嵌套循环和串接循环三种1)简单循环简单循环简单循环可依据以下顺序分别设计测试用例进行测试:简单循环可依据以下顺序分别设计测试用例进行测试:零次循环:从循环入口到出口;零次循环:从循环入口到出口;一次循环:检查循环初始值;一次循环:检查循环初始值;二次循环:检查二次循环:检查2次循环;次循环;m次循环:检查次循环:检查m次循环,其中次循环,其中m小于最大次数减小于最大次数减1;进行最大次数循环、比最大次数多一次、少一次的循环。进行最大次数循环、比最大次数多一次、少一次的循环。软件测试方法软件测试方法(3)循环测试)循环测试根据循环的复杂性,可分为简单循环、嵌套循环和串接循环三种根据循环的复杂性,

199、可分为简单循环、嵌套循环和串接循环三种2)嵌套循环嵌套循环使用使用B.Beizer提出的测试方法,可以减少测试数目:提出的测试方法,可以减少测试数目:对对最最内内层层循循环环做做简简单单循循环环的的全全部部测测试试。所所有有其其它它层层的的循循环环变变量量置置为最小值;为最小值;逐逐步步外外推推,对对其其外外面面一一层层循循环环进进行行测测试试。测测试试时时保保持持当当前前层层的的所所有有外外层层循循环环的的循循环环变变量量取取最最小小值值,所所有有其其它它嵌嵌套套内内层层循循环环的的循循环环变变量取量取“典型典型”值,同时考虑增加越界值和非法值的测试。值,同时考虑增加越界值和非法值的测试。反

200、复进行,直到所有各层循环测试完毕。反复进行,直到所有各层循环测试完毕。软件测试方法软件测试方法2、控制结构测试、控制结构测试(3)循环测试)循环测试根根据据循循环环的的复复杂杂性性,可可分分为为简简单单循循环环、嵌嵌套套循循环环和和串串接接循循环环三三种种:3)串接循环串接循环如如果果各各个个循循环环互互相相独独立立,则则可可以以用用与与简简单单循循环环相相同同的的方方法法进进行行测测试试。但但如如果果几几个个循循环环不不是是互互相相独独立立的的,第第二二个个循循环环的的执执行行与与第第一一个个循环的某个值有关,则需要使用测试嵌套循环的办法来处理。循环的某个值有关,则需要使用测试嵌套循环的办法

201、来处理。软件测试的方法软件测试的方法黑盒测试法黑盒测试法“黑盒黑盒”测的是功能,测的是功能,它检查的内容只包括程序功能是否能按它检查的内容只包括程序功能是否能按照规格说明书的内容正常使用,程序是否接收输入数据产生正确的照规格说明书的内容正常使用,程序是否接收输入数据产生正确的输出信息输出信息方法有:等价类划分法、边界值分析法和错误推测法方法有:等价类划分法、边界值分析法和错误推测法1、等价类划分:、等价类划分:等价类:指某个输入域的子集合,在该集合中,各个输入数等价类:指某个输入域的子集合,在该集合中,各个输入数据对暴露程序中的错误是等效的。即如果使用某个等价类中的一个据对暴露程序中的错误是等

202、效的。即如果使用某个等价类中的一个输入条件,作为测试数据检测出了错误,则用这一等价类中的其它输入条件,作为测试数据检测出了错误,则用这一等价类中的其它数据进行测试会发现同样的错误,反之亦然。数据进行测试会发现同样的错误,反之亦然。 软件测试的方法软件测试的方法黑盒测试法黑盒测试法1、等价类划分:、等价类划分:等价类划分的含义:将输入数据域按有效的或无效的(或称合理的或等价类划分的含义:将输入数据域按有效的或无效的(或称合理的或不合理的)划分成若干类,通过测试每个类的代表值,进行测试。如果不合理的)划分成若干类,通过测试每个类的代表值,进行测试。如果某个等价类中任选一个测试用例,未发现程序错误,

203、则该类中的其他测某个等价类中任选一个测试用例,未发现程序错误,则该类中的其他测试用例,也不会发现程序错误。这样用少量有代表性的例子可代替大量试用例,也不会发现程序错误。这样用少量有代表性的例子可代替大量测试目的相同的例子,有效地提高测试效率。测试目的相同的例子,有效地提高测试效率。步骤:步骤:划分等价类划分等价类有效等价类:对程序规格来说是正确的,有意义的数据;有效等价类:对程序规格来说是正确的,有意义的数据;无效等价类:对程序规格来说是错误的,无意义的数据。无效等价类:对程序规格来说是错误的,无意义的数据。 软件测试的方法软件测试的方法黑盒测试法黑盒测试法1、等价类划分:、等价类划分:确定测

204、试用例确定测试用例,选取的原则:,选取的原则:1)为每个等价类规定一个唯一的编号;)为每个等价类规定一个唯一的编号;2)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复此步骤,直到所有的有效等价类均被覆盖的有效等价类,重复此步骤,直到所有的有效等价类均被覆盖为止;为止;3)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖)设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的无效等价类,重复此步骤,直到所有的无效等价类均被覆盖的无效等价类,重复此步骤,直到所有的无效等价类均被覆盖为止;为止; 软件测试方法软件测试方法黑盒测试法黑盒测试法2

205、、边界值分析:、边界值分析:边界值分析也是一种黑盒测试法,是对等价类划分法的补充。边界值分析也是一种黑盒测试法,是对等价类划分法的补充。实践经验表明,程序往往在处理边界情况时发生错误。边界实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类、输出等价类边界上的情况。检查边界情况的情况指输入等价类、输出等价类边界上的情况。检查边界情况的测试用例是比较高效的,可以查出更多的错误。测试用例是比较高效的,可以查出更多的错误。选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。选取刚好等于、刚好大于、刚好小于边界的值作为测试用例。 软件测试方法软件测试方法黑盒测试法黑盒测试法3、错误推

206、测:、错误推测:错误推测法的基本思想:是列举出程序中可能有的错误和错误推测法的基本思想:是列举出程序中可能有的错误和容易发生错误的特殊情况,并根据它们选择测试方案。容易发生错误的特殊情况,并根据它们选择测试方案。有经验的程序员通常可根据程序的特点和功能选择测试数有经验的程序员通常可根据程序的特点和功能选择测试数据,这些数据可能导致程序出现错误。据,这些数据可能导致程序出现错误。软件测试步骤软件测试步骤软件测试策略:软件测试策略: 测试过程分为测试过程分为4个步骤:个步骤:单元测试单元测试组装测试组装测试确认测试确认测试系统测试系统测试单元单元测试测试单元单元测试测试单元单元测试测试被测模块被测

207、模块被测模块被测模块被测模块被测模块组装组装测试测试设设计计信信息息确认确认测试测试系统系统测试测试已集成的已集成的软件软件已确认的已确认的软件软件可交付的可交付的软件软件软软件件需需求求系系统统其其它它元元素素已测试已测试模块模块软件测试步骤软件测试步骤1、单元测试、单元测试单元测试也称模块测试,是针对软件设计的最小单元单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。目的是发现模块内部的错误程序模块进行测试的工作。目的是发现模块内部的错误。单元测试主要从以下五个方面进行。单元测试主要从以下五个方面进行。(1)模块接口测试)模块接口测试(2)局部数据结构测试)局部数据结构

208、测试(3)路径测试)路径测试(4)程序异常测试)程序异常测试(5)边界条件测试)边界条件测试软件测试步骤软件测试步骤2、集成测试集成测试也称组装测试,它的任务是按照一定的策略对单元测集成测试也称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。(1)一次性组装方式)一次性组装方式 一一次次性性组组装装方方式式的的基基本本思思想想是是首首先先分分别别测测试试每每个个模模块块,然然后后将将所有模块全部组装起来进行测试,形成最终的软件系统。所有模块全部组装起来进行测试,形成最终的软件系统。

209、 缺点:缺点: 一一次次将将所所有有模模块块组组装装后后的的程程序序会会很很庞庞大大,各各模模块块之之间间相相互互影影响响,情况十分复杂情况十分复杂 在在测测试试过过程程中中会会同同时时出出现现很很多多错错误误,对对这这些些错错误误的的定定位位难难度度增增大,修改的过程中可能又会引发其它错误或激发其它潜在的错误大,修改的过程中可能又会引发其它错误或激发其它潜在的错误 测试工作十分的漫长。测试工作十分的漫长。软件测试步骤软件测试步骤(2)增殖式组装方式)增殖式组装方式增增殖殖式式组组装装方方式式是是采采用用循循序序渐渐进进的的方方式式,每每次次增增加加一一个个模模块块到到已已测测试好的模块中试好

210、的模块中 1)自顶向下增殖方式自顶向下增殖方式具体的实施步骤如下:具体的实施步骤如下:先先测测试试主主控控制制模模块块,测测试试时时使使用用存存根根模模块块代代替替所所有有直直接接附附属属主主控控制模块的功能模块;制模块的功能模块;用某种结合策略,用实际模块代替相应的存根模块;用某种结合策略,用实际模块代替相应的存根模块;对结合后的模块进行测试;对结合后的模块进行测试;为了保证加入的模块没有引进新的错误,需要进行回归测试为了保证加入的模块没有引进新的错误,需要进行回归测试 重复操作重复操作2 2、3 3、4 4步,完成集成测试。步,完成集成测试。软件测试步骤软件测试步骤2、集成测试(2)增殖式

211、组装方式)增殖式组装方式2)自底向上增殖方式自底向上增殖方式具体的结合策略如下:具体的结合策略如下:将低层模块组合成实现某个子功能的簇;将低层模块组合成实现某个子功能的簇;写一个驱动程序,用来提供该功能簇的执行入口和输入写一个驱动程序,用来提供该功能簇的执行入口和输入/输出界面;输出界面;对该功能簇进行测试;对该功能簇进行测试;在在低低层层继继续续寻寻找找模模块块,将将该该功功能能簇簇扩扩大大,重重新新修修改改驱驱动动程程序序,以以适应对当前功能簇的测试。适应对当前功能簇的测试。不断重复第不断重复第3、4步,完成测试。步,完成测试。软件测试步骤软件测试步骤2、集成测试(3)混合增殖式测试混合增

212、殖式测试自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测自顶向下增殖方式和自底向上增殖方式各有优缺点,在实际的测试过程中,可根据具体情况将两种方法结合起来使用。试过程中,可根据具体情况将两种方法结合起来使用。1)改改进进的的自自顶顶向向下下的的增增殖殖测测试试:它它的的基基本本思思想想是是对对涉涉及及输输入入输输出出模模块块和和复复杂杂算算法法的的模模块块先先采采用用自自底底向向上上的的测测试试方方法法,将将这这些些模模块块组组装装成成为为功功能能相相对对完完整整且且相相对对独独立立的的子子系系统统,然然后后由由主主模模块块开开始始自自顶向下进行增殖测试。顶向下进行增殖测试。2)混混合

213、合测测试试法法:它它首首先先对对软软件件结结构构中中较较底底层层的的模模块块自自底底向向上上组组装装测测试试,然然后后对对软软件件结结构构中中较较上上层层的的模模块块采采用用自自顶顶向向下下的的方方法法进进行行组组装与测试。装与测试。软件测试步骤软件测试步骤3、确认测试确认测试 确认测试也称有效性测试,目的是验证软件的有效性,即验确认测试也称有效性测试,目的是验证软件的有效性,即验证软件的功能和性能及其它特性是否符合用户要求证软件的功能和性能及其它特性是否符合用户要求。确认测试是确认测试是软件交付使用前一项很重要的活动,它最终决定用户对该软件的软件交付使用前一项很重要的活动,它最终决定用户对该

214、软件的认可程度。认可程度。测试和测试和测试测试测测试试是是邀邀请请用用户户参参加加,在在开开发发场场地地进进行行的的测测试试,由由开开发发组组成成员员或或用用户户实实际际操操作作运运行行,对对测测试试过过程程中中出出现现的的问问题题,由由开开发发者者记记录下来,作为修改的依据。录下来,作为修改的依据。它的最大特点是整个测试过程是在受控环境下进行。它的最大特点是整个测试过程是在受控环境下进行。软件测试步骤软件测试步骤3、确认测试确认测试测试和测试和测试测试测测试试是是由由部部分分用用户户在在实实际际的的使使用用环环境境下下进进行行的的测测试试。测测试试过过程程中中开开发发者者不不在在现现场场,由

215、由用用户户独独立立操操作作,验验证证程程序序的的各各项项功功能能,用用户户发发现现的的问问题题全全部部记记录录下下来来,反反馈馈给给程程序序开开发发者者,开开发发者者对对软软件进行必要的修改,并准备最终的软件产品发布。件进行必要的修改,并准备最终的软件产品发布。测试的最大特点是实际的使用环境下进行的测试。测试的最大特点是实际的使用环境下进行的测试。确认测试的结果可分为两种情况:确认测试的结果可分为两种情况:测试结果与预期结果相符,程序的功能和性能满足用户需求;测试结果与预期结果相符,程序的功能和性能满足用户需求;测测试试结结果果与与预预期期结结果果不不相相符符,将将存存在在的的问问题题列列出出

216、清清单单,提提供供给给开发者作为修改依据。开发者作为修改依据。软件测试步骤软件测试步骤4、系统测试系统测试系统测试的任务主要有:测试软件系统是否能与硬件协调工作,系统测试的任务主要有:测试软件系统是否能与硬件协调工作,测试与其它软件协调运行的状况。测试与其它软件协调运行的状况。系统测试的系统测试的目的是充分运行系统,验证系统各部件是否都能正目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务。常工作并完成所赋予的任务。(1)恢复测试:)恢复测试:主要检查系统的容错能力。主要检查系统的容错能力。(2)安全测试:)安全测试:主要检查系统对非法侵入的防范能力。主要检查系统对非法侵入的

217、防范能力。(3)强度测试:)强度测试:主要检查程序在一些极限条件下的运行情况。主要检查程序在一些极限条件下的运行情况。(4)性能测试:)性能测试:主要检查系统是否满足需求说明书中规定的性能。主要检查系统是否满足需求说明书中规定的性能。(5)其其它它:版版本本间间的的兼兼容容性性测测试试、安安装装测测试试,最最终终提提交交的的文文档档测测试等试等。软件调试软件调试调试调试(debug,排错排错)调试功能是将在测试过程中出现的错误进一步的诊断并且改正调试功能是将在测试过程中出现的错误进一步的诊断并且改正程序中存在的潜在错误,保证软件运行的正确性和可靠性。程序中存在的潜在错误,保证软件运行的正确性和

218、可靠性。 软件调试活动主要分为以下两部分软件调试活动主要分为以下两部分: 确定程序中可疑错误的确切性质和位置。确定程序中可疑错误的确切性质和位置。 对程序的设计和编码进行修改,纠正当前错误。对程序的设计和编码进行修改,纠正当前错误。调试的过程如下:调试的过程如下: 确确定定出出错错原原因因-找找出出错错误误的的位位置置-排排除除这这个个错错误误-重重复复对对修修改改后后的的代代码码进进行行有有关关测测试试-修修正正无无效效或或是是引引入入了了新新的的错误,撤销此次改动或是修改新的错误。错误,撤销此次改动或是修改新的错误。 不断重复上述过程,直到找到一个有效的解决办法为止不断重复上述过程,直到找

219、到一个有效的解决办法为止软件调试软件调试调试方法调试方法1、原始法调试、原始法调试主要思想是通过分析运行程序时数据信息的变化情况查找错主要思想是通过分析运行程序时数据信息的变化情况查找错误原因误原因:(1)打印内存的全部数据)打印内存的全部数据(2)添加必要的打印语句)添加必要的打印语句(3)使用自动调试工具)使用自动调试工具 设置断点设置断点 单步执行单步执行软件调试软件调试调试方法调试方法2、回溯法调试、回溯法调试 回回溯溯调调试试的的方方法法是是从从出出现现错错误误征征兆兆处处开开始始,人人工工沿沿控控制制流流程程往往回追踪程序代码,直至发现出错的根源回追踪程序代码,直至发现出错的根源或

220、确定错误产生的范围或确定错误产生的范围。 适适用用于于较较小小程程序序,它它能能将将错错误误范范围围缩缩小小到到程程序序中中的的一一小小段段代代码码,使得定位错误相对容易;使得定位错误相对容易; 对于大程序,它回溯的路径可能很多,回溯会变得很困难。对于大程序,它回溯的路径可能很多,回溯会变得很困难。软件调试软件调试调试方法调试方法3、归纳法调试、归纳法调试 归纳法调试的基本思想是:从一些线索归纳法调试的基本思想是:从一些线索(错误征兆错误征兆)着手,着手,通过分析它们之间的关系来找出错误。通过分析它们之间的关系来找出错误。 具体实施步骤如下:具体实施步骤如下: 第一步:收集所有输出结果有错误的

221、测试用例和执行结果。第一步:收集所有输出结果有错误的测试用例和执行结果。 第二步:分析收集到的数据信息,以便发现规律或矛盾。第二步:分析收集到的数据信息,以便发现规律或矛盾。 第三步:导出假设。第三步:导出假设。 第四步:证明假设,无法证明后应重新假设。第四步:证明假设,无法证明后应重新假设。软件调试软件调试调试方法调试方法4、演绎法调试、演绎法调试 演绎法是一种从一般原理或前提出发,经过排除和精化的演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。过程来推导出结论的思考方法。5、对分法调试、对分法调试重复使用对半划分程序的方法,不断缩小出错范围,直到重复使用对半划

222、分程序的方法,不断缩小出错范围,直到将故障定位到容易诊断的程度。将故障定位到容易诊断的程度。第第8章章软件维护软件维护软件维护的概念软件维护的概念软件在投入使用之后,就进入维护阶段。软件维护软件在投入使用之后,就进入维护阶段。软件维护阶段是软件生命期中时间最长、花费精力和财力最多的阶段是软件生命期中时间最长、花费精力和财力最多的阶段。因为计算机程序总要变化:故障要排除,系统要阶段。因为计算机程序总要变化:故障要排除,系统要改进,要进行优化,版本要升级等。所以软件工程方法改进,要进行优化,版本要升级等。所以软件工程方法学的一个主要目的就是如何减少维护的总工作量。学的一个主要目的就是如何减少维护的

223、总工作量。软件维护的定义:在软件运行软件维护的定义:在软件运行/维护阶段对软件产品维护阶段对软件产品所进行的修改就是维护。所进行的修改就是维护。软件维护的概念软件维护的概念软件维护的内容很广泛,根据要求维护的原因,维护的活动可分为软件维护的内容很广泛,根据要求维护的原因,维护的活动可分为4种:种:1、改正性维护:、改正性维护:在软件测试过程中,没有发现的错误,带到维护阶段,在软件测试过程中,没有发现的错误,带到维护阶段,这些隐含的错误在某些特定的环境下会暴露出来。为识别和纠正这些错这些隐含的错误在某些特定的环境下会暴露出来。为识别和纠正这些错误,修改软件性能上的缺陷,进行的确定和修改错误的过程

224、称为改正性误,修改软件性能上的缺陷,进行的确定和修改错误的过程称为改正性维护。维护。2、适应性维护:、适应性维护:随着计算机的发展,计算机硬件和软件环境、数据环随着计算机的发展,计算机硬件和软件环境、数据环境都在不断地发生变化,为使软件适应这种变化而进行的软件修改过程境都在不断地发生变化,为使软件适应这种变化而进行的软件修改过程称为适应性维护。称为适应性维护。3、完善性维护:、完善性维护:在软件使用过程中,用户往往会对软件提出新的功能在软件使用过程中,用户往往会对软件提出新的功能要求与性能要求,为满足这些新的要求,扩充软件原有的功能、改善性要求与性能要求,为满足这些新的要求,扩充软件原有的功能

225、、改善性能而进行的软件维护活动称为完善性维护。能而进行的软件维护活动称为完善性维护。4、预防性维护:、预防性维护:为提高软件的可维护性和可靠性,为以后进一步改进为提高软件的可维护性和可靠性,为以后进一步改进软件奠定良好基础而对软件进行的修改称为预防性维护。软件奠定良好基础而对软件进行的修改称为预防性维护。软件维护的概念软件维护的概念4种维护的活动占总维护工作量的比例:种维护的活动占总维护工作量的比例:完善性维护完善性维护50%适应性适应性维护维护25%改正性改正性维护维护21%其它其它4%软件维护的特点软件维护的特点影响维护工作量的因素:影响维护工作量的因素:在软件维护过程中,工作量直接影响了

226、软件维护的成本。因在软件维护过程中,工作量直接影响了软件维护的成本。因此应当考虑有哪些因素影响软件维护的工作量,相应应该采取什此应当考虑有哪些因素影响软件维护的工作量,相应应该采取什么维护策略,才能有效地维护软件并控制维护的成本。么维护策略,才能有效地维护软件并控制维护的成本。影响软件维护的因素有以下几种:影响软件维护的因素有以下几种:1)软件配置是否完整是影响维护工作量的重要因素)软件配置是否完整是影响维护工作量的重要因素;2)修改别人的程序增加了维护的难度;)修改别人的程序增加了维护的难度;3)文档不全的软件,增加了修改后测试的工作量;)文档不全的软件,增加了修改后测试的工作量;4)软件结

227、构的不合理,增加了软件修改的困难;)软件结构的不合理,增加了软件修改的困难;5)软件经过多个版本的演化,很难追踪修改的过程;)软件经过多个版本的演化,很难追踪修改的过程;6)软件维护经常受挫,降低了该项工作的吸引力。)软件维护经常受挫,降低了该项工作的吸引力。软件维护的特点软件维护的特点维护的代价高昂维护的代价高昂:软件的维护代价分为有形的代价和无形的代价软件的维护代价分为有形的代价和无形的代价有形的维护代价是指维护费用的数目有形的维护代价是指维护费用的数目无形的代价,包括无形的代价,包括在软件维护过程中,引入潜伏的错误,造成软件质量下降;在软件维护过程中,引入潜伏的错误,造成软件质量下降;实

228、施维护占用的一些资源,影响到其它开发工作的进行;实施维护占用的一些资源,影响到其它开发工作的进行;软软件件维维护护中中部部分分工工作作没没有有满满足足用用户户认认为为合合理理的的需需求求,引引起起用用户的不满等。户的不满等。软件维护的特点软件维护的特点维护工作量的一个模型:维护工作量的一个模型:MP十十Ke(cd)M是维护工作总量是维护工作总量P是生产性工作量是生产性工作量K是经验常数是经验常数c是软件复杂程度是软件复杂程度(非结构化设计和缺少文档都会增加软件非结构化设计和缺少文档都会增加软件的复杂程度的复杂程度)d是维护人员对软件的熟悉程度。是维护人员对软件的熟悉程度。以以上上模模型型表表明

229、明,如如果果软软件件开开发发途途径径不不当当,原原开开发发人人员员不不参参加加维护工作,都将使维护工作量呈指数级增加。维护工作,都将使维护工作量呈指数级增加。软件维护的特点软件维护的特点 软件的开发过程对软件的维护有较大的影响软件的开发过程对软件的维护有较大的影响:1、非结构化维护:、非结构化维护:由于只有源程序,而文档很少或没有文档,维由于只有源程序,而文档很少或没有文档,维护工作只能从阅读、理解、分析源程序入手,通过阅读源程序了解护工作只能从阅读、理解、分析源程序入手,通过阅读源程序了解系统功能、软件结构、数据结构、系统接口等,这样非常困难,很系统功能、软件结构、数据结构、系统接口等,这样

230、非常困难,很多问题难以搞清楚,要想搞清楚需花费大量的人力、物力,由于常多问题难以搞清楚,要想搞清楚需花费大量的人力、物力,由于常常误解一些问题,最终对源程序的修改的后果是难以预料的。常误解一些问题,最终对源程序的修改的后果是难以预料的。2、结构化维护:、结构化维护:进行维护进行维护活动时,首先从评价需求开始,搞清楚活动时,首先从评价需求开始,搞清楚功能、性能上的改变,然后对设计说明文档进行评价、修改和复查;功能、性能上的改变,然后对设计说明文档进行评价、修改和复查;根据设计的修改,再进行程序的变动;然后根据测试文档中的测试根据设计的修改,再进行程序的变动;然后根据测试文档中的测试用例进行回归测

231、试;最后将修改后的软件再次交付使用。用例进行回归测试;最后将修改后的软件再次交付使用。 软件维护步骤软件维护步骤第一步:软件维护申请报告第一步:软件维护申请报告 为了有效地进行软件维护,应在维护前先做组织工作,建立维护为了有效地进行软件维护,应在维护前先做组织工作,建立维护机构,申明提出维护申请报告的过程和评价的过程;为每一个维护机构,申明提出维护申请报告的过程和评价的过程;为每一个维护申请规定标准的处理步骤;同时还必须建立维护活动的登记制度以申请规定标准的处理步骤;同时还必须建立维护活动的登记制度以及规定评价和评审的标准。及规定评价和评审的标准。维护管理员修改批准主管人员 维护要求系统管理员

232、系统管理员系统管理员维护机构软件维护步骤软件维护步骤第二步:维护工作的实施第二步:维护工作的实施软件维护工作流程:软件维护工作流程:维护类型评价错误维护类型评价优先次序安排改正性维护开始问题分析开始分析将安排好的开发工作量列入目录将错误改正列入目录维护实施复审改正性适应性完善性维护请求严重不严重低分派人员分派人员修改过的软件通过并交付使用的软件测试*软件维护步骤软件维护步骤源程序修改的步骤:源程序修改的步骤:1、分析和理解程序:可采用如下方法、分析和理解程序:可采用如下方法1)分析程序结构图;)分析程序结构图;2)跟踪数据;)跟踪数据;3)控制跟踪;)控制跟踪;4)充分阅读和源程序清单和文档,

233、分析现有文档的合理性;)充分阅读和源程序清单和文档,分析现有文档的合理性;5)充分使用由编译程序或汇编程序提供的交叉引用表、符号)充分使用由编译程序或汇编程序提供的交叉引用表、符号表及其它信息;表及其它信息;软件维护步骤软件维护步骤2、设计程序的修改计划、设计程序的修改计划一方面:考虑对人员和资源的安排一方面:考虑对人员和资源的安排另一方面:需要根据修改的内容及受到修改影响的内容设另一方面:需要根据修改的内容及受到修改影响的内容设计修改方案计修改方案包括:包括:研究程序的各个模块、模块接口及数据库等,按全局观点研究程序的各个模块、模块接口及数据库等,按全局观点提出修改计划;提出修改计划;依次将

234、要修改的、以及受修改影响的模块和数据结构分离依次将要修改的、以及受修改影响的模块和数据结构分离出来;出来;详细分析将要修改的、以及受修改影响的模块和数据结构详细分析将要修改的、以及受修改影响的模块和数据结构的内部细节,标明新逻辑及要修改的现有逻辑;的内部细节,标明新逻辑及要修改的现有逻辑;软件维护步骤软件维护步骤3、修改代码,以适应变化。、修改代码,以适应变化。修改时应遵循原则:修改时应遵循原则:正正确确、有有效效、谨谨慎慎地地修修改改程程序序代代码码,尽尽量量保保持持程程序序的原有风格;的原有风格;修修改改过过程程中中,要要随随时时保保存存前前一一次次调调试试正正确确的的源源程程序序代码;代

235、码;保保持持详详细细的的维维护护活活动动和和维维护护结结果果记记录录,保保证证维维护护工工作的可追踪性;作的可追踪性;如如果果修修改改较较大大,程程序序原原有有架架构构不不符符合合要要求求,可可抛抛弃弃原有程序重新编写。原有程序重新编写。软件维护步骤软件维护步骤4、修改程序的副作用、修改程序的副作用副作用是指因修改软件而造成的错误或其它不希望发生的情况。副作用是指因修改软件而造成的错误或其它不希望发生的情况。1)编码副作用:在使用程序设计语言修改源代码时可能引起的错误,)编码副作用:在使用程序设计语言修改源代码时可能引起的错误,如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系,

236、如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系,改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都很改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都很容易引入错误,应特别小心。容易引入错误,应特别小心。2)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如重的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如重新定义全局或局部常量,重新初始化控制标志或指针等,都容易产生设计与新定义全局或局部常量,重新初始

237、化控制标志或指针等,都容易产生设计与数据不相容的错误,可通过详细设计文档对数据副作用加以控制。数据不相容的错误,可通过详细设计文档对数据副作用加以控制。3)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须对相关技术文档进行修改,否则会导致对相关技术文档进行修改,否则会导致文档与程序功能不匹配,使文档不文档与程序功能不匹配,使文档不能反映软件当前的状态。能反映软件当前的状态。软件维护步骤软件维护步骤5、重新验证程序:、重新验证程序:1)静态确认;)静态确认;2)计算机确认;)计算机确认;3)维护后的验收。)维护后的验收。软件维

238、护步骤软件维护步骤第三步:第三步:维护文档整理维护文档整理记录一些与维护工作有关的数据信息,这些信息记录一些与维护工作有关的数据信息,这些信息可作为估计软件维护的有效程度,确定软件产品的可作为估计软件维护的有效程度,确定软件产品的质量,确定维护的实际开销等工作的原始数据。质量,确定维护的实际开销等工作的原始数据。 软件维护步骤软件维护步骤第四步:第四步:维护活动评价维护活动评价具体的评价工作可从以下几个方面考虑:具体的评价工作可从以下几个方面考虑:(1)每次程序运行时的平均出错次数;)每次程序运行时的平均出错次数;(2)花费在每类维护活动上的总的)花费在每类维护活动上的总的“人时人时”数;数;

239、(3)每个程序、每种语言、每种维护类型程序的平均修改次数;)每个程序、每种语言、每种维护类型程序的平均修改次数;(4)维维护护工工作作中中增增加加或或删删除除每每个个源源程程序序语语句句所所花花费费的的平平均均“人人时时”数;数;(5)用于每种语言的平均)用于每种语言的平均“人时人时”数;数;(6)维护申请报告的平均处理时间;)维护申请报告的平均处理时间;(7)各类维护申请的百分比。)各类维护申请的百分比。一一方方面面,可可判判定定此此次次维维护护活活动动开开展展是是否否顺顺利利、成成功功;另另一一方方面面,为今面的维护工作积累经验。为今面的维护工作积累经验。软件可维护性软件可维护性软件可维护

240、性的定义:软件可维护性的定义:软件能够被理解、修改、压缩、扩充功能的容易程度。软件能够被理解、修改、压缩、扩充功能的容易程度。软件可维护性是软件开发阶段的关键目标。影响软件可维软件可维护性是软件开发阶段的关键目标。影响软件可维护性的因素很多,设计、编码及测试中的疏忽和低劣的软件配护性的因素很多,设计、编码及测试中的疏忽和低劣的软件配置、缺少文档等都会对软件的可维护性带来不良影响。软件的置、缺少文档等都会对软件的可维护性带来不良影响。软件的可维护性可用七个质量特性来衡量,对于不同的维护类型,这可维护性可用七个质量特性来衡量,对于不同的维护类型,这七种特性的侧重点也不同。七种特性的侧重点也不同。软

241、件可维护性软件可维护性改正性维护改正性维护适应性维护适应性维护完善性维护完善性维护可理解性可理解性可测试性可测试性可修改性可修改性可可靠靠性性可移植性可移植性可使用性可使用性效效率率影响软件可维护性的七个质量特性及这些质量特性在影响软件可维护性的七个质量特性及这些质量特性在各类维护中的侧重点各类维护中的侧重点软件可维护性软件可维护性提高软件可维护性的方法:提高软件可维护性的方法:提高软件可维护性,可从以下三个方面着手:提高软件可维护性,可从以下三个方面着手:1)建立明确的软件质量目标;)建立明确的软件质量目标;2)选择可维护的程序设计语言;)选择可维护的程序设计语言;3)采用结构化技术提高软件

242、质量)采用结构化技术提高软件质量;软件可维护性软件可维护性提高软件可维护性的方法:提高软件可维护性的方法:提高软件可维护性,可从以下五个方面提高软件可维护性,可从以下五个方面着手:着手: 1)建立明确的软件质量目标;)建立明确的软件质量目标;2)选择可维护的程序设计语言;)选择可维护的程序设计语言;3)采用结构化技术提高软件质量)采用结构化技术提高软件质量;若要使程序满足可维护性若要使程序满足可维护性的七个特性的全部要求是的七个特性的全部要求是不现实的,为保证可维护不现实的,为保证可维护性应在一定程度上满足可性应在一定程度上满足可维护性的各个特性,各个维护性的各个特性,各个特性的重要性也应随着

243、程特性的重要性也应随着程序用途的不同或计算机环序用途的不同或计算机环境的不同而改变。境的不同而改变。 软件可维护性软件可维护性提高软件可维护性的方法:提高软件可维护性的方法:提高软件可维护性,可从以下三个方面提高软件可维护性,可从以下三个方面着手:着手: 1)建立明确的软件质量目标;)建立明确的软件质量目标;2)选择可维护的程序设计语言;)选择可维护的程序设计语言;3)采用结构化技术提高软件质量)采用结构化技术提高软件质量;第第4代语言,如查询语代语言,如查询语言、图形语言、报表生言、图形语言、报表生成语言、非常高级语言成语言、非常高级语言等,易使用,易理解,等,易使用,易理解,易修改,可维护

244、性好。易修改,可维护性好。图软件可维护性软件可维护性提高软件可维护性的方法:提高软件可维护性的方法:提高软件可维护性,可从以下三个方面提高软件可维护性,可从以下三个方面着手:着手: 1)建立明确的软件质量目标;)建立明确的软件质量目标;2)选择可维护的程序设计语言;)选择可维护的程序设计语言;3)采用结构化技术提高软件质量)采用结构化技术提高软件质量;模块化模块化结构化程序设计结构化程序设计整整理理完完备备的的文文档档资资料料:包包括括系系统统开开发发日日志志、错错误误记记载载、系系统统维维护护日日志志、测试文档测试文档软件可维护性软件可维护性高低第一代第一代语言语言第二代第二代语言语言第三代

245、第三代语言语言第四代第四代语言语言机器语言机器语言汇编语言汇编语言高级语言高级语言FORTRANCOBOLC查询语言、报表生成语言、查询语言、报表生成语言、图象语言、应用生成语言图象语言、应用生成语言可维护性可维护性程序设计语言对可维护性的影响程序设计语言对可维护性的影响返回逆向工程与再工程逆向工程与再工程什么是预防性维护什么是预防性维护预防性维护工作主要针对一些多年前开发出来的预防性维护工作主要针对一些多年前开发出来的“较老较老”的软件,这些软件的功能仍然能够满足人们的某的软件,这些软件的功能仍然能够满足人们的某些需求,但是,由于这些软件所采用的体系结构或数据些需求,但是,由于这些软件所采用

246、的体系结构或数据结构等方面较差,用户在使用时存在一定困难,因此,结构等方面较差,用户在使用时存在一定困难,因此,需要对软件进行全面修改,以适应用户需求。需要对软件进行全面修改,以适应用户需求。逆向工程与再生工程是目前预防性维护采用的主要逆向工程与再生工程是目前预防性维护采用的主要技术。技术。逆向工程与再工程逆向工程与再工程什么是逆向工程什么是逆向工程所所谓谓软软件件的的逆逆向向工工程程就就是是分分析析已已有有的的程程序序,寻寻求求比比源源代代码码更更高高级级的的抽抽象象表表现现形形式式。逆逆向向工工程程是是对对原原有有设设计计恢恢复复的的过过程程,使使用用逆逆向向工工程程工工具具可可以以从从已

247、已存存在在的的程程序序中中抽抽取取数数据结构、体系结构及各种有用的程序设计信息。据结构、体系结构及各种有用的程序设计信息。什么是再工程什么是再工程再再工工程程是是在在获获得得程程序序设设计计信信息息的的同同时时,利利用用这这些些信信息息修修改改或或重重构构软软件件系系统统的的工工作作。根根据据用用户户的的需需求求,软软件件人人员员利利用用再再工工程程重重新新实实现现已已有有程程序序,同同时时增增加加新新的的功功能能或或改改进进性能。性能。第9章 面向对象方法学面向对象的基本概念和特性面向对象的基本概念和特性面向对象分析面向对象分析面向对象设计面向对象设计几种流行的面向对象方法几种流行的面向对象

248、方法统一建模语言统一建模语言UML面向对象实现面向对象实现面向对象方法学的引入面向对象方法学的引入面向对象概述面向对象概述面向对象的思想最初出现于挪威奥斯陆大学和挪威计算中心共同研面向对象的思想最初出现于挪威奥斯陆大学和挪威计算中心共同研制的制的Simula67语言中。其后,随着位于美国加利福尼亚的语言中。其后,随着位于美国加利福尼亚的Xerox研究研究中心推出的中心推出的Smalltalk一一76和和80语言,面向对象的程序设计方法得到语言,面向对象的程序设计方法得到比较完善的实现,由此面向对象的方法得到迅猛的发展。比较完善的实现,由此面向对象的方法得到迅猛的发展。面面向向对对象象是是当当前

249、前计计算算机机界界关关心心的的重重点点,它它是是90年年代代软软件件开开发发方方法法的的主主流流。面面向向对对象象的的概概念念和和应应用用已已超超越越了了程程序序设设计计和和软软件件开开发发,扩扩展展到到很很宽宽的的范范围围。如如数数据据库库系系统统、交交互互式式界界面面、应应用用结结构构、应应用用平平台台、分分布布式式系系统统、网网络络管管理理结结构构、CAD技技术术、人人工工智智能能等等领领域域。一一些些新新的的工工程程概概念念及及其其实实现现,如如并并行行工工程程、综综合合集集成成工工程程等等也也需需要要面面向向对对象象的的支支持持。所所以以面面向向对对象象是是程程序序设设计计的的新新风

250、风范范,它它是是软软件件开开发发的的一一种种新新的的方方法法、技技术。术。面向对象方法学的引入面向对象方法学的引入传统开发方法存在的问题:传统开发方法存在的问题:1、软件重用性差:、软件重用性差:重用性是指同一事物不经修改或稍加修改就可多次重复使重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一,也是节约用的性质。软件重用性是软件工程追求的目标之一,也是节约费用、减少人员、提高软件生产率的重要途径。传统的开发方费用、减少人员、提高软件生产率的重要途径。传统的开发方法,例如结构化方法等,虽然给软件产业带来巨大进步,但是法,例如结构化方法等,虽然给软件产

251、业带来巨大进步,但是并没有解决软件重用的问题。同类型的项目,只要需求有一些并没有解决软件重用的问题。同类型的项目,只要需求有一些变化,都要从头开始,原来的系统很难重用。变化,都要从头开始,原来的系统很难重用。面向对象方法学的引入面向对象方法学的引入传统开发方法存在的问题:传统开发方法存在的问题:2、软件可维护性差:、软件可维护性差:软件工程强调软件的可维护性,强调文档资料的重要性,软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修改性和可测试性件开

252、发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。但是实践证明,用传统方法开发出是软件的重要的质量指标。但是实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。差,维护困难,导致可维护性差。面向对象方法学的引入面向对象方法学的引入传统开发方法存在的问题:传统开发方法存在的问题:3、开发出的软件不能满足用户需要:、开发出的软件不能满足用户需要:用传统的结构化方法开发大型软件系统涉及各种不同领域用传统的结构化方法开发大型软件系统涉及各种不同领域知识,在开发需求模糊

253、或需求动态变化的系统时,所开发出的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。资料显示,在美目开软件系统往往不能真正满足用户的需要。资料显示,在美目开发出来的软件系统中,真正符合用户需要并顺利投入使用的系发出来的软件系统中,真正符合用户需要并顺利投入使用的系统仅占总数的统仅占总数的14左右,另外有左右,另外有14左右的系统在开发期间中左右的系统在开发期间中途夭折,剩下的一半虽然完成了开发过程,但并未被用户采用途夭折,剩下的一半虽然完成了开发过程,但并未被用户采用或并未被长期使用。或并未被长期使用。面向对象方法学的引入面向对象方法学的引入传统开发方法

254、存在的问题:传统开发方法存在的问题:3、开发出的软件不能满足用户需要:、开发出的软件不能满足用户需要:其原因是开发人员不能完全获得或不能彻底理解用户的要其原因是开发人员不能完全获得或不能彻底理解用户的要求,以致开发出的软件系统与用户预期的系统不一致,不能满求,以致开发出的软件系统与用户预期的系统不一致,不能满足用户的需要。另一种原因是所开发的软件系统不能适应用户足用户的需要。另一种原因是所开发的软件系统不能适应用户经常变化的情况,系统的稳定性和可扩充性不能满足用户的要经常变化的情况,系统的稳定性和可扩充性不能满足用户的要求。求。 面向对象方法学的引入面向对象方法学的引入传统开发方法存在的问题的

255、原因:传统开发方法存在的问题的原因:用用结结构构化化方方法法开开发发的的软软件件,其其稳稳定定性性、可可修修改改性性和和可可重重用用性性都都比比较较差差,这这是是因因为为结结构构化化方方法法的的本本质质是是功功能能分分解解,从从代代表表目目标标系系统统整整体体功功能能的的单单个个处处理理着着手手,自自顶顶向向下下不不断断把把复复杂杂的的处处理理分分解解为为子子处处理理,这这样样一一层层一一层层的的分分解解下下去去,直直到到仅仅剩剩下下若若干干个个容容易易实实现现的的子子处处理理为为止止,然然后后用用相相应应的的工工具具来来描描述述各各个个最最低低层层的的处处理理。因因此此,结结构构化化方方法法

256、是是围围绕绕实实现现处处理理功功能能的的“过过程程”来来构构造造系系统统的的。然然而而,用用户户需需求求的的变变化化大大部部分分是是针针对对功功能能的的,因因此此,这这种种变变化化对对于于基基于于过过程程的的设设计计来来说说是是灾灾难难性性的的。用用这这种种方方法法设设汁汁出出来来的的系系统统结结构构常常常常是是不不稳稳定定的的,用用户户需需求求的的变变化化往往往往造造成成系系统结构的较大变化,从而需要花费很大代价才能实现这种变化。统结构的较大变化,从而需要花费很大代价才能实现这种变化。面向对象方法学的引入面向对象方法学的引入OOAD大部分情况下比结构化设计好:大部分情况下比结构化设计好:结构

257、化设计,它强调软件的结构按照功能来组织,一结构化设计,它强调软件的结构按照功能来组织,一旦功能改变,软件的结构就会不稳定。旦功能改变,软件的结构就会不稳定。而而OO设计把数据流和功能统一起来,设计把数据流和功能统一起来,IT行业绝大部分行业绝大部分(70-80%)的软件设计(包括数据库设计)可以采用)的软件设计(包括数据库设计)可以采用OO方法,目前国外流行的趋势也是这样,剩下的少部分有方法,目前国外流行的趋势也是这样,剩下的少部分有特定需求的可能还会用传统方法。特定需求的可能还会用传统方法。另外在电信界,用有限自动状态机的另外在电信界,用有限自动状态机的SDL方法仍占绝大方法仍占绝大数,但现

258、在数,但现在UML和和SDL出现了融合的趋势。出现了融合的趋势。什么是面向对象:什么是面向对象:如果一个软件系统是使用以上如果一个软件系统是使用以上4个概念设计和实现的,则个概念设计和实现的,则认为,这个系统是面向对象的。认为,这个系统是面向对象的。面向对象的程序的基本成分是对象,通过建立对象和对象面向对象的程序的基本成分是对象,通过建立对象和对象之间的通信执行计算。之间的通信执行计算。面向对象面向对象=对象对象+类类+继承继承+通信通信面向对象的基本概念和特性面向对象的基本概念对象对象:是人们要进行研究的任何事物。不仅能表示具体的事物,还是人们要进行研究的任何事物。不仅能表示具体的事物,还能

259、表示抽象的规则、计划或事件。对象类型有以下几种:能表示抽象的规则、计划或事件。对象类型有以下几种:有有形形实实体体:指指一一切切看看得得到到、摸摸得得着着的的实实物物。有有形形实实体体是是最最容容易易识别的对象。识别的对象。作作用用。指指人人或或组组织织所所起起的的作作用用,如如医医生生、教教师师、学学生生、工工人人、公司、部门等。公司、部门等。事件。在特定时间所发生的事,如飞行、演出、事故、开会等。事件。在特定时间所发生的事,如飞行、演出、事故、开会等。性性能能说说明明。厂厂商商对对产产品品的的性性能能的的说说明明,如如产产品品名名字字、型型号号,各各种性能指标等。种性能指标等。对对象象不不

260、仅仅能能表表示示结结构构化化的的数数据据,而而且且能能表表示示抽抽象象的的事事件件、规规则则以及复杂的工程实体。因此,对象具有很强的表达能力和描述功能。以及复杂的工程实体。因此,对象具有很强的表达能力和描述功能。面向对象的基本概念(2)对象的状态和行为:对象的状态和行为:对对象象具具有有状状态态。一一个个对对象象用用数数据据值值来来描描述述它它的的状状态态,如如某某个个具具体体的的学学生生张张三三,他他的的姓姓名名、年年龄龄、性性别别、家家庭庭地地址址、学学历历、所所在在学学校校等等,用这些数据值来表示这个具体的学生的情况。用这些数据值来表示这个具体的学生的情况。对对象象还还有有操操作作,用用

261、于于改改变变对对象象的的状状态态,对对象象及及其其操操作作就就是是对对象象的的行行为。如某个工人经过为。如某个工人经过“增加工资增加工资”的操作后,他的工资额就发生变化。的操作后,他的工资额就发生变化。对对象象实实现现了了数数据据和和操操作作的的结结合合,使使数数据据和和操操作作封封装装于于对对象象的的统统一一体体中中。对对象象内内的的数数据据具具有有自自己己的的操操作作,从从而而可可灵灵活活地地专专门门描描述述对对象象的的独独特特行行为为,具具有有较较强强的的独独立立性性和和自自治治性性,其其内内部部状状态态不不受受或或很很少少受受外外界界的的影影响,具有很好的模块化特点。为软件重用奠定了坚

262、实的基础。响,具有很好的模块化特点。为软件重用奠定了坚实的基础。面向对象的基本概念(3)类:类:具有相同或相似性质的对象的抽象就是类。因此,对象的具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类类具具有有操操作作,它它是是对对象象的的行行为为的的抽抽象象,用用操操作作名名和和实实现现该该操操作作的的方方法来描述。法来描述。例例如如:人人、教教师师、学学生生、公公司司

263、、长长方方形形、工工厂厂、窗窗口口等等都都是是类类的的例例子子。每每个个人人都都有有年年龄龄、性性别别、名名字字、正正在在从从事事的的工工作作,这这些些就就是是人人这这个个类类的的属属性性。而而“画画长长方方形形”、“显显示示长长方方形形”则则是是长长方方形形这这个个类类具具有的操作。有的操作。(4)类的结构:类的结构:在客观世界中有若干类,这些类之间有一定的结构关系。在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系即一般通常有两种主要的结构关系即一般具体结构关系,整体具体结构关系,整体部分结部分结构关系。构关系。一一般般具具体体结结构构称称为为分分类类结结构构,也也

264、可可以以说说是是“或或”关关系系,或或者者是是“isa”关关系系。例例如如,汽汽车车和和交交通通工工具具都都是是类类。它它们们之之间间的的关关系系是是一一种种“或或”关关系系,汽汽车车“是是一一种种”交交通通工工具具“。类类的的这这种种层层次次结结构构可可用用来来描描述述现现实实世世界界中中的的一一般般化化的的抽抽象象关关系系,通通常常越越在在上上层层的的类类越越具具有有一一般般性性和和共性,越在下层的类越具体、越细化。共性,越在下层的类越具体、越细化。整整体体部部分分结结构构称称为为组组装装结结构构,它它们们之之间间的的关关系系是是一一种种“与与”关关系系,或或者者是是“hasa”关关系系。

265、例例如如,汽汽车车和和发发动动机机都都是是类类,它它们们之之间间是是一一种种“与与”关关系系,汽汽车车“有有一一个个”发发动动机机。类类的的这这种种层层次次关关系系可可用用来来描描述述现现实实世世界界中中的的类类的的组组成成的的抽抽象象关关系系。上上层层的的类类具具有有整整体体性性,下下层层的的类类具具有成员性。有成员性。在类的层次结构中,通常上层类称为父类或超类,下层类称为子类。在类的层次结构中,通常上层类称为父类或超类,下层类称为子类。面向对象的基本概念(5)消息和方法。消息和方法。对对象象之之间间进进行行通通信信的的构构造造叫叫做做消消息息。在在对对象象的的操操作作中中,当当一一个个消消

266、息息发发送送给给某某个个对对象象时时消消息息包包含含接接收收对对象象去去执执行行某某种种操操作作的的信信息息。接接收收消消息息的的对对象象经经过过解解释释,然然后后给给予予响响应应。这这种种通通信信机机制制称称为为消消息息传传递递。发发送送一一条条消消息息至至少少要要包包含含说说明明接接收收消消息息的的对对象象名名、发发送送给给该该对对象象的的消消息息名名(即即对对象象名名方方法法名名),一一般般还还要要对对参参数数加加以以说说明明,参参数数可可以以是是认认识识该该消消息息的的对象所知道的变量名,或者是所有对象都知道的全局变量名。对象所知道的变量名,或者是所有对象都知道的全局变量名。类类中中操

267、操作作的的实实现现过过程程叫叫做做方方法法,一一个个方方法法有有方方法法名名、参参数数,方方法法体体。当当一一个个对对象象接接收收条条消消息息后后,它它所所包包含含的的方方法法决决定定对对象象怎怎样样动动作作。方方法法也也可可以以发发送送消消息息给给其其他他对对象象,请请求求执执行行某某一一动动作作或或提提供供信信息息。由由于于对对象象的的内内部部对对用用户户是是密密封封的的,所所以以消消息息只只是是对对象象同同外外部部世世界界连连接接的的管管道道。对象内部的数据只能被自己的方法所操纵。对象内部的数据只能被自己的方法所操纵。面向对象的基本概念面向对象的概念:面向对象的概念:对象和类之间的对象和

268、类之间的关系及消息传递关系及消息传递面向对象的基本概念方方法法体体属性:姓名属性:姓名年龄年龄单位单位职称职称工资工资状态:李文状态:李文25计算机系计算机系讲师讲师300操作:调工资操作:调工资评职称评职称受受聘聘行为:调工资行为:调工资评职称评职称受受聘聘方法:调工资方法:调工资计算公式计算公式评职称评职称方法步骤方法步骤李文李文调工资(调工资()数数据据结结构构方法名(参方法名(参数数)类:教师类:教师对象:李文对象:李文抽象抽象实例实例抽象抽象抽象抽象数数据据值值执行的操作执行的操作人事处向对象发消息人事处向对象发消息(1)封装性封装性(信息隐蔽信息隐蔽)。封封装装性性是是保保证证软软

269、件件部部件件具具有有优优良良的的模模块块性性的的基基础础。封封装装性性是是指指所所有有软软件件部部件件内内部部都都有有明明确确的的范范围围以以及及清清楚楚的的外外部部边边界界。每每个个软软件件部部件件都都有有友好的界面接口,软件部件的内部实现与外部可访问性分离。友好的界面接口,软件部件的内部实现与外部可访问性分离。面面向向对对象象的的类类是是封封装装良良好好的的模模块块,类类定定义义将将其其说说明明(用用户户可可见见的的外外部部接接口口)与与实实现现(用用户户不不可可见见的的内内部部实实现现)显显式式地地分分开开,其其内内部部实实现现按按其其具具体体定义的作用域提供保护。定义的作用域提供保护。

270、对对象象是是封封装装的的最最基基本本单单位位。在在用用面面向向对对象象的的方方法法解解决决实实际际问问题题时时,要要创创建建类类的的实实例例,即即建建立立对对象象,除除了了应应具具有有的的共共性性外外,还还应应定定义义仅仅由由该该对对象所私有的特性。因此,对象封装比类的封装更具体、更细致。象所私有的特性。因此,对象封装比类的封装更具体、更细致。封封装装防防止止了了程程序序相相互互依依赖赖性性而而带带来来的的变变动动影影响响。面面向向对对象象的的封封装装比比传传统语言的封装更为清晰、更为有力。统语言的封装更为清晰、更为有力。面向对象的基本特性(2)继承性。)继承性。继继承承性性是是子子类类自自动

271、动共共享享父父类类数数据据结结构构和和方方法法的的机机制制,这这是是类类之之间间的的一一种种关关系系。在在定定义义和和实实现现一一个个类类的的时时候候,可可以以在在一一个个已已经经存存在在的的类类的的基基础础之之上上来来进进行行,把把这这个个已已经经存存在在的的类类所所定定义义的的内内容容做做为为自自己的内容,并加入若干新的内容。己的内容,并加入若干新的内容。继继承承性性是是面面向向对对象象程程序序设设计计语语言言不不同同于于其其他他语语言言的的最最主主要要的的特特点点,是其他语言所没有的。是其他语言所没有的。在在类类层层次次中中,子子类类只只继继承承一一个个父父类类的的数数据据结结构构和和方

272、方法法,则则称称为为单单重继承。重继承。在在类类层层次次中中,子子类类继继承承了了多多个个父父类类的的数数据据结结构构和和方方法法则则称称为为多多重继承。重继承。面向对象的基本特性(2)继承性。)继承性。在在软软件件开开发发中中,类类的的继继承承性性使使所所建建立立的的软软件件具具有有开开放放性性、可可扩扩充充性性,这这是是信信息息组组织织与与分分类类的的行行之之有有效效的的方方法法,它它简简化化了了对对象象、类类的创建工作量,增加了代码的可重用性。的创建工作量,增加了代码的可重用性。采采用用继继承承性性,提提供供了了类类的的规规范范的的等等级级结结构构。对对单单重重继继承承,可可用用树树结结

273、构构来来描描述述;对对多多重重继继承承,可可用用图图结结构构来来描描述述。通通过过类类的的继继承承关关系系,使使公公共共的的特特性性能能够够共共享享,提提高高了了软软件件的的重重用用性性。首首先先进进行行共共同同特特性性的的设设计计和和验验证证,然然后后自自顶顶向向下下来来开开发发,逐逐步步加加入入新新的的内内容容,符符合合逐逐步细化的原则。通过继承,便于实现多态性。步细化的原则。通过继承,便于实现多态性。面向对象的基本特性(3)多态性多态性(多形性多形性)多多态态性性是是指指相相同同的的操操作作或或函函数数、过过程程可可作作用用于于多多种种类类型型的的对对象象上上并并获获得得不不同同结结果果

274、。不不同同的的对对象象,收收到到同同一一消消息息可可以以产产生生不不同同的的结结果,这种现象称为多态性。果,这种现象称为多态性。多多态态性性允允许许每每个个对对象象以以适适合合自自身身的的方方式式去去响响应应共共同同的的消消息息。这这样样就就增增强强了了操操作作的的透透明明性性、可可理理解解性性和和可可维维护护性性。用用户户不不必必费费心心识识别相同的功能操作但作用于不同类型的对象。别相同的功能操作但作用于不同类型的对象。多多态态性性增增强强了了软软件件的的灵灵活活性性和和重重用用性性。允允许许使使用用更更为为明明确确、易易懂懂的的方方式式去去建建立立通通用用软软件件。多多态态性性与与继继承承

275、性性相相结结合合使使软软件件具具有有更更广广泛的重用性和可扩充性。泛的重用性和可扩充性。面向对象的基本特性面向对象开发过程的应用生存期模型面向对象开发过程的应用生存期模型信息系信息系统描述统描述论域论域分析分析应用应用分析分析高层高层设计设计类类开发开发实例实例建立建立组装组装测试测试维护维护客户输入客户输入面向对象技术OOA:用面向对象方法分析问题域,建立基于对象、消息的业务模型,用面向对象方法分析问题域,建立基于对象、消息的业务模型,形成对客观世界和业务本身的正确认识。形成对客观世界和业务本身的正确认识。生成业务对象的动、静态模型和抽象类。生成业务对象的动、静态模型和抽象类。OOD:针对针

276、对OOA给出的问题域模型,用面向对象方法设计出软件基础给出的问题域模型,用面向对象方法设计出软件基础架构(概要设计)和完整的类结构(详细设计),以实现业务架构(概要设计)和完整的类结构(详细设计),以实现业务功能。功能。生成对象类的动、静态模型(解决域)。生成对象类的动、静态模型(解决域)。OOP:用面向对象的语言实现用面向对象的语言实现OOD提出的模型。提出的模型。面向对象技术面向对象软件开发过程一般分为三个阶段:面向对象软件开发过程一般分为三个阶段:首先是面向对象的分析首先是面向对象的分析(OOA),它的任务是了解问,它的任务是了解问题域内该问题所涉及的对象和对象间的关系,建立问题域内该问

277、题所涉及的对象和对象间的关系,建立问题模型。然后进行面向对象的设计题模型。然后进行面向对象的设计(OOD),它的任务是,它的任务是调整、完善和充实由调整、完善和充实由OOA建立的模型。最后是面向对建立的模型。最后是面向对象的程序设计象的程序设计(OOP),它的任务是用面向对象的语言实,它的任务是用面向对象的语言实现现OOD提出的模型。提出的模型。面向对象分析面向对象分析的基本原则面向对象分析的基本原则构造和分解相结合的原则。构造和分解相结合的原则。抽象和具体结合的原则。抽象和具体结合的原则。封装和继承的原则封装和继承的原则。面向对象分析基本过程面向对象分析基本过程1 1、获取客户对系统的需求、

278、获取客户对系统的需求2 2、确定类和对象、确定类和对象(1)查找对象)查找对象(2)筛选对象并确定关联)筛选对象并确定关联(3)标识属性和定义操作)标识属性和定义操作(4)识别类之间关系)识别类之间关系面向对象设计面向对象设计的基本原则面向对象设计的基本原则1 1、模块化、模块化2 2、数据抽象和信息隐藏、数据抽象和信息隐藏3 3、弱耦合、弱耦合4 4、强内聚、强内聚5 5、重用性、重用性OOD是是在在面面向向对对象象分分析析的的基基础础上上,对对OOA的的模模型型进进行行不不断断扩扩充充和和细细化化的的工工程程,两两个个阶阶段段使使用用的的是是同同样样的的方方法法和和模模型型,因因而而界界限

279、限并并不不明明显显,这这样样,就就使使得得从从分析到设计的转变非常自然,甚至难以区分。分析到设计的转变非常自然,甚至难以区分。面向对象技术综上所述:综上所述:面向对象分析与设计的实质是一种系统建模技术。但面向对象分析与设计的实质是一种系统建模技术。但对象模型不仅受面向对象程序设计语言的影响,而且与其它对象模型不仅受面向对象程序设计语言的影响,而且与其它许多因素有关。面向对象思想的实质,不是从功能上,或从许多因素有关。面向对象思想的实质,不是从功能上,或从处理问题的算法上进行系统分析,而是从系统的组织上进行处理问题的算法上进行系统分析,而是从系统的组织上进行分解。通过对问题的自然分割,利用类及对

280、象作为基本构造分解。通过对问题的自然分割,利用类及对象作为基本构造单元,以更接近人类的思维方式建立问题域模型,从而使设单元,以更接近人类的思维方式建立问题域模型,从而使设计出的软件尽可能直接地、准确地描述现实世界,构造出模计出的软件尽可能直接地、准确地描述现实世界,构造出模块化的、可重用的、可维护性好的软件系统。按此思想还可块化的、可重用的、可维护性好的软件系统。按此思想还可有效地控制软件复杂度,并可降低开发维护费用。有效地控制软件复杂度,并可降低开发维护费用。几种流行的面向对象方法几种流行的面向对象方法90年代以来,一些专家按照面向对象的思想,年代以来,一些专家按照面向对象的思想,对对OOA

281、/OOD工作的步骤、方法、图形工具等,进工作的步骤、方法、图形工具等,进行了详细研究,提出了多种实施方案,据不完全统行了详细研究,提出了多种实施方案,据不完全统计,有五十几种。其中,比较流行的有十几种,这计,有五十几种。其中,比较流行的有十几种,这些方法中,有的覆盖开发的三个阶段,有的侧重其些方法中,有的覆盖开发的三个阶段,有的侧重其中的一个或二个阶段,但对中的一个或二个阶段,但对OOA都比较重视,把它都比较重视,把它作为重点。下面介绍几种影响较大的方法的思想:作为重点。下面介绍几种影响较大的方法的思想:几种流行的面向对象方法几种流行的面向对象方法PeterCoad和和EdYourdon方法:

282、方法:是较早出现的面向是较早出现的面向对象开发方法。它把系统的开发分为分析和设计两个阶段。其对象开发方法。它把系统的开发分为分析和设计两个阶段。其中分析阶段的中分析阶段的OOA模型由五个层次构成,即类及对象层、结构模型由五个层次构成,即类及对象层、结构层、主题层、属性层和服务层,对应着层、主题层、属性层和服务层,对应着OOA的五个活动:认定的五个活动:认定对象,认定结构,认定主题,定义属性,定义服务。设计阶段对象,认定结构,认定主题,定义属性,定义服务。设计阶段则针对与实现有关的因素继续运用则针对与实现有关的因素继续运用OOA的五个活动,它包括问的五个活动,它包括问题域部分、人机交互部分、任务

283、管理部分和数据管理部分等四题域部分、人机交互部分、任务管理部分和数据管理部分等四个部分的设计。在次序上,个部分的设计。在次序上,OOA和和OOD既可以顺序地进行,也既可以顺序地进行,也可以交叉地进行。因此,它能适应瀑布式、螺旋式及渐进式等可以交叉地进行。因此,它能适应瀑布式、螺旋式及渐进式等各种开发模型。这种方法,概念简单,易于掌握。但是对每个各种开发模型。这种方法,概念简单,易于掌握。但是对每个对象的功能和行为的描述不很全面,对象模型的语义表达能力对象的功能和行为的描述不很全面,对象模型的语义表达能力不是太强,系统模型的描述能力较弱。不是太强,系统模型的描述能力较弱。几种流行的面向对象方法几

284、种流行的面向对象方法OMT方法方法 OMT方法全面覆盖了软件开发的整个过程,包括分析、设方法全面覆盖了软件开发的整个过程,包括分析、设计和实现几个步骤。在分析阶段,通过考察问题域中的对象、计和实现几个步骤。在分析阶段,通过考察问题域中的对象、对象间的关系、事件流和功能,分别建立三个模型即:对象间的关系、事件流和功能,分别建立三个模型即:对象模型:是三个模型中最关键的一个模型,其作用是描对象模型:是三个模型中最关键的一个模型,其作用是描述系统的静态结构,即构成系统的类和对象,它们的属性和操述系统的静态结构,即构成系统的类和对象,它们的属性和操作,它们之间的联系。作,它们之间的联系。动态模型描述与

285、时间和操作次序有关的系统属性,反映系动态模型描述与时间和操作次序有关的系统属性,反映系统的行为和控制等动态特征;统的行为和控制等动态特征;功能模型描述与值的变化有关的系统属性,反映系统做什功能模型描述与值的变化有关的系统属性,反映系统做什么,不考虑怎么做。么,不考虑怎么做。几种流行的面向对象方法几种流行的面向对象方法OMT方法方法建立三个模型的次序如图:建立三个模型的次序如图:对象模型对象模型动态模型动态模型功能模型功能模型几种流行的面向对象方法几种流行的面向对象方法OMT方法方法对象模型图:对象模型图:类名类名属性属性操作操作(类名)(类名)属性值属性值教师教师姓名姓名年龄年龄单位单位职称职

286、称工资工资调工资调工资评职称评职称类类:实例实例示例示例类与对象的表示类与对象的表示几种流行的面向对象方法几种流行的面向对象方法OMT方法方法对象模型图:对象模型图:1关联的表示关联的表示0,10,多,多关联:指类之间的联系关联:指类之间的联系实心圆表示多个;实心圆表示多个;空心圆表示空心圆表示0个;个;不加圆表示不加圆表示1个;个;几种流行的面向对象方法几种流行的面向对象方法OMT方法方法主讲主讲关联和角色的表示关联和角色的表示教师教师讲授讲授课程课程内容内容角色:指类在关联中的作用,位于关联的两端。角色:指类在关联中的作用,位于关联的两端。例:在教师类和课程类的关联中,例:在教师类和课程类

287、的关联中,教师在关联中起主讲教师在关联中起主讲作用作用,课程在关联中是讲授的内容。,课程在关联中是讲授的内容。几种流行的面向对象方法几种流行的面向对象方法OMT方法方法一般具体关系(泛化)一般具体关系(泛化)人员人员关系:指类之间的关系。关系:指类之间的关系。一般具体关系:类之间连线的一端加一个空心三角形;一般具体关系:类之间连线的一端加一个空心三角形;整体部分关系:类之间连线的一端加一个空心菱形;整体部分关系:类之间连线的一端加一个空心菱形;教师教师学生学生大学大学学院学院系系整体部分关系(聚合)整体部分关系(聚合)几种流行的面向对象方法几种流行的面向对象方法OMT方法方法 OMT方法的设计

288、阶段分为两个部分:系统设计和对象方法的设计阶段分为两个部分:系统设计和对象设计。系统设计负责划分子系统,确定整个系统的体系结设计。系统设计负责划分子系统,确定整个系统的体系结构。对象设计的主要任务是精心考虑和细化分析阶段所获构。对象设计的主要任务是精心考虑和细化分析阶段所获得的模型,然后优化地生成一个实际的设计,把应用概念得的模型,然后优化地生成一个实际的设计,把应用概念转化到计算机概念。实现阶段既可用转化到计算机概念。实现阶段既可用OO语言来实现设计,语言来实现设计,也可以用非也可以用非OO语言来实现。语言来实现。OMT方法在分析阶段构造的三个模型,从不同的角方法在分析阶段构造的三个模型,从

289、不同的角度全面地反映了系统的需求。但在功能模型中使用数据流度全面地反映了系统的需求。但在功能模型中使用数据流图与其它两个模型有些脱节。图与其它两个模型有些脱节。几种流行的面向对象方法几种流行的面向对象方法Booch的方法的方法 GradyBooch的方法最大的特色的方法最大的特色是对象的图形表示一是对象的图形表示一Booch图,将几类不同的图表有机地结合起来,反映系统的图,将几类不同的图表有机地结合起来,反映系统的各个方面是如何相互联系及相互作用的。系统的开发工作分各个方面是如何相互联系及相互作用的。系统的开发工作分为两个部分:微观过程和宏观过程。微观过程主要用于建立为两个部分:微观过程和宏观

290、过程。微观过程主要用于建立一个反复、递增的开发框架。宏观过程用来对微观过程进行一个反复、递增的开发框架。宏观过程用来对微观过程进行控制,关注开发过程中的管理工作。控制,关注开发过程中的管理工作。Booch认为面向对象的认为面向对象的开发是一个部分生命周期的方法,只涉及面向对象的设计和开发是一个部分生命周期的方法,只涉及面向对象的设计和实现,不涉及面向对象分析,所以它主要的工作集中在设计实现,不涉及面向对象分析,所以它主要的工作集中在设计阶段,也没有对各个阶段给以明确的区分。阶段,也没有对各个阶段给以明确的区分。统一建模语言UML统一建模语言统一建模语言UML面向对象的软件开发方法已经逐渐成熟,

291、实现开发方面向对象的软件开发方法已经逐渐成熟,实现开发方法的统一化和标准化成为一项重要的工作。法的统一化和标准化成为一项重要的工作。UML(UnifiedModelingLanguage)语言的出现是这一领域的重大突破,语言的出现是这一领域的重大突破,UML由由Booch,Rumbaugh和和Jacobson三位著名的计算机三位著名的计算机专家设计,集成了各种面向对象方法的优点,成为一个更专家设计,集成了各种面向对象方法的优点,成为一个更具综合性的统一方法,已被具综合性的统一方法,已被OMG(ObjectManagementGroup)采纳,作为标准。)采纳,作为标准。统一建模语言UMLUML

292、主主要要是是用用来来规规范范面面向向对对象象技技术术的的表表示示方方法法。UML结结合合了了Booch,OMT和和OOSE的的概概念念,是是一一个个通通用用的的建建模模语语言言,不不仅仅适适合合于于一一般般系系统统的的开开发发,也也适适合合于于并并行行或或分分布布式式系系统统的的开开发发。原原则则上上来来说说,开开发发方方法法应应包包括括两两个个部部分分:建建模模语语言言和和开开发发过过程程。建建模模语语言言是是开开发发方方法法中中用用来来描描述述设设计计的的标标注注系系统统,包包括括使使用用到到的的概概念念、图图表表、符符号号等等;开开发发过过程程给给出出开开发发的的步步骤骤;所所以以可可以

293、以称称开开发发方方法法为为用用建建模模语语言言描描述述的的开开发发过过程程。三三位位专专家家在在设设计计UML的的同同时时,也也设设计计了了一一个个统统一一的的开开发发过过程程,称称为为RUP(RationalUnifiedProcess)。使使用用UML并并不不意意味味着着必必须须使使用用RUP,二二者者是是严严格格分分离离的的。UML可可以以用用来来描描述述其其它它的的开开发发过过程程,产产生生新新的的软软件件开开发发方方法法,这这是是UML对对面面向向对对象象开开发发方方法法统统一化和标准化作出的主要贡献。一化和标准化作出的主要贡献。统一建模语言UMLUML主主要要包包括括两两个个部部分

294、分:表表示示和和语语义义。表表示示部部分分主主要要分分两两类类:是是支支持持建建立立模模型型的的各各种种图图;是是通通用用表表示示。UML支支持持的的图图包包括括使使用用事事例例图图、行行为为图图、类类图图和和实实现现图图,通通用用表表示示定定义义了了语语言言中中的的一一些些概概念念。语语义义部部分分是是对对UML的的准准确确解解释释,包包括括元元素素、机机制制和和类类型型三三个个部部分分,元元素素描描述述的的是是UML中中各各种种元元素素的的语语义义,机机制制描描述述的的是是使使UML保保持持简简单单和和概概念念上上一一致致的的各各种种机机制制的的语语义义,类型描述的是类型描述的是UML支持

295、的各种类型的语义。支持的各种类型的语义。UML为为人人们们提提供供从从不不同同的的角角度度观观察察和和描描述述系系统统的的各各种种特特征征的的一一种种标标准准方方法法,并并将将模模型型中中的的信信息息用用标标准准的的图图形形元元素素直直观观地地表表示示。为为了了支支持持从从不不同同的的角角度度来来考考察察系系统统,UML定定义义了了5类类、共共10种种模模型型图图。在在UML中中,从从各各个个角角度度对对系系统统的的抽抽象象都都用用一一个个或或多多个个模模型图来描述。型图来描述。统一建模语言UML用用例例图图:用用例例图图(UseCaseDiagram)用用于于描描述述系系统统需需求求。可可用

296、用来来展展示示系系统统外外部部的的各各类类角角色色与与系系统统提提供供的的各各种种用用例例(UseCase)之间的关系。之间的关系。 静静 态态 图图 : 包包 括括 类类 图图 (Class Diagram)、 对对 象象 图图 (ObjectDiagram)和包图和包图(PackageDiagram)。 行行为为图图:用用来来描描述述系系统统的的动动态态模模型型和和组组成成对对象象间间的的交交互互关关系系,包括状态图包括状态图(StateDiagram)和活动图和活动图(ActivityDiagram)。 交交互互图图:描描述述对对象象间间的的交交互互关关系系,包包括括顺顺序序图图(Seq

297、uenceDiagram)和合作图和合作图(CollaborationDiagram)。实现图:实现图:包括构件图和配置图。包括构件图和配置图。一、对象建模一、对象建模1 1、类图的基本符号、类图的基本符号统一建模语言UML类名类名属性:类型属性:类型操作操作对象:类名对象:类名属性名值属性名值操作操作关联关联依赖依赖聚合聚合泛化泛化类、对象及关系模型符号类、对象及关系模型符号2 2、表示关系的符号、表示关系的符号(1)关联)关联常规关联常规关联递归关联递归关联统一建模语言UML员工员工工作工作公司公司雇佣雇佣0.*0.*0.*0.*领导领导0.10.1职职 员员0.*0.*管理管理有序关联有

298、序关联统一建模语言UML班级班级学生学生* *orderedordered 限定关联限定关联班级班级学生学生学号学号或关联或关联统一建模语言UML关联类关联类学生已学生已学生甲学生甲试卷库试卷库试卷试卷*or授课授课班级班级课程名课程名开始授课开始授课教师教师学生学生*授课授课(2)泛化泛化普通泛化普通泛化统一建模语言UML多边形类多边形类颜色、线条颜色、线条显示显示三边形三边形颜色、线条颜色、线条显示、移动显示、移动四边形四边形颜色、线条颜色、线条显示、移动显示、移动交叠泛化与不交泛化交叠泛化与不交泛化统一建模语言UMLoverlappingoverlapping圆形圆形正方形正方形圆角正方

299、形圆角正方形形状形状完全泛化与不完全泛化完全泛化与不完全泛化统一建模语言UML人人女人女人男人男人complete人人学生学生教师教师(3依赖和细化依赖和细化统一建模语言UML类类B类类A依赖依赖分析类分析类设计类设计类细化细化(4)聚集)聚集共享聚集共享聚集组合聚集组合聚集统一建模语言UML课题组课题组成员成员*1.*1.*参与参与共享聚集共享聚集窗口窗口按钮按钮文本框文本框状态栏状态栏菜单栏菜单栏*包含包含组合聚集组合聚集2、动态建模、动态建模 动态模型的建立需要完成以下几项工作,第一,动态模型的建立需要完成以下几项工作,第一,要体现对象之间交互的当前状态;第二,确定所发生要体现对象之间交

300、互的当前状态;第二,确定所发生的事件,第三,根据发生事件对对象状态进行组合,的事件,第三,根据发生事件对对象状态进行组合,形成一个整体的事件跟踪图。形成一个整体的事件跟踪图。 为为了了较较好好地地建建立立动动态态模模型型,编编写写一一个个描描述述系系统统执执行行情情况况的的脚脚本本是是十十分分重重要要的的,编编写写脚脚本本的的目目的的是是在在功功能能上上理理顺顺事事件件的的发发生生情情况况,尽尽量量保保证证不不遗遗漏漏各各个个交交互互细节,是确保功能完整性的很好的手段。细节,是确保功能完整性的很好的手段。统一建模语言UML状态图状态图下面是描述状态图的一些基本符号下面是描述状态图的一些基本符号

301、统一建模语言UML迁移迁移状态名状态名状态变量状态变量活动活动状态状态起始状态起始状态结束状态结束状态状态图的基本符号状态图的基本符号统一建模语言UML选题选题作题作题取消取消作业列表页面作业列表页面做作业页面做作业页面提交作业提交作业学生主界面学生主界面点击作业按钮点击作业按钮取消取消 学生做作业查看作业状态图学生做作业查看作业状态图查看作业界面查看作业界面统一建模语言UML学生学生作业作业教师教师查看作业查看作业选做作业选做作业布置作业布置作业查看作业完成情况查看作业完成情况打开批阅打开批阅查看批阅情况查看批阅情况作业交互事件跟踪图作业交互事件跟踪图统一建模语言UML3、功能建模、功能建模

302、 功能模型着重于系统中数据的传递和处理功能。功能模型着重于系统中数据的传递和处理功能。用例图用例图是进行是进行需求分析和建立功能模型的有力工具。需求分析和建立功能模型的有力工具。采用用例图建立的系统模型称采用用例图建立的系统模型称为用例模型,它是用来描述系统应该做什么的建模技术,通过软件设为用例模型,它是用来描述系统应该做什么的建模技术,通过软件设计者和用户之间交流,采用用例模型建立实现用户需求的系统功能模计者和用户之间交流,采用用例模型建立实现用户需求的系统功能模型。型。用例用例行为者行为者系统系统用例图的模型元素用例图的模型元素统一建模语言UML教学管理系统教学管理系统教学教学考试考试管理

303、管理教师教师学生学生管理人员管理人员教学管理系统用例图教学管理系统用例图面面向向对对象象实实现现的的主主要要工工作作是是将将软软件件设设计计结结果果翻翻译译成成某某种种程程序序设设计计语语言言书书写写的的面面向向对对象象程程序序的的过过程程,然然后后对对该该程程序序进进行测试、调试,验证程序的正确性及系统功能的实现情况。行测试、调试,验证程序的正确性及系统功能的实现情况。1、程序设计语言、程序设计语言在选择面向对象编程语言时重点应考虑以下因素:在选择面向对象编程语言时重点应考虑以下因素:(1)语言的发展前景)语言的发展前景(2)可重用性)可重用性(3)资源情况)资源情况2、程序设计风格、程序设

304、计风格(1)提高可重用性)提高可重用性(2)人机交互界面设计)人机交互界面设计(3)提高健壮性)提高健壮性面向对象实现3、面向对象程序测试、面向对象程序测试对对于于用用面面向向对对象象技技术术开开发发的的软软件件,在在测测试试过过程程中中继继续续运用面向对象技术进行的软件测试。运用面向对象技术进行的软件测试。面向对象的测试策略也是一个由局部到整体的过程,面向对象的测试策略也是一个由局部到整体的过程,测试以对象为中心,首先是单个模块的测试,然后进测试以对象为中心,首先是单个模块的测试,然后进行模块间的交互测试,最后是整体功能的测试,分别行模块间的交互测试,最后是整体功能的测试,分别称为单元测试、

305、集成测试、确认测试和系统测试。称为单元测试、集成测试、确认测试和系统测试。4、面向对象的软件维护、面向对象的软件维护对对采采用用面面向向对对象象技技术术实实现现的的软软件件进进行行修修改改和和完完善善的的工工作。作。面向对象实现第第10章章软件工程标准化和软件文档软件工程标准化和软件文档1、什么是软件工程标准化、什么是软件工程标准化1983年我国颁布的国家标准(年我国颁布的国家标准(GB3935.1-83)中对)中对“标标准准”的定义是:的定义是:“标准是对重复性事物和概念所做的统一规定。标准是对重复性事物和概念所做的统一规定。它以科学、技术、实践经验和综合成果为基础,经有关方面协商它以科学、

306、技术、实践经验和综合成果为基础,经有关方面协商一致,由主管机构批准,以特定形式发布,作为共同遵守的准则一致,由主管机构批准,以特定形式发布,作为共同遵守的准则和依据。和依据。”随着软件工程学的发展,软件工作的范围从只是使用程序设随着软件工程学的发展,软件工作的范围从只是使用程序设计语言编写程序,扩展到整个软件生存期。涉及软件概念的形成、计语言编写程序,扩展到整个软件生存期。涉及软件概念的形成、需求分析、设计、实现、测试、安装和检验、运行和维护,直到需求分析、设计、实现、测试、安装和检验、运行和维护,直到软件淘汰。同时还有许多技术管理工作软件淘汰。同时还有许多技术管理工作(如过程管理、产品管理、

307、如过程管理、产品管理、资源管理资源管理)以及确认与验证工作以及确认与验证工作(如评审和审计、产品分析、测试如评审和审计、产品分析、测试等等),这些常常是跨越软件生存期各个阶段的专门工作。所有这,这些常常是跨越软件生存期各个阶段的专门工作。所有这些方面建立的标准或规范,即是软件工程标准化。些方面建立的标准或规范,即是软件工程标准化。软件工程标准化软件工程标准化2、软件工程标准化的意义、软件工程标准化的意义协调软件开发项目中人员、开发项目的各个部分以协调软件开发项目中人员、开发项目的各个部分以及各开发阶段之间联系和衔接问题。及各开发阶段之间联系和衔接问题。软件工程标准化的作用如下:软件工程标准化的

308、作用如下: 可可提提高高软软件件的的可可靠靠性性、可可维维护护性性和和可可移移植植性性,从从而而提提高高软软件件产品的质量;产品的质量; 可提高软件人员的技术水平和软件的生产率;可提高软件人员的技术水平和软件的生产率; 可提高软件人员之间的通信效率,减少差错和误解;可提高软件人员之间的通信效率,减少差错和误解; 为科学地进行软件管理奠定了基础;为科学地进行软件管理奠定了基础; 有利于降低软件产品的成本和运行维护成本;有利于降低软件产品的成本和运行维护成本; 有利于缩短软件开发周期;有利于缩短软件开发周期; 标准化是软件研究、生产、使用三者之间的桥梁标准化是软件研究、生产、使用三者之间的桥梁。软

309、件工程标准化软件工程标准化3、软件工程标准的范围和分类、软件工程标准的范围和分类4、软件工程标准的层次、软件工程标准的层次国际标准国际标准国家标准国家标准行业标准行业标准企业规范企业规范项目规范项目规范由国际联合机构制定和公布,提供由国际联合机构制定和公布,提供各国参考的标准。各国参考的标准。ISO(InternationalStandardsOrganization)国际标准国际标准化组织。化组织。这这 一一 标标 准准 通通 常常 冠冠 有有 ISO字字 样样 , 如如ISO863186 Information processingProgramconstructsandconventio

310、nsfortheirrepresentation信信息息处处理理程程序序构构造造及及其其表表示示法法的的约约定定。该该标标准准现现己己由中国收入国家标准。由中国收入国家标准。软件工程标准化软件工程标准化3、软件工程标准的范围和分类、软件工程标准的范围和分类4、软件工程标准的层次、软件工程标准的层次国际标准国际标准国家标准国家标准行业标准行业标准企业规范企业规范项目规范项目规范由政府或国家级的机构制定或批准,由政府或国家级的机构制定或批准,适用于全国范围的标准,如:适用于全国范围的标准,如:GB中华人民共和国国家技术监中华人民共和国国家技术监督局是中国的最高标准化机构,简称督局是中国的最高标准化

311、机构,简称“国标国标”。ANSI(AmericanNationalStandardsInstitute)美国国家标准协会。美国国家标准协会。软件工程标准化软件工程标准化3、软件工程标准的范围和分类、软件工程标准的范围和分类4、软件工程标准的层次、软件工程标准的层次国际标准国际标准国家标准国家标准行业标准行业标准企业规范企业规范项目规范项目规范由行业机构、学术团体或国防机构制定,由行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准,如:并适用于某个业务领域的标准,如:IEEE(InstituteofElectricalandElectronicsEngineers)美国电气与电美国电气

312、与电子工程师学会。子工程师学会。GJB中华人民共和国国家军用标准。中华人民共和国国家军用标准。DODSTD(DepartmentOfDefenseStandards)美国国防部标准美国国防部标准软件工程标准化软件工程标准化3、软件工程标准的范围和分类、软件工程标准的范围和分类4、软件工程标准的层次、软件工程标准的层次国际标准国际标准国家标准国家标准行业标准行业标准企业规范企业规范项目规范项目规范一一些些大大型型企企业业或或公公司司,由由于于软软件件工工程程工工作作的的需需要要,制制定定适适用用于于本本部部门门的的规规范范。例例 如如 , 美美 国国 IBM公公 司司 通通 用用 产产 品品 部

313、部(GeneralProductsDivision)1984年年制制定定的的程程序序设设计计开开发发指指南南。仅仅供供该该公公司司内部使用。内部使用。软件工程标准化软件工程标准化3、软件工程标准的范围和分类、软件工程标准的范围和分类4、软件工程标准的层次、软件工程标准的层次国际标准国际标准国家标准国家标准行业标准行业标准企业规范企业规范项目规范项目规范由由某某一一科科研研生生产产项项目目组组织织制制定定,且且为为该该项项任任务务专专用用的的软软件件工工程程规规范范。例例如如,计计算算机机集集成成制制造造系系统统(CIMS)的的软软件件工工程程规范。规范。软件工程标准化软件工程标准化5、软件工程

314、标准的体系框架软件工程标准的体系框架1、软件工程功能标准框架、软件工程功能标准框架可按标准的自然属性分为四个类别:可按标准的自然属性分为四个类别:通通用用标标准准:指指软软件件工工程程领领域域的的共共性性标标准准,包包括括术术语语词词汇汇、组组织织框架、参考信息、软件分类等。框架、参考信息、软件分类等。原理标准:包括描述各个原理级的关键组织标准。原理标准:包括描述各个原理级的关键组织标准。要素标准:包括带有详细性能要求的标准。要素标准:包括带有详细性能要求的标准。指指南南和和补补充充:包包括括为为如如何何把把原原理理或或要要素素标标准准应应用用于于特特定定场场合合而而提供指南的文档。提供指南的

315、文档。软件工程标准化软件工程标准化5、软件工程标准的体系框架软件工程标准的体系框架1、软件工程功能标准框架、软件工程功能标准框架六种类型标准:过程、产品、工具、技术、人员和材料资源、六种类型标准:过程、产品、工具、技术、人员和材料资源、数据(包括需求数据、产品数据和工程数据)。数据(包括需求数据、产品数据和工程数据)。过过程程:包包括括应应用用于于计计算算机机软软件件的的开开发发、提提供供、安安装装和和维维护护的的指指南南、软软件件文文档档的的管管理理指指南南、软软件件生生存存周周期期过过程程、软软件件测测量量过过程程、软软件件维维护护、软软件件用用户户文文档档过过程程、软软件件配配置置管管理

316、理、软软件件工工程程项项目管理等。目管理等。产产品品:产产品品标标准准框框架架以以及及相相关关国国际际标标准准如如图图10-5,包包括括质质量量模模型型、软软件件产产品品质质量量、软软件件包包质质量量需需求求和和测测试试、软软件件测测量量功功能能性性规规格格测测量量、系系统统和和软软件件完完整整性性级级别别、用用户户文文档档的的设设计计和和编编制制指指南南等。等。软件工程标准化软件工程标准化1、软件工程功能标准框架、软件工程功能标准框架工工具具:包包括括CASE工工具具的的评评价价和和选选择择指指南南、CASE工工具具的的采采用用指指南南、实实体体模模型型和和原原型型的的软软件件生生存存周周期

317、期裁裁剪剪、软软件件工工程程环环境境服服务、配置管理工具需求等。务、配置管理工具需求等。技技术术:技技术术标标准准的的框框架架以以及及相相关关国国际际标标准准如如图图10-7。包包括括软软件件产产品品评评价价、软软件件过过程程评评估估、软软件件可可信信性性、科科技技系系统统功功能能安安全全的的风风险险分分析析、功功能能安安全全与与系系统统相相关关的的安安全全以以及及体体系系结结构构相相关关的的技技术标准。术标准。人人员员和和材材料料资资源源:包包括括TR155046:软软件件过过程程评评估估第第6部部分分:评评估估员员资资格格指指南南和和计计划划中中的的对对于于知知识识软软件件工工程程体体指指

318、南南的快速批准。的快速批准。软件工程标准化软件工程标准化1、软件工程功能标准框架、软件工程功能标准框架数数据据:包包括括判判定定表表规规范范、文文档档编编制制符符号号和和约约定定、程程序序结结构构和和约约定定及及其其表表示示、计计算算机机系系统统配配置置图图符符号号和和约约定定、软软件件状状态态转转换换的的人人际际通通信信的的表表示示、基基于于计计算算机机的的应应用用系系统统的的文文档档编编制制指指南南、软软件件生生存存周周期期过过程程信信息息产产品品的的内内容容指指南南、软软件件工工程程数数据据定定义义和和交交换换及高级及高级Petri网等。网等。2、基于软件生存周期过程的软件工程路径框架、

319、基于软件生存周期过程的软件工程路径框架软件工程标准化软件工程标准化6、中国的软件工程标准化工作、中国的软件工程标准化工作从从1983年年起起到到现现在在,中中国国已已陆陆续续制制定定和和发发布布了了20项项国国家家标标准。这些标准可分为准。这些标准可分为4类类:基础标准;基础标准;开发标准;开发标准;文档标准;文档标准;管理标准。管理标准。另另外外,还还制制定定了了以以“GJB”为为标标记记的的软软件件工工程程国国家家军军用用标标准准12项。项。软件工程标准化软件工程标准化7、IS09000国际标准简介国际标准简介 ISO9000ISO9000系列标准对提供产品或服务的机构称为系列标准对提供产

320、品或服务的机构称为供方,标准规定了对供方的各方面质量要求和质量供方,标准规定了对供方的各方面质量要求和质量管理办法,以图对购买者和消费者管理办法,以图对购买者和消费者( (称为顾客称为顾客) )所要所要求的各种质量条件都得到满足。求的各种质量条件都得到满足。(1)IS09000标准的特点:标准的特点:国际性国际性、完整性、完整性、兼容性、兼容性、主动性、主动性、可信性、可信性、指导、指导性性、科学性、科学性、实践性、实践性。软件工程标准化软件工程标准化7、IS09000国际标准简介国际标准简介(2)ISO9000系列标准包括的标准范围系列标准包括的标准范围ISO9000系列标准共包括系列标准共

321、包括5项标准。它们是:项标准。它们是:ISO9000-1:1994质质量量管管理理和和质质量量保保证证标标准准第第一一部部分分:选选择择和和使使用指南用指南ISO9001:1994质质量量体体系系设设计计、开开发发、生生产产、安安装装和和服服务务的的质质量量保证模式保证模式ISO9002:1994质量体系质量体系生产、安装和服务的质量保证模式生产、安装和服务的质量保证模式ISO9003:1994质量体系质量体系最终检验和试验的质量保证模式最终检验和试验的质量保证模式ISO9004-1:1994质量管理和质量体系要素质量管理和质量体系要素第一部分:指南第一部分:指南软件工程标准化软件工程标准化7

322、、IS09000国际标准简介国际标准简介(3)ISO9000系列标准用途和分类系列标准用途和分类ISO9000-1:1994标准的用途标准的用途该标准主要用途是供给供需双方选择质量保证和供给该标准主要用途是供给供需双方选择质量保证和供给供方选择质量管理标准时使用;供方选择质量管理标准时使用;ISO9001ISO9003:1994标准的用途标准的用途该三项标准是一组质量保证标准;它们是在合同情况该三项标准是一组质量保证标准;它们是在合同情况下,供购双方签订供货合同选择质量保证标准时,或供方下,供购双方签订供货合同选择质量保证标准时,或供方申请体系认证选择质量保证模式时使用的标准。申请体系认证选择

323、质量保证模式时使用的标准。软件工程标准化软件工程标准化7、IS09000国际标准简介国际标准简介(4)质量保证标准(质量保证标准(ISO9001ISO9003)之间及其)之间及其与质量管理标准(与质量管理标准(ISO9004-1)的关系)的关系ISO9001、9002、9003质量保证标准之间的关系质量保证标准之间的关系从从用用途途上上看看,它它们们各各自自独独立立,但但它它们们内内在在有有着着紧紧密密的的关关系系。ISO9003是是最最终终检检验验和和试试验验质质量量保保证证模模式式,含含16项项体体系系要要素素,是是三三者者中中要要求求提提供供证证据据最最少少的的质质量量保保证证模模式式;

324、ISO9002是是生生产产、安安装装和和服服务务的的质质量量保保证证模模式式,含含19项项体体系系要要素素,ISO9002包包容容了了ISO9003的的要要素素;ISO9001是是设设计计、开开发发、生生产产、安安装装和和服服务务的的质质量量保保证证模模式式,含含20项项体体系系要要素素,ISO9001包容了包容了ISO9002的要素。的要素。软件工程标准化软件工程标准化7、IS09000国际标准简介国际标准简介(4)质量保证标准(质量保证标准(ISO9001ISO9003)之间及其)之间及其与质量管理标准(与质量管理标准(ISO9004-1)的关系)的关系质质 量量 保保 证证 标标 准准

325、( ISO9001ISO9003) 与与 质质 量量 管管 理理 标标 准准(ISO9004-1)之间的关系)之间的关系区区别别:ISO9004-1是是质质量量管管理理标标准准,其其用用途途是是指指导导企企业业推推行行质质量量管管理理,建建立立质质量量管管理理体体系系,提提高高管管理理水水平平用用的的;ISO9001ISO9003是是一一组组三三种种不不同同模模式式的的质质量量保保证证标标准准,它它们们的的用用途途是是指指导导供供需需双双方方选选择择质质量量保保证证模模式式或或供供方方质质量量体体系系认认证证用的。用的。联联系系:ISO9004-1体体系系要要素素基基本本包包括括了了ISO90

326、01ISO9003体体系系的的各各项项要要素素。企企业业的的质质量量管管理理体体系系是是企企业业产产品品质质量量保保证证体系的基础。体系的基础。软件文档软件文档1、文档:、文档:对活动、需求、过程或结果进行描述、定义、对活动、需求、过程或结果进行描述、定义、规定、报告或认证的所有书面及图示的信息。规定、报告或认证的所有书面及图示的信息。文档也是软件产品的一部分,没有文档的软件就不成其为软件。文档也是软件产品的一部分,没有文档的软件就不成其为软件。2、软件文档的作用、软件文档的作用(1)记录记录开发过程中的事件,以提高软件开发过程的能见度。开发过程中的事件,以提高软件开发过程的能见度。(2)记记

327、录录开开发发过过程程中中的的有有关关信信息息,便便于于协协调调以以后后的的软软件件、开开发发、使使用和维护和各类人员、用户之间的协作、交流。用和维护和各类人员、用户之间的协作、交流。(3)提高开发效率。提高开发效率。(4)作为开发人员在一定阶段的工作成果和结束标志。作为开发人员在一定阶段的工作成果和结束标志。(5)便便于于潜潜在在用用户户了了解解软软件件的的功功能能、性性能能等等各各项项指指标标,为为他他们们选选购购符合自己需要的软件提供依据。符合自己需要的软件提供依据。软件文档软件文档3、文档的分类、文档的分类根据软件文档形式,大致可分为两类:根据软件文档形式,大致可分为两类:(1)工作表格

328、:包括开发过程中填写的各种图表。工作表格:包括开发过程中填写的各种图表。(2)文档或文件:包括应编制的技术资料或技术管理资料。文档或文件:包括应编制的技术资料或技术管理资料。按照文档产生和使用的范围,可分为三类:按照文档产生和使用的范围,可分为三类:(1)开发文档开发文档(2)管理文档管理文档(3)用户文档)用户文档根据文档内容,软件文档又可分为两类:根据文档内容,软件文档又可分为两类:(1)用户文档用户文档(2)系统文档系统文档软件文档软件文档3、文档的分类、文档的分类根根据据软软件件产产品品从从形形成成概概念念开开始始,经经过过开开发发、使使用用和和不不断断增增补补修修订订,直到最后被淘汰

329、的整个过程应提交的文档又可以分为以下十三种:直到最后被淘汰的整个过程应提交的文档又可以分为以下十三种:(1)可行性研究报告可行性研究报告(7)用户手册用户手册(2)项目开发计划项目开发计划(8)操作手册操作手册(3)软件需求说明书软件需求说明书(9)测试计划测试计划(4)数据要求说明书数据要求说明书(10)测试分析报告测试分析报告(5)概要设计说明书概要设计说明书(11)开发进度月报开发进度月报(6)详细设计说明书详细设计说明书(12)项目开发总结报告项目开发总结报告(13)维护修改建议维护修改建议软件文档软件文档4、软件文档的编制要求软件文档的编制要求高高质质量量的的文文档档应应当当体体现现

330、在在以以下下几几个个方方面面:准准确确、简简明明、完完整整、灵活、有针对性、可追溯性。灵活、有针对性、可追溯性。为了能够编写出高质量的文档,应注意以下一些问题:为了能够编写出高质量的文档,应注意以下一些问题:(1)应根据具体的软件开发项目,决定编制的文档种类。应根据具体的软件开发项目,决定编制的文档种类。(2)当所开发的软件系统非常大时,一种文档可以分成几卷编写。当所开发的软件系统非常大时,一种文档可以分成几卷编写。(3)应根据任务的规模、复杂性,确定文档的详细程度。应根据任务的规模、复杂性,确定文档的详细程度。(4)对国标中所建议的所有条款都可以扩展,以适应需要。对国标中所建议的所有条款都可

331、以扩展,以适应需要。(5)程序的设计可采用多种表现形式。程序的设计可采用多种表现形式。(6)文档的表现可以使用自然语言、也可以使用形式化的语言。文档的表现可以使用自然语言、也可以使用形式化的语言。(7)当可以建立一些特殊的文档种类要求。当可以建立一些特殊的文档种类要求。软件文档软件文档5、软件文档的管理和维护软件文档的管理和维护1)软件开发小组应设一位文档保管员。软件开发小组应设一位文档保管员。2)开发小组的成员可根据工作需要保存一些个人文档。开发小组的成员可根据工作需要保存一些个人文档。3)开发人员个人只保存着主文本中与它工作有关的部分文档。开发人员个人只保存着主文本中与它工作有关的部分文档

332、。4)在新文档取代旧文档时,管理人员应及时注销旧文档。在新文档取代旧文档时,管理人员应及时注销旧文档。5)项目开发结束时,文档管理人员应收回开发人员的个人文档。项目开发结束时,文档管理人员应收回开发人员的个人文档。6)在软件开发的过程中,可能发现需要修改已完成的文档。在软件开发的过程中,可能发现需要修改已完成的文档。另外软件文档,作为一类配置项,必须纳入配置管理的范围。另外软件文档,作为一类配置项,必须纳入配置管理的范围。第第11章章软件工程质量软件工程质量软件质量,是贯穿软件生存期的一个极为重要的问软件质量,是贯穿软件生存期的一个极为重要的问题,是验证软件开发过程中所使用的各种开发技术和方题

333、,是验证软件开发过程中所使用的各种开发技术和方法有效性的最终体现。法有效性的最终体现。1、软件质量的定义软件质量可定义为:软件质量可定义为:“与软件产品满足规定的和隐与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体含的需求的能力有关的特征或特性的全体”;或;或“所有所有描述计算机软件优秀程度的特性的组合描述计算机软件优秀程度的特性的组合”。软件质量是各种特性的复杂组合。它随着应用的不软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。同而不同,随着用户提出的质量要求不同而不同。软件工程质量软件工程质量软件质量反映了以下三方面的问题:软件质量反映了

334、以下三方面的问题:(1)软软件件需需求求是是度度量量软软件件质质量量的的基基础础。不不符符合合需需求求的的软件就不具备质量。软件就不具备质量。(2)在在各各种种标标准准中中定定义义了了一一些些开开发发准准则则,用用来来指指导导软软件件人人员员用用工工程程化化的的方方法法来来开开发发软软件件。如如果果不不遵遵守守这这些些开开发准则,软件质量就得不到保证。发准则,软件质量就得不到保证。(3)往往往往会会有有一一些些隐隐含含的的需需求求没没有有明明确确地地提提出出来来。如如果果软软件件只只满满足足那那些些精精确确定定义义了了的的需需求求而而没没有有满满足足这这些些隐隐含的需求,软件质量也不能保证。含

335、的需求,软件质量也不能保证。软件工程质量软件工程质量2、软件质量的特性软件质量的特性人们通常用软件质量模型来描述影响软件质量的特性。人们通常用软件质量模型来描述影响软件质量的特性。软件质量模型定义成分层模型。软件质量模型定义成分层模型。在在分分层层的的模模型型中中,最最基基本本的的叫叫做做基基本本质质量量特特性性,它它可以由一些子质量特性定义和度量。可以由一些子质量特性定义和度量。二二次次特特性性在在必必要要时时又又可可由由它它的的一一些些子子质质量量特特性性定定义义和度量。和度量。软件工程质量软件工程质量2、软件质量的特性软件质量的特性(1)ISO的软件质量评价模型的软件质量评价模型按按照照

336、ISO/TC97/SC7/WG3/1985130/N382,软软件件质量度量模型由三层组成,质量度量模型由三层组成,高层高层(toplevel)软件质量需求评价准则软件质量需求评价准则(SQRC)中层中层(midlevel)软件质量设计评价准则软件质量设计评价准则(SQDC)低层低层(lowlevel)软件质量度量评价准则软件质量度量评价准则(SQMC)其其中中,应应对对高高层层和和中中层层建建立立国国际际标标准准,而而低低层层可可由由各各使使用用单单位位视实际情况制定。视实际情况制定。软件工程质量软件工程质量2、软件质量的特性软件质量的特性(2)McCall质量模型质量模型这这是是McCal

337、l等等人人于于1979年年提提出出的的软软件件质质量量模模型型。其其软软件件质质量概念基于量概念基于11个特性之上。个特性之上。其其中中反反映映产产品品运运行行特特性性的的包包括括正正确确性性、可可靠靠性性、效效率率、完完整性整性、可使用性、可使用性;反映产品修改特性的包括可维护性反映产品修改特性的包括可维护性、可测试性、可测试性、灵活性、灵活性;反映产品转移特性的包括可移植性反映产品转移特性的包括可移植性、复用性、复用性、互连性;、互连性;软件工程质量软件工程质量2、软件质量的特性软件质量的特性(3)上海软件中心上海软件中心(SSC)的软件质量度量模型的软件质量度量模型在在SSC模模型型中中

338、,用用了了与与ISO/IEC9126相相同同的的6个个质质量量特特性性,它它们们分分别别是是功功能能性性(正正确确性性)、可可靠靠性性、易易使使用用性性、效效率率、可可维维护护性性和和可可移移植植性性。同同时时设设置置了了22个个质质量量子特性,是参照子特性,是参照McCall模型定义的。模型定义的。软件工程质量软件工程质量3、软件质量的度量、软件质量的度量软件质量的高低,必须有一定的衡量标准。软件质量的高低,必须有一定的衡量标准。(1)软件质量度量的条件通常有以下几项:)软件质量度量的条件通常有以下几项:适适应应性性:必必须须制制定定能能适适应应各各种种用用户户要要求求、软软件件类类型型和和

339、规规模模的的质量标准,并能够度量。质量标准,并能够度量。易学性:易学性:不需要特殊技术,软件技术人员人人都容易掌握。不需要特殊技术,软件技术人员人人都容易掌握。可可靠靠性性:对对同同一一个个软软件件的的评评价价,尽尽管管评评价价的的人人或或场场合合可可能能不不同,但评价结果必须一致。同,但评价结果必须一致。针针对对性性:不不是是在在检检查查时时才才改改进进质质量量,而而必必须须从从设设计计阶阶段段起起就就确立质量目标,在各个阶段实施落实。确立质量目标,在各个阶段实施落实。客客观观性性:要要从从各各种种不不同同角角度度加加以以评评价价,并并将将评评价价结结果果定定量量地地表示,使得人人都能理解。

340、表示,使得人人都能理解。经经济济性性:考考虑虑如如何何才才能能把把质质量量度度量量和和保保证证所所需需要要的的费费用用控控制制在适当的范围内。在适当的范围内。软件工程质量软件工程质量3、软件质量的度量、软件质量的度量标准分为三级:标准分为三级:质量需求评价准则:是否满足用户的要求质量需求评价准则:是否满足用户的要求质质量量设设计计评评价价准准则则:开开发发者者在在设设计计实实现现时时是是否否按按软软件件需需求保证了质量求保证了质量质量度量准则:定量度量质量而规定的一些检查项目质量度量准则:定量度量质量而规定的一些检查项目软件质量度量的方法有三种:软件质量度量的方法有三种:精密度量精密度量全面度

341、量全面度量简易度量简易度量软件工程质量软件工程质量4、软件质量的评价软件质量的评价(1)评分评分检检查查表表:对对每每一一阶阶段段要要达达到到的的质质量量指指标标详详细细开开列列建建立立度度量量工工作作表表,在在表表中中,以以提提问问题题方方式式,列列出出在在某某一一阶阶段段为为实实现现某某一一质质量指标,应达到什么标准。量指标,应达到什么标准。回回答答问问题题需需参参照照各各类类文文档档,以以及及开开发发过过程程中中积积累累的的各各种种数数据据,特别是对出错数据的记录。特别是对出错数据的记录。依据软件实际成果进行评分。依据软件实际成果进行评分。软件工程质量软件工程质量4、软件质量的评价软件质

342、量的评价(2)分析结果分析结果根根据据评评分分的的结结果果,对对照照评评价价指指标标。检检查查某某个个质质量量特特性性是是否否达达到到了了要要求求的的质质量量标标准准。如如果果某某个个质质量量特特性性不不符符合合规规定定的的标标准准,就就应当分析这个质量持性,找出为什么达不到标准的原因。应当分析这个质量持性,找出为什么达不到标准的原因。分分析析原原因因应应该该自自顶顶向向下下进进行行。按按系系统统级级、子子系系统统级级、模模块块级级逐步分析。逐步分析。质量特性的得分低于规定的质量指标有两个可能的原因:质量特性的得分低于规定的质量指标有两个可能的原因:该该质质量量特特性性与与其其他他质质量量特特

343、性性冲冲突突,而而那那些些质质量量特特性性是是很很重重要的;要的;这个软件部分有质量问题。这个软件部分有质量问题。软件工程质量软件工程质量5、软件质量保证软件质量保证软软件件质质量量保保证证,是是指指为为保保证证产产品品和和服服务务充充分分满满足足消消费费量量要要求求的质量而进行的有计划、有组织的活动。的质量而进行的有计划、有组织的活动。软件的质量保证就是向用户及社会提供满意的高质量的产品。软件的质量保证就是向用户及社会提供满意的高质量的产品。软件工程质量软件工程质量5、软件质量保证软件质量保证软件质量保证的主要任务大致可归结为软件质量保证的主要任务大致可归结为8点:点:(1)用户要求定义用户

344、要求定义(2)力争不重复劳动力争不重复劳动(3)掌握开发新软件的方法掌握开发新软件的方法(4)组织外部力量协作组织外部力量协作(5)排除无效劳动排除无效劳动(6)发挥每个开发者的能力发挥每个开发者的能力(7)提高软件开发的工程能力提高软件开发的工程能力(8)提高计划和管理质量提高计划和管理质量软件工程质量软件工程质量软件质量保证体系 软软件件的的质质量量保保证证活活动动,是是涉涉及及各各个个部部门门的的部部门门间间的的活动。活动。 质质量量保保证证体体系系:为为了了顺顺利利开开展展质质量量保保证证活活动动,需需要要事事先先明明确确部部门门间间的的质质量量保保证证业业务务,确确立立部部门门间间的

345、的联联合合与协作的机构。与协作的机构。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(1)软件产品质量管理的特点:)软件产品质量管理的特点:软软件件质质量量管管理理应应该该贯贯穿穿软软件件开开发发的的全全过过程程,而而不不仅仅仅仅是是软软件件本身。本身。对开发文档的评审是产品检验的重要方式。对开发文档的评审是产品检验的重要方式。通过技术手段保证质量。通过技术手段保证质量。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(2)软件质量管理的指导思想)软件质量管理的指导思想缺陷预防缺陷预防紧紧扣住用户需求紧紧扣住用户需求采用快速原型法采用快速原型法充分设计之后再编码充分设

346、计之后再编码牢牢控制对缺陷的修改牢牢控制对缺陷的修改充分进行软件的系统测试充分进行软件的系统测试恰当掌握软件的放行标准恰当掌握软件的放行标准软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系要要制制定定质质量量方方针针和和质质量量目目标标,配配备备足足够够的的人人力力、物物力力资资源源,明确各岗位的质量职责,并保证质量体系的运行。明确各岗位的质量职责,并保证质量体系的运行。根根据据ISO9001标标准准的的要要求求,建建立立了了程程序序文文件件、操操作作指指导导书书和和质质量量记记录录,对对公公司司运运行行的的主主要要过过程程规规定定

347、了了操操作作的的规规范范,并并在在工工作作中严格执行中严格执行。对开发人员、测试人员和内审员进行各自专业的培训。对开发人员、测试人员和内审员进行各自专业的培训。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系质量管理部门的职责质量管理部门的职责实行实行“检、监、控检、监、控”三分离的职责设置三分离的职责设置质质量量管管理理部部的的具具体体职职能能是是:制制定定质质量量管管理理工工作作计计划划;对对各各部部门门的的质质量量管管理理工工作作提提出出建建议议指指导导;跟跟踪踪、内内审审、分分析析质质量量体体系系的的运运行行;控控制制软软件

348、件和和开开发发文文档档的的版版本本;确确认认软软件件产产品品的的测测试试结结果果;组织质量体系的改进。组织质量体系的改进。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系基于基于ISO9001标准和标准和CMM原则的开发流程管理文件原则的开发流程管理文件基基于于ISO9001标标准准,并并吸吸收收CMM的的原原则则,公公司司应应制制定定大大量量的的程程序序文文件件和和指指导导书书,以以及及记记录录这这些些流流程程操操作作的的记记录录表表格格,为为各各项项操操作提供了科学合理的指导,构成了完整严密的质量保证体系。作提供了科学合理的指导

349、,构成了完整严密的质量保证体系。对软件开发过程的监督对软件开发过程的监督根根据据ISO9001标标准准,公公司司应应制制定定软软件件开开发发全全过过程程的的一一系系列列流流程程文文件件。质质量量管管理理部部根根据据这这些些文文件件,抽抽查查开开发发的的实实际际过过程程是是否否遵遵守守了了流程文件,从而实现对软件开发过程的监督。流程文件,从而实现对软件开发过程的监督。第第11章章软件工程质量软件工程质量软件质量,是贯穿软件生存期的一个极为重要的问软件质量,是贯穿软件生存期的一个极为重要的问题,是验证软件开发过程中所使用的各种开发技术和方题,是验证软件开发过程中所使用的各种开发技术和方法有效性的最

350、终体现。法有效性的最终体现。1、软件质量的定义软件质量可定义为:软件质量可定义为:“与软件产品满足规定的和隐与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体含的需求的能力有关的特征或特性的全体”;或;或“所有所有描述计算机软件优秀程度的特性的组合描述计算机软件优秀程度的特性的组合”。软件质量是各种特性的复杂组合。它随着应用的不软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。同而不同,随着用户提出的质量要求不同而不同。软件工程质量软件工程质量软件质量反映了以下三方面的问题:软件质量反映了以下三方面的问题:(1)软软件件需需求求是是度度量量软软件

351、件质质量量的的基基础础。不不符符合合需需求求的的软件就不具备质量。软件就不具备质量。(2)在在各各种种标标准准中中定定义义了了一一些些开开发发准准则则,用用来来指指导导软软件件人人员员用用工工程程化化的的方方法法来来开开发发软软件件。如如果果不不遵遵守守这这些些开开发准则,软件质量就得不到保证。发准则,软件质量就得不到保证。(3)往往往往会会有有一一些些隐隐含含的的需需求求没没有有明明确确地地提提出出来来。如如果果软软件件只只满满足足那那些些精精确确定定义义了了的的需需求求而而没没有有满满足足这这些些隐隐含的需求,软件质量也不能保证。含的需求,软件质量也不能保证。软件工程质量软件工程质量2、软

352、件质量的特性软件质量的特性人们通常用软件质量模型来描述影响软件质量的特性。人们通常用软件质量模型来描述影响软件质量的特性。软件质量模型定义成分层模型。软件质量模型定义成分层模型。在在分分层层的的模模型型中中,最最基基本本的的叫叫做做基基本本质质量量特特性性,它它可以由一些子质量特性定义和度量。可以由一些子质量特性定义和度量。二二次次特特性性在在必必要要时时又又可可由由它它的的一一些些子子质质量量特特性性定定义义和度量。和度量。软件工程质量软件工程质量2、软件质量的特性软件质量的特性(1)ISO的软件质量评价模型的软件质量评价模型按按照照ISO/TC97/SC7/WG3/1985130/N382

353、,软软件件质量度量模型由三层组成,质量度量模型由三层组成,高层高层(toplevel)软件质量需求评价准则软件质量需求评价准则(SQRC)中层中层(midlevel)软件质量设计评价准则软件质量设计评价准则(SQDC)低层低层(lowlevel)软件质量度量评价准则软件质量度量评价准则(SQMC)其其中中,应应对对高高层层和和中中层层建建立立国国际际标标准准,而而低低层层可可由由各各使使用用单单位位视实际情况制定。视实际情况制定。软件工程质量软件工程质量2、软件质量的特性软件质量的特性(2)McCall质量模型质量模型这这是是McCall等等人人于于1979年年提提出出的的软软件件质质量量模模

354、型型。其其软软件件质质量概念基于量概念基于11个特性之上。个特性之上。其其中中反反映映产产品品运运行行特特性性的的包包括括正正确确性性、可可靠靠性性、效效率率、完完整性整性、可使用性、可使用性;反映产品修改特性的包括可维护性反映产品修改特性的包括可维护性、可测试性、可测试性、灵活性、灵活性;反映产品转移特性的包括可移植性反映产品转移特性的包括可移植性、复用性、复用性、互连性;、互连性;软件工程质量软件工程质量2、软件质量的特性软件质量的特性(3)上海软件中心上海软件中心(SSC)的软件质量度量模型的软件质量度量模型在在SSC模模型型中中,用用了了与与ISO/IEC9126相相同同的的6个个质质

355、量量特特性性,它它们们分分别别是是功功能能性性(正正确确性性)、可可靠靠性性、易易使使用用性性、效效率率、可可维维护护性性和和可可移移植植性性。同同时时设设置置了了22个个质质量量子特性,是参照子特性,是参照McCall模型定义的。模型定义的。软件工程质量软件工程质量3、软件质量的度量、软件质量的度量软件质量的高低,必须有一定的衡量标准。软件质量的高低,必须有一定的衡量标准。(1)软件质量度量的条件通常有以下几项:)软件质量度量的条件通常有以下几项:适适应应性性:必必须须制制定定能能适适应应各各种种用用户户要要求求、软软件件类类型型和和规规模模的的质量标准,并能够度量。质量标准,并能够度量。易

356、学性:易学性:不需要特殊技术,软件技术人员人人都容易掌握。不需要特殊技术,软件技术人员人人都容易掌握。可可靠靠性性:对对同同一一个个软软件件的的评评价价,尽尽管管评评价价的的人人或或场场合合可可能能不不同,但评价结果必须一致。同,但评价结果必须一致。针针对对性性:不不是是在在检检查查时时才才改改进进质质量量,而而必必须须从从设设计计阶阶段段起起就就确立质量目标,在各个阶段实施落实。确立质量目标,在各个阶段实施落实。客客观观性性:要要从从各各种种不不同同角角度度加加以以评评价价,并并将将评评价价结结果果定定量量地地表示,使得人人都能理解。表示,使得人人都能理解。经经济济性性:考考虑虑如如何何才才

357、能能把把质质量量度度量量和和保保证证所所需需要要的的费费用用控控制制在适当的范围内。在适当的范围内。软件工程质量软件工程质量3、软件质量的度量、软件质量的度量标准分为三级:标准分为三级:质量需求评价准则:是否满足用户的要求质量需求评价准则:是否满足用户的要求质质量量设设计计评评价价准准则则:开开发发者者在在设设计计实实现现时时是是否否按按软软件件需需求保证了质量求保证了质量质量度量准则:定量度量质量而规定的一些检查项目质量度量准则:定量度量质量而规定的一些检查项目软件质量度量的方法有三种:软件质量度量的方法有三种:精密度量精密度量全面度量全面度量简易度量简易度量软件工程质量软件工程质量4、软件

358、质量的评价软件质量的评价(1)评分评分检检查查表表:对对每每一一阶阶段段要要达达到到的的质质量量指指标标详详细细开开列列建建立立度度量量工工作作表表,在在表表中中,以以提提问问题题方方式式,列列出出在在某某一一阶阶段段为为实实现现某某一一质质量指标,应达到什么标准。量指标,应达到什么标准。回回答答问问题题需需参参照照各各类类文文档档,以以及及开开发发过过程程中中积积累累的的各各种种数数据据,特别是对出错数据的记录。特别是对出错数据的记录。依据软件实际成果进行评分。依据软件实际成果进行评分。软件工程质量软件工程质量4、软件质量的评价软件质量的评价(2)分析结果分析结果根根据据评评分分的的结结果果

359、,对对照照评评价价指指标标。检检查查某某个个质质量量特特性性是是否否达达到到了了要要求求的的质质量量标标准准。如如果果某某个个质质量量特特性性不不符符合合规规定定的的标标准准,就就应当分析这个质量持性,找出为什么达不到标准的原因。应当分析这个质量持性,找出为什么达不到标准的原因。分分析析原原因因应应该该自自顶顶向向下下进进行行。按按系系统统级级、子子系系统统级级、模模块块级级逐步分析。逐步分析。质量特性的得分低于规定的质量指标有两个可能的原因:质量特性的得分低于规定的质量指标有两个可能的原因:该该质质量量特特性性与与其其他他质质量量特特性性冲冲突突,而而那那些些质质量量特特性性是是很很重重要的

360、;要的;这个软件部分有质量问题。这个软件部分有质量问题。软件工程质量软件工程质量5、软件质量保证软件质量保证软软件件质质量量保保证证,是是指指为为保保证证产产品品和和服服务务充充分分满满足足消消费费量量要要求求的质量而进行的有计划、有组织的活动。的质量而进行的有计划、有组织的活动。软件的质量保证就是向用户及社会提供满意的高质量的产品。软件的质量保证就是向用户及社会提供满意的高质量的产品。软件工程质量软件工程质量5、软件质量保证软件质量保证软件质量保证的主要任务大致可归结为软件质量保证的主要任务大致可归结为8点:点:(1)用户要求定义用户要求定义(2)力争不重复劳动力争不重复劳动(3)掌握开发新

361、软件的方法掌握开发新软件的方法(4)组织外部力量协作组织外部力量协作(5)排除无效劳动排除无效劳动(6)发挥每个开发者的能力发挥每个开发者的能力(7)提高软件开发的工程能力提高软件开发的工程能力(8)提高计划和管理质量提高计划和管理质量软件工程质量软件工程质量软件质量保证体系 软软件件的的质质量量保保证证活活动动,是是涉涉及及各各个个部部门门的的部部门门间间的的活动。活动。 质质量量保保证证体体系系:为为了了顺顺利利开开展展质质量量保保证证活活动动,需需要要事事先先明明确确部部门门间间的的质质量量保保证证业业务务,确确立立部部门门间间的的联联合合与协作的机构。与协作的机构。软件工程质量软件工程

362、质量6、软件质量管理体系软件质量管理体系(1)软件产品质量管理的特点:)软件产品质量管理的特点:软软件件质质量量管管理理应应该该贯贯穿穿软软件件开开发发的的全全过过程程,而而不不仅仅仅仅是是软软件件本身。本身。对开发文档的评审是产品检验的重要方式。对开发文档的评审是产品检验的重要方式。通过技术手段保证质量。通过技术手段保证质量。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(2)软件质量管理的指导思想)软件质量管理的指导思想缺陷预防缺陷预防紧紧扣住用户需求紧紧扣住用户需求采用快速原型法采用快速原型法充分设计之后再编码充分设计之后再编码牢牢控制对缺陷的修改牢牢控制对缺陷的修改充分进

363、行软件的系统测试充分进行软件的系统测试恰当掌握软件的放行标准恰当掌握软件的放行标准软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系要要制制定定质质量量方方针针和和质质量量目目标标,配配备备足足够够的的人人力力、物物力力资资源源,明确各岗位的质量职责,并保证质量体系的运行。明确各岗位的质量职责,并保证质量体系的运行。根根据据ISO9001标标准准的的要要求求,建建立立了了程程序序文文件件、操操作作指指导导书书和和质质量量记记录录,对对公公司司运运行行的的主主要要过过程程规规定定了了操操作作的的规规范范,并并在在工工作作中严格执行中严格

364、执行。对开发人员、测试人员和内审员进行各自专业的培训。对开发人员、测试人员和内审员进行各自专业的培训。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系质量管理部门的职责质量管理部门的职责实行实行“检、监、控检、监、控”三分离的职责设置三分离的职责设置质质量量管管理理部部的的具具体体职职能能是是:制制定定质质量量管管理理工工作作计计划划;对对各各部部门门的的质质量量管管理理工工作作提提出出建建议议指指导导;跟跟踪踪、内内审审、分分析析质质量量体体系系的的运运行行;控控制制软软件件和和开开发发文文档档的的版版本本;确确认认软软件件产产品

365、品的的测测试试结结果果;组织质量体系的改进。组织质量体系的改进。软件工程质量软件工程质量6、软件质量管理体系软件质量管理体系(3)软件开发的质量管理体系软件开发的质量管理体系基于基于ISO9001标准和标准和CMM原则的开发流程管理文件原则的开发流程管理文件基基于于ISO9001标标准准,并并吸吸收收CMM的的原原则则,公公司司应应制制定定大大量量的的程程序序文文件件和和指指导导书书,以以及及记记录录这这些些流流程程操操作作的的记记录录表表格格,为为各各项项操操作提供了科学合理的指导,构成了完整严密的质量保证体系。作提供了科学合理的指导,构成了完整严密的质量保证体系。对软件开发过程的监督对软件

366、开发过程的监督根根据据ISO9001标标准准,公公司司应应制制定定软软件件开开发发全全过过程程的的一一系系列列流流程程文文件件。质质量量管管理理部部根根据据这这些些文文件件,抽抽查查开开发发的的实实际际过过程程是是否否遵遵守守了了流程文件,从而实现对软件开发过程的监督。流程文件,从而实现对软件开发过程的监督。第第12章章软件工程项目管理软件工程项目管理软件项目管理软件项目管理常见管理技术及工具简介常见管理技术及工具简介软件过程成熟度模型软件过程成熟度模型利用利用CMM对软件机构进行成熟度评估对软件机构进行成熟度评估项目管理认证体系项目管理认证体系IPMP和和PMP软件工程项目管理软件工程项目管

367、理通通过过软软件件项项目目管管理理,可可以以保保证证在在给给定定资资源源与与环环境境下下,有有效效地地组组织织人人力力、物物力力、财财力力,在在预预期期的的时时间间内内,完完成成预定软件项目。预定软件项目。项项目目管管理理的的内内容容包包括括项项目目计计划划管管理理、质质量量管管理理、人人员员组组织织管管理理、文文档档管管理理、成成本本控控制制和和配配置置管管理理。由由于于软软件件的的易易变变动动性性,软软件件配配置置的的管管理理成成为为软软件件项项目目管管理理的的重重点内容。点内容。软软件件项项目目管管理理开开始始于于任任何何技技术术活活动动之之前前,贯贯穿穿于于软软件的整个生命周期之中。件

368、的整个生命周期之中。软件工程项目管理软件工程项目管理软件项目管理的主要职能包括:软件项目管理的主要职能包括:(1)制制定定计计划划:规规定定待待完完成成的的任任务务、要要求求、资资源源、人人力和进度等。力和进度等。(2)建建立立组组织织:为为实实施施计计划划,保保证证任任务务的的完完成成,需需要要建立分工明确的责任制机构。建立分工明确的责任制机构。(3)配备人员:任用各种层次的技术人员和管理人员。配备人员:任用各种层次的技术人员和管理人员。(4)指导:鼓励和动员软件人员完成所分配的工作。指导:鼓励和动员软件人员完成所分配的工作。(5)检验:对照计划或标准,监督和检查实施的情况。检验:对照计划或

369、标准,监督和检查实施的情况。常见管理技术及工具简介常见管理技术及工具简介软件项目管理的主要内容软件项目管理的主要内容1 1、项目计划管理、项目计划管理项目计划内容包括:项目计划内容包括:(1)范围:定义该软件项目所要做的工作以及性能限制范围:定义该软件项目所要做的工作以及性能限制(2)资源:包括人员资源、软硬件资源的管理资源:包括人员资源、软硬件资源的管理(3)进度安排进度安排其主要的方法有:工程网络图、其主要的方法有:工程网络图、cantt图、任务资源表。图、任务资源表。(4)成本估算成本估算(5)培训计划培训计划:为用户各级人员制定培训计划。为用户各级人员制定培训计划。常见管理技术及工具简

370、介常见管理技术及工具简介软件项目管理的主要内容软件项目管理的主要内容2 2、软件质量控制、软件质量控制软件质量控制的主要措施有计划、评审、测试和复审。软件质量控制的主要措施有计划、评审、测试和复审。 计划计划是指在软件定义阶段就要根据项目的要求确定质是指在软件定义阶段就要根据项目的要求确定质量保证体系量保证体系 评审评审主要是针对软件开发的需求分析、系统设计各阶主要是针对软件开发的需求分析、系统设计各阶段完成的文档进行审查验证。段完成的文档进行审查验证。 测试测试系统主要查看系统的实现情况。系统主要查看系统的实现情况。 复审复审是确认软件开发各阶段完成里程碑的过程。是确认软件开发各阶段完成里程

371、碑的过程。常见管理技术及工具简介常见管理技术及工具简介3、人员组织管理、人员组织管理软件开发组织中的技术人员主要有系统分析员,系统高级程序员,软件开发组织中的技术人员主要有系统分析员,系统高级程序员,程序员,以及辅助人员,如文档录入员,技术秘书等,系统分析员通程序员,以及辅助人员,如文档录入员,技术秘书等,系统分析员通常也是项目经理。初、中、高级人员比例通常为常也是项目经理。初、中、高级人员比例通常为10:3:1或者或者10:4:1。 4 4、文档管理、文档管理编编制制软软件件文文档档的的目目的的:详详细细记记录录开开发发过过程程中中的的工工作作进进展展情情况况、技技术信息,以及软件运行、维护

372、、培训的信息术信息,以及软件运行、维护、培训的信息 。软件文档可分为用户文档、技术文档和维护文档三类:软件文档可分为用户文档、技术文档和维护文档三类:(1)提供给用户的文档)提供给用户的文档(2)开发人员使用文档)开发人员使用文档(3)维护文档)维护文档常见管理技术及工具简介常见管理技术及工具简介5 5、软件配置管理、软件配置管理软软件件开开发发和和维维护护过过程程中中引引起起的的变变更更,增增加加了了项项目目中中程序员之间通信与协调的难度。程序员之间通信与协调的难度。 由由于于变变更更在在软软件件开开发发和和运运行行期期间间的的任任何何时时刻刻都都可可以以发发生生,因因此此软软件件配配置置管

373、管理理应应用用于于软软件件生生存存期期的的全全过过程程,它它开始于软件项目启动,结束于软件被丢弃。开始于软件项目启动,结束于软件被丢弃。常见管理技术及工具简介常见管理技术及工具简介5、软件配置管理、软件配置管理软件配置管理的主要内容包括:软件配置管理的主要内容包括:(1)配置标识与版本控制配置标识与版本控制(2)变更控制变更控制(3)软件配置审核软件配置审核(4)向有关人员报告变更向有关人员报告变更常见管理技术及工具简介常见管理技术及工具简介常见工具简介常见工具简介 1 1、 Microsoft Visual SourceSafe 6.0 Microsoft Visual SourceSafe

374、 6.0(VSSVSS) Microsoft Microsoft Visual Visual SourceSafe SourceSafe 6.06.0是是由由微微软软开开发发和和维维护护的的源源代代码码版版本本控控制制软软件件。Visual Visual SourceSafe SourceSafe 是是一一种种源源代代码码控控制制系系统统,它它提提供供了了完完善善的的版版本本和和配配置置管管理理功功能能,以及安全保护和跟踪检查功能。以及安全保护和跟踪检查功能。 2 2、 Concurrent Version System Concurrent Version System (并发版本管理系统)

375、(并发版本管理系统) Concurrent Concurrent Version Version SystemSystem(并并行行版版本本系系统统),简简称称CVSCVS,用用于于版版本本管管理理。它它是是一一个个C/SC/S系系统统,多多个个开开发发人人员员通通过过一一个个中中心心版版本本控控制制系系统统来来记记录录文文件件版版本本,从从而而达达到到保保证文件同步的目的证文件同步的目的 。常见管理技术及工具简介常见管理技术及工具简介常见工具简介常见工具简介3 3、 ClearCase6.0 ClearCase6.0ClearCase主要应用于复杂的产品发放、分布式团主要应用于复杂的产品发放

376、、分布式团队合作、并行的开发和维护任务,包括支持当今流行软队合作、并行的开发和维护任务,包括支持当今流行软件开发环境件开发环境Client/Server网络结构。网络结构。ClearCase的四个具体功能的四个具体功能(1)版本控制()版本控制(VersionControl)(2)工作间管理()工作间管理(WorkspaceManagement)(3)建立管理()建立管理(BuildManagement)(4)过程控制()过程控制(ProcessControl)软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM(CapabilityMaturityModel)即能力

377、成熟度即能力成熟度模型。用于评价软件机构的软件过程能力成熟度的模型。模型。用于评价软件机构的软件过程能力成熟度的模型。此模型在建立和发展之初,主要目的在于为大型软件项此模型在建立和发展之初,主要目的在于为大型软件项目的招投标活动提供一种全面而客观的评审依据,发展目的招投标活动提供一种全面而客观的评审依据,发展到后来,又同时被应用于许多软件机构内部的过程改进到后来,又同时被应用于许多软件机构内部的过程改进活动中。活动中。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM可以指导软件机构可以指导软件机构(1)通过确定当前的过程成效度状况、识别对过程改进)通过确定当前的过

378、程成效度状况、识别对过程改进起关键作用的一些问题来明确过程改进的方向和策略起关键作用的一些问题来明确过程改进的方向和策略;(2)通过有限的一组与过程改进的方向和策略相一致的)通过有限的一组与过程改进的方向和策略相一致的过程改进活动的集中开展。过程改进活动的集中开展。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM提供了一个级别框架,将不同软件机构所拥有提供了一个级别框架,将不同软件机构所拥有的不同软件过程,根据其过程成熟度的不同划分成由低到的不同软件过程,根据其过程成熟度的不同划分成由低到高的五个级别高的五个级别CMM所提供的五个级别包括,初始级所提供的五个级别包

379、括,初始级(又称为又称为“l级级”)、可重复级、可重复级(又称为又称为“2级级”)、已定义级、已定义级(又称为又称为“3级级”)、已管理级、已管理级(又称为又称为“4级级”)和优化级和优化级(又称为又称为“5级级”)。CMM的每一个成熟度级别中都包含一组过程改进的的每一个成熟度级别中都包含一组过程改进的目标,满足这些目标后,一个机构的软件过程就从当前级目标,满足这些目标后,一个机构的软件过程就从当前级别进化到下一个成熟度级别中别进化到下一个成熟度级别中,随着成熟度级别的不断随着成熟度级别的不断上升,该机构的过程改进活动取得了愈加显著的成效上升,该机构的过程改进活动取得了愈加显著的成效见图见图软

380、件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM的五个成熟度级别的五个成熟度级别的划分:的划分:(1)初始级初始级(2)可重复级可重复级(3)已定义级已定义级(4)已管理级已管理级(5)优化级优化级在初始级,软件机构的软件过程是没在初始级,软件机构的软件过程是没有规律的,有时甚至是混乱的,没有真正有规律的,有时甚至是混乱的,没有真正确定的软件过程。在项目进行过程中,通确定的软件过程。在项目进行过程中,通常没有依照所规划的程序,时常因时间紧常没有依照所规划的程序,时常因时间紧迫而把力量集中在编码和测试上,项目的迫而把力量集中在编码和测试上,项目的成功与否完全依赖于软件

381、开发队伍的整体成功与否完全依赖于软件开发队伍的整体水平,一旦该开发队伍不再负责此项目,水平,一旦该开发队伍不再负责此项目,各种问题就会接踵而来。各种问题就会接踵而来。在在此此级级别别上上稳稳定定的的软软件件过过程程是是很很少少的的,产产品品性性能能只只能能根根据据相相关关人人员员的的个个人人工工作作能能力而不是软件机构的过程能力来预测。力而不是软件机构的过程能力来预测。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM的五个成熟度级别的五个成熟度级别的划分:的划分:(1)初始级初始级(2)可重复级可重复级(3)已定义级已定义级(4)已管理级已管理级(5)优化级优化级

382、在可重复级,软件机构建立了基本的在可重复级,软件机构建立了基本的项目管理过程项目管理过程(过程模型过程模型),包括软件项目,包括软件项目管理方针和工作程序,可用于跟踪成本、管理方针和工作程序,可用于跟踪成本、进度、功能和质量。进度、功能和质量。对新项目的策划和管理过程是基于以对新项目的策划和管理过程是基于以前类似软件项目的实践经验,使得有类似前类似软件项目的实践经验,使得有类似应用经验的软件项目能够再次取得成功。应用经验的软件项目能够再次取得成功。达到达到2级的级的个目标是使项目管理过程稳个目标是使项目管理过程稳定。定。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型C

383、MM的五个成熟度级别的五个成熟度级别的划分:的划分:(1)初始级初始级(2)可重复级可重复级(3)已定义级已定义级(4)已管理级已管理级(5)优化级优化级在已定义级,软件机构已定义了完整在已定义级,软件机构已定义了完整的软件过程的软件过程(过程模型过程模型),并在软件过程工,并在软件过程工程活动和软件项目工程活动中实现了标准程活动和软件项目工程活动中实现了标准化和文档化。在此软件机构中,有化和文档化。在此软件机构中,有个固个固定的过程小组定的过程小组(过程工程师、过程管理者过程工程师、过程管理者和过程执行者和过程执行者)从事软件过程工程活动。从事软件过程工程活动。在此软件机构内实施了培训计划,

384、能在此软件机构内实施了培训计划,能够保证全体项目负责人和项目开发人员具够保证全体项目负责人和项目开发人员具有完成他们任务所要求的知识和技能有完成他们任务所要求的知识和技能。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM的五个成熟度级别的五个成熟度级别的划分:的划分:(1)初始级初始级(2)可重复级可重复级(3)已定义级已定义级(4)已管理级已管理级(5)优化级优化级在在已已管管理理级级,软软件件机机构构对对软软件件过过程程(过过程程模模型型和和过过程程实实例例)和和软软件件产产品品建建立立了了定定量量的的质质量量目目标标,所所有有项项目目的的重重要要的的过过程程

385、活活动都是可度量的。动都是可度量的。该该软软件件机机构构收收集集了了过过程程度度量量和和产产品品度度量量的的方方法法并并加加以以运运用用,可可以以定定量量地地了了解解和和控控制制软软件件过过程程和和软软件件产产品品,并并为为评评定定项项目目的过程质量和产品质量奠定了基础。的过程质量和产品质量奠定了基础。软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型软件过程成熟度模型CMM的五个成熟度级别的五个成熟度级别的划分:的划分:(1)初始级初始级(2)可重复级可重复级(3)已定义级已定义级(4)已管理级已管理级(5)优化级优化级在在优优化化级级,软软件件机机构构集集中中精精力力进进行行不不断断的

386、的过过程程改改进进。此此时时,该该软软件件机机构构是是一一个个以以防防止止缺缺陷陷出出现现为为目目标标的的机机构构,它它有有能能力力识识别别软软件件过过程程要要素素的的薄薄弱弱环环节节,有有充充分分的的手段改进它们。手段改进它们。在在该该机机构构中中,有有关关软软件件过过程程有有效效性性的的统统计计数数据据是是可可以以得得到到的的,它它可可用用于于对对新新技技术术进进行行成成本本效效率率分分析析,并并优优化化出出所所能能采采用的软件工程实践中最佳的新方法。用的软件工程实践中最佳的新方法。利用利用CMM对软件机构进行成熟度评估对软件机构进行成熟度评估评估过程有以下几步:评估过程有以下几步:(1)

387、建建立立评评估估组组成成员员应应对对软软件件过过程程、软软件件技技术术和和应应用用领领域很熟悉,有实践经验、能够提出见解。域很熟悉,有实践经验、能够提出见解。(2)评评估估组组准准备备具具体体审审定定评评估估的的问问题题,决决定定对对每每一一个个问问题要求展示哪些材料和工具。题要求展示哪些材料和工具。(3)项项目目准准备备评评估估组组与与被被评评估估机机构构领领导导商商定定选选择择哪哪些些处处在在不不同同开开发发阶阶段段的的项项目目和和典典型型的的标标准准实实施施作作为为评评估估对对象象。将评估时间安排通知被评估项目负责人。将评估时间安排通知被评估项目负责人。利用利用CMM对软件机构进行成熟度

388、评估对软件机构进行成熟度评估(4)进进行行评评估估对对被被评评估估机机构构的的管管理理人人员员和和项项目目负负责责人人说说明明评评估估过过程程。评评估估组组与与项项目目负负责责人人一一起起就就所所列列出出的的问问题题逐逐一一对对照照审审查查,保保证证对对问问题题的的回回答答有有一一致致的的解解释释,从从而而取得一组初始答案。取得一组初始答案。(5)初评对每个项目和整个机构做出成熟度等级初评。初评对每个项目和整个机构做出成熟度等级初评。(6)讨讨论论初初评评结结果果。使使用用备备用用资资料料及及工工具具演演示示从从而而决决定定可能的成熟度等级。可进一步证实某些问题的答案可能的成熟度等级。可进一步

389、证实某些问题的答案(7)给给出出最最后后的的结结论论由由评评估估组组综综合合问问题题的的答答案案、后后继继问问题的答案,以及背景证据,做出最终评估结论。题的答案,以及背景证据,做出最终评估结论。项目管理认证体系项目管理认证体系IPMP与与PMP项目管理认证体系项目管理认证体系IPMP与与PMP目前,在我国项目管理领域有两种认证体系,即目前,在我国项目管理领域有两种认证体系,即IPMP与与PMP。1、国际项目管理专业资质认证(、国际项目管理专业资质认证(IPMP)简介)简介IPMP是是一一种种对对项项目目管管理理人人员员知知识识、经经验验和和能能力力水水平平的的综综合合评评估估证证明明,根根据据

390、IPMP认认证证等等级级划划分分获获得得IPMP各各级级项项目目管管理理认认证证的的人人员员,将将分分别别具具有有负负责责大大型型国国际际项项目目、大大型型复复杂杂项项目目、一一般般复复杂杂项项目目或或具具有有从从事事项项目目管管理理专专业业工作的能力。工作的能力。项目管理认证体系项目管理认证体系IPMP与与PMP国际项目管理专业资质认证(国际项目管理专业资质认证(IPMP)IPMP有四个级别有四个级别IPMPA级:认证的高级项目经理;级:认证的高级项目经理;IPMPB级:认证的项目经理;级:认证的项目经理;IPMPC级:认证的项目管理专家;级:认证的项目管理专家;IPMPD级:认证的项目管理

391、专业人员。级:认证的项目管理专业人员。项目管理认证体系项目管理认证体系IPMP与与PMP2、PMP简介简介PMP是美国项目管理协会(是美国项目管理协会(PMI)推行的一种认证体系。)推行的一种认证体系。PMP认认证证只只有有一一个个级级别别,对对参参加加PMP认认证证学学员员资资格格的要求与的要求与IPMP的的C级相当。级相当。PMP在在中中国国的的认认证证,是是完完全全由由PMI组组织织考考试试,有有关关PMP的的认认证证程程序序、培培训训、考考试试等等均均是是英英语语,现现在在正正逐逐步步汉化,采用英汉对照式。汉化,采用英汉对照式。PMP在在中中国国认认证证的的代代理理点点只只负负责责培培

392、训训与与考考试试的的组组织织工工作作,至至于于认认证证学学员员是是否否通通过过认认证证考考核核,是是否否获获得得证证书书以以及及对对证证书书的的发发放放与与管管理理,必必须须上上报报至至PMI,由由PMI决决策。策。项目管理认证体系项目管理认证体系IPMP与与PMP3、国际项目管理协会国际项目管理协会(IPMA)简介)简介国国际际项项目目管管理理协协会会(IPMA)是是一一个个在在瑞瑞士士注注册册的的非非赢利性组织。它的职能是促进项目管理的国际化。赢利性组织。它的职能是促进项目管理的国际化。IPMA创创建建于于1965年年,早早先先的的名名字字是是INTERNET,是是一一个个在在国国际际项项

393、目目领领域域的的项项目目经经理理之之间间交交流流各各自自经经验验的的论论坛坛。她她于于1967年年在在维维也也纳纳主主持持召召开开了了第第一一届届国国际际会会议议。项目管理从那时起即作为一门学科而不断发展。项目管理从那时起即作为一门学科而不断发展。项目管理认证体系项目管理认证体系IPMP与与PMP4、中国项目管理研究委员会(中国项目管理研究委员会(PMRC)简介)简介PMRC正式成立于正式成立于1991年年6月,挂靠在西北工业大学,月,挂靠在西北工业大学,是我国唯一的、跨行业的、全国性的、非盈利的项目管是我国唯一的、跨行业的、全国性的、非盈利的项目管理专业组织理专业组织。IPMA全权授权全权授

394、权PMRC负责中国的负责中国的IPMP认证,所以认证,所以认证学员是否通过认证考核,是否获得证书以及对证书认证学员是否通过认证考核,是否获得证书以及对证书的发放与管理,是在的发放与管理,是在IPMA的指导与监督下,由的指导与监督下,由IPMP中中国认证委员会负责。国认证委员会负责。软件过程成熟度模型软件过程成熟度模型初始级初始级可重复级可重复级已定义级已定义级已管理级已管理级优化级优化级12345返回返回第第1章章概述概述 工程将理论和所学的知识应用于实践的科学。工程将理论和所学的知识应用于实践的科学。 软件工程应用计算机科学、数学及管理科学等原理,软件工程应用计算机科学、数学及管理科学等原理

395、,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。管理科学用于计划、资源、质量、成本等管理。 软件工程是一门交叉性学科。软件工程是一门交叉性学科。软件工程的主要内容软件工程的主要内容n软件工程的基本概念软件工程的基本概念n软件开发模型软件开发模型n软件开发各阶段的任务、技术

396、、方法软件开发各阶段的任务、技术、方法n软件过程软件过程n软件工具软件工具n软件工程管理软件工程管理n软件质量保证软件质量保证n软件工程环境软件工程环境n软件经济学软件经济学软件的概念软件的概念n程序、软件与软件产品程序、软件与软件产品独唱独唱-小合唱小合唱-合唱合唱-万人大合唱万人大合唱|简单程序简单程序较复杂程序较复杂程序软件软件n软件定义:软件定义:软件软件=程序程序+数据数据+文档文档程序:按事先设计的功能和性能需求执行的指令序列程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材

397、料文档:与程序开发、维护和使用有关的图文材料 软件的特点软件的特点软件是逻辑实体。具有抽象性。软件的形态不软件是逻辑实体。具有抽象性。软件的形态不可见,必须通过观察、分析、思考、判断来了解其可见,必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。功能、性能和其它特性。软件是人脑思维的产物,其生产过程与硬件不软件是人脑思维的产物,其生产过程与硬件不同开发过程的质量控制及软件产品保护问题。同开发过程的质量控制及软件产品保护问题。软件的开发和运行受计算机系统限制软件软件的开发和运行受计算机系统限制软件移植问题。移植问题。软件的开发技术落后,手工开发方式仍占统治软件的开发技术落后,手工开发方

398、式仍占统治地位,开发效率低。地位,开发效率低。 软件的特点软件的特点软件的失效率与硬件不同。软件的失效率与硬件不同。失效率时间硬件失效率曲线失效率时间软件失效率曲线 软件的特点软件的特点软件的复杂性越来越高,对软件人员的要求越软件的复杂性越来越高,对软件人员的要求越来越高,出现了软件复杂性与软件技术发展的来越高,出现了软件复杂性与软件技术发展的不适应现象。不适应现象。软件复杂性差距软件需求与软件技术发展现状软件需求与软件技术发展现状软件需求时间软件技术软件技术进步落后于需求增长软件技术进步落后于需求增长 软件的特点软件的特点 软件的特点软件的特点软件的开发研制成本高,自年代以来,已软件的开发研

399、制成本高,自年代以来,已大大超过硬件成本。大大超过硬件成本。计算机系统软、硬件成本比例的变化情况计算机系统软、硬件成本比例的变化情况硬件年份年份软件年年年成本成本 软件的特点软件的特点相当多的软件工作涉及社会因素,如机构、体相当多的软件工作涉及社会因素,如机构、体制、管理方式等,包括人的观念及心理,都直制、管理方式等,包括人的观念及心理,都直接影响软件工作的成败。接影响软件工作的成败。 软件的分类软件的分类按功能按功能按规模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响系统软件支撑软件应用软件按服务对象按服务对象 软件的分类软件的分类按功能按功能按规模按规模按工作方式按工作

400、方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象微型软件小型软件大型软件甚大型软件极大型软件 软件的分类软件的分类按功能按功能按规模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象实时处理软件分时软件交互式软件批处理软件 软件的分类软件的分类按功能按功能按规模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象产品软件项目软件 软件的分类软件的分类按功能按功能按规模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象使用频度低使用频度高 软件的分类软件的分类按功能按功能按规

401、模按规模按工作方式按工作方式按使用频度按使用频度按失效影响按失效影响按服务对象按服务对象不良影响严重影响软件开发的发展过程软件开发的发展过程n程序设计阶段程序设计阶段50至至60年代年代n程序系统阶段程序系统阶段60至至70年代年代n软件工程阶段软件工程阶段70年代以后年代以后计算机应用发展计算机应用发展软件数量多软件数量多规模大规模大软件成本高软件成本高质量低质量低个体化软件开发方法个体化软件开发方法软件维护困难软件维护困难软件危机软件危机软件工程软件工程软件危机软件危机n定义定义计算机软件的开发和维护过程所遇到的一系列严重问题。计算机软件的开发和维护过程所遇到的一系列严重问题。n表现表现n

402、对软件开发成本和进度的估算很不准确对软件开发成本和进度的估算很不准确n用户很不满意用户很不满意n质量很不可靠质量很不可靠n没有适当的文档没有适当的文档n软件成本比重上升软件成本比重上升n供不应求:软件开发生产率跟不上计算机应用迅速深供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势入的趋势软件危机软件危机n原因原因n客观:软件本身特点客观:软件本身特点n逻辑部件逻辑部件n规模庞大规模庞大n主观:不正确的开发方法主观:不正确的开发方法n忽视需求分析忽视需求分析n错误认为:软件开发错误认为:软件开发=程序编写程序编写n轻视软件维护轻视软件维护软件危机软件危机n解决途径解决途径n组织管理组织管理

403、n工程项目管理方法工程项目管理方法n技术措施技术措施n软件开发技术与方法软件开发技术与方法n软件工具软件工具 软件工程软件工程 为了解决软件危机,既要有技术措施(方法和工具)为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理,又要有必要的组织管理措施。软件工程正是从管理和技术方面研究如何更好地开发和维护计算机软件的和技术方面研究如何更好地开发和维护计算机软件的学科。学科。定义定义:软件工程是指导计算机软件开发和维护的工程学科。采软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把用工程的概念、原理、技术和方

404、法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来好的技术方法结合起来即软件工程。即软件工程。 软件工程软件工程软件工程的基本原理软件工程的基本原理(自(自“软件工程软件工程”提出后,专家提出后,专家和学者们陆续提出了和学者们陆续提出了100多条关于软件工程的准则或多条关于软件工程的准则或“信信条条”,有专家归纳出了确保开发质量和效率的原理的最小,有专家归纳出了确保开发质量和效率的原理的最小集合集合7条基本原理):条基本原理):1)用分阶段的生命周期严格管理;用分阶段的生命周期严格管理;2)坚持进行阶段

405、评审;)坚持进行阶段评审;3)实行严格的产品控制;)实行严格的产品控制;4)采用现代程序设计技术;)采用现代程序设计技术;5)结果应能清楚地审查;)结果应能清楚地审查;6)开发小组人员应少而精;)开发小组人员应少而精;7)承认不断改进软件工程实践的必要性)承认不断改进软件工程实践的必要性。 软件工程三要素软件工程三要素软件工程软件工程三个要素三个要素方法工具过程提供一系列软件开发提供一系列软件开发技术。包括完成开发技术。包括完成开发过程中各方面任务的过程中各方面任务的方法并用某种特殊的方法并用某种特殊的语言或图形来描述。语言或图形来描述。 软件工程三要素软件工程三要素软件工程软件工程三个要素三

406、个要素方法工具过程软件工具为软件方法提软件工具为软件方法提供了自动的或半自动的供了自动的或半自动的支撑环境。将多种工具支撑环境。将多种工具集成在一起可构成计算集成在一起可构成计算机辅助软件工程(机辅助软件工程(CASE)的软件开发支)的软件开发支撑系统。撑系统。 软件工程三要素软件工程三要素软件工程软件工程三个要素三个要素方法工具过程软件过程是将软件软件过程是将软件工程的方法和工具工程的方法和工具综合起来,进行软综合起来,进行软件开发。件开发。方法、工具和过程:方法、工具和过程:软件工程方法为软件开发提供了软件工程方法为软件开发提供了 “如何做如何做” 的技术的技术n软件工具为软件工程方法提供

407、了自动的或半自动的软件软件工具为软件工程方法提供了自动的或半自动的软件支撑环境支撑环境n软件工程过程定义了软件工程过程定义了: : n 方法使用的顺序方法使用的顺序n 要求交付的文档资料要求交付的文档资料n 为保证质量和适应变化所需要的管理为保证质量和适应变化所需要的管理n 软件开发各个阶段完成的里程碑软件开发各个阶段完成的里程碑软件工程的三要素软件工程的三要素软件工程项目的基本目标软件工程项目的基本目标n付出较低的开发成本付出较低的开发成本n达到要求的软件功能达到要求的软件功能n取得较好的软件性能取得较好的软件性能n开发的软件易于移植开发的软件易于移植n需要较低的维护费用需要较低的维护费用n

408、能按时完成开发工作,及时交付使用能按时完成开发工作,及时交付使用软件工程基本软件工程基本原则原则n抽象抽象 采用分层次抽象,自顶向下、逐层细化的办法采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性控制软件开发过程的复杂性。n信息隐蔽信息隐蔽 将模块设计成将模块设计成“黑箱黑箱”,实现的细节隐藏,实现的细节隐藏在模块内部,不让模块的使用者直接访问。这就是信息在模块内部,不让模块的使用者直接访问。这就是信息封装,使用与实现分离的原则。封装,使用与实现分离的原则。n模块化模块化 如如 C C 语言程序中的函数过程,语言程序中的函数过程,C+ C+ 语言程序语言程序中的类。模块化有助于

409、信息隐蔽和抽象,有助于表示复中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。杂的系统。n局部化局部化 要求在一个物理模块内集中逻辑上相互关联要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。部具有较强的内聚。这有助于控制解的复杂性。n确定性确定性 软件开发过程中所有概念的表达应是确定的、软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。无歧义性的、规范的。n一致性一致性 整个软件系统的各个模块应使用一致的概念、整个软件系统的各个模块应使用一致的概念、

410、符号和术语。程序内部接口应保持一致。软件和硬件、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一应保持一致。用于形式化规格说明的公理系统应保持一致。致。软件工程基本软件工程基本原则原则n完备性完备性 软件系统不丢失任何重要成分,可以完全实现软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。开发和运行过程中需要严格的技术评审。n可

411、验证性可验证性 开发大型的软件系统需要对系统自顶向下、开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。原则,以确保系统的正确性。软件工程基本软件工程基本原则原则 软件工程过程和软件生命期软件工程过程软件工程过程:软件工程过程是为获得软件产品,在软件工具支持下软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。由软件人员完成的一系列软件工程活动。软件工程过程内容软件工程过程内容软件工程过程特性软件工程过程特性1)软件规格说明:规定软件的功能及运行限制)

412、软件规格说明:规定软件的功能及运行限制2)软件开发:产生满足规格说明的软件)软件开发:产生满足规格说明的软件3)软件确认:对软件能否满足用户要求进行确认)软件确认:对软件能否满足用户要求进行确认4)软件演进:为满足用户的变更要求的演进)软件演进:为满足用户的变更要求的演进 软件工程过程和软件生命期软件工程过程软件工程过程:软件工程过程是为获得软件产品,在软件工具支持下软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。由软件人员完成的一系列软件工程活动。软件工程过程内容软件工程过程内容软件工程过程特性软件工程过程特性1)可理解性;)可理解性;2)可见性;)可见性;

413、3)可支持性;)可支持性;4)可接受性;)可接受性;5)可靠性;)可靠性;6)健壮性;)健壮性;7)可维护性;)可维护性;8)速度。)速度。 软件工程过程和软件生命期软件生命期(软件生命期(Lifecycle):一个软件从定义、开发、使用和维护,直到最终一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命被废弃,所经历的生存过程称为软件生存期或叫生命期。期。生命期的划分:生命期的划分:制定制定计划计划需求分析需求分析和定义和定义软件软件设计设计程序程序编写编写软件软件测试测试运行运行/维护维护定义阶段定义阶段开发阶段开发阶段维护阶段维护阶段 软件生存期模型软

414、件生存期模型瀑布模型瀑布模型原型模型原型模型螺旋模型螺旋模型喷泉模型喷泉模型构件组装模型构件组装模型统一过程模型统一过程模型第四代技术第四代技术 瀑布模型瀑布模型计划计划需求分析需求分析设计设计编码编码测试测试运行、维护运行、维护定义定义阶段阶段开发开发阶段阶段维护维护阶段阶段原型模型原型模型原型模型也称快速原型模型原型模型也称快速原型模型.原型模型的基本思想是:原型模型的基本思想是:软件开发人员在与用户进行需求分析时,软件开发人员在与用户进行需求分析时,以比较小的代价快速建立一个能够反映用户主要需求的原型系以比较小的代价快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上进行操作,在

415、实践过程中提出改进意见,统,让用户在计算机上进行操作,在实践过程中提出改进意见,开发人员根据用户的意见,对原型进行补充和完善,然后再由开发人员根据用户的意见,对原型进行补充和完善,然后再由用户试用、评价、提出建议,重复这一过程,直到用户对开发用户试用、评价、提出建议,重复这一过程,直到用户对开发的原型系统满意为止。的原型系统满意为止。原型模型原型模型原型开发原型开发原型评价原型评价最终系统设计最终系统设计用户用户反馈反馈原型模型原型模型螺旋模型螺旋模型n螺旋模型沿着螺线旋转,在四个象限上分别螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:表达四个方面的活动,即:n制定计划制定计划

416、确定软件目标,选定实施方案,弄确定软件目标,选定实施方案,弄清项目开发的限制清项目开发的限制n风险分析风险分析分析所选方案,考虑如何识别和消分析所选方案,考虑如何识别和消除风险除风险n实施工程实施工程实施软件开发实施软件开发n客户评估客户评估评价开发工作,提出修正建议评价开发工作,提出修正建议螺旋模型螺旋模型螺旋模型n特点特点n瀑布模型瀑布模型+快速原型快速原型+风险分析风险分析n迭代过程迭代过程n一个螺旋一个螺旋式周期式周期n确定目标,选择方案,选定完成目标的策略确定目标,选择方案,选定完成目标的策略n风险角度分析该策略风险角度分析该策略n启动一个开发阶段启动一个开发阶段n评价前一步的结果评

417、价前一步的结果,计划下一轮的工作计划下一轮的工作喷泉模型喷泉模型n迭代迭代n重复重复n演进演进n无间隙无间隙n各阶段间无明显界限各阶段间无明显界限喷泉模型喷泉模型构件组装模型构件组装模型构件组装模型构件组装模型n特点特点:n面向对象面向对象n基于构件库基于构件库n融合螺旋模型特征融合螺旋模型特征n支持软件开发的迭代方法支持软件开发的迭代方法n软件重用软件重用统一过程模型统一过程模型nRationalRational统统一一过过程程(Rational Rational Unified Unified ProcessProcess,RUPRUP)是是由由RationalRational公公司司开开

418、发发的的一一种种软软件件过过程程,它它的开发过程有如下的开发过程有如下3 3个主要特点:个主要特点:n是一种用例(是一种用例(UseUsecasecase)驱动的软件开发过程)驱动的软件开发过程n是以体系结构(是以体系结构(ArchitectureArchitecture)为中心的过程)为中心的过程n迭迭代代(IterativeIterative)开开发发与与增增量量(IncrementalIncremental)开发相结合的过程开发相结合的过程第四代技术第四代技术n“第四代技术第四代技术”(4GT)包含了一系列的软件工具,包含了一系列的软件工具,其特点是:能使软件工程师在较高级别上说明软件的

419、其特点是:能使软件工程师在较高级别上说明软件的某些特征,然后利用工具将开发者的说明自动生成源某些特征,然后利用工具将开发者的说明自动生成源代码,并且软件被说明级别越高,其建造程序的速度代码,并且软件被说明级别越高,其建造程序的速度就越快。就越快。n基于基于4GT的开发过程如下:的开发过程如下:n像其他范型一样,像其他范型一样,4GT也是从需求收集这一步开始。也是从需求收集这一步开始。n制订一个系统的设计策略。制订一个系统的设计策略。n应用应用4GL的生成功能,自动生成所期望的代码。的生成功能,自动生成所期望的代码。n进行测试,完成相关文档,并完成其他软件工程范型中进行测试,完成相关文档,并完成

420、其他软件工程范型中同样要求的所有集成活动,得到最终产品。同样要求的所有集成活动,得到最终产品。软件开发方法简述软件开发方法简述n软件开发方法是指软件开发过程中所应遵循的方法软件开发方法是指软件开发过程中所应遵循的方法和步骤。和步骤。n局部软件开发方法:针对某些活动的开发方法局部软件开发方法:针对某些活动的开发方法n全局软件开发方法:覆盖开发全过程的方法全局软件开发方法:覆盖开发全过程的方法考虑如下的几个因素:考虑如下的几个因素:n(1)对对该该软软件件开开发发方方法法是是否否已已具具有有经经验验,或或有有已已受受过过训训练练的的人人员;员;n(2)为软件开发提供的软件硬件资源及可使用的工具的情

421、况;为软件开发提供的软件硬件资源及可使用的工具的情况;n(3)该开发方法在计划、组织和管理方面的可行性;该开发方法在计划、组织和管理方面的可行性;n(4)对开发项目所涉及领域的知识的掌握情况。对开发项目所涉及领域的知识的掌握情况。软件开发方法简述软件开发方法简述n1 1 、 结构化方法结构化方法结构化方法也称为面向功能的软件开发方法或结构化方法也称为面向功能的软件开发方法或Yourdon方法,是由方法,是由E.Yourdon和和L.Constantine提出的提出的.结构化分析方法结构化分析方法SA:对软件进行需求分析:对软件进行需求分析结构化设计方法结构化设计方法SD:进行总体设计和详细设计

422、:进行总体设计和详细设计结构化编程结构化编程SP特点:特点:按照功能分解的原则,自顶向下、逐步求精,直到实现按照功能分解的原则,自顶向下、逐步求精,直到实现软件功能为止。软件功能为止。该方法简单、实用。该方法简单、实用。软件开发方法简述软件开发方法简述1 1 、 结构化方法结构化方法n主要问题:主要问题:n(1)它以功能分解为基础,而用户的功能是经常改变它以功能分解为基础,而用户的功能是经常改变的,必然导致系统的框架结构不稳定。的,必然导致系统的框架结构不稳定。n(2)从数据流程图到软件结构图之间的过渡有明显的从数据流程图到软件结构图之间的过渡有明显的断层,导致设计回溯到需求有困难。断层,导致

423、设计回溯到需求有困难。软件开发方法简述软件开发方法简述2 2 、面向数据结构的开发方法、面向数据结构的开发方法n面向数据结构的软件开发方法有两种:面向数据结构的软件开发方法有两种:nWarnier方方法法:由由JDWarnier提提出出的的结结构构化化数数据据系系统统开开发发方法(方法(DSSD););nJackson方方法法:由由M.A.Jackson提提出出的的Jackson系系统统开开发发方方法法(JSD)。)。面面向向数数据据结结构构的的软软件件开开发发方方法法基基本本思思想想是是:从从目目标标系系统统的的输输入入输输出出数数据据结结构构入入手手,导导出出程程序序的的基基本本框框架架结

424、结构构,在在此此基基础上,对细节进行设计,得到完整的程序结构图。础上,对细节进行设计,得到完整的程序结构图。软件开发方法简述软件开发方法简述3、面向对象的方法、面向对象的方法n面向对象方法的优点:面向对象方法的优点:n(1)将将现现实实世世界界问问题题向向面面向向对对象象解解空空间间直直接接映映射射,实实现现对对现实世界的直接模拟。现实世界的直接模拟。n(2)以以数数据据为为中中心心,而而不不是是基基于于对对功功能能的的分分解解,使使得得软软件件结结构构相相对对稳稳定定,软软件件的的重重用用性性、可可靠靠性性、可可维维护护等等特特性性都都较较好。好。软件开发方法简述软件开发方法简述3 3 、面

425、向对象的方法、面向对象的方法n影响较大的影响较大的面向对象方法有:面向对象方法有:n(1)Booch方法:该方法的分析能力较弱,是一种偏重设计的方法。方法:该方法的分析能力较弱,是一种偏重设计的方法。n(2)OMT方方法法:通通过过建建立立对对象象模模型型、动动态态模模型型、功功能能模模型型,来来实实现现对整个系统分析和设计工作。对整个系统分析和设计工作。n(3)OOSE方方法法:最最大大特特点点是是用用用用例例(UseCase)与与外外部部角角色色的的交交互来表示系统功能,用例贯穿于整个开发过程。互来表示系统功能,用例贯穿于整个开发过程。n(4)CoadYourdon的的面面向向对对象象分分

426、析析和和设设计计方方法法:即即OOA和和OOD方法,它是最早的面向对象的分析和设计方法之一。方法,它是最早的面向对象的分析和设计方法之一。n(5)UML:统统一一建建模模语语言言,国国际际对对象象管管理理组组织织OMG已已批批准准将将UML1.1作为面向对象技术的标准建模语言。作为面向对象技术的标准建模语言。软件开发方法简述软件开发方法简述4、可视化开发方法可视化开发方法可视化开发方法是随着图形用户界面的兴起而发展起可视化开发方法是随着图形用户界面的兴起而发展起来的,是通过事件驱动实现应用软件的工作。来的,是通过事件驱动实现应用软件的工作。可视化开发方法的优点:可视化开发方法的优点:(1)简简化化了了图图形形用用户户界界面面的的设设计计和和编编码码工工作作,将将开开发发的的注注意意力力主主要集中在程序的执行逻辑和工作流程上。要集中在程序的执行逻辑和工作流程上。(2)软件开发简单,易学、易上手。)软件开发简单,易学、易上手。(3)专业或非专业人员都能参与软件开发活动。)专业或非专业人员都能参与软件开发活动。软件工程的最新发展动向软件工程的最新发展动向软件形式语言的研究软件形式语言的研究构件技术构件技术质量管理质量管理

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

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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