软件工程导论重点内容

上传人:hao****an 文档编号:102089402 上传时间:2022-06-06 格式:DOC 页数:26 大小:466.50KB
收藏 版权申诉 举报 下载
软件工程导论重点内容_第1页
第1页 / 共26页
软件工程导论重点内容_第2页
第2页 / 共26页
软件工程导论重点内容_第3页
第3页 / 共26页
资源描述:

《软件工程导论重点内容》由会员分享,可在线阅读,更多相关《软件工程导论重点内容(26页珍藏版)》请在装配图网上搜索。

1、 第一章 软件工程概述一什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵。二软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计

2、算机迅速普及的趋势。软件产品“供不应求”。2.软件成本在计算机系统总成本中所占的比例逐年上升。3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。4.软件产品的质量不容易保证。5.软件产品常常是不可维护的。6.软件产品的重用性差,同样的软件多次重复开发。7.软件通常没有适当的文档资料。产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何

3、维护数量不断膨胀的已有软件。3、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效

4、的开发出高质量的软件并有效地维护它,这就是软件工程。软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学三要素:方法、工具和过程4、软件生命周期(概念、三时期,八阶段)软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试 五、软件开发模型:软件开发模型是跨越整个软件生存周期

5、的系统开发、运作、维护实施的全部工作和任务的结构框架。1)瀑布模型瀑布模型即生存周期模型,由B.M.Boehm提出,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用结构化的分析与设计方法,将逻辑实现与物理实现分开。 特点 阶段的顺序性和依赖性(规范化) 推迟实现的观点(系统化) 质量保证(阶段评审)l 存在问题 不适合需求模糊的系统(需求的迷糊性和不确定性)适用于操作系统、编译系统、数据库管理系统等系统软件的开发 快速原型模型: 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型

6、的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌 3)增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物。这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量。4)喷泉模型5)微软过程 六、思考你认为“软件就是程序”这一个观点正确吗?如果不正确,请批驳之。1. 请从以下几个方面结合自己的经验实例加以论述。软件就是程序的观点是不正确的,因为软件等于程序加文档加数据。(1) 文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用。(2) 在软件开发的每一个阶段都应有相应的文档。

7、它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介(3) 文档是软件在不同阶段的表现形式。(4) 程序与文档必须一致,文档才有价值。(5) 文档质量直接决定软件质量的高低。(6) 文档也是软件测试和维护的依据。在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情。(7) 文档是软件可重用的依据。2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请解释你的回答。 答:对, 第二章 可行性研究 重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、 可行性研究的任务:是用最小的代价在尽可能短的时间

8、内确定问题是否能够解决。一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性 可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决。(或就是用最小代价在尽可能短的时间内确定问题是否能够解决。)2、 可行性研究过程:1) 复查系统规模和目标2) 研究目前正在使用的系统3) 导出新系统的高层逻辑模型4) 进一步定义问题5) 导出和评价供选择的解法6) 推荐行动方针7) 草拟开发计划8) 书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直

9、观简洁。系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程。在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型。 4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。l 抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况。l 概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件。它

10、从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。6、数据流程图的组成:外部实体(外部实体是指系统之外的人或单位,它们和本系统有信息传递关系)数据流,处理、数据存储。如何绘制数据流程图(1)识别系统的输入和输出,画出顶层图(2)画系统内部的数据流、加工与文件,画出一级细化图(3)加工的进一步分解,画出二级细化图(4)其它注意事项7、数据流程图的注意点1)每个处理都必须有流入的数据流和流出的数据流,如果没

11、有,是错误的。(数据守恒) 2)每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了。 3)、数据流只能在处理与处理、数据存储或者外部实体之间流动。、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的。 4)、 一个处理可以细分成多个子处理,分成若干个层次(均匀分解) 5)、良好命名系统流程图与数据流程图有什么区别?答:1)系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。2)系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。3)数据流程图从数据传送和加工的角度抽象的描述信息在系

12、统中的流动和数据处理的工作状况。三、数据流图:!1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。3、一套分层的的数据流图由顶层、底层、和中间层组成。4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精。b.保持父图与子图的平衡。也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同。c.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据。d.加工细节隐藏。根据抽象原则,在画父图时,只需画出加工和加

13、工之间的关系,而不必画出各个加工内部的细节。e.简化加工间关系。在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目。f.均匀分解。应该使一个数据流中的各个加工分解层次大致相同。g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字。h.忽略枝节。应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题。i.表现的是数据流而不是控制流。j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读。小结:一

