软件工程期末复习
1、软件=程序+文档+数据。
2、软件工程三要素:方法、工具、过程。研究内容:方法与技术、工具与环境、管理与技术、标准与规范。
3、软件开发方法:结构化方法(自顶向下、由外向内、逐层分解)、形式化方法、面向数据结构方法、面向对象方法。
4、产生软件危机的主要原因是软件自身的特点及开发方法。
5、软件过程(软件生命周期过程,是软件开发活动的集合):可行性分析、需求分析、软件设计、编码、软件测试、软件维护。
6、软件过程模型:瀑布模型(不可回溯)、快速原型模型(难以表达全面、准确的需求,双方的只是领域差异很大)、增量模型(模块化、非整体开发模型)、螺旋模型(风险分析控制、用于风险大的大型软件,是瀑布模型与快速原型模型的结合,操作性不强)、喷泉模型(迭代、无间隙性)。
7、需求分析的步骤:需求获取、分析建模、需求描述、需求验证。
8、结构化需求分析方法:一种面向数据流的需求分析方法,其中数据作为独立实体转换,数据建模定义了数据的属性和关系,操作数据的处理建模表明当数据在系统流动时处理如何转换数据。
9、结构化分析常用的建模方法:实体-关系图、数据流图(DFD)、状态转换图(STD)、数据字典(DD)。
10、在需求分析前有必要进行可行性分析工作。
11、需求分析是一个过程,他应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。
12、E-R图用于描述应用系统的概念结构数据模型,他是进行需求分析,并归纳、整体、表达和优化现实世界中数据以及其联系的重要工具。包括实体、关系、属性。
13、数据流图是描述系统中数据流的图形工具,是一种用来表示信息流和信息变换过程的图解方法可以标识一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。
14、状态转换图是一种描述系统对内部或外部事件响应的行为模型。他描述系统状态和事件,事件引发系统在状态间的转换,而不是描述系统中数据的流动。(适合描述实时系统)
15、数据字典用于对数据流图补充和完善,用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。
16、需求阶段会产生3个文档:系统定义文档(用户需求报告)、系统需求文档(系统需求规格说明书)、软件需求文档(软件需求规格说明书)。
17、面向数据流的软件设计方法可以将数据流映射成软件结构。
18、模块的独立性是由内聚性和耦合性来度量的,内聚性是模块的功能强度,耦合性越弱模块越独立,最好采用数据耦合。
19、Jackson方法根据数据结构导出程序结构。
20、面向数据流的软件设计方法中,将信息流分为变换流和事务流。变换是指把输入的数据处理后转变成另外的输出数据,事务是指非数据变换的处理,他将输入的数据分散成许多数据流,形成若干个加工,然后选择其中一个路径来执行。
21、结构化设计的工具:流程图、盒图(N-S图)、PAD图(问题分析图)、判定表、判定树(并不适合作为一种通用的工具、没有简单的方法可以处理)、过程设计语言(PDL、伪代码、程序描述语言)。
22、面向数据的设计方法包括,确定数据结合特征,用顺序、选择和重复3种基本形式表示数据。
23、面向对象技术中,对象是类的实例,对象有3种成分,封装、属性和方法(或操作)。
24、通过执行对象可以改变对象的属性,但他必须通过信息的传递。
25、UML是软件开发中的一个重要工具,他只有应用于基于对象的面向对象的方法。
26、UML的主要内容可以用用例图、静态图(、行为图、交叉图、实现图来定义。
27、静态建模机制包括用例图、类图、对象图、包图。
27、用例图从用户角度描述系统的功能,由用例、参与者以及他们的关系连线组成。用例是从用户角度描述系统的行为,参与者是与系统交互的外部实体。用例是一个类,他代表一类功能。
28、用例之间存在3种关系:包含(使用带箭头的虚线表示,虚线上标有《include》,方向由包含实例指向被包含实例,存在共同行为)、扩展(使用带箭头的虚线表示,虚线上标有《extend》,方向由包含实例指向被扩展实例,存在异常行为)、泛化(使用带三角形实线表示,方向由子用例执行父用例,一般与特殊关系)。
29、类图和对象图:类图使用类和对象描述系统的结构,展示了系统中类的静态结构,即类与类之间的相互关系。对象图是类图的实例,他展示了系统在某一时刻的快照。对象图使用和类图形同的符号,只是在对象名下面加上下划线。类与类之间有关联、依赖、泛化、实现关系。
30、包是一种元素进行分组的进制,访问性:public(公有访问,+)、private(私有访问,—)、protected(保护访问,#)。
31、动态建模机制包括顺序图、协作图、状态图、活动图。
32、顺序图描述一组对象的交互方式,他完成某项行为的对象和这些对象之间传递消息的时间顺序。由对象、生命线、控制焦点、消息组成。
33、协作图(通信图、合作图)用于显示系统的动作协作。
34、状态图用来描述对象对外部对象响应的历史状态序列,描述对象所有可能的状态,以及哪些事件将导致状态的改变。初态用实心圆、终态实心圆外围一个圆。
35、活动图用于对计算流程和工作建模。
36、面向对象模型主要包括对象模型(核心模型)、动态模型、功能模型。
37、面向对象分析的首页工作是建立问题的对象模型。
38、动态模型着重于系统的控制逻辑,包括事件追踪图、状态图。
39、面向对象设计阶段的主要任务是系统设计和对象设计。
40、软件测试的目的是发现软件中的错误。
41、黑盒测试主要关注软件功能的实现,而不是内部逻辑,包括等价类划分法、边界值分析法、错误推断法、因果图法、决策表法、场景法。
42、白盒测试关注软件产品的内部细节和逻辑结构,包括代码检查法、逻辑覆盖法、基本路径法、条件测试。(用于单元测试)
43、成功的测试试着运行测试用例后发现了程序错误。
44、黑盒测试是从用户观点的测试,白盒测试是从管理人员观点的测试。
45、集成测试的主要方法有增量式测试(逐步完成测试)、非增量式测试(一步到位测试)。
46、单元测试是在代码编写阶段进行的测试,他是整个测试的基础,不能完成系统功能的测试。
47、测试用例由输入数据和预期的输出结构组成。
题库
一、选择题
具有风险分析的软件生命周期模型是( C )。
A.瀑布模型 B.喷泉模型
C.螺旋模型 D.增量模型
软件工程的基本要素包括方法、工具和( A )。
A. 过程 B. 软件系统
C. 硬件环境 D. 人员
在结构化分析方法中,( C )表达系统内部数据运动的图形化技术。
A. 数据字典 B. 实体关系图
C. 数据流图 D. 状态转换图
“软件危机” 是指( C )。
A.计算机病毒的出现
B.利用计算机进行经济犯罪活动
C.软件开发和维护中出现的一系列问题
D.人们过分迷恋计算机系统
随着软硬件环境变化而修改软件的过程是( B )。
A.校正性维护
B.适应性维护
C.完善性维护
D.预防性维护
需求分析中开发人员要从用户那里了解( A )。
A.软件做什么
B.用户使用界面
C.输入的信息
D.软件的规模
软件详细设计的主要任务是确定每个模块的( A )。
A.算法和使用的数据结构 B.外部接口
C.功能 D.编程
为了提高模块的独立性,模块内部最好是( C )。//外部耦合,功能内聚
A.逻辑内聚 B.时间内聚
C.功能内聚 D.通信内聚
模块的内聚性最高的是( D )。
A.逻辑内聚 B.时间内聚
C.偶然内聚 D.功能内聚
需求分析是( A )。
A. 软件开发工作的基础
B. 软件生存周期的开始
C. 由系统分析员单独完成的
D. 由用户自己单独完成的
在白盒测试技术测试用例的设计中,( B )是最强的覆盖标准。
A.语句覆盖 B.路径覆盖
C.条件组合覆盖 D.判定覆盖
( C ) 是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A. 多态性 B. 继承 C. 封装 D. 消息
对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。
A.结合 B.隐藏 C.封装 D.抽象
面向对象的开发方法中,( C )将是面向对象技术领域内占主导地位的标准建模语言。
A.Booch方法 B.Coad方法 C.UML语言 D.OMT方法
( A )意味着一个操作在不同的类中可以有不同的实现方式。
A.多态性 B.多继承 C.类的可复用 D.信息隐藏
单元测试的测试用例主要根据( D )的结果来设计。
A.需求分析 B.源程序 C.概要设计 D.详细设计
软件测试是为了( B )而执行程序的过程。
A.纠正错误 B.发现错误
C.避免错误 D.证明正确
类构件的重用方式有多态重用、继承重用和( A )
A.实例重用 B.重载重用
C.代码重用 D.方法重用
支持面向对象技术的软件生存周期模型是( A )。
A.喷泉模型 B.螺旋模型
C.增量模型 D.瀑布模型
在白盒测试技术测试用例的设计中,( A )是最弱的覆盖标准。
A.语句覆盖 B.路径覆盖
C.条件组合覆盖 D.判定覆盖
下面哪些测试方法属于白盒测试( A E )。//BCD是黑盒测试
A、基本路径测试 B、等价类划分 C、边界值分析
D、错误推测 E、逻辑覆盖测试
瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C )。
A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错
从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大( C )。
A、详细设计阶段 B、概要设计阶段
C、需求分析阶段 D、测试和运行阶段
在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标( A )。
A、需求分析阶段 B、详细设计阶段
C、概要设计阶段 D、可行性研究阶段
软件工程的出现主要是由于( C )。
A.程序设计方法学的影响 B.其它工程科学的影响
C. 软件危机的出现 D.计算机的发展
软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )
A、硬件环境 B、软件开发的环境
C、软件开发工具和软件开发的环境 D、开发人员的素质
软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B )
A、相互排斥 B、相互补充 C、独立使用 D、交替使用
UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )
A、基于瀑布模型的结构化方法
B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法
D、基于数据的数据流开发方法
软件测试基本方法中,下列 ( D ) 不用测试实例。
A、白盒测试法 B、动态测试法 C、黑盒测试法 D、静态测试法
结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的( B )
A、控制流 B、数据流 C、程序流 D、指令流
软件开发的结构化生命周期方法将软件生命周期划分成( A )
A、计划阶段、开发阶段、运行阶段
B、计划阶段、编程阶段、测试阶段
C、总体设计、详细设计、编程调试
D、需求分析、功能定义、系统设计
可行性研究主要从以下几个方面进行研究:( A )
A、技术可行性,经济可行性,操作可行性
B、技术可行性,经济可行性,系统可行性
C、经济可行性,系统可行性,操作可行性
D、经济可行性,系统可行性,时间可行性
耦合是对软件不同模块之间互连程度的度量。各种耦合按从强到弱排列如下: ( C )
A、内容耦合,控制耦合,数据耦合,公共环境耦合
B、内容耦合,控制耦合,公共环境耦合,数据耦合
C、内容耦合,公共环境耦合,控制耦合,数据耦合
D、控制耦合,内容耦合,数据耦合,公共环境耦合
可行性分析研究的目的( B )
A 争取项目 B 项目值得开发否 C 开发项目 D 规划项目
数据字典是用来定义( D )中的各个成分的具体含义
A 流程图 B 功能结构图 C 系统结构图 D 数据流图
程序的三种基本控制结构的共同特点是( C )
A 只能用来描述简单程序 B 不能嵌套使用
C 单入口,单出口 D 仅用于自动控制系统
为高质量的开发软件项目,在软件结构设计时,必须遵循( A )原则
A 信息隐蔽 B 质量控制 C 程序优化 D 数据共享
黑盒测试在设计测试用例时,主要研究( A )
A 需求规格说明与概要设计说明
B 详细设计说明
C 项目开发计划
D 概要设计说明与详细设计说明
通过 ( B ) 可以完成数据流图的细化。
A、结构分解 B、功能分解 C、数据分解 D、系统分解
程序流程图 (PDF) 中的箭头代表的是 ( B )
A、数据流 B、控制流 C、调用关系 D、组成关系
软件定义期问题定义阶段涉及的人员有 ( D )
A、用户、使用部门负责人
B、软件开发人员、用户、使用部门负责人
C、系统分析员、软件开发人员
D、系统分析员、软件开发人员、用户、使用部门负责人
业界存在三种需求分析方法:面向功能分析、面向对象分析和(B)。
A.面向算法分析 B.面向数据分析
C.面向程序分析 D.面向硬件分析
软件测试方法中的 D 属于静态测试方法。
A. 黑盒法 B.路径覆盖 C.错误推测 D.人工检测
结构化分析方法采用的基本手段是 A 。
A. 分解与抽象 B.分解与综合 C.归纳与推导 D.试探与回溯
可行性研究要进行一次(D)需求分析。
A.深入的 B.详尽的 C.彻底的 D.简化的、压缩了的
可维护性的特性中相互促进的是(A)
A.可理解性和可测试性 B.效率和可移植性
C.效率和可修改性 D.效率和结构好
软件测试可能发现软件中的( B ),但不能证明软件 ( )。
A.所有错误,没有错误 B.错误,没有错误
C.逻辑错误,没有错误 D. 设计错误,没有错误
在一个课程注册系统中,定义了类 CourseSchedule 和类 Course , 并在类 CourseSchedule 中定义了方法 add (c:Course) 和方法 remove (c:Course),则类 CourseSchedule 和类 Course 之间的关系是( C )。
A.泛化关系 B.组合关系 C.依赖关系 D.包含关系
软件策划的上游是( A ),下游是( B )
A)需求分析 B)软件设计 C)软件测试 D)可行性分析
概要设计的结果是提供一份 ( A )。
A). 模块说明书 B). 框图 C). 程序 D). 数据流图
面向数据流软件设计方法一般是把数据流图中的数据流化分为 (B) 两种流,再将数据流图映射为软件结构。
A). 数据流与事务流 B). 交换流和事务流
C). 信息流与控制流 D). 交换流和数据流
二、简答题
1、简述软件设计的过程。
软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和角度,是将需求转变为软件陈述的过程,是迭代的过程。
软件设计,要根据需求规格说明书,对整个设计过程进行计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。
然后需要对生成的设计规格说明书进行评审,启动 质量评价的标准,若未通过评审,需重新修改设计,直至评审通过,确定最后定型的过程本身。进入后续阶段,完成软件设计过程。
2、简述结构化程序设计方法的基本特点。
1)尽可能少用goto语句的程序设计方法。
2)每个代码块都单入单出。
3)使用控制结构:顺序、选择和循环。
4)自顶向下逐步求精。
3、衡量模块独立性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?
衡量模块独立性的两个定性标准是内聚和耦合。耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元素彼此结合的紧密程度。在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合。
4、什么是黑盒测试法?
黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程(2分)。它只检查程序功能是否能按照规格说明书的规定正常使用(1分),程序是否能适当地接收输入数据(1分),产生正确地输出信息(1分)。
5、简述面向对象的4个要点的含义。
面向对象的4个要点是:对象分解、数据专有、继承、封装性。
1)对象分解:认为客观世界是由各种对象组成的。
2)数据专有,方法共享:把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。
3)继承:按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。
4)封装性:对象彼此之间仅能通过传递消息互相联系。
6、软件维护的过程
在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。
软件维护的过程:
(1)确认维护要求。
(2)对于改正性维护申请,评价错误的严重性。对于严重的错误,立即安排人员,分析问题原因,进行”救火”性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。
(3)对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。
7、软件维护的目的和主要任务是什么?维护的类型有哪些?
软件维护是软件生命周期中最后一个、持续时间最长的阶段。
主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件。
目的是提高软件的可靠性、可用性,延长软件的寿命。
维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)
8、什么是耦合?模块的耦合包括哪些类型?
耦合是对一个软件结构内不同模块之间互连程度的度量。
模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合
9、什么是内聚?模块的内聚包括哪些类型?
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。模块的内聚包括以下几种类型:低内聚 — 偶然内聚,逻辑内聚,时间内聚中内聚 — 过程内聚,通信内聚;高内聚 — 顺序内聚,功能内聚。
10、什么是编码风格?为什么要强调编码风格?
编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。
因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。
11、什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
软件发展的第二阶段末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的,大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决方法,使问题积累起来,形成了尖锐的矛盾,因此导致了软件危机。
软件危机表现在以下四个方面:(钱与时间,要求,维护性,可靠性)
(1)经费预算经常突破,完成时间一再拖延。
(2)开发的软件不能满足用户要求
(3)开发的软件维护性差
(4)开发的软件可靠性差
造成软件危机的原因:(规模和结构,管理,经费,技术,工具)
(1)软件的规模越来越大,结构越来越复杂
(2)软件开发管理困难而复杂
(3)软件开发的经费不断增加
(4)软件开发技术落后
(5)生产方式落后开发工具落后,生产率提高缓慢
12、软件生存周期包括哪些活动?
答:软件生存周期的活动包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动。
13、请说明 “三个模型” 的定义,以及三者之间的关系。
功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
业务模型是描述系统在何时、何地、由何角色、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
数据模型是描述系统工作前的数据来自何处,工作中的数据存什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。通常,数据模型建模用 Power Designer,ER win 或 Oracle Designer 工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。
请登录后发表评论
注册
社交帐号登录