解答
1、程序设计语言的三种类型和特点是什么?0101
1) 机器语言、汇编语言:依赖于机器,面向机器
2) 高级语言:独立于机器,面向过程或面向对象
3) 符号语言(汇编语言): (2分)
2、软件危机
是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。0101
1、计算机软件——与计算机系统操作有关的程序、规程、 规则及任何与之有关的文档和数据。0101
2、需求分析的任务是什么?0103
需求分析的任务是确定待开发的软件系统“做什么”。具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。
3、软件项目的成本管理——估算软件项目的成本,作为立项和签合同的依据之一,并在软件开发过程中按计划管理经费的使用。0201
4、快速原型技术的基本思想是什么?0402
在软件开发的早期,快速开发一个目标软件系统的原型,让用户对其进行评价并提出修改意见,然后开发人员根据用户的意见对原型进行改进。
1、软件在使用过程中维护有哪几种?0101
1)改正性维护
2)完善性维护
3)适应性维护
4)预防性维护
2、Coad/Yourdon面向对象的方法除了包含识别对象外还包括哪4个步骤?0702 标识对象的属性
标识对象的行为
识别对象所属的类
定义主题词
3、Jackson系统开发方法其核心思想是什么?0602
根据作用于数据的行为序列的结构(顺序、选择、重复),建立目标软件系统的模型,然后在软件设计阶段将模型转换为相应的程序结构。
4、设计人机界面,必须考虑哪四个方面。1202
系统的响应时间;
用户求助机制;
错误信息处理;
命令方式。
5、什么是测试用例?
为了进行有效的测试而设计的输入数据和预期的输出结果数据。1401
1、软件工程的原则有抽象、信息隐藏、模块化和其他那些内容?0102
1) 局部化
2) 一致性
3) 完全性
4) 可验证性
2、常用的软件项目的估算方法主要有哪4种?0202
1) 自顶向下的估算方法
2) 自底向上的估算方法
3) 差别估算法
4) 根据经验估算公式
3、原型法模型一般适应哪些场合?0104
它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
4、简答结构化程序设计的内容。 0801
是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。
5、瀑布模型一般适应哪些场合?0104
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。
1、螺旋模型的适应场合有哪些?0104
适应场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
2、软件生存周期0103
软件从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。
3、软件开发风险分析实际上就是贯穿于软件工程过程中的一系列风险管理步骤,它包括哪些主要内容?0206
1) 风险标识
2) 风险估算
3) 风险评价
4) 风险驾驭和监控。
4、软件生存周期中的软件开发过程由概要设计和其它哪几个阶段组成?0103
1) 详细设计
2) 实现
3) 组装设计
4) 验收测试
5、实体—关系(Entity-Relation)图
简称E-R图,是表示数据对象及其之间关系的图形语言机制。0502
名词解释
1. 数据词典——是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切
的解释,是数据流图的补充工具。
2. 数据流图——他以图形的方式反映系统的数据流程
3. 白盒测试——按照程序内部的结构测试程序,检验程序中的每条路径是否都能按预定要求正确工作。
有两种测试法既逻辑覆盖测试法和路径测试法
4. 黑盒测试——按照程序的功能测试程序,检验与程序功能有关的输入、输出与程序执行是否正确。有
四种方法既等价分类法、边界值分析法、错误猜测法和因果图法
5. 完善性维护——为了适应用户业务和机构的发展变化而对软件的功能、性能进行修改、扩充的过程称
为完善性维护。因为各种用户的业务和机构在相当长的时期内不可能是一成不变的,所以功能、性能的增加是不可避免的,而且这种维护活动在整个维护工作中所占的比重很大
6. 软件可靠性——指在给定的时间内,程序按照规定的条件成功地运行的概率
7. 软件配置——是一个软件在生存周期内,他的各种形式、各种版本的文档与程序的总称
8. 软件再工程——运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合、并重
新构建软件,用于提高软件的可理解性、可维护性可复用性或演化性。
9. α测试——是在一个受控的环境下,由用户在开发者的“指导”下进行的的测试,由开发者负责记录错误和使用中出现的问题。
10. β测试——是由软件的最终用户(多个)在一个或多个用户场所来进行。由用户负责记下遇到的所有问题,包括主观认定的和真实的问题,定期向开发者报告,开发者在综合
用户的报告之后进行修改,最后将软件产品交付给全体用户使用。
11. 聚集关系——表示类或对象之间的整体与部分的关系
12. 泛化关系——表示类或对象之间的一般与特殊的关系
13. 内聚——一个模块内部各个元素彼此结合的紧密程度的度量。
14. 耦合——一一个软件结构内不同模块之间互连程度的度量。
简答题
1.软件工程的七条基本原理是什么?
答:软件工程的七条基本原理是:
(1) 用分阶段的是的生存周期计划严格管理;
(2) 坚持进行阶段评审;
(3) 严格实施的产品控制;
(4) 采用现代程序技术;
(5) 结果应能清楚地审查;
(6) 开发小组的成员应该少而精;
(7) 承认不断改进软件工程的必要性。
2.良好的编码风格应具备哪些条件?
答:应具备以下条件:
(1)使用标准的控制结构;
(2)有限制地使用GOTO语句;
(3)源程序的文档化 (应具备以下内容)
①有意义的变量名称 —— “匈牙利命名规则 ”。
②适当的注释 ——“注释规范”。
③标准的书写格式:
——用分层缩进的写法显示嵌套结构的层次(锯齿形风格);
——在注释段的周围加上边框;
——在注释段与程序段、以及不同程序段之间插入空行;
——每行只写一条语句;
——书写表达式时,适当使用空格或圆括号等作隔离符。
(4)满足运行工程学的输入输出风格。
3.简述文档在软件工程中的作用。
答:
(1) 提高软件开发过程的能见度
(2) 提高开发效率
(3) 作为开发人员阶段工作成果和结束标志
(4) 记录开发过程的有关信息便于使用与维护;
(5) 提供软件运行、维护和培训有关资料;
(6) 便于用户了解软件功能、性能。
4.可行性研究包括哪几方面的内容?
答:
(1)经济可行性:是否有经济效益,多长时间可以收回成本;
(2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(3)运行可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
5.结构化的需求分析描述工具有哪些?
答:有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。
6.一般面向对象分析建模的工具(图形)有哪些?
答:用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等
7.UML统一建模语言有哪几种图形?
用例图、类图、对象图、构件(组件)图、部署(配置)图、状态图、活动图、顺序(时序)图、合作(协作)图等九种图。
8.在面向对象分析时类和对象的静态关系主要有哪几种?
答:类和对象的静态关系主要有关联、聚集、泛化、依赖等四种关系。
9. 什么是模块化?模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
(1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。
(4) 尽量降低模块接口的复杂程度;
(5) 设计单入口、单出口的模块。
(6) 模块的作用域应在控制域之内。
10.什么是模块独立性?用什么度量?
答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。独立性可以从两个方面来度量:即模块本身的内聚和模块之间的耦合。
11. 变换型数据流由哪几部分组成?
变换型结构由三部分组成:传入路径、变换(加工)中心和传出路径。
12. 变换分析设计的步骤?
(1) 区分传入、传出和变换中心三部分,划分DFD图的分界线;
(2) 完成第一级分解:建立初始SC图的框架;
(3) 完成第二级分解:分解SC图的各个分支;
(4) 对初始结构图按照设计准则进行精化与改进。
13. 事务型数据流由哪几部分组成?
事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成。
14. 事务分析设计的步骤?
(1) 在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分(包含全部动作路径);
(2) 画出SC图框架,把DFD图的三部分,分别映射"为事务控制模块,接收模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层);
(3) 分解和细化接收分支和动作分支,完成初始的SC图;
(4) 对初始结构图按照设计准则进行精化与改进。
15.数据字典包括哪些内容?
数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。
18.什么是软件生存周期?把生存周期划分为阶段的目的是什么?
答:一个软件从开始计划起,到废弃不用止,成为软件的生存周期。把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理。
19.详细设计的目的?
为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述.
20.详细设计的任务是什么?
(1) 为每个模块确定采用的算法;
(2) 确定每一模块使用的数据结构;
(3) 确定模块接口的细节;
(4) 编写过程设计说明书;
(5) 设计每一模块的测试用例。
21. 编码的任务?
使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。
22.软件测试的基本任务?
软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;
23.什么是黑盒测试?黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边界值分析法、错误推测法和因果图等技术。
24.什么是白盒测试?白盒测试主要采用的技术有哪些?
白盒测试是测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。
25.路径测试技术中几种主要覆盖的含义?举例说明?
语句覆盖:至少执行程序中所有语句一次。
判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。
条件覆盖:执行所有可能的穿过程序的控制路流程。
条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。
(例略)
26.等价分类法的测试技术采用的一般方法?举例说明?
(1) 为每个等价类编号;
(2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。
(3) 设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这一步骤,直到所有无效等价类被覆盖为止。
(例略)
30.软件的维护一般分为哪几类?
完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作;
适应性维护:是软件适应新的运行环境而进行的工作;
纠错性维护:纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;
预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。
31.决定软件可维护性的因素? (1) 软件的可理解性、可测试性、可修改性;
(2) 文档描述符合要求、用户文档简洁明确、系统文档完整并且标准。
32.分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
1 个要点1分,只要答上5个要点得5分!
33.说明结构化程序设计的主要思想是什么?
答:(1)自顶向下、逐步求精的程序设计方法(2分)(2)使用3种基本控制结构、单入口、单出口来构造程序。(3分)
34、软件测试的基本任务是什么?测试与纠错有什么区别?
答:软件测试的基本任务是通过在计算机上执行程序,暴露程序中潜在的错误。测试和纠错目的和任务都不相同,测试是为了发现程序的错误,纠错是为了定位和纠正错误,从而消除软件故障,保证程序的可靠运行。
35.软件测试包括哪些步骤?同时说明这些步骤的测试目的是什么?
答:(1)单元测试,目的是代码达到模块说明书的要求(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否与系统的其余部分协调运行,并且完成SRS对他的要求。
36.需求分析与软件设计二个阶段任务的主要区别是什么?
答:需求分析定义软件的用户需求,即定义待开发软件能做什么(2.5分)
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。(2.5分)
37.说明软件测试和调试的目的有何区别? 答:测试的目的是判断和发现软件是否有错误(2。5分)调试的目的是定位软件错误并纠
43、什么是软件复用?简述软件复用和软件共享、软件移植的差别。
答:软件复用是指在构造新的软件系统的过程中,对已存在的软件人工制品的使用技术。如果是在一个系统中多次使用一个相同的软件成分,这叫软件共享;对一个软件进行修改,使它能运行于新的软、硬件平台这称作软件移植。
44、什么是软件再工程?软件再工程的主要活动有哪些?
答:软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合,并重新构建软件,用以提高软件的可理解性、可维护性、可复用性或演化性。主要活动:信息库分析、文档重构、逆向工程、代码重构、数据重构、正向工程。
1、选择语言时要考虑的因素有:项目的应用领域、项目中算法、计算的复杂性和其余哪些内容?1301
答:
1)项目中数据结构的复杂性
2)用户的性能需求
3)软件运行的环境
4)软件开发人员开发水平
5)可用的编译器和交叉编译器
1、可将软件生存周期划分为哪3个过程和哪9个阶段。0103
(1)3个过程是:软件定义过程、软件开发过程、软件使用与维护过程。
(2)9个阶段有:可行性研究、需求分析、概要设计、详细设计、实现、组装测试、验收测试、使用与维护、退役。