1、1 该习题答案由学生完成,仅供参考。象声词同学们能独立完成习题! 软件工程习题 第一章习题 1、 计算机软件系统 4 个不同的发展阶段是: 程序设计、程序系统、软件工程、 面向对象阶段 。 2、软件危机发生在那个阶段?主要指哪 两方面的问题? 程序系统阶段 原因: 1、如何开发软件,以满足对软件日益增长的需求。 2、如何维护数量不断膨胀的已有软件。 3、软件危机有几方面的典型表现? 1 、对软件开发成本和进度的估计常常很不准确 2 、用户对“已完成的”的软件系 统不满意的现象经常发生 3 、软件产品的质量往往靠不住 4 、软件常常是不可维护的 5 、软件通常没有适当的文档资料 6 、软件成本在
2、计算机系统总成本中所占的比例逐年上升 7 、软件开发效率提高的速度,远远跟不上计算机应用迅速普及及深入的趋势 4、 软件危机 产生的原因是 与软件本身的特点有关 、 软件开发与维护的方法不准确有关 5、软件是 程序 、 数据 、 相关文档 的完整 集合。 6、 如何解决 软件危机 ? 1 、一个软件必须是由一个完整的配置组成,事实上,软件是程序,数据及相关文档的完整集合 2 、要充分认识到软件开发应该是一种组织良好、管理严密、各类人员协同合作、共同完成的工程项目 3 、推广使用在实践中总结出来的开发软件的成功的技术和方法 4 、应该开发和使用良好的开发软件工具 5 、总之,为了解决软件危机,既
3、要有必要的技术 措施又要有必要的组织管理措施 7、软件工程的定义?(以教材定义为准) 采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护他,这就是软件工程。 8、软件工程的本质特征有 、 、 、 、 、 和 。 关注大型程序的构造、中心课题是控制复杂性、软件经常变化、开发软件的效率非常重要、和谐地合作是开发软件的关键、软件必须有效地支 持它的用户和由具有一种文化背景的人替另一种文化背景的2 人创造产品 9、软件工程的基本原理有 、 、 、 、 、 和 。 用分阶段的生命周期计划严格管
4、理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设计技术、结果应能清楚地审查 、开发小组的人员应该少而精和承认不断改进软件工程实践的必要性。 10、软件工程学的三个基本要素是 方法 、工具 、过程 11、 软件工程学分为 传统方法学 和 面向对象的方法学 两大类。前者强调 自顶向下顺序的完 成软件开发的各阶段任务 ,而后者强调 多次反复迭代的演化过程 12、 软件工程学中的 面向对象的方法学 有四个基本要点。它们是 对象 、 类 、 系统 、 消息 。 把对象作为融合了数据及数据上的操作行为的统一软件构件 、 把所有对象都划分成类、按照父类与子类的关系把若关干个相关类组成一个层次结构的系
5、统、对象彼此间仅能发送消息互相联系 。 13、什么是软件生命周期? 软件从生产到软件报废的过程 14、软件生命周期划分为几个时期几个阶段?各阶段主要任务是什么? 软件定义、软件开发、软件为维护 3 个时期组成。 软件定义:问题定 义,可行性研究,需求分析; 软件开发阶段:总体设计, 详细设计、 编码和单元 测试 , 综合测试 ; 软件维护:使软件持久地满足用户的需求 15、软件生命周期中的软件维护分为几大类?哪类维护所占比重最大? 改正性维护 ,适应性维护,完善性维护,预防性维护 完善性维护占比重最大 16、什么是软件过程? 其 任务集合主包括哪些内容? 软件过程是为了获得高质量软件所需要完成
6、的一系列任务的框架,它规定了完成各项任务的工作步骤。包括一组软件工程任务、里程碑和应该交付的产品。 17、 瀑布模型、快速原型模型、增量模型、螺旋模型和喷泉 模型格有什么特点和优缺点? 1、瀑布模型: 特点: 1 、阶段间具有顺序性和依赖性 2 、推迟实现的观点 3 、质量保证的观点 优点: 可强迫开发人员采用规范的方法;严格的规定了每个阶段必须提交文档;要求每个阶段的交出的所有产品必须经过质量保证小组的仔细验证 缺点: 瀑布模型是由文档驱动的是瀑布模型的主要缺点 3 2、快速还原模型: 特点 :快速还原模型是快速建立起来的可直接在计算机上运行的程 序,他所能完成的功能是最终产品的一个子集 优
7、点:软件产品的开发基本上是线性顺序进行的 缺点:一旦需求确定了需求,原来的需求将被抛弃 3、增量模型: 优点: 逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲突 缺点: 1 、把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发出来的产品。 2 、必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构 件的过程必须简单,方便,也就是说,软件体系结构必须是开放的 3 、从某种意义上来说,增量模型是自相矛盾的 4、螺旋模型 优点 : 1 、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作
8、为软件开发的一个项目指标; 2 、减少过多测试或测试不足所带来的风险 3 、在螺旋模型中维护只是模型的另一个周期,在维护和开发之间的并没有什么区别 5、喷泉模型 喷泉模型 体现了面向对象软件开发过程迭代和无缝的特性 18、为什么说喷泉模型较好地体现了面向对象软件开发过程中的无缝和迭代特征? 喷泉模型图中的代表不同阶段的圆圈相互重叠,这明确表示两个活动之间的交叠;而面向对象方法在这种概念和表示方法上的一致性,保证了各项开发活动之间的无缝过度。 第二章习题 1、 可行性研究的目的是什么?可行性研究的内容是什么? 确定问题是否值得去解决 技术、经济、 操作、 法律等 的 可行性 2、 可行性研究 中
9、对问题的解法可行性包括 主要 和次要 方面 。两者分别包含 技术可行性、经济可行性、操作可行性 和 法律可行性 、社会效益 可行性 几个方面。 3、 可行性研究 过程主要有 、 、 、 、 、 、 和 4 几个步骤。 复查系统规模和目标 、研究目前正在使用的系统、导出新系统的高层逻辑模型、进一步定义问题、 导出和评价供选择的解法、推荐行动方针、草拟开发计划和书写文档提交审查几个步骤。 4、 可行性研究 过程中的第三步“导出新系统的高层次逻辑模型”涉及到 现 有的物理系统、现有的逻辑模型、目标系统的逻辑模型、新的物理系统模型 几种模型 。 5、 可行性研究 过程中的第五步中如何排定问题解法三种可
10、行性的顺序? 技术可行性 操作可行性 经济可行性 6、系统流程图是描绘 物理系统 的传统工具。 它 用 图形 符号以 黑盒子 形式描绘组成系统的每个部件 (程序,文档,数据库,人工过程等 )。 表达的是数据在系统各部件之间 流动 情况,而不是对数据进行 加工处理 的控制过程。 7、 系统流程图 与程序流程图的异同? 系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的过程; 而程序流程图是指程序指令控制流的流动 (即算法描述) 8、 系统流程图 包含 基本符号、系统符号 两大类图 形符号。 其名称和符号分别是什么? 9、在面对复杂的系统中,比较好的方法是采用什么策略来描述
11、? 分层次地描绘这个系统 10、 数据流图 是一种 技术,它描绘 和 从输入移动到输出的过程中所经受的 。 在数据流图中没有任何具体的 ,它只是描绘数据在软件中流动和被处理的 。 图形化、信息流、数据、变换、物理部件、逻辑过程 11、 数据流图的 4种基本 符号 为 正方形、圆角矩形、开口矩形、箭头 附加符号有 星号、加号、 + (带圈加号) 。 分别代 表什么含义? 正方形表示数据的源点或终点;圆角矩形代表变换数据的处理;开口矩形代表数据存储;箭头代表数据流; 星号表示数据流之间是“与”关系;加号表示“或”关系; + 号表示只能从中选一个。 12、画数据流图的步骤为( 1)从问题描述中提取数
12、据流图的 4 种成分 ( 1)从问题描述中提取数据流图的 4 种成分( 2) 画功能级数据流图 ( 3) 对功能级数据流图中描绘的系统主要功能进一步细化 (功能级分解) ( 4) 对处理进行编号 。 13、为数据流或数据存储命名要注意哪些 ?为处理命名要注意哪些内容? 为数据流命名 : 1、名字应代表整个数据流的内容,而不是仅仅反映它的某些成分; 2、不要使用空洞的、缺乏具体含义的名字; 3、如果在为某个数据流起名时遇到困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。 为 处理命名: 1、通常先为数据流命名,然后再为与之相关的处理命名; 5 2、名字应该
13、反映整个处理的功能,而不是他的一部分功能; 3、名字最好有一个工具的及物动词加上一个具体的宾语组成; 4、通常名字中仅包含一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当; 5、如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的现象,应考虑重新分解。 14、 数据流图 的作用有( 1) 作为交流信息的工具 (2) 作为分析和设计的工具 。 15、 数据流图 和 数据字典 共同 构成了系统的逻辑模型。 16、数据字典 是关于 数据信息 的 集合,也就是对数据流图中包含的 所有元素 定义的集合。涉及到的元素有 数据流 、 数据流分量 、 数据存储
14、、 处理 四类。 17、 数据字典 中 定义数据的方法有为 对数据自顶向下的分解 18、 数据字典 中数据元素 组成数据方式有 顺序、选择、重复和 可选 使用的图形 符号有哪些?分别代表什么含义? = 等价于 、 + 和 、 或 、 重复 、 ()可选 19、简要叙述数据字典的用途是什么? 作为分析阶段的工具 20、 成本估计技术有 代码行技术、 任务分解技术 和 自动估计成本技术 第三章习题 1、需求分析 是 确定系统 必须做什么 。 其最终 成果是 需求分析规则说明书 。 2、需求分析的任务有 确定对系统的综合要求 、 分析系统的数据要求、导出系统的逻辑模型 和 修正系统的开发计划 3、
15、需求分析任务 中的综合要求包含哪些内容? 数据要求包含哪些内容? 综合要求 : 1、功能要求 2、性能要求 3、可靠性和可用性要求 4、出错处理要求 5、接口要求 6、约束 7、逆向要求 8、将来可能提出的要求 数据要求: 1、建立数据模型:数据流图、 E-R 图 2、数据规范化描述 4、 需求分析 过程 中与用户沟通获取需求的方法有 访谈、面向数据流自顶向下求精、简易的应用规格说明技术 和 快速建立软件原型。 5、 需求分析过程中“面向数据流自顶向下求精”是采用 结构化分析方法 进行需求分析;“简易的应用规格说明技术”就是一种 面向团队 需求收集法。“快速建立软件原型”是 最准确 、 最有效
16、 、最强大 的需求分析技术。 6、 “快速建立软件原型” 需求分析技术 主要使用了 第四代技术、可重用的软件结构和形式6 化规格说明和原型环境 方法和工具。 7、 需求分析过程中 的 “分析建模”应该建立 、 和 3 种模型。所谓模型由一组 和组织这些符号的 组成。 数据模型 、 功能模型和行为模型 图形符号、规则 8、 DFD、 ER 图和状态转换图分别对应 、 和 模型 。 功能模型、 数据模型和行为模型 9、 是分析模型的核心,它描述 软件使用或产生的所有数据对象。 数据字典 10、数据模型( ER 图)中主要涉及到的信息有 、 和 。 数据对象、 属性和联系 11、数据对象的联系可分为
17、 、 和 3种类型 。 一对一联系、一对多联系和 多对多联系 12、 ER图有三种基本成分:实体,用 图形符号表示; 关系,用连接相关实体的 表示;属性,用 表示,并用 把实体 (或关系 )与其属性连接起来。 矩形、菱形框、椭圆形 或圆角矩形、直线 13、简述 ER图的优点。 ER 模型比较接近人的习惯思维方式。此外, ER 模型使用简单的图形符号表示系统分析员对问题域的理解,不熟悉计算机的用户也能理解他,因此 ER 模型可以作为用户个分析员之间的交流工具 。 14、数据规范化 主要目的是 。其中 第一范式:每个 都必须是原子值,即仅仅是一个简单值而不含内部结构,即 列的惟一 。 第 二 范式
18、:满足第一范式条件,而且每个 属性都由整个关键字决定 (而不是由关键字的一部分来决定 ),即不能有 的重复。第三范式:符合第二范式的条 件,每个非关键字属性都仅由 决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述。 较少数据冗余 属性值、非关键字、 行 、关键字 15、状态转换图是通过描绘系统的 及引起系统状态转换的 ,来表示系统的 。 状态、事件、行为 16、 状态转换图 中的状 态主要有 、 和 ,分别用用什么图形符号表示? 初态、终态、中间态 初态 用实心圆表示,终态用一对同心圆表示,中间态用圆角矩形表示。 17、 状态转换图 中的 状态转换用什么图形符号表示? 其
19、表明了状态转换的方向。 一般要在上面标明触发转换的 。如果未有标明,则表示了 。 带箭头的连线 、 箭头 方向、触发转换事件表达式、在源状态的内部活动执行完之后自动触发转换 7 18、 状态转换图 中的中间状 态 由 、 和 组成。 底层为“活动表”,其语法格式为 。 状态、状态变量和 活动表 事件名(参数表) /动作表达式 19、层次方框图是用来建立 模型的。它用 的一系列多 层次的 框描绘数据的层次结构。顶层是一个单独的矩形框,它代表完整的 ;下面的各层矩形框代表这个数据的 ;最底层的各个框代表组成这个数据的实际 (不能再分割的元素 )。 数据、树形结构、子集、 数据元素 20. 比较层次
20、方框图与结构图是的 差异 。 不同点: 1 、层次图描绘软件的层次结构 , 层次方框图描绘的是数据结构 2 、层次图的方框表示模块或子模块。层次方框图的方框表示数据结构整体或其子集 3 、层次图的连线表示调用关系,层次方框图表示组成关系 21、 Warnier 图和层次方框图类似, Warnier 图也用树形结构描绘信息, Warnier 图可以表明 的逻辑组织,也可以表示特定信息在某一类信息中是有 地出现的。 信息、条件 22、 IPO 图是输入、处理、输出图的简称。能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。是显然是建立 模型的工具之一 (与 DFD 类似) 。 功能模型 2
21、3、 从 、 、 和 方面验 证软件需求的正确性。验证软件需求的方法 有 、 和 。 一致性 、完整性 、 现实性 和 有效性 验证需求的一致性 、 验证需求的现实性和验证需求的完整性和有效性 第四章习题 1、软件工程中对需求分析进行说明的技术分为 、 和 三类。分别用 、 和 进行描述。 非形式化、 半 形式化 、 形式化 自然语言、数据流图或者是 E-R 图和基于数学的技术 2、非形式化方法的缺点及形式化方法的优点分别是什么? 非形式化的缺 点:可能产生矛盾、二义性、含糊性、不完整性、抽象层次混乱 形式化方法的优点: 1 、数学最有用的一个性质是:他能够简洁的准确的描述物理现象、对象或动作
22、的结果,因此是理想的建模工具 8 2 、可以在不同的软件工程活动之间平滑的过度 3 、它提供了高层确认的手段 3、判断:使用了形式化的说明技术后就能保证说明的完整性了? 错 4、应用形式化方法的准则有哪些? 1 、应当选用适当的表示方法 2 、应该形式化,但不要过分形式化 3 、应该估算成本 4 、应该有形式化方法顾问随时提供咨询 5 、不应该放弃传统的开发方法 6 、应该建立详细的文档 7 、不应该放弃质量标准 8 、不应该盲目依赖形式方法 9 、应该测试、测试再测试 10、应该重用 5、有穷状态机包括 、 、 、 和 5 个部分。 态机 J、输入集 K、转换函数 T、初始状态 S 和终态集
23、 F 6、目前使用的状态转换规则形式为: + + = 。 当前状态 菜单 +事件 所选择的项 + 谓词 =下个状态 7、 Petri 网包括 、 、 和 4个元素。其中位置 用 代表,转换用 表示。输入函数用由 指向 的箭头表示,输出函数用由 指向 的箭头表示。 它解决了状态转换中的 时间 问题。 位置 P 、转换 T 、输入函数 I 和输出函数 O 圆圈、直线、位置、转换、转换、位置 8、带标记的 Petri 网中,主要是位置中设置了 。状态转换规则是 :当每个 所拥有的权标数 从该位置到转换的线数时,就允许转换。 权标、输入位置、大于 9、加入禁止线的 Petri 网中,用一个 而不是用箭
24、头标记的输入线表示禁止线。状态转换规则是 :当每个输入 线上至少有一个权标,而禁止线上 的时候,相应的转换才是允许的。 小圆圈、没有权标 10、用 Z语言描述的、最简单的形式化规格说明含有 、 、 和 4个部分 。 给定的集合、状态定义、初始状态和操作 9 第五章习题 1、从工程管理的角度,可以将软件设计分为 阶段和 阶段。从技术的角度,传统的结构化方法将软件设计划分为 、 、 和 4 部分。面向对象方法则将软件设计划分为 、 、 和 4部分。 概要设计、详细设计 体系结构设计 、 数据设计 、接口设计 和过程设计 体系结构设计 、 类设计 /数据设计 、 接口设计 和 构件级设计 2、简述总
25、体设计的必要性。 可以站在全局角度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从而用较低成本开发出较高质量的软件系统 3、 是各种设计方案的基础。总体设计过程分为 阶段和 阶段 ,前者确定 ,后者则确定 。 数据 流图、系统设计、结构设计、系统具体实现方案、软件结构 4、 典型的总体设计过程包括的步骤有哪些? 1 、设想供选择的方案 2 、选取合理的方案 3 、推荐最佳方案 4 、功能分解 5 、设计软件结构 6 、设计数据库 7 、指定测试计划 8 、书写文档 9 、审查和复审 5、在总体 设计 中 要准备组成系统的物理元素清单。包括哪些内容 ? 程序、文件、数
26、据库、人工过程和文档 6、 在总体设计中书写文档步骤,通常的文档有哪些? 1 、系统说明 2 、用户手册 3 、测试计划 4 、详细的实现计划 5 、数据库设计结果 7、 总体设计 的设计原理有 、 、 、 和 五 个部分 。随着软件工程过程向前进行,其抽象程度随之而 。 是 抽象的最底层。 模块化 、 抽象 、 逐步求精 、 信息隐藏和局部化和 模块独立 10 减少 、 源程序 8、简述系统设计采用模块化的优点和模块独立的重要性。 模块化的优点: (1). 采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。 (2). 模块化使软件容易测试和调试,因而有助于提高软件的可靠性。 (
27、3). 模块化能够提高软件的可修改性。 (4). 模块化也有助于软件开发工程的组织管理。 模块独立的优点: 1、有效的模块化的软件比较容易开发出来 2、独立的模块化标胶容易测试和维护 9、模块独立是 、 、 和 的直接结果。模块独立程度的两个定性标准度量是 和 。 模块化 、抽象、信息隐藏 和 局部化 耦合 和 内聚 10、耦合是衡量 彼此间互相依赖 (连接 )的紧密程度,内聚是衡量一个 各个元素彼此结合的紧密程度。好的设计方案,应该是由高 和低 的模块构建的系统 结构。 模块 、 模块内、内聚、耦合 11、 按耦合程度由低到高,常见的耦合形式有哪些 ?分别对应的模块 独立 性变化是?其中公共
28、环境耦合的类型主要包括 和 。两者有何区别? 常见的耦合形式有 : 数据耦合 -控制耦合 -特征耦合 -公共环境耦合 -内容耦合 分别对应的模块 独立 性变化是 :由强变弱 松散公共耦合 、 紧密公共耦合 , 差异是:前者一个模块往公共环境送数据 另一个模块从公共环境取数据 和 两个模块既往公共环境送数据又从里面取数据 12、耦合是影响软件 程度的一个重要 因素,应该采取下述设计原则:尽量使用 耦合,少用 耦合和 耦合,限制 耦合的范围,完全不用 耦合。 复杂、数据 、 控制、特征、 环境、内容 、 13、 内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。实践表明内聚更重要,应该把更多注意力集中到提高模块的 程度上。 内聚 14、模 块 内部聚合形式从内聚程 度 从低到高有哪些? 偶然内聚 -逻辑内聚 -时间内聚 -过程内聚 -通信内聚 -顺序内聚 -功能内聚 15、使用程序流程图确定模块的划分,这样得到的往往 是 内聚的模块。根据数据流图划分模块时,通常得到 内聚的模块。