软件工程课后习题集(含答案解析)
软件工程导论(第六版)部分课后习题-答案
软件工程导论(第六版)部分课后习题-答案软件工程导论(第六版)部分课后习题-答案一、选择题1. 答案:B解析:选择题解析2. 答案:A解析:选择题解析二、判断题1. 答案:对解析:判断题解析2. 答案:错解析:判断题解析三、填空题1. 答案:软件工程解析:填空题解析2. 答案:开发、维护解析:填空题解析四、简答题1. 答案:软件需求分析是软件工程的第一步,它主要是通过对用户需求的调查和分析,确定软件系统需要具备的功能和性能以及相关约束条件。
解析:简答题解析2. 答案:软件开发过程中的质量保证主要包括软件测试和代码评审两个方面。
软件测试是通过运行和验证软件系统的过程,以确定其是否满足预期的需求和标准。
代码评审则是对软件代码进行审查和评估,在开发过程中发现和修复潜在的问题和错误。
解析:简答题解析五、计算题1. 答案:20解析:计算题解析2. 答案:1000解析:计算题解析六、案例分析题1. 答案:软件项目管理是指对软件项目进行规划、组织、分配和控制的过程。
它包括项目范围管理、时间管理、成本管理、质量管理、风险管理等方面。
在一个项目中,软件项目经理负责整体的项目管理工作,包括资源的分配、进度的控制、风险的管理等。
解析:案例分析题解析2. 答案:敏捷开发是一种迭代、逐步增量的软件开发方法。
它强调快速、灵活地响应用户需求的变化,通过频繁的迭代和持续的反馈来逐步完善软件系统。
敏捷开发方法注重团队合作、交流和高效的沟通,通过直接面对面的沟通取代冗长的文档和繁琐的流程,提高软件开发的效率和质量。
解析:案例分析题解析总结:本文主要针对《软件工程导论(第六版)》部分课后习题提供了答案和解析。
其中包括选择题、判断题、填空题、简答题、计算题和案例分析题等多个题型。
通过解答这些习题,读者可以进一步加深对软件工程的理解和掌握。
希望本文对读者有所帮助,谢谢阅读。
《软件工程》各章课后习题答案
《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。
课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。
下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。
第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。
2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。
3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。
每个模型都有其独特的特点和适用场景。
4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。
5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。
第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。
2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。
3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。
4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。
第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。
2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。
3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。
(完整word版)软件工程习题及答案解析
软件工程习题及答案一、选择题:1。
为了提高测试的效率,应该。
A、随机地选取测试数据B、取一切可能的输入数据作为测试数据C、在完成编码后制定软件的测试计划D、选择发现错误可能性大的数据作为测试数据2. 与设计测试数据无关的文档是。
A、需求说明书B、设计说明书C、源程序D、项目开发设计3. 结构设计是一种应用最广泛的系统设计方法,是以为基础、自顶向下、逐步求精和模块化的过程。
A、数据流B、数据流图C、数据库D、数据结构4。
概要设计的结果是提供一份。
A、模块说明书B、框图C、程序D、数据结构5。
需求分析是由分析员经了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型并写出。
A、模块说明书B、软件规格说明书C、项目开发计划D、合同文档6。
注释是提高程序可读性的有效手段,好的程序注释占到程序总量的。
A、1/6B、1/5C、1/4D、1/37. 变换型和事务型是程序结构的标准形式.从某处获得数据,再对这些数据作处理,然后将结果送出是属于。
A、变换型B、事务型8。
PAD(Problem Analysis Diagram)图是一种工具.A、系统描述B、详细设计C、测试D、编程辅助9. 分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的。
A、总貌B、细节C、抽象D、软件的作者10。
数据流图中,当数据流向或流自文件时,。
A、数据流要命名,文件不必命名B、数据流不必命名,有文件名就足够了C、数据流和文件均要命名,因为流出和流进数据流是不同的D、数据流和文件均不要命名,通过加工可自然反映出11. 分析员是.A、用户中系统的直接使用者B、用户和软件人员的中间人C、软件的编程人员D、用户和软件人员的领导12. 在软件开发中,有利于发挥集体智慧的一种做法是.A、设计评审B、模块化C、主程序员制D、进度控制13. 在开发软件时, 可用来提高程序员的工作效率.A、程序开发环境B、操作系统的作业管理功能C、编译程序的优化功能D、并行运算的大型计算机14. 结构化程序设计主要强调程序的。
软件工程(第四版)习题及解答1-7
判定树:
Байду номын сангаас重量<=2Kg——12元
重量>2Kg且<=20Kg——6W元
重量>20Kg——6.5(W-20)+120
重量<=2Kg——24元
重量>2Kg且<=20Kg——12W元
重量>20Kg——13(W-20)+240
6.
设汇款金额为W元。判定树如下:
汇额本埠/外埠汇费
<=200 ----------------------- 2元
scd = fst
fst=k[i]
T
F
k[i]>scd
Scd=k[i]
I=i+1
输出fst,scd
(3)求s=1- 1/2!+1/3!-1/4! +…. +1/n!,其中n的值由键盘输入。
PAD图如下:
2.根据伪码画PAD图
3.将程序流程图转化为PAD图
(1)
(2)
(3)
(4)
(5)
对于分支结构
if(f)
3、(1)模块功能的完善化(2)消除重复功能,改善软件结构(3)模块规模应该适中(4)模块的深度、宽度、扇出和扇入都应适当(5)模块的作用范围应该在控制范围之内(6)力争降低模块接口的复杂程度(7)设计单入口、单出口的模块(9)模块功能应该可以预测
四、应用题
1、模块A和B是数据耦合,模块B是功能内聚。
软件工程第6章-课后作业参考(附答案)
软件⼯程第6章-课后作业参考(附答案)第六章作业题参考答案3.画出下列伪码程序的程序流程图和盒图: STARTIF p THENWHILE q DO f END DO ELSEBLOCK g nEND BLOCK END IF STOP 答:(1)流程图如图6-1所⽰:图6-1从伪码变成的程序流程图(2)该程序的盒图如图6-2所⽰:图6-2 从伪码变成的程序盒图4.下图给出的程序流程图代表⼀个⾮结构化的程序,请问:(1)为什么说它是⾮结构化的?(2)设计⼀个等价的结构化程序。
(3)在(2)题的设计中你使⽤附加的标志变量flag吗?若没⽤,请再设计⼀个使⽤flag 的程序;若⽤了,再设计⼀个不⽤flag 的程序。
答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。
图⽰的程序的循环控制结构有两个出⼝,显然不符合狭义的结构程序的定义,因此是⾮结构化的程序。
(2)使⽤附加的标志变量flag,⾄少有两种⽅法可以把该程序改造为等价的结构化程序,图6-3描绘了等价的结构化程序的盒图。
(a)解法1(b)解法2图6-3 与该图等价的结构化程序(⽤flag)(3)不使⽤flag把该程序改造为等价的结构化程序的⽅法如图6-4所⽰。
图6-4 与该图等价的结构化程序(不⽤flag)8.画出下列伪码程序的流图,计算它的环形复杂度。
你觉得这个程序的逻辑有什么问题吗?C EXAMPLELOOP:DO WHILE X>0A=B+1IF A>10THEN X=AELSE Y=ZEND IFIF Y<5THEN PRINT X,YELSE IF Y=2THEN GOTO LOOPELSE C=3END IFEND IFG=H+REND DOIF F>0THEN PRINT GELSE PRINT KEND IFSTOP答:(1)该伪码的流程图如图6-8所⽰:图6-8 程序流程图根据该程序流程图,可得该程序流图如图6-9所⽰:图6-9 程序流图环形复杂度V(G)=流图中的区域数=流图中判定结点数⽬+1=6+1=7 (判定结点为:1、3、6、8、10、11)(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。
(完整版)软件工程概论课后习题答案
项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。
优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。
产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:
(1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。
(2)软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。
(3)软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。
(4)随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。
(3)软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都是意义明确的构件,此即所谓概要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。
(4)程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。
1.3如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?
可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。
1.4什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件工程课后习题答案
软件工程课后习题答案1. 什么是软件工程?软件工程是一种应用工程原理和方法的学科,目的是开发高质量的软件。
软件工程包括以下几个方面:•需求分析:确定用户的需求,并将其转化为可执行的软件功能。
•设计:设计软件的架构和模块,并确定各个模块的功能和关系。
•编码:实现软件的设计,将设计的模块通过编程语言编写成可执行的代码。
•测试:通过不同的测试方法和技术对软件进行验证,确保软件的质量和可靠性。
•维护:对软件进行改进和修复,以适应用户需求的变化和修复软件中的错误。
2. 软件工程的目标是什么?软件工程的目标是开发高质量的软件,以满足用户的需求。
具体目标包括:•可靠性:软件应该能够正常运行并处理各种输入情况,不会崩溃或导致系统故障。
•可维护性:软件应该易于理解和修改,以适应用户需求的变化和修复软件中的错误。
•可扩展性:软件应该能够在不改变其基本架构的情况下,方便地添加新的功能模块。
•可重用性:软件应该能够被多个项目和团队复用,以提高开发效率。
•可测试性:软件应该易于测试,以确保其功能和性能符合预期。
3. 软件开发生命周期有哪几个阶段?软件开发生命周期通常包括以下几个阶段:1.需求分析和定义阶段:在这个阶段,软件工程师与用户沟通,了解用户的需求和期望。
然后,设计师将这些需求转化为软件规格说明。
2.软件设计阶段:在这个阶段,设计师根据需求规格说明书设计软件的架构和模块,并确定模块之间的关系和功能。
3.编码阶段:在这个阶段,开发人员根据设计文档编写代码,实现软件的功能。
4.测试阶段:在这个阶段,测试人员使用不同的测试方法和技术对软件进行验证,以确保软件的质量和可靠性。
5.部署和维护阶段:在这个阶段,软件工程师将软件部署到实际的运行环境中,并根据用户的反馈进行改进和修复。
4. 什么是软件需求?软件需求是对系统或软件功能和性能的描述,它描述了用户的需求和期望。
软件需求通常包括以下几个方面:•功能需求:描述软件应该具有的功能,以及这些功能如何满足用户的需求。
《软件工程》课后习题答案
1、可行性研究的目的是用最小的代价,在尽可能短的时间,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
软件工程课后习题参考答案
软件工程课后习题参考答案1.简述软件开发的本质。
答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
P192.简述实施软件开发的基本途径。
答:实施软件开发的基本途径是系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。
P193.简述何谓模型以及软件开发中所涉及的模型。
答:模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
4.简述软件开发所涉及的两大类技术。
答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。
5、简述需求与需求规约的基本性质。
答:需求的基本性质:1)必要的,该需求是用户所要求的。
2)无歧义的,该需求只能用一种方式解释。
3)可测的,该需求是可进行测试的。
4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。
5)可测量的,该需求是可测量的。
需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。
2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
3)完整的:没有被遗漏的需求。
4)一致的:不存在互斥的需求。
6、简述软件需求的分类。
答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、设计约束和质量属性需求。
P237、举例说明功能需求和非功能需求之间的基本关系。
答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求38、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。
软件工程课后习题答案
软件⼯程课后习题答案习题答案习题⼀答案⼀、选择题1. 软件的主要特性是(A B C)。
A) ⽆形 B) ⾼成本C) 包括程序和⽂档D) 可独⽴构成计算机系统2. 软件⼯程三要素是(C D)。
A) 技术、⽅法和⼯具B) ⽅法、⼯具和过程C) ⽅法、对象和类D) 过程、模型、⽅法3. 包含风险分析的软件⼯程模型是(A)。
A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型4. 软件⼯程的主要⽬标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于⾯向对象开发⽅法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太⾼B) 软件产品的质量低劣C) 软件开发⼈员明显不⾜D) 软件⽣产率低下7. 软件开发⽅法的主要⼯作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件⼯程的⽬标有(A B C)。
A) 易于维护B) 低的开发成本C) ⾼性能D) 短的开发期9. 软件⼯程学的⽬的和意义是( )。
A) 应⽤科学的⽅法和⼯程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训⼯作D) 以较低的成本开发出⾼质量的软件⼆、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最⼤优点是将软件开发的各个阶段划分得⼗分清晰。
(×)3. 结构化⽅法的⼯作模型是使⽤螺旋模型进⾏开发。
(×)4. 结构化⽅法和JSP⽅法都不适合于⼤型软件的开发。
(√)5. 原型化开发⽅法包括⽣成原型和实现原型两个步骤。
(×)6. ⾯向对象的开发⽅法包括⾯向对象的分析、⾯向对象的设计和⾯向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件⼯具的作⽤是为了延长软件产品的寿命。
软件工程课后习题答案2-12章
书状态为S2&终端 输入“H=”加书名 管理员设置状 态 管理员删除 管理员添加
预约
书出库(删除) 书入库
图4.4.2
(三)图书馆终端用户模式的有穷状态机描述 • 状态机J:{读者查询状态,查询结果} • 输入集K:{终端输入用户查询命令,书的各种 状态(S1,S2,S3)} • 转换函数T:如图4.4.3所示 • 初始态S:{读者查询状态} • 终态集F:{查询结果}
取票通知 账单 机票 账单
P3.1 核对取票凭证 顾客 取票通知 P3.2 交款 机票 P3.3 打印机票
机票预定系 统
信 息 通 知 单 机 票
账
单
信息
机票
通
预定信息处 理
信息
知
账
通
单
有
单
取票凭证处 理
通知 账单 单
账单
信 息 定 预 航班信
息
机票预定子 系统
单 知
机票发放子 系统
效 通 知
机
票
取款单
P3.1输入取款 信息
取款信息 E1储 户 密码 P3.2 密码校验
P4 计算利息
利息 利息 P5 打印利息 清单
密码正确信息
E2业 务员
利率
P6设置利 率
利率
不能是两个分开的子系统,是相同的前台单个处理
银行储蓄系 统
存 款 单 款
率 利
利 存单 息清单
密 码
业务单据录 入
利 率
存款单
取
单
储蓄业务处理
(一)图书状态的有穷状态机描述 • 状态机J:{书在图书馆S1,书被借出S2, 书被预约S3} • 输入集K:{书上条形码,借阅卡条形码, 终端输入各种命令} • 转换函数T:如图4.4.1所示 • 初始态S:{书在图书馆S1,书被借出S2} • 终态集F:{书被借出S2,书被预约S3}
软件工程习题及课后答案
第2章软件过程(习题与参考答案)[选择题]1. ()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。
()A. 软件过程B. 软件工具C. 软件产品D. 软件工程2. 软件过程的基本活动是()。
()A. 分析、设计、实现、测试、演化B. 沟通、计划、建模、构造、部署C. 计划、分析、设计、实现、调试D. 沟通、风险管理、度量、产品化、评审3. ()软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。
()A. 真B. 假4. 软件开发的瀑布模型是()。
()A. 适用于需求被清晰定义的情况B. 一种需要快速构造可运行程序的好方法C. 最适合于大规模团队开发的项目D. 已不能用于现代环境的过时模型5. 软件开发的增量模型是()。
()A. 适用于需求被清晰定义的情况B. 一种需要快速构造核心产品的好方法C. 最适合于大规模团队开发的项目D. 一种不适用于商业产品的创新模型6. 快速原型开发模型是()。
()A. 适用于客户需求被明确定义的情况B. 适用于客户需求难以清楚定义的情况C. 最适合于大规模团队开发的项目D. 很难产生有意义产品的一种冒险模型7. 演进式软件过程模型()。
()A. 本质上是迭代的B. 可以很容易适应需求的变化C. 通常不会抛弃所产生的系统D. 以上所有选项8. 螺旋模型()。
()A. 在软件产品发布时结束B. 比增量模型更加混乱C. 在每一次迭代过程中包含项目风险评价D. 以上所有选项9. 基于组件的开发模型()。
()A. 只适用于计算机硬件设计B. 不能支持可重用组件的开发C. 在面向对象技术获得支持的情况下应用得更好D. 增加了开发风险和成本10. 形式化方法模型是将数学方法用于()。
()A. 定义计算机系统的规格说明B. 开发无错误的计算机系统C. 验证计算机系统的正确性D. 以上所有选项11. 下面的()不是RUP模型的阶段。
软件工程(习题与参考答案)
第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. 〔〕是将系统化的、标准的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
软件工程课后习题及其答案
软件工程习题CH1一、填空题1、软件工程需要解决的问题包括:费用、可靠性、可维护性、生产率和重用。
2、到目前为止,软件生产的发展经历了三个阶段,即程序设计、程序系统和软件工程。
3、计算机科学中的研究曾国均可用于软件工程,但计算机科学侧重于原理和理论,而软件工程侧重于软件系统构造。
4、软件工程有用管理科学的方法和原理进行软件生产的管理。
5、软件工程是用科学知识和技术原理来定义、开发、维护软件的一门科学。
6、软件工程研究的主要内容包括软件开发技术和软件开发管理技术两个方面。
在软件开发技术方面,主要研究开发方法、开发过程、开发工具。
在软件开发管理技术方面主要研究管理学、经济学、心理学。
7、作为一门交叉学科,软件工程具有很强的综合性,它涉及计算机科学、工程科学、管理科学、数学等领域。
8、软件生产周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。
通常包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。
9、开发软件工具的主要目的是为了提高软件生产效率和改善软件的质量。
10、描述软件开发过程中各种活动如何执行的模型称为周期模型。
11、从软件工程诞生以来,已经提出了多种软件开发方法,如结构化方法、面向数据的方法、面向对象的方法,它们对软件工程及软件产业的发展起到了不可估量的作用。
12、结构化方法由结构化分析、结构化设计和结构化程序设计构成。
它是一种面向数据流的开发方法。
13、增量模型是一种非整体开发方法的模型。
软件在该模型中是“逐渐”开发出来的,开发一部分向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
14、喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。
软件工程课后参考答案解析
第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是指导知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程习题及答案解析
软件工程习题及答案一、选择题:1. 为了提高测试的效率,应该。
A、随机地选取测试数据B、取一切可能的输入数据作为测试数据C、在完成编码后制定软件的测试计划D、选择发现错误可能性大的数据作为测试数据2. 与设计测试数据无关的文档是。
A、需求说明书B、设计说明书C、源程序D、项目开发设计3. 结构设计是一种应用最广泛的系统设计方法,是以为基础、自顶向下、逐步求精和模块化的过程。
A、数据流B、数据流图C、数据库D、数据结构4. 概要设计的结果是提供一份。
A、模块说明书B、框图C、程序D、数据结构5. 需求分析是由分析员经了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型并写出。
A、模块说明书B、软件规格说明书C、项目开发计划D、合同文档6. 注释是提高程序可读性的有效手段,好的程序注释占到程序总量的。
A、1/6B、1/5C、1/4D、1/37. 变换型和事务型是程序结构的标准形式。
从某处获得数据,再对这些数据作处理,然后将结果送出是属于。
A、变换型B、事务型8. PAD(Problem Analysis Diagram)图是一种工具。
A、系统描述B、详细设计C、测试D、编程辅助9. 分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的。
A、总貌B、细节C、抽象D、软件的作者10. 数据流图中,当数据流向或流自文件时,。
A、数据流要命名,文件不必命名B、数据流不必命名,有文件名就足够了C、数据流和文件均要命名,因为流出和流进数据流是不同的D、数据流和文件均不要命名,通过加工可自然反映出11. 分析员是。
A、用户中系统的直接使用者B、用户和软件人员的中间人C、软件的编程人员D、用户和软件人员的领导12. 在软件开发中,有利于发挥集体智慧的一种做法是。
A、设计评审B、模块化C、主程序员制D、进度控制13. 在开发软件时,可用来提高程序员的工作效率。
A、程序开发环境B、操作系统的作业管理功能C、编译程序的优化功能D、并行运算的大型计算机14. 结构化程序设计主要强调程序的。
(完整版)软件工程课后习题答案
第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。
●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。
●软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。
例如:编译软件、操作系统。
2.支撑软件支撑软件是支撑软件的开发和维护的软件。
例如:数据库管理系统、网络软件、软件工具、软件开发环境。
3.应用软件应用软件是特定应用领域专用的软件。
例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
1.3简述软件语言的分类,并举例说明。
1.需求定义语言是用于书写软件需求定义的语言。
例如:PSL/PSA。
2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。
例如:广谱语言、Z 语言。
3.设计性语言是用于书写软件设计规约的语言。
例如:PDL。
4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。
例如:C、java、PROLOG、FORTRAN、COBOL、Modula。
5.文档语言是用于书写软件文档的语言。
通常用自然语言或半形式化语言书写。
1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
1.5简述软件工程的基本原则。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。
1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。
2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
3.提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章练习题一、填空题1、软件工程三要素是:方法、工具、过程。
2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。
二、名词(术语)解释:1、可靠性---是指在给定的时间间隔,程序成功运行的概率。
可靠性是衡量软件质量的一个重要目标。
2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。
可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。
三、问答题1、面向对象方法的优点是什么?答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。
(2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。
2、可视化开发方法的优点有哪些?答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。
(2)软件开发简单,易学、易上手。
(3)专业或非专业人员都能参与软件开发活动。
第二章练习题一、填空题:1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。
2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。
3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。
4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规、项目规。
二、简答题:1、瀑布模型的优点有哪些?答:1、强迫开发人员采用规的技术方法;2、严格地规定了每个阶段必须提交的文档;3、每个阶段结束前必须正式进行严格的技术审查和管理复审。
2、瀑布模型的缺点是什么?答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2、在需求分析阶段,当需求确定后,无法及时验证需否正确、完整。
3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。
3、原型模型适应什么场合?答:原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。
它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
第三章练习题一、填空题1、COCOMO II的3个阶段是:应用组装、早期设计、后体系结构。
2、分析任务图中的里程碑路径被称为关键路径。
3、项目的特征:唯一性、一次性、整体性、多目标性、寿命周期阶段性。
二、简答题1、什么是里程碑?答:在制定项目进度计划时,在进度时间表上设立一些重要的时间检查点,这样一来,就可以在项目执行过程中利用这些重要的时间检查点来对项目的进程进行检查和控制。
这些重要的时间检查点被称作项目的里程碑(Milestone)。
2、请扼要描述Boehm的十大风险事项。
答:Personnel shortfalls人员短缺Unrealistic schedules and budgets不现实的进度和预算Developing the wrong functions开发了错误功能Developing the wrong user interfaces开发了错误的用户界面Gold-plating华而不实Continuing stream of requirements changes不断的需求改变Shortfalls in externally-performed tasks外部执行的任务不符合要求Shortfalls in externally-furnished components外部提供的组件不符合要求Real-time performance shortfalls实时性能不符合要求Straining computer science capabilities超出了计算机科学的能力3、如何成功管理风险?答:建立恰当的机制选择有效的识别方法选择有效评估发生可能性方法选择有效评估风险影响方法建立预防措施开发风险应对措施确定紧迫性确定风险的责任人4、什么是项目管理?答:两种含义管理活动:一种有意识地按照项目管理的特点和规律,对项目进行组织管理的活动管理学科:以项目管理活动为研究对象的一门学科,它是探索项目活动科学组织管理的理论与方法。
5、什么是软件项目管理?答:软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
软件项目管理的对象是软件工程项目,他所涉及的围覆盖了整个软件工程过程。
第4章练习题四、填空题1、需求可分解为4个层次:业务需求、用户需求、功能需求和非功能需求。
2、用户需求:用户需用户使用该软件要完成的任务。
3、功能需求:功能需求定义了软件必须实现的功能。
4、需求分析阶段的工作有以下四个方面:引发、分析、编制需求分析阶段文档——规格说明、确认。
5、软件项目中40%-——60%的问题都是在需求阶段埋下的祸根!2、简答题1、IEEE在软件工程标准词汇表中的需求定义是什么?答:⑴用户解决问题或达到目标所需的条件或权能(Capability)。
⑵系统或系统部件要满足合同、标准、规或其它正式规定文档所需具有的条件或权能。
⑶一种反映上面(1)或(2)所描述的条件或权能的文档说明。
2、需求分析的目标是什么?答:构造一个完全地、精致地目标系统逻辑模型;确定设计约束和定义软件有效性要求。
3、需求分析的任务是什么?答:需求分析阶段研究的对象是软件项目的用户要求,其任务是借助当前系统的逻辑模型,调查研究、分析综合,并通过抽象思维、逻辑推理导出目标系统的逻辑模型,解决系统“做什么”的问题,并将结果准确表达。
4、请你扼要描述需求分析的实现步骤。
答:(1)分析现实世界,充分理解当前系统,并用一个具体模型描述,获得当前系统的物理模型。
(2)在理解当前系统“怎么做”的基础上,抽取“作什么”的本质,抽象出系统的逻辑模型。
(3)分析目标系统与当前系统逻辑上的差别,导出目标系统的逻辑模型。
(4)对目标系统逻辑模型进行补充,以求完整地描述。
5、需求规格书明书的主体容包括哪些?答:1)概述:软件需求的简要说明2)界面描述:软件系统的实现环境3)模型分析:系统模型的形式规定、限制和说明4)质量评审要求5)其他6、需求规格说明书的基本要什么?答:1)完整:考虑细致2)一致:前后容一致3)精确:数据、任务要精确4)无二义性:不提模棱两可的问题5)符合标准:按国家、国际标准书写6)易维护:应便于修改三、术语解释:聚合关联--------一个类是另一个类的所有物或元素,用一端带有空心菱形的关联来表示,“has-a”关系。
组装关联--------是一种特殊类型的聚合,复合类的实例是物理上由成分类的实例组成的(如,自行车由轮子、手把组成),用实心菱形的聚合表示。
概化关联———一个子类继承父类的所有属性、操作和关联,用一端带有三角形的关联表示,“is-a”关系。
第5章练习题一、填空题:1、健壮性:如果系统包含了适应环境以及从环境中或其他单元中的问题中恢复的机制,那么我们称该系统是健壮的。
2、原型化分为两种类型是:抛弃型原型和快速原型化。
二、简答题:1、满足质量属性有哪7个方面?答:可修改性、性能、安全性、可靠性、健壮性、易使用性、商业目标2、体系结构模式有哪6种?---P161答:理解系统复用以前系统元素展示构建系统蓝图推测系统将会如何演变分析依赖关系为管理决策提供支持3、造成设计崩溃的原因有哪些?答:缺少具体的设计方案缺少设计过程的元方案问题优先级选择不合理在定义解决方案时,难以考虑所有的约束难以在脑海中用多个步骤或多个用例对设计进行模拟难以跟踪和报告解决方案已经推迟的子问题难以从子问题进行扩展,以形成完整的解决方法第6章练习题一、填空1、6条设计原则是:模块化、接口、信息隐藏、增量式开发、抽象、通用性。
2、模块的扇入定义为:指直接调用该模块的上级模块的个数。
扇入大表示模块的复用程序高。
3、模块的扇出定义为:是指该模块直接调用的下级模块的个数。
扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。
扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的模块。
扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。
设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入。
4、设计模式的4个基本要素是:名称、要解决的问题、解决方案、应用后的效果。
二、简答题1、模块耦合有哪6种类型?答:容耦合公共耦合控制耦合标记耦合数据耦合非直接耦合3、模块聚有哪7种类型?答:巧合聚:部分各不相关。
逻辑聚:只通过代码的逻辑结构关联。
时态聚:设计被划分成几个用来表示不同执行状态的模块:初始化、读写输入、计算、打印输出,在一个任务中被使用而形成聚。
过程聚:按照每个确定的顺序执行一系列的功能。
通信聚:某些功能操作或生成同一个数据集。
功能聚:一个模块中包含了所有必须的元素,每个处理元素对于执行单个功能来说都是必须的。
信息聚:在功能聚的基础上,将其调整为数据抽象化和基于对象的设计。
三、术语解释信息隐藏------每个模块的实现细节对于其它模块来说是隐蔽的。
也就是说,模块中包含的信息(过程和数据)不允许其它不需要这些信息的模块使用。
第8-9章练习题一、填空1、测试用例的设计方法大体可分为两类:白盒测试和黑盒测试。
2、语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次。
3、边界值总结为三句话是:刚刚等于;刚刚大大于;刚刚小于。
4、单元测试又称模块测试,它着重对软件设计的模块(软件构件或模块)进行验证。
5、常用的系统测试包括恢复测试,安全测试,压力测试,性能测试。
6、安全测试用来验证集成在系统中的保护机制能否实际保护系统不受非法侵入。
二、简答题1、软件测试的目的是什么?答:测试是一个为了发现错误而执行程序的过程一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例一个成功的测试是指揭示了迄今为至尚未发现的错误的测试2、什么是白盒测试(又称为结构测试)?答:把测试对象看作一个透明的盒子,测试人员根据程序部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。
3、什么是黑盒测试?答:(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序部的逻辑结构和部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。
4、什么是等价类?答:等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。