14、个软件系统,其数据流图往往有多层。如果父图有N个加工(Process),则父图允许有0N张子图,但是每张子图只能对应一张父图。在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同。DFD信息流大致可分为两类:交换流和事务流。9、数据字典1) 数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用。 2) 数据字典的内容包括:数据流、数据流分量(即数据元素)、数据存贮、处理逻辑和外部实体。 3).数据字典的作用是

15、什么?对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定。几种度量效益的方法:货币的时间价值、投资回收期、纯收入 第三章 需求分析 一、重点掌握的内容那: 需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点: 1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,

16、在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析。 2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。需求

17、分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1) 确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2) 分析系统的数据需求 就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图

18、进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型。3) 导出系统的逻辑模型4) 修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正。5)开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求。4、需求分析的步骤:1)调查研究 2)分析与综合 3)书写文档 4)需求分析评审 5、需求分析的原则:1)、必须能够表达和理解

19、问题的数据域和功能域2)、按自顶向下、逐层分解问题3)、要给出系统的逻辑视图和物理视图6、软件需求的验证: 需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般说来,应该从下述4个方面进行验证:(1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。 (2) 完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。 (3) 现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。对硬

20、件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。 (4) 有效性必须证明需求是正确有效的,确实能解决用户面对的问题。7、 状态转换图(!):指明了作为外部事件结果的系统行为。为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。状态转换图是行为建模的基础。思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有( A )。供选择的答案: A. 数据流图 B. 数据词典 C. 结构化英语 D. 判定表与判定树在结构化分析方法中用状态迁移图表达系统或对象的行为。在状态迁移图中,由一个状态和

21、一个事件所决定的下一状态可能会有( A )个。供选择的答案: A. 1 B. 2 C. 多个 D. 不确定 五、总体设计(概要设计)重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。1、面向结构设计(SD)2、面向对象设计(OOD)2、总体设计的任务:1)系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2)去顶模块

22、结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。3)编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。4、典型的总体设计过程包括下述9个步骤:1)、设想功选择的方案2)、选取合理的方案3)、推荐最佳方案4)、功能分解5)、设计软件6)、设计数据库7)制定测试计划8)、书写文档

23、:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9)、审查和复审二、设计原理分析(模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系):模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了.模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小.3、模块设计

24、的准则: (1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。 (2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。 (4) 尽量降低模块接口的复杂程度; (5) 设计单入口、单出口的模块。 (6) 模块的作用域应在控制域之内。4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、 信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件

25、元素物理地放得彼此靠近6、 什么是模块独立性?答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。7、 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的 其它的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。8、 为什么模块的独立性很重要?答:1)有效的模块化的软件比较容易开发出来2)独立的模块比较容易测试和维护。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。9、 衡量模块独立的两个标准是什么?它们各表示什么含义? 答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性。 (

26、1)耦合性。也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 (2)内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。 耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。10、启发规则:1

27、) 改进软件结构提高模块独立性2) 模块规模应该适中3) 深度、宽度、扇出、和扇入都应适当 深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。 宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。 一个模块的扇入是指直接调用该模块的上级模块的个数。一个模块的扇出是指该模块直接调用的下级模块的个数。设计原则:低扇出、高扇入。 4) 模块的作用域应该在控制域内5) 力争降低模块接口的复杂程度6) 设计单入口和单出口的模块7) 模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信

28、息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流。 事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成。当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作。四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口。 2、结构化方法

29、的步骤:1)复审DFD图,必要时刻再次进行修改或细化:2)鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型。3)按照SD方法规定的一组规则,吧DFD图转换为初始的SC图。变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则: 1)对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小。 2)保持高扇 / 入低扇出原则 3)作用域 / 控制域规则: 作用域不要超出控制域的范围; 软件系统的判定,其位置离受它控制的模块越近越好。 六、 详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设

30、计的原则和详细设计的规格与评审考核知识点:一、详细设计1、 详细设计目的:对模块的算法设计和数据结构设计(设计出的处理过程应该尽可能简明易懂)。 2、 详细设计的任务:详细设计就是在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中个的每个模块给出足够详细的过程描述,主要任务如下:编写软件的“详细设计说明书”.软件人员要完成的工作:(1) 为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,写出模块的详细过程描述.(2) 确定每一模块使用的数据结构.(3) 确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及

