第一篇:软件工程复习材料
1.软件的概念
一般可以将软件划分为系统软件、应用软件和介于这两者之间的中间件。计算机软件的传统定义为:软件是计算机系统中与硬件相依存的另一部分,软件包括程序、数据及其相关文档的完整集合。
程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
2.软件的特性
1)形态特性。软件是无形的、不可见的逻辑实体。2)智能特性。3)开发特性。4)质量特性。5)生产特性。6)管理特性。7)环境特性。8)维护特性。9)废弃特性。10)应用特性。
软件危机:软件开发周期长、成本高、质量差、维护困难 原因
1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制订;
2)软件人员与用户的交流存在障碍;
3)软件开发过程不规范,缺少方法论和规范的指导;
4)随着软件规模的增大,其复杂性往往会呈指数型增长; 5)缺少有效的软件评测手段,提交用户的质量差。
1.1.1 软件工程的概念
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
1.1.2 软件工程的目标
软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。
衡量软件质量的6个特性:功能性、可靠性、可使用性、效率、可维护性和可移植性。1.1.3 软件工程的基本原理 按软件生存周期分阶段制订计划并认真实施; 3 坚持进行阶段评审; 4 坚持严格的产品控制; 5 使用现代程序设计技术; 6 明确责任; 7 用人少而精; 不断改进开发过程
软件生存期: 软件定义:问题定义、可行性研究和需求分析
软件开发:概要设计、详细设计、编码和测试
运行维护:改正性维护、适应性维护、完善性维护和预防性维护
软件工程方法学包含3个要素:方法、工具和过程。
3.1 软件需求分析阶段的任务:获取需求、分析需求、定义需求和验证需求
3.4 数据建模三要素:数据对象,属性,关系 3.5 行为建模三要素:状态,状态转换,事件
1.1.1 软件设计的阶段与任务:两个阶段:概要设计阶段和详细设计阶段
1.1.2 模块独立性
1)松散耦合:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合。
高度内聚:巧合内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚
1.1.3 设计过程
(1)复查并精化数据流图;
(2)确定数据流图中数据流的类型,典型的数据流类型有变换型数据流和事务型数据流;
(3)导出初始的软件结构图;(4)逐级分解;
(5)精化软件结构;
(6)导出接口描述和全局数据结构
1.1.4 软件模块结构的改进方法 1)模块功能的完善化;
2)消除重复功能,改善软件结构;
3)模块的作用范围应在控制范围之内;
4)尽可能减少高扇出结构,随着深度增大扇入; 5)避免或减少使用病态连接; 6)模块的大小要适中
5.1.2 自顶向下、逐步细化的设计过程
一是将复杂问题的解法分解和细化成由若干个模块组成的层次结构; 二是将每个模块的功能逐步分解细化为一系列的处理。
7.1面向对象的主要概念(1)对象(2)类(3)继承
(4)消息:把向对象发出的操作请求称为消息;(5)关联:是两个或多个类之间的一个静态关系;
(6)聚合:一个对象由其它若干个对象作为其构成部分。
7.2基本原则主要有:抽象、分类、封装、消息通信、多态性、复杂性控制
8.1面向对象分析(OOA)是软件生命周期的一个阶段,具有一般分析方法所共有的内容、目标及策略。
(1)OOA模型分为3个层次:对象层、特征层和关系层。
12.1.1 软件维护的定义
称在软件运行/维护阶段对软件产品所进行的修改就是所谓的维护。1.改正性维护:诊断和改正错误的过程;
2.适应性维护:为了使软件适应外部环境或数据环境可能发生的变化,而修改软件的过程称为适应性维护; 3.完善性维护:
修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性,这种情况下进行的维护活动称为完善性维护。4..预防性维护
12.2 软件维护活动 1 软件维护申请报告 2 软件维护工作流程 3 维护档案记录 4 维护评价
12.3.3 修改程序的副作用以及其控制
所谓副作用是指因修改软件而造成的错误及其它不希望发生的情况 1.修改代码的副作用 2.修改数据的副作用 3.修改文档的副作用
12.4.1软件可维护性的定义
所谓软件可维护性,是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。
12.4.2 可维护性的度量 1.可理解性 2.可靠性 3.可测试性 4.可修改性 5.可移植性 6.效率
7.可使用性
10.2 传统软件过程模型 10.2.1 瀑布模型: 优点:(1)可强迫开发人员采用规范化的方法
(2)严格的规定了每个阶段必须提交的文档
(3)要求每个阶段交出的所有产品必须是经过验证的 缺点:(1)几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需求
(2)瀑布模型只适用于项目开始时需求已确定的情况
10.2.2 快速原型模型
优点:(1)有助于满足用户的真实需求。
(2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。
(3)软件产品的开发基本上是按线性顺序进行。
(4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工。
(5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。(6)快速原型的突出特点是“快速”。10.2.3 增量模型
优点;(1)能在较短时间内向用户提交可完成一些有用的工作产品
(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。(3)项目失败的风险较低
(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。10.2.4 螺旋模型 • 优点
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
减少了过多测试或测试不足所带来的风险。
在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别。• 缺点
螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。
10.2.5 喷泉模型
第二篇:软件工程复习要点
软件工程复习要点
适应班级:08计本网络,信息安全,软件工程
第一章:各类软件过程模型
敏捷过程,XP过程
第二章:可行性研究的任务
数据流图的分析和设计
数据字典
第三章:用例文档书写
需求分析的任务
如何识别执行者,如何识别用例
第五章:模块独立
启发规则
软件结构图设计
第六章:盒图
PAD图
判定表
判定树
流图
第七章:软件测试基础
白盒测试技术,控制结构测试,条件测试黑盒测试技术,等价类划分
测试步骤
莫智懿 2011-7-2
第三篇:软件工程导论复习整理(最新)
第一章
1..软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.软件与硬件的区别:软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
3.软件:程序、数据及相关文档的完整集合。
4.软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,以经济地开发出高质量的软件并有校地维护它。
5.软件工程方法学三要素:方法、工具和过程。
6.传统方法学也称为生命周期方法学或结构化范型。它采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
7.面向对象方法学把数据和行为看成同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
8.软件生命周期划分为三个时期:1软件定义(问题定义、可行性研究、需求分析),2软件开发(总体设计、详细设计、编码和单元测试、综合测试),3运行维护(软件维护)。
9.4类软件维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件,为将来的维护活动预先做准备。
10.“瀑布模型”的缺点:它是由文档驱动的,仅仅通过写在纸上的静态的规格说明,很难全面正确地认识动态的软件产品;瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的产品不能真正的满足用户的需要。
11.快速原型模型的优点:原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求;开发人员通过建立原型系统已经学到了很多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。
第二章 1.可行性研究的三个方面:技术可行性:使用现有的技术能实现这个系统经济可行性:这个系统的经济效益能超过它的开发成本操作可行性:系统的操作方式在这个用户组织内行得通
2.数据流图的4个基本符号及画法P41
3.数据字典:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
4.符号含义:=表示“等价于”或“定义为”;+表示连接;[ ]表示“或”,用“|”分隔;{ }表示“重复”,()表示“可选”用“,”号隔开;1{A}5 表示上限和下限。
5.高校电话号码数据的定义P54
第三章
1.需求分析3种模型:数据模型:实体-联系图,描绘数据对象及数据对象之间的关系;功能模型:数据流图,描绘当数据在软件系统中移动时被变换的逻辑过程;行为模型:状态转换图,指明了作为外部事件结果的系统行为,描绘了系统的各种行为模式。
2.ER图3种基本成分:实体(数据对象),关系,属性。P64
3.软件需求验证的四个方面:一致性,完整性,现实性,有效性。
第四章
1.总体设计2个主要阶段:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
2.信息隐藏:设计和确定模块,使得一个模块内包含的特定信息,对于不需要这些信息的模块来说,是不能访问的。
3.模块独立2个度量标准:内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。4.耦合与内聚判定P98-99
5.深度:表示软件结构中控制的层数,它往往粗略的标志一个系统的大小和复杂程度,深度和程序长度之间应该有粗略的对应关系;宽度:是软件结构内同一层次上的模块总数的最大值;扇出:是一个模块直接控制(调用)的模块数目;扇入:表明一个模块有多少上级模块直接调用它
6.P100 模块的作用域和模块的控制域之间的关系:模块的作用域定义为受该模块内一个判定影响的所有模块的集合;模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合;模块的作用域应该在控制域之内(在设计的很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身以及它的直属下级模块)。
6.层次图,结构图P10
2第六章
1.结构程序设计定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每一个代码块只有一个入口和一个出口,则称这个程序是结构化的。
2.P124 过程设计的工具:程序流程图、盒图、PAD图、判定表、判定树、过程设计语言。
3.画出伪码程序的程序流程图和盒图 P1
41第七章
1.软件测试在软件生命周期中横跨两个阶段:单元测试:模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段;综合测试:由专门的测试人员承担这项工作。
2.为什么软件测试不能由程序的编写人员来做?
(1)测试是为了发现程序中的错误而执行程序的过程。
(2)正确认识测试的目标是十分重要的,测试目标决定了测试力案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。
(3)由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。
3.测试方法:(1)黑盒测试 :把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程 ;对程序接口进行测试,检查程序功能是否能按规格说明书的规定正常使用; 程序是否能适当地接受输入数据并产生正确的输出信息; 程序运行过程中能否保持外部信息的完整性
(2)白盒测试 :把程序堪称装在一个透明的白盒子里,测试者完全知道程序的结构处理算法 ;按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按 预定要求正确工作。
4.测试步骤:模块测试,子系统测试,系统测试,验收测试,平行运行。P151
5.集成测试是测试和组装软件的系统化技术,即是在把模块按照设计要求组装起来的同时进行测试,由模块组装成程序时两种方法:非渐增式测试方法和渐增式测试方法。
6.P162 逻辑覆盖标准:语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,(还有点覆盖,边覆盖,路径覆盖)。
7.设计测试用例:P16
2第八章
1.软件维护:在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。
2.维护工作量的一个模型: M = P + K × exp(c-d)其中: M是维护用的总工作量,P是生产性工作量,K是经验常数,c是复杂程度d是维护人员对软件的熟悉程度。exp,以自然对数e为底指数函数,Exponential(指数曲线)。
3.软件可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品可维护性?
答:软件的可理解性、可测试性、可修改性、可移植性 和可重用性是决定软件可维护下的基本因素。
软件生命周期每个阶段的工作都和软件可维护性有密切关系。良好的设计,完整准确易读易理解的文档资料,以及一系列严格的复审和测试,使得一旦发现错误时比较容易诊断和纠正,当用户有新要求或外部环境变化时软件能较容易地适应,并且能够减少维护引入的错误。因此,在软件生命周期的每个阶段都必须充分考虑维护问题,并且为软件维护预做准备。
第九章
1.面向对象的概念:对象,类,实例,消息,方法,属性,封装,继承,多态性P209-215 对象:是封装了数据结构及可以施加在这些数据结构上的操作的封装体(类的实例)类:是对具有相同属性和行为的一个或多个对象的描述(支持继承的抽象数据类型)实例:是由某个特定的类所描述的一个具体的对象
消息:就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。由3部分组成:接收消息的对象,消息选择符,零个或多个变元
方法:是对象所能执行的操作,描述了对象执行操作的算法,响应消息的方法
属性:类中所定义的数据,对客观世界实体所具有的性质的抽象
封住:就是信息隐藏,通过封装对外界隐藏了对象的实现细节
继承:子类自动地共享基类中定义的数据和方法的机制
多态性:指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象
2.面向对象建模:描述系统数据结构的对象模型,描述系统控制结构的动态模型,描述系统功能的功能模型。类名
3.对象模型:P217 属性类图符号:服务
4.表示关系的符号:类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系关联:表示俩个类的对象之间存在某种语义上的联系
泛化:是通用元素和具体元素之间的一种分类关系
依赖:描述俩个模型元素(类,用例等)之间的语义连接关系
细化:用来协调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次的模型之间的相关性,常常用于跟踪模型的演变。
5.功能模型:用例图包含的模型元素有系统、行为者、用例及用例之间的关系P224
第十章
1.面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程
2.建立对象模型、动态模型、功能模型的基本方法P235-255
第四篇:软件工程复习总结
第1章
1什么是软件危机,产生软件危机的原因,消除软件危机的途径。
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件维护费用的急剧上升,直接威胁计算机应用的扩大;软件生产技术进步缓慢,是加剧软件危机的重要原因。
既要有技术措施,又要有必要的组织管理措施。2什么是软件,软件的精确定义。
软件是程序以及开发、使用和维护程序所需的所有文档.。3软件工程的精确定义,软件工程的7个特征,7基本原理。
软件工程是指导计算机软件开发和维护的一门工程学科。1,软件工程关注于大型程序的构造; 2,软件工程的中心课题是控制复杂性; 3,软件经常化;
4,开发软件的效率非常重要; 5,和谐地合作是开发软件的关键; 6,软件必须有效地支持它的用户;
7,在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品。基本原理:
1,用分阶段的生命周期计划严格管理; 2,坚持进行阶段评审; 3,实行严格的产品控制; 4,采用现代程序设计的技术; 5,结果应能清楚地审查;
6,开发小组的人员应该少而精;
7,承认不断改进软件工程实践的必要性。
4软件工程方法学的精确定义,它的三要素。二种方法学,面向结构,面向对象
3个要素:方法 工具和过程 两种方法学:1传统方法学2面向对象方法学 5什么是软件生命周期,它有哪几个阶段(8个阶段),各个阶段分别做什么,这些阶段的重要性。
一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。阶段:1问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8软件维护
6软件过程的精确定义,它与软件工程的关系,它的各种模型,各种模型的优缺点,适用范 围。
软件过程为一个为建造高质量软件所需完成的任务的框架,它规定了完成各项任务的工作步骤。瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 第2章
1什么是可行性研究,它的目的,它的任务,可行性研究是在项目建议书被批准后,对项目在技术上和经济上是否可行所进行的科学分析和论证。目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。任务:对以后的行动方针提出建议。
2从哪几个方面进行可行性研究,每个方面研究什么,它的目的,它的任务。
1技术可行性2经济可行性3操作可行性 3可行性研究的过程,8个阶段。
1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义模型5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查 4系统流程图,表达什么,它的符号,符号含义 概括地描绘物理系统的传统工具。
5数据流程图,描绘什么,它的符号,符号含义,画法,数据流程图的用途(重点)描绘信息流和数据从输入移动到输出的过程中所经受的变换。
6数据字典的精确定义,作用,内容(4类定义组成)定义数据的方法,用途,实现。
数据字典是关于数据的信息的集合。对数据流图中包含的所有元素的定义的集合。
内容1.数据流2数据流分量3数据存储4处理 7成本效益分析,使用的方法 第3章
1需求分析,它的任务,它的重要性,它的结果,要遵守的4条准则。
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
重要性:需求分析可以使得开发和测试更能够了解客户的需求,把一些技术难点和可能遇到的难点问题提出来,尽早解决,并且达到一致,便于以后的开发和测试
需求分析结果是产生:需求规格说明书
⑵分析与综合,导出软件的逻辑模型
⑶编写文档:包括编写“需求规格说明书”,“初步用户使用手册”,“确认测试计划”,“修改完善软件开发计划” 任务的7项要求,与用户沟通的方法
获取需求的方法,用到的图形工具:E_R图,图描述什么,使用符号 状态转换图,其他图形,IPO图等 验证需求,4个方面 第5章
1总体设计的目的,任务
总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。任务是设计软件的结构,也就是明确系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。必要性:可以站在全局的高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。2设计过程,二个阶段9个步骤
两个阶段:1系统设计阶段,确定系统的具体实现方案2结构设计阶段,确定软件结构。设计过程的9个步骤:1设想供选择的方案2选取合理的方案3推荐最佳方案4功能分解5设计软件结构6设计数据库7制定测试计划8书写文档9审查和复审。3设计原理,模块化,与模块化有关的独立,度量标准:耦合,内驟
设计原理:1模块化2抽象3逐步求精。模块独立程度的两个定性标准度量:1内聚2耦合。
4启发式7条规则,启发规则:1改进软件结构提高模块独立性2模块规模应该适中3深度、宽度、扇出、扇入都应适中4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测。5各种图形工具,HIPO,结构图,数据流图
描绘软件结构的图形工具:1层次图2 HIPO图3结构图;面向数据流的设计方法把信息流映射程软件结构,信息流的类型决定了映射的方法信息流有下述两种类型:1变换流2事务流。第6章
1详细设计的目的,任务
详细设计的根本目标 :是确定应该怎样具体地实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言写的程序。
任务:是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。必要性:衡量程序的质量不仅看它的逻辑是否正确,性能是否满足要求,更重要的是要看它能够简单易懂,详细设计的目的不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
2结构化:定义,指导思想,哪几种结构,使用的工具,建立什么模型使用什么工具
结构化的定义:结构化程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向goto语句。结构有三种:顺序,选择,和循环。
指导思想:采用自顶向下,逐步求精的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序,选择,重复三种基本控制结构构造。结构:顺序结构,选择结构,循环结构 工具:图形,表格,和语言
3人机界面设计,要解决的问题,设计过程,设计指南
人机界面设计是接口设计的一个重要组成部分,遇到的四个问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。
设计过程,用户界面设计是一个迭代的过程,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评价,然后根据用户意见进行修改。设计指南:一般交互指南,信息显示指南和数据输入指南
4过程设计的各种工具,程序流程图,盒图,PAD图,判定表,判定树,过程设计语言
过程设计的工具有三类:图形,表格,语言。具体有如下几种
程序流程图,盒图,pad图,判定表,判定树,过程设计语言(PDL)
5面向数据结构的设计方法,jackson方法,使用的图形工具
设计方法:根据数据结构设计程序处理过程的方法。
数据的3种使用方法:顺序,选择,重复。Jackson方法
Jackson结构程序设计方法基本上由下述5个步骤组成,(1)分析并确定输入数据和输出数据的逻辑结构,并用jackson图描述这些数据结构(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。
(3)用下述3条规则从描绘数据结构的jackson图导出描绘程序结构的jackson图。
1、为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。
2根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。总之,描绘程序结构的jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。在导出程序结构图的过程中,由于改进的jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框图。(4)、列出所有操作和条件,并且把它们分配到程序结构图的适当位置。(5)用伪码表示程序。使用的图形工具:jackson图
6复杂度的度量,McCabe方法,流图,(2014年重点)
复杂度度量:把程序的复杂程度乘以适当的常数即可估算出软件中的错误的数量以及软件开发需要的工作量
Mccabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度 第7章
1实现的重点是测试
2软件测试的基础:目标,准则,方法,测试5步骤
软件测试的基础:在测试阶段测试的人员努力设计出一系列的方案,目的却是为了“破坏”已经建造好的软件系统—竭力证明程序中有错误,不能按照预定要求正确工作。发现问题是为了解决问题,测试阶段的根本目标是尽可能多地发现并排除软件中潜在的错误,最终把一个高质量的软件系统交给用户使用。软测的目标:①测试是为了发现程序中的错误而执行程序的过程。②好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。③成功的测试是发现至今为止尚未发现的错误的测试。
软测的准则:①所有的测试都应该能追溯到用户的需求。②应该远在测试开始之前就制定出测试计划。③把Pareto原理应用到软测中。④应该从“小规模”测试开始,并逐步进行“大规模”测试。⑤穷举测试是不可能的。⑥为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
测试方法:白盒测试(结构测试)、黑盒测试(功能测试)。
测试步骤:①模块测试②子系统测试③系统测试④验收测试⑤平行测试。3单元测试,测试的重点,测试方案
单元测试:在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试;集中检测软件设计的最小单元---模块。
单元测试方法有:人工测试和计算机测试;单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行的进行。
单元测试的重点:①模块接口②局部数据结构③重要的执行通路④出错处理通路⑤边界条件
4集成测试:集成的策略,自顶向下,自底向上
集成测试:测试和组装软件的系统化技术。
集成测试的策略:自顶向下和自底向上。
自顶向下集成方法是一个日益为人们广泛采用的测试和组成软件的途径。从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。自底向上集成:从“原子”模块开始组成和测试。
5确认测试,范围,Alpha测试Beta测试
确认测试:又称验收测试,它目标是验证软件的有效性。
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,其是在受控的环境中进行的。
Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此Beta测试是软件开发者不能控制的环境中的“真实”应用。6白盒测试,黑盒测试(重点)
白盒测试:通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行。黑盒测试:通过测试来检测每个功能是否都能正常使用。
7软件的可靠性,计算公式
软件的可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。设计白盒测试方案的技术主要有逻辑技术和控制结构测试;设计黑盒测试方案的技术主要有等价划分、分界值分析和错误推测。
第8章
1软件维护的定义,4项活动,4类维护
软件维护的定义:在软件已经交付使用后,为了改正错误或满足新的需要而修改软件的过程。
四项维护:第一项维护活动:在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员,让维护人员诊断和改正的过程。第二项维护活动:为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。第三项维护活动:在使用软件的过程中用户往往提出增加新功能或修改已有功能的建议,还可能提出一般性的改进意见。第四项维护活动:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
四类维护:改正性维护、适应性维护、完善性维护、预防性维护 2软件维护的特点,问题,软件维护的特点:结构化维护与非结构化维护差别巨大、维护的代价高昂、维护的问题很多
软件维护的问题:
1)理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。2)需要维护的软件往往没有合格的文档,或者文档资料显著不足。
3)当要求对软件进行维护时,不能指望有开发人员给人们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已经不在附近了。4)绝大多数软件在设计时没有考虑将来的修改。5)软件维护不是吸引人的工作。3软件维护的过程
软件维护的过程:维护组织、维护报告、维护的事件流、保存维护记录、评价维护活动 4软件的可维护性
软件可维护性定义:维护人员理解、改正、改动或改进这个软件的难易程度。决定软件可维护性的因素:可理解性、可测试性、可修改性、可移植性、可重用性 5预防性维护与软件再工程。
预防性维护由Miller提出来把今天的方法学应用到昨天的系统上以支持明天的明天的需求
6软件再工程
6类活动:1.库存目录分析2.文档重构3.逆向工程4.代码重构5.数据重构6.正向工程 第9章
1面向对象方法学的定义,要点,优点
定义:面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
要点:1认为客观世界是由各种对象构成的,任何事物都是对象,复杂的对象可以由简单的对象以某种方式组合而成。2,把所有的对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。3,按照子类与父类的关系,把若干个对象组成一个层次结构的的系统。4,对象之间仅能通过传递消息互相联系。
优点:1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.较易开发大型软件产品5.可维护性好
2对象的定义,要点,优点
定义:1.对象是具有相同状态的一组操作的集合2.对象是对属性值和操作的封装。3.对象::=
3面向对象的概念,定义,特点
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。
特点:1对象唯一性2分类性3继承性4多态性 优点:1易维护2质量高3效率高4易扩展 4类的定义,实例、消息、方法、属性,继承等概念
类的定义:类就是具有相同数据和相同操作的一组相似对象的定义。实例:实例就是由某个特定类所描述的一个具体的对象。
消息:小时就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
属性:属性就是类中所定义的数据,它是对客观世界实体说具有的性质的抽象。封装:在面向对象的程序中,把数据和实现操作的代码集中放在对象内部。
继承:在面向对象的软件技术中,继承是子类自动地共享基类中的数据和方法的机制。多态:多态性是指子类对象可以像父类对象那样使用,同样地消息既可以发给父类对象也可以发给子类对象。重载:函数重载是指在同一作用域类的若干个参数特征不同的函数可以使用相同的函数名字,运送符号重载是指同一个运算符可以施加在不同类型操作数上面。5面向对象建模,对象模型(重点),功能模型(重点)动态模型,模型怎么画,各种符号 6面向对象方法学使用的语言
面向对象语言是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。第10章
3个子模型和5个层次 怎样确定类与对象
类是对象的抽象,对象是类的具体实例。确定关联,各种关联怎样确定
建立动态模型,编写脚本,画事件跟踪图
第五篇:软件工程导论复习材料
1.软件工程基本概念
1.()因素促使计算机系统越来越复杂。
A.计算机内存和存储容量上的巨大增长
B.外部输入/输出选项的更加多样性
C.计算机体系结构方面的深刻变化
D.以上所有选项
2.下面的()不再是现代软件工程师关注的问题。
A.为什么不能在产品发布前去除软件错误?
B.为什么软件需要很长时间才能完成?
C.为什么开发一个软件的成本这么高?
D.为什么计算机硬件的成本这么高?
3.软件会逐渐退化而不会磨损,其原因在于()。
A.软件备件很难订购
B.软件错误通常发生在使用之后
C.通常暴露在恶劣的环境下
D.不断的变更使组件接口之间引起错误软件
4.大多数软件仍然是定制开发的,其原因在于()。
A.软件组件重用是十分普遍的 B.可重用的组件太昂贵而无法使用
C.软件在不使用其他组件的情况下很容易构造出来
D.商业组件在很多应用领域中可以得到
5.下面的()说法是正确的。
A.软件危机在20世纪70年代末期全面爆发
B.当前先进的软件工程方法已经解决了软件危机的问题
C.软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题
D.软件危机是指在软件产品中存在一系列的质量问题 1.瀑布模型本质上是一种()。
A、线性迭代模型
B、顺序迭代模型C、线性顺序模型
D、及早见产品模型 2.()是用户和设计交换最频繁的方法。
A、原型化方法
B、瀑布模型方法C、螺旋模型方法
D、构件组装模型 5.在软件开发模型中,提出最早、应用最广泛的模型是()A.瀑布模型
B.喷泉模型
C.增量模型
D.螺旋模型
1.软件工程的方法只适用于大型软件的开发,对小型软件的开发没有帮助。()1.什么是软件危机?其主要表现有那些?
1.有人认为软件工程过于耗费时间,并且妨碍开发人员的编程效率。你是否认同这种观点?请阐述理由。
2.需求分析 需求规格说明描述了()。
A.计算机系统的功能、性能及其约束
B.每个指定系统的实现
C.软件体系结构的元素
D.系统仿真所需要的时间
7.软件可行性研究实质上是要进行一次()需求分析、设计过程。A.简化、压缩的B.详细的 C.彻底的D.深入的 11.下面说法不正确的是()。
A.流程图不易表示数据结构
B.流程图容易造成非结构化的程序结构
C.流程图支持逐步求精
D.流程图描述的是程序的逻辑结构 1.需求分析中开发人员要从用户那里了解()。
A、软件做什么B、用户使用界面C、输入的信息D、软件的规模
2.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是()需求。A、功能 B、性能 C、数据 D、环境 24.软件可行性研究一般不考虑()
A.是否有足够的人员和相关的技术来支持系统开发 B.是否有足够的工具和相关的技术来支持系统开发 C.待开发软件是否有市场、经济上是否合算 D.待开发的软件是否会有质量问题 25.需求规格说明描述了()
A.计算机系统的功能、性能及其约束 B.每个指定系统的实现 C.软件体系结构的元素
D.系统仿真所需要的时间
26.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是()需求 A.功能
B.性能
C.数据
D.环境
7.成本效益分析的目的是从
角度评价开发一个项目是否可行。
2.软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。3.()目前存在一个很普遍的现象,即不同的客户提出的需求是相互矛盾的,但每个人都争辩自己是正确的。
5.()在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。2.可行性研究主要确定问题分析阶段所确定的问题是否有可行的解。()6.在需求分析过程中,分析员要解决的最重要的问题是明确软件做什么。()7.数据流图的画法?
3.软件设计与编码.概要设计阶段产生的文档不包括()。A.概要设计说明书
B.数据库设计说明书 C.用户手册
D.开发进度月报.一个模块把数值作为参数传送给另一个模块,这种耦合方式称为()。A.数据耦合 B.公共耦合 C.控制耦合 D.标记耦合
10.与详细设计相对应的是数据库的()设计。A.概念
B.逻辑 C.物理
D.功能 19.序言性注释主要内容不包括()。
A.模块的接口
B.数据的描述
C.模块的功能
D.数据的状态 11.模块化的目的是:()
A、增加内聚性 B、降低复杂性C、提高易读性D、减少耦合性 12.软件设计中划分模块的一个准则是()。
A、低内聚低耦合B、低内聚高耦合C、高内聚低耦合D、高内聚高耦合 13.下列耦合中,耦合程度最高的是:()A、标记耦合 B、控制耦合 C、内容耦合 D、公共耦合 14.模块间耦合程度越高,说明模块之间彼此依赖的程度越()。A、松散 B、紧密 C、无法判断 D、相等 15.程序的三种基本控制结构是()。A、过程、子程序和分程序。B、顺序、选择和重复。C、递归、堆栈和队列。D、调用、返回和转移。
2.软件设计阶段一般分为
和
两个阶段。
3.软件开发过程中,模块化开发追求的目标是:__________________。6.数据建模常用的模型是______________。任何程序都可由
、和
3种基本控制结构构造。这3种基本结构的共同点是
、。
4.软件人员的数量与软件开发进度成正比。()
8.模块化程序设计中,模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。()
9.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。()
10.程序设计风格指导原则提出,尽量多使用临时变量。()8.模块化程序设计中,模块越小,模块化的优点越明显。()
4.软件测试
13.()方法需要考察模块间的接口和各模块之间的联系。A.单元测试
B.集成测试 C.确认测试
D.系统测试
16.在软件生存周期中,时间最长、所花费的精力和费用也最多的阶段是()。A.详细设计
B.维护 C.概要设计
D.测试 16.软件测试的目的是?()A、证明软件的正确性
B、找出软件系统中存在的所有错误 C、证明软件系统中存在错误
D、尽可能多的发现软件系统中的错误
17.()是以提高软件质量为目的的技术活动。A.技术创新
B.测试
C.技术创造
D.技术评审
18.软件维护工作的最主要部分是()。A、校正性维护 B、适应性维护 C、完善性维护 D、预防性维护
19.检查软件产品是否符合需求定义的过程称为()。A、确认测试 B、集成测试 C、验收测试 D、系统测试
20.软件维护的副作用,是指()。A、开发时的错误 B、隐含的错误
C、因修改软件而造成的错误 D、运行时误操作
33.发现错误能力最弱的是()A.语句覆盖
B.判定覆盖
C.条件覆盖
D.路径覆盖 34.()方法需要考察模块间的接口和各模块之间的联系 A.单元测试
B.集成测试
C.确认测试
D.系统测试 1.软件测试主要可分为________和________两种类型。
4.软件维护可分为四类,它们是改正性维护,________,________ 和________。8.软件可维护性的因素是可理解性、可测试性、可修改性、可移植性和_____。
9. 软件质量保证应从________开始,直到投入使用和售后服务的软件生存期的每一阶段中 4 的每一步骤。
3.为了加快软件维护作业的进度,应尽可能增加维护人员的数目。()
5.质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动。()
6.判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。()7.测试只能证明程序有错误,不能证明程序没有错误。()3.软件维护就是改正软件中的错误。()
10.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(11.基本路径测试的分析方法?)5
5.面向对象的软件工程(UML)..()意味着一个操作在不同的类中可以有不同的实现方式。
A.消息
B.多继承
C.多态性
D.封装.顺序图反映对象之间发送消息的时间顺序,它与()是同构的。A.用例图
B.类图
C.协作图
D.状态图
28.在软件工程学中,我们把一组具有相同数据结构和操作的对象的集合定义为()A.类
B.属性
C.对象
D.消息
29.顺序图反映对象之间发送消息的时间顺序,它与()是同构的 A.用例图
B.类图
C.协作图
D.状态图 35.下列关于UML叙述不正确的是()A、UML是一种高级编程语言,且是可视化的B、UML是一种文档化语言 C、UML是一种可用于详细描述的语言
D、UML是一种构造语言
36.表示一种一般事物(父类)和特殊事物(子类)之间的关系是()A、依赖
B、关联
C、泛化
D、实现 1.()用例参与者总是人员而不是系统设备。
6.()面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。
8.()关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
9.UML用例图的画法?
6.项目管理
38.CMMI体系中,第三级是()A、已管理级
B、已量化管理级 C、已定义级
D、持续优化级 5.软件配置管理中,基线是___________________________________。4.()软件工作产品一旦成为基线就不能再更改了。4.什么是软件配置管理?主要目标和手段是什么? 4.什么是基线?