首页 (最新)软件工程资料全

(最新)软件工程资料全

举报
开通vip

(最新)软件工程资料全(最新)软件工程资料全 新疆广播电视大学计算机应用专业 软件工程课程实施方案 一、课程概况: 《软件工程》课程是计算机应用专业应用软件方向的必修课。第五学期开设,4学分,72学时,其中含实验22学时。学生在学习本课程之前应当具有计算机的基础知识、程序设计的知识。根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。基本要求是: 1( 通过本课程的学习,使学生对软件工程...

(最新)软件工程资料全
(最新)软件工程资料全 新疆广播电视大学计算机应用专业 软件工程课程实施 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 一、课程概况: 《软件工程》课程是计算机应用专业应用软件方向的必修课。第五学期开设,4学分,72学时,其中含实验22学时。学生在学习本课程之前应当具有计算机的基础知识、程序设计的知识。根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。基本要求是: 1( 通过本课程的学习,使学生对软件工程从整体上有一个较清晰的了解。 2( 掌握软件与软件工程,生存周期与软件开发模式,结构化分析,面向对象分析,设 计与编码,软件的评审、测试与维护,项目 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 与项目管理等基本概念和基本知识。 3( 学会使用软件工程的方法参与软件项目的分析、设计、实现和维护的基本技能。 4( 初步掌握系统分析、系统设计、系统实现、系统维护的方法。 5( 初步培养需求分析、软件测试的能力。 二、课程教材: 1(《软件工程》,陈明主编,中央电大出版社(2001年7月第一版) 2(《软件工程实验》,陈明主编,中央电大出版社(2001年7月第一版) 3(录像教材为10讲,每讲50分钟,主要是对课程进行系统辅导,突出讲重点、讲难点。 三、教学进度: 该教学安排按照一学期18周进行,每周3学时,合计50学时,实验22学时。 授课 教学内容 实验 学时 第1章 软件工程概述 2 第2章 可行性分析 2 实验一 撰写可行性研究报告 第3章 需求分析 6 实验二 撰写需求规格说明书 第4章 概要设计 8 实验三 撰写概要设计说明书 第5章 详细设计 3 实验四 撰写详细设计说明书 1 第6章 面向对象分析与设计方法 10 实验五 UML的使用 第7章 编码 4 第8章 软件质量与质量保证 10 第9章 项目计划与管理 5 实验六 使用WORD编写软件工程文档 合 计 50 22 四、教学辅导: 1(直播课堂 12中旬:教学内容辅导及期末复习 2(网上教学信息 9月中旬:课程介绍、教学大纲、教学进度、各章重点、 难点辅导、考核说明、期末复习。 五、教学媒体使用信息表 教学媒体 主要内容 主要作用 时间安排 文字教材 系统介绍全部内容 系统传授有关知识 共18周 各地电大录像 10讲,专题讲授 重点概念辅导 自定 大纲、课程教学设计方案、教学重教学过程辅导、重点每15天更网上辅导 点难点辅导、期末复习等。 提示、期末总结 新一次 六、对教师和学习者的建议 根据本课程特点,教学和学习上应该注意以下几点: 1(软件工程既强调基本概念和基本知识的理解和掌握,又侧重软件项目的分析、设计、实现和维护的基本技能。学习时,要注意“点”和“面”的结合。 2(教师在该课程的讲授过程中,可以结合具体的软件工程项目实例。面授辅导课应以重点难点辅导、解惑答疑为主。 2 3(学习时应在充分自学每章内容的同时,重点观看录像中有关的教学内容,当每章内容学习将结束时,可利用网上辅导的材料来归纳总结。如学习中存在问题可以通过当地电大的辅导教师、中央电大主持教师以及充分利用网上的有关技术论坛,取得网友们的帮助。 4(教材的每章后面配有练习题,同学在学习完每章的知识内容后应认真练习,并总结本章所教授的内容。此外,在学习每章内容后,还应该结合各个实验,来体会和巩固所学过的知识。 新疆广播电视大学 远教学院计算机教研室 2005(04(26 3 考核说明 一.考核说明 课程的性质和任务 本课程主要围绕软件工程学如何提供一套科学合理的工程方法,以及在软件产业中的作用。 考核对象:电大系统“开放教育试点”计算机应用专业学生。 命题依据:本考核说明严格按照中央电大“开放教育试点”计算机应用专业《软件工程》课程教学大纲编写。本考核说明是考试命题的依据。考核内容以所用教材《软件工程》为基础。 考核要求:考核学生掌握和运用软件工程知识进行规划与指导软件开发研究工作的能力。本考核说明将使用下列术语分别表明几种要求层次。 (1)重点掌握:指重点要求的内容。 对于理论概念性的内容,应能做到正确阐述,作出正误判断并更正有关的错误,对相关概念进行综合比较分析,正确解答有关的问题。 (2)一般掌握:对于这一要求层次的内容应能简单分析有关概念,作正误判断。 命题原则: 1. 严格按照该课程教学大纲和考核说明的要求命题。 2. 试题的覆盖面较广,并适当突出重点。 3(试题的难易程度和题量适当,按难易程度分为三个层次:容易占40%,一般占40%,较难占20%。 4(题型参照模拟考核试题。 考核形式: 采用期末卷面考核与平时考核相结合的方式。平时考核占20分,视平 时上机和作业完成情况而定,由所在班级的任课教师给定,由省(市、自治 区)级电大认定;期末卷面考核占80分,由中央电大统一命题并为闭卷考 试,答题时限为120分钟。两方面成绩累计达到60分者为及格。 二.考核内容和要求 第一章 软件工程概述 一、重点掌握的内容: 软件和软件工程的基本概念 二、 一般掌握内容: 软件生存周期及软件开发的各种模型。 三、考核知识点: 软件:软件定义由以下三部分组成: (1) 在运行中能提供所希望的功能和性能的指令集(即程序); (2) 使程序能够正确运行的数据结构; (3) 描述程序研制过程、方法所用的文挡。 软件是一种产品,同时又是开发和运行产品的载体。作为一种产品,它表达了由计算机硬件体现的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。 软件的特点: ?软件是一种逻辑实体,而不是具体的物理实体,因而它具有 4 抽象性。? 软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。?在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。?软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。?软件的开发至今尚未完全摆脱手工的开发方式。?软件的开发费用越来越高,成本相当昂贵。 软件的分类:软件依据不同的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,可划分为不同的分类。 软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程 准则 租赁准则应用指南下载租赁准则应用指南下载租赁准则应用指南下载租赁准则应用指南下载租赁准则应用指南下载 可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。 软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。 软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 等。 软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期一般可分为以下阶段: ?问题定义 ?需求分析与可行性研究 ?设计 ?编码 ?测试 ?运行与维护 软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。 软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。此外,还有螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型等软件开发模型。 第二章 可行性研究 一、重点掌握的内容: 可行性研究的系统流程图 二、一般掌握内容: 可行性研究的任务和步骤,成本效益分析 三、考核知识点: 系统流程图:系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。 系统流程图的功能:1(制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。2(系统流程图是系统 5 分析员、管理人员、业务操作人员相互交流的工具。3(系统分析员可直接利用系统流程图画出可以实现计算机处理的部分。4(可利用系统流程图来分析业务流程的合理性。 可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。 可行性研究的步骤:可行性研究的步骤分为九个步骤。 成本效益分析:成本,效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。几种度量效益的方法:1.货币的时间价值;2(投资回收期;3(纯收入。 第三章 需求分析 一、重点掌握的内容: 需求分析的方法和面向数据流的分析方法。 二、一般掌握内容: 需求分析的任务和原则。 三、考核知识点: 需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。 面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。重点掌握结合实例画数据流图和定义数据字典。 需求分析的任务:它的基本任务是准确地回答“系统必须做什么,”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。其实现步骤如下图所示: 6 一般说来,需求分析阶段的任务包括下述几方面: ?确定对系统的综合需求 对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。 ?分析系统的数据需求 ?导出系统的逻辑模型 就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法是:首先确定目标系统与当前系统的逻辑差别 ;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。 ?修正系统开发计划 在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上应该对开发计划进行修正。 ?开发原型系统 使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确定他们的要求。 2(分析与综合;3(书写文档;4(需求分 需求分析的步骤:1.调查研究 ; 析评审 需求分析的原则:其基本原则可概括为: (1)必须能够表达和理解问题的数据域和功能域;(2)按自顶向下、逐层分解问题;(3)要给出系统的逻辑视图和物理视图。 第四章 概要设计 一、重点掌握的内容: 概要设计的过程和方法 二、一般掌握内容: 概要设计的文档与评审 三、考核知识点: 概要设计任务: ?系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。 ?确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。 ? 编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。 概要设计过程:概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。 7 软件设计的概念与原则: ?将软件划分成若干独立成分的依据。 ?如何表示不同的成分内的功能细节和数据结构。 ?如何统一衡量软件设计的技术质量。 其中有几个概念:1.模块化:就是把程序划分成若干个模块,每个模 块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的 功能,实现问题的要求。2. 抽象:就是抽出事物的本质特性而暂时不考虑 它们的细节。3. 信息隐蔽:模块中所包括的信息不允许其它不需要这些信 息的模块调用。4. 信息局部化:是指把一些关系密切的软件元素物理地放 得彼此靠近。5. 模块独立性:是软件系统中每个模块只涉及软件要求的具 体子功能,而和软件系统中其他的模块接口是简单的。模块独立的概念是 模块化、抽象、信息隐蔽和局部化概念的直接结果。6. 耦合:是对一个软 件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复 杂程度,调用模块的方式,以及通过接口的信息。7. 内聚:标志一个模块 内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩 展。 概要设计的方法:面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。理解基本概念:信息流(包括变换流和事务流)、抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。 面向数据结构的分析设计方法: ?Jackson系统开发方法(JSD): Jackson系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构的分析设计方法,它是以信息驱 动的,是将信息转换成软件的程序结构。 ? Warnier方法 :Warnier程序设计方法是由法国人J.D.Warnier提出的另一 种面向数据结构的设计方法,又称为逻辑构造程序的方法,简称LCP(Logical Construction of Programs)方法。Warnier方法的原理和Jackson方法类似, 也是从数据结构出发设计程序,但是这种方法的逻辑更严格。 学会撰写概要设计的文档并能评审出概要设计文档是否符合要求。概要设计说明书的主要内容及结构。 第五章 详细设计 一、重点掌握的内容: 详细设计的任务和方法 二、一般掌握内容: 详细设计的原则及详细设计规格与评审 三、考核知识点: 详细设计的任务:详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:?为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;?确定每一模块使用的数据结构;?确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口, 8 以及模块输入数据、输出数据及局部数据的全部细节。?要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。 PAD图、HIPO图 详细设计的方法:程序流程图、N-S图、 程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。?顺序型;?选择型;? while型循环;? until型循环;? 多情况型选择。 N-S图:Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。?顺序型;? 选择型;? WHILE重复型;? UNTIL重复型; ? 多分支选择型。 PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。 HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。 HC图是层次图(Hierarchy chart)的英文缩写,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。 详细设计的原则:原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。 详细设计规格与评审:详细设计说明书的框架及评审。 第六章 面向对象的分析和设计方法 一、重点掌握的内容: 面向对象的基本概念和特征 二、一般掌握内容: 面向对象分析与设计方法 三、考核知识点: 面向对象的基本概念: 面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象的几个重要概念:对象、消息、方法性、继承性、封装性等。 面向对象方法的基本特征: ?从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。 ?事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表 示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。 ?对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细 9 节(称作封装)。 ?对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。 ?通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。 复杂的对象可以用简单的对象作为其构成部分,称作聚合。 ? ?对象之间通过消息进行通信,以实现对象之间的动态联系。 ?通过关联表达对象之间的静态关系。 面向对象分析方法:目前出现有OOA与OOD方法。 面向对象设计方法:OOA与OOD的职责划分是:OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统的具体实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。OOD则是针对系统的一个具体的实现运用OO方法。其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示法和模型结构。 第七章 编码 一、重点掌握的内容: 程序设计语言的特点、编程风格、程序效率和编程安全 二、一般掌握内容: 面向对象程序设计步骤 三、考核知识点: 程序设计语言的特点: 程序设计语言是人与计算机交流的媒介。软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在需要为一个特定的开发项目选择语言时,能作出合理的技术抉择。其特点表现为九个方面:?名字说明;?类型说明;?初始化;?程序对象的局部性;?程序模块;?循环控制结构;?分支控制结构;? 异常处理;?独立编译。 编程风格:编码风格又称程序设计风格或编程风格,实际上指编程的原则。表现为四个方面:源程序文档化,数据说明的方法,语句结构和输入,输出方法。 源程序文档化:源程序文档化又可从四个方面来阐述,?符号名的命名;?程序的注释;?标准的书写格式; 数据说明:数据说明的次序应当规范化。使数据属性容易查找,也有利于测试,排错和维护。 语句结构:语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。可从以下几方面注意:1(使用标准的控制结构;2(尽可能使用库函数;3(程序编写首先应当考虑清晰性;4(注意使用GOTO语句; 输入,输出方法:输入,输出的方式和格式应当尽量作到对用户友善(User Friendly),尽可能方便用户的使用。 程序效率:程序效率是指程序的执行速度及程序占用的存储空间。影响程序效率的因素是多方面的。 编程安全:提高软件质量和可靠性的技术大致可分为两类,一类是避开错误 10 技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术;避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术,也就是软件工程中所讨论的先进的软件分析和开发技术和管理技术。但是,无论使用多么高明的避开错误技术,也无法做到完美无缺和绝无错误,这就需要采用容错技术。实现容错的主要手段是冗余和防错程序设计。 面向对象程序设计步骤:面向对象的设计方法一般适用于软件设计和实现阶段。其基本步骤是:?建立软件系统的动态模型;?建立软件系统的静态模型; ?实现。 第八章 软件质量与质量保证 一、重点掌握的内容: 软件质量的有关概念、结构化的软件测试 二、一般掌握内容: 软件维护过程 三、考核知识点: 软件质量:软件质量是各种特性的复杂组合。软件质量反映了以下三方面的问题: (1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。 (2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。 (3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。 软件质量保证策略:为了在软件开发过程中保证软件的质量,主要采取下述措施: ?审查;?复查和管理复审;?测试。 结构化的软件测试:软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分己在编码阶段就开始了。 测试:就是用已知的输入在已知环境中动态地执行系统(或系统的“部件”)。如果测试结果和预期结果不一致,则很可能是发现了系统中的错误。 软件测试:软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)。 程序测试:是对编码阶段的语法错、语义错、运行错进行查找的代码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序调试。程序测试的目的是查找编码错与纠正编码错,保证算法的正确实现。 测试的原则: (1)测试前要认定被测试软件有错,不要认为软件没有错。 (2)要预先确定被测试软件的测试结果。 (3)要尽量避免测试自己编写的程序。 (4)测试要兼顾合理输入与不合理输入数据。 (5)测试要以软件需求规格说明书为标准。 (6)要明确找到的新错与已找到的旧错成正比。 (7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选 11 择好测试用例与测试方法。 (8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。 测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。 静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。 动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。这样动态测试的算法可归纳为: ?选取定义域中的有效值,或定义域外无效值。 ?对已选取值决定预期的结果。 ?用选取值执行程序。 ?观察程序行为,记录执行结果。 ?将?的结果与?的结果相比较,不吻合则程序有错。 动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结枸的测试、接口的测试,都是以执行程序并分析执行结果来查错的。 :是通过分析程序内部的逻辑与执行路线来设计测试用例,进行测试的白盒法 方法,白盒法也称逻辑驱动方法。白盒法的具体设计程序测试用例的方法有:语句覆盖、分支(判定)覆盖、条件覆盖、路径覆盖(或条件组合覆盖),主要目的是提高测试的覆盖率。 黑盒法:是功能驱动方法,仅根据I/O数据条件来设计测试用例,而不管程序的内部结构与路径如何。黑盒法的具体设计程序测试用例的方法有:等价类划分法,边界值分析法,错误推测法,主要目的是设法以最少测试数据子集来尽可能多的测试软件程序的错误。 设计测试方案: 测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果,其中最困难的问题是设计测试用的输入数据(即测试用例)。通常的做法是,用黑盒法设计基本的测试方案,再用白盒法补充一些方案。 软件测试的步骤: 单元测试:单元测试也称模块测试、逻辑测试、结构测试,测试的方法一般采用白盒法,以路径覆盖为最佳测试准则。 集成测试:单元测试之后便进入组装测试。尽管模拟了驱动模块和存根模块进行单元测试,由于测试不能穷尽,单元测试又会引入新错误,单元测试后肯定会有隐藏错误,组装不可能一次成功,必须经测试后才能成功。集成测试分为增式组装测试和非增式组装测试,所谓非增式组装,按照结构图一次性将各单元模块组装起来。所谓增式组装是指按照结构图自顶向下或自底向上逐渐安装。 确认测试:确认测试也称合格测试或称验收测试。组装后己成为完整的软件包,消除了接口的错误。确认测试主要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。 系统测试:一般的系统除了确认测试外还要做如下几个方面的系统测试 ?恢复测试 通过系统的修复能力,检测重新初始化,数据恢复,重新启动,检验点设置机构是否正确,以及人工干预的平均恢复时间是否在允许范围内。 ?安全测试 12 设计测试用例,突破软件安全保护的机构安全保密措施,检验系统是否安全保密的漏洞。 ?强度测试 设计测试用例,检验系统的能力最高能达到什么实际的限度,让系统处于资源的异常数量、异常频率、异常批量的条件下运行测试系统的承受能力。一般取比平常限度高5一10倍的限度做测试用例。 ?性能测试 设计测试用例测试并记录软件运行性能,与性能要求比较,看是否达到性能要求规格。这项测试常常与强度测试相结合进行。 软件维护:软件运行/维护阶段对软件产品所进行的修改就是维护。 维护的问题:软件维护存在的绝大多数问题,都是由于软件定义和软件开发的方法有问题。在软件生命周期的头两个时期没有严格而又科学的管理和规划,几乎必然会导致在最后阶段出现问题。 软件维护步骤及组织:为了正确、有效地修改,需要经历以下三个步骤:1.分析和理解程序;2.修改程序;3.重新验证程序;4.维护组织。 第九章 项目计划与管理 一、重点掌握的内容: 软件项目特点及软件管理功能 二、一般掌握内容: 软件配置管理的过程 三、考核知识点: 软件项目特点: 软件产品与其他任何产品不同,它是无形的,完全没有物理属性。其特点表现为:?智力密集,可见性差;?单件生产:在特定机型上,利用特定硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境;?劳动密集,自动化程度低:?使用方法繁琐,维护困难;?软件工作渗透了人的因素。 软件管理的功能:软件管理的主要功能包括:?制定计划:规定待完成的任务、要求、资源、人力和进度等;?建立组织项目:为实施计划,保证任务的完成,需要建立分工明确的责任机构;?配备人员:任用各种层次的技术人员和管理人员;?指导:鼓励和动员软件人员完成所分配的情况。 软件配置管理的过程:软件配置管理SCM除了负担控制变化之外,它还要担负标识单个的SCI和软件各种版本、审查软件配置以保证开发得以正常进行,以及报告所有加在配置上的变化等任务。 关于SCM需要考虑这样一些问题: (1)采用什么方式标识和管理许多已存在的程序的各种版本,使得变化能够有效地实现。 (2)在软件交付用户之前和之后,如何控制变化, (3)谁有权批准和对变化安排优先级, (4)如何保证变化得以正确地实施, (5)利用什么办法估计变化可能引起的其它问题, 这些问题归结到SCM的五个任务,即标识、版本控制、修改控制、配置审计和配置报告 ?标识配置对象 13 为了控制和管理的方便,所有SCI都应按面向对象的方式命名并组织起来。此时,对象分为基本对象和组合对象,基本对象指在分析、设计、编码或测试阶段由开发人员创建的某个“单位正文描述”,复合对象指由若干基本对象和复合对象组合而成的对象,它由“数据模型”和“模块N”等基本对象组合而成。 每个配置对象都拥有名字、描述、资源列表和实际存在体四个部分。对象名一般为字符串;对象描述包括若干数据项,它们指明对象的类型(例如,文档、程序还是数据)、所属工程项目的标志及变动和版本的有关信息;资源列表给出该对象要求、引用、处理和提供的所有实体,如数据类型、特殊函数等,有时变量也被看作资源;只有基本对象才有实际存在体,它是指向该对象“单元正文描述”的一个指针,复合对象此项取null值。 除了标识配置对象外,还必须指明对象之间的关系,一个对象可标识为另一复合对象的一部分,即此两对象之间存在一个关系。若干关系可定义出对象之间的分层结构。例如: “E-R图1.4” “数据模型”。 ?版本控制 配置管理的版本控制主要解决下列问题: (1)根据不同用户的需要配置不同的系统; (2)保存系统老版本,为以后调查问题使用; 3)建立一个系统新版本,使它包括某些决策; ( (4)支持两为位以上工程师同时在一个项目工作; (5)高效存储项目的多个版本。 ?修改控制 所谓修改控制,即把人的努力与自动工具结合起来,建立一套机制,有意识地控制软件修改。 ?配置审计 确认修改是否已正确实施有两种措施,一种是正式的技术复审,另一种是软件配置审计。 正式的技术复审着重考虑所修改对象在技术上的正确性,复审人员应对该对象是否与其他SCI协调以及在修改中可能产生的疏忽和副作用进行全面的评估。软件配置审计作为一种补救措施,主要考虑下列在正式技术复审中未被考虑的因素: (1)控制变动命令指出的修改是否都已完成,还另加了哪些修改, (2)是否做过正式技术复审, (3)是否严格遵守软件工程标准, (4)修改过的SCI是否做了特别标记,修改的日期和执行修改的人员是否已经注册,该SCI的属性是否能够反映本次修改的结果, (5)是否完成与本次修改有关的注释、记录和报告等事宜, (6)所有相关的SCI是否已一并修改, 三. 试题类型 笔试题型和解题基本要求 考试题型可以有填空、选择、判断、问答题、程序设计与算法描述等。填空题、选择题、判断题主要考核学生对基本概念的理解和掌握程度。问答题、程序设计与算法描述主要考核学生对所学知识的应用能力。 14 15 《软件工程》教学大纲 第一章 软件工程概述 一、重点掌握的内容: 软件和软件工程的基本概念 二、 一般掌握内容: 软件生存周期及软件开发的各种模型。 三、主要知识点: 软件:软件定义由以下三部分组成: (1) 在运行中能提供所希望的功能和性能的指令集(即程序); (2) 使程序能够正确运行的数据结构; (3) 描述程序研制过程、方法所用的文挡。 软件是一种产品,同时又是开发和运行产品的载体。作为一种产品,它表达了由计算机硬件体现的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。 软件的特点: ?软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。? 软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。?在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。?软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。?软件的开发至今尚未完全摆脱手工的开发方式。?软件的开发费用越来越高,成本相当昂贵。 软件的分类:软件依据不同的标准,可划分为不同的分类。 软件工程:是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。 软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。 软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。 软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期一般可分为以下阶段: ?问题定义 ?需求分析与可行性研究 ?设计 ?编码 ?测试 ?运行与维护 软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。 软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。此外,还有螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型等软件开发模型。 16 第二章 可行性研究 一、重点掌握的内容: 可行性研究的系统流程图 二、 一般掌握内容: 可行性研究的任务和步骤,成本效益分析 三、主要知识点: 流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以系统流程图:系统 黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。 系统流程图的功能:1(制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。2(系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。3(系统分析员可直接利用系统流程图画出可以实现计算机处理的部分。4(可利用系统流程图来分析业务流程的合理性。 可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。 可行性研究的步骤:可行性研究的步骤分为九个步骤。 成本效益分析:成本,效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。几种度量效益的方法:1.货币的时间价值;2(投资回收期;3(纯收入。 第三章 需求分析 一、重点掌握的内容: 需求分析的方法和面向数据流的分析方法。 二、一般掌握内容: 需求分析的任务和原则。 三、主要知识点: 需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。 面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。重点掌握结合实例画数据流图和定义数据字典。 需求分析的任务:它的基本任务是准确地回答“系统必须做什么,”这个问题。需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 一般说来,需求分析阶段的任务包括下述几方面: 17 ?确定对系统的综合需求 对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。 ?分析系统的数据需求 ?导出系统的逻辑模型 就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法是:首先确定目标系统与当前系统的逻辑差别 ;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。 ?修正系统开发计划 在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上应该对开发计划进行修正。 ?开发原型系统 使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确定他们的要求。 需求分析的步骤:1.调查研究 ;2(分析与综合;3(书写文档;4(需求分析评审 需求分析的原则:其基本原则可概括为: (1)必须能够表达和理解问题的数据域和功能域;(2)按自顶向下、逐层分解问题;(3)要给出系统的逻辑视图和物理视图。 第四章 概要设计 一、重点掌握的内容: 概要设计的过程和方法 二、一般掌握内容: 概要设计的文档与评审 三、主要知识点: 概要设计任务: ?系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。 ?确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。 ? 编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。 概要设计过程:概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。 软件设计的概念与原则: ?将软件划分成若干独立成分的依据。 ?如何表示不同的成分内的功能细节和数据结构。 ?如何统一衡量软件设计的技术质量。 其中有几个概念:1.模块化:就是把程序划分成若干个模块,每个模块具有一个 子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。 2. 抽象:就是抽出事物的本质特性而暂时不考虑它们的细节。3. 信息隐蔽:模块中 18 所包括的信息不允许其它不需要这些信息的模块调用。4. 信息局部化:是指把一些 关系密切的软件元素物理地放得彼此靠近。5. 模块独立性:是软件系统中每个模块 只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。模块独立 的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。6. 耦合:是对一个软 件结构内各个模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,调 用模块的方式,以及通过接口的信息。7. 内聚:标志一个模块内各个元素彼此结合 的紧密程度,它是信息隐蔽和局部化概念的自然扩展。 概要设计的方法:面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。理解基本概念:信息流(包括变换流和事务流)、抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。 面向数据结构的分析设计方法: ?Jackson系统开发方法(JSD): Jackson系统开发方法(JSD,Jackson System Development)是一种典型的面向数据结构的分析设计方法,它是以信息驱动的,是将 信息转换成软件的程序结构。 ? Warnier方法 :Warnier程序设计方法是由法国人J.D.Warnier提出的另一种面向 数据结构的设计方法,又称为逻辑构造程序的方法,简称LCP(Logical Construction of Programs)方法。Warnier方法的原理和Jackson方法类似,也是从数据结构出发 设计程序,但是这种方法的逻辑更严格。 学会撰写概要设计的文档并能评审出概要设计文档是否符合要求。概要设计说明书的主要内容及结构。 第五章 详细设计 一、重点掌握的内容: 详细设计的任务和方法 二、一般掌握内容: 详细设计的原则及详细设计规格与评审 三、主要知识点: 详细设计的任务:详细设计就是要在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中的每个模块给出足够详细的过程性描述。主要任务如下:?为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;?确定每一模块使用的数据结构;?确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。?要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。 详细设计的方法:程序流程图、N-S图、PAD图、HIPO图 程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。?顺序型;?选择型;? while型循环;? until型循环;? 多情况型选择。 N-S图:Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具, 19 称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。?顺序型;? 选择型;? WHILE重复型;? UNTIL重复型; ? 多分支选择型。 PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。 HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。 HC图是层次图(Hierarchy chart)的英文缩写,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。 详细设计的原则:原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。 详细设计规格与评审:详细设计说明书的框架及评审。 第六章 面向对象的分析和设计方法 一、重点掌握的内容: 面向对象的基本概念和特征 二、一般掌握内容: 面向对象分析与设计方法 三、主要知识点: 面向对象的基本概念: 面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象的几个重要概念:对象、消息、方法性、继承性、封装性等。 面向对象方法的基本特征: ?从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。 ?事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物 的动态特征(即事物的行为)用对象的服务(或操作)表示。 ?对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。 ?对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。 ?通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。 ?复杂的对象可以用简单的对象作为其构成部分,称作聚合。 ?对象之间通过消息进行通信,以实现对象之间的动态联系。 ?通过关联表达对象之间的静态关系。 20 面向对象分析方法:目前出现有OOA与OOD方法。 面向对象设计方法:OOA与OOD的职责划分是:OOA针对问题域运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统的具体实现有关的因素(例如采用什么编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体的实现。OOD则是针对系统的一个具体的实现运用OO方法。其中包括两方面的工作,一是把OOA模型直接搬到OOD(不经过转换,仅作某些必要的修改和调整),作为OOD的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与OOA采用相同的表示法和模型结构。 第七章 编码 一、重点掌握的内容: 程序设计语言的特点、编程风格、程序效率和编程安全 二、一般掌握内容: 面向对象程序设计步骤 三、主要知识点: 程序设计语言的特点: 程序设计语言是人与计算机交流的媒介。软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在需要为一个特定的开发项目选择语言时,能作出合理的技术抉择。其特点表现为九个方面:?名字说明;?类型说 初始化;?程序对象的局部性;?程序模块;?循环控制结构;?分支控制结构;? 明;? 异常处理;?独立编译。 编程风格:编码风格又称程序设计风格或编程风格,实际上指编程的原则。表现为四个方面:源程序文档化,数据说明的方法,语句结构和输入,输出方法。 源程序文档化:源程序文档化又可从四个方面来阐述,?符号名的命名;?程序的注释;?标准的书写格式; 数据说明:数据说明的次序应当规范化。使数据属性容易查找,也有利于测试,排错和维护。 语句结构:语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化。可从以下几方面注意:1(使用标准的控制结构;2(尽可能使用库函数;3(程序编写首先应当考虑清晰性;4(注意使用GOTO语句; 输入,输出方法:输入,输出的方式和格式应当尽量作到对用户友善(User Friendly),尽可能方便用户的使用。 程序效率:程序效率是指程序的执行速度及程序占用的存储空间。影响程序效率的因素是多方面的。 编程安全:提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;另一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术;避开错误技术是进行质量管理,实现产品应有质量所必不可少的技术,也就是软件工程中所讨论的先进的软件分析和开发技术和管理技术。但是,无论使用多么高明的避开错误技术,也无法做到完美无缺和绝无错误,这就需要采用容错技术。实现容错的主要手段是冗余和防错程序设计。 面向对象程序设计步骤:面向对象的设计方法一般适用于软件设计和实现阶段。其基本步骤是:?建立软件系统的动态模型;?建立软件系统的静态模型;?实现。 第八章 软件质量与质量保证 21 一、重点掌握的内容: 软件质量的有关概念、结构化的软件测试 二、一般掌握内容: 软件维护过程 三、主要知识点: 软件质量:软件质量是各种特性的复杂组合。软件质量反映了以下三方面的问题: (1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。 (2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。 (3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。 软件质量保证策略:为了在软件开发过程中保证软件的质量,主要采取下述措施: ?审查;?复查和管理复审;?测试。 结构化的软件测试:软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分己在编码阶段就开始了。 测试:就是用已知的输入在已知环境中动态地执行系统(或系统的“部件”)。如果测试结果和预期结果不一致,则很可能是发现了系统中的错误。 软件测试:软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)。 程序测试:是对编码阶段的语法错、语义错、运行错进行查找的代码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序调试。程序测试的目的是查找编码错与纠正编码错,保证算法的正确实现。 测试的原则: (1)测试前要认定被测试软件有错,不要认为软件没有错。 (2)要预先确定被测试软件的测试结果。 (3)要尽量避免测试自己编写的程序。 (4)测试要兼顾合理输入与不合理输入数据。 (5)测试要以软件需求规格说明书为标准。 (6)要明确找到的新错与已找到的旧错成正比。 (7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。 (8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。 测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。 静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。 动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。这样动态测试的算法可归纳为: ?选取定义域中的有效值,或定义域外无效值。 ?对已选取值决定预期的结果。 ?用选取值执行程序。 ?观察程序行为,记录执行结果。 22 ?将?的结果与?的结果相比较,不吻合则程序有错。 动态测试既可以采用白盒法对模块进行逻辑结构的测试,又可以用黑盒法做功能结枸的测试、接口的测试,都是以执行程序并分析执行结果来查错的。 白盒法:是通过分析程序内部的逻辑与执行路线来设计测试用例,进行测试的方法,白盒法也称逻辑驱动方法。白盒法的具体设计程序测试用例的方法有:语句覆盖、分支(判定)覆盖、条件覆盖、路径覆盖(或条件组合覆盖),主要目的是提高测试的覆盖率。 黑盒法:是功能驱动方法,仅根据I/O数据条件来设计测试用例,而不管程序的内部结构与路径如何。黑盒法的具体设计程序测试用例的方法有:等价类划分法,边界值分析法,错误推测法,主要目的是设法以最少测试数据子集来尽可能多的测试软件程序的错误。 设计测试方案: 测试方案包括预定要测试的功能,应该输入的测试数据和预期的结果,其中最困难的问题是设计测试用的输入数据(即测试用例)。通常的做法是,用黑盒法设计基本的测试方案,再用白盒法补充一些方案。 软件测试的步骤: 单元测试:单元测试也称模块测试、逻辑测试、结构测试,测试的方法一般采用白盒法,以路径覆盖为最佳测试准则。 集成测试:单元测试之后便进入组装测试。尽管模拟了驱动模块和存根模块进行单元测试,由于测试不能穷尽,单元测试又会引入新错误,单元测试后肯定会有隐藏错误,组装不可能一次成功,必须经测试后才能成功。集成测试分为增式组装测试和非增式组装测试,所谓非增式组装,按照结构图一次性将各单元模块组装起来。所谓增式组装是指按照结构图自顶向下或自底向上逐渐安装。 确认测试:确认测试也称合格测试或称验收测试。组装后己成为完整的软件包,消除了接口的错误。确认测试主要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。 系统测试:一般的系统除了确认测试外还要做如下几个方面的系统测试 ?恢复测试 通过系统的修复能力,检测重新初始化,数据恢复,重新启动,检验点设置机构是否正确,以及人工干预的平均恢复时间是否在允许范围内。 ?安全测试 设计测试用例,突破软件安全保护的机构安全保密措施,检验系统是否安全保密的漏洞。 ?强度测试 设计测试用例,检验系统的能力最高能达到什么实际的限度,让系统处于资源的异常数量、异常频率、异常批量的条件下运行测试系统的承受能力。一般取比平常限度高5一10倍的限度做测试用例。 ?性能测试 设计测试用例测试并记录软件运行性能,与性能要求比较,看是否达到性能要求规格。这项测试常常与强度测试相结合进行。 软件维护:软件运行/维护阶段对软件产品所进行的修改就是维护。 维护的问题:软件维护存在的绝大多数问题,都是由于软件定义和软件开发的方法有问题。在软件生命周期的头两个时期没有严格而又科学的管理和规划,几乎必然会导致在最后阶段出现问题。 软件维护步骤及组织:为了正确、有效地修改,需要经历以下三个步骤:1.分析和理解程序;2.修改程序;3.重新验证程序;4.维护组织。 第九章 项目计划与管理 23 一、重点掌握的内容: 软件项目特点及软件管理功能 二、一般掌握内容: 软件配置管理的过程 三、主要知识点: 软件项目特点: 软件产品与其他任何产品不同,它是无形的,完全没有物理属性。其特点表现为:?智力密集,可见性差;?单件生产:在特定机型上,利用特定硬件配置,由特定的系统软件或支撑软件的支持,形成了特定的开发环境;?劳动密集,自动化程度低:?使用方法繁琐,维护困难;?软件工作渗透了人的因素。 软件管理的功能:软件管理的主要功能包括:?制定计划:规定待完成的任务、要求、资源、人力和进度等;?建立组织项目:为实施计划,保证任务的完成,需要建立分工明确的责任机构;?配备人员:任用各种层次的技术人员和管理人员;?指导:鼓励和动员软件人员完成所分配的情况。 软件配置管理的过程:软件配置管理SCM除了负担控制变化之外,它还要担负标识单个的SCI和软件各种版本、审查软件配置以保证开发得以正常进行,以及报告所有加在配置上的变化等任务。 关于SCM需要考虑这样一些问题: (1)采用什么方式标识和管理许多已存在的程序的各种版本,使得变化能够有效地实现。 (2)在软件交付用户之前和之后,如何控制变化, (3)谁有权批准和对变化安排优先级, (4)如何保证变化得以正确地实施, (5)利用什么办法估计变化可能引起的其它问题, 24 模拟试题一 一、填空题 1. 软件工程学的内容可包括( )、结构、( )、( )、环境、管理、规范等。 2. 软件生存周期一般可分为问题定义、( )、( )、设计、( )、测试、运行与维护阶段。 3. 系统流程图是( )的传统工具。 4. 需求分析的基本任务是准确的回答( )。 5. 数据字典的内容包括六项:( )、( )、( )、数据存储、处理逻辑、 外部实体。 6. 在需求分析阶段常用的图形工具有( )、( )、( )。 7. 模块独立的概念是( )、( )、( )和局部化概念的直接结果。 8. HIPO图是由一组( )图和一张( )图组成。 9. UML的定义包括( )和( )两个部分。 10. 软件测试的方法有( )和( )。 11. 软件,( ),( )。 二、单项选择题 1. 下列关于瀑布模型的描述正确的是( )。 A. 瀑布模型的核心是按照软件开发的时间顺序将问题简化。 B. 瀑布模型具有良好的灵活性。 C. 瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。 D. 利用瀑布模型,如果发现问题修改的代价很低。 2. 下列哪个图不是N,S图的构件( )。 A( B. A A B B C. D. C WHILE X B UNTIL Y 3. 对于下图,有关描述中错误的是( )。 25 A D B C A(A表示数据输入的源点 B(B表示数据存储文件 C(C表示加工 D(D表示数据存储文件 4. 下列各方法中( )不是软件测试方法。 A. 白盒法 B. 黑盒法 C. 动态测试 D. 盒法 5. UML的基本建筑块不包括( )。 A( 框架 B( 事物 C( 关系 D( 图 三、多项选择题 1. 关于数据字典正确的描述是( )。 A( 数据字典最重要的用途是作为分析阶段的工具。 B( 实现数据字典三种常见的方法有全人工过程、全自动过程、混合过程。 C( 数据字典应该容易更新和修改。 D( 可以采用卡片形式书写数据字典。 2. ( )可以作为模块。 A( 过程 B( 子程序 C( 函数 D( 宏 3. 耦合的强弱取决于( )。 A( 模块间接口的复杂程度。 B( 调用模块的方式。 26 C( 通过接口的信息。 D( 模块内部各个元素彼此之间的紧密结合程度。 4. 编码风格包括( )。 A. 源程序文档化 B. 数据说明方法 C. 语句结构 D. 输入/输出方法 5. 软件测试主要包括( )方面的差错和纠错。 A. 软件计划 B. 软件设计 C. 软件编码 D. 软件价格 四、判断题 1(在可行性研究中最难决断和最关键的问题是经济可行性。( ) 2(耦合是指一个模块内各个元素彼此结合的紧密程度。( ) 3(一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。( ) 4(概要设计阶段完成的主要文档是概要设计说明书。( ) 5(过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。( ) 6(程序设计语言中应绝对禁止使用GOTO语句。( ) 7(类是关于对象性质的描述,由方法和数据组成。( ) 8(随着软件技术的发展,人们逐渐认识到阅读程序的重要性,编码不仅要强调效率还要强 调清晰。( ) 9(为保证程序的安全,必须做到程序中没有任何错误存在,即容错。( ) 10( 如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。( ) 五、问答题 1(什么是软件危机,软件危机有哪几种表现, 2(什么是模块、模块化、模块独立性, 3(什么是编码风格,为什么要强调编码风格, 4. 什么是黑盒测试法,什么是白盒测试法, 六、 分析题 1. 已知被测试模块流程图如下,按照“判定覆盖”法,在表格中填入满足测试要求的数据。 27 begin (A>2)AND(B=1) F T c b Y=Y/3 (A=3)AND(Y>1) e F T d Y=Y-10 Y=Y+1 0 Retur n 填写下表 数据 覆盖路径 覆盖分支 Y值 TT FF 2. 比较下列两段语句,从编码风格的角度分析哪一段好些,并说明好在哪些方面。 程序段一: if a>b then if x>y then b=y else a=x end if 28 else a=b end if 程序段二: / position_x is the position x of object; position_y is the position y of object; / if a>b then a=b else if position_x>position_y then b=position_y else a=position_x end if end if 模拟试题一参考答案 一、填空题 1. 理论、方法、工具 2. 可行性研究、需求分析、编码 3. 描述物理系统 4. 系统必须做什么 5. 数据流、数据项、数据结构 6. 层次方框图、Warnier图、IPO图 7. 模块化、抽象、信息隐蔽 8. IPO、HC 9. UML语义、UML表示法 10. 分析方法、非分析方法 11. 程序、文档 二、单项选择题 1. C 2. B 3. B 4. D 5. A 三、多项选择题 1. A、B、C、D 2. A、B、C、D 3. A、B、C 4. A、B、C、D 5. A、B、C 29 四、判断题 1. ? 2. ? 3. ? 4. ? 5. ? 6. ? 7. ? 8. ? 9. ? 10. ? 五、问答题 1. 答:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 概括地说,软件危机包含下述两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。具体地说,软件危机主要有下列表现: 产品不符合用户的实际需要。 软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。 软件产品的质量差。 对软件开发成本和进度的估计常常不准确。 软件的可维护性差。 软件文档资料通常既不完整也不合格。 软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。 2. 答:模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可 30 通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。 模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来 组成一个整体,可以完成指定的功能,实现问题的要求。 模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。 模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 3. 答:编码风格又称程序设计风格或编程风格。编码风格实际上指编程的基本原则。 程序实际上也是一种供人阅读的文章。 编写程序时讲求程序的风格,将大量地减少人们读程序的时间。 良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。 4. 答:黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。 白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,白盒测试又称为结构测试。 六、 分析题 1、 答 数据 覆盖路径 覆盖分支 Y值 31 A,3 B,1 Y,6 ce TT 12 A,1 B,2 Y,0 bd FF -10 注意:本题答案不唯一,学生给出的数字正确就应该算对。 、 2 答:第二段程序优于第一段。 注释起到提示的作用,利于程序阅读者对程序段全貌的理解 缩进格式清晰的显示程序中逻辑判断的结构。 变量命名方式表明变量的含义。 32 模拟试题2 一、填空题 (在括号内填写正确的答案,每小题4分,共20分) 1. 软件工程学的内容可包括( )、( )、( )、 ( )、环境、管理、规范等。 2. N,S图中的顺序结构 A B 在PAD图中表示为( ),PAD图设置五种基本控制结构, 并允许( )使用。 3. 面向对象方法是一种运用( )、( )、( )、 ( )、聚合、消息传送、多态性等概念来构造系统的软件开发方法。 4. 模块的独立程度可以由两个定性标准度量,这两个标准分别称为( )和( )。 耦合衡量( ); 内聚衡量( )。 5. 软件测试方法按测试过程是否在实际应用环境中分为( )和 ( )。 填空题答案 12. 理论、结构、方法、工具 13. A B 递归 14. 对象、类、继承、封装 15. 内聚、耦合、不同模块彼此之间互相依赖的紧密程度、一个模块内部各个元素彼 此结合的紧密程度 16. 静态分析、动态测试 二、单项选择题 (将一个正确的答案代码填入括号中,每小题4分,共20分) 1.模块在同一段时间内完成各种初始化工作,这属于( )。 (A)偶然内聚 (B)逻辑内聚 (C)时间内聚 (D)过程内聚 2.在编程安全方面,一般来说无法做到( )。 (A)避开错误 (B)完美无缺,绝无错误 33 (C)冗余 (D)涉及防错程序 3.在衡量软件质量时,最重要的标准是( )。 (A) 成本低 (B)可维护性好 (C)符合要求 (D)界面友好 4.下列工具中,不属于详细设计工具的是( )。 (A)测试工具 (B)图形工具 (C)表格工具 (D)语言工具 5.下列哪个做法会导致不利的语句结构( )。 (A) 避免使用ELSE GOTO结构。 (B) 对递归定义的数据结构尽量不再使用递归过程。 (C) 模块功能尽可能单一化,模块间的耦合能够清晰可见。 (D) 利用信息隐蔽,确保每一个模块的独立性。 二、单项选择题答案 1. C 2. B 3. C 4. A 5. B 三、判断题 (正确的在括号内打上“?”,错误的打上“?”。每小题3分,共21分) 11( Jackson系统开发方法是一种典型的面向对象的分析设计方法。( ) 12( HIPO图是由一组IPO图加一张HC图组成。是美国IBM公司在软件设计中使用的 主要表达工具。( ) 13( 在软件开发中采用原型系统策略的主要困难是成本问题。( ) 14( 软件开发所需的资源可以画成一个金子塔,塔的高层最基本的资源是人。( ) 15( 下图表示的是WHILE型循环。( ) S P 16( 数据流图与程序流程图的主要区别是程序流程图中各处理框之间有严格的时间上 的顺序。而数据流图只反映数据的流向,不反映处理逻辑的先后。( ) 17( UML是面向对象技术领域的建模语言。( ) 三、判断题答案 1. ? 2. ? 3. ? 4. ? 5. ? 6. ? 34 7. ? 四、问答题(每小题5分,共20分) 1(什么是软件? 答: 软件是一种产品。包含下面三方面的含义。 (1)在运行中能提供所希望的功能和性能的指令集(即程序); (2)使程序能够正确运行的数据结构; (3)描述程序研制过程、方法所用的文挡。 2(简述面向数据流的需求分析方法。 答:结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 3(模块独立性的重要性是什么, 答:具有独立的模块软件比较容易开发出来。独立的模块比较容易测试和维护。 4(简述在编码风格上需要注意的四个问题。 答: (1) 源程序文档化; (2) 数据说明的方法; (3) 语句结构; (4) 输入/输出方法。 五、 分析题 (第一小题10分,第二小题9分,共19分) 3. 根据伪码程序画出程序流程图、盒图(N-S图)。 START a IF x1 THEN REPEAT UNTIL x2 b END REPEAT ELSE BLOCK c d END BLOCK END IF STOP 35 2、用Jackson图表示下图所示的二维表格: 学生名册 姓名 性别 年龄 学号 表头 …… …… …… …… 土 表体头 体 该学生名册由表头和表体两部分组成。其中表头又顺序包括表名和字段名。表体可 由任意行组成,每行包括学生的姓名、性别、年龄和学号。 答: 36 学生名册 表头 表体 表名 字段名 行* 姓名 性别 年龄 学号 37 第三套模拟试题填空题及答案 一、填空题 (在括号内填写正确的答案,每空1分,共25分) 1.软件生存周期是指软件从( )、( )、( )直到最终被废弃的全过程。 2.瀑布模型的核心思想是( )。 3.在可行性研究中,( )是最关键的因素。 4.假设使用代码行技术进行费用估计,某软件中共5000行程序,每行平均成本20元,则该 软件的成本为( )。 5.结构化分析方法常用的两种工具是( )和( )。 6.模块的分解和合并应力求( )。 7.程序的效率包括两个方面的内容( )和( )。 8.向对象发出服务请求称为( ),类对象上的各种操作称为( )。 9.提高软件质量和可靠性的技术主要有两类( )和( )。 10.大型软件测试包括( )、( )确认测试和( )四个步骤。 11.软件的维护一般经过( )、( )、( )三个步骤。 12.软件开发需要的资源包括( )、( )和( ),其中( )是最基本的资源。 填空题答案 1. 开发、使用、维护 2. 按工序将问题简化 3. 技术可行性 4. 100000元 5. 数据流图DFD、数据字典DD 6. 降低耦合提高内聚 7. 程序的执行速度、程序占用的存储空间 8. 消息、方法 9. 避开错误技术、容错技术 10. 单元测试、集成测试、系统测试 11. 分析和理解程序、修改程序、重新验证程序 12. 软件工具、硬件工具、人、人 二、单项选择题 (将一个正确的答案代码填入括号中,每小题2分,共10分) 1.如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为( )。 A.时间内聚 B.逻辑内聚 C.通信内聚 D.信息内聚 2.选择足够多的测试数据,使得判定表达式中的每个条件都取得各种可能的值,而且每个判 定表达式也都取到各种可能的结果。满足这种测试条件的覆盖是( )。 A.判定覆盖 B.条件覆盖 C.判定/条件覆盖 D.条件组合覆盖 38 3.下列( )属于详细设计。 A.分析项目的成本和效益 B.为每个模块确定采用的算法 C.编写代码 D.确定模块结构,划分模块功能 4.某次程序调试没有出现预计的结果,下列( )不可能是原因。 A(变量没有初始化 B(循环控制出错 C(变量没有明确的注释 D(代码输入有误 5.下列( )属于不良的编程习惯。 A(尽量不使用GOTO 语句 B(从来不使用注释 C(每行只写一条语句 D(变量命名尽量直观 二、单项选择题答案 1.A 2.C 3.B 4.C 5.B 三、多项选择题 (将一个以上正确的答案代码填入括号中,每小题2分,共10分) 1.成本估计方法包括( )。 A(自顶向下估计 B(自底向上估计 C(算法模型估计 D(螺旋型估计 2.两个模块之间出现( )情况,则称为内容耦合。 A(一个模块访问另一个模块的内部 B(一个模块不通过正常入口而转到另一个模块的内部 C(两个模块有一部分程序代码重叠 D(一个模块有多个入口 3.耦合的强弱取决于( )。 A(模块内部各个元素彼此之间的紧密结合程度 B(调用模块的方式 C(通过接口的信息 D(模块间接口的复杂程度 4.公共环境耦合中的公共环境可以是( )。 A.局部变量 B.全程变量 C.内存的公共覆盖区 39 D.共享的通信区 5.下列( )属于主动式防错程序设计。 A(内存检查 B(检查栈的深度 C(连接检查 D(检查数组的界限 三、多项选择题答案 1.A、B、C 2.A、B、C、D 3.B、C、D 4.B、C、D 5.A、C、 五、问答题(每小题5分,共20分) 1(简述什么是软件,什么是软件工程。 答:软件由以下三部分组成: (1)在运行中能提供所希望的功能和性能的指令集(即程序); (2)使程序能够正确运行的数据结构; (3)描述程序研制过程、方法所用的文挡。 软件是一种产品,同时又是开发和运行产品的载体。作为一种产品,它表达了由计算机硬件体现的计算潜能。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 2(简述什么是软件的逆向工程。 答:软件的逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。一般认为,凡是在软件生命周期内的,将软件某种形式的描述转换为更抽象形式的活动都可称为逆向工程。 3(简述模块独立性的重要性。 答:(1)具有独立的模块软件比较容易开发。 (2)独立的模块比较容易测试和维护。 (3)模块独立是优秀设计的关键,设计又是决定软件质量的关键环节。 4(为什么软件测试不应该由程序的编写人员来做, 答:软件测试的目的是为了发现程序中的错误而执行程序的过程。 正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。 由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。 40 六、 分析题 (共15分) 4. 已知被测试模块流程图如下,按照“条件覆盖”法,在表格中填入满足测试要求的数据。 (本题8分) begin (A>2)AND(B=1) F T c b Y=Y/3 (A=1)OR(Y>1) F T e d Y=Y-5 Y=Y+5 Return 假设几种可能的条件是: T1: A>2 F1:A<=2 T2: B=1 F2: B?1 T3: A=1 F3:A?1 T4:Y>1 F4:Y<=1 填写下表 数据 覆盖路径 覆盖条件 Y值 T1,T2,F3,F4 F1,F2,T3,T4 答 数据 覆盖路径 覆盖条件 Y值 A=4,B=1,Y=3 cd T1,T2,F3,F4 -4 41 A=1,B=2,Y=6 be F1,F2,T3,T4 11 注意:本题答案不唯一,学生给出的数字正确就应该算对。 2、根据伪码程序画出程序流程图、N-S图。(本题7分) START A DO WHILE P B ENDWHILE C D STOP 答: 42 43 《软件工程》作业及参考答案——第一、二章 2003-06-20 一、填空题 1. 软件工程学的内容可包括(理论)、结构、(方法)、(工具)、环境、管理、 规范等。 2. 软件生存周期一般可分为问题定义、(可行性研究)、(需求分析)、设计、(编码)、测试、运行与维护阶段。 3. 可行性研究的目的是(用最小的代价在尽可能短的时间内确定问题是否能够解决)。 4. 系统流程图是(描绘物理系统)的传统工具。 5. 在可行性研究中,(技术可行性)是系统开发过程中难度最大,最重要的一个环节。 二、判断题 1. 软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。( ? ) 2. 螺旋模型是利用笛卡尔坐标的四个象限上分别代表四个方面的活动来表示。( ? ) 3. 原型模型适用于嵌入式软件。( ? ) 4. 面向对象技术是构件组装模型的基础。( ? ) 5. 在可行性研究中最难决断和最关键的问题是经济可行性。( ? ) 6. 系统流程图表达的是部件的信息流程,还表示对信息进行加工处理的控制过程。( ? ) 7. 自底向上成本估计不是从整体开始,而是从任务单元开始。( ? ) 三、单项选择题 1. 下列哪个阶段不是软件生存期三个阶段中的内容( C )。 A( 计划阶段 B( 开发阶段 C( 编码阶段 44 D( 维护阶段 2. 下列关于瀑布模型的描述正确的是( C )。 A. 瀑布模型的核心是按照软件开发的时间顺序将问题简化。 B. 瀑布模型具有良好的灵活性。 C. 瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开。 D. 利用瀑布模型,如果发现问题修改的代价很低。 四、简答题 1. 软件的定义与特点。 参考答案: 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据结构及其相关文档的完整集合。它包括三个方面的内容: ?程序:在运行时,能提供所希望的功能和性能的指令集。 ?数据结构:使程序能够正确运行的数据结构。 ?文档:描述程序研制过程、方法及使用的图文材料。 软件产品具有以下一些特性: ?软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。? 软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。?在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。?软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。?软件的开发至今尚未完全摆脱手工的开发方式。?软件的开发费用越来越高,成本相当昂贵。 也可概括为: ?抽象性:逻辑实体,可记录,但看不到。 ?可复制性:与开发成本相比,复制成本很低。 ?无折旧。 ?受硬件制约。 ?未完全摆脱手工工艺。 45 ?开发费用高。 2. 什么是软件工程。 参考答案: 软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来开发和维护软件。 软件工程是从管理和技术两个方面研究如何运用工程学的基本原理和方法来更好地开发和维护计算机软件的一门学科。 3. 什么是软件生存周期。 参考答案: 一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期一般可分为以下阶段: , 问题定义 , 需求分析与可行性研究 , 设计 , 编码 , 测试 , 运行与维护 软件生存期也可以分为三个大的阶段:计划阶段。开发阶段和维护阶段。 4. 什么是软件危机,软件危机有哪几种表现, 参考答案: 答:软件开发和维护的过程中所遇到的一系列严重的问题。具体表现在: (1)产品不能符合用户的实际需求; (2)软件开发的效率较低; (3)软件产品的质量差; (4)软件开发成本和进度的估算不准确; (5)软件可维护性差; (6)软件开发文档资料不完整; 46 (7)软件的价格昂贵; 5. 简述可行性研究的任务。 参考答案: 可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决,是否有必要去解决。 可行性研究的目的不是解决问题,而是确定问题是否值得去解决。 研究在当前的具体条件下,开发新系统是否具备必要的资源和其它条件。可行性研究是要进行一次压缩简化了的系统分析和设计的过程,也就是说在较高层次上以较抽象的方式进行设计的过程。 6. 简述可行性研究的步骤。 参考答案: 1( 复查系统规模和目标 2( 研究目前正在使用的系统 3( 导出新系统的高层逻辑模型 4( 重新定义问题 5( 导出和评价供选择的方案 6( 推荐一个方案并说明理由 7( 推荐行动方针 8( 书写计划任务书 9( 提交审查 7. 简述系统流程图的作用。 参考答案: 1(制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。 2(系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。 47 3(系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。 4(可利用系统流程图来分析业务流程的合理性。 软件工程作业及参考答案 第三、四章 一、填空题 1. 需求分析的基本任务是准确的回答(系统必须做什么)。 2. 需求分析阶段研究的对象是软件项目的(用户要求)。 3. 结构化分析方法就是(面向数据流)自顶向下逐步求精进行需求分析的方法。需求分析 的目的之一就是把数据流和数据存储定义到(元素级)。 4. 数据流图的基本符号包括(数据输入的源点和数据输出的汇点)、(加工)、(数据流)、 (数据存储文件)。 5. 数据流图和(数据字典)共同构成系统的逻辑模型。 6. 数据字典的内容包括六项:(数据流)、(数据项)、(数据结构)、数据存储、处理逻辑、 外部实体。 7. 在需求分析阶段常用的图形工具有(层次方框图)、(Warnier图)、(IPO图)。 8. 需求分析应交付的主要文档是(需求规格说明书)。 9. 概要设计过程中要先进行系统设计、(复审系统计划)与( 需求分析 ),确定系统具体 的实施方案;然后进行( 结构设计 ),确定软件结构。 10. 层次结构的上一层是下一层的(抽象),下一层是上一层的(求精)。 11. 模块独立的概念是(模块化)、(抽象)、(信息隐蔽)和局部化概念的直接结果。 12. 模块耦合的强弱取决于(模块间接口的复杂程度)、(调用模块的方式)和通过接口的信 息。 13. 设计出软件的初步结构以后,应该进一步分解或合并模块,力求降低(耦合)提高(内 聚)。 14. 在一段程序中,将多次出现的一组语句设计为一个子程序,供多个部分调用,这种情况 出现的内聚称为(偶然内聚)。 15. 一个模块直接调用的模块数目称为模块的(扇出),一个模块被多少上级模块直接调用 称为模块的(扇入)。 16. JSD是一种典型的( 面向数据结构 )的分析设计方法。 17. Jackson图除了可以表达( 程序结构外 )外,还可以表达数据结构。 18. 对于下列伪码,画出改进的Jackson图( ) A seq B C D A end A B C D 48 二、判断题 1. 在软件开发中,采用原型系统策略的主要困难是时间问题。( ? ) 2. 数据流图从数据传递和加工的角度,以图形的方式描述数据流从输入到输出的传输变换 过程。( ? ) 3. 模块越多,开发成本越小。( ? ) 4. 耦合是指一个模块内各个元素彼此结合的紧密程度。( ? ) 5. 内聚是指一个软件结构内各个模块之间互连程度的度量。( ? ) 6. 在软件设计中应该尽量设计紧密耦合的系统。( ? ) 7. 控制耦合往往可以通过分解由数据耦合来代替。( ? ) 8. 内容耦合又称为病态耦合,在很多高级程序设计语言中不允许出现任何形式的内容耦 合。( ? ) 9. 对于DFD图的划分,主要依赖设计人员的经验,一切都应根据设计人员的经验确定。 ( ? ) 10. 一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。( ? ) 11. 如果一个模块内的处理元素是彼此相关的,并且以一个特定的次序执行,则这种内聚称 为时间内聚。( ? ) 12. 概要设计阶段完成的主要文档是概要设计说明书。( ? ) 三、多项选择题 6. 需求分析阶段结束后,应交出的文档中应该包括( ABC )。 A. 数据流图 B. 数据字典 C. 简明的算法描述 D. 项目的经费预算 7. 关于数据流图正确的描述是( ACD )。 A( 数据流图是结构化系统分析的主要工具。 B( 在数据流图中,*号标识相邻的数据流只取其一。 C( 加工是以数据结构或数据内容作为加工对象的。 D( 数据流图的主图中必须包括全部四种基本元素。 8. 关于数据字典正确的描述是( ABCD )。 A( 数据字典最重要的用途是作为分析阶段的工具。 B( 实现数据字典三种常见的方法有全人工过程、全自动过程、混合过程。 C( 数据字典应该容易更新和修改。 D( 可以采用卡片形式书写数据字典。 9. ( ABCD )可以作为模块。 A( 过程 B( 子程序 C( 函数 D( 宏 10. 下列关于模块的描述,正确的是( ABCD )。 A( 具有独立的模块软件比较容易开发出来。 49 B( 独立的模块比较容易测试和维护。 C( 模块的独立程度可以通过内聚和耦合标定。 D( 独立的模块可以完成一个相对独立的特定子功能。 11. 耦合的强弱取决于( ABC )。 A( 模块间接口的复杂程度。 B( 调用模块的方式。 C( 通过接口的信息。 D( 模块内部各个元素彼此之间的紧密结合程度。 12. 在公共环境耦合中,公共环境可以是( ABCD )。 A( 全程变量。 B( 共享的通信区。 C( 内存的公共覆盖区。 D( 存储介质上的文件。 13. 下列( AD )属于内容耦合。 A( 一个模块有多个入口。 B( 两个模块彼此之间只通过传递参数交换信息。 C( 两个模块之间存在全程变量,并通过全程变量传递信息。 D( 两个模块有部分代码重叠。 14. 在软件设计中,(CD)耦合应尽量避免。 A( 控制 B( 数据 C( 内容 D( 标记 四、简答题 1. 需求分析的任务是什么, 参考答案: 见书31页 2. 怎样建立目标系统的逻辑模型, 参考答案: 在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质。在物理模型中有许多 物理因素,但随着分析工作的深入,有些非本质因素就显得不必要了,因而需要对物理模型 进行分析,区分本质和非本质因素,去掉那些非本质因素就可获得反应系统本质的逻辑模型。 做法是: ?确定目标系统与当前系统的逻辑差别; ?将变化部分看作是新的处理步骤,对功能图及对象图进行调整; ?由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。 3. 什么是结构化分析,“结构化”体现在哪里, 参考答案: 50 结构化分析方法是面向数据流进行需求分析的方法。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。 结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 4. 需求说明书由哪些部分组成,各部分之间的关系是什么, 参考答案: 软件需求说明书一般包括如下内容: 1(引言部分 编写目的;项目背景 (应包括:a.项目的委托单位、开发单位和主管部门;b(该软件系统与其他系统的关系。) ; 定义;(列出文档中所用到的专门术语的定义和缩写词的原文。)参考资料。 2(任务概述 目标;运行环境;条件与限制。 3(数据描述 静态数据;动态数据 (包括输入数据和输出数据) ;数据库描述 (给出使用数据库的名称和类型) ;数据词典;数据采集。 4(功能要求 功能划分;功能描述。 5(性能需求 数据精确度;时间特性(如响应时间、更新处理时间、数据转换与传输时间、运行时间等);适应性(在操作方式、运行环境、与其他软件的接口以及开发计划等发生变化时,应具有的适应能力。) 6(运行需求 用户界面(如屏幕格式、报表格式、菜单格式、输入输出时间等);硬件接口;软件接口;故障处理。 7(其他要求 如可使用性、安全保密、可维护性、可移植性等。 8(附录 5. 为什么数据流图要分层, 参考答案: 为了表达数据处理过程的数据加工情况,用一个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系。 6. 什么是加工逻辑, 参考答案: 加工逻辑就是处理逻辑,加工逻辑是对加工过程的抽象描述。加工逻辑的具体实现就是加工过程。 加工逻辑是指用户对这个加工的逻辑要求,即加工的输入数据流与输出数据流之间的逻辑关系。 加工逻辑主要是说明加工做什么,而不是描述具体的加工过程,如采用哪些加工单元、如何控制执行等实现细节。 51 7. 根据下列描述,画出教材征订系统的第一层数据流图。学生入学后到教材科订书,教材 科根据教材库存情况分析是否需要买书,如需购买,则向书店购买。各种资金往来通过 学校的会计科办理。 参考答案: 8. 结构化设计方法的基本思想是什么,它如何与SA方法相衔接, 参考答案: 结构化设计方法的基本思想是 SA是结构化分析方法的简称。结构化分析方法是面向数据流进行需求分析的方法。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。结构化分析方法体现在用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 结构化设计是在结构化分析的基础上完成的。 结构化设计属于面向数据流的设计方法。在需求分析阶段,通过SA方法,解决了一个关键问题:信息流。数据流是软件开发人员考虑问题的出发点和基础。数据流从系统的输入端向输出端流动,要经历一系列的变换或处理。用来表现这个过程的数据流图(DFD):实际上就是软件系统的逻辑模型。结构化设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射为软件系统的结构。换句话说,这类设计方法允许把用DFD图表示的系统逻辑模型方便地转换成对于软件结构的初始设计描述。 结构化设计方法的基本思想是将系统划分成一些独立的功能模块,这些模块按照一定的组织层次构造起来形成软件结构,通过自顶向下逐步细化的方法将用数据流图表示的信息转换成程序结构的设计描述。 从结构化分析到结构化设计工具的转变: 结构化分析结果 结构化设计结果 数据流图 初始结构图 生存周期字典的数据部分 设计数据字典 52 伪码+实现方面 伪码 实体关系图+数据库性 数据库设计 事务框图 分层/细化事务模型 9. 什么是模块、模块化, 参考答案: 模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名的而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。 模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。 模块化设计这一概念取消。 10. 说明并比较概要设计说明书与需求分析说明书的内容。 参考答案: P54 P98 (1)两个说明书都包括引言,内容基本相同; (2)任务概述部分概要设计说明比需求说明增加了需求概述; (3)需求说明主要通过静态、动态数据,数据库描述,数据字典和数据采集等内容进行数据描述; (4)需求说明中的主要部分是功能要求、性能要求、运行需求以及其他要求,它的目的是全面地、精确地描述了系统要“做什么”。需求说明书中还可能包括数据流图、数据字典、IPO图等描述的系统逻辑模型。 (5)概要设计说明则对系统的总体结构、各个接口、数据结构、运行、出错、安全、维护进行具体设计,它的目的是描述系统“怎样做”,往往包含了各模块的处理说明和接口说明以及系统结构图。 (6)概要设计说明是建立在需求说明的基础上的。 11. 用Jackson图表示下图所示的二维表格: 学生名册 姓名 性别 年龄 学号 表头 …… …… …… …… 表体 该学生名册由表头和表体两部分组成。其中表头又顺序包括表名和字段名。表体 可由任意行组成,每行包括学生的姓名、性别、年龄和学号。 53 参考答案: 学生名 册 表头 表体 表名 字段名 行* 姓名 性别 年龄 学号 12、指出下列数据流图中存在的问题。 F F 2 3(2 B O B P 1 3(1 3(3 D C D 3 Q E 3(4 E 父图 子图 参考答案: 1、父图没有输入数据流; 2、子图的输入数据流应该是C,而不是B; 3、子图的输出数据流应该只有D和E,而不应有F。 软件工程作业及参考答案 第五、六章 一、填空题 1. 详细设计的工具有(图形工具)、表格工具和语言工具。 2. 为使用流程图描述结构华程序,限制流程图有五种基本的控制结构(顺序型)、(选择型)、 (while型循环)、until循环、多情况型选择。 3. HIPO图是由一组(IPO)图和一张(HC)图组成。 54 4. IPO图由(输入)、处理和(输出)三个框组成。这个图的特点是能够直观的显示三者 之间的关系。 5. 面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点 来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一 种运用(对象)、(类)、(封装)、(聚合)、消息传送、多态性等概念来构造系统的软件 开发方法。 6. 面向对象的软件工程方法是面向对象方法在(软件工程)领域的全面应用。 7. UML的定义包括(UML语义)和(UML表示法)两个部分。 二、判断题 1. 详细设计是在概要设计之后进行的。它利用概要设计的结果,对系统中的每个模块给出 足够的过程性描述。( ? ) 2. 程序设计语言中应绝对禁止使用GOTO语句。( ? ) 3. PAD图在设置了五种基本的控制结构后,还允许递归调用。( ? ) 4. UML设定的目标之一是运用面向对象概念来构造系统模型。( ? ) 5. 类是关于对象性质的描述,由方法和数据集成。( ? ) 三、简答题 1. 详细设计的任务是什么, 参考答案: 1(为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述; 2(确定每一模块使用的数据结构; 3(确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。 4(要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。 2. 根据伪码画出N,S图。 START IF A THEN BLOCK B C END BLOCK END IF STOP 3. 根据伪码画出N,S图。 START IF A THEN X1 DO UNTIL B 55 ELSE X2 Y END IF Z STOP 参考答案: A T X1 X2 F Y Z UNTIL B 4. 根据伪码画出PAD图。 START SWITCH P CASE 1: A; break; CASE 2: B; break; CASE 3: C; break; Default; STOP 参考答案: 56 ,1 A ,2 B P ,3 C 5. 简述什么是“对象”,什么是“类”。 参考答案: 人们要进行研究的任何事物均可看作对象,例如具体的事物、抽象的规则、计划和事件。 类的定义是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。(类是具有相同属性、操作、关系的对象集合的总称。) 6. UML的内容包括哪些部分, 参考答案: 标准建模语言UML的重要内容可以由下列五类图来定义. ?用例图。?是静态图。?行为图。?交互图。?实现图。 《软件工程》作业及参考答案——第七、八、九章 2003-06-20 一、填空题 1. 软件,(程序),(文档)。 2. 程序的效率是指程序的执行速度和(程序占用的存储空间)。 3. 软件测试的方法有(分析方法)和(非分析方法)又称黑盒法。 4. 实现容错的主要手段是(冗余)和(防错程序设计)。 5. 软件测试的配置主要包括(测试计划)、(测试用例)和测试程序等。 57 6. 软件测试的步骤主要包括(单元测试)、集成测试、确认测试和(系统测试)。 二、判断题 独立编译是指将一个大程序的不同程序单元分别编译,然后重新连接整个程序段。 1. ( ? ) 2. 为保证程序的安全,必须做到程序中没有任何错误存在,即容错。( ? ) 3. 如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。( ? ) 4. 软件测试只对软件的编码进行查错和纠错工作,不需对软件计划和软件设计进行查错。( ? ) 5. 软件测试的目的是为了证明一个软件的设计没有错误,只有没有任何错误的软件才能使用。( ? ) 6. 在进行软件测试之前,首先应该假设软件是没有错误的。( ? ) 7. 软件测试中,应该尽量穷尽所有的数据,以便保证测试的质量。( ? ) 8. 判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定/条件覆盖是同时满足这两种覆盖标准的逻辑覆盖。( ? ) 三、多项选择题 1. 程序设计语言的特点包括( ABCD )。 A. 名字说明 B. 类型说明 C. 初始化 D. 循环和分支控制结构 2. 编码风格包括( ABCD )。 A. 源程序文档化 B. 数据说明方法 C. 语句结构 D. 输入/输出方法 58 3. 被动式防错的检查项目包括(BD)。 A. 周期性的进行标志检查 B. 表达式中是否有分母为0的情况 C. 周期性的进行链表连接情况的检查 D. 栈的深度是否正确 4. 软件测试主要包括( ABC )方面的差错和纠错。 A. 软件计划 B. 软件设计 C. 软件编码 D. 软件价格 5. 软件维护的步骤主要包括(ABC)。 A. 分析和理解程序 B. 修改程序 C. 重新验证程序 D. 维护组织 四、简答题 1. 什么是编码风格,为什么要强调编码风格, 参考答案: 编码风格又称程序设计风格或编程风格。 编码的目标从强调效率转变为强调清晰。良好的编码风格能在一定程度上弥补语言存在的缺陷,而如果不注意风格就很难写出高质量的程序。尤其当多个程序员合作编写一个很大的程序时,需要强调良好而一致的编码风格,以便相互通讯,减少因不协调而引起的问题。总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。 2. 编码风格有哪几个方面的问题,分别需要注意什么, 59 参考答案: 编码风格包括四个方面,即源程序文档化,数据说明的方法,语句结构和输入,输出方法。 源程序文档化主要包括选择标识符(变量和标号)的名字、安排注释以及程序的视觉组织等。 在编写程序时,要注意数据说明的风格。为了数据说明便于理解和维护,必须注意下述几点。 ,(数据说明的次序应规范。进而有利于测试,排错和维护。 ,(说明的先后次序固定。例如,按常量说明、简单变量类型说明、数组说明、公用数据块说明、所有的文件说明的顺序说明。在类型说明中还可进一步要求。例如,可按如下顺序排列:整型量说明、实型量说明、字符量说明、逻辑量说明。 ,(当用一个语句说明多个变量名时,应当对这些变量按字母的顺序排列。 ,(对于复杂数据结构,应利用注释说明实现这个数据结构的特点。 在设计阶段确定软件的逻辑结构,但编码阶段的任务是构造单个语句。构造的语句要简单、直接,不要为了提高效率而使语句更为复杂。 1(使用标准的控制结构 2(尽可能使用库函数 3(首先应当考虑可读性 4(注意GOTO语句的使用 5(其他须注意的问题 (1)避免使用ELSE GOTO和ELSE RETURN结构。 (2)避免过多的循环嵌套和条件嵌套; (3)数据结构要有利于程序的简化。 (4)要模块化,使模块功能尽可能单一化,模块间的耦合能够清晰可见。 (5)对递归定义的数据结构尽量使用递归过程。 (6)不要修补不好的程序,要重新编写,也不要一味地追求代码的复用,要重新组织。 60 (7)利用信息隐蔽,确保每一个模块的独立性。 (8)对太大的程序,要分块编写、测试,然后再集成。 (9)注意计算机浮点数运算的特点。尾数位数一定,则浮点数的精度受到限制。 (10)避免不恰当地追求程序效率,在改进效率前,要作出有关效率的定量估计。 (11)确保所有变量在使用前都进行初始化。 (12)遵循国家标准。 输入,输出信息是与用户的使用直接相关的。输入,输出的方式和格式应当尽量作到对用户友好,尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。这就要求,源程序的输入,输出风格必须满足人体工程学的需要和系统能否为用户接受。因此,在软件需求分析阶段和设计阶段,就应基本确定输入,输出的风格。 3. 比较下列两段语句,从编码风格的角度分析其优、劣。 程序段一: if a>b then if x>y then b=y else a=x end if else a=b end if 程序段二: 61 / position_x is the position x of object; position_y is the position y of object; / if a>b then a=b else if position_x>position_y then b=position_y else a=position_x end if end if 参考答案: 第二段程序优于第一段。 注释起到提示的作用,利于程序阅读者对程序段全貌的理解 缩进格式清晰的显示程序中逻辑判断的结构。 变量命名方式表明变量的含义。 4. 软件的质量反应在哪些方面, 参考答案: 软件质量反映了以下三方面的问题。 1(软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。 2(在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。 3(往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。 5. 什么是黑盒测试法,什么是白盒测试法, 62 参考答案: 黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。 白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。 6. 什么是逆向工程, 参考答案: 逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。一般认为,凡是在软件生命周期内的,将软件某种形式的描述转换为更抽象形式的活动都可称为逆向工程。 7. 什么是软件配置管理, 参考答案: 软件配置管理(SCM)是贯穿于整个软件过程中的保护性活动。因为变化可能发生在任意时间,SCM活动被设计来(1)标记变化,(2)控制变化,(3)保证变化被适当地实现,以及(4)向其他可能有兴趣的人员报告变化。 8. 简述软件测试的原则。 参考答案: 测试的原则如下: (1)测试前要认定被测试软件有错,不要认为软件设有错。 2)要预先确定被测试软件的测试结果。 ( (3)要尽量避免测试自己编写的程序。 (4)测试要兼顾合理输入与不合理输入数据。 (5)测试要以软件需求规格说明书为标准。 (6)要明确找到的新错与已找到的旧错成正比。 (7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。 63 (8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。 9. 解释概念:测试用例。 测试用例就是测试用的输入数据。 10. 简述测试方案的基本目标以及包括的主要内容。 参考答案: 测试方案的基本目标是确定一组最可能发现某个错误或某类错误的测试数据。 测试方案包括预定要测试的功能、应该输入的测试数据和预期的结果。 11. 简述判定覆盖、条件覆盖、判定/条件覆盖三种方法的原则以及它们之间的相互关系。 参考答案: 判定覆盖是只被测试程序段中不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次(真假分支均被满足一次)。 条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。 判定/条件覆盖是指选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果, 条件覆盖比判定覆盖功能强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定/条件覆盖同时满足这两种覆盖标准的逻辑覆盖。 12. 根据下图,给出按照路径覆盖原则生成的覆盖路径集。 参考答案: 64 1,2,3 1,2,6,7 1,4,5,3 1,4,5,6,7 65
本文档为【(最新)软件工程资料全】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_591137
暂无简介~
格式:doc
大小:226KB
软件:Word
页数:91
分类:互联网
上传时间:2018-05-03
浏览量:60