31、局部数据的全部细节.(4) 为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试.模块的测试用例是软件测试计划的重要组成部分,通常包括输入数据,期望输出等内容。3、详细设计的原则:过程描述是否易于理解、复审和维护,进而过程描述能够自然装换成代码,并保证详细设计与代码完全一致。4、详细设计的描述工具应具备什么功能?答:无论哪类描述工具不仅要具有描述设计过程,如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。 二、结构化程序设计4、结构程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这3种进本控制结构

32、进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。5.结构化程序设计的基本原则:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构. 四、过程设计1、描述程序处理过程的工具称为过程设计工具,它们可以分为图形、表格和语言3类。2、详细设计的方法:程序流程图、N-S图、PAD图 程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。1)顺序型、2)选择型、3)while型 4)Until型循环 5)多情况型

33、选择N-S图:规定了五种基本图形构件:1)顺序型、2)选择型、3)while重复型 4)Until重复型循环 5)多分支选择型PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD图也设置了五种基本控制结构的图示,并允许递归使用。 判定表:能够清晰地表示复杂的条件组合与应该做的动作之间的关系。 判定树的优点:它的形式简单到不需要任何说明,一眼就可以看出其含义,因此易于掌握和使用。 过程设计语言(PDL)也称伪码,它是正文形式表示数据和处理过程的设计工具。4.比较面向数据流和面向数据结构两类设计方法的异同?相同点:(1) 遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基

34、础;(2) 均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。不同点:(1) 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。(2) 面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。 过程设计的原则和方法:1) 清晰第一的设计风格:大多数情况下,应该优先考虑程序的清晰度,把效率的考虑放在第二位。(除少数使用特别频繁,或者实时程序)2) 结构化的控

35、制结构:所有的模块都只使用单入口单出口的3种基本循环结构顺序、选择、循环3) Goto语句不应滥用,但也不必完全禁止4) 逐步细化实现方法。五、 面向数据结构的设计方法(Jackson方法和Warnier方法)1、 Jackson设计方法:Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。它是以信息驱动的,是将信息转换成软件的程序结构2、Jackson方法的基本步骤是:(1)分析并确定输入数据和输出数据的逻辑结果,并用Jackson图描绘这些数据结构.(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。(3)从描绘数据结构的Jackson图导出描绘程序结构

36、的Jackson图(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把他们分配到程序结构图的适当位置(5)用伪代码表示程序 3、比较Jackson方法和LCP方法的异同? 答:Jackson与LCP设计方法都是以数据结构为出发点,以程序的过程描述为最终目标,设计步骤基本相似。它们的主要差别是:(1)使用不同的表达工具,其中LCP方法中的表达工具Warnier图比Jackson设计方法中的表达工具Jackson图有更大的通用性;(2)Jackson方法的步骤和指导原则有一定的灵活性,而LCP设计方法则更加严密。 第七章、实现重点掌握的内容:程序设计的语言的特点、编程风格、程序效率和编码

37、安全考核知识点:1、实现定义: 通常把编码和测试统称为实现一、编码:1、所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。2、 编码的任务?答:使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。3、程序设计的特点:程序设计语言是人鱼计算机交流的媒介。软件工程师应该了解程序设计语言各方面的特点,以及这些特点对软件质量的影响,以便在需要为一个特定的开发项目选择语言时,能作出合理的技术抉择。其特点表现为九方面:(1) 名字说明:程序中使用对象的名字,能为编译程序所检查和识别;(2) 类型说明:定义对象的类型,确定该对象的使用方式;(3) 初始化:为变量提供适当

38、的初始值或由系统给变量赋一特殊的表明未初始化的值;(4) 对象的局部性:程序中真正需要的那部分才能访问的对象;(5) 程序模块:控制程序对象的名字;(6) 循环控制结构:如FOR语句、WHILE-DO语句、REPEAT-UNTIL语句等;(7) 分支控制结构:如IF语句、CASE语句等;(8) 异常处理:为程序运行过程中发生的错误和意外事件提供检测和处理上的帮助;(9) 独立编译:能分别编译各个程序单元。4、编码风格: 编码风格又称程序设计风格或编程风格,实际上指编程的原则。表现为五个方面:源程序文档化:符号名的命名、程序的注释、标准的书写格式数据说明:数据说明的次序应当规范化。使数据属性容易

39、查找,也有利于测试,排错和维护语句结构:语句结构力求简单、直接,不能为了片面追求效率而使语句复杂化,可以从以下几点注意:使用标准的控制结构、尽可能使用库函数、程序编写首先应该考虑清晰性、注意使用goto语句输入/输出:输入/输出地方式和格式应当尽可能做到对用户友善,尽可能方便用户的使用。效率: 程序效率:程序效率是指程序的执行速度及程序占用的存储空间。影响程序效率的因素是多方面的。二、软件测试:1、软件测试定义: 为了发现程序中的错误而执行程序的过程2、软件测试目标: 测试是为了发现程序中的错误而执行程序的过程3、软件测试的准则: 1)所有测试都应该能够追溯到用户需求2)应该远在测试开始之前就

