软件工程
- 第一章 软件与软件工程作业
- 第二章 可行性研究作业
- 第三章 需求分析作业
- 第四章 总体设计作业
- 第五章 详细设计作业
- 第六章 软件编码测验
- 第七章 软件测试作业
- 选择判断
- 简答题
第一章 软件与软件工程作业
一、单选题(共7题,58.1分)
1、软件是一种( )。
A、 程序
B、 数据
C、 逻辑产品
D、 物理产品
正确答案: C
2、软件生存周期中花费最多的阶段是( )。
A、 详细设计
B、 软件编码
C、 软件测试
D、 软件维护
正确答案: D
3、软件开发方法是( )。
A、 指导软件开发的一系列规则和约定
B、 软件开发的步骤
C、 软件开发的技术
D、 软件开发的思想
正确答案: A
4、瀑布模型本质上是一种( )模型。
A、 线性顺序
B、 顺序迭代
C、 线性迭代
D、 能及早见到产品的
正确答案: A
5、在软件开发模型中,提出最早、应用最广泛的模型是( )。
A、 瀑布模型
B、 喷泉模型
C、 快速原型模型
D、 螺旋模型
正确答案: A
6、瀑布模型不适合用于( )的软件开发。
A、 需求模糊不清
B、 用户不能参与开发
C、 用户对计算机不了解
D、 开发人员对业务知识不熟悉
正确答案: A
7、软件工程的出现是由于( )。
A、 软件危机的出现
B、 计算机硬件技术的发展
C、 软件社会化的需要
D、 计算机软件技术的发展
正确答案: A
二、判断题(共5题,41.9分)
1、____软件在运行和使用中也存在退化问题。
正确答案: 正确
2、____软件危机的产生主要是因为程序设计人员使用了不适当的程序设计语言。
正确答案: 错误
3、____软件同其他事物一样,有孕育、诞生、成长、成熟和衰亡的生存过程。
正确答案: 正确
4、____原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。
正确答案: 正确
5、____软件开发过程中,一个错误发现得越晚,为改正它所付出的代价就越大。
正确答案: 正确
软件与软件工程小测验
一、单选题 (共8题,40分)
1、软件是一种( )。
A、 程序
B、 数据
C、 逻辑产品
D、 物理产品
正确答案: C
解析:
2、瀑布模型突出的缺点是不适应( )的变动。
A、 算法
B、 程序语言
C、 平台
D、 用户需求
正确答案: D
解析:
3、快速原型的主要优点不包括( )。
A、 能让用户参与开发、给出反馈
B、 尽早把需求分析清楚,以降低风险
C、 尽早地发现问题、纠正错误
D、 对软件分析设计人员的素质要求不高
正确答案: D
解析:
4、在软件生存周期中,能准确地确定“软件系统必须做什么”的阶段是( )。
A、 总体设计
B、 详细设计
C、 可行性研究
D、 需求分析
正确答案: D
解析:
5、瀑布模型不适合用于( )的软件开发。
A、 需求模糊不清
B、 用户不能参与开发
C、 用户对计算机不了解
D、 开发人员对业务知识不熟悉
正确答案: A
解析:
6、螺旋模型是一种将瀑布模型和( )结合起来的软件开发模型。
A、 增量模型
B、 专家系统
C、 喷泉模型
D、 变换模型
正确答案: A
解析:
7、快速原型的主要问题在于( )。
A、 缺乏支持原型开发的工具
B、 要严格控制原型构造的迭代
C、 终端用户对原型不能理解
D、 软件的测试和文档更新困难
正确答案: A
解析:
8、在软件开发模型中,提出最早、应用最广泛的模型是( )。
A、 瀑布模型
B、 喷泉模型
C、 快速原型模型
D、 螺旋模型
正确答案: A
解析:
二、判断题 (共5题,20分)
1、____文字处理软件Word属于系统软件。
正确答案: 错误
解析:
2、____软件同其他事物一样,有孕育、诞生、成长、成熟和衰亡的生存过程。
正确答案: 正确
解析:
3、____面向对象开发方法的主要缺点是在适应需求变化方面不够灵活。
正确答案: 错误
解析:
4、____软件的维护与硬件维护本质上是相同的。
正确答案: 错误
解析:
5、____快速原型模型对软件开发人员的水平要求不高。
正确答案: 错误
解析:
三、简答题 (共2题,40分)
1、软件生命周期概念对软件的开发有哪些指导作用。
正确答案: 软件生命周期是软件工程的一个重要的概念。把整个软件生命周期划分为若干个较小的阶段,每个阶段都有相对独立的任务和完成任务的步骤和方法,然后逐步完成各个阶段的任务,这有利于软件开发过程的组织和管理,从而降低了整个软件开发过程的困难程度,从而使规模庞大、结构复杂和管理复杂的软件开发变得容易控制和管理。
解析:
2、简述软件工程在软件开发中的作用和意义。
正确答案: 软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软件工程的目标是实现软件的优质高产。软件工程的目的是在经费的预算范围内,按期交付出用户满意的、质量合格的软件产品。
解析:
第二章 可行性研究作业
一、单选题(共4题,80分)
1、软件可行性研究的目的是( )。
A、 证明软件开发项目可行
B、 证明软件开发项目不可行
C、 阐述软件开发项目值得或不值得做
D、 为了确定软件开发项目要不要做
正确答案: C
2、技术可行性研究要解决的问题是( )。
A、 从技术方面说明项目是否可行
B、 从技术上定义项目要解决的问题
C、 给出项目开发可行的技术路线
D、 给出精简的项目需求设计报告
正确答案: A
3、可行性研究的步骤首先是( )。
A、 确定项目目标,即对要解决的问题进行定义
B、 研究项目要求
C、 对项目目标进行可行性分析
D、 给出可行的解决方案
正确答案: A
4、可行性研究的任务不包括( )。
A、 技术可行性
B、 经济可行性
C、 法律可行性
D、 政治可行性
正确答案: D
二、简答题(共1题,20分)
1、简述可行性研究的步骤。
正确答案: (1)审核系统的规模和目标;(2)分析研究现行系统;(3)设计新系统的高层逻辑模型;(4)获得并比较可行的方案;(5)撰写可行性研究报告。
可行性研究小测验
一、单选题 (共6题,30分)
1、系统流程图是一种传统工具,用于描绘( )。
A、 逻辑模型
B、 程序结构
C、 体系结构
D、 物理系统
正确答案: D
解析:
2、软件可行性研究的目的是( )。
A、 证明软件开发项目可行
B、 证明软件开发项目不可行
C、 阐述软件开发项目值得或不值得做
D、 为了确定软件开发项目要不要做
正确答案: C
解析:
3、技术可行性研究要解决的问题是( )。
A、 从技术方面说明项目是否可行
B、 从技术上定义项目要解决的问题
C、 给出项目开发可行的技术路线
D、 给出精简的项目需求设计报告
正确答案: A
解析:
4、可行性研究的步骤首先是( )。
A、 确定项目目标,即对要解决的问题进行定义
B、 研究项目要求
C、 对项目目标进行可行性分析
D、 给出可行的解决方案
正确答案: A
解析:
5、可行性研究的任务不包括( )。
A、 技术可行性
B、 经济可行性
C、 法律可行性
D、 政治可行性
正确答案: D
解析:
6、可行性研究实质上是要进行一次( )需求分析,设计过程。
A、 简化、压缩的
B、 详细的
C、 彻底的
D、 深入的
正确答案: A
解析:
二、简答题 (共2题,30分)
1、软件开发的早期,为什么要进行可行性研究?目标的可行性研究有几个方面?
正确答案:
许多软件开发问题都不能在预期的时间范围内或资源限制下得到解决。如果开发人员没有尽早停止没有可行解决方案的开发项目,就会造成时间、资金、人力、物力的浪费。为了降低软件开发失败的可能性,需要进行软件可行性研究。可行性研究要从经济可行性、技术可行性、运行可行性和法律可行性四方面进行。
解析:
2、
某航空公司为了方便旅客,拟开发一个机票预订系统。将旅客的信息(姓名、性别、工作单位、身份证号、旅行时间、旅行目的地等)输入该系统后,系统自动为旅客安排航班。打印出取票通知和票务账单。旅客可在航班的前一天凭取票通知和票务账单交款取票。系统校对无误后即打印出机票给旅客。要求:
(1)提出问题定义;
(2)分析此系统的可行性;
(3)画出系统流程图。
正确答案:
答:(1)问题定义:航运公司机票预订系统问题定义
系统目标和范围说明书
1.项目名称:X航运公司机票预订系统。
2.背景:目前,由旅客人工到航运公司排队购票,费时、费力、管理工作量大、手续繁琐效率低,制约了公司业务的发展。
3.项目目标:建立一个网络化的机票预订系统。
4.项目范围:软件开发费用不超过X万元。
5.初步设想:建议在系统中完成安排航班、打印取票通知、打印票务账单、打印机票等主要功能。
6.可行性研究:建议进行大约X周的可行性研究,研究费用不超过X元。
(2)可行性分析
技术可行性:使用现有的技术能够实现此系统,在现有资源(包括硬件资源、软件资源、技术人员的技术水平和已有的工作基础)条件下,技术风险不大,项目可以实现。
经济可行性:此系统能够方便旅客订票,具有一定的经济效益和社会效益。
法律可行性:此项目开发要符合航运系统相关要求。
操作可行性:现有制度、人员素质、操作方式可行。
(3)系统流程图
第三章 需求分析作业
一、单选题(共4题,50分)
1、数据流图(DFD)是( )方法中用于表示系统的逻辑模型的一种图形工具。
A、 SA
B、 SD
C、 SP
D、 SC
正确答案: A
2、需求规格说明书的作用不包括( )。
A、 软件验收的依据
B、 用户与开发人员对软件要做什么的共同理解
C、 软件可行性研究的依据
D、 软件设计的依据
正确答案: C
3、结构化分析方法(SA)是一种面向( )的分析方法。
A、 数据结构
B、 数据流
C、 结构化数据系统
D、 对象
正确答案: B
4、软件开发的需求活动,其主要任务是( )。
A、 给出软件解决方案
B、 给出系统模块结构
C、 定义模块算法
D、 定义需求并建立系统模型
正确答案: D
二、判断题(共4题,50分)
1、____软件需求分析阶段要确定软件系统要“做什么”。
正确答案: 正确
2、____需求分析员可以参加最后的需求评审工作。
正确答案: 正确
3、____在软件生产过程中,需求信息的来源是项目经理。
正确答案: 错误
4、____需求分析阶段的任务是确定软件的功能。
正确答案: 正确
需求分析小测验
一、单选题 (共8题,40分)
1、需求分析最终结果是产生( )。
A、 项目开发计划
B、 需求规格说明书
C、 设计说明书
D、 可行性分析报告
正确答案: B
解析:
2、数据词典是用来定义( )中的各个成分的具体含义。
A、 流程图
B、 功能结构图
C、 结构图
D、 数据流图
正确答案: D
解析:
3、在数据词典中,以下哪一项表示允许重复0至任意次( )。
A、 {}
B、 0{ }
C、 0{ }n
D、 { }n
正确答案: A
解析:
4、需求分析的任务是( )。
A、 正确说明让软件“做什么”
B、 用DFD建模
C、 用DD建立数学模型
D、 给出需求规格说明书
正确答案: A
解析:
5、需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目标系统的逻辑模型并写出( )的过程。
A、 模块说明书
B、 软件规格说明书
C、 项目开发计划
D、 合同文档
正确答案: B
解析:
6、DFD的每个加工都必须有( )。
A、 一个输入和输出数据流
B、 一个输入数据流
C、 一个输出数据流
D、 一个输入或输出数据流
正确答案: A
解析:
7、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及( )。
A、 阶段性报告
B、 需求评估
C、 总结
D、 都不正确
正确答案: B
解析:
8、DFD用于描述系统的( )。
A、 数据结构
B、 控制流程
C、 基本加工
D、 软件功能
正确答案: D
解析:
二、判断题 (共5题,10分)
1、____软件需求规格说明书可作为可行性研究的依据。
正确答案: 错误
解析:
2、____画数据流图时可以加少量的控制流,使加工之间有时序的关系。
正确答案: 错误
解析:
3、____在数据流图中,带有箭头的线段表示的是控制流。
正确答案: 错误
解析:
4、____需求分析阶段的任务是确定软件的功能。
正确答案: 正确
解析:
5、____软件需求分析阶段要确定软件系统要“做什么”。
正确答案: 正确
解析:
三、简答题 (共2题,20分)
1、需求分析的任务是什么?怎样理解“做什么”和“怎么做”?
正确答案:
需求分析的基本任务是要准确地理解旧系统、定义新系统的目标,为了满足用户需要,回答“系统必须做什么”的问题,即确定系统必须完成哪些工作,对新系统提出完整、准确、清晰、具体的要求。
具体任务是:明确问题定义、导出软件的逻辑模型、编写软件需求规格说明书。
“做什么”,即深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统元素的接口细节,定义软件的其他有效性需求。
“怎么做”,即着手软件需求的实现:用比较抽象概括的方式确定目标系统如何完成预定的任务,确定系统的物理模型。
解析:
2、数据流图的作用是什么?它有哪些基本成分?
正确答案:
数据流图是用于表示系统逻辑模型的一种工具。它从数据传递和加工的角度,以图形的方式描述数据在系统中流动和处理过程。它表示了系统内部信息的流向以及系统的逻辑处理功能。
数据流图的主要成分有四种:数据流、数据存储、加工、数据流的源点和终点。
解析:
第四章 总体设计作业
一、单选题(共5题,62.5分)
1、软件结构图的形态特征能反映程序重用率的是( )。
A、 深度
B、 宽度
C、 扇入
D、 扇出
正确答案: C
2、概要设计的目的是确定整个系统的( )。
A、 规模
B、 功能及模块结构
C、 费用
D、 测试方案
正确答案: B
3、耦合是对软件不同模块之间互连程度的度量。各种耦合从强到弱的排列为( )。
A、 内容耦合,控制耦合,数据耦合,公共环境耦合
B、 内容耦合,控制耦合,公共环境耦合,数据耦合
C、 内容耦合,公共环境耦合,控制耦合,数据耦合
D、 控制耦合,内容耦合,数据耦合,公共环境耦合
正确答案: C
4、当一个模块直接使用另一个模块的内部数据时,这种模块之间的耦合为( )。
A、 数据耦合
B、 公共耦合
C、 标记耦合
D、 内容耦合
正确答案: D
5、数据耦合和控制耦合相比,则( )成立。
A、 数据耦合的耦合性强
B、 控制耦合的耦合性强
C、 两者的耦合性相当
D、 两者的耦合性需要根据具体情况分析
正确答案: B
二、判断题(共2题,25分)
1、____如果在需求分析阶段采用了结构化分析方法,则软件设计阶段就应采用结构化设计方法。
正确答案: 正确
2、____概要设计与详细设计之间的关系是全局和局部的关系。
正确答案: 正确
三、简答题(共1题,12.5分)
1、什么是软件的概要设计?概要设计阶段完成的主要任务是什么?
总体设计又称概要设计,是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构和数据库模式。
正确答案: 总体设计又称概要设计,是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构和数据库模式。
总体设计测验
一、单选题 (共7题,35分)
1、衡量模块独立性的标准是( )。
A、 耦合的类型
B、 内聚的类型
C、 模块信息的隐藏性
D、 耦合性和内聚性
正确答案: D
解析:
2、概要设计的目的是确定整个系统的( )。
A、 规模
B、 功能及模块结构
C、 费用
D、 测试方案
正确答案: B
解析:
3、软件设计是把( )转换为软件表示的过程。
A、 软件需要
B、 系统分析
C、 数据库
D、 软件代码
正确答案: A
解析:
4、概要设计的主要成果是( )。
A、 用户的界面需求
B、 用户的分析方案
C、 概要设计说明书
D、 系统总体方案
正确答案: C
解析:
5、数据结构设计也是概要设计的重要内容,主要是进行数据的( )设计。
A、 逻辑
B、 存取
C、 用户视图
D、 索引
正确答案: A
解析:
6、下面不属于软件设计原则的是( )。
A、 抽象
B、 模块化
C、 自底向下
D、 信息隐藏
正确答案: C
解析:
7、概要设计与详细设计衔接的图形工具是( )。
A、 DFD图
B、 SC图
C、 程序流程图PFD
D、 PAD图
正确答案: B
解析:
二、判断题 (共5题,25分)
1、____一个模块的作用范围应该大于该模块的控制范围。
正确答案: 错误
解析:
2、____模块间的耦合性越强,则模块的独立性越弱。
正确答案: 正确
解析:
3、____在设计模块时,应使一个模块尽量包括多个功能。
正确答案: 错误
解析:
4、____软件结构图可以利用数据流图映射出来。
正确答案: 正确
解析:
5、____在结构化设计过程中首先要确认DFD。
正确答案: 正确
解析:
三、简答题 (共2题,40分)
1、软件设计应遵循的原则是什么?
正确答案:
软件设计中一般应遵循以下原则:模块化、抽象、信息隐蔽与局部化、一致性、完整性和可验证性。
解析:
2、启发设计规则有哪些?
正确答案:
(1)模块功能的完善化;(2)消除重复功能,改善软件结构;(3)模块规模应该适中;(4)模块的深度、宽度、扇出和扇入都应适当;(5)模块的作用范围应该在控制范围之内;(6)力争降低模块接口的复杂程度;(7)设计单入口、单出口的模块;(8)模块功能应该可以预测。
解析:
第五章 详细设计作业
一、单选题(共2题,40分)
1、借助于软件工具,可将( )容易地转换为高级语言源程序。
A、 程序流程图
B、 N-S图
C、 PAD图
D、 判定表
正确答案: C
2、程序的三种基本结构是( )。
A、 过程、子过程和子程序
B、 递归、堆栈和队列
C、 顺序、选择和重复
D、 调用、返回和转移
正确答案: C
二、判断题(共2题,40分)
1、详细设计也称模块设计。
正确答案: 正确
2、在数据代码设计时,应可能设计字母和数字混合代码。
正确答案: 错误
三、简答题(共1题,20分)
1、数据输入界面设计的主要原则有哪些?
在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户的记忆负担、尽可能减少输入量并实现自动输入; 对共同的输入设置默认值; 使用代码或缩写; 自动填入已输入过的内容;列表式输入; 数据分组输入。
正确答案: 在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户的记忆负担、尽可能减少输入量并实现自动输入; 对共同的输入设置默认值; 使用代码或缩写; 自动填入已输入过的内容;列表式输入; 数据分组输入。
详细设计测验
一、判断题 (共3题,15分)
1、在数据代码设计时,应尽量让一条代码代表多个信息。
正确答案: 错误
解析:
2、在输出界面设计时,要尽可能使用代码或缩写,以求简洁。
正确答案: 错误
解析:
3、详细设计评审应尽可能和概要设计评审一同进行。
正确答案: 错误
解析:
二、单选题 (共3题,15分)
1、软件详细设计的主要任务是确定每个模块的( )。
A、 算法和使用的数据结构
B、 外部接口
C、 功能
D、 程序
正确答案: A
解析:
2、不属于详细设计工具的是( )。
A、 DFD图
B、 PAD图
C、 PDl
D、 N-S图
正确答案: A
解析:
3、下面描述中,符合结构化程序设计风格的是( )。
A、 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B、 模块只有一个入口,可以有多个出口
C、 注重提高程序的执行效率
D、 不使用goto语句
正确答案: A
解析:
三、简答题 (共2题,10分)
1、软件的详细设计阶段完成的主要任务是什么?
正确答案:
(1)算法设计;(2)数据结构设计;(3)模块接口细节设计;(4)测试用例设计;(5)数据库物理设计;(6)数据代码设计;(7)其他设计;(8)编写详细设计说明书并进行评审。
解析:
2、代码设计的原则有哪些?
正确答案:
代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。
解析:
软件编码作业
一、单选题(共4题,50分)
1、在编码中首先要考虑的是( )。
A、 程序的执行效率
B、 程序的可读性
C、 程序的一致性
D、 程序的安全性
正确答案: B
2、序言性注释应置于文件或模块的( )位置。
A、 起始
B、 结束
C、 中间
D、 起始和中间
正确答案: A
3、选择程序设计语言不应该考虑的是( )。
A、 应用领域
B、 语言的功能
C、 用户的要求
D、 用户的使用水平
正确答案: B
4、最早用于科学计算的程序设计语言是( )。
A、 PROLOG
B、 Smalltalk
C、 FORTRAN
D、 COBOL
正确答案: C
二、判断题(共4题,50分)
1、使用括号改善表达式的清晰性。
正确答案: 正确
2、尽可能对程序代码进行优化。
正确答案: 错误
3、不要进行浮点数的相等比较。
正确答案: 正确
4、利用数据类型对数据值进行防范。
正确答案: 正确
第六章 软件编码测验
一、单选题 (共10题,50分)
1、不属于序言性注释内容的是( )。
A、 模块设计者
B、 修改日期
C、 程序的整体说明
D、 语句功能
正确答案: D
解析:
2、如果编写系统软件,可选用的语言是( )。
A、 FoxPro
B、 COBOL
C、 C
D、 FORTRAN
正确答案: C
解析:
3、与编程风格有关的因素不包括( )。
A、 源程序文档化
B、 语句构造
C、 输入输出
D、 程序的编译效率
正确答案: D
解析:
4、功能性注释的主要内容不包括( )。
A、 程序段的功能
B、 模块的功能
C、 数据的状态
D、 语句的功能
正确答案: B
解析:
5、对建立良好的编程风格,下面描述正确的是( )。
A、 程序应简单、清晰、可读性好
B、 符号名的命名只要符合语法即可
C、 充分考虑程序的执行效率
D、 程序的注释可有可无
正确答案: A
解析:
6、源程序中应包含一些内部文档,以帮助阅读和理解程序,源程序的内部文档通常包括合适的标识符、注释和( )。
A、 程序的布局组织
B、 尽量不使用或少用goto语句
C、 检查输入数据的有效性
D、 设计良好的输出报表
正确答案: A
解析:
7、编制一个好的程序应强调良好的编程风格,例如,选择标识符的名字时应考虑( )。
A、 名字长度越短越好,以减少源程序的输入量
B、 多个变量共用一个名字,以减少变量名的数目
C、 选择含义明确的名字,以正确提示所代表的实体
D、 尽量用关键字作名字,以使名字标准化
正确答案: C
解析:
8、以下关于编程风格的叙述中,不应提倡的是( )。
A、 使用括号以改善表达式的清晰性
B、 用计数方法而不是用文件结束符判断输入的结束
C、 一般情况下,不要直接进行浮点数的相等比较
D、 使用有清晰含义的标识符
正确答案: B
解析:
9、在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在人们更重视程序的( )性。
A、 技巧性
B、 保密性
C、 一致性
D、 可理解性
正确答案: D
解析:
10、为了提高易读性,源程序内部应加功能性注释,用于说明( )。
A、 模块总的功能
B、 程序段或语句的功能
C、 模块参数的用途
D、 数据的用途
正确答案: B
解析:
二、判断题 (共8题,40分)
1、对递归定义的数据结构不要使用递归定义的过程。
正确答案: 错误
解析:
2、不要修改不好的程序,要重新编写。
正确答案: 正确
解析:
3、应尽可能多地使用临时变量。
正确答案: 错误
解析:
4、用计数方法而不是用文件结束符判别批量数据输入的结束。
正确答案: 错误
解析:
5、程序中的注释是可有可无的。
正确答案: 错误
解析:
6、使用有意义的标识符。
正确答案: 正确
解析:
7、应尽量把程序编写的短一些。
正确答案: 错误
解析:
8、应尽量使用goto语句。
正确答案: 错误
解析:
三、简答题 (共2题,10分)
1、良好的编码风格包括哪几方面?
正确答案: 1)源程序文档化 2)数据说明 3)语句构造 4)输入与输出 5)效率。
解析:
2、在软件开发时,应根据哪些因素选择程序设计语言?
正确答案: (1)项目的应用领域。(2)用户的要求。(3)软件开发工具。(4)算法和数据结构的复杂性。(5) 软件开发人员的知识。(6) 系统的可移植性要求。
解析:
第七章 软件测试作业
一、单选题(共4题,50分)
1、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由( )组成。
A、 测试输入数据
B、 预期的测试输出数据
C、 测试输入与预期的输出数据
D、 按照测试用例设计方法设计出的数据
正确答案: C
2、一个成功的测试是( )。
A、 发现错误
B、 发现至今尚未发现的错误
C、 没有发现错误
D、 证明发现不了错误
正确答案: B
3、单元测试阶段主要涉及( )的文档。
A、 需求设计
B、 编码和详细设计
C、 详细设计
D、 概要设计
正确答案: D
4、软件调试的目的是( )。
A、 发现错误
B、 改正错误
C、 改善软件的性能
D、 挖掘软件的潜能
正确答案: B
二、判断题(共4题,50分)
1、测试是为了验证该软件以正确地实现了用户的需求。
正确答案: 错误
2、白盒测试法是根据程序的功能来设计测试用例的。
正确答案: 错误
3、确定测试计划是在需求分析阶段制定的。
正确答案: 正确
4、单元测试是在编码阶段完成的。
正确答案: 正确
软件测试测验
一、单选题 (共8题,40分)
1、测试和调试最大的不同在于( )。
A、 操作者的心理状态不同
B、 它们的行为取向不同
C、 使用的工具不同
D、 运用的方法不同
正确答案: A
解析:
2、白盒法和黑盒法最大的不同在于( )。
A、 测试用例设计方法不同
B、 测试的任务不同
C、 应用的测试阶段不同
D、 基于的知识集不同
正确答案: A
解析:
3、检查软件产品是否符合需求定义的过程称为( )。
A、 确认测试
B、 集成测试
C、 验证测试
D、 验收测试
正确答案: A
解析:
4、进行软件测试的目的是( )。
A、 尽可能多地找出软件中的错误
B、 缩短软件的开发时间
C、 减少软件的维护成本
D、 证明程序没有缺陷
正确答案: A
解析:
5、在进行单元测试时,常用的方法是( )。
A、 采用白盒测试,辅之以黑盒测试
B、 采用黑盒测试,辅之以白盒测试
C、 只使用白盒测试
D、 只使用黑盒测试
正确答案: A
解析:
6、为了提高测试的效率,应该( )。
A、 随机地选取测试数据
B、 取一切可能的输入数据作为测试数据
C、 在完成编码以后制定软件的测试计划
D、 选择发现错误可能性大的数据作为测试数据
正确答案: D
解析:
7、下列逻辑覆盖标准中,差错能力最强的是( )。
A、 语句覆盖
B、 判定覆盖
C、 条件覆盖
D、 条件组合覆盖
正确答案: D
解析:
8、白盒测试方法一般适合于( )测试。
A、 单元
B、 系统
C、 集成
D、 确认
正确答案: A
解析:
二、判断题 (共5题,25分)
1、发现错误多的程序模块,残留在模块中的错误也多。
正确答案: 正确
解析:
2、黑盒法是根据程序的内部逻辑来设计测试用例的。
正确答案: 错误
解析:
3、集成测试计划是在概要设计阶段制定的。
正确答案: 正确
解析:
4、集成测试工作最好由不属于该软件开发组的软件设计人员承担。
正确答案: 正确
解析:
5、为了提高软件的测试效率,测试工作需要有测试工具的支持。
正确答案: 正确
解析:
三、简答题 (共3题,15分)
1、为什么要进行软件测试?软件测试要以什么目标和原则?
正确答案: 软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量。软件测试是软件开发过程中的一个重要阶段,是软件产品正式投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的结果也是分析软件可靠性的重要依据。
在软件测试中,应注意以下指导原则:
(1)所有测试都应追溯到需求
(2)坚持“尽早地和不断地进行软件测试”。
(3)测试用例应由输入数据和预期的输出结果两部分组成。
(4)程序员应避免测试自己的程序。
(5)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
(6)充分注意测试中的群集现象。
(7)严格执行测试计划,排除测试的随意性。
(8)应当对每个测试结果做全面检查。
(9)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。
(10)应长期保留所有测试用例。保留测试用例有助于以后修改程序后的回归测试。
解析:
2、软件测试包括哪几个过程?测试过程中包括哪些数据源?
正确答案: 测试过程分为4个步骤,即单元测试、组装测试、确认测试和系统测试。
数据源有:
(1)软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。
(2)测试配置:包括测试计划、测试用例、测试驱动程序等。
(3)测试工具:测试工具为测试的实施提供某种服务,以减轻测试过程中的手工劳动,提高测试效率。
解析:
3、黑盒测试法与白盒测试法的本质区别是什么?它们的使用场合有何不同。
正确答案: 黑盒测试法与白盒测试法的根本区别是设计测试用例的方法不同。前者是测试产品的功能,后者是测试产品的内部结构和处理过程。
通过黑盒测试主要发现以下错误:
(1)是否有不正确或遗漏了的功能。
(2)界面是否有错,能否正确地接受输入数据,能否产生正确的输出信息。
(3)是否有数据结构或外部数据库访问错误。
(4)性能是否满足要求。
(5)是否有初始化或终止性错误。
白盒测试法是一种程序级的微观上的测试,不适合于大单元、大系统的测试,主要用于很小单元的测试,以及从事软件底层工作、生产构件的测试人员使用。
解析:
选择判断
部署图 是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。
多态性 意味着一个操作 在不同的类中可 以有不同的实现方式。
封装 是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。
类图 是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
类图 是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
软件工程 是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要索
顺序图 描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
用例图 定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。
用例图 是从用户使用系统的角度描述系统功能的图形表达方法。
CMM模型将软件过程的成熟度分为5个等级。在 优化级 使用定 量分析来不断地改进和管理软件过程。
Jackson 方法根据 数据结构 来导出程序结构。
SA法的主要描述手段有 DFD图、数据词典、加工说明
UML是Unified Modeling Language 的缩写。
UML是软件开发中的一个重要工具,主要应用于 基于对象的面向对象的方法
白盒测试法是根据程序的 内部逻辑 来设计测试用例的方法。
包含风险分析的软件工程模型是 螺旋模型
成功的测试是指运行测试用例后 发现了程序错误
程序语言的特性包括 算法特性
当算法中需要用一个模块去计算多种条件的复杂组合,并根据这些条件完成适当的功能时,从供选择的答案中,选出合适的描述工具。 判定表
动态模型的描述工具是 状态图
对象模型的描述工具是 对象图
功能模型中所有的 数据流图 往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一步的说明。
关联是建立 类 之间关系的一种手段。
黑盒测试方法根据 软件要完成的功能 设计测试用例。
黑盒测试是从 用户 观点的测试,白盒测试是从 开发人员 观点的测试。
画分层DFD图的基本原则有 子、父图平衡的原则
集成测试的主要方法有两个,一个是 渐增式测试方法 , 一个是 非渐增式测试方法
进行需求分析可使用多种工具,但 PAD 图 是不适用的。
螺旋模型综合了 瀑布模型和演化模型 的优点,并增加了风险分析。
每个对象可用它自己的- -组属性和它可以执行的一组 操作 来表征。
面向对象程序设计语言不同于其他语言的主要特点是 继承性
面向对象程序设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的 继承性
面向对象的测试与创痛测试方法的区别 测试对象的不同
面向对象的动态模型中,每张状态图表示 某一个类 的动态行为。
面向对象的分析方法主要是建立3类模型,即对象模型、动态模型、功能模型
面向对象的实现主要包括 把面向对象设计用某种程序设计语言书写为面向对象程序,测试并调试面向对象的程序
面向对象的主要特征除了对象唯- -性、封装、继承外,还有 多态性
面向对象分析的首要工作是建立 问题的对象模型
面向对象分析阶段建立的3个模型中,核心的模型是 对象 模型。
面向对象分析是对系统进行 需求建模 的一种方法。
面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统。一个类的上层可以有父亲,下层可以有子类。这种层次结构系统的一个重要性质是 继承性 ,一个类可获得其父亲的全部描述(数据和操作)
面向对象设计00D模型的主要部件中,通常不包括 通信部件
面向对象设计阶段的主要任务是系统设计和 对象设计
面向对象设计时,对象信息的隐藏主要是通过 对象的封装性 实现的。
面向数据流的软件设计方法可将 数据流 映射成软件结构。
模块的独立性是由内聚性和耦合性来度量的,其中内聚性是 模块的功能强度
模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的 内聚性和耦合性
汽车有一个发动机,汽车和发动机之间的关系是 整体部分 关系。
软件测试的目的是 尽可能多的发现软件系统中的错误
软件测试的目的是尽可能发现软件中的错误,通常 单元测试 是代码编写阶段可进行的测试,它是整个测试工作的基础。
软件测试可能发现软件中的 错误 , 但不能证明软件 没有错误
软件的集成测试工作最好由 不属于该软件开发组的负责人 承担,以提高集成测试的效果。
软件工程的三要素是 方法,工具和过程
软件工程中描述生命周期的瀑布模型一般包括计划、 需求分析、设计、编码、 测试 、 维护等几个阶段。
软件过程是 软件开发活动的集合
软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是 编码阶段
软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程称 面向对象分析
软件生命周期模型不包括 用例模型
软件实现是软件产品由概念到实体的一个关键过程,它将 软件设计 的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。虽然软件的质量取决于软件设计,但是规范的程序设计风格将会对后期的软件维护带来不可忽视的影响。
软件危机的主要原因是 软件本身的特点及开发方法
软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及 需求分析评审
软件需求规格说明书的内容不应该包括 对算法的详细过程描述
使用白盒测试方法时确定测试数据应根据 程序的内部逻辑 和指定的覆盖标准。
数据流图是进行软件需求分析的常用图形工具,其基本图形符号是 加工、数据流、数据存储和外部实体
所有的对象可以成为各种对象类,每个对象类都定义了一组 方法
通过执行对象的操作可改变对象的属性,但它必须通过 消息 的传递。
为了提高模块的独立性,模块之间最好是 数据耦合
下列不属于面向对象的要素有 分类性
下列是面向对象设计方法中有关对象的叙述,其中 对象的属性集合是它的特征表示 是正确的。
下列说法中正确的是 20世纪60年代提出了软件工程概念
下面所列的性质中, 可视化 不属于面向对象程序设计的特性。
下述任务中,不属于软件工程需求分析阶段的是 确定软件系统的运行平台
需求分析的主要方法有 结构化分析方法
需求工程的主要目的是 解决系统是“做什么的问题”
需求规格说明书的作用不应包括 软件可行性研究的依据
验收测试的任务是验证软件的 有效性
应该在 建立动态模型和功能模型之后 , 确定对象类中应有的服务。
应用执行对象的操作可以改变该对象的 属性
用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为 CASE 工具
在E-R模型中,包含以下基本成分 实体、属性、关系
在结构化分析方法中,用以表达系统内数据的运动情况的工具是 数据流图
在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是 状态图
在面向数据流的软件设计方法中,一般将信息流分为 变换流和事务流
在软件测试中,逻辑覆盖标准主要用于 白盒测试方法
在下列选项中,软件工程材料 不属于软件工程学科所要研究的基本内容。
在下列选项中,有形性与可控性不是软件的特征
在下面的叙述中哪一个不是软件需求分析的任务? 结构化程序设计
在需求分析之前有必要进行 可行性分析 工作。
增量模型本质上是一种 非整体开发模型
只有类的共有界面的成员才能成为使用类的操作,这是软件设计的 信息隐藏 原则。
状态图包括 (所有以上选项:类的状态和状态之间的转换、触发类的动作的事件、类执行的动作)
HIPO法既是需求分析方法,又是软件设计方法。
白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。
部署图描述系统硬件的物理拓扑结构以及在此结构上执行的软件。
测试用例由输人数据和预期的输出结果两部分组成。
单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。
发现错误多的模块,残留在模块中的错误也多。
非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
功能模型是类似编译器之类系统的主要模型。
好程序的一个重要标准是源程序代码的逻辑简明清晰、易读易懂。
进行程序设计语言的选择时,首先考虑的是应用领域。
类的设计过程包括:确定类、确定关联类、确定属性和识别继承关系。
类是指具有相同或相似性质的对象的抽象,类的具体化就是对象。
类图中的角色是用于描述该类在关联中所扮演的角色和职责的。
良好的面向对象程序设计风格,既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念(如继承性)而必须遵循的一些新准则。
面向对象的分析过程主要包括3项内容:理解、表达和验证。
面向对象的继承性是子类自动共享父类数据结构和方法的机制。
面向对象分析方法认为系统是对象的集合,是以功能和数据为基础的。
面向对象分析和设计活动是一个多次反复迭代的过程。
面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。
面向对象设计的结果,既可以用面向对象语言,也可以用非面向对象语言实现。
面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境 下的设计模型。
模型是对现实的简化,建模是为了更好地理解所开发的系统。
软件测试的目的是尽可能多地发现软件中存在的错误,将它作为纠错的依据。
软件工程学科出现的主要原因是软件危机的出现。
软件过程改进也是软件工程的范畴。
软件设计中设计复审和设计本身一样重要,其主要作用是避免后期付出高代价。
顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。
信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。
一般来说,应该尽量选用面向对象语言来实现面向对象分析、设计的结果。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
用例模型的基本组成部件是用例、角色和用例之间的联系。
用例之间有扩展、使用、组合等几种关系。
用面向对象方法开发的软件系统,可维护性好。
用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。
在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有信息隐藏。
简答题
1.什么是软件危机?什么原因导致了软件危机?
软件危机:①经费超出预算,项目一再拖延。②不重视需求,开发的软件不能满足用户的要求,项目成功率低。③没有规范的软件工程方法,软件可维护性差、软件质量差、可靠性差。④开发工具落后,手工方式,开发效率低。
软件危机原因:①所有导致软件危机的原因,都与软件本身的产品特点相关 ②软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软件产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升高 ③软件产品不能实现大规模复用,这导致了软硬件生产效率的不同 ④软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法做到准确估算,生产过程不易控制⑤软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得多
2.对比瀑布模型、原型模型、增量模型和螺旋模型。
①瀑布模型:主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;存在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作。②原型模型:需求分析入手快速、表达直观、容易交流。重点解决瀑布模型的需求分析入手难的问题。③增量模型:对于需求复杂的系统,采用分块开发、逐步集成的开发策略。增量体现了演进、迭代思想,每一块就是一个增量。每个增量是一次迭代。增量模型的新版本叫做“极限编程(XP)”。④螺旋模型:融合了上述3种模型,融进了循环往复、强化了演进迭代的思想,增加了风险控制环节。但是,风险分析的正确性是左右软件演进的关键因素。
3.为什么说“高内聚、低耦合”的设计有利于提高系统的独立性?
内聚和耦合往往密切相关,模块的高内聚通常意味着低耦合。低耦合因为模块之间的耦合程度越低,相互影响就越小,发生异常后产生连锁反应的概率就越低;在修改一个模块时,低耦合的系统可以把修改范围尽量控制在最小的范围内;对一个模块进行维护时,其他模块的内部程序的正常运行不会受到较大的影响。
4.什么是黑盒测试?常用的黑盒测试方法?
黑盒测试是依据软件的需求规格说明书,检查程序功能是否满足需求的要求,主要的黑盒测试方法有:等价类划分、边界值分析、错误推测法、因果图法和场景法。
什么是白盒测试?常用的白盒测试方法?
白盒测试主要针对于程序内部逻辑和数据流程的测试,因此白盒测试的测试用例设计需要
了解程序的内部逻辑。常用的白盒测试方法主要有逻辑覆盖法、基本路径测试法。
5.黑盒测试与白盒测试比较
①黑盒测试:优点:适用于各阶段测试;从产品功能角度测试;易入手生成测试数据;缺点:某些代码得不到测试;如果规格说明有误,则无法实现;易进行充分性测试;性质:是一种确认技术,回答“我们在构造的是一个正确的系统吗?”
②白盒测试:优点:可构成测试数据使特定程序部分得到测试;有一定的充分性度量手段;可有较多工具支持;缺点:通常不易生成测试数据;无法对未实现规格说明的部分进行测试;工作量大,通常只用于单元测试,有应用局限;性质:是一种验证技术,回答“我们是在正确地构造一个系统吗?”
6.与传统的软件工程方法相比,面向对象的软件工程方法有哪些优点?
①符合人类的思维习惯。面向对象的软件工程方法最重要的特点就是把事物的属性和操作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,它更注重人类在认识客观世界时循序渐进、逐步深化的特点。它主张在软件开发的过程中多次反复迭代的思想。
②可复用性好。面向对象的软件工程方法由于采用了继承和多态的机制,极大地提高了代码的可复用性。
③稳定性好。面向对象的软件工程方法基于对象的概念。当目标系统的需求发生变化时,只要实体及实体之间的联系不发生变化,就不会引起软件系统结构的变化,而只需要对部分对象进行局部修改即可。
④可维护性好。由于利用面向对象软件工程方法开发的软件系统稳定性和可复用性好,而且采用了封装和信息隐藏机制,易于对局部软件进行调整,因此系统的可维护性比较好。
7.面向对象程序设计语言主要有哪些技术特点?
支持类与对象概念的机制。
实现整体——部分结构的机制。
实现一般——特殊结构的机制。
实现属性和服务的机制。
类型检查。
类库——大多数面向对象程序设计语言都提供一个实用的类库。
效率。
持久保存对象。
参数化类。
开发环境——软件工具和软件工程环境对软件生产率有很大影响。
8. 面向对象的测试和传统开发方法的测试有什么不同?
①二者都可以分成4个阶段进行。但传统测试的最小单元是模块,而在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块。
②因为面向对象软件没有一个层次的控制结构,所以传统的自顶向下和自底向上的集成策略意义不大。每次将一个操作集成到类中常常行不通,这是因为在构成类的各个部件之间存在各种直接的和非直接的交互。对于面向对象系统的集成测试,存在两种不同的测试策略。
9. UML有多少图,分别有什么作用?
UML的模型是用图来表示的,共有5类9种图。
(1)用例图:用于表示系统的功能,并指出各功能的执行者。
(2)静态图:包括类图、对象图及包,表示系统的静态结构。
(3)行为图:包括状态图和活动图,用于描述系统的动态行为和对象之间的交互行为。
(4)交互图:包括顺序图和协作图,用于描述系统的对象之间的动态合作关系。
(5)实现图:包括构件图和配置图,用于描述系统的物理实现。
第一章
-
与计算机硬件相比,计算机软件有哪些特点?
无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了解它的功能、特性和质量等。
人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过程中,渗透了大量的脑力劳动。
不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问题。
软件的开发和运行必须依赖于特定的计算机系统环境。
具有可复用性。
2.软件就是程序吗?如何定义软件?
人们经过长期的实践已经逐步认识到,软件程序,程序只是软件的关键要素。普遍能被
接受的观点是:软件=程序+数据+文档。 -
为什么说软件工程的发展可以在一定程度上解决软件危机的各种弊端?
软件工程的提出是为了解决软件危机所带来的各种弊端。具体地讲,软件工程的目标主要包括以下几点。
使软件开发的成本能够控制在预计的合理范围内。
使软件产品的各项功能和性能能够满足用户需求。
提高软件产品的质量。
提高软件产品的可靠性。
使生产出来的软件产品易于移植、维护、升级和使用。
使软件产品的开发周期能够控制在预计的合理时间范围内。
5.请简述软件工程研究的内容。
软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。
软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。
常用的软件开发模型有瀑布模型、选代模型、增量模型和原型模型等。
软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer和 RationalRose等。 -
请简述软件工程的三要素。
软件工程的三要素是从计算机科学的观点来看软件工程,即从软件开发的技术层面来看有过程、方法和工具这三要素。
“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量和及时地开发出软件。
“方法”为软件开发提供“如何做”的技术。它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列活动的做法,如经常说的面向结构、面向对象、面向组件等开发方法,以及项目管理中的估算、度量、计划等管理方法。软件工程以介绍方法为主。
“工具”可为过程和方法提供自动的或半自动的支持。这些工具既包括软件,也包括硬件。软件工具包括编程、建模、管理等开发工具。通过网络环境把这些软件工具集成起来搭建一个能够支持团队开发的平台,称为计算机辅助软件工程,即CASE。CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境。 -
请简述软件工程的目标、过程和原则。
目标、过程和原则是一切工程的三维框架,这里是以工程的观点来看待软件开发。•软件工程的目标:降低成本、及时交付高质量的软件产品(高质量、高效率、高效益)。o实现目标的过程即完成产品加工的过程,包括:基本过程、支持过程和组织过程。进行过程应遵守的原则:原则就是过程中的轨道约束,包括:选取适宜的开发范型、采用合适的设计方法、提供高质量的工程支持、重视开发过程的管理。 -
请简述软件工程的基本原则。
软件工程的基本原则如下。
将软件的生命周期划分为多个阶段,对各个阶段实行严格的项目管理。
坚持阶段评审制度,以确保软件产品的质量。
实施严格的产品控制,以适应软件规格的变更。在软件开发的过程中,用户需求很可能不断地发生变化。
采用现代的程序设计技术。
开发出来的软件产品应该能够清楚地被审查。
合理地安排软件开发小组的人员,并且开发小组的人员要少而精。
不断地改进软件工程实践。 -
请简述现代软件工程与传统软件工程显著的区别和改进。
传统的软件工程是基于结构化的软件开发方法,而现代软件工程是以面向对象技术为标志。
不仅在编程技术上有很大的改进,而且在分析、设计等整个开发过程中,采用面向对象的思维方式,更加完整、自然地反映客观世界。
采用架构技术,开发效率、产品质量得到了极大提高。
更注重团队开发和管理,融入更多、更新的管理理念和手段,如RUP模型、XP模型、过程改进、能力成熟度模型、配置管理等。
第二章
1.如何理解软件生命周期的内在特征?
软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,再到最终该产品被市场淘汰的全过程。软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。由于每个阶段的任务相对于总任务难度会大幅度降低,因此在资源分配、时间把握和项目管理上都会比较容易控制。应该合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务。
3.当需求不能一次搞清楚,且系统需求比较复杂时应选用哪种开发模型比较适合?
开发模型不是孤立或排斥的,它们之间需要相互借鉴和参考。螺旋模型是一种综合性的模
型,适和于较复杂的系统。 -
XP是一种什么样的模型?
XP是现代版的增量模型,特点是客户参与、适应变化、测试驱动、以代码为核心。实行XP的条件如下。
企业具有较高的能力成熟度,具有团队开发环境和配套的测试工具。
软件结构是开放的,增量可随意整合。
开发团队拥有“系统隐喻”。
6.每个软件企业遵循的软件开发过程都是一样的吗?
任何软件过程只是给软件开发组织的一个参考,并非清规戒律。企业规划软件过程要适合
企业的实际情况,并且不是一成不变,要随着企业的发展、环境的变化和项目的性质来改进软件过程。RUP就是一个可裁剪的软件过程模板。
7. 请简述软件过程。
软件过程就是软件产品的加工过程,其本质就是将“客观世界”映射(虚拟)到“计算机世
界”,即从抽象到具体的逐步细化过程。系统分析就是对客观世界的抽象,中间要经过分析模型、设计模型的逐步细化(具体化),最终的具体结果就是计算机世界里的代码。
11. 假设你要开发一个软件,它的功能是把73624.9385这个数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出这样选择的理由。
对这个软件的需求很明确,实现开平方功能的算法也很成熟。因此,既无须通过原型模型来分析需求也无须用原型模型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
第三章
1.如何理解需求分析的作用和重要性。
一般情况下,用户并不熟悉计算机的相关知识,而软件开发人员对相关的业务领域也不甚
了解,用户与开发人员之间对同一问题理解的差异和习惯用语的不同往往会为需求分析带来很大的困难。因此,开发人员和用户之间充分和有效的沟通在需求分析的过程中至关重要。
2. 如何理解结构化需求分析方法的基本思想。
结构化需求分析是一种面向数据流的需求分析方法。它基于“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。
“分解”是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解为若干个小问题,然后分别解决。
最顶层描述了整个目标系统,中间层将目标系统划分为若干个模块,每个模块完成一定的功能,而最底层是对每个模块实现方法的细节性描述。可见,在逐层分解的过程中,起初并不考虑细节性的问题,而是先关注问题最本质的属性,随着分解自顶向下进行,才逐渐考虑越来越具体的细节。这种用最本质的属性表示一个软件系统的方法就是“抽象”。
3.如何进行结构化需求分析,其建模方法都有哪些?
结构化分析的具体步骤如下。
建立当前系统的“具体模型”:系统的“具体模型”就是现实环境的真实写照,这样的表达与当前系统完全对应,用户容易理解。
抽象出当前系统的逻辑模型:分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得当前系统的“逻辑模型”。
建立目标系统的逻辑模型:分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”。
为了对目标系统进行完整的描述,还需要考虑人机界面和其他一些问题。
在结构化分析中经常用到的建模方法主要有以下几种。
数据流图。
实体关系。
控制流图。
状态转换图。
- 为什么需求分析特别重要?
需求分析特别重要,是因为以下几点。
许多大型应用系统的失败,最后均归结到需求分析:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。
需求分析的输出文档是《用户需求报告》。它既是软件生命周期中的第一个里程碑,又是客户、软件开发人员和项目管理人员三者必须遵守的一根基线,是三者共同工作的基础,是项目Alpha测试和Beta测试的准则,是供方交付产品和需方验收产品的依据。
需求分析要占用整个软件开发时间或工作量的30%左右。
需求获取中的错误,属于软件开发中的早期错误,它会在后续的设计和实现中进行发散式的传播。
根据以上4个原因,IT企业的高层经理对需求分析特别重视,常常派经验最丰富的人员去作项目需求。正因为如此,“系统分析员”才是软件行业中最高的技术职称。 - 需求分析的目的和目标是什么?
需求分析的目的:弄清用户对系统的细节要求,完整、准确、清晰、具体地回答目标系统“做什么”。
需求分析的目标:是对用户提出的软件功能、性能等应用问题及其环境进行分析与理解,采用一系列的分析方法和技术,把系统可行性分析阶段产生的系统规格说明书和项目规划逐步精确化、完全化、一致化,借助于当前系统的逻辑模型导出目标系统的逻辑模型,最终形成需求规格说明文档的过程。
6.需求开发经过哪些步骤?每个步骤有何作用?
通过4项具体活动达到目标:需求获取、需求分析、需求说明、需求验证。
需求获取:即调查软件需求,需求是用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。
需求分析:分析建模也称需求建模,建模是对现实世界进行抽象的过程。它通过符号和文字说明来描述系统模型,使用户和开发者之间建立共同的语言基础,消除理解歧义。
需求说明:编写需求文档,也称编写需求规格说明书,或称需求说明、需求描述。需求说明书是需求阶段的最终成果,也是需求分析阶段复审的依据。它是用户领域专家、软件分析师、软件设计师共同交流的途径和媒介;是交付给用户文档的一部分。
需求验证:即需求评审。根据需求说明书,分析师、设计师、客户会评审文档,对需求的正确性、一致性、完整性、无二义性进行评审、确认。 - 需求分析的难点在哪里?
需求分析的难点:在系统的功能、性能和接口方面,开发者与客户要达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。万一需求有一点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定。要知道,合同是具有法律效力的。
8.需求分析的理论基础有哪些?
需求分析的理论基础:什么是软件需求、软件需求需要量化、需求是一个过程、需求过程中的角色、需求过程是一个迭代的过程、需求来源。
9.为什么说需求过程是一个迭代过程?
由于人们对客观事物的认识是不断深化的,因此需求过程是一个迭代过程,每次迭代都可提供更高质量和更详细内容的软件需求。这种迭代会给项目带来一定的风险,上一次迭代的设计实现可能会因为需求不足而被推翻。
在很多情况下,对需求的理解会随着设计过程和实现过程的深入而不断深化,这也会导致在软件生命周期的后期,重新修订软件需求。原因可能来自于错误的分析,客户环境和业务流程的改变,市场趋势的变化等。无论是什么原因,软件分析师应认识到需求变化的必然性,并采取相应的措施,减少需求变更对软件系统的影响。
10.需求管理过程的目标和内容是什么?
需求管理的目标:保证软件项目或产品满足客户在软件功能、性能、接口3个方面的需求。需求管理过程的内容,主要包括需求确认、需求评审、需求追踪和需求变更活动管理。
11.用户需求报告与需求分析规格说明书有何差异?
用户需求报告与需求分析规格说明书的差异如下。
用户需求报告是对外的,需求规格说明书是对内的。用户需求报告是站在用户(使用者)的角度、用他们可以看懂的语言(如自然语言)写的,需要用户签字确认。
需求规格说明书则不同,它是对内的,不需要用户签字确认。它是站在开发者的角度、可以采用形式化或半形式化的语言进行描述。
一般来说,用户需求报告是合同的产物,需求规格说明书是立项建议书的产物。用户需求报告是对合同而言的。需求规格说明书是对立项建议书而言的。
由用户需求报告可产生需求规格说明书。
签完合同后,一般是先写出用户需求报告,后写出需求规格说明书。当需求报告由用户签字确认后,需求规格说明书很快就会出来了。
12. 需求评审的作用是什么?为什么必须评审?评审的标准是什么?
评审的作用,必要性及标准如下。
评审的作用(目的):为了及早消除隐藏的错误,确保需求说明准确、完整、清晰、无二义性地表达产品的功能和质量要求。
评审的必要性:需求说明书的描述几乎用的都是自然语言,这种非形式化的语言容易出现不准确、冗余、遗漏和理解不一致等问题。因此,对规格说明书的审查是必须的。
通过评审后的需求文档才是有效的。
评审的标准:就是对需求分析和说明的质量要求:正确性、无歧义性、完整性、一致性、重要性/稳定性分级、可验证性、可修改性、可追踪性。
13. 请简述可行性研究所研究的问题。
可行性研究主要做4个方面的研究。
①经济可行性:进行成本/效益分析。从经济角度判断系统开发是否“合算”。
②技术可性:进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。
③法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。
④方案的选择:评价系统或产品开发的几个可能的候选方案,最后给出结论意见。
14. 请简述数据流图的作用。
数据流图的作用:数据流图可以用来抽象地表示系统或软件。从信息传递和加工的角度,它以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
-
请简述数据字典的作用。
数据词典的作用:分析模型中包含了对数据对象、功能和控制的表示。在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每个数据对象和控制项的特性,建立了数据词典。数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。
第四章 -
请简述软件设计与需求分析的关系。
软件设计可看作将需求规格说明书逐步转换为软件源代码的中间过渡过程。
活动输入:需求规格说明书。
活动输出:设计规格说明书。
活动目标:需求模型转换成设计模型。
活动过程:层层分解,逐步求精。
2.请简述软件设计的工作目标和任务。
软件设计的目标:将需求模型细化为设计模型,形成“设计规格说明书”。
软件设计的任务:概要设计和详细设计。概要设计是根据需求确定软件和数据的总体框架,
详细设计是将其进一步精化成软件的算法表示和数据结构。 -
请简述在软件设计的过程中需要遵循的规则。
在软件设计的过程中需要遵循的规则:模块化、抽象化、逐步求精和信息隐藏。
4.软件设计如何分类,分别有哪些活动?
从活动任务来看,软件设计是对软件需求进行:数据设计、体系结构设计、接口设计、构件设计和部署设计。
从工程管理角度来看,软件设计分为概要设计和详细设计。前期进行概要设计,得到软件系统的基本框架。后期进行详细设计,明确系统内部的实现细节。
5.什么是模块、模块化?软件设计为什么要模块化?
① 模块:是完成特定功能的程序实体。模块是构成程序的基本构件。
② 模块化:是指解决一个复杂问题时自顶向下逐层分解成若干模块的过程。每个模块完成一个特定的子功能,所有模块按系统结构组合起来,完成整个系统所要求的功能。
③ 模块化设计。
将问题简化,划分模块可使每一个模块完成单一的功能。
可以独立地进行模块的编码测试,便于软件开发工作的组织。
把每一个模块要解决的问题局限在有限的范围,减少出错机会。
便于纠错。
便于对特定的模块进行优化处理。
一个模块可被重复使用,以提高软件产品的复用率。
程序易于理解。
利于估计工作量和开发成本。 -
请简述面向数据流的设计方法的主要思想。
面向数据流的设计方法就是通常所说的结构化设计方法。它是以数据流图为基础,将 DFD
变换成软件结构的不同映射方法,以软件结构图(SC图)的形式表现。SC图描述软件系统的层
次和分块结构的关系,体现模块与模块之间的联系与通讯,从而表达软件的体系结构。 -
请简述界面设计应该遵循的原则。
界面设计应该遵循的原则如下。
置界面于用户控制之下:以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式;提供灵活的交互;允许用户交互可以被中断和撤销;当技能级别增长时可以使交互流水化并允许定制交互;使用户隔离内部技术细节;设计应允许用户和出现在屏幕上的对象直接交互。减少用户的记忆负担:减少对短期记忆的要求;建立有意义的缺省;定义直觉性的捷径;界面的视觉布局应该基于真实世界的隐喻;以不断进展的方式揭示信息。
保持界面一致:允许用户将当前的任务放入有意义的语境;在应用系列内保持一致性;如果过去的交互模式已经建立起了用户期望,不要改变它,除非有不得已的理由。
9.改进的Jackson图与传统的Jackson图相比有哪些优点?
运用改进的Jackson图表达选择型或循环型结构时,选择条件或循环结束条件可以在图上
直接表现出来,并且框间连线为直线,方便打印输出。 -
请简述软件设计优化的准则。
软件设计优化的准则如下。
划分模块时,尽量做到高内聚、低耦合,保持模块的相对独立性。模块划分的准则:将相关的各部分放在一起,无关的东西不要放在一起。
模块的大小要适中。
模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。
一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。
软件结构的深度、宽度、扇入、扇出应适当。
力求设计单入口和单出口的模块,避免“病态连接”,防止内容耦合。
设计功能可预测模块的划分,应防止功能过分局限。 -
请简述结构化设计的优点。
结构化设计的优点如下。
减少设计复杂性。将大化小,使复杂问题简单化。
结构独立。将程序划分成多个相对独立的模块。
模块功能单一化,可使软件设计获得最大的益处。
易于进行软件修改。
易于开发和维护。
加强了代码的可重用性。
第五章
1.在选择编程语言时,通常要考虑哪些因素?
在选择编程语言时,通常需考虑以下因素。
待开发系统的应用领域,即项目的应用范围。
用户的要求。
软件开发人员的喜好和能力。
系统的可移植性要求。
算法和数据结构的复杂性。 -
请简述编码风格的重要性。要形成良好的编码风格可以从哪些方面做起?
阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供人阅读的文章。应当在编写程序时讲究程序的风格,这将大量地减少人们阅读程序的时间。良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。要形成良好的编码风格可从以下方面做起。
版权和版本声明。
程序版式。
注释。
命名规则。
数据说明。
代码构造。
输入输出。
效率。
3.调试、测试二者有何区别?
①调试(debug)指的是对模块的调试,是程序员交付可运行的代码模块所必须经历的工作。是为了找出错误的位置,排除错误,由程序作者进行以不可知的内部条件开始,结果一般不可预见,是被动的
②软件测试的目的是发现程序中的错误,是为了证明程序有错,由独立的测试组在不了解软件设计的条件下完成,以已知条件开始,使用预先定义的程序,有预知的结果,是有计划的 -
请简述软件测试的原则。
软件测试的原则如下。
完全测试是不可能的。
测试中有风险存在。
软件测试只能表明缺陷的存在,而不能证明软件产品已经没有缺陷。
软件产品中所存在的错误数与已发现的错误数成正比。
要避免软件测试的杀虫剂现象。
在设计测试用例时,应包括输入数据和预期的输出结果两个部分,并且,输入数据不仅应该包括合法的情况,还应该包括非法的输入情况。
要集中测试容易出错或错误较多的模块。
应该长期保留所有的测试用例。
使开发人员和测试人员分立,即软件的开发工作和测试工作不能由同一部分人来完成。测试工作应该尽早开始,并且贯穿于整个开发过程中。 -
请简述静态测试和动态测试的区别。
按照执行测试时是否需要运行程序,软件测试可以划分为静态测试和动态测试。静态测试以人工测试为主,通过测试人员认真阅读文档和代码,仔细分析其正确性、一致性及逻辑结构的正确性,从而找出软件产品中的错误或缺陷。静态测试对自动化工具的依赖性较小,通过人脑的思考和逻辑判断来查找错误,因而可以更好地发挥人的主观能动性。
与静态测试不同的是,动态测试需要通过实际运行被测程序来发现问题。测试人员可以输入一系列的测试用例,通过观察测试用例的输出结果是否与预期相符来检验系统内潜在的问题或缺陷。 -
软件测试的目的是什么?
测试的目的如下。
测试是一个为了发现程序中的错误为目的的程序执行过程。
一个好的测试用例是能最大限度地找到迄今为止尚未发现的错误。
成功的测试是能发现了那些尚未发现的错误。 -
请简述验证与确认之间的区别。
验证是检验开发出来的软件产品和设计规格说明书的一致性,即是否满足软件厂商的生产要求,保证生产出的产品是高质量的产品。确认就是检验产品功能的有效性,即是否满足用户的真正需求,确认是用户需要的产品。
设计规格说明书本身有可能存在错误,即便软件产品中某个功能实现的结果和设计规格说明书完全一致,但也可能不是用户需要的。因为设计规格说明书一开始就对用户需求的理解错了,所以仅仅进行验证测试是不充分的,还要进行确认测试。 -
软件测试应该划分几个阶段?各个阶段应重点测试的内容是什么?
软件测试总的来说可分为单元测试、集成测试、系统测试、验收测试。每个阶段又分为确定测试计划,测试设计,设计测试用例,实施测试,进行测试报告5个步骤。
单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
集成测试是软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非是一项简单的任务,它被称为测.试的“先知者问题”。
验收测试是向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。
回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。
第六章
1.请阐述面向对象的基本概念。
面向对象的基本概念包括对象、类、封装、继承和多态。对象可以是客观世界中存在的事物,也可以是概念化的实体,它由一组属性和操作组成。属性是用来描述对象静态特征的数据项,是对客观世界实体所具有性质的抽象。操作是用来描述对象动态特征。类是对对象的抽象,是对具有相同属性和相同操作的一组相似对象的定义。封装是指把对象的属性和操作结合在一起,组成一个独立的单元。继承表示类之间的层次关系,它使得某类对象可以自动拥有另外一个或多个对象的全部属性和操作。多态是一种使父类中定义的属性或操作被子类继承后,可以有不同的实现的机制。 -
与面向结构化开发过程相比,为什么面向对象能更真实地反映客观世界?
结构化也就是面向过程的方法:从客观事物的行为出发,肢解客观事物的整体性,从分析、设计到编程完全看不出事物的原貌。
面向对象:从观察、抽象客观事物开始,就以事物原貌、事物的整体为出发点。从分析、设计、编程一直反映事物的原貌,它利用事物具有整体性、关联性、交互性、继承性和多态性的本源特征映射领域问题到计算机世界中。 -
什么是面向对象技术?面向对象方法的特点是什么?
面向对象分析的目标是完成对所需求解问题的分析,确定待建的系统所要做的工作,定义所有与待解决问题相关的类,并建立系统的模型。面向对象分析的关键是识别出问题域中的对象,并分析它们之间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
面向对象分析模型通常包括对象模型、动态模型和功能模型。对象模型是最基本、最重要、最核心的模型,描述软件系统的静态结构;动态模型描述系统的控制结构;功能模型描述软件系统必须完成的功能。这3种模型各自从不同的侧面反映软件系统的内容,相互影响、相互制约,有机的结合在一起,全面地表达对目标系统的需求。 -
什么是类?类与传统的数据类型有什么关系?
具有相同特征和行为的对象归结在一起就形成类,也就是说,类是具有相同属性和服务的一组对象的集合。
在面向对象方法学中,类是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。属于某个类的对象称为该类的实例。每个对象都是某个类的实例,对象的状态则包含在实例的属性中。类和实例的关系是一种抽象与具体的关系。实例是类的具体体现,类是多个实例的综合抽象。现实中没有真正的类存在,类只是对具有相同属性和行为的一组相似的对象的抽象,而现实中存在的只是某一类的具体的实例。例如,现实中没有抽象的“汽车”,人们只见到了具体的一辆辆的卡车、小轿车等。
第七章
1.请对比面向对象需求分析方法和结构化需求分析方法。
结构化需求分析方法基于“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。常用的结构化需求分析工具有数据流图、数据字典和E-R图。数据流图把软件系统看成是由数据流联系的各种功能的组合,可以用来建立目标系统的逻辑模型。数据字典用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。E-R图可以用于描述应用系统的概念结构数据模型,它采用实体、关系和属性这3个基本概念来进行建模。
面向对象需求分析方法主要基于面向对象的思想,以用例模型为基础进行需求分析。面向对象的概念中主要涉及了对象、类、封装、继承和多态等概念。因为面向对象的软件工程方法更符合人类的思维习惯,稳定性好,而且可复用性好,所以在目前的软件开发领域最为流行
2.类间的外部关系有几种类型?每种关系表达什么语义?
类的外部关系有关联、继承、依赖3种关系,画出完整的类图是OOA建模的最终结果。
关联:对象之间的静态关系,表示一个对象拥有另一些对象,或一个对象是由另外一些对象组成。
继承:对象之间的静态关系,表示对象之间的父子关系,可提高类的复用性。89
依赖:对象之间的信息交互关系,一个对象需要另一些对象为它提供服务。 -
请简述面向对象分析的过程。
面向对象分析的基本任务是运用面向对象的方法,软件工程师和用户必须进行充分的沟通,
以了解基本的用户需求,对问题域和系统责任进行分析和理解。 -
什么是动态模型?
对于一个系统来说,功能模型指明了系统应该“做什么”,而动态模型则明确规定了“什
么时候做”。即在何种状态下、接受了什么事件的触发,来确定对象的可能事件的顺序。 -
请简述如何准备脚本。
在建立动态模型的过程中,脚本是指在某一执行期间内系统中的对象(或其他外部设备)
与目标系统之间发生一个或多个典型的互换信息时产生的事件,所互换的信息值就是该事件的参数。对于各事件,应确定触发事件的动作对象和该事件的参数。
6.请简述如何准备事件跟踪图。
事件跟踪图能形象、清晰地表示事件序列以及事件与对象的关系。在事件跟踪图中,一条
竖线代表一个类和对象,每个事件用一条水平的箭头线表示,箭头方向从事件的发送对象指向接受对象。事件按照先后顺序排列,时间从上向下递增。 -
请简述面向对象分析的目的。
面向对象分析的目的是对客观世界的系统进行建模,是定义所有与待解决问题相关的类。
完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。 -
请简述面向分析的基本任务。
面向对象分析的任务如下。
获取客户对系统的需求。
标识类和对象。
定义类的结构和层次。
建造对象一关系模型。
建立对象一行为模型。
第八章
1.请比较结构化软件设计方法和面向对象软件设计方法。
结构化软件设计方法和面向对象软件设计方法是两种主流的软件设计方法。结构化软件设计方法更关注于系统的功能,采用自顶向下、逐步求精的设计过程,以模块为中心来解决问题,按照工程标准和严格的规范将目标系统划分为若干功能模块。面向数据流的方法和面向数据结构的方法是两种常用的结构化软件设计方法。面向数据流的设计方法大多在概要设计阶段使用,它借助于数据流图来进行设计工作,而面向数据结构的设计方法通常在详细设计阶段使用,它按输入、输出以及计算机内部存储信息的数据结构进行软件结构的设计,从而把对数据结构的描述转换为对软件结构的描述。常用的结构化软件设计工具有流程图、N-S图和PAD图等。
与结构化软件设计方法相比,面向对象软件设计方法的使用范围更广。与传统的软件工程方法不同的是,面向对象的方法不强调需求分析和软件设计的严格区分。从分析到设计的过渡,是一个逐渐扩充、细化和完善分析阶段所得到的各种模型的过程。面向对象的设计可以分为系统设计和对象设计两个阶段。系统设计关注于确定实现系统的策略和目标系统的高层结构,而对象设计是对需求分析阶段得到的对象模型的进一步完善、细化或扩充。 -
对基于面向对象思想的设计而言,有哪些方法或机制可以实现信息隐藏?
通常,模块的信息隐藏可以通过接口来实现。模块通过接口与外部进行通信,而把模块的
具体实现细节(如数据结构、算法等内部信息)隐藏起来。一般来说,一个模块具有有限个接口,外部模块通过调用相应的接口来实现对目标模块的操作。
3.请简述面向对象的启发规则。
面向对象启发规则如下。
设计结果应该清晰易懂。
一般一特殊结构的深度应适当。
设计简单类。
使用简单的协议。
使用简单的操作。
把设计变动减至最小。 -
请简述何为面向对象设计。
面向对象设计是面向对象方法在软件设计阶段应用与扩展的结果,就是根据在问题域中已建立的分析模型,运用面向对象技术进行系统软件设计,并且补充实现的细节部分,如人机界面、数据存储、任务管理等,形成符合成本和质量要求的、抽象的系统实现方案,在求解域中建立设计模型。 -
请简述如何优化对象设计。
优化对象设计如下。
确定优先级。
提高效率。
调整继承关系。
第九章
1.面向对象实现应该选用哪种程序设计语言?为什么?
在选择编程语言时,应该考虑的首要因素是哪个语言能最好地表达问题域语义。一般来说,
应该尽量选用面向对象程序设计语言来实现面向对象分析、设计的结果。
3.选择面向对象程序设计语言时主要应该考虑哪些因素?
选择面向对象程序设计语言时主要应该考虑如下因素。
将来能否占主导地位。
可重用性。
类库和开发环境。
其他因素。
4.良好的面向对象程序设计风格主要有哪些准则?
良好的面向对象程序设计风格,既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念(如继承性)而必须遵循的一些新准则。
提高可重用性。
提高可扩充性。
提高健壮性。
5. 测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?
测试面向对象软件时,单元测试、集成测试和确认测试各有如下一些新特点。
① 最小的可测试单元是封装起来的类和对象。一个类可以包含一组不同的操作,而一个特定的操作也可能存在于一组不同的类中。因此,对于面向对象的软件来说,单元测试的含义发生了很大变化。不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。
② 面向对象软件的集成测试有两种不同的策略。
基于线程的测试。这种策略把响应系统的一个输入或一个事件所需要的一组类集成起来分别集成并测试每个线程,同时应用回归测试以保证没有产生副作用。
基于使用的测试。这种方法首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,接下来测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完为止。
③ 和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景。
第十章
1.UML的作用和优点有哪些?
UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。它不是一种可视化的程序设计语言,而是一种可视化的建模语言;它不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准;它不是过程,也不是方法,但允许任何一种过程和方法使用它。
优点:更好地表现同一事物的不同方面,采用不同的视图,每个视图从一个角度看待和描述问题。建模语言就是设计语言,是从自然语言到计算机语言的中间的过渡性语言,它提供表达设计语义的语法或图形符号用来建立软件的模型。
3.如何着手从自然语言描述的用户需求中画出用例图?
用自然语言进行用户需求的描述,是最高级的抽象。降解抽象层次的第一步就是画用例图,也就是能找出系统的用例,统一方法建模称为“用例驱动”。由于找用例要先找角色(执行者),因此又称“角色驱动”。
找出系统边界以外的角色,角色是与系统进行交互的外部实体,可以是与系统交互的人员、与系统相连并交换信息的设备和其他系统。
从这些角色如何与系统进行交互的角度,找出用例。用例表示向角色提供什么功能,每个用例代表一个完整的功能。
绘制用例图,用例图表达角色如何使用系统功能,角色启动用例并与之通讯。用例图能完整地描述系统所具备的基本功能。
用例描述。用例图只能宏观地表达系统功能,但却不能提供用例模型所必需的所有信息,采用文本方式对每个用例的含义和具体动作序列加以详细的描述。用例描述也可采用列表方式并辅以活动图。
4.用例脚本有何作用?有哪3种描述方式?用例脚本是针对什么层次的用例?
作用:只画出用例图还不能完整地表达出用户的需求,还要辅以一定形式的说明,说明每个用例里面的事件流,即业务流程,也就是用例脚本。
表达方式:用例脚本用纯文字、表格、活动图3种方式来表述。活动图具有直观性,可以用来对文字和表格形式进行补充。
针对的层次:对用例的说明称为“用例描述”,也称为“用例脚本”,它描述的是具有实际行为的“操作用例”,也就是发生逻辑运算(如数据的增、删、改、查的操作)的用例。这些用例往往就是用例图中的叶子级用例,而这层用例在复杂系统中不提倡画在较高层次的用例图中。可以通过分层细化来表达叶子用例。