软件工程考试串讲及习题_2
- 格式:doc
- 大小:284.50 KB
- 文档页数:15
软件工程串讲材料目录软件工程串讲材料 (1)第 1 章绪论 (2)第 2 章软件可行性研究与项目开发计划 (5)第 3 章软件需求分析 (7)第 4 章软件概要设计 (12)第 5 章软件详细设计 (18)第 6 章软件编码 (23)第7 章软件测试 (25)第8 章软件维护 (33)第9 章软件开发的增量模型 (36)第10 章面向对象的方法 (38)第11 章软件质量与质量保证 (41)第12 章软件工程管理 (46)第13 章软件开发环境 (49)第1章绪论矚主要内容一、填空题、选择题1. 软件工程是一门综合性交叉学科,计算机科学着重于理论和原理,软件工程是一门(工程性)学科,着重于(建造一个软件系统)。
2. 准确地解决“软件系统必须做什么”是(需求分析)阶段的任务。
3. 概要设计主要是把各项功能需求转换成系统的(体系结构)。
4. 编码阶段的任务是将每个模块的控制结构转换成计算机可接受的程序代码。
5. 软件维护是软件生存周期中时间最长的阶段。
6. 最基本、应用广泛、以文档为驱动、适用于开发功能明确的软件项目生存期模型是瀑布模型。
7. 将软件生存周期各个活动规定为依线性顺序联接的若干阶段的模型是瀑布模型。
8. 螺旋模型是一种风险驱动的模型。
9. 喷泉模型是一种以用户需求为动力,以对象为驱动的模型。
10. 基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。
11. 简单实用、应用广泛、技术成熟的开发方法是结构化方法。
12. 结构化方法是一种面向数据流的开发方法。
由结构化分析、结构化设计、结构化程序设计构成。
13. 一个软件项目的开发中,要采用一种生存周期模型,要按照某种开发方法,使用相应的工具来进行。
14. 软件开发划分的各阶段任务尽可能独立,同一阶段任务性质尽可能相同。
15. 软件规格说明书、软件模块、软件代码、软件文档等都可以是软件重用的单位。
16. 软件维护费用占整个软件系统费用的2/3,而软件开发费用只占整个软件系统费用的1/3。
50.在结构化分析方法(SA)中,与数据流图配合使用的是( )。
A.网络图B.实体联系图C.数据字典D.程序流程图答案:C51.通过( )可以完成数据流图的细化。
A.结构分解B.功能分解C.数据分解D.系统分解答案:B52.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的( )。
A.细节B.输人与输出c.软件的作者D.绘制的时间答案:B53.数据存储和数据流都是( )仅仅所处的状态不同。
A.分析结果B.事件C.动作D.数据答案:D54.数据字典中,一般不包括下列选项中的( )条目。
A.数据流B.数据存储C.加工D.源点与终点答案:D55.在软件需求分析中,开发人员要从用户那里解决的最重要的问题是( )。
A.要让软件做什么B.要给该软件提供哪些信息c.要求软件工作效率怎样D.要让软件具有何种结构答案:A56.需求分析最终结果是产生( )。
A.项目开发计划B.可行性分析报告C.需求规格说明书D.设计说明书答案:C57.SA方法用DFD描述( )。
A.系统的控制流程B.系统的数据结构C.系统的基本加工D.系统的功能答案:D58.SA方法的分析步骤是首先调查了解当前系统的工作流程,然后( )。
A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型C.获得当前系统的逻辑模型,建立当前系统的物理模型,抽象出目标系统的逻辑模型D.获得当前系统的逻辑模型,建立当前系统的物理模型,建立目标系统的物理模型答案:A59.需求分析阶段不适于描述加工逻辑的工具是( )。
A.结构化语言C.判定树B.判定表D.流程图答案:D60.结构化分析方法(SA)最为常见的图形工具是( )。
A.程序流程图B.实体联系图C.数据流图D.结构图答案:C61.sA方法的基本思想是( )。
A.自底向上逐步抽象B.自底向上逐步分解C.自顶向下逐步分解D.自顶向下逐步抽象答案:C62.下面错误的说法是( )。
一、选择题1、系统流程图是一种传统工具,用于描绘(D)。
A、逻辑模型B、程序结构C、体系结构D、物理系统2、软件可行性研究的目的是(C)。
A、证明软件开发项目可行B、证明软件开发项目不可行C、阐述软件开发项目值得或不值得做D、为了确定软件开发项目要不要做3、技术可行性研究要解决的问题是(A)。
A、从技术方面说明项目是否可行B、从技术上定义项目要解决的问题C、给出项目开发可行的技术路线D、给出精简的项目需求设计报告4、可行性研究的步骤首先是(A)。
A、确定项目目标,即对要解决的问题进行定义B、研究项目要求C、对项目目标进行可行性分析D、给出可行的解决方案5、可行性研究的任务不包括(D)。
A、技术可行性B、经济可行性C、法律可行性D、政治可行性6、系统流程图是描述(A)的工具。
A、物理系统B、逻辑系统C、体系系统D、程序系统7、可行性研究实质上是要进行一次(A)需求分析,设计过程。
A、简化、压缩的B、详细的C、彻底的D、深入的8、系统流程图的符号不包括(D)。
A、B、C、D、二、简答题1、软件开发的早期,为什么要进行可行性研究?目标的可行性研究有几个方面?答:许多软件开发问题都不能在预期的时间范围内或资源限制下得到解决。
如果开发人员没有尽早停止没有可行解决方案的开发项目,就会造成时间、资金、人力、物力的浪费。
为了降低软件开发失败的可能性,需要进行软件可行性研究。
可行性研究要从经济可行性、技术可行性、运行可行性和法律可行性四方面进行。
2、简述可行性研究的步骤。
答:(1)审核系统的规模和目标;(2)分析研究现行系统;(3)设计新系统的高层逻辑模型;(4)获得并比较可行的方案;(5)撰写可行性研究报告。
3、某航空公司为了方便旅客,拟开发一个机票预订系统。
将旅客的信息(姓名、性别、工作单位、身份证号、旅行时间、旅行目的地等)输入该系统后,系统自动为旅客安排航班。
打印出取票通知和票务账单。
旅客可在航班的前一天凭取票通知和票务账单交款取票。
第1章概述(习题与参考答案)[判断题]1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越复杂。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变化D. 以上所有选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
第二章练习题一、判断题1. 软件的模块数越少,其软件成本越低。
错2. 软件模块之间的耦合性越弱越好。
对3. 模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
对4. 耦合是指一个模块内各个元素彼此结合的紧密程度。
错5. 过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。
错6. 在设计模块时,其宽度和深度要适当。
对7. 模块耦合的强弱取决于模块间接口的复杂程度。
对二、名字解释:1. 抽象:抽象是认识复杂现象过程中使用的思维工具,即抽象出事物本质的共同特性而暂时不考虑其他的细节,不考虑其他因素。
2. 模块化:模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成为若干模块的过程。
每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能。
3. 逐步求精:4. 耦合:耦合也成模块叫联系,指软件系统结构中各模块间相互联系紧密程序的一种度量。
5. 内聚:内聚又称块联系。
指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量6. 模块独立:模块独立想指每个模块只完成系统要求的独立的子功能,并且与其他模块联系最少且接口最简单。
7. 信息隐蔽:信息隐蔽在设计和确定模块时,使得一个模块内包含信息,对于不需要这些信息的其他模块来说事不能访问的。
三、选择题10. 在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有( B)。
BA. 隐藏复杂性B. 信息隐蔽C. 经常类的复用D. 类的开发20、为了提高模块的独立性,模块内部最好是( C )CA、逻辑内聚B、时间内聚C、功能内聚D、通信内聚33、从心理学角度看,一次大模块分解为多少个子模块为宜。
(B )BA、3±1B、7±2C、15±1D、18±238、软件设计启发规则不包括( C )CA、在耦合方式上降低模块间接口的复杂性B、模块功能应该可以预测C、将模块的控制域保持在其作用域内D、设计单入口单出口的模块40、为了提高模块的独立性,模块之间的联系最好的是(D)。
《软件工程》试题及参考答案(第2套)《软件工程》试题及参考答案(第2套)一、选择题1.在软件工程中,瀑布模型的生命周期包括以下几个阶段()。
A.需求分析阶段B.设计阶段C.编码阶段D.测试阶段E.维护阶段F.以上都包括参考答案:F.以上都包括2.软件工程的基本特性包括()。
A.可维护性B.可移植性C.可靠性D.可重用性E.可伸缩性F.以上都包括参考答案:F.以上都包括3.以下哪种模型强调迭代和增量开发?A.瀑布模型B.原型模型C.敏捷模型D.螺旋模型参考答案:D.螺旋模型4.软件工程中的需求分析包括()。
A.系统功能需求B.非功能需求C.用户需求D.软件需求E.硬件需求F.以上都包括参考答案:F.以上都包括5.在软件测试中,黑盒测试主要是通过()来检查程序功能是否正确。
A.检查程序内部逻辑B.检查代码覆盖率C.检查输入输出D.检查程序性能参考答案:C.检查输入输出二、填空题1.软件工程中的标准化组织是指由()制定的一系列标准。
参考答案:IEEE2. V字模型的测试活动是()的。
参考答案:并行进行3. 敏捷开发的核心原则是()。
参考答案:个体和交互高于流程和工具4. 软件开发中,CI是指()的集成。
参考答案:持续5. 软件工程中的 CASE 是指()。
参考答案:计算机辅助软件工程三、简答题1.请简要阐述软件工程的定义及其重要性。
参考答案:软件工程是一门研究如何有效地设计、创建和维护软件的学科。
它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试等各个阶段。
软件工程的重要性体现在以下几个方面:1) 提高软件质量:通过采用系统化的方法和标准化的流程,可以减少软件缺陷和错误,提高软件的质量和可靠性。
2) 提高软件开发效率:软件工程提供了一整套的方法和工具,可以提高软件开发的效率和生产率,减少开发周期和成本。
3) 管理软件开发过程:软件工程强调项目管理和团队合作,可以有效地管理软件开发过程,确保项目按时交付,并能够满足用户需求。
习题二参考答案一. 填空题1.值得去开发, 其中的问题能否解决,需求分析, 设计2. 技术, 经济, 社会3. 研究正在运行的系统, 建立新系统的高层逻辑模型4. 所建议系统的技术可行性分析, 所建议系统的经济可行性分析, 社会因素可行性分析5. 经济角度开发成本比较和权衡二、选择题1. A2. B【解析】:经济可行性是从开发费用和软件回报的角度来分析开发该软件系统是否可行。
技术可行性是从软件实现的功能、用户要求的软件性能、是否有技术难题等方面等考虑开发该软件的可行性问题。
操作可行性判断系统的操作方式在该用户组织内是否可行,法律可行性对方在考虑开发的软件系统可能会涉及的任何侵犯、妨碍、责任等问题做出决定。
所以答案为B。
3. B4. D5. D【解析】:在软件开发中,开发人员的交流似乎非常主要的,而一个开发人员进入一个新的软件系统做开发,需要相当长的一个阶段以适应该软件的开发,这主要是由于新的人员需要一定时间的培训以熟悉该软件系统的开发状况及该软件的需求分析、定义和相关已经生成的文档,以便在软件开发中与老开发人员的交流和通信,一推动软件开发前进。
所以答案为D。
6. D【解析】:软件的计划主要是根据软件开发的要求、软件系统的规模等,对软件开发的各种资源(包括软硬见资源及开发人员)进行合理的规划,以便在开发过程中得到合理的调度,从而使软件开发最充分地利用资源,以在最短的时间内取得最大的经济效益;软件工程经济学的任务是对软件开发的成本、效益等进行分析和估算;软件工程管理学的任务是有效组织和管理软件开发,软件工程开发技术的任务之一是设计和测试软件系统。
所以答案是D。
7. A 8. A 9. C 10. D三、简答题1.可行性研究首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制。
把它们清楚地列举出来。
然后,分析员进行简要的需求分析,经过压缩的设计,探索出若干种可供选择的主要解决方法。
第二章软件工程管理习题参考答案一.选择题1. C2. B3. B4. C5. C6. B7. B二.简答题1、40人分成8组比40人归为一组更合适。
因为软件开发组的规模会直接影响到组内成员间沟通的代价,40人一个组,要想两两间都能沟通,渠道有40×(40 – 1)/ 2 个。
要是小组只有5个人那要方便的多,不同小组之间要想沟通再通过各组代表即可。
此外在管理等方面上也是分成8组更有优势。
2、要开发的项目是图书馆管理系统,是一个典型的管理信息系统(MIS)。
可以按照MIS 开发的一般经验来做相关计划。
(1)需求分析和设计、实现、测试按4:2:4的时间分配。
(2)项目经理:整个项目的管理系统分析员:需求的获取和分析软件架构师:软件的设计程序员:编码实现和单元测试测试人员:集成测试、系统测试集成人员:系统实施客户:参与需求获取、验收测试3、相同点都是质量管理方面的权威认证体系。
不同点主要体现在:(1)ISO9000比CMM 针对的范围广泛,CMM用于软件企业的能力成熟度评估。
(2)ISO9000是获得资质的最低标准,CMM是一个指导软件企业可持续改进的体系框架。
(3)ISO9000是基于文档管理的。
4、我会选择民主型项目组,因为本产品是一个技术创新型的产品,对技术要求高,需要开发团队能够充分沟通,最大化集体智慧的力量。
开发的软件过程模型会选择螺旋模型,因为项目开发的风险比较大,主要反映在市场竞争激烈和开发难度方面上,螺旋模型能够更好的监控项目风险,此外螺旋模型中的快速原型思想也能够更好的确定用户需求,降低需求变动带来的风险。
(试题一)1、根据说明回答问题1~3(共16分)【说明】某高校开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1.每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2.学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3.在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
4.对于有效成绩,系统将其保存在课程成绩文件中。
对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5.若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。
教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6.在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
主讲教师须将核对之后的成绩报告返还系统。
7.根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
现采用结构化方法对这个系统进行分析与设计,得到如图1所示的顶层数据流图和图2所示的0层数据流图。
图1. 顶层数据流图图2. 0层数据流图【问题1】(6分)根据顶层数据流图,使用说明中的词语,填些表中元素所代表的数据流、源和宿。
【问题3】(6分)0层数据流图缺少了三条数据流,根据说明及数据流图提供的信息,分别2、根据说明回答问题1和问题2(共10分)【说明】某招聘管理信息系统的主要功能如下:(1)验证应聘者所提供的自身信息是否完整,是否说明了应聘职位,受理验证合格的申请,给应聘者发送致谢信息。
复习要点:软件、软件危机、软件工程、软件工程过程、软件工程化和标准化、软件工具和CASE的概念、7条基本原理、三要素与质量的关系。
★软件:软件是由计算机程序、数据及文档组成的。
★软件危机:在软件开发过程中出现的了许多问题。
★软件工程:(1)Feitz Bauter 在NATO上给出软件工程的定义:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理;(2)IEEE给出的定义:软件工程是开发、运行、维护和修复软件的系统方法;(3)《计算机科学技术百科全书》给出的定义:软件工程是应用计算机科学、数学及其管理科学等原理开发软件的工程。
★软件工程过程:软件过程是把输入转化为输出的一组彼此相关的资源和活动。
★软件工程化和标准化:软件工程化就是把软件工程理论应用到软件开发组织中,以改进软件产品开发的时间(T)、质量(Q)、成本(C)、服务(S)。
通过在整个软件开发组织中建立有序的、有限步骤的、符合规则的过程,达到提高软件开发质量,缩短软件开发周期等目的;一个软件项目开发需要多层次、不同分工的人员互相配合,开发项目的各个阶段和各个部分之间也有许多联系和衔接问题,如何把这些错综复杂的关系协调好,需要一系列的统一的约束和规定,也就是说需要软件工程标准化。
★软件工具:软件工具是用来辅助软件开发、运行、维护、管理和支持等过程中活动的软件。
★CASE(计算机辅助软件工程):将各种软件工具、开发机器和一个存放开发过程信息的工程数据组合起来而形成的一个软件工程环境。
★软件工程7条基本原理:(1)按软件生存期分阶段制定计划并认真实施;(2)坚持进行阶段评审;(3)坚持严格的产品控制(4)使用现代程序设计技术(5)明确责任,使得工作结果能够得到清楚的审查(6)人员应少而精(7)不断进行开发过程。
★软件工程三要素:方法、工具、过程。
★三要素与质量的关系:软件工程的三要素与软件质量构成一种层次化技术,关注质量是根本出发点;软件过程是整个体系的基础,是各种方法和工具的粘合剂;方法包括管理方法和技术方法,提供如何完成活动的指南和准则;工具使得过程利于方法自动化或半自动化,从而提高效率。