40、制定出测试计划3)把Pareto原理应用到软件测试中4)应该从“小规模”测试开始,并逐步进行“大规模”测试5)穷举测试是不可能的。6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。 4、软件测试方法: 第一种方法是黑盒测试(功能测试),第二种方法是白盒测试(结构测试)黑盒测试:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用。白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。 5、软件测试步骤: 1)单元测试(模块测试) 2).子系统测试3). 系统测试 4). 验收测试(确认测试)5.) 平行运行6、测试

41、阶段的信息流:1)软件配置,包括需求说明书、设计说明书和原程序清单测试配置,包括测试计划和测试方案(输入数据、输出数据和检测功能)三、单元测试1、单元测试(Unit testing )也称为模块测试或结构测试,通常可放在编程阶段(实现阶段),主要采用逻辑覆盖技术,由程序员对自己编写的模块自行测试,检查模块是否能实现了详细设计说明书中规定的功能和算法。2、单元测试主要发现编程和详细设计中产生的错误。3、测试一个模块时需要为该模块编写一个驱动模块和若干个桩(stub)模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。4、 在进行单元测试时,常用的方法是白盒测试(采用逻辑覆盖的测试技术

42、),辅之以黑盒测试。5、可从以下5方面对模块进行测试:1)模块接口:参数的数目、次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致。2)局部数据结构3)重要执行通路4)出错处理通路5)边界条件:边界测试是单元测试中最后的也可能是最重要的任务。 四、非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块? 非渐增式测试与渐增式测试的测试方法有以下区别:非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试与集成测试和在一起,同时完成。非渐增式需要更多的工作量,因

43、为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。渐增式比较彻底,已测试的模块和新的模块再测试。渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。渐增式测试有以下两种不同的组装模块的方法:自顶向下组合。该方法只需编写桩模块,其步骤是从顶层模块开始,沿被测程序的软件结构图的控制路径

44、逐步向下测试,从而把各个模块都结合起来,它又有两种组合策略:深度有先策略:先从软件结构中选择一条主控制路径,把该路径上的模块一个个结合进来进行测试,以便完成一个特定的子功能,接着再结合其它需要优先考虑的路径。宽度有先策略:逐层结合直接下属的所有模块。自低向上结合。该方法仅需编写驱动模块。其步骤为:把底层模块组合成实现一个个特定子功能的族。为每一个族编写一个驱动模块,以协调测试用例的输入和测试结果的输出。对模块族进行测试。按软件结构图依次向上扩展,用实际模块替换驱动模块,形成一个个更大的族。重复至步,直至软件系统全部测试完毕。 五、集成测试: 1、集成测试(integration testing

45、)也称为组装测试,在单元测试的基础之上,把所有的模块组装成一个系统进行测试。主要测试设计阶段产生的错误,集成测试计划应该在概要设计阶段制定。2、非渐增式集成测试首先将每个模块分别进行单元测试,再把所有的模块组装成一个完整的系统进行测试。目前在进行集成测试时已普遍采用渐增式集成。3、渐增式集成测试又可以分为自顶向下集成和自底向上集成。自顶向下集成先测试上层模块,再测试下层模块,由于测试下层模块时上层模块已经测试过,所以不必要另外编写驱动模块。自底向上集成,先测试下层模块,再测试上层模块。顶层模块测试时不需要驱动模块,底层模块测试时不需要桩模块。软件的集成测试最好由不属于该软件开发组的软件设计人员

