1、 附录 A 习题答案 1第1章习题答案一、判断题题号 1 2 3 4 5 6 7 8 9 10 11 12 13答案 Y Y Y Y N Y Y N N N N Y Y二、填空题题号 A B C D1 方法 工具 过程2 程序 数据 文档3 程序开发环境 需求分析 概要设计 详细设计4 汇编语言 高级语言5 汇编语言 高级语言6 结构式 模块化7 需求定义 设计 使用和维护8 系统界面原型 运行用户界面原型 同意什么和不同意什么 自外向内9 需求分析 概要设计 详细设计三、简答题1. 软件的特点: 软件具有抽象性。 软件与硬件的生产方式不同。 软件与硬件的维护方式不同。 软件具有复杂的逻辑性。
2、 软件的成本较高。 软件的使用和社会因素有关。2. 软件危机产生的原因:用户需求不明确。缺乏正确的理论指导。软件开发规模越来越大。软件开发复杂度越来越高。3. 软件危机的主要表现: 软件开发进度难以预测。 软件开发成本难以控制。 用户对产品功能难以满足。 软件产品质量无法保证。 软件产品难以维护。 软件缺少适当的文档资料。4. 软件工程学的基本原则有哪些: 抽象。 信息隐蔽。 模块化。 局部化。附录 A 习题答案 2 确定性。 一致性。 完备性。 可验证性。5 什么是软件的生命周期?答案:软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。这就是软件的生存周期。6 软件工程过
3、程有哪几个基本过程活动?试说明之。答案:软件工程过程的基本过程活动有 4 步: 软件规格说明(需求定义) 。规定软件的功能及其运行的限制; 软件设计与开发(设计开发) 。产生满足规格说明的软件; 软件确认(测试) 。确认软件能够完成客户提出的要求; 软件演进(维护) 。为满足客户的变更要求,软件必须在使用的过程中演进。四、综合题1. 详细说明软件生命周期分哪几个阶段?答案:软件生命周期主要分为6个阶段:软件项目计划、软件需求分析和定义、软件设计、程序编码、软件测试,以及运行维护。(1) 软件项目计划 :在这一步要确定软件工作范围,进行软件风险分析,预计软件开发所需要的资源,建立成本与进度的估算
4、。根据有关成本与进度的限制分析项目的可行性。(2) 软件需求分析和定义 :在这一步详细定义分配给软件的系统元素。可以用以下两种方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。(3) 软件设计 :软件的设计过程分两步走。第一步进行概要设计,以结构设计和数据设计开始,建立程序的模块结构,定义接口并建立数据结构。此外,要使用一些设计准则来判断软件的质量。第二步做详细设计,考虑设计每一个模块部件的过程描述。经过评审后,把每一个加细的过程性描述加
5、到设计规格说明中去。(4) 程序编码 :在设计完成之后,用一种适当的程序设计语言或CASE工具生成源程序。应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。(5) 软件测试 :单元测试检查每一单独的模块部件的功能和性能。组装测试提供了构造软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的需求是否都得到满足。在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。(6) 软件维护 :为改正错误,适应环境变化及功能增强而进行的一系列修改活动。与软件维护相关联的那些任务依赖于所要实施的维护的类型。2. 试论述瀑布模型软件开发方法的基本过程。答案:瀑布模型规定了各项软
6、件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。然而软件开发的实践表明,上附录 A 习题答案 3述各项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均应具有以下特征:(1) 从上一项活动接受本项活动的工作对象,做为输入;(2) 利用这一输入实施本项活动应完成的内容;(3) 给出本项活动的工作成果,做为输出传给下一项活动;(4) 对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。附录 A 习题答案 4第2章习
7、题答案一、判断题题号 1 2 3 4 5 6 7 8 9 10 11 12 13答案 N Y N N N Y Y Y Y Y Y N Y二、选择题题号 1 2 3 4 5 6 7 8 9答案 C D A C C C A B D三、填空题题号 A B C D E1 多对一 一对多2 业务模型 功能模型 性能模型 接口模型3 访谈 问卷调查 情景分析 构造原型4 加工 数据的原点或终点 数据流 .数据存储文件5 名称 别名或编号 分类 描述 何处使用四、简答题1 可行性研究主要做 4 个方面的研究: 经济可行性:进行成本效益分析。从经济角度判断系统开发是否“合算”。 技术可行性:进行技术风险评价。
8、从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。 法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。 方案的选择:评价系统或产品开发的几个可能的候选方案。最后给出结论意见。2 需求获取难的原因是: 用户需求具有动态性(不稳定性 )。 用户需求具有模糊性(不准确性 )。 对需求达成一致的艰难性。 管理体制、机构设置处在变革中。 软件书籍没有将需求分析讲清楚。3. 需求分析的原则: 解决逻辑问题:需求分析是对问题的识别和说明,要回答“做什么” ,而不是“怎么做” 。 以运行环境为基础:需求分析工作应以具体的运行环境为基础,实事求是。 用
9、户参与的原则:需求分析工作是系统分析人员同用户不断交互的过程。 构造高质量的需求规格说明:需求规格说明是需求分析工作重要的完成标志。4. 需求分析的任务有: 画出目标系统的组织机构模型。 画出目标系统业务操作流程图。 画出目标系统的数据流图。附录 A 习题答案 5 列出目标系统的功能点列表,即功能模型。 列出系统的性能点列表,即性能模型。 列出目标系统的接口列表,即接口模型。 确定目标系统的运行环境,即环境模型。 目标系统的界面约定,即界面模型。 分析与评估开发工期、费用、进度、风险等。5 数据流图的作用:数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从
10、输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。6 数据词典的作用:分析模型中包含了对数据对象、功能和控制的表示。在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每个数据对象和控制项的特性,建立了数据词典。数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。附录 A 习题答案 6第3章习题答案一、判断题题号 1 2 3 4 5 6 7 8
11、9 10 11 12 13 14 15 16答案 N N N Y Y Y Y Y Y Y N Y Y Y Y Y二、选择题题号 1 2 3 4 5 6 7 8答案 B C D A D A B C三、填空题题号 A B C D1 SD方法 Jackson方法 OOD方法2 耦合 内聚3 一个 数据型 标准调用 少4 DDL DML DCL5 基本表 代码表 中间表 临时表6 原子性 原始性 演绎性 稳定性7 SA SP8 图示 语言 表格9 PDL 人10 防卫性 一致性 冗余性11 客户层 应用层 数据层12 高内聚 低耦合 作用范围 控制范围四、简答题1. 模块的基本属性: 功能:描述该模块
12、做什么? 逻辑:描述模块内部怎么做? 状态:模块使用时的环境和条件。 接口:指模块的输入与输出。2. 软件设计的具体任务: 制定规范 结构设计 处理方式结构设计 数据结构及数据库设计 可靠性设计(质量设计) 编写软件设计文档 设计审查和复审 详细设计3. 模块化的特征: 抽象:用层次的方式构造和分析复杂系统。附录 A 习题答案 7 逐步求精:帮助开发人员把精力集中在与当前开发阶段最相关的那些问题上。 信息隐蔽:如果一个模块内包含的信息(过程和数据) 不允许外部的模块访问的话,其它模块不能对其访问。 局部化:把一些关系密切的软件元素物理地放得彼此靠近。4. 软件设计优化的准则: 划分模块时,尽量
13、做到高内聚、低耦合,保持模块相对独立性。模块划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。” 模块的大小要适中。 模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。 一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。 软件结构的深度、宽度、扇入、扇出应适当。 力求设计单入口和单出口的模块,避免“病态连接”,以防止内容耦合。 设计功能可预测模块的划分,应防止功能过分局限。 5. 结构化设计的优点: 减少设计复杂性。将大化小,使复杂问题简单化。 结构独立。将程序划分成多个相对独立的模块。 模块功能单一化,可使软件设计获得
14、最大的益处。 易于进行软件修改。 易于开发和维护。 加强了代码的可重用性。五、综合题1. 、2. 、附录 A 习题答案 8第4章习题答案一、填空题题号 A B C D1 类 对象2 子类 操作3 封装性 多态4 对象模型 动态模型 功能模型5 分析模型 设计模型 测试模型6 视图 图 通用机制二、简答题1. 面向对象是:Coad 和 Yourdon 给出的定义:“面向对象(Object Oriented,OO)=对象(Object)+类(Classification)+继承(Inheritance)+通信(Communication with Messages) ”。2. 面向对象基本特征是:
15、面向对象技术的基本特征主要是抽象性、封装性、继承性和多态性。3. 软件开发过程指:软件开发过程就是将软件系统所涉及到的应用领域和业务范围(现实世界)的问题空间和用于解决某些问题的软件系统的解空间之间的映射。4. 传统软件开发方法存在的问题:(1) 问题空间不能直接映射到解空间(2) 软件复用程度低(3) 分析不能直接过渡到设计(4) 软件可维护性差(5) 软件不满足用户需要5. 面向对象开发方法的特点:(1) 对软件开发过程所有阶段进行综合考虑。(2) 软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。(3) 增强系统稳定性(4) 具有良好的可复
16、用性6. 统一建模语言:UML 是具有指定的建模元素(图式符号),严格的语法(构图规则),明确的语义(逻辑含义)的建模语言,是面向对象技术领域内占主导地位的标准建模语言。7. Coda/Yourdon 方法的面向对象设计模型:Coda/Yourdon 方法的 OOD 模型是在 OOA 模型5 个层次(主题层、类与对象层、结构层、属性层和服务层)基础上,建立 4 个组元的设计模型:问题域组元(PDC) 、人机交互组元(HIC) 、任务管理组元(TMC)和数据管理组元(DMC) 。8. 简述 UML 视图结构:附录 A 习题答案 9(1)用例视图:描述系统的外部特性、系统功能等。(2)逻辑视图:描
17、述系统设计特征。(3)进程视图:表示系统内部的控制机制。(4)配置视图:描述系统的物理配置特征。(5)实现视图:表示系统的实现特征,常用构件图表示。三、综合题1. 类、属性、操作、继承、多态、封装及抽象类的概念:(举例略)1) 类,又称对象类(Object Class) ,是一组具有相同属性和相同操作的对象的集合。2) 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。3) 类具有操作,它是对象的行为的抽象,操作实现的过程称为方法。4) 继承是类间的基本关系,它是基于层次关系的父类和子类之间共享数据和操作的一种机制。5) 多态是指同一个操作作用于不同的对象上可以有不同的解释,并产生不
18、同的执行结果。6) 封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。7) 抽象类是没有实例的类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。2. 面向对象开发方法及每个方法的特点:(1)Booch 方法Booch 方法描述了面向对象的软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。Booch 方法的开发模型包括静态模型和动态模型,Booch 方法偏向于系统的静态描述,对动态描述支持较少。(2)Coda/Yourdon 方法在 Coda/Yourdon 方法中,对于一个复杂问题
19、建立问题域的分析模型,构造和评审OOA 概念模型的顺序由 5 个层次组成,OOD 模型是在 OOA 模型 5 个层次基础上,建立 4 个组元的设计模型。该方法简单、易学。(3)OMT 方法OMT 方法使用了建模的思想,讨论如何建立一个实际的应用模型。从 3 个不同而又相关的角度建立了三类模型,三类模型描述的角度不同,却又相互联系。(4)OOSE 方法OOSE 的开发活动主要分为三类:分析、构造和测试。OOSE 将面向对象的思想应用于软件工程中,建立五个模型。OOSE 方法的最大特点是面向用例,建立了 Use Case 模型。OOSE 方法比较适合支持商业工程和需求分析。附录 A 习题答案 10
20、第 5章习题答案一、判断题题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15答案 N Y Y Y Y Y Y Y Y Y Y Y Y Y Y二、填空题题号 A B C D1 对象层 关系层2 主题图 交互图3 流程图 IPO图 伪码4 发现潜在对象筛选对象 为对象分类5 初步确定 筛选 完善6 分析 选择7 选择 精炼 构造三、简答题1. 面向对象分析:面向对象分析就是运用面向对象的方法进行需求分析,其主要任务是分析和理解问题域,找出相应的描述问题域和系统责任所需的类及对象,分析它们的内部构成好外部关系,正确地抽象为规范的对象,定义其内部结构和外部消息传递关系,建立问题域精确模型的过程。2. 面向对象分析的模型的构成:(1) 基本模型:基本模型是一个类图。构成类图的元素所表达的模型信息,分为三个层次:对象层、特征层和关系层。(2) 补充模型:补充模型有主题图和交互图。(3) 详细说明 3. 面向对象分析的过程:(1) 获取客户对系统的需求(2) 标识类和对象(3) 定义类的结构和层次(4) 建造对象-关系模型(5) 建立对象-行为模型4. 确定服务:(1) 确定访问对象属性的操作(2) 来自事件驱动的操作