软件工程习题参考答案.docx
- 文档编号:29759026
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:24
- 大小:28.29KB
软件工程习题参考答案.docx
《软件工程习题参考答案.docx》由会员分享,可在线阅读,更多相关《软件工程习题参考答案.docx(24页珍藏版)》请在冰豆网上搜索。
软件工程习题参考答案
《软件工程》习题参考答案
概述
1.什么是软件危机,它有哪些典型表现
所谓“软件危机”就是,在计算机软件的开发和维护过程中所遇到的一系列严重的问题,概括起来归纳为:
如何开发软件,以满足日益增长、日趋复杂的需要;如何维护数量不断膨胀的已有软件。
软件危机的典型表现主要有:
a.开发成本和进度不能准确估计
b.开发出来的软件不能满足用户的要求
c.软件的可维护性差
d.软件质量不可靠
e.软件成本在系统中的比重逐年上升
f.软件开发生产率的提高速度不够
2.简述产生软件危机的原因和解决的思路。
软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。
解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。
3.什么是软件工程它有哪些本质特性
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。
其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开发技术,开发与维护软件,以解决软件危机。
4.软件工程是如何用来消除软件危机的
软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。
6.简述软件的定义。
软件=程序+数据+文档
7.软件工程的目的是什么
为高质量的软件开发提供一个科学的体系框架。
8.什么是软件工程方法学软件工程是一种什么样的技术包括哪三大要素分为哪三个分支
软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。
目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。
软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:
软件开发技术、软件项目管理技术、软件质量管理技术。
9.简述软件工程的基本原理。
软件工程有7条基本原理:
1.严格按照软件生命周期计划进行管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用先进的程序设计技术
5.结果应能清楚的审查
6.开发小组成员应少而精
7.承认不断改进软件工程实践的必要性
10.软件工程的基本开发原则有哪些
软件工程的基本开发原则有:
1.模块化
2.抽象和信息隐蔽
3.模块的高内聚和低耦合
4.确定性
5.一致性
6.完备性
11.构成软件工程的基本元素有哪些
除了前面给出的软件工程三大要素,还应该包括控制和质量保证。
这里的控制,即规模控制、成本控制、复杂性控制等。
12.什么是软件过程它与软件工程方法学有何关系
软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。
软件过程规定了开发软件所需完成的各项任务步骤。
过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。
13.什么是软件生命周期什么是软件生命周期模型
软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。
软件的这一过程,称为软件生命周期。
软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。
是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。
14.简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。
软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:
控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体物力实现。
15.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范围。
1.瀑布模型。
瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。
但问题是,往往不能够真正满足用户的需求。
适用于传统软件工程领域的结构化开发。
2.原型模型。
是为了克服瀑布模型的缺点而提出来的。
通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。
3.螺旋模型。
螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。
主要体现在对开发人员的风险评估经验和专门知识的要求较高。
如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。
4.增量模型。
具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。
可行性研究
1.在软件开发的早期阶段,为什么要进行可行性研究其目的和任务各是什么
可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。
可行性研究的任务不是解决问题,而是确定是否可解/值得解。
2.应该从哪些方面研究目标系统的可行性
主要从以下几个方面进行可行性研究:
1.技术可行性。
以现有技术,能否在预定时间内完成该系统开发。
2.经济可行性。
通过成本-效益分析,估算系统的整体经济效益是否满足要求。
3.操作可行性。
分析系统的运行方式、操作规程是否适应用户应用需要。
4.社会可行性。
分析系统在法律、社会、市场等方面的认可度。
3.可行性研究有哪些工作步骤
(1)复查定义,确定系统规模和目标。
(2)研究老系统
(3)导出高层逻辑模型(conceptualdesign)
(4)重新定义
(5)导出多种解法
(6)推荐行动方针
(7)开发计划(粗略)
(8)审查、存档
4.简述系统流程图在可行性研究中的作用。
系统流程图是概括的描述物理系统的传统工具。
系统流程图反映的是信息在系统各部分间流动的情况。
系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。
5.简述数据流图在可行性研究中的作用和用途。
数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。
6.简单描述数据字典的内容和定义数据的方法。
数据字典主要由下列4种元素定义组成:
1.数据流
2.数据流分量
3.数据存储
4.处理
除了数据定义外,数据字典还应包含一些关于数据的其它信息。
定义数据的方法通常采用自顶向下分解的方式。
并由顺序、选择、重复三种基本数据元素类型组成数据。
7.说明软件计划的内容和目标。
软件计划的内容=项目任务范围+环境资源+工作量+进度
软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度等进行合理的估算。
8.什么是软件范围定义软件范围需要哪些信息
软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围,是软件开发各阶段的工作依据。
定义软件范围需要以下信息:
a.与用户、总体目标及利益相关的问题。
b.有利于系统分析员理解的问题。
c.集中于交流效果的问题。
9.简述软件开发环境资源的三个层次。
软件开发环境资源由三个层次构成:
开发环境、软件构件以及最重要的资源——人。
10.软件环境资源的特征有哪些它们对制定软件计划都有哪些意义
每一类资源都有四个特征:
资源描述、可用性说明和资源提供的时间、资源使用的延续时间。
可以为制定软件计划估算软件开发所需的资源。
11.软件计划中,安排软件开发进度主要可以用哪些工具都有哪些优缺点
编制进度计划的常用工具主要有甘特图和网络计划法。
甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个任务间的逻辑关系。
网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑关系。
12.主要的成本估计技术有哪些其依据的主要是什么
主要有,代码行技术。
是一种基于规模的分解估算:
D=f(vi)
以及基于问题的分解估算:
EV=(Sopt+4Sm+Spess)/6
还有功能点技术。
这种技术以功能点(FP)为单位,度量软件的规模。
由于项目本身的复杂性,因此,成本估计技术主要采用“分而治之”的分解技术对软件项目进行估算。
13.为什么说成本估计是不可能精准的
那是由于太多的变化因素——人员、技术、环境、策略、复杂性等等,使得成本估算永远不可能精确。
14.进行成本/效益分析的方法主要有哪些
常用成本/效益分析的方法主要有:
(1)货币的时间价值
(2)投资回收期
(3)纯收入
(4)投资回收率
16.如何对制定完成的软件计划进行复审为什么要复审
软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。
复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。
复审内容分为技术和管理两个方面:
技术方面需要考虑的问题有:
系统的任务是否合理;
系统的给你复杂性是否与开发成本、进度以及风险一致;
系统规格说明书是否足够充分;
系统性能要求是否恰当
管理方面需要考虑的问题有:
计划中描述的工作范围是否符合用户需求
计划中对资源的描述是否有效、合理
计划中系统的开发成本与进度要求是否合理
计划中人员的安排是否合理
系统开发存在哪些风险
复审可以尽早发现错误,复审是软件质量保证的重要措施。
需求分析
1.为什么要进行需求分析通常对软件系统有哪些需求
需求问题是软件工程项目失败的主要原因。
一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。
需求分析就是要解决这个问题。
通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。
2.怎样与用户有效地沟通,以获得用户的真实需求
访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是获取真实需求的有效方法。
3.需求分析的任务是什么
确定对待开发系统的综合要求。
4.通常系统的需求可以分为哪几个层次
一般可以分成5个层次:
(1)功能需求:
系统必须做什么
(2)业务需求:
反映客户组织机构对系统高层次的目标要求。
(3)运行需求:
运行环境、软硬件配置等。
(4)属性需求:
包括用户关心的属性,如效率、灵活性、完整性、可靠性等;开发者关心的属性,如可维护性、可复用性、可移植性等。
(5)未来可能的扩充需求:
如HDIS各组的合并,3维虚拟现实的效果等等。
5.进行需求分析的步骤有哪些
1.确定系统的综合要求
2.分析系统的数据要求
3.导出逻辑模型
4.修正系统开发计划
6.简述建立原型模型对软件需求分析的作用。
可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。
7.解释实体-联系图及其用途。
实体-联系图是按照用户的观点对数据建立的模型。
描述从用户角度看到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。
8.说明为什么需要进行需求验证及验证的步骤有哪些
进行需求验证是为了确保软件开发的质量,降低开发成本。
通常对需求进行验证的步骤有:
验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。
总体设计
3.简单说明系统总体设计的步骤。
典型的总体设计包括以下9个步骤:
1、确定最佳方案
2、选取合理方案
3、推荐最佳方案
4、功能分解
5、软件结构设计
6、设计数据库
7、制定测试计划
8、书写文档
9、审查和复审
5.为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合
减少模块之间的关联度,提高模块的独立性。
因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生严重问题。
而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随耦合模块的个数增加而增加。
控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。
由于接口单一,因此仍然会影响被控模块的内部逻辑。
而数据耦合只是模块间通过数据参数来交换I/O信息,因此不会对其它模块产生任何等影响。
6.为什么模块的规模要适中
过大不易理解;太小则接口开销过大。
7.请说明为什么模块控制的宽度和深度要适度。
深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块控制的宽度和深度要适度。
8.简述面向数据流设计方法的基本思想。
将由数据流图描绘的信息在系统中加工和流动的情况映射成软件结构。
9.常用数据流类型有哪些
变换流和事务流。
10.面向数据流的设计方法主要有哪几个步骤
主要有下面7个步骤:
1.复查基本系统模型
2.复查并精化数据流图
3.确定数据流图具有变换特性还是事务特性
4.确定输入流和输出流动边界,从而孤立出变换中心
5.完成“第一级分解”
6.完成“第二级分解”
7.使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化
详细设计
1.详细设计的任务是什么
包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它根据软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审。
2.在对系统做详细设计时,应遵循哪些原则
①模块的逻辑描述应清晰易读、正确可靠;
②设计的处理过程应该简明易懂;
③选择恰当的描述工具来描述模块算法。
3.简述结构化设计的特点。
①自顶向下、逐步求精;
②具有单入、单出的控制结构(取消GOTO语句)
4.结构化程序设计中有哪几种基本控制结构分别描绘在程序流程图、盒图和PDA图中这些基本控制的图例。
(1)顺序结构
(2)选择结构
(3)先判定型循环结构
(4)后判定型循环结构
(5)多情况选择
7.试说明ISO为什么要建议停止使用程序流程图,而推荐使用PDA图
由于程序流程图中的GOTO语句回严重地损害程序结构,而无法实行结构化设计。
PDA图则既吸取了程序流程图好学、好用、好懂,方便、灵活的优点,又保留了N-S图结构化设计的特点,很好地满足了软结构构设计图形工具的要求,以及PDA图所具有的①结构清晰,层次分明,易读;②支持逐步求精的设计思想;③容易将PAD自动转换为高级语言源程序等特点,因此,ISO要推荐使用PDA图。
8.试说明Jackson方法是一种怎么样的程序设计方法。
它有哪些工作步骤
Jackson方法是以数据结构(datastructure)为基础设计每个模块的处理过程,将数据结构转化成程序结构。
具体工作步骤有:
第1步:
用Jackson图描述I\O的数据结构
第2步:
在两个图中指出有直接因果关系、可以同时处理的单元
第3步:
将数据结构映射到程序结构
第4步:
列出所有操作条件,并分配到上幅程序结构图中
第5步:
用Pseudocode表示程序
编码与测试
1.说明什么是程序编码为什么程序设计语言的特点和编码风格会影响到程序的可靠性、可读性、可测试性和可维护性
所谓“编码”,就是将在低级抽象层次得到的详细设计结果,翻译成用某种程序设计语言书写的程序。
是软件设计的自然结果。
而程序设计语言是否有理想的结构化、模块化机制,是否有可读性好的控制结构和数据结构等特性,以及程序设计语言提供的编译、软件工具等,再加上程序的设计风格会很深刻的影响软件的质量和可维护性、可测试性、可靠性等。
2.用户界面设计的最一般原则,即所谓“黄金规则”是什么
1.置用户于控制之下;2.减少用户的记忆负担;3.保持界面一致。
3.软件界面设计包含了哪几个方面的基本内容
界面设计包括三个方面:
1.软件构件间接口;2.软件与其它系统的接口;3.软件与操作者之间的接口,即用户界面。
4.用户界面提供系统服务的方式通常有哪两种
命令驱动和屏幕菜单驱动
5.WIMP界面是屏幕菜单驱动用户界面的一种形式,其设计准则有哪些
(1)明确的动作:
在屏幕上指点并操纵对象
(2)即时反馈:
操作结构即见
(3)增量效应:
图标应被拖曳连续移动,而非跳跃
(4)可视交互:
交互操作与用户概念模型匹配
(5)剥皮式学习:
学习系统功能复杂性逐层加深
(6)可逆动作:
也即应有退回操作
(7)事先验证:
只允许合法操作产生效果
6.为什么说软件界面设计的质量会直接影响到用户对软件产品的评价
用户界面(User-interface)又称人机界面(man-computerinterface),是用户和计算机联系的中间媒介,是系统中最重要、最关键的部分之一。
用户界面设计的好坏,直接影响到系统设计的成败。
这是因为,如果一个界面设计的不好,也即通常所说的用户界面不友好,可以使用户在使用时感到不便,甚至制造麻烦,系统就难以发挥应有的效益,甚至可能被用户弃用。
7.什么是系统响应时间系统响应时间有哪些重要属性
系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。
系统响应时间有2个重要的属性:
长度和易变性。
8.在设计软件系统的用户帮助设施时,需要注意解决哪些问题
1.在用户与系统交互期间,是否任何时候都能获得关于系统任何功能的帮助信息
2.用户怎样请求帮助
3.怎样显示帮助信息
4.用户怎样返回到正常的交互方式中
5.怎样组织帮助信息
9.软件出错处理设计,即软件安全性设计。
一个交互式出错处理程序应该具备哪些功能和属性
1.信息应该使用用户可以理解的术语描述。
2.信息应该提供有助于从错误中恢复的建设性意见。
3.信息应该指出错误可能导致的后果。
4.信息应该伴随感官提示。
5.信息不能带有指责色彩。
10.测试的最基本目标是什么
以尽可能小的代价,发现尽可能多的错误。
11.软件测试的原则有哪些
①应当把“尽早和不断的测试”作为座右铭
②测试应由独立的专业测试机构来完成
③测试工作要全面,但不可能实现“穷举”
④只能尽可能查错,不能证明程序中没有错
⑤软件测试符合2-8(Pareto)原理
⑥应妥善保存测试文档
⑦制定严格、合理的测试计划
⑧错误经过修改后,相关的测试必不可少
12.软件测试的方法有哪几种
黑盒测试和白盒测试。
13.简单说明什么是白盒测试,什么是黑盒测试。
黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程的测试方法。
黑盒测试又称功能测试。
白盒测试是对程序的执行细节进行测试,通过设计测试数据,验证程序模块的每个路径的执行情况。
白盒测试又称结构测试。
14.简述软件测试的步骤。
(1)单元测试——程序设计&代码bugs
(2)子系统测试——模块连接
(3)系统测试——需求确认&系统设计
(4)验收测试——用户加入
(5)平行运行——新旧系统比较运行结果
16.为什么单元测试必须由编程者自己完成
单元测试是对程序逻辑结构的测试。
而对程序结构最为熟悉的,莫过于编程者。
再者,高质量的程序模块是构造系统的基础,因此编程者必须向下一道工序提交符合质量要求的产品。
17.单元测试的主要手段有哪些
代码审查、计算机测试等。
18.单元测试主要从哪5个方面进行
主要测试以下五个方面:
1.模块接口
2.局部数据结构
3.重要的执行通路
4.出错处理通路
5.边界条件
19.为什么人工代码审查十分重要
一次审查可发现多个错误,不必改一个测一个。
20.集成测试主要有渐增式测试、非渐增式测试两种,试述两种方式的异同点。
渐增式测试:
可以较早发现模块间的接口错误、出现的错误往往跟最新加入的模块有关、在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底,但较非渐增式测试费时。
非渐增式测试由于最后才组装,因此错误发现得晚、发现错误后难以诊断定位,但可以同时并行测试所有模块,能充分利用人力。
21.描述集成测试的两种策略,并比较它们的优缺点。
自顶向下测试和自底向上测试两种。
自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,在早期发现上层模块的接口错误。
主要缺点是需要存根程序,可能遇到与此相联系的测试困难,底层模块的错误发现较晚,而且对人力的使用也不利。
而自底向上测试的优缺点与自顶向下测试的优缺点正好相反。
22.什么是回归测试回归测试的测试用例集如何确定
回归测试是指重新执行已经做过的测试的某个子集,以保证系统在发生调试、功能变化等事项后,没有带来非预期的副作用。
回归测试的测试用例集按以下方法确定:
1.检测软件全部功能的代表性测试用例。
2.专门针对可能受修改影响的软件功能的附加测试。
3.针对被修改过的软件成分的测试。
23.什么是确认测试确认测试的任务是什么如何确认其范围
验收软件的有效性(功能和性能达标)。
确认测试的工作范围主要有:
1.按合同规定审查软件配置;
2.设计测试计划,使通过测试保证软件能满足所有功能、性能要求;
3.文档与程序一致,具有维护阶段所必须的细节;
4.严格按用户手册操作,以检查手册的完整性和正确性。
24.设计测试方案的任务有哪些
①预定要测试的功能
②设计输入的测试数据
③列出预期结果
25.什么是逻辑覆盖测试法它主要用于什么测试
逻辑覆盖测试是一种对程序逻辑通路进行覆盖的测试,通常适用于白盒测试。
26.什么是等价划分法它主要用于什么测试
是一种很常用的测试方法。
其对测试数据的选择是基于对程序功能的分析,按照程序输入要求和输出要求,选择若干数据进行测试功能的过程。
等价划分法主要用于黑盒测试。
27.什么是边值分析法它主要用于什么测试
根据经验,在程序处理的边界最容易发生错误的地方进行测试,主要用于黑盒测试。
28.什么是错误推测法它主要用于什么测试
利用有经验的测试者对程序可能发生错误的位置的推测进行测试的方法,主要用于黑盒测试。
29.一个软件的测试策略应该是怎样的
黑盒设计白盒补充
①在任何情况下都应首先使用边界值分析的方法;
②必要时用等价划分法补充;
③必要时再用错误推测法补充;
④对照程序逻辑,检查测试方案。
30.什么是调试调试和测试有什么不同
测试——发现错误
调试——改正错误
调试与测试的区别在于,调试作为测试的后续工作,主要是解决和排除测试中出现的错误。
31.简单说明调试的方法和策略。
调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。
主要有:
①试探法:
凭经验猜测。
②回溯法:
由症状(symptom)最先出现的地方,沿controlflow向回检查。
适用于小型程序。
③对分法:
在关键点插入变量的正确值。
④归纳法:
从错误症状中找出规律,推断根源。
⑤演绎法:
普通特殊
32.什么是软件的可靠性、可用性和正确性
软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功地运行的概率。
软件可用性是指程序在给定的时间点,按照说明书的规定,成功地运行的概率。
软件正确性是指程序的功能正确。
维护
1.什么是软件维护
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
2.软件维护有哪几种类型
①改正性维护:
诊断和改正错误;
②适应性维护:
为了和变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件;
③完善性维护:
为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件;
④预防性维护:
为了改进未来的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 习题 参考答案