46、承担,以提高集成测试的效果。六、确认测试(验收测试) 1) 确认测试的目标是验证软件的有效性2) 在系统验收测试中,验证测试是在模拟的环境中进行强度测试的基础上进行,主要依据软件需求说明书检测软件的功能,性能及其他特征是否与用户的要求一致,而确认测试是在一个实际环境中使用真实数据运行系统。3) 确认测试计划应该在需求分析阶段制定。4) Alpha测试由用户在开发者的场所进行,并且在开发者的指导下进行测试。开发者负责纪录发现的错误和使用中遇到的问题,也就是说Alpha测试是在受控的环境中进行的。5) Beta测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场,用户负责记录发

47、现的错误和使用中遇到的问题并把这些问题报告给开发者。也就是说,Beta测试是在受控的环境中进行的。经过确认测试之后的软件通常就可以交付使用了。七、测试技术:1、白盒测试技术: 白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为结构测试。白盒测试多用于单元测试阶段。逻辑覆盖是主要的白盒测试技术。白盒测试时,确定测试数据应根据程序的内部逻辑和指定的覆盖方式。采用一下几种逻辑覆盖标准:语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖 满足条件组合覆盖测

48、试用例,也一定满足判定条件覆盖。因此,条件组合覆盖是上述五种覆盖标准中最强的一种。2、黑盒测试技术: 黑盒测试时完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进行的测试,又称为功能测试。常用的黑盒测试技术包括等价类划分,边值分析、错误推测和因果图等。其中等价类划分和边界值分析法方法最常用。如果两者结合使用,更有可能发现软件中的错误。 系统测试:一般的系统测试除了确认测试外还要做如下几个方面的系统测试1) 恢复测试:通过系统的修复能力,检测重新初始化,数据恢复,重新启动,检验点设置机构是否正确,以及人工干预的平均恢复时间是否在允许范

49、围内。2) 安全测试:设计测试用例,突破软件安全保护的机构安全保密措施,检验系统是否安全保密的漏洞。3) 强度测试:性能测试:设计测试用例并记录软件运行性能,与性能要求比较,看是否达到性能要求规格。这项测试常常与强度测试项结合进行。 第八章:维护1、 软件维护的定义:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。2、软件维护分为一下几类: 1)改正性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;2)适应性维护:是为了和变化的环境适当地配置而进行的修改软件的活动,是既必要又经常的维护活动。是软件适应新的运行环境而进行

50、的工作;3)完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作; 该维护活动通常占软件维护工作的大部分;3、 4)预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。 用于维护工作的劳动可以分成生产性活动(如:分析评价,修改设计和编写程序代码)和非生产性活动(如:理解程序代码的功能,解释数据结构、接口特点和性能限度)。4、 软件维护过程本质上是修改和压缩了的软件定义和开发过程,而且事实上远在提出一项维护要求之前,与软件维护有关的工作已经开始了。5、 软件维护过程:1)维护组织;2)维护报告;3)维护的事务流(维护事务流中最后一件事件是复

51、审)。P193图8-1 ;4)保存维护记录;5)评价维护活动6、 决定软件的可维护性的因素:1)可理解性;2)可测试性;3)可修改性;4)可移植性;5)可重用性;7、 软件再工程过程:1)存库目录分析;2)文档重构;3)逆向工程;4)代码重构;5)数据重构;6)正向工程8、 为什么软件难维护?答:因为结构化维护与非结构化维护差别巨大;维护的代价高昂;维护的问题很多. 第九章 面向对象方法学引论1、为什么提出面向对象的方法:随着大型软件系统的出现,在中小型软件系统取得成功的传统的软件工程方法面临巨大的危机: 1、软件生产率无法满足市场需求 2、软件复用率不高 3、软件维护困难 4、软件往往不能真

52、正满足用户需求2、面向对象的基本概念:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体. 一、面向对象方法的出发点和基本原则:是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称问题域)与现实解法的解空间(也称求解域)在结构上尽可能一致。二、面向对象方法具有以下四点要素: 1)、认为客观世界是有各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。2)、把所有对象方法都划分成各种对象类,每个对象都定义了

53、一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中队数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。3)、按照父类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级).4)、对象彼此之间仅能通过传递信息相互联系。三、面向对象方法学的优点: 1)与人类习惯的思维方法一致2)稳定性好3)可重用性好4)交易开发大型软件产品5)可维护性好2、 由于以下因素的存在,使得用面向对象方法所开发的软件可维护性好:1)、面向对象的软件稳定性比较好2)、面向对象的软件比较容易修改3)、

