1、电子工程学院2学习指导信息学习指导信息 同学们在学习本课程的过程中应当注意同学们在学习本课程的过程中应当注意基本概念基本概念、基本方法基本方法、算法的阅读理解算法的阅读理解和和算法的设计算法的设计等方面。等方面。软件工程主要涉及软件工程主要涉及基本概念基本概念和和基本方法基本方法;数据结构;数据结构涉及涉及基本概念基本概念、基本方法基本方法、算法的阅读理解算法的阅读理解和和算法的算法的设计设计。在学习过程中可以通过课件的内容、例题、习。在学习过程中可以通过课件的内容、例题、习题来理解和掌握。题来理解和掌握。第一部分第一部分 软件工程软件工程电子工程学院4软件工程的教学目的和要求软件工程的教学目
2、的和要求 掌握软件生命周期各阶段的划分,各阶段的主要掌握软件生命周期各阶段的划分,各阶段的主要任务以及所建立的软件文档。能够采用结构化分析、任务以及所建立的软件文档。能够采用结构化分析、结构化设计和结构化程序设计的方法开发软件,掌结构化设计和结构化程序设计的方法开发软件,掌握软件测试的步骤和方法,了解软件维护的基本概握软件测试的步骤和方法,了解软件维护的基本概念。念。电子工程学院5软件工程目录软件工程目录 软件和软件工程的基本概念软件和软件工程的基本概念 软件生命周期软件生命周期 结构化的软件开发方法结构化的软件开发方法 软件测试软件测试 软件维护软件维护 作业作业电子工程学院6一、软件和软件
3、工程的基本概念一、软件和软件工程的基本概念软件的特点软件的特点 软件是一种逻辑产品。软件是一种逻辑产品。软件产品的生产主要是研制。软件产品的生产主要是研制。软件产品不会损坏,不存在磨损、消耗问题。软件产品不会损坏,不存在磨损、消耗问题。软件产品的生产主要是脑力劳动、手工开发方式,软件产品的生产主要是脑力劳动、手工开发方式,大部分产品是大部分产品是“定做定做”的。的。软件开发成本不断提高。软件开发成本不断提高。电子工程学院7故故障障率率磨合磨合磨损磨损时间时间硬件的故障曲线硬件的故障曲线电子工程学院8硬件的故障曲线硬件的故障曲线 软件的理想曲线软件的理想曲线与实际故障曲线与实际故障曲线 故故障障
4、率率修改由副作用造成由副作用造成故障率的提高故障率的提高时间时间实际曲线实际曲线理想曲线理想曲线软件的理想曲线与实际故障曲线软件的理想曲线与实际故障曲线电子工程学院9 软件危机是指在软件的开发和维护过程中所遇到软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。几乎所有软件都不同程度地存的一系列严重问题。几乎所有软件都不同程度地存在以下问题:在以下问题:对软件开发成本和进度不可控制。对软件开发成本和进度不可控制。用户对用户对“已完成的已完成的”软件往往不满意。软件往往不满意。软件产品的质量不可靠。软件产品的质量不可靠。软件的可维护性差。软件的可维护性差。软件的文档资料不齐备。软件的文档
5、资料不齐备。软件成本在计算机系统总成本中所占的比例过高。软件成本在计算机系统总成本中所占的比例过高。1.软件开发的生产率低。软件开发的生产率低。软件危机的含义软件危机的含义电子工程学院10 软件危机的产生一方面与软件本身的特点有关,软件危机的产生一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。另一方面也和软件开发与维护的方法不正确有关。消除软件危机的途径消除软件危机的途径研究探索软件开发的技术措施,采用先进的软件研究探索软件开发的技术措施,采用先进的软件开发方法和软件开发工具。开发方法和软件开发工具。加强软件开发过程中的组织管理措施。加强软件开发过程中的组织管理措施。软
6、件工程正是从技术和管理两个方面研究如何软件工程正是从技术和管理两个方面研究如何更好地开发和维护计算机软件的一门新兴学科。更好地开发和维护计算机软件的一门新兴学科。产生软件危机的原因产生软件危机的原因电子工程学院11 采用工程的概念、原理、技术和方法来开发与采用工程的概念、原理、技术和方法来开发与维护软件。维护软件。把经过时间考验而证明正确的管理方法和当前把经过时间考验而证明正确的管理方法和当前最好的软件开发技术结合起来,以较低的成本开最好的软件开发技术结合起来,以较低的成本开发出高质量的软件并能够有效的对软件进行维护。发出高质量的软件并能够有效的对软件进行维护。软件工程的概念软件工程的概念电子
7、工程学院12 将软件生命周期划分阶段,严格管理软件的开发将软件生命周期划分阶段,严格管理软件的开发与维护。与维护。坚持进行阶段评审。坚持进行阶段评审。实行严格的产品控制。实行严格的产品控制。采用现代化的软件开发技术。采用现代化的软件开发技术。能够清楚的审查软件各个阶段的结果。能够清楚的审查软件各个阶段的结果。开发小组的人员应该少而精。开发小组的人员应该少而精。承认不断改进软件工程实践的必要性。承认不断改进软件工程实践的必要性。电子工程学院13 在软件生命周期全过程中使用的一整套技术的在软件生命周期全过程中使用的一整套技术的集合称为软件工程方法学。软件工程方法学包括集合称为软件工程方法学。软件工
8、程方法学包括以下三个要素:以下三个要素:方法:完成软件开发的各项任务的技术方法。方法:完成软件开发的各项任务的技术方法。工具:为方法的运用提供自动或半自动的软件支工具:为方法的运用提供自动或半自动的软件支撑环境。撑环境。1.过程:为了获得高质量的软件所需要完成的一系过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步列任务的框架,它规定了完成各项任务的工作步骤。骤。软件工程方法学软件工程方法学电子工程学院14 软件工程方法学分为结构化方法、软件工程方法学分为结构化方法、Jackson方方法、维也纳方法、面向对象方法。其中结构化方法、维也纳方法、面向对象方法。其中
9、结构化方法和面向对象方法使用最为广泛,又称为软件工法和面向对象方法使用最为广泛,又称为软件工程的传统方法学和面向对象方法学。程的传统方法学和面向对象方法学。本课程主要介绍结构化方法。本课程主要介绍结构化方法。常用的软件工程方法学常用的软件工程方法学电子工程学院15【例例】软件产品管理包括版本管理和软件产品管理包括版本管理和 。答案:开发过程管理答案:开发过程管理 软件与物质产品的区别在于软件是一种软件与物质产品的区别在于软件是一种 产品。产品。答案:逻辑答案:逻辑 目前经常采用的软件工程方法学,是目前经常采用的软件工程方法学,是 和和 。答案:传统方法学、面向对象方法学答案:传统方法学、面向对
10、象方法学电子工程学院16二、软件生命周期二、软件生命周期 软件生命周期各阶段的划分,以及各个阶段任务:软件生命周期各阶段的划分,以及各个阶段任务:问题定义问题定义 问题定义阶段的任务是确定所要开发的目标系问题定义阶段的任务是确定所要开发的目标系统应当解决的问题是什么。统应当解决的问题是什么。2.可行性研究可行性研究 在确定了目标系统应当解决的问题之后,从技在确定了目标系统应当解决的问题之后,从技术、经济和社会因素三个方面分析问题是否能够术、经济和社会因素三个方面分析问题是否能够解决,以及是否值得解决。解决,以及是否值得解决。电子工程学院17 需求分析阶段的任务是在充分了解用户对目标需求分析阶段
11、的任务是在充分了解用户对目标系统的需求之后,确定目标系统应当具有什么功系统的需求之后,确定目标系统应当具有什么功能,而这些功能如何实现在这个阶段并不考虑。能,而这些功能如何实现在这个阶段并不考虑。本阶段的另外一项重要任务,是用正式文档准本阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为确地记录对目标系统的需求,这份文档通常称为系统规格说明书或需求规格说明书。系统规格说明书或需求规格说明书。3.需求分析需求分析电子工程学院18 这个阶段的基本任务是概括地回答怎样实现目这个阶段的基本任务是概括地回答怎样实现目标系统的功能。概要设计又称为总体设计。标系统的功能。概要设
12、计又称为总体设计。概要设计的另一项主要任务就是设计目标系统概要设计的另一项主要任务就是设计目标系统的模块结构图或功能结构图,确定目标系统由哪的模块结构图或功能结构图,确定目标系统由哪些模块组成以及模块之间的调用和被调用关系。些模块组成以及模块之间的调用和被调用关系。5.详细设计详细设计 详细设计阶段设计模块内部的逻辑和数据结构。详细设计阶段设计模块内部的逻辑和数据结构。这个阶段的任务还不是编写程序代码。这个阶段的任务还不是编写程序代码。4.概要设计概要设计电子工程学院19 这个阶段是根据详细设计的结果,采用程序设这个阶段是根据详细设计的结果,采用程序设计语言遍写出程序代码。计语言遍写出程序代码
13、。7.测试测试 测试阶段的任务是通过各种类型的测试及相应测试阶段的任务是通过各种类型的测试及相应的调试,使软件达到预定的要求。的调试,使软件达到预定的要求。8.维护维护 维护是在系统运行阶段进行的,通过各种必要维护是在系统运行阶段进行的,通过各种必要的维护活动使系统持久地满足用户的需要。的维护活动使系统持久地满足用户的需要。6.编码编码电子工程学院20 生命周期模型规定了把生命周期划分成哪些阶生命周期模型规定了把生命周期划分成哪些阶 段及各个阶段进行的顺序。段及各个阶段进行的顺序。1.瀑布模型瀑布模型 瀑布模型清楚地区分系统的逻辑设计与物理设瀑布模型清楚地区分系统的逻辑设计与物理设计,尽可能推
14、迟系统的物理实现。每个阶段结束计,尽可能推迟系统的物理实现。每个阶段结束前都要对所完成的文档进行评审,以便尽早发现前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。问题,改正错误。软件生命周期的模型软件生命周期的模型电子工程学院21需求分析需求分析验证验证概要设计概要设计验证验证详细设计详细设计验证验证编码编码验证验证综合测试综合测试维护维护变化的需求变化的需求验证验证 当在后面阶段发现前面阶当在后面阶段发现前面阶段的错误时,需要沿图中左段的错误时,需要沿图中左侧的反馈线返回前面的阶段,侧的反馈线返回前面的阶段,修正前面阶段的产品之后,修正前面阶段的产品之后,再回来继续完成后面阶段的再
15、回来继续完成后面阶段的任务。任务。瀑布模型适合于在用户需瀑布模型适合于在用户需求明确、开发技术成熟、工求明确、开发技术成熟、工程管理严格的场合使用。由程管理严格的场合使用。由于任务顺序固定,瀑布模型于任务顺序固定,瀑布模型的缺点是软件研制周期长,的缺点是软件研制周期长,纠正前期错误的代价高。纠正前期错误的代价高。带有反馈环的瀑布模型带有反馈环的瀑布模型电子工程学院22瀑布模型的开发过程瀑布模型的开发过程电子工程学院23 快速原型模型是快速建立起可以在计算机上运快速原型模型是快速建立起可以在计算机上运行的程序,它所具有的功能往往只是最终软件产行的程序,它所具有的功能往往只是最终软件产品功能的一个
16、子集。品功能的一个子集。快速原型模型首先建立一个能反映用户主要需快速原型模型首先建立一个能反映用户主要需求的原型系统,让用户试用它,通过试用,用户求的原型系统,让用户试用它,通过试用,用户可以了解目标系统的概貌。软件人员根据用户的可以了解目标系统的概貌。软件人员根据用户的意见对原型进行修改,然后再次请用户试用意见对原型进行修改,然后再次请用户试用,直到能够满足用户的需求为止。这样所开发的软直到能够满足用户的需求为止。这样所开发的软件可以满足用户的真实需求。件可以满足用户的真实需求。快速原型模型适合在用户需求不明确的情况下快速原型模型适合在用户需求不明确的情况下开发软件。开发软件。2.快速原型模
17、型快速原型模型电子工程学院24快速原型模型的开发过程快速原型模型的开发过程电子工程学院25 使用增量模型开发软件时,把软件产品作为一使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。件往往实现软件的基本需求,提供最核心的功能。下面给出增量模型的开发过程。下面给出增量模型的开发过程。3.增量模型增量模型电子工程学院
18、26需求分析需求分析验证验证规格说明规格说明验证验证概要设计概要设计验证验证维护维护针对每个构件,完成详针对每个构件,完成详细设计、编码和集成,细设计、编码和集成,经测试后交付给用户经测试后交付给用户增量模型的开发过程增量模型的开发过程电子工程学院27【例例】软件生命周期是指一个软件从提出开发要求开始直到软件生命周期是指一个软件从提出开发要求开始直到 为止的整个时期。为止的整个时期。答案:报废答案:报废 瀑布模型属于整体开发模型,增量模型属于瀑布模型属于整体开发模型,增量模型属于 开发模型。开发模型。答案:非整体答案:非整体 说明软件文档的概念。说明软件文档的概念。答案:软件文档是有关软件的功
19、能、设计使用的文字和图答案:软件文档是有关软件的功能、设计使用的文字和图形资料。形资料。说明快速原型模型的优点。说明快速原型模型的优点。答案:能够及早发现问题,随时纠正错误;减少技术应用答案:能够及早发现问题,随时纠正错误;减少技术应用风险,提高生产率;适应需求变化,能够有效提高系统风险,提高生产率;适应需求变化,能够有效提高系统质量。质量。电子工程学院28三、结构化的软件开发方法三、结构化的软件开发方法 结构化的软件开发方法包括结构化分析(结构化的软件开发方法包括结构化分析(SA方方法)、结构化设计(法)、结构化设计(SD方法)和结构化程序设计方法)和结构化程序设计(SP方法)。方法)。SA
20、方法用于需求分析阶段;方法用于需求分析阶段;SD方法用于总体设计阶段;方法用于总体设计阶段;SP方法用于详细设计及编码阶段。方法用于详细设计及编码阶段。电子工程学院291.需求分析的任务需求分析的任务 需求分析是发现、求精、建模、规格说明和复需求分析是发现、求精、建模、规格说明和复审的过程。系统分析员首先要准确地了解用户当审的过程。系统分析员首先要准确地了解用户当前的情况和需要解决的问题,然后反复求精多次前的情况和需要解决的问题,然后反复求精多次细化。最终以软件需求规格说明书的形式完整、细化。最终以软件需求规格说明书的形式完整、准确和具体的表示出用户对目标系统的要求。准确和具体的表示出用户对目
21、标系统的要求。软件需求规格说明书可以作为软件开发人员与软件需求规格说明书可以作为软件开发人员与用户之间的软件开发合同用户之间的软件开发合同,又是软件最终验收的,又是软件最终验收的依据。依据。3.1 需求分析需求分析电子工程学院30 结构化分析实质上是一种创建模型的活动。通结构化分析实质上是一种创建模型的活动。通过需求分析而建立的模型必须达到下述的三个基过需求分析而建立的模型必须达到下述的三个基本目标:本目标:(1)描述用户的需求。)描述用户的需求。(2)为软件设计工作奠定基础。)为软件设计工作奠定基础。(3)定义一组需求,一旦开发出软件产品之后,)定义一组需求,一旦开发出软件产品之后,就可以用
22、这组需求作为标准验收软件。就可以用这组需求作为标准验收软件。结构化分析所建立的模型包括:描述数据对象结构化分析所建立的模型包括:描述数据对象的实体的实体-关系图;描述系统逻辑模型的数据流图;关系图;描述系统逻辑模型的数据流图;描述系统状态及状态转换的状态转换图。描述系统状态及状态转换的状态转换图。2.分析建模分析建模电子工程学院31 实体实体-关系图来建立数据模型。其中包含了实体关系图来建立数据模型。其中包含了实体(即数据对象即数据对象)、关系和属性等三种基本成分。、关系和属性等三种基本成分。(1)实体)实体(数据对象数据对象)是具有一组性质或属性的复是具有一组性质或属性的复合信息,用矩形框表
23、示;合信息,用矩形框表示;(2)实体间的关系用菱形框表示;)实体间的关系用菱形框表示;(3)属性是实体或关系的性质,即实体或关系的)属性是实体或关系的性质,即实体或关系的值,用椭圆框表示。值,用椭圆框表示。实体之间的关系分为实体之间的关系分为1:1、1:N和和M:N联系。联系。实体实体-关系图(关系图(E-RE-R图)图)电子工程学院32【例】【例】学校教学管理的学校教学管理的E-R图图电子工程学院33 信息在系统流动,实质上经历了一系列的变换。信息在系统流动,实质上经历了一系列的变换。数据流图描述了信息从输入到输出的一系列变换。数据流图描述了信息从输入到输出的一系列变换。数据流图具有四种成份
24、:数据流图具有四种成份:(1)系统的源点或终点:属于系统之外的人员或)系统的源点或终点:属于系统之外的人员或组织,用组织,用 表示。表示。(2)加工:具有逻辑加工能力,对数据进行变换)加工:具有逻辑加工能力,对数据进行变换处理,用处理,用 或圆圈表示。或圆圈表示。(3)数据存储:用于存储数据,用)数据存储:用于存储数据,用 表示。表示。(4)数据流:系统中数据的流向,用)数据流:系统中数据的流向,用 表示。表示。4.数据流图(数据流图(DFD图)图)电子工程学院34 结构化分析运用了结构化分析运用了“分解分解”和和“抽象抽象”的手段,的手段,采用采用“自顶向下,逐层分解自顶向下,逐层分解”的分
25、析思路,将系的分析思路,将系统的加工逻辑用分层数据流图(分层统的加工逻辑用分层数据流图(分层DFD图)来图)来表示。表示。S1321.11.2顶层数据流图顶层数据流图0层数据流图层数据流图1层数据流图层数据流图分层数据流图分层数据流图电子工程学院35 接受项目裁判送来的比赛成绩单,使用项目文接受项目裁判送来的比赛成绩单,使用项目文件和运动员文件,将成绩录入到比赛成绩文件。件和运动员文件,将成绩录入到比赛成绩文件。成绩查询时根据运动员文件和比赛成绩文件产生成绩查询时根据运动员文件和比赛成绩文件产生项目比赛成绩,送大会秘书处。绘制运动会成绩项目比赛成绩,送大会秘书处。绘制运动会成绩处理的处理的0层
26、数据流图。层数据流图。【例】运动会成绩处理过程如下:【例】运动会成绩处理过程如下:电子工程学院36 数据字典用于对数据流图中的成份进行进一步数据字典用于对数据流图中的成份进行进一步精确、严格的定义,数据字典中的条目由数据流、精确、严格的定义,数据字典中的条目由数据流、数据存储和加工的定义组成。数据字典中所使用数据存储和加工的定义组成。数据字典中所使用的符号如下:的符号如下:表示等价于表示等价于(或定义为或定义为)表示和表示和(即,连接两个分量即,连接两个分量)表示或表示或(即,从方括弧内列出的若干个分即,从方括弧内列出的若干个分量中选择一个量中选择一个),通常用,通常用“|”|”号分开供选择的
27、分量号分开供选择的分量 表示重复表示重复(即,重复花括弧内的分量即,重复花括弧内的分量)()表示可选表示可选(即,圆括弧里的分量可有可无即,圆括弧里的分量可有可无 .表示数据的范围表示数据的范围 5.数据字典数据字典电子工程学院37(1)描述身份证号的条目。)描述身份证号的条目。身份证号身份证号=省省+市市+区(县)区(县)+出生日期出生日期+编号编号出生日期出生日期=年年+月月+日日月月=1.12 日日=1.31(2)描述班级考试成绩表的条目)描述班级考试成绩表的条目班级考试成绩表班级考试成绩表=学号学号+课程号课程号+姓名姓名+课程名课程名+成绩成绩成绩成绩=优优|良良|中中|及格及格|不
28、及格不及格【例】数据字典条目举例。【例】数据字典条目举例。电子工程学院38(1)结构化语言)结构化语言 结构化语言是介于自然语言和形式语言之间的结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它是在自然语言的基础上增一种半形式化语言。它是在自然语言的基础上增加一些限定,使用有限的词汇和有限的语句来描加一些限定,使用有限的词汇和有限的语句来描述加工逻辑,它的结构可分为外层和内层两层。述加工逻辑,它的结构可分为外层和内层两层。外层:用来描述控制结构,采用顺序、选择、重外层:用来描述控制结构,采用顺序、选择、重复三种基本结构。复三种基本结构。内层:一般采用祈使语句。内层:一般采用祈使语句。
29、对加工条目的描述称为小说明,可以采用结构化对加工条目的描述称为小说明,可以采用结构化语言、判定表和判定树等形式。语言、判定表和判定树等形式。电子工程学院39 在有些情况下,每个加工的一组动作依赖于多在有些情况下,每个加工的一组动作依赖于多个逻辑条件的取值。用判定表能够更清晰、严谨个逻辑条件的取值。用判定表能够更清晰、严谨地表示复杂的条件组合与相应动作之间的对应关地表示复杂的条件组合与相应动作之间的对应关系。判定表由四个部分组成。系。判定表由四个部分组成。列出所有列出所有条件条件所有可能所有可能的动作的动作各种条件组各种条件组合的矩阵合的矩阵每种条件组合相对每种条件组合相对应的动作应的动作(2)
30、判定表)判定表电子工程学院40 判定树是判定表的变形,一般情况下它比判定判定树是判定表的变形,一般情况下它比判定表更直观,且易于理解和使用。表更直观,且易于理解和使用。【例【例】某工厂对部分职工重新分配工作的政策:】某工厂对部分职工重新分配工作的政策:年龄在年龄在20岁以下者,初中文化程度脱产学习,岁以下者,初中文化程度脱产学习,高中文化程度当电工;年龄在高中文化程度当电工;年龄在20岁至岁至40岁之间者,岁之间者,中学文化程度男性当钳工,女性当车工,大学文中学文化程度男性当钳工,女性当车工,大学文化程度当技术员;年龄在化程度当技术员;年龄在40岁以上者,中学文化岁以上者,中学文化程度当材料员
31、,大学文化程度当技术员。程度当材料员,大学文化程度当技术员。分别用结构化语言、判定表和判定树描述上述问分别用结构化语言、判定表和判定树描述上述问题的加工逻辑。题的加工逻辑。(3)判定树)判定树电子工程学院41IF 年龄年龄0 THEN X1 ELSE X2 ENDIF S1 IF Z0 THEN Z1 IF W0 THEN W1 ELSE W2 ENDIF ELSE Z2 ENDIF S2ENDWHILE电子工程学院90用用PAD图进行描述图进行描述电子工程学院91【例】【例】程序的三种基本控制结构的共同特点是(程序的三种基本控制结构的共同特点是()。)。A只能用来描述简单程序只能用来描述简单
32、程序B不能嵌套使用不能嵌套使用C单入口,单出口单入口,单出口 D仅用于自动控制系统仅用于自动控制系统答案:答案:C C结构化程序设计采用的三种基本结构是(结构化程序设计采用的三种基本结构是()。)。A.顺序、分支、选择顺序、分支、选择B.选择、循环、重复选择、循环、重复C.顺序、选择、重复顺序、选择、重复D.输入、变换、输出输入、变换、输出答案:答案:C C详细描述处理过程常用的三种工具是()。详细描述处理过程常用的三种工具是()。A.SA,SD,SPB.程序流程图,程序流程图,IPO,PADC.SA,SC,SDD.图形,表格,语言图形,表格,语言答案:答案:D D电子工程学院92【例】试比较
33、程序流程图与【例】试比较程序流程图与PAD图的特点。图的特点。这两种方法均为详细设计阶段所使用的图形工这两种方法均为详细设计阶段所使用的图形工具。具。(1)程序流程图直观清晰,易于使用。但控制流)程序流程图直观清晰,易于使用。但控制流程线不易限制,易造成非结构化的程序结构;不易程线不易限制,易造成非结构化的程序结构;不易反映逐步求精的过程;不易表示数据结构。反映逐步求精的过程;不易表示数据结构。(2)PAD图是一种由左往右展开的二维树型结构,图是一种由左往右展开的二维树型结构,能够清晰地反映程序的层次结构,支持逐步求精的能够清晰地反映程序的层次结构,支持逐步求精的设计方法,易写易读,使用方便;
34、可自动生成程序,设计方法,易写易读,使用方便;可自动生成程序,支持结构化程序设计原理。支持结构化程序设计原理。电子工程学院93【例】简述程序流程图的缺点和克服方法。【例】简述程序流程图的缺点和克服方法。流程图的缺点有三个方面,(流程图的缺点有三个方面,(1)控制流程线不)控制流程线不易限制,易造成非结构化的程序结构;(易限制,易造成非结构化的程序结构;(2)不易)不易反映逐步求精的过程;(反映逐步求精的过程;(3)不易表示数据结构。)不易表示数据结构。为了克服流程图的缺陷,要求流程图都应由三种为了克服流程图的缺陷,要求流程图都应由三种基本结构顺序组合或完整嵌套而成,不能出现相互基本结构顺序组合
35、或完整嵌套而成,不能出现相互交叉的情况,这样的流程图是结构化的流程图。交叉的情况,这样的流程图是结构化的流程图。电子工程学院943.4 软件编码软件编码 所谓编码就是把软件设计翻译成计算机可以理解所谓编码就是把软件设计翻译成计算机可以理解的形式的形式用某种程序设计语言书写的程序代码。用某种程序设计语言书写的程序代码。程序的质量主要取决于软件设计的质量。但是,程序的质量主要取决于软件设计的质量。但是,所选用的程序设计语言的特点和编码风格也会对程所选用的程序设计语言的特点和编码风格也会对程序的可靠性、可读性、可测试性和可维护性产生深序的可靠性、可读性、可测试性和可维护性产生深远的影响。远的影响。电
36、子工程学院95程序设计语言特性程序设计语言特性1.心理特性心理特性 语言的心理特性是指影响程序员心理的语言性能,语言的心理特性是指影响程序员心理的语言性能,包括:歧义性、简洁性、局部性、顺序性和传统性。包括:歧义性、简洁性、局部性、顺序性和传统性。2.工程特性工程特性 从考虑软件开发项目的需要出发,对软件编码有从考虑软件开发项目的需要出发,对软件编码有如下要求:可移植性,开发工具的可利用性,软件如下要求:可移植性,开发工具的可利用性,软件的可重用性,可维护性。的可重用性,可维护性。3.技术特性技术特性 根据项目的特性选择相应特性的语言,满足设计根据项目的特性选择相应特性的语言,满足设计的需求。
37、的需求。电子工程学院96程序设计风格程序设计风格1.源程序文档化源程序文档化(1)标识符的命名)标识符的命名 标识符作为模块名、变量名、常量名等,其命名应当标识符作为模块名、变量名、常量名等,其命名应当具有一定的实际意义,做到具有一定的实际意义,做到“见名知义见名知义”。(2)程序的注释)程序的注释 源程序中添加必要的注释,提高程序的可理解性。注源程序中添加必要的注释,提高程序的可理解性。注释有以下两个方面:释有以下两个方面:序言性注释:位于每个程序模块的开头,对模块的功能、序言性注释:位于每个程序模块的开头,对模块的功能、调用形式、参数等加以说明,以及对模块的修改记录。调用形式、参数等加以说
38、明,以及对模块的修改记录。功能性注释:位于源程序中,用于说明语句或语句块的功能性注释:位于源程序中,用于说明语句或语句块的功能。功能。电子工程学院97(3)程序的视觉组织程序的视觉组织 程序的视觉组织是指源程序中适当加空格、空行程序的视觉组织是指源程序中适当加空格、空行和语句行的缩进,这样有助于分清程序的层次结构,和语句行的缩进,这样有助于分清程序的层次结构,提高程序的可理解性。提高程序的可理解性。2.数据说明数据说明 数据说明有一定的次序,对于复杂的数据结构加数据说明有一定的次序,对于复杂的数据结构加以注释。以注释。3.语句结构语句结构 语句的构造应该简单、直接,不能为了追求效率语句的构造应
39、该简单、直接,不能为了追求效率而使语句复杂化。而使语句复杂化。电子工程学院984.输入输入/输出风格输出风格有关输入有关输入/输出风格的规则:输出风格的规则:对所有输入数据都进行检验;对所有输入数据都进行检验;检查输入项重要组合的合法性;检查输入项重要组合的合法性;保持输入格式简单;保持输入格式简单;使用数据结束标记,避免指定输入数据的个数;使用数据结束标记,避免指定输入数据的个数;给出交互式输入的提示,并详细说明可用的输入给出交互式输入的提示,并详细说明可用的输入选择或边界值;选择或边界值;当程序设计语言对格式有严格要求时,应保持输当程序设计语言对格式有严格要求时,应保持输入格式一致;入格式
40、一致;设计良好的输出报表;设计良好的输出报表;给所有输出数据加标志。给所有输出数据加标志。电子工程学院995.程序的效率程序的效率 程序的效率主要指程序运行过程中占用处理机的程序的效率主要指程序运行过程中占用处理机的时间和存储器的容量两个方面。时间和存储器的容量两个方面。在保证程序的清晰性和可读性的前提下,追求程在保证程序的清晰性和可读性的前提下,追求程序的时间和空间效率,从而提高软件的性能。序的时间和空间效率,从而提高软件的性能。【例】【例】程序设计语言的心理特性在语言中的表现不应当程序设计语言的心理特性在语言中的表现不应当包括(包括()。)。A歧义性歧义性B简洁性简洁性C保密性保密性D传统
41、性传统性答案:答案:C C电子工程学院100【例】【例】源程序文档化要求在每个模块之前加序言性注释,源程序文档化要求在每个模块之前加序言性注释,该注释内容不包括有(该注释内容不包括有()。)。A.模块的功能模块的功能B.语句的功能语句的功能C.模块的接口模块的接口D.开发历史开发历史答案:答案:B B为了具有良好的程序设计风格,应注意哪些方面为了具有良好的程序设计风格,应注意哪些方面的问题?的问题?答案:源程序文档化、数据说明、语句构造、输入答案:源程序文档化、数据说明、语句构造、输入输出以及对效率的追求等几个方面。输出以及对效率的追求等几个方面。为增加软件的可移植性应注意的问题是什么?为增加
42、软件的可移植性应注意的问题是什么?答案:在软件结构方面,体现模块的独立性高;在答案:在软件结构方面,体现模块的独立性高;在编码方面,在满足开发软件需求的前提下选择高级编码方面,在满足开发软件需求的前提下选择高级语言编写源程序。语言编写源程序。电子工程学院101四、软件测试四、软件测试 4.1 软件测试概述软件测试概述 软件开发总是伴随着软件质量保证的活动,而软件开发总是伴随着软件质量保证的活动,而软件测试是主要活动之一。软件测试代表了需求分软件测试是主要活动之一。软件测试代表了需求分析、设计、编码的最终复审。大量统计资料表明,析、设计、编码的最终复审。大量统计资料表明,软件测试的工作量往往占软
43、件开发总工作量的软件测试的工作量往往占软件开发总工作量的40%以上。以上。测试的目的是发现软件中的各种错误,发现错测试的目的是发现软件中的各种错误,发现错误之后还必须诊断并改正错误,这就是调试的目的。误之后还必须诊断并改正错误,这就是调试的目的。电子工程学院102软件测试的原则软件测试的原则1.测试用例应由输入数据和预期的输出数据两部测试用例应由输入数据和预期的输出数据两部分组成。分组成。2.测试用例不仅选用合理的输入数据,还要选择测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。不合理的输入数据。3.除了检查程序是否做了它应该做的,还应该检除了检查程序是否做了它应该做的,还应该检查程
44、序是否做了它不应该做的。查程序是否做了它不应该做的。4.应制定测试计划并严格执行,排除随意性。应制定测试计划并严格执行,排除随意性。5.长期保留测试用例。长期保留测试用例。6.对发现错误较多的程序段,应进行更深入的测对发现错误较多的程序段,应进行更深入的测试。试。7.程序员应当避免测试自己的程序。程序员应当避免测试自己的程序。电子工程学院1034.2 软件测试方法软件测试方法 软件测试方法一般分为动态测试方法与静态测试软件测试方法一般分为动态测试方法与静态测试方法。动态测试方法又分为黑盒测试法和白盒测试方法。动态测试方法又分为黑盒测试法和白盒测试法。法。1.静态测试静态测试 静态测试是指被测程
45、序不在机器上运行,而是采静态测试是指被测程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进用人工检测和计算机辅助静态分析的手段对程序进行检测。行检测。2.动态测试动态测试 动态测试指通过运行程序发现错误。动态测试一动态测试指通过运行程序发现错误。动态测试一般有两种方法,分别称为黑盒测试法和白盒测试法。般有两种方法,分别称为黑盒测试法和白盒测试法。电子工程学院104黑盒测试法黑盒测试法 黑盒测试法把被测对象看成一个黑盒子,完全不黑盒测试法把被测对象看成一个黑盒子,完全不考虑被测对象的内部结构和处理过程,只是对功能考虑被测对象的内部结构和处理过程,只是对功能和接口进行的测试,检
46、查其功能是否能够按照规格和接口进行的测试,检查其功能是否能够按照规格说明书的规定正常使用,是否能适当地接收输入数说明书的规定正常使用,是否能适当地接收输入数据产生正确的输出信息。据产生正确的输出信息。黑盒测试又称为功能测试。黑盒测试又称为功能测试。电子工程学院105白盒测试法白盒测试法 白盒测试法是把模块看成一个透明的白盒白盒测试法是把模块看成一个透明的白盒子,测试人员必须完全了解模块内部的结构子,测试人员必须完全了解模块内部的结构和处理过程,按照模块内部的逻辑设计测试和处理过程,按照模块内部的逻辑设计测试用例进行测试,检验逻辑结构中的每条通路用例进行测试,检验逻辑结构中的每条通路是否都能按预
47、定要求正确工作。是否都能按预定要求正确工作。白盒测试又称为结构测试。白盒测试又称为结构测试。电子工程学院106软件测试准则软件测试准则(1)所有的测试都应该能追溯到用户需求。)所有的测试都应该能追溯到用户需求。(2)应当在测试开始之前制定出测试计划。)应当在测试开始之前制定出测试计划。(3)测试中所发现的)测试中所发现的80%的错误很可能是由程序的错误很可能是由程序中中20%的模块造成的。的模块造成的。(4)测试应该从)测试应该从“小规模小规模”开始,并逐步进行开始,并逐步进行“大规模大规模”测试。测试。(5)穷举测试是不可能的。)穷举测试是不可能的。(6)为了达到最佳的测试效果,应该由独立的
48、第)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。三方从事测试工作。电子工程学院107程序图程序图 在设计测试方案时,通常用程序图描述程序的在设计测试方案时,通常用程序图描述程序的控制流程,在程序图中并不表现对数据的具体操控制流程,在程序图中并不表现对数据的具体操作以及分支或循环的具体条件。程序图可以表示作以及分支或循环的具体条件。程序图可以表示程序控制流程的复杂程度。程序控制流程的复杂程度。在程序图中用圆表示结点,一个圆代表一条或在程序图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序处理框序列多条语句。程序流程图中的一个顺序处理框序列和一个菱形判定框,可以映射为程
49、序图中的一个和一个菱形判定框,可以映射为程序图中的一个结点。程序图中的箭头线称为边,它和程序流程结点。程序图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在程序图中一图中的箭头线类似,代表控制流。在程序图中一条边必须终止于一个结点。由边和结点围起来的条边必须终止于一个结点。由边和结点围起来的部分称为区域。部分称为区域。程序图中区域的个数程序图中区域的个数=流程图中判定框个数流程图中判定框个数+1+1电子工程学院108【例】由程序流程图映射程序图【例】由程序流程图映射程序图程序图中的结点代表流程图中的判定框和处理框。程序图中的结点代表流程图中的判定框和处理框。程序图中的边代表流程图
50、中的控制流向。程序图中的边代表流程图中的控制流向。流程图中有流程图中有3个判定框,程序图中有个判定框,程序图中有4个区域。个区域。电子工程学院109用用PDL表示的处理过程(含有复合条件)映射为程表示的处理过程(含有复合条件)映射为程序图序图电子工程学院1104.3 测试用例的设计测试用例的设计 每个测试用例包括每个测试用例包括:(1)具体的测试目的(所要测试的具体功能);)具体的测试目的(所要测试的具体功能);(2)应该输入的测试数据;)应该输入的测试数据;(3)预期的输出结果。)预期的输出结果。通过测试,将实际的输出结果与预期的输出结果进通过测试,将实际的输出结果与预期的输出结果进行比较,