软件工程习题老师给的.doc

上传人:xt****7 文档编号:125289365 上传时间:2020-03-16 格式:DOC 页数:10 大小:49.45KB
返回 下载 相关 举报
软件工程习题老师给的.doc_第1页
第1页 / 共10页
软件工程习题老师给的.doc_第2页
第2页 / 共10页
软件工程习题老师给的.doc_第3页
第3页 / 共10页
软件工程习题老师给的.doc_第4页
第4页 / 共10页
软件工程习题老师给的.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《软件工程习题老师给的.doc》由会员分享,可在线阅读,更多相关《软件工程习题老师给的.doc(10页珍藏版)》请在金锄头文库上搜索。

1、二、 判断题三、简答题1. 软件产品的特性是什么?答: 软件是一种逻辑产品,具有无形性;软件产品的生产主要是研制;软件不存在磨损和老化问题,但存在退化问题;软件产品的生产主要是脑力劳动;软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。2. 软件发展有几个阶段?各有何特征?答: 程序设计阶段。硬件特征:价格贵、存储容量小、运行可靠性差。软件特征:只有程序、程序设计概念,不重视程序设计方法。 程序系统阶段。硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长 。软件特征:程序员数量猛增,开发人员素质低。 软

2、件工程阶段。硬件特征:向超高速、大容量、微型化及网络化方向发展。软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3. 什么是软件危机?其产生的原因是什么?答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增 加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术 不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力, 而在开发过程中就夭折。软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。(2) 软件生产率低,不能满足需要。4. 什么

3、是软件生存周期模型?它有哪些主要模型?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。 主要模型包括:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。 5. 有哪些主要的软件开发方法?答:主要的软件开发方法有:结构化开发方法、Jackson(JSP、JSD)方法、原型化开发方 法、维也纳开发方法(VDM)和面向对象的开发方法。6. 软件生命期各阶段的任务是什么?答:软件生命期瀑布模型分为六个阶段: 可行性研究与计划(确定系统的目标和规模,分析项目的可行性); 需求分析与规格说明(明确系统的规格和要求); 设计(包括概要设计和详细设计,将系统分解为模块); 编程

4、(用程序语言实现每个模块,简单容易); 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); 运行维护(扩充功能、纠错等)。习题二答案三、 问答题1. 什么是需求分析?需求分析阶段的基本任务是什么?答:需求分析是当前软件工程中的关键问题,需求分析阶段的任务是:在可行性分析的基础上,进一步了解、确定用户需求。准确地回答 “系统必须做什么?” 的问题。获得需求规格说 明书。还涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及到这些因素和系统的精确规格说明,以及系统进化之间的关系。需求分析的基本任务包括:(1) 抽取需求 分析现行系统存在需要解决的问题。

5、获取足够多的问题领域的知识,需求抽取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等;还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等 。(2) 模拟和分析需求 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。(3) 传递需求 传递需求的主要任务是书写软件需求规格说明。(4) 认可需求 就是对需求规格说明达成一致,其主要

6、任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。(5) 进化需求 客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法 ,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性, 并进行关于变化的推理。2. M公司的软件产品以开发实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名

7、管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度 超过一页(B5)。参考答案提示:应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。3. 如何画分层数据流图?答:总的原则是:至顶而下,逐层分解(画分层数据流图)。比较复杂的系统不能画在一张纸上,逐层分解的画法可以控制每一层的复杂度。顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。中间层:表示某个加工分解为一组子加工,其中的子加工还需进一步分解。底层:由不再进行分解的基本加工组成。4. 加工小说

8、明有哪些描述方法?答:结构化语言:介于自然语言和形式语言(如谓词逻辑)之间。结构化英语:通常由外层和内层结构组成。汉语的情况:精确、简明扼要、文体可以灵活。判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。判定树:本质上与判定表相同,图形表示更易于理解。5. 考察下图中子图、父图的平衡。图1图2参考答案:图1中子图与父图不平衡。子图是父图中加工2的分解,加工2 有输入数据流M和N,输出数据流T,而子图则只有一个输入数据N,却有两个输出数据流T与S。图2中子图是父图中加工3的分解,虽然表面上加工3只有一个输入数据流“订货单”,而子图却有三个输入数据流,但是如果“订货单”是由“客户”

9、、“账号”和“数量”三部分组成,即有如下数据条目,订货单=客户+账号+数量(2.2.5数据词典),则子、父图平衡。6. 画出银行取款过程的DFD图。问题描述为:储户用存折取款,首先填写取款单,根据“ 账卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款 数据库”,修改相应数据,并更新“账卡”,同时发出付款通知,出纳向储户付款。参考答案:7. 常用的软件需求分析方法有哪些?答: 结构化分析方法(SA)、功能分解法、信息建模法、面向对象的分析方法(OOA)。习题三答案三、简答题1. 模块内联系和模块间联系有哪些种类?答:块间联系的各种类型的划分,从以下3方面考虑: 按块

