软件工程考点总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、存放原始数据的表称为 A.基本表,存放信息代码数据的表称为B代码表,存放统计数据的表称为C中间表,存放临时数据的表称为D临时表。
2、软件生存期的几个主要模型, A_瀑布模型_B_原型模型_C_螺旋模型_D_增量模型_。
3、程序的效率主要指: A_执行结果的正确性_B_执行速度_C_所占内存的空间_
4、软件工程的三要素是: A_方法__B_工具_C_过程_
5、软件产品在交付使用之前,需经过以下四种测试: A单元测试_B_集成测试_C_系统测试_D_验收测试_。
6、对象不仅能表示具体的事物,还能表示 A_抽象的规则_B_计划_C_事件_。
7. 衡量模块的独立性的两个标准是 -内聚-耦合 。
8.软件是由-文档--程序-两个方面组成。
9. 在软件开发时,按照工程学的角度可分为: -可行性研究、需求分析、概要设计.详细设计、编码.测试和维护过程-。
10. 软件的内聚性越高、软件的独立性越 -强 -,软件的耦合性越高、软件的独立性越 - 弱-。
11. 如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、机器人视觉等人工智能领域内的系统,应选择 -事件处理软件-、 -人工智能软件-。
12. 面向对象就是既使用 -对象- 又使用 -类- 和-继承- 等机制,而且对象之间仅能通过 -传递消息- 实现彼此通信。
13.软件测试分为 -单元测试- 、- 综合测试- 、-确认测试-、-系统测试-四个阶段
14.软件详细设计阶段采用的工具有-程序流程图,盒图(N -S图),PAD图 ,判定表,判定树,过程设计语言(PDL)- 。
15.程序中的注释分为 -序言性注释-和 -功能性注释-两类。
16.软件项目工程包括 -软件开发- 和 -软件管理- 两大部分工作。
17.软件维护的类型由: -完善性维护-、- 改正性维护-、-适应性维护-和-预防性维护-四大部分构成。
18.对象模型的五个层次对应着面向对象分析过程中的五项主要活动: -找出类与对象-, -主题层- ,-结构层 -,-属性层-,- 服务层- 。
19.数据流图中带有箭头的线段表示的是 -数据流流动的方向、而程序流程图中带有箭头的线段表示的是 -控制流流动的方向-。
20. 在详细设计阶段,一种历史最悠久、使用最广泛的描述程序逻辑结构的工具是 - 程序流程图/ 程序框图。
21. 软件成分的重用可以进一步划分为-功能抽象 -数据抽象-和- 过程抽象-三个级别。
22.软件开发模型 : -瀑布模型,-增量模型-,快速原型模型-,螺旋模型-,喷泉模型-,智能模型。
23.在软件开发过程中要产生大量的信息,要进行大量的修改 -软件配置管理- 能协调软件开发,并使混乱减到最低程度。
24.规定功能的软件,在一定程度上对自身错误的作用(软件错

误)具有屏蔽能力,则称此软件具有 -容错功能- 的软件。
25.McCall提出的软件质量模型包括 -11 - 个软件质量特性。
26.软件可维护性度量的七个质量特性是 可理解性、可测试性、可修改性、可靠性、- 可移植性 - 、可使用性和效率。
27.为了便于对照检查,测试用例应由-- 输入数据和 预期的结果 两部分组成。
28.程序设计语言的心理特性主要表现在 -歧义性 - 、简洁性、传统性、局部性和顺序性。
29.软件结构是以 -模块 - 为基础而组成的一种控制层次结构。
30.在结构化分析中,用于描述加工逻辑的主要工具有三种,即: -结构化语言、判定表、判定树。
31.结构化语言是介于自然语言和 - 形式语言 -之间的一种半形式语言。
32.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值 P=F/(1+(n*i))。
33、主要的菜单类型:固定菜单、活动菜单、“弹出式”菜单、下拉式”菜单
32.结构化程序设计的基本原则:
在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.
33.软件测试的一般步骤:单元测试、子系统测试、系统测试、验收测试、平行测试。

【软件】
1.软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

2.软件的特点
(1)软件是逻辑实体;具有抽象性;软件的形态不可见.--必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。(2)软件是人脑思维的产物,其生产过程与硬件不同。--开发过程的质量控制及软件产品保护问题。(3)软件的开发和运行受计算机系统限制--软件移植问题。(4)软件的开发技术落后,手工开发方式仍占统治地位.--开发效率低。

3.软件生存周期:
软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

4.软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型

5.软件的特征:(1)非常复杂(逻辑复杂,开发复杂)(2)成本高(3)风险大(4)维护困难

6. 什么是软件过程?它与软件工程方法学有何关系?
软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
软件过程是软件工程方法学的3个重要组成部分之一。

【软件工程】
1.软件工程:软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行

的软件

2.软件工程的特性:1). 软件工程关注于大型程序的构造2). 软件工程的中心课题是控制复杂性3). 软件经常变化4.) 开发软件的效率非常重要(5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人。

3.你在大作业中做了哪些工作,谈谈你对软件工程的认识.
软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

【软件危机】
1.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。(3)一般软件很难维护。
(4)软件生产效率很低。(5)软件开发成本越来越大。(6)软件成本与开发进度难以估计。(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.产生软件危机的原因
(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.软件危机的解决方法:
(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

【可行性研究】
1.可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”

2.可行性研究的最根本任务: 对软件开发以后的行动方针提出建议

3.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决

4.可行性研究过程(步骤):(1) 复查系统规模和目标(2)研究目前正在使用的系统(3) 导出新系统的高层逻辑模型(4) 进一步定义问题(5) 导出和评价供选择的解法(6) 推荐行动方针(7) 草拟开发计划(8) 书写文档提交审查

5.可行性研究包括哪几方面的内容?
(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;(2)经济可行性:经济效益是否超出开发成本;(3)操作可行性:系统操作在用户内部行得通吗?(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。

6.5.可行性研究的步骤?
(1)复查系统的规模和目标;(2)研究目前正在使用的系统,总结现有系统的优劣,提出新系统的雏形;(3)导出新系统的高层逻辑模型;(4)推荐建议方案; (5)推荐行动方针;(6)书写计划任务书(可行性报告); (7)提交审查。

【需求分析】
1.获取软件需求的常用方法有哪些?
①访谈/个别访问:正式的和非正式的访谈
②问卷调查/书面调查 :发电子邮件、问卷调查即把需要调查的内容制成表格交给用户填写。该方法对需要调查大量人员的意见时,十分有效。 ③情景分析/电话和电视会议:对目标系统解决某个具体问题的方法和结果,给出可能的情景描述,以获知用户的具体需求。④实地考察/收集资料:开调查会参加业务实践 ⑤构造原型。

2.需求分析的描述工具有哪些?
 有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等。

3.需求分析方法有哪些共性
(1).支持数据域分析的机制(2)功能标识的方法(3)接口的定义(4)问题分解的机制以及对抽象的支持(5)逻辑视图和物理视图6.系统抽象模型

4.需求分析的过程
问题识别--分析与综合--编制需求分析阶段文档--需求分析评审

5.需求分析的原则:(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型(2)必须定义软件应完成的功能,这条准则要求建立功能

模型(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型(4)必须对描述信息,功能和行为的模型进行分解,用层次的方式展示细节。

7.需求分析的基本任务是什么?
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么

8.需求分析的具体任务:(1) 确定对系统的综合要求---(功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、 逆向需求、将来可能提出的要求。)(2) 分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划

9.需求分析的9项任务
①画出目标系统的组织机构模型。 ②画出目标系统业务操作流程图。③画出目标系统的数据流图。④列出目标系统的功能点列表,即功能模型。⑤列出系统的性能点列表,即性能模型。⑥列出目标系统的接口列表,即接口模型。 ⑦确定目标系统的运行环境,即环境模型。 ⑧目标系统的界面约定,即界面模型。 ⑨分析与评估开发工期、费用、进度、风险等。

10.软件需求规格说明书由哪些部分组成?
组成包括:(1) 引言:编写目的、背景说明、术语定义及参考资料等。(2) 概述主要功能、约束条件或特殊需求。(3) 数据流图与数据字典。(4) 用户接口、硬件接口及软件接口。(5) 性能需求、属性等。(6) 其它需求,如数据库、操作及故障处理等。

【软件设计】
1.试述软件设计优化的准则
①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。模块划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。” ②模块的大小要适中。③模块的接口要简单、清晰、含义明确。便于理解,易实现、易于测试和维护。④一个模块的作用范围应在其控制范围之内。且判定所在的模块,应与受其影响的模块在层次上尽量靠近。⑤软件结构的深度、宽度、扇入、扇出应适当。⑥力求设计单入口和单出口的模块。避免“病连接”,以防止内容耦合。 ⑦设计功能可预测模块的划分,应防止功能过分局限。

2.从工程管理的角度来看,软件设计的任务分为两大阶段:(1)概要设计,将软件需求转化为数据结构和软件的系统结构,用SC图表示。(2)详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。

3.软件设计过程(步骤):(1)制定规范(2)软件系统结构的总体设计(3)处理方式设计(4)数据结构设计(5)可靠性设计(6)编写概要设计阶段的文档(7)概要设计评审(8)过程设计

4.软件文档共有多少种?参加编写每一种文档的都由哪些人组成?答:按照文档产生和使用的范围,软件文档

大致可分为三类:(1)开发文档:由软件开发人员制定;(2)管理文档:由软件开发人员制定,提交给管理人员。(3)用户文档:软件开发人员为用户准备的

5.就程序设计语言的工程特性而言,对程序编码有哪些要求?(1)可移植性(2开发工具的可利用性(3)软件的可重用性(4)可维护性

【软件测试】
1.Myers对软件测试目的提出以下观点:(测试的定义)软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。(3)一个成功的测试是发现至今尚未发现的错误的测试。

2.单循环测试是怎样进行测试的?为什么说这种测试方法是严密与可靠的?答:循环覆盖也是一种白盒测试技术,主要用来检查循环构造的有效性,对于最多为n次的简单循环,应做如下测试:
1)完全跳过循环;2)仅循环一次;3)循环两次;4)循环m次,m。对于嵌套循环,若生搬硬套简单循环的测试策略,可能使测试次数成几何级数增长,减少测试次数的具体措施包括:
1)从内存循环开始测试,此时所有外层循环都取最小值,内层循环按简单循环的测试策略测试;2)由里向外,回退到上一层循环测试,这层循环的所有外层循环仍取最小值,由该层循环嵌套的那些循环取一些典型值;3)继续向外扩展,直至所有循环测试完毕。

3.软件测试的策略和方法:(1)静态测试方法:基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。(人工测试方法,计算机辅助静态分析方法)(2)动态测试方法:通过运行软件来检验软件的动态行为和运行结果的正确性(白盒测试方法,黑盒测试方法)

4.什么是黑盒测试?黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术。
5.什么是白盒测试?白盒测试主要采用的技术有哪些?
测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。


【名词解释】
1.数据字典(DD):数据字典是用来定义数据流图中的各个成分的具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。

2.数据字典包括哪些内容?它的作用是什么?数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。

3.内聚性:内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

4.模块的内聚性包括哪些类型?答:(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚

5.模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性。耦合是模块之间的互相连接的紧密程度的度量。
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。

6. 什么是模块化?模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
(1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。
(4) 尽量降低模块接口的复杂程度;
(5) 设计单入口、单出口的模块。
(6) 模块的作用域应在控制域之内。

7. 什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征?
模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。
模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。
概要设计主要考虑输入、输出(参数传递)和功能两个特性。

8.耦合性

9.说明程序的耦合性与程序的独立性之

间的关系,简单回答为什么?
程序的耦合性(低-高)与独立性由强到弱顺序为:非直接耦合-数据耦合-标记耦合-控制耦合-外部耦合-公共耦合-内容耦合

10.降低耦合度的方法
耦合度是评价程序质量的重要指标,耦合度越小,则每个模块越容易独立地被理解、编写和修改,同时每个模块的错误越不容易扩散蔓延到其他模块。
①对需要了解的内容,隐含的改为明显的,便于理解;
②连接的方式尽量标准化,避免直接引用;
③减少公共区,将公共区划分为若干个逻辑子区;
④输入输出应局限在少量模块,不要分散在全系统;

11.JSP方法:
JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入,输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构

12.多态性:
指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。或(不同的对象,收到同一消息可以产生不同的结果。)

13.事务:引起式、触发式启动单一动作或一串动作的任何数据、控制、信号、事件或状态变化。

14.简述容错技术的四种主要手段,并解释。
结构冗余:包括静态冗余、动态冗余和混合冗余。
信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。
时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。
冗余附加技术:指为实现上述冗余技术所需的资源和技术。

15.系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。

16.系统流程图与数据流程图有什么区别?
系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。
系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。
数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。


17.简述三层C/S结构的优点
①允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性。
②允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性 。③三层C/S结构中,应用的各层可以并行开发,各层也可以选

择各自最适合的开发语言。 ④允许充分利用功能层有效地隔离开表示层与数据层未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层 。

18.类构件的重用方式分别有哪几种?并作简要说明。
1)构造法:为了在子类中使用库中基类的属性和方法,可以考虑在子类中引进基类的对象作为子类的成员变量,然后再子类中通过实例变元重用基类的属性和方法。构造法只用到面向对象的封装特征。
2)子类法:与构造法完全不同,子类法将新子类直接说明为库中基类的子类,通过继承和修改基类的属性与行为完成新子类的定义。显然,子类法利用了面向对象的封装和继承特征。

19.软件开发模型有几种?它们的开发方法有可特点?
软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。它的特点:
(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
渐增型开发方法及特点:
(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。
(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。
变换型开发方法及特点:(1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的程序系统。(2)该方法必须有严格的数学理论和形式化技术的支持。

相关文档
最新文档