软件工程导论复习整理(最新)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程导论复习重点”。
第一章
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.( )因素促使计算机系统越来越复杂。 A.计算机内存和存储容量上的巨大增长B.外部输入/输出选项的更加多样性C.计算机体系结构方面的深刻变化D.以上所有选项......
《软件工程导论》讲稿主讲教师:杨怀洲 邮箱:hzyang@xsyu.edu.cn电话:***第1章 软件工程学概述1.1软件危机1.1.1软件危机的介绍 1.1.2产生软件危机的原因图1.1引入同一......
计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而发展起来的。那么......
软件工程导论试题一.选择1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可......
授课日期: 11月13日课程名称: 软件工程导论教学目的:让学生了解软件以及软件危机的概念了解软件危机出现的原因以及解决途径熟悉软件工程产生的原因以及其生命周期各个阶段的任......