1、一、选择题:1. 瀑布模型的关键局限性在于( A )。 A. 过于简朴 B. 各个阶段需要进行评审 C. 过于灵活 D. 不能适应需求的动态变更2. 以下哪一项不是软件危机的表现形式( C )。 A. 开发的软件不满足用户需要 B. 开发的软件可维护性差 C. 开发的软件价格便宜 D. 开发的软件可靠性差3. 结构化设计是一种面向( A )的设计方法。 A. 数据流 B. 模块 C. 数据结构 D. 程序 4. 软件开发的需求活动,其重要任务是( D )。A. 给出软件解决方案 B. 给出系统模块结构C. 定义模块算法 D. 定义需求并建立系统模型5. 一个项目是否开发,从经济上来说是否可行,
2、归根结底是取决于( A )。 A. 成本估算 B. 项目计划 C. 工程管理 D. 工程网络图6. 在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,尚有( B )。 A. 隐藏复杂性 B. 信息隐蔽 C. 经常类的复用 D. 类的开发 7. 在考察系统的一些涉及时序和改变的状况时,要用动态模型来表达。动态模型着重于系统的控制逻辑,它涉及两个图:一个是事件追踪图,另一个是( B )。 A. 数据流图 B. 状态图 C. 系统结构图 D. 用例图8. 软件维护产生的副作用,是指( C )。A、开发时的错误 B、隐含的错误C、因修改软件而导致的错误 D、运营时误操作 9
3、. 若有一个计算类型的程序,它的输入量只有一个X,其范围是-1.0,1.0,现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001,设计这组测试用例的方法是( C )。 A、条件覆盖法B、等价分类法 C、边界值分析法 D、错误推测法 10. 通过严密的软件测试后所提交给用户的软件产品中( B )A、软件不再包含任何错误 B、还也许包含少量软件错误 C、所提交给用户的可执行文献不会具有错误 D、文档中不会具有错误。11. 需求分析的任务不涉及( B )。 A. 问题分析 B. 系统设计 C. 需求描述 D. 需求评审12. 软件可行性研究实质上是要进行一次( A )需求分析、
4、设计过程。 A. 简化、压缩的 B. 具体的 C. 彻底的 D. 进一步的 13. 下列属于维护阶段的文档是( C )。A软件规格说明 B.用户操作手册 C软件问题报告 D.软件测试分析报告14. 软件维护产生的副作用,是指( C )。A.开发时的错误 B.隐含的错误C.因修改软件而导致的错误 D.运营时误操作 15. 研究开发所需要的成本和资源是属于可行性研究中的( B )研究的一方面。 A. 技术可行性B. 经济可行性 C. 社会可行性D. 法律可行性 16. 软件是一种( C )。A.程序 B.数据C.逻辑产品 D.物理产品 17. 从心理学角度看,对数据流程图的数据解决泡进行分解,一次
5、分解为多少个泡为宜。( B )A.31 B.72C.151 D.182 18. 下列模型属于成本估算方法的有( A )。A.COCOMO模型 B.McCall模型C.McCabe度量法 D.时间估算法 19. 下面关于PDL语言不对的的说法是( D ) 。A. PDL是描述解决过程怎么做 B. PDL是只描述加工做什么 C. PDL也称为伪码 D. PDL的外层语法应符合一般程序设计语言常用的语法规则 20. 在软件开发中,( A )是指对将要开发的系统的开发成本进行估算,然后与也许取得的效益进行比较和权衡。 A. 成本效益分析 B. 可行性分析 C. 结构化分析 D. 软件需求分析 二、 填
6、空题:1. 在信息解决和计算机领域内,一般认为软件是 程序、文档 和_数据 。2. 划分模块时尽量做到 高内聚 、 低耦合 ,保持模块的独立性,尽量使用公共模块。3. 类的实例化是 对象。4. 将得到软件的总开发量。这种成本估算方法称为 自底向上 。 5. 假如一个模块被 n 个模块调用,其中直接的上级模块的个数是 m 个( m=n )那么该模块的扇入数是 N 个。6. 从结构化程序设计到 面向对象程序设计 ,是程序设计方法的又一次奔腾。7. 在单元测试时,需要为被测模块设计_测试用例_8. 可行性研究的目的是用最小的代价在尽也许短的时间内拟定该软件项目 是否值得开发 。9. .需求分析阶段,
7、分析人员要拟定对问题的综合需求,其中最重要的是_功能需求 。10. 软件生存周期中时间最长、花费的精力和费用最多的一个阶段是 维护 阶段11. 增量模型适合于 软件需求 不明确、设计方案有一定风险的软件项目12. Jackson方法是一种面向 数据结构 的设计方法13. 软件项目管理的范围重要集中于3个P上,即:People人员、Problem问题和 过程process 14. 软件工程管理的重要内容有:项目经费管理, 软件质量管理, 项目进度管理 和 人员管理 15.三、 名词解释:1、 软件可靠性:指在给定的时间内,程序按照规定的条件成功地运营的概率2、 数据词典:是描述数据信息的集合,它
8、对数据流图中的各个元素按规定格式进行具体的描述和确切的解释,是数据流图的补充工具。3、 软件再工程:运用逆向工程、重构等技术,在充足理解原有软件的基础上,进行分解、综合、并重新构建软件,用于提高软件的可理解性、可维护性可复用性或演化性。4、 完善性维护:为了适应用户业务和机构的发展变化而对软件的功能、性能进行修改、扩充的过程称为完善性维护。由于各种用户的业务和机构在相称长的时期内不也许是一成不变的,所以功能、性能的增长是不可避免的,并且这种维护活动在整个维护工作中所占的比重很大5、 数据流图:他以图形的方式反映系统的数据流程6、需求分析:是指对要解决的问题进行具体的分析,弄清楚问题的规定,涉及
9、需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是拟定要计算机“做什么”,要达成什么样的效果。可以说需求分析是做系统之前必做的。7、面向对象设计:是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,如Visual Basic、.NET、C+/CLI等8、软件概要设计:是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式
10、的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目的与需求转换成具体界面设计解决方案的重要阶段。9、测试:是由软件的最终用户(多个)在一个或多个用户场合来进行。由用户负责记下碰到的所有问题,涉及主观认定的和真实的问题,定期向开发者报告,开发者在综合用户的报告之后进行修改,最后将软件产品交付给全体用户使用。10、系统流程图:是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文献、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。四、 简答题:1、 简述软件危机产生的因素?答:软件危机产生的
11、因素有:(每点1分) (1)软件的规模越来越大,结构越来越复杂。 (2)软件开发的管理困难。由于软件规模大,结构复杂,又具有无形性,导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。 (3)软件开发费用不断增长。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升不久。 (4)软件开发技术、开发工具落后,生产率提高缓慢。 (5)生产方式落后。软件仍然采用个体手工方式开发。2、 简述建立对象模型的过程?答:建立对象模型的环节如下:(每点1分) (1)拟定类:标出来自问题域的相关对象类。 (2)准备数据字典:为所有建模实体准备一个数据字典,准确描述各对
12、象类的精确含义,描述当前问题中的类的范围,涉及对类的成员、用法方面的假设或限制; (3)拟定关联:拟定二个或多个类之间的互相依赖; (4)拟定属性:只考虑与具体应用直接相关的属性 (5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类3、 软件生存周期分为几个阶段?每个阶段的提交物是什么?答:(1)可行性研究和项目开发计划,提交项目开发计划和可行性分析报告; (2)需求分析,提交软件需求说明书; (3)概要设计,提交概要设计说明书; (4)具体设计,提交具体设计说明书; (5)编码,提交源程序清单; (6)测试,提交测试报告; (7)维护,提交维护报告。4、 软件的复杂性重要体现在哪
13、些方面?减少软件复杂性有哪些优点?答:软件复杂性重要表现在程序复杂性,而程序的复杂性重要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件潜伏错误的多少。(3分)减少程序的复杂性,可提高软件的简朴性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜伏错误减少。(2分)5、软件工程的七条基本原理是什么?答:软件工程的七条基本原理是:(1) 用分阶段的是的生存周期计划严格管理;(2) 坚持进行阶段评审;(3) 严格实行的产品控制;(4) 采用现代程序技术;(5) 结果应能清楚地审查;(6) 开发小组的成员应当少而精;(7) 认可不断改善软件工程的必要性。6、一般面向对
14、象分析建模的工具(图形)有哪些? 答:用例图、类/对象图、对象关系图、实体关系图(ER)、事件轨迹图(时序图)和状态转换图(STD)等7、可行性研究涉及哪几方面的内容?答:(1)经济可行性:是否有经济效益,多长时间可以收回成本; (2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足; (3)运营可行性:系统操作在用户内部行得通吗?(4)法律可行性:新系统开发是否会侵犯别人、集体或国家利益,是否违反国家法律。8、 什么是模块化?模块设计的准则是什么?答:模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。模块设计的准则:(1) 改善软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,减少藕合。(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。(4) 尽量减少模块接口的复杂限度;(5) 设计单入口、单出口的模块。(6) 模块的作用域应在控制域之内。