54、面向对象的软件比较容易理解4)、易于测试和调试四、概念: 1)、对象:它是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务(即公有的操作)。 对象的特点:以数据为中心;对象是主动的;实现了数据封装;本质上具有并行性;模块独立性好2)类:用于表示某些对象的共同特征(属性和操作),对象是类的实例。 (类是支持继承的抽象数据类型)3)实例:就是由某个特定的类所描述的一个具体的对象。4)消息:消息传递时对象与外界相互关系的唯一途径。对象可以向其它对象发送消息以请求服务,也可以响应其他对象传来的消息,完成自身固有的某些操作,从而服务于其他

55、对象。 一个消息有3部分组成: 接收消息的对象;消息选择符(也称消息名);零个或多个变元。5)方法:方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。6)属性:属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。7)封装:封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。 对象具有封装性的条件:有一个清晰的边界;有确定的接口(即协议);受保护的内部实现。8)继承:是现实世界中遗传关系的直接模拟。可用来表示类之间的内在联系以及对属性和操作的共享。子类可以沿用父类的某些特征,同时子类也可以具有自己独立的属性和特征。9)多态性:10)重

56、载: 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字; 运算符重载是指同一个运算符可以施加不同类型的操作数上面。五、 面向对象建模:!1、 模型定义:模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。2、 对象模型(描述系统数据结构的对象模型):对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。3、 通常,使用UML提供的类图来建立对象模型。在UML中术语“类”的实际含义是,“一个类及属于该类的对象”。4、 类图的基本符号1) :定义类:UML中类的图形符号为长方

57、形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务,如图所示。2) 类名是一类对象的名字。为类命名时应该遵守以下几条准则:(1) 使用标准术语。(2) 使用具有确切含义的名词。(3) 必要时用名词短语作名字。名字应该是富于描述性的、简洁的而且无二义性的。 3)、定义属性UML描述属性的语法格式如下:可见性 属性名:类型名=初值性质串4). 定义服务服务也就是操作,UML描述操作的语法格式如下:可见性 操作名(参数表): 返回值类型性质串5、 表示关系的符号1)关联:表示两个类的对象之间存在某种语义上的联系(1) 普通关联: (2) 关联的角色

58、:在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。如: (3) 限定关联:限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。(4) 关联类:如:3) 聚集:聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。4). 泛化:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。 5) 依赖和细化(1) 依赖关系:依赖关系描述两个模型元素(类、用例等)之间的语义连接关系: 其中一个

59、模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。(2) 细化关系当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。 重点:对象模型实现 P217,要求会作图。 1、动态模型(描述系统控制结构的动态模型):它是基于事件共享而相互关联的一组状态图的集合(联系P65页,状态转换图)。 2、 功能模型(描述系统功能的功能模型):功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。通常,功能模型由一组数据流图组成。重点:功能模型实现 P225,要求会作图。例子:自动

60、取款机3、面向对象建模的三种模型之间的关系?(P228)答:在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定基。1)针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。 2)状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。3)功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。通常,复杂的处理(或用例)对应于复杂对象提供的服务,简单的处理(或用例)对应于更基本的对象提供的服务。有时一个处理(或用例)对应多个服务,也有一个服务对应多个处理(或用例)。4)数据流图中的数据存储,以及数据的源点/终点,通常

61、是对象模型中的对象。5)数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。6)用例中的行为者,可能是对象模型中的对象。7)功能模型中的处理(或用例)可能产生动态模型中的事件。8)对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。总之,功能模型指明了系统应该”做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体. 4、用例图:一幅用例图包含的模型元素有系统、行为者、用例及用例之间的关系。 1) 用例之间的关系: (1) 扩展关系向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者继承前者的一些行为,通常把后者称为扩展用例。 (2) 使用关系当一个用例使用另一个用例时,这两个用例之间就构成了使用关系。图9.18 含扩展和使用关系的用例图 第十章:面向对象分析。 一、开发软件,分析的过程都是系统需求提取的过程,它要求系统分析员通过与用户及相关领域的专家交流,充分理解用户的需求和相关领域的背景知识,最终把这种理解制作成文档资料的过程,但由于问题的复杂性,该理解过程并不能达到理想的成程度,因此需要进一步去验证说明规格文档的正确性、完整性、有效性。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!