软件工程作业及参考答案(版)
- 格式:docx
- 大小:29.39 KB
- 文档页数:6
软件工程作业8(含答案)1. 为了把握软件开发各个环节的正确性和协调性,人们需要进行( A 2)和( B 3 )工作。
( A )的目的是想证实在一给定的外部环境中软件的逻辑正确性。
它包括( C 2 )和( D 3 ),( B )则试图证明在软件生存期各个阶段,以及阶段间的逻辑( E 3 )、( F 4 )和正确性。
供选择的答案:A, B. ①操作②确认③验证④测试⑤调试C, D.①用户的确认②需求规格说明的确认③程序的确认④测试的确认E, F. ①可靠性②独立性③协调性④完备性⑤扩充性2. 软件测试是软件质量保证的主要手段之一,测试的费用已超过(A 1)的30%以上。
因此,提高测试的有效性十分重要。
“高产”的测试是指(B 3 )。
根据国家标准GB 8566–88《计算机软件开发规范》的规定,软件的开发和维护划分为8个阶段,其中,单元测试是在( C 5)阶段完成的,集成测试的计划是在( D 3)阶段制定的,确认测试的计划是在( E 2 )阶段制定的。
供选择的答案:A. ①软件开发费用②软件维护费用③软件开发和维护费用④软件研制费用⑤软件生存期全部B. ①用适量的测试用例运行程序,证明被测程序正确无误②用适量的测试用例运行程序,证明被测程序符合相应的要求③用少量的测试用例运行程序,发现被测程序尽可能多的错误④用少量的测试用例运行程序,纠正被测程序尽可能多的错误C ~ E. ①可行性研究和计划②需求分析③概要设计④详细设计⑤实现⑥集成测试⑦确认测试⑧使用和维护3. 集成测试也叫做( A 3)或( B 6)。
通常,在( C 1)的基础上,将所有模块按照设计要求组装成为系统。
子系统的集成测试特别称为(D 2 ),它所做的工作是要找出子系统和系统需求规格说明之间的( E 6)。
需要考虑的问题是:在把各个模块连接起来的时候,穿越模块接口的数据是否会( F 2);一个模块的功能是否会对另一个模块的功能产生不利的影响;各个(G 1 )组合起来,能否达到预期要求的(H 3);(I 5 )是否有问题;单个模块的误差累积起来是否会放大。
软件工程作业及参考答案第五、六章一、填空题1.详细设计的工具有(图形工具)、表格工具和语言工具。
2.为使用流程图描述结构华程序,限制流程图有五种基本的控制结构(顺序型)、(选择型)、(while型循环)、until循环、多情况型选择。
3.HIPO图是由一组(IPO)图和一张(HC)图组成。
4.IPO图由(输入)、处理和(输出)三个框组成。
这个图的特点是能够直观的显示三者之间的关系。
5.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。
面向对象方法是一种运用(对象)、(类)、(封装)、(聚合)、消息传送、多态性等概念来构造系统的软件开发方法。
6.面向对象的软件工程方法是面向对象方法在(软件工程)领域的全面应用。
7.UML的定义包括(UML语义)和(UML表示法)两个部分。
二、判断题1.详细设计是在概要设计之后进行的。
它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述。
(√)2.程序设计语言中应绝对禁止使用GOTO语句。
(╳)3.PAD图在设置了五种基本的控制结构后,还允许递归调用。
(√)4.UML设定的目标之一是运用面向对象概念来构造系统模型。
(√)5.类是关于对象性质的描述,由方法和数据集成。
(√)三、简答题1.详细设计的任务是什么?参考答案:1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2.确定每一模块使用的数据结构;3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
2.根据伪码画出N-S图。
STARTIF A THENBLOCKBCEND BLOCKEND IFSTOP3.根据伪码画出N-S图。
软件工程课后习题参考答案1.简述软件开发的本质。
答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
P192.简述实施软件开发的基本途径。
答:实施软件开发的基本途径是系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。
P193.简述何谓模型以及软件开发中所涉及的模型。
答:模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
4.简述软件开发所涉及的两大类技术。
答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。
5、简述需求与需求规约的基本性质。
答:需求的基本性质:1)必要的,该需求是用户所要求的。
2)无歧义的,该需求只能用一种方式解释。
3)可测的,该需求是可进行测试的。
4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。
5)可测量的,该需求是可测量的。
需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。
2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
3)完整的:没有被遗漏的需求。
4)一致的:不存在互斥的需求。
6、简述软件需求的分类。
答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、设计约束和质量属性需求。
P237、举例说明功能需求和非功能需求之间的基本关系。
答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求38、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。
《软件工程》试题及参考答案(第1套)《软件工程》试题及参考答案(第1套)一、单项选择题1. 软件工程的最终目标是:A. 提高软件开发效率B. 提高软件质量C. 提高软件维护效率D. 以上都是答案:D2. 下列哪项不属于软件需求分析的主要活动?A. 软件设计B. 需求获取和建模C. 需求验证和确认D. 需求管理答案:A3. 以下哪项不是构建阶段的主要活动?A. 编码B. 软件测试C. 软件集成D. 软件配置管理答案:D4. 下列哪个过程不属于软件项目管理过程?A. 需求管理B. 配置管理C. 软件测试D. 质量管理答案:C5. 下列哪个模型强调在系统开发的初期确定并冻结需求?A. 瀑布模型B. 快速原型模型C. V模型D. 增量模型答案:A二、多项选择题1. 软件过程模型的主要作用是:A. 规范软件开发的过程B. 定义软件开发的阶段C. 明确软件开发的任务分工D. 以上都是答案:D2. 软件生命周期是指:A. 软件的设计阶段B. 软件的测试阶段C. 软件的开发到维护的整个过程D. 软件的发布与用户反馈过程答案:C3. 软件测试的主要目标是:A. 寻找并修复软件中的错误B. 确保软件满足用户需求C. 提高软件的可靠性和质量D. 以上都是答案:D4. 下列哪个工具不属于软件配置管理工具?A. 版本控制工具B. 缺陷跟踪工具C. 自动化构建工具D. 可行性分析工具答案:D5. 下列哪个项目风险类型是与技术因素相关的?A. 市场竞争风险B. 技术风险C. 经济风险D. 法律风险答案:B三、简答题1. 请简要描述瀑布模型的开发流程。
瀑布模型的开发流程包括以下几个阶段:1) 需求分析阶段:收集用户需求,并进行详细的需求分析和建模。
2) 系统设计阶段:根据需求分析得到的系统需求,进行整体设计和详细设计。
3) 编码和单元测试阶段:将设计好的系统转化为可执行代码,并进行单元测试,验证代码的正确性。
4) 集成测试阶段:将各个模块进行集成,测试整个系统的功能和性能。
软件工程作业题简答题1、什么叫软件?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么?软件危机是指在计算机软件开发与维护过程中所遇到的一系列严重问题。
包括两点:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
软件开发和维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
具体表现如下:(1)软件是逻辑部件而不是物理部件。
(2)软件的规模越来越大,复杂性越来越大。
(3)轻视需求分析的重要性,轻视软件维护的错误观点和方法。
3、什么叫软件工程?1968年在第一届NATO会议上的早期定义:“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。
1993年IEEE的定义:“①软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②进而研究①实现的途径”。
我们国家最近定义:软件工程是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
4、两种软件工程方法学开发软件时要建立哪些模型?软件工程方法学包括:传统方法学和面向对象方法学。
常用的开发模型有:瀑布模型(需求稳定,而且可以预先指定)原型模型(需求模糊或者随时间变化)增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析)喷泉模型(使开发过程具有迭代性和无间隙性)5、软件过程模型有哪些?简述它们的特点。
过程模型分为五大类:1.管理过程模型。
2.瀑布模型(又称为生命周期模型)。
3.增量过程模型:包括增量模型,,RAD模型。
4.烟花过程模型:包括原型开发模型,螺旋模型,协同开发模型。
软件工程习题及参考答案判断题软件也会磨损和老化。
(某)完善性维护是提高或完善软件的性能。
(√)数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。
(某)软件是指用程序设计语言(如PASCAL,C,VISUALBASIC等)编写的程序,软件开发实际上就是编写程序代码。
(某)软件模块之间的耦合性越弱越好。
(√)如果通过软件测试没有发现错误,则说明软件是正确的。
(某)快速原型模型可以有效地适应用户需求的动态变化。
(√)模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
(√)集成测试主要由用户来完成。
(某)确认测试计划应该在可行性研究阶段制定(某)白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。
(某)软件概要设计包括软件系统结构设计以及数据结构和数据库设计。
(√)软件工程采用的生存周期方法就是从时间角度对软件的开发和维护这个复杂问题进行分解,将软件生存的时期分为若干阶段。
(√)系统流程图表达的是部件的信息流程,还表示对信息进行加工处理的控制过程。
(╳)模块越多,开发成本越小。
(╳)软件测试的目的就是证明软件没有错。
(╳)PAD图在设置了五种基本的控制结构后,还允许递归使用。
(√)在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。
(某)SA法是面向数据流,建立在数据封闭原则上的需求分析方法。
(√)HIPO法既是需求分析方法,又是软件设计方法。
(√)在面向对象的需求分析方法中,建立动态模型是最主要的任务。
(某)加工小说明是对系统流程图中的加工进行说明。
(某)判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。
(某)需求分析的主要方法有SD法、OOA法及HIPO法等。
(某)分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。
(某)信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。
一、填空(15分)1、需求分析的任务:1)。
确定目标系统的综合要求A。
目标系统的功能要求B。
目标系统的性能要求C。
目标系统运行的环境要求D。
目标系统的扩展要求2)。
分析目标系统的数据要求A。
需要哪些数据?B。
数据之间有什么联系?C。
数据有什么属性及数据结构?D。
对数据的处理逻辑?3)。
导出目标系统的逻辑模型4)。
修正系统流程图5)。
修正系统开发计划6)。
开发原型系统2、模块设计准则1)、改进软件结构提高模块独立性(低耦合高内聚)2)、模块规模要适中3)、深度、宽度、扇入及扇出要适当4)、设计单入口单出口的模块5)、模块功能应该可以预测6)、降低接口的复杂性7)、模块的作用域应该在控制域之内3、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,具体表现在哪些方面?1)、无法开发复杂程度高的软件2)、成本和进度估计不准3)、无统一科学的规范,软件不可维护4)、无质量保证,可靠性差5)、软件常不能满足用户的需求6)、无适当的文档资料7)、软件生产率太低4 、总体设计的任务1)、设计系统的物理实现方案2)、设计软件的整体结构,划分程序功能模块,决定模块间的接口关系和传递信息; 3)、设计系统全局的存贮数据结构4)、设计系统I/O的方式和格式;5)、设计系统安全性、出错处理及代码等6)、设计组装测试计划。
5、从下列关于结构化程序设计的叙述中选出5条正确的叙述。
①程序设计比较方便,但比较难以维护。
②便于由多个人分工编制大型程序。
③软件的功能便于扩充。
④程序易于理解,也便于排错。
⑤在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。
⑥模块之间的接口叫做数据文件。
⑦只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块。
⑧模块间的单向调用关系叫做模块的层次结构。
⑨模块越小,模块化的优点越明显。
一般来说,模块的大小都在10行以下。
答:正确的叙述有②、③、④、⑦、⑧。
第8章面向对象设计(习题与参考答案)[选择题]1. ()面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。
A. 真B. 假2. ()系统设计的主要任务是细化分析模型,最终形成系统的设计模型。
A. 真B. 假3. ()关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
A. 真B. 假4. ()用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
A. 真B. 假5. 内聚表示一个模块()的程度,耦合表示一个模块()的程度。
A. 可以被更加细化B. 仅关注在一件事情上C. 能够适时地完成其功能D. 联接其他模块和外部世界6. 良好设计的特征是()。
A. 模块之间呈现高耦合B. 实现分析模型中的所有需求C. 包括所有组件的测试用例D. 提供软件的完整描述E. 选项B和DF. 选项B、C和D7. ()是选择合适的解决方案策略,并将系统划分成若干子系统,从而建立整个系统的体系结构;( )细化原有的分析对象,确定一些新的对象、对每一个子系统接口和类进行准确详细的说明。
A. 系统设计B. 对象设计C. 数据库设计D.用户界面设计8.下面的( )界面设计原则不允许用户保持对计算机交互的控制。
A. 允许交互中断B. 允许交互操作取消C. 对临时用户隐藏技术内部信息D.只提供一种规定的方法完成任务[练习题]1. 面向对象设计与面向对象分析的区别是什么?设计包括哪些活动? 答案要点:面向对象分析是重点考虑系统“做什么”的问题,即运用面向对象方法对问题域进行分析和理解,建立系统的分析模型;面向对象设计重点考虑系统“怎样做”的问题,即在分析模型的基础上形成实现环境下的设计模型。
面向对象设计主要涉及系统设计、对象设计(或详细设计)、数据库设计和用户界面设计等活动。
2. 3. 课程在类设计中,为什么建议使用set 方法和get 方法进行属性设置和读取? 答案要点:目的在于降低类之间的耦合度。
1.软件的概念软件,是计算机程序和相关文档。
软件产品可为特定客户或通用市场开发。
软件的基本特征:复杂性,一致性,可变性,不可见性2.软件工程的定义,软件工程面临哪些挑战?软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到投入使用后的系统维护,都属于其科学范畴。
软件工程面临着多样性、交付时间、安全和可信性、软件开发方式的挑战。
3.软件工程三个要素:过程、工具、方法4.软件过程的基本活动有哪些:软件描述软件设计与实现软件的有效性验证软件进化5.软件过程模型的概念为了规划、设计和改善软件过程,需要对软件过程进行抽象描述6.瀑布模型的阶段划分1.需求分析和定义2.系统和软件设计3.实现和单元测试4.集成和系统测试5.运行和维护7.瀑布模型的特点1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.每个阶段必须完成规定的文档;4每个阶段结束前完成文档审查, 及早改正错误。
5下一个阶段可以回溯到前面的某个阶段写出你所知道的过程模型实例。
1.快速软件开发基本特征:1.描述、设计和实现过程是交织在一起2.系统通过一系列版本开发出来3..系统用户界面通常是常用交互式系统开发的2.敏捷方法的基本原则客户参与增量式交付人非过程接受改变保持简单性3. 极限编程的实践有哪些?增量规划 .小版本发布.简单设计.测试优先的开发.重构结对编程集体所有连续集成可持续的节奏在场客户4.结对编程的概念及优点。
概念:结对编程是一个编程模式。
两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。
他们一起分析,一起设计,一起写测试例子,一起编码,一起单元测试,一起整合测试(Integration Test),一起写文档等。
基本上所有的开发环节都一齐肩并肩地,平等地,互补地进行开发工作。
优点:支持共同拥有软件和共同对系统负责担当了非正式的复查过程有助于支持重构5.Scrum方法的三个阶段。
第一个阶段:规划纲要阶段,建立大致的项目目标和设计软件体系结构。
第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
“软件危机”包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的原因(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件维护之间的矛盾(5)遗产系统与实施软件之间的矛盾2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是知道计算机软件开发和维护的一门工程学科。
《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程网上作业题第1章软件工程学概述一、选择题1.软件危机具有下列表现()I、对软件开发成本估计不准确II、软件产品的质量往往不可靠III、软件常常不可维护IV、软件成本逐年上升A.I、II和III B.I、III和IVC.II、III和IV D.以上都正确答案:D2. 产生软件危机的原因可能有()I、用户需求描述不精确、不准确II、对大型软件项目的开发缺乏有力的组织与管理III、缺乏有力的方法学和工具的支持IV、软件产品的特殊性和人类智力的局限性A.I和II B.I、II和IVC.II、III和IV D.以上都正确答案:D3. ()分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。
A.增量模型B.喷泉模型C.原型模型 D.螺旋模型答案:A4. 为了克服软件危机,人们提出了用( ) 的原理来设计软件,这就是软件工程诞生的基础。
A. 数学B. 软件学C. 运筹学D. 工程学答案:D4、TURBO PASCAL是()软件。
A.系统软件B.人工智能C.事务软件D.应用软件答案:D6.具有风险分析的软件生存周期模型是()A.瀑布模型B.喷泉模型C.螺旋模型D.增量模型答案:C7. 瀑布模型的关键不足在于()A.过于简单B.不能适应需求的动态变更C.过于灵活D.各个阶段需要进行评审答案:B8.软件危机是指()。
A.软件遭到破坏B.软件开发和维护过程中遇到的问题C.软件维护出现困难D.软件不能正常运行系列问题答案:B9. 软件的复杂性是(),它引起人员通信困难、开发费用超支、开发时间超时等问题。
A.固有的B.人为的C.可消除的D.不可降低的答案:A10. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
A. 软件过程B. 软件测试C .软件生存周期D .软件工程答案:D11.软件的主要特性是( )。
A.高性能B.高成本C.包括程序和文档D.可独立构成计算机系统答案:B12.软件开发方法的主要工作模型有( )A.螺旋模型B.循环模型C.瀑布模型D.专家模型13.软件工程三要素是( )。
软件工程作业9(含答案)1. 请从供选择的答案中选出应填入下列()中的字句。
程序的三种基本控制结构是(A2 )。
它们的共同点是( B 4)。
结构化程序设计的一种基本方法是(C 4 )。
软件测试的目的是(D 2 )。
软件调试的目的是( E 1)。
供选择的答案:A. ①过程,子程序,分程序②顺序,条件,循环③递归,堆栈,队列④调用,返回,转移B. ①不能嵌套使用②只能用来写简单的程序③已经用硬件实现④只有一个入口和一个出口C. ①筛选法②递归法③归纳法④逐步求精法D. ①证明程序中没有错误②发现程序中的错误③测量程序的动态特性④检查程序中的语法错误E. ①找出错误所在并改正之②排除存在错误的可能性③对错误性质进行分类④统计出错的次数2.从下列关于软件测试的叙述中,选出5条正确的叙述。
4.5.6.7.10(1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
(2) 尽量用公共过程或子程序去代替重复的代码段。
(3) 测试是为了验证该软件已正确地实现了用户的要求。
(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。
(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO 语句反能使写出的程序更加简洁。
(7) 发现错误多的程序模块,残留在模块中的错误也多。
(8) 黑盒测试方法中最有效的是因果图法。
(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。
(10) 程序效率的提高主要应通过选择高效的算法来实现。
3.从供选择的答案中选出应填入下面有关软件测试的叙述的()内的正确答案。
软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的( A 3)来设计测试用例的方法。
除了测试程序外,它还适用于对( B 4 )阶段的软件文档进行测试。
白盒测试法是根据程序的( C 2)来设计测试用例的方法。
除了测试程序外,它也适用于对( D 2 )阶段的软件文档进行测试。
软件工程习题及参考答案一、选择题1. 软件生命周期中,下列哪个阶段是用于定义软件系统的需求和规划开发工作的?A. 需求分析阶段B. 设计阶段C. 实施阶段D. 维护阶段答案:A2. 在敏捷软件开发方法中,以下哪个原则强调团队成员之间的密切合作和面对面沟通?A. 满足客户B. 可工作的软件C. 另一种需求D. 相互合作答案:D3. 下列哪个是迭代软件开发过程的特征之一?A. 完全可预测B. 单次交付C. 线性顺序D. 重复迭代答案:D4. 在软件工程中,以下哪个测试方法是通过检查软件源代码是否符合预定编码规范和标准来识别潜在问题?A. 单元测试B. 集成测试C. 静态代码分析D. 动态测试答案:C5. 以下哪种软件开发方法更加适合于大型复杂项目,其中需求和规范可能会发生变化的情况?A. 瀑布模型B. 增量模型C. 原型模型D. 敏捷模型答案:D二、填空题1. 软件需求工程关注软件的_____________。
答案:需求2. 敏捷开发方法注重_____________与_____________的灵活性。
答案:响应,变化3. 需求分析阶段的主要目的是准确地定义_____________。
答案:软件系统需求4. 软件测试是一种_____________过程,用于评估软件系统的质量和响应性。
答案:验证5. 配置管理的目标是确保软件系统的_____________和_____________。
答案:完整性,一致性三、简答题1. 请简要解释软件生命周期模型,并列举两个具体的软件生命周期模型。
答:软件生命周期模型是一种用于规划、开发和维护软件的框架,它描述了软件开发从需求分析到交付并进入维护阶段的全过程。
两个常见的软件生命周期模型包括:- 瀑布模型:瀑布模型将软件开发过程分为一系列严格顺序的阶段,包括需求分析、设计、实施、测试和维护。
每个阶段都有明确定义的输入和输出,阶段之间有严格的依赖关系。
- 敏捷模型:敏捷模型强调团队合作、面对面沟通和快速响应变化。
软件工程作业题简答题1、什么叫软件?答:软件是计算机系统中鱼硬件相互依存的另一部分,它包括程序,数据以及其相关文档的完整集合。
2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么?答:软件危机实质在计算机软件的开发和维护过程中所欲遇到的一系列严重问题。
包含如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有的软件两点。
产生原因:1.与软件本身的特点有关,软件不是逻辑部件,它不具有“可见性”,在写出的程序运行之前,软件开发的进展情况很难衡量,软件的质量也较难评测;此外软件在运行过程中如果发现了错误,很可能遇到一个在开发时期引入的在测试阶段没能检测出来的错误。
2.软件开发与维护的方法不正确也导致软件危机的产生。
3、什么叫软件工程?答:1993年IEEE给出了一个全面具体的定义:软件工程是1.把系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程应用于软件;2.研究1中提到的途径。
4、两种软件工程方法学开发软件时要建立哪些模型?答:软件工程方法学包括:传统方法学和面向对象方法学。
常用的开发模型有:瀑布模型(需求稳定,而且可以预先制定),原型模型(需求模糊或者随时间变化),增量模型(分析员先做出需求分析和概要设计,用户参与逐步完善),螺旋模型(将瀑布模型与原型化模型结合起来,柄加入了风险分析)和喷泉模型(使开发过程具有迭代性和无间隙性)。
5、软件过程模型有哪些?简述它们的特点。
答:过程模型分为五大类:1.管理过程模型。
2.瀑布模型(又称为生命周期模型)。
3.增量过程模型:包括增量模型、RAD模型。
4.烟花过程模型:包括原型开发模型、螺旋模型、协同开发模型。
5.专用过程模型:包括机遇构建的开发模型、形式化方法模型、面向方面的软件开发模型。
6、什么是软件生命周期?一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个毛长的时期,通常把软件经历的这个漫长的时期成为生命周期。
第一部分选择题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.如何做B.怎么做C.做什么D.对谁做7、软件维护产生的副作用,是指( )A、开发时的错误B、隐含的错误C、因修改软件而造成的错误D、运行时误操作8、软件生命周期中所花费用最多的阶段是( )A、详细设计B、软件编码C、软件测试D、软件维护9、模块的内聚性最高的是( )A、逻辑内聚B、时间内聚C、偶然内聚D、功能内聚10、与确认测试阶段有关的文档是( )A、需求规格说明书B、概要设计说明书C、详细设计说明书D、源程序11. 面向对象分析是对系统进行()的一种方法。
A 需求建模B 程序设计C 设计评审D 测试验收13、因计算机硬件和软件环境的变化而作出的修改软件的过程称为( )A.校正性维护B.适应性维护C.完善性维护D.预防性维护14、一个模块内部各程序都在同一数据结构上操作,这个模块的内聚性称为( )。
A、时间内聚B、功能内聚C、信息内聚C、过程内聚15.面向对象技术中,对象是类的实例。
对象有三种成份:( )、属性和方法(或操作)。
A. 标识B. 规则C. 封装D. 消息16.数据字典是用来定义_()中的各个成份的具体含义的。
一.基本概念1.软件就是程序吗?如何定义软件?答:人们经过长期实践已经逐步认识到,软件≠程序,程序只是软件的关键要素,普遍接受的观点是:软件=程序+数据+文档。
2.文档有何作用?程序代码属不属于文档?答:文档指的是在软件开发和维护过程中形成的文字记录。
从软件计划、分析、设计、实现(编码和测试)、维护等开发活动中形成的各种文件。
文档属于软件的一部分,是软件维护和升级的重要依据,并且文档内容要与代码同步更新。
没有文档的软件维护不但不能延长反而会缩短软件寿命。
文档包括需求规格说明书、设计说明书、用户使用说明书、在线帮助等,当然程序代码是必不可少的一种软件文档。
3.什么是软件危机?什么原因产生了软件危机?答:软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生的原因是主客观不相适应。
见书图1-2。
●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等;●主观上:传统的个体化开发观念和方法,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。
4.软件工程定义有很多说法,用你自己的理解说明软件工程是干什么的?参考:软件工程是指导计算机进行软件计划、开发和维护的工程学科;软件工程是为解决软件危机而诞生的,解决的途径是:用工程化的理论、方法和技术来管理软件开发过程。
任何产品的工程化就是有计划、有目标、有规范、有文档、有标准。
见1.4节。
软件工程就是指导软件产品的工程化。
5.软件工程三要素是什么?答:软件工程三要素是从计算机科学观点看软件工程,即从软件开发的技术层面应该有过程、方法和工具。
见图1-4。
(2)“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量和及时地开发出软件。
过程定义的活动集合及其序列见第2章。
(3)“方法”为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列活动的做法。
软件危机与软件工程3.软件工程方法学的研究内容包含软件开发技术和软件工程管理两部分, 其期望达到的最终目标是 ()。
A •消除软件危机B •软件开发工程化C •程序设计自动化D •实现软件重用4•软件工程学中除重视软件开发技术的研究外,另一重要组成内容是软件的( )。
A .工程管理B .成本核算C .人员培训D .工具开发5•软件计划是软件开发的早期和重要阶段,此阶段要求交互和配合的是( )。
A •设计人员和用户B •分析人员和用户C .分析人员和设计人员D .编码人员和用户6 .软件工程的结构化生命周期方法是将软件开发的全过程划分为相互独立而又相互依存的阶段,软件的 逻辑模型形成于( )。
A .开发阶段B .计划阶段C .分析阶段D .设计阶段7 .在软件工程中,软件生存期可分为计划、开发以及维护三个阶段,每个时期又分为若干更小的阶段。
通常,计划时期包括问题定义、可行性研究和①,开发时期包括 ②、详细设计、编码以及 ③。
① A . 需求分析 B . 可行性研究 C . 经费预算 D .质量保证②A . 需求分析B . 可行性研究C 总体设计D 模块化设计 ③A . 文档编制B . 运行维护C . 测试D . 验收&软件开发中常采用的生命周期方法,由于其特征而一般称其为() A .层次模型 B .瀑布模型C .螺旋模型D .对象模型9.描述软件生存周期的瀑布模型包括计划、(A )、设计、编码、测试、维护等阶段。
其中,设计阶段又可以分成(B )和(C )两个步骤。
A :①需求分析 ②可行性研究 ③需求调查 ④问题定义 B, C :①方案设计②代码设计③概要(总体)设计 ④数据设计 ⑤详细设计10.什么是软件危机?软件危机产生的原因? ".生命周期阶段的划分?每个阶段的任务?可行性研究软件工程1软件危机是指在开发和( A .运行 B .设计2 •造成软件危机的原因是: A. 用户使用不当C .硬件不可靠)过程中所遇到的一系列严重问题。
B .对软件的错误认识 D •缺乏好的开发方法和手段三、需求分析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 .问题分解B .可靠性与安全性要求C .结构化程序设计D .确定逻辑模型;7. 软件需求说明书在软件开发中具有重要作用,但其作用不包括()。
A .软件设计的依据B.用户和开发人员对软件要做什么的共同理解C .软件验收的依据D .软件可行性分析的依据&结构化分析方法以数据流图、()和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型。
A . DFD图B . PAD图C. IPO图D.数据字典9.进行需求分析可使用多种工具,但()是不适用的。
A .数据流图B .判定表C. PAD图 D .数据字典四、软件设计----包括概要设计(总体设计)和详细设计1. 软件设计一般分为概要设计和详细设计,它们之间的关系是()。
A .全局和局部B .抽象和具体C.总体和层次 D .功能和结构2. SD方法中,一般分为总体设计和详细设计两个阶段,其中总体设计主要是建立()。
A .软件结构B .软件流程C .软件模型D .软件模块3. 模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的()。
A .抽象和信息隐蔽B.局部化和封装化C .内聚性和耦合性D .激活机制和控制方法4. 软件结构设计中,好的软件结构设计应该力求做到()。
A .顶层扇出较少,中层扇出较高,低层模块低扇入B .顶层扇出较高,中层扇出较少,低层模块高扇入C .顶层扇出较少,中层扇出较高,低层模块高扇入D .顶层扇出较高,中层扇出较少,低层模块低扇入5. 软件开发的结构化设计方法,全面指导模块划分的最重要原则应该是(6. HIPO 图应用于软件开发的( )阶段。
A •需求分析B •详细设计C •总体设计D •实现7•详细设计工具可分为三类,即图形、表格和语言工具。
图形工具中, (A ②)简单而应用广泛。
(B表示法中,每个处理过程用一个盒子表示, 盒子可以嵌套。
(C ④)可以纵横延伸,图形的空间效果好。
是一种设计和描述程序的语言。
A-C :①N-S 图 ②程序流程图 ③HIPO 图 ④PAD 图 D :① C ② PDL ③ PROLOG ④ PASCAL9 •面向数据流的软件设计方法,一般是把数据流分为( )两种流,再将数据流图映射为软件结构。
A •数据流与事务流B •变换流与事务流C •信息流与变换流D •交换流域数据流10 •程序流程图是一种传统的程序设计表示工具,有其优点和缺点,使用该工具时应注意( )。
A •支持逐步求精B •考虑控制流程C •遵守结构化设计原则D •数据结构表示五、 编码1 •程序设计语言的选择是顺利实施编程的重要基础,评价可用语言的因素甚多,而其重要的选择依据是 ()°A .对语言的熟悉程序B .语言的应用领域C .数据结构的复杂度D .算法的复杂度2 .下列叙述中选出五条关于好的程序设计风格的正确叙述( C G H I J )A .尽量多用临时变量B •把常见的局部优化工作留给编译程序去做C •程序中嵌套的层数应加以限制D •程序的书写格式最好所有语句都左对齐,这样也可以节省纸张E. 在主存储器能容纳得下的前提下,应使模块尽可能大,以便减少模块的个数F. 模块越小,优点越明显。
一般说来,模块的大小都在10行以下G •只要模块之间的接口关系不变,各模块内部实现细节的修改不会影响别的模块 H .在编写程序时尽可能对程序代码进行优化 I .程序中的注释并不是可有可无的 J .使用可以看得出意义的标识符 3 •程序设计属于软件开发过程的( )阶段。
A .设计B .编程C .实现D .编码A •模块高内聚B •模块低耦合C .程序模块化D .模块独立性①) (D )&软件需求分析方法中,结构化分析是一种常用的方法。
结构化分析产生的系统说明书是由一套分层的 ④。
一本 ②、一组③及补充材料组成的。
在结构化设计阶段产生的文档是 '① A. .流程 B •数据流图 C .软件结构 D .事务转换 ② A. .结构说明 B •用户需求 C .数据字典 D •数据流程③ A. .小说明B 索引C 模块接口D 层次结构④ A 系统模型说明书B 程序流程图C 系统功能说明书D 模块结构图和模块说明书、六、测试1软件测试可能发现软件中的),但不能证明软件()。
A •所有错误、没有错误B •错误、没有错误C •逻辑错误、没有错误D •设计错误、没有错误2.软件测试的目的是()。
A .证明软件的正确性B •找出软件系统中存在的所有错误C •证明软件系统中存在错误D .尽可能多的发现软件系统中的错误3.为提高测试效率,应该()。
A •随机地选取测试数据B •在完成编码以后制定软件的测试计划C •取一切可能的数据作为测试数据D •选择发现错误可能性最大的数据作为测试数据4 •黑盒测试是从( C )观点的测试,白盒测试是从( D )观点的测试。
A •开发人员、管理人员B •用户、管理人员C •用户、开发人员D •开发人员5 •使用白盒方法测试时确定测试数据应根据()和指定的覆盖标准。
A •程序的内部逻辑B .程序的复杂程度C •使用说明书D .程序的功能6 •白盒测试方法重视)的度量。
A .测试覆盖率测试数据多少 C •测试费用 D •测试周期7 •黑盒测试法根据(设计测试用例。
A •程序调用规则B •模块间的逻辑关系C .软件要完成的功能D •数据结构&单元测试又称(B ), 般采用(D )测试。
A •集成测试B •模块测试C .黑盒法D .白盒法七、维护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. ()阶段是软件生命周期中花费最多、持续时间最长的阶段。
BA需求分析 B 维护C设计D测试7. 注释是提高程序可读性的有效手段,好的程序注释占到程序总量的()A 1/6B 1/5C 1/4D 1/3八、简述软件危机产生的原因。
参考答案:(1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。
致使经费预算常常突破,进度计划无法遵循,开发完成的期限一拖再拖。
(2)软件需求,在开发的初期阶段提得不够明确,或是未能得到确切的表达。
开发工作开始后,软件人员和用户又未能及时交换意见,造成开发后期矛盾的集中暴露。
(3)开发过程没有统一的、公认的方法论和规范指导,参加的人员各行其事。
加之设计和实现过程的资料很不完整;或忽视了每个人工作与其他人的接口,使得软件很难维护。
(4)未能在测试阶段充分做好检测工作,提交用户的软件质量差,在运行中暴露出大量的问题。
九、简述软件生命周期阶段的划分?每个阶段的主要任务?参考答案:生命周期划分为六个阶段,分别为计划、需求分析、软件设计(包括概要设计和详细设计)、编码、软件测试和运行/维护。
各个阶段的主要任务分别为:(1)计划阶段首先确定要解决的问题是什么,通过问题定义阶段的工作,系统分析员应该提出关于问题的性质、规模和工程目标的书面报告,之后进行可行性研究,应该决定该问题是否存在一个可行的解决办法,是否值得去解。