已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程导论复习课第1章 软件工程学概述1、什么是软件危机,为什么会出现软件危机?P1-3软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断增长的已有软件。产生软件危机的原因(1) 来自软件自身的特点 P3,P1415(2) 软件开发与维护的方法不当 P34,P1724a.对软件缺乏正确的认识,认为“软件就是程序,软件开发就是编写程序并使之运行”;忽视问题定义、可行性研究和需求分析等;P20b.缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的 “技巧”,从而加剧了软件产品的个性化;c.只重视程序,而忽视软件的完整配置;d.轻视软件维护。另外,由于前面的原因导致软件维护费用急增;e.面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。2、什么是软件工程,为什么会出现软件工程,软件工程的主要目标是什么?P5软件工程的定义采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。软件工程从管理和技术两个方面研究如何开发和维护计算机软件,是计算机科学技术的一个新的研究领域。软件工程的主要目标:使软件系统向高性价比方向发展,在给定成本、进度的前提下,最终获得项目的成功。成功指的是达到以下几个主要目标:(1) 付出较低的开发成本(2) 达到要求的软件功能(3) 取得较好的软件性能(时、空效率和可靠性)(4) 开发的软件易于移植(5) 需要较低的维护费用(6) 能按时完成开发任务,及时交付使用。3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容?P9,P课件6-7通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。软件工程方法学包含3个要素:方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。4、常见软件生命周期模型有哪些(课件中的前5类)?典型的传统软件生命周期模型、典型的面向对象软件生命周期模型分别是哪个?它们的特点分别是什么?P课件13-17瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型第2章 可行性研究5、可行性研究的主要工作是什么?主要从哪3方面研究可行性?P35-36可行性研究工作是在初步的需求定义(澄清问题的定义)之后进行的,其的目的是用最小的代价在尽量短的时间内(总成本的5%10%)确定该项目是否值得去解决,是否存在可行的解决方案。以下几个方面研究其可行性:(1) 经济可行性:这个系统的经济效益能超过它的开发成本吗?估算项目的开发成本和系统投入使用后可能带来的利润,进行成本/效益分析,从经济角度判断系统开发是否“合算”。(2) 技术可行性:使用现有的技术能实现这个系统吗?根据客户提出的系统功能、性能要求,从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用及其他各项约束条件限制下成功的可能性。(3) 运行、操作可行性:系统的操作方式在这个用户组织内行得通吗?主要研究系统的运行方式在用户单位是否可以被有效地实施,是否与原有其他系统相矛盾;系统的操作规程在用户单位内是否可行,它包括人事、科技政策、管理方法等等。(4) 法律可行性:系统的开发使用,在当国当地当时合法吗?研究系统的开发和使用是否会侵犯他人的权益,是否触犯了国家和地方的法律法规。6、主要描述工具的概念和使用:系统流程图:什么是,成份和基本符号,描述什么模型,画法;系统流程图是概括地描述物理系统的传统工具数据流图:什么是,成份和基本符号,描述什么模型,系统级和功能级、简单细化数据流图的特点,画法;数据流图数据流图有4种成分:源点和终点,处理,数据存储,数据流。数据字典:什么是,哪些内容需要在数据字典中被定义,用到的符号,定义的方法。P47数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。l 数据定义使用到的符号及意义:由数据元素组成数据的方式:(1) 顺序 即以确定次序连接两个或多个分量;(2) 选择 即从两个或多个可能的元素中选取一个;(3) 重复 即把指定的分量重复零次或多次。(4) 可选 即一个分量是可有可无的(重复零次或一次)。可采用下列符号:= 意思是定义为 (或等价于);(1) + 意思是和(即,连接两个分量);(2) 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;(3) 意思是重复(即,重复花括弧内的分量);(4) ( )意思是可选(即,圆括弧里的分量可有可无)。数据字典中定义数据的方法就是对数据自顶向下逐步分解,当分解到不需要进一步定义、每个和工程有关的人也都清楚数据元素的含义时,这种分解过程就完成了。然后再用自然语言或符号语言描述数据元素组成数据的方式。第3章 需求分析7、需求分析得到的成果(文档)是什么?其中包含哪些内容?P62用自然语言 + 模型,完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。 P40软件需求规格说明书,是需求分析阶段得出的最主要的文档。8、软件需求通常包括哪些方面?如何获取用户需求?P课件1-8(1) 功能需求;(2) 性能需求;(3) 可靠性和可用性需求;(4) 出错处理需求;(5) 接口需求;(6) 约束;(7) 逆向需求;(8) 将来可能提出的要求(1) 访谈与会议-分析人员采用个别访谈或小组会议的形式与用户进行初步交流。在访谈和会议之前,分析人员根据对问题的初步描述精心准备一系列问题,通过用户对问题的回答或互相商讨来逐步理解用户的需求。(2) 问卷调查-当需要调查大量人员的意见时,向被调查人分发调查表是一个十分有效的做法。经过仔细考虑写出的书面回答可能比被访者对问题的口头回答更准确。(3) 观察用户工作流程-提取系统的初步用户需求,分析用户提出的需求的合理性,补充用户没有意识到的需求,并能够从软件的角度改进操作流程和操作规范,从而可获得用户满意的结果。(4) 用户和开发人员共同组成联合小组(5) 情景分析技术 P5859,P1718在这里,通常用户扮演未来的用户,分析人员扮演软件系统。9、增加的主要描述工具的概念和使用:E-R图:什么是,成份和基本符号,描述什么模型;ER图,即实体-联系图,是表示数据对象及其之间关系的图形语言机制,是建立数据模型的图形工具。l ER图的基本成份和使用的符号实体(即数据对象)-矩形框关系-菱形框属性-椭圆形或圆角矩形状态转换图:什么是,包含的成份,描述什么模型。状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,利用状态转换图可以建立系统的行为模型。l 状态转换图中的成份(1) 状态 P5657(2) 事件 事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象,也就是引起系统做动作或(和)转换状态的控制信息。(3) 状态转换 从一个状态到另一个状态,变迁的方向。10、在结构化分析中,3种模型分别是什么,分别用什么工具来描述? 建模的核心是什么? P62数据模型(E-R图)、功能模型(数据流图)、行为模型(状态转换图)模型的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:实体-关系图(ERD)描述数据对象及数据对象之间的关系-数据模型;数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何实现对数据流进行变换的功能(或子功能)-功能模型;状态-迁移图(STD)描述系统对外部事件如何响应,如何动作-行为模型。因此,ERD用于数据建模,DFD用于功能建模,STD用于行为建模。11、什么是数据规范化?如何进行? P64为-减少数据冗余,确保数据一致性;避免出现插入或删除异常,简化数据的修改过程-而进行的数据结构规范化。l 进行数据规范化(1) 将数据的逻辑结构归结为满足一定条件的二维表(关系)。即:a. 表格中每个信息项必须是一个不可分割的数据项,不可以是组项;b. 表格中每一列(表示属性)中所有信息项必须是同一类型,各列的名字(属性名)互异,列的次序任意;c. 表格中各行(表示一个元组)互不相同,行的次序任意。(2) 通常用“范式(normal forms)”定义消除数据冗余的程度。a. 第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。例如:表1、表2、表3;b. 第二范式:满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。例如:表4、表5;(表1、2、3是吗?)c. 第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。第5章 总体设计12、总体设计阶段的主要任务(主要工作)是什么?总体设计说明书中包含哪些内容? P92-93l 系统设计阶段,确定系统的物理实现方案(1) 设想供选择的方案在设想供选择方案时,以需求分析得到的数据流图为出发点,画出自动化边界,形成不同的实现的物理方案。P6-8(2) 选取合理的方案 P9(3) 推荐最佳方案 P10l 结构设计阶段,确定软件的结构(4) 功能分解,从实现的角度细化逻辑模型 P12(5) 设计软件结构 P13(6) 设计数据库 P14(7) 制定测试计划 P14(8) 书写文档 P1516(9) 审查和复审 P16包含内容:(1) 系统说明:主要内容包括用系统流程图描绘的系统构成方案,组成系统的物理元素清单,成本/效益分析;对最佳方案的概括描述,精华的数据流图,用层次图或结构图描绘的软件结构,用IPO图或其他工具(例如PDL语言)简要描述的各个模块的算法,模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系等。(2) 用户手册:更具总体设计阶段的结果,修改更正在需求分析阶段产生的初步用户手册。(3) 测试计划:包括测试策略,测试方案,预期的测试结果,测试进度计划等。(4) 详细的实现计划(5) 数据库设计结果13、什么是模块独立性,度量(描述)它的两个指标:内聚、耦合,含义分别是什么?在面向数据流的方法中,内聚、耦合各分为哪几级,每级的具体含义分别是什么?强度从弱到强如何排列? P97-99模块的独立性是指软件系统中每个模块完成一个相对独立的子功能,并且与其他模块之间关系很简单。独立的模块(1)比较容易开发,(2)比较容易维护。因此在设计软件结构时,应充分考虑模块的独立性。l 耦合(Coupling):是对软件结构内不同模块之间相互关联程度的强弱的度量。它取决于各个模块之间接口的复杂程度、进入或访问一个模块的点以及哪些信息通过接口传递。模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。在设计软件时应追求尽可能松散耦合的系统。如果模块间联系较少,错误在模块间传播的可能性也随之变小。l 耦合度可以分为若干级别:(1) 非直接耦合-两个模块没有直接关系(如模块1和模块2),每一个都能独立地工作而不需要另一个模块的存在。非直接耦合两个模块间的独立性最强。非直接耦合(2) 数据耦合-两个模块彼此间通过参数交换信息,而且交换的信息仅仅是简单的数据信息。这属于松散耦合。(3) 标记耦合-两个模块通过传递数据结构参数加以联系(不是简单数据,而是记录、数组等),则称这两个模块间存在标记偶合。 数据耦合 标记耦合(4) 特征耦合-属于标记耦合,把整个数据结构作为参数传递,而被调用的模块只需要使用其中一部分数据元素。P39控制耦合 公共环境耦合(5) 控制耦合-一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的某部分功能。控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。去除模块间控制耦合的方法:a.将被调用模块内的判定上移到调用模块中进行b.被调用模块分解成若干单一功能模块(6) 外部耦合-一组模块都访问同一全局简单变量,而且不是通过参数传递该全局变量的信息。(7) 公共环境耦合-两个或多个模块通过一个公共数据环境相互作用。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。P39-40公共环境偶合必不可少,但耦合模块的数目应尽量少。(8) 内容耦合P41内容耦合l 内聚(Cohesion):标志同一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。高内聚:模块内部完成单一的处理;低内聚:模块内部各部分关联不紧密,完成分散的多个处理任务;设计时应该力争做到高内聚。l 内聚度也可以分为若干级别:(1) 偶然内聚-当模块内各部分之间没有联系,或者即使有联系,这种联也很松散,则称这种模块为偶然内聚模块,它的内聚程度最低。12(2) 逻辑内聚-把几种相关功能或逻辑上相似的功能组合在一个模块内,每次调用由传给模块的参数确定执行哪种功能。SXYZWABCD(3) 时间内聚-一个模块包含若干必须在同一段时间内执行的任务。例如系统初始化模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。(4) 过程内聚-一个模块内的处理元素是相关的且仅有控制联系,各处理元素必须以特定次序执行。ClearbufferInput FileReset signalCountCalculateClose File(5) 通信内聚-模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据。(6) 顺序内聚-一个模块内的处理元素既包含数据联系也包含控制联系,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)。(7) 功能内聚-一个模块中各个部分都是完成某单一功能必不可少的组成部分,或者说该模块中所有部分都是为了完成同一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为功能内聚模块。功能内聚是最高程度的内聚。信息内聚-这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构,因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。功能内聚 信息内聚14、保证模块独立性的设计原则是什么?P98,99耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少量使用控制耦合和特征耦合,限制公共环境耦合的范围,完全不允许内容耦合,最终降低模块间接口的复杂性。设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。15、结构化设计(SD)方法(面向数据流的设计方法)中,数据流划分成哪两类?如何将分析的结果(数据流图)逐层分解、转换成设计的初步结果(层次图/结构图)-事务分析和变换分析的方法? 课件DFD中的数据流可分为两类:变换型数据流、事务型数据流;5、变换分析-从变换流到变换型结构的映射过程(1)(3) P7879(4) 确定输入流和输出流的边界,从而孤立出变换中心;(5) 完成第一级分解,输入流映射成输入模块,变换部分映射成变换(处理)模块,输出流映射成输出模块;顶层增加主控协调模块;(6) 完成第二级分解,从变换中心的边界开始,沿输入流外推,先遇到的为上级模块;沿输出流外推,先遇到的为上级模块;变换部分变为水平模块;第二级分解后的SC图(7) 得到完整的SC图和对应的层次图,变换完成后,对每个模块进行简要的说明。数据流图对应的层次图稍复杂一点的映射例子:P108-110模块的说明:P87-88(8) 根据模块独立性原则和启发式规则,对得到的软件结构进一步优化。对以上得到的软件结构进行模块分解或组合,让模块尽可能高的内聚、尽可能松散的耦合,最重要的是,要得到一个易于实现、易于测试和易于维护的软件结构。P110111图5.165.196、事物分析-从事物流到事物型结构的映射过程基本步骤与变换分析相同(前三步相同),只是由数据流图到软件结构的变换方法不同:第一级分解,输入通路映射为接收模块、事务中心直接变换为调度模块、每个输出通路映射成一个动作模块,另加一个主控模块;输入分支的第二级分解与变换流的方法类似;对输出分支进行第二级分解(每个分支进行下一级的变换分析或事物分析);第一级分解第二级分解书上的例子:P97注意:P98模块说明:为每一个模块写一份处理说明(IPO图)、为每一个模块提供一份接口说明、确定全局数据结构和局部数据结构、指出所有的设计约束和限制。关于分层数据流图转换为软件结构图的方法第6章 详细设计16、详细设计的任务(主要工作)有哪些?结束后得到哪些成果(文档的内容)? P课件1用一定的工具精确描述目标系统,从而方便在编码阶段可以把这种描述直接翻译成用某种程序设计语言书写的程序。(1) 确定每一模块的算法(处理流程)(2) 确定每一模块使用的数据结构(3) 确定本模块的外部接口和用户界面(4) 为每一模块设计一组测试用例(单元测试计划)详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计的结果基本上决定了最终的程序代码的质量。考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。详细设计不仅要逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程容易阅读和理解。17、详细设计的描述工具的概念和使用:程序流程图、盒图、PAD图、判定表等;什么是,基本符号和表示的意义如何? P124-128程序流程图l 基本符号(较完整的符号集合P125图6.3)可表示的控制结构见前图(结构化程序设计中基本的控制流程)。盒图(N-S图)l 基本符号和表示的结构3、PAD图l 基本符号和表示的结构 P444、判定表和判定树l 判定表的组成: P4818、计算程序模块环形复杂度的方法怎样?模块的环形复杂度所表示的意义是什么? P137-138(1) 流图中的区域数等于环形复杂度区域:由边和结点围成的面积称为区域。当计算区域数时应该包括图外部未被围起来的那个区域。即流图的封闭区域数加1。(2) 流图的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3) 流图的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。第7章 实现(编码和测试)19、在结构化程序设计中,“好代码”的主要标准是什么?程序的效率从哪几方面体现?P147-149源程序实际上也是一种供人阅读的文档,有一个文档的风格问题。应该使程序具有良好的风格。源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。1、源程序文档化源程序文档化包括恰当的标识符、适当的注解和程序的视觉组织等等。l 正确、适当的程序注释夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段,注释决不是可有可无的;一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。l 视觉组织-空格、空行和移行l 2、数据说明l 在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点:变量命名时采用一定的规范, 数据说明的次序标准化;数据类型在说明中的次序:当多个变量名在同一条语句中被说明时,应该按字母顺序排列这些变量;如果设计时使用了一个复杂的数据结构,则应该用注释说明用程序设计语言实现这个数据结构的方法和特点。3、语句构造l 不要为了节省空间把多个语句写在一行;l 避免过深的循环嵌套或条件嵌套;l 尽量避免复杂的条件测试(判断),减少对“非”条件的测试(判断);l 采用缩进风格,使程序呈现出阶梯形式的清晰明显的层次结构;l 利用括号使逻辑表达式或算术表达式的运算次序清晰直观;ll 统一程序书写风格。4、输入输出设计在设计和编写程序时应该考虑下述有关输入输出风格的规则:l 对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;l 检查输入项的各种重要组合的合法性,必要时报告输入状态信息;l 使得输入的步骤和操作尽可能简单,并保持简单的输入格式;l 输入数据时,应允许使用自由格式输入;l 应允许缺省值;l 输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;l 在交互式输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息;l 当程序设计语言对输入输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性;l 给所有的输出加注解,并设计输出报表格式。5、程序的效率l 概述:程序的效率是指程序的执行速度及程序所需占用的内存空间。程序编码是最后提高运行速度和节省存储的机会,因此在此阶段不能不考虑程序的效率。l 运行时间效率 P2324l 存储效率在大中型计算机系统中,存储限制不再是主要问题。在这种环境下,对内存采取基于操作系统的请求分页式的虚拟存储管理。存储效率与操作系统的分页功能直接有关。l I/O效率(1) 输入输出可分为两种类型:a. 面向人(操作员)的输入输出b. 面向设备的输入输出(2) 如果操作员能够十分方便、简单地录入输入数据,或者能够十分直观、一目了然地了解输出信息,则可以说面向人的输入输出是高效的。(3) 关于提高设备输入/输出效率的指导原则:a. 输入/输出的请求应当最小化;b. 对于所有的输入/输出操作,安排适当的缓冲区,以减少频繁的信息交换。c. 对辅助存储(例如磁盘),选择尽可能简单的,可接受的存取方法;d. 对辅助存储的输入/输出,应当成块传送;e. 对终端或打印机的输入/输出,应考虑设备特性,尽可能改善输入/输出的质量和速度;f. 任何不易理解的、对改善输入/输出效果关系不大的措施都是不可取的;任何不易理解的所谓“超高效”的输入/输出是毫无价值的。20、软件测试的目标是什么? P150(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案(3)成功的测试是发现了至今为止尚未发现的错误的测试。21、软件测试的三大阶段:单元测试、集成测试(组装测试)、确认测试(验收测试)的主要工作(目的)是什么?测试计划分别在什么时候做? P151-152l 模块测试-单元在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他模块的功能之间没有相互依赖关系。因此,有可能把每个模块作为一个单独的实体来测试,而且通常比较容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。在这个测试步骤中所发现的往往是详细设计和编码的错误。l 子系统测试-局部子系统测试是把经过单元测试的若干模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此,这个步骤着重测试模块的接口。l 系统测试-全局系统测试是把经过测试的若干子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常合称为集成测试。l 验收测试-用户参与验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试。验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。验收测试也称为确认测试。分别是详细设计之后,总体设计之后,需求分析之后22、什么是黑盒测试?什么是白盒测试? P课件12-14黑盒测试-已经知道了产品应该具有的功能,可以针对产品的每个(或主要)功能设计一组用例(包括输入数据和预期的输出数据),通过测试来检验是否每个功能都能正常使用白盒测试-知道产品的内部工作流程,可以对每一条主要执行通道设计一组用例,通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。23、典型的白/黑盒测试技术有哪几个,含义如何? P课件29-46典型的白合测试技术有:逻辑覆盖测试-就是基于逻辑覆盖的方法设计测试用例,是以程序内部的逻辑结构为基础的设计测试用例的技术,包括:(1)语句覆盖 (2)判定覆盖(3)条件覆盖 (4)判定/条件覆盖(5)条件组合覆盖(6)点覆盖 (7)边覆盖 (8)路径覆盖典型的黑盒测试技术有:2、等价类划分l 方法概述:将所有输入数据(也称软件的输入域)按有效的(合理的)和无效的(不合理的)划分成若干个子集合(也称为若干个等价类);合理假设每个等价类中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同;这样,测试每个等价类中的一个代表值的结果就等价于对该类其他所有值的测试。24、逻辑覆盖测试中,各类测试发现错误的能力强弱如何?简单的逻辑覆盖测试用例如何设计。P162-165语句覆盖 = 点覆盖 判定覆盖 = 边覆盖 条件覆盖 = 判定/条件覆盖 条件组合覆盖 路径覆盖第8章 维护25、什么是软件维护、软件维护的特点? P课件1-4所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。改正性维护(Corrective Maintenance)-诊断和改正错误的过程适应性维护(Adaptive Maintenance )-为适应变化了的环境而进行的软件修改活动扩充与完善性维护(Perfective Maintenance)预防性维护(Preventive Maintenance)软件维护的特点1、结构化维护与非结构化维护差别巨大l 非结构化维护-软件配置的惟一成份是程序代码,维护活动从艰苦地评价程序代码开始。 P8l 结构化维护-有一套完整的软件配置存在,维护工作从评价设计文档开始。 P92、影响软件维护的因素诸多系统大小、程序设计语言、系统年龄、是否应用数据库技术、是否采用较先进的软件开发技术、开发时是否考虑将来的修改、其他因素(应用的类型、数学模型、任务的难度、开关与标记、IF嵌套深度、索引或下标数等)3、软件维护的代价高昂l 首先,软件维护需要的工作量很大,平均说来,大型软件的维护成本高达开发成本的4倍左右。目前国外许多软件开发组织把60%以上的人力用于维护已有的软件,而且随着软件数量增多和使用寿命延长,这个百分比还在持续上升。l 有形的软件维护成本是花费了多少钱,而无形的维护成本有更大的负面影响。(1) 一些合理的修复或修改请求不能及时安排,使得客户不满意;(2) 变更的结果引入新的故障,使得软件整体质量下降;(3) 把软件人员抽调到维护工作中,干扰了软件开发工作。l 维护工作量的计算模型:其中:M 是维护中消耗的总工作量P 是生产性工作量K 是一个经验常数c 是因缺乏好的设计和文档而导致复杂性的度量d 是维护人员对软件熟悉程度的度量模型表明,如果使用了不好的软件开发方法(未按软件工程要求做),原来参加开发的人员或小组不能参加维护,则工作量(及成本)将按指数级增加。4、影响软件维护的(维护软件时将面对的)典型问题 P1416l 难以读懂他人的程序l 无文档或不全l 软件人员流动性大l 设计时未考虑修改需要,修改困难l 维护工作无吸引力,缺乏成就感l 难以跟踪软件的创建过程、软件版本的进化过程,软件的变化未在文档中反映出来26、决定软件可维护性的因素有哪些?P194-195l 可理解性 P33l 可测试性 P34l 可修改性 P35l 可移植性 P35l 可重用性 P363727、什么是软件再工程,它由哪些部分组成?P课件9软件再工程,也叫做修理或再生,是一类软件工程活动。它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。它从已存在的程序中重新获得设计信息,而且使用这些信息来改建或重构现有的系统,同时加进新的功能或改善它的性能,以提升它的综合质量。第9章、面向对象方法学28、典型的面向对象软件工程生命周期模型是什么?喷泉模型是近几年提出来的软件生命周期模型。它是以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。“喷泉”一词本身体现了逐步求精(迭代)和无间隙特性。29、面向对象方法的主要特征是什么?P课件7-10l 封装性封装是一种信息隐蔽技术,它体现在类的说明中,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。P61封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。l 继承性继承性是子类自动共享父类的数据和方法的机制。它由类的派生功能体现。一个类直接继承其父类的全部描述,同时允许修改和扩充。P64 继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。P65继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用。在程序执行期间,对对象某一性质的查找是从该对象类在类等级中所在的层次开始,沿类等级逐层向上进行的,并把第一个被找到的对该性质的定义作为所要的性质。因此,低层的性质会屏蔽高层的同名性质。例如:建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。增加一个新类拖拉机。它的底盘、发动机等与汽车不同,但驱动装置、轮胎等与汽车相同。关系如下左图所示。调整继承结构,建立一个新的一般的车辆类,把拖拉机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。车辆是抽象类,相关操作到子类汽车找。l 多态性对象根据所接收的消息而做出动作。同一消息被不同的对象接受时可产生完全不同的行动;当对象处于不同状态时,做同一个操作所得到的效果也是不同的,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,即对同一消息即可调用不同的方法。例如:想要在屏幕上画一系列多边形,多态性允许发送消息draw,根据消息接收对象的类型不同,画出不同的多边形。draw针对的是一系列的类型(类族)而不仅仅是一个类型。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。l 重载: P7130、面向对象的分析设计中,建立的软件的3种模型分别是什么?使用UML工具时分别用什么图形来描述这3种模型?l 对象模型-描述系统的数据结构,是最核心的、最基本的模型l 动态模型-描述系统的控制结构,即在什么条件下执行哪些操作l 功能模型-描述系统的功能,完成数据值的变化通常,使用UML的类图来建立对象模型,使用UML的状态图来建立动态模型,使用数据流图和UML的用例图来建立功能模型第13章 软件项目管理31、软件规模估算的两种典型方法是什么?含义分别是什么? P305-3071、代码行技术-是以整个软件的代码行数作为软件规模的估算值l 估算方法(1) 了解软件细节(软件的功能、性能、限制、接口和可靠性等),将其细化分解成较详细的任务单元;(2) 由多名有经验的软件工程师,每人分别对各单元的代码行数做出估计(参照类似软件的相近功能模块),估计该程序模块的最小规模(设为a)、最大规模(设为b)和最可能的规模(设为m);(3) 求出a、b、m的平均值,再用下式计算单元规模的估计值:(4) 把软件的每个功能模块的规模估计值累加,就是整个软件的规模估计值;(5) 当程序规模较小时常用的单位是代码行数(LOC),当程序规模较大时常用的单位是千行代码数(KLOC)。l 优、缺点(1) 简单、比较准确、客观(在有以往类似成果经验值的基础上);(2) 不太合理、不能适用于非过程语言,用不同语言完成同一项目估算值将不一样。2、功能点技术-依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)为单位度量软件规模l 信息域特性: P810l 估算方法:(1) 根据产品的每个信息域特性值(即Inp、Out、Inq、Maf和Inf)和软件产品所在的领域(软件类型),将产品的每个信息域特性进行分级,分为简单级、平均级或复杂级,并根据等级为每个特性分配一个功能点数。点数的值没有硬性规定,例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年清洁能源汽车产业链项目可行性研究报告及总结分析
- 2025年监理工程师之交通工程监理案例分析模拟题库及答案下载
- 2025年企业ESG绩效评估协议
- 在建工程抵押房意向合同(3篇)
- 2023年全国安全生产月《安全知识》答题活动模拟试题及答案
- 招聘专业技术人员30人考前自测高频考点模拟试题及参考答案详解
- 2025年青少年心理健康中心可行性研究报告及总结分析
- 2025年社交网络行业社交网络与社交媒体研究报告及未来发展趋势
- 技能鉴定考评员技能鉴定考评员服务考核试卷及答案
- 国企专业笔试题及答案
- 2024南京交通职业技术学院辅导员招聘笔试真题
- 衢州市国企招聘考试基础题库
- 2025年武汉市蔡甸区总工会公开招聘工会协理员4人考试笔试模拟试题及答案解析
- 人民武装部办公室人员培训计划
- 电路测试服务合同范本
- 2025年新疆高职单招中职类文化课统一考试(语文)
- 2025年深圳辅警招聘考试真题及答案详解(历年真题)
- 辽宁省名校联盟2025-2026学年高三上学期11月期中联合考试语文含答案
- 工厂成本管理与控制方案
- 2025八年级英语上册期末真题卷
- 2025年疾控检验试题及答案
评论
0/150
提交评论