10、间联系的方式(可分为直接引用与过程调用); 按块间共用信息的作用(可分为数据型、控制型与混合型); 按块间共用的信息数量多少(信息多联系紧密)。(1) 块间联系的类型,按照耦合度由大到小分为:内容型:直接引用另一模块的内部信息;公共型:两个模块引用共同的全程数据区;控制型:模块间传送的信息用于控制模块的内部逻辑;复合型:模块间传送复合的数据结构;数据型:模块间传送单个数据项。(2) 块内联系的类型,按照内聚性从小到大分为:偶然型:模块内部没有必然联系;逻辑型:逻辑上相似的功能放进一个模块;瞬时型:将同时执行的语句放在一个模块;通信型:模块中的各部分引用共同的数据;顺序型:模块中一部分的输出是另

11、一部分的收入;功能型: 模块中刚好包含了完成一个基本任务所必需的成分。2. 分析以下DFD图,说明属于哪种类型的DFD图,并按照相应的变换将其转换为初始的模块 结构图。参考答案:(略)3. 下图是修改文件记录的DFD图,请确定其主加工。解:主加工为:账号、修改、写记录。4. 按照“降低块间联系,提高块内联系”的设计总则对模块进行修改,具体从哪些方面进 行改进?解:(1) 尽可能建立功能模块;(2) 消除重复功能;(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间 联系;(4) 模块的大小适当;(5) 模块的扇入扇出数不宜太多。5. 根据模块的作用范围与控制范围

12、的原则,判定a、b两图的正确性。解:显然,图a不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。 图b的模块设计合理。6. 图a中,模块G为判定,判断涉及到模块B、F、G,请指出设计中的错误,再根据改进模 块图的基本原则,画出12个改进方案(不改变模块G的判断关系),并说明是按照哪条基本 原则进行改进的。解:图b为一个改进方案,将模块G的位置提高,使其作用范围为控制范围的子集,减少模块 之间的联系。 7. 编码阶段的主要任务是什,应交付的结果是什么?答:编码阶段的主要任务是为每个模块编写程序。即是:将详细设计的结果转换为用某种计 算机语言写的程序源程序代码。编码阶段应交付的结

13、果是带有“程序内部文档”的、不 再含有语法错误的程序。8. SP法的自顶向下,逐步求精方法的优点有哪些?答:此法符合人们解决复杂问题的普遍规律,可提高软件开发的成功率和生产率;而且用先 全局后局部、先整体后细节、先抽象后具体的逐步求精过程,开发出来的程序具有清晰的层 次结构,因此程序容易阅读和理解。这样,程序自顶向下,逐步细化,分解成一个树型结构 。因此,在同一层次的节点上做细化工作,相互之间没有联系,它们之间的细化工作相互独立 ;在任何一步发生错误,一般只影响它下层的节点,同一层其他节点不受影响;在以后的测试中,也可以先独立地一个节点一个节点地做,最后再集成。这样,程序清晰和模块化,使 得在

14、修改和重新设计一个软件时,可复用的代码量最大。9. 为了使程序具有良好的设计风格,应注意哪些方面的问题?答:(1) 标识符应按意取名。标识符即符号名,包括:模块名、常量名、标号名、子程序名、数据区名、缓冲区名等。 这些名字应能反映它所代表的实际东西,应有一定实际意义,使其能够见名知意,有助于对 程序功能的理解。(2) 程序应加注释,它分为两类:序言性注释和功能性注释。序言性注释应置于每个模块的起始部分,主要内容有:说明每个模块的用途,功能;说明模块的接口即调用格式、参数描述及从属模块的清单;数据描述;开发历史 。功能性注释是嵌在源程序体中的,用于说明其后的程序段或语句的功能以及数据的状态;也就

15、是解释下面要“做什么”,或是执行下面的语句会发生什么情况;而不是解释下面“怎么做”,因为怎么做常常是与程序重复的,且对读者理解程序没有什么帮助。10. 样评价程序的执行效率?它与程序清晰性的关系是怎样的?答:许多程序员往往片面追求效率,其实程序系统的成本不仅包括运行所需的机时,同时还应把程序员及操作员所花费的人力考虑进去。在编程时为追求效率而损害可读性或可靠性,会给以后的维护工作带来困难,所以从整体上看来是不值得的。此外,还应该认识到,提高程序效率的根本途径在于:选择良好的设计方法、良好的数据结构与算法,而不是靠编程时对程序语句进行调整。(1) 追求建立在不损害程序可读性或可靠性基础上,要先使程序正确、清晰,再提高程序 效率。(2) 不能因为贪图效率上的小利,而破坏程序的清晰性。(3) 让编译程序去作简单的优化。(4) 提高程序效率的根本途径在于:选择良好的设计方法和良好的数据结构与算法,而不是靠编程时对程序语句做调整。11. 假定:需要编一个求解一元二次方程根的子程序,加入到现有的子程序库中,供其他程序员使用。要求:(1) 为该子程序写一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号