《软件工程》重点考试知识点简答.docx
- 文档编号:12336216
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:29
- 大小:39.98KB
《软件工程》重点考试知识点简答.docx
《《软件工程》重点考试知识点简答.docx》由会员分享,可在线阅读,更多相关《《软件工程》重点考试知识点简答.docx(29页珍藏版)》请在冰豆网上搜索。
《软件工程》重点考试知识点简答
第一章
1、软件概念:
由计算机程序,数据,软件文档组成
软件的特点:
无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性
软件的分类:
按功能分:
系统支撑应用软件;按服务对象:
通用定制软件;按规模:
大中小型软件;按工作方式:
实时分时交互式批处理
2、软件危机:
是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:
●开发人员开发的软件产品不能完全满足用户的需求;
●软件产品的质量难以得到保障;
●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;
●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;
●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:
①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段
②没有完善的质量保证体系
③软件文档的重要性没有得到软件开发人员和用户的足够重视
④从事软件开发的专业人员对这个产业认识不够充分缺乏经验
⑤软件独有的特点也给软件的开发和维护带来困难
3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:
●使软件开发的成本控制在预计的合理范围内;
●使软件产品的各项功能和性能能够满足用户需求;
●提高软件产品的可靠性;
●使生产出来的软件产品易于移植维护升级和使用;
●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:
●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:
●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;
●坚持阶段评审制度已确保软件产品的质量;
●实施严格的产品控制以适应软件规格的变更;
●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;
●合理地安排软件开发小组人员并且开发小组的人员要少而精;
●不断改进软件工程的实践。
IEEE计算机学会建立软件工程知识体系指南的目的:
●促进世界范围内对软件工程的一致观点;
●阐明软件工程相对于其他学科的位置;
●刻画软件工程学科的内容;
●提供使用知识体系的主题。
4、软件的生命周期:
是指从设计该产品的构想开始到软件的需求的确定软件设计软件实现产品的测试与验收投入使用及版本的不断升级,到最终被市场淘汰的全过程。
各个阶段:
①可行性研究
②需求分析
③软件设计
④编码
⑤软件测试
⑥软件维护。
5、软件开发模型:
⑴瀑布模型。
是一种线性的软件开发模型回溯性很差,是一种基于里程碑的阶段过程模型,强调软件开发的阶段性,每个阶段完成特定的任务。
瀑布模型适应:
●需求可以一次性全部获得,开发人员经验丰富,软件项目风险低。
优点:
阶段性强易于管理缺点开发过程不灵活不能适应环境的变化。
⑵原型模型:
是开发人员为了快速而准确的获取需求常采用的方法。
特点:
主要用于挖掘需求,原型系统通常针对软件开发系统的指功能模块,功能相对不完善,通常结合其他模块共同使用。
适应:
对现有的软件系统产品进行升级或完善,开发人员与用户需求受限需求获取困难,开发人员对将要采用的技术手段不熟悉,具备快速开发工具。
优点:
是简单快速缺点是需要花费一些额外的成本。
⑶增量模型:
、
是把带开发软件系统模块化和组件化。
优点:
可以分批次的提交软件产品,减低了软件开发的风险,开发顺序灵活。
缺点:
要求待开发的项目可模块化。
⑷螺旋模型:
用于风险较大的大型软件开发模型,分为制定计划风险分析实施工程客户评估。
6、敏捷模型:
是一种轻量级的软件方法。
避免了传统重量级软件开发过程复杂文档繁琐的弊端,强调软件开发过程中团员的交流,过程的简洁,用户反馈的特性
第二章
1、可行性研究的目的不在于提出解决问题的方案,而在于研究解决问题的必要性和可能性。
意义是尽早的停止项目的开发就能够避免时间、资金、人力和物力的浪费
2、可行性研究包括:
技术、社会、经济可行性研究
3、技术型可行性研究是对技术解决方案的实用性、技术资源的可用性和设备条件作出评估。
经济可研究要对项目的开发总成本与开发系统将带来的经济效益之间的差值进行度量。
社会可行性研究从政策、法律和制度等社会因素方面考虑项目开发的合理性和意义
4、可行性研究的步骤:
确定系统的目标;分析研究正在运行的系统;设计新系统的高层逻辑模型;提出可行的解决方案并对其进行评估和比较;选择合适的解决方案;撰写可行性研究报告
5、可行性研究的结论一般有三种:
●可以按计划进行软件项目的开发;
●需要解决某些存在的问题或者需要对现有的解决方案进行一些调整或改善后才能进行软件项目的开发;
●待开发的软件项目部不具有可行性、立即停止该软件项目
6、成本-效益分析
第三章
1、面向对象的基本概念包括对象类封装继承多态,对象是客观世界中存在的事物,已可以是概念化的实体,他由一组属性和操作组成。
类是对对象的抽象,是对具有相同属性和相同操作的一组相似对象的定义。
封装是指把对象的属性和操作结合在一起组成一个独立的单元,强调独立与封闭。
继承表示类之间的层次关系他使得某类对象可以自动拥有另外一个或多个对象的全部属性和操作。
多态是一种使父类中定义的属性或操作被子类继承后可以有不同的实现的机制。
2、面向对象软件工程方法的优点:
符合人们的思维习惯,稳定性好,可复用性好。
3、目标系统的类可以划分为边界类、控制类和实体类
4、UML统一建模语言,是一种标准的图形化建模语言,主要用于软件的分析和设计,用定义完善的符号来图形化的展现一个软件系统
第四章
1、需求分析是在可行性研究的基础上,将用户对系统的描述,通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。
2、需求分析的步骤:
获取需求识别问题,分析需求建立目标系统的逻辑框架,将需求文档化,需求验证
3、数据流图dataflowdiagram是描述系统中数据流的图形工具,是一种用来表示信息流和信息变换过程的图解方法可以标识一个系统的逻辑输入和输出,以及把逻辑输入转化为逻辑输出所需的加工处理。
4、结构化需求分析采用的是:
自顶向下由外到内逐层分解的思想
5、数据字典用数据流图流图来表示系统的逻辑模型直观且形象,但是缺乏细节描述,也就是说他没有准确和完整的定义各个图元。
包含四类条目:
数据流、数据存储、数据项、数据加工
6、ER图包括实体、联系、属性
第五章
1、软件设计的分类
●前期进行概要设计,得到软件系统的基本框架;
●后期进行详细设计,明确系统内部的实现细节。
2、软件设计的原则
①模块化
②抽象
③逐步求精
④信息隐藏
3、模块化就是把系统或程序划分为独立命名且可以独立访问的模块,每个模块完成一个特定的子功能。
在模块化的过程中需要注意:
●模块的规模要适中,提高模块的独立性,降低模块间的耦合程度,提高模块的内聚程度,加强模块的保护性。
4、事务型数据流的设计步骤
①确定以事务为中心的结构,找出事务中心、接收数据、处理路三个部分。
②将数据流图转换为厨师的系统结构图。
③分解和细化接收分支和处理分支。
5、面向数据结构的设计方法
比较流行的有Jackon方法和Warnier方法。
6、Jackon方法
把数据结构分为三种基本类型:
顺序结构、选择结构、和循环结构。
7、流程图
是对过程、算法、流程的一种图形表示,它对某个问题的定义、分析或解法进行描述,用定义完善的符号表示操作、数据、流向等概念。
8、流程图分为数据、程序、系统、程序网络图和系统资源图。
9、流程图五种基本结构:
顺序型、选择型、先判定型循环、后判定型循环和多路分支选择型。
10、面向对象的设计原则
①模块化
②抽象化
③信息隐藏
④低耦合
⑤高内聚
⑥复用性。
11、软件系统的设计模式
解决某一类相似问题的方法论。
描述了该问题的解决方案的核心。
12、23种模式分3类:
①创建型模式②结构型模式③行为型模式。
13、所谓模式,就是只解决某一类相似问题的方法论。
每种设计模式都包含四个要素:
模式名称,问题,解决方案,效果描述
第七章
1.编码的过程就是把软件设计阶段得到的解决方案转化为可以在计算机上运行的软件产品的过程。
2.编程语言
①机器语言
②汇编-面向机器的低级语言(简捷、快速)
③高级语言面向过程、对象
④超高级语言。
3、选择编程语言时,考虑的因素:
①应用领域
②用户要求
③开发人员喜好能力
④可移植要求
⑤算法和数据结构的复杂性。
4、源程序文档化
①按实际意义命名
②遵循一定命名规则
③变量不要过于相似
④定义时作出解释;数据说明;语句构造;输入输出;效率。
第八章、第九章
1软件测试是发现软件中错误和缺陷的主要手段。
2软件测试的原则:
①完全测试是不可能的②测试中存在风险
③软件测试只能表明缺陷的存在④软件产品中潜在的错误数与已发现的错误数成正比
⑤让不同的测试人员参与到测试工作中⑥让开发小组和测试小组分离
⑦尽早并不断的进行测试⑧要重点测试容易出错或错误较多的模块
⑨应该长期保留所有的测试用例
3、常用的软件测试模型有:
V模型,W模型和H模型
4、软件测试的分类:
按照时间阶段:
单元测试,集成测试,系统测试,验收测试。
按照是否运行程序:
动态测试,静态测试。
按照是否看源码:
黑盒测试,白盒测试。
按照质量因素:
功能测试,可靠性测试,可用性测试,性能测试,安全性测试
5、审查和走查是静态测试的常用形式,且静态测试的效率比较高
6、动态测试中有两种非常流行的测试技术,即黑盒测试和白盒测试
7、单元测试是指对软件中最小的可测试单元进行检查和验证,基本单元一般来说是一个函数、一个过程或者一个类。
通常情况下,测试人员采用的白盒测试的方法。
8、集成测试是指在单元测试的基础上,对通过测试的单元模块组装成系统或子系统进行测试,由于测试的对象是经过单元限额是的代码,所以集成测试并不关注各个模块的内部细节,而是关注模块之间的接口是否运行正常
9、软件测试的一般步骤:
单元测试、集成测试,系统测试,验收测试
10、面向对象的软件测试可分为:
面向对象的分析、设计、实现、单元、集成、系统测试和验收测试
11、软件结构优化设计准则:
⑴使每个模块执行一个功能⑵每个模块用过程语句调用其他模块
⑶模块间传送的参数作数据用⑷模块间共用的信息尽量少
⑸设计优化应该力求做到在有效模块化的前提下使用最少量的模块,并且在能够满足信息要求的前提下使用最简单的数据结构。
12、耦合耦合:
是对一个软件结构内不同模块间彼此联系程度的一种定性耦合度量。
13、对象对象:
是系统中用来描述客观事物的一个实体,是具有明确语义、对象、边界的实体。
14、测试方法
⑴静态测试静态测试:
通常不要求在计算机上实际执行所测程序,主要静态测试以一些人工的模拟技术对软件进行分析和测试。
主要包括代码审查和静态结构分析。
⑵动态测试动态测试:
是通过输入一组预先按照一定的测试准则构造的动态测试实例数据来动态运行程序,从而达到发现程序错误的过程。
它包括黑盒测试和白盒测试。
16.测试技术
⑴黑盒测试黑盒测试:
在测试时,吧、把程序看作一个不能打开的黑盒黑盒测试子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口处进行测试。
⑵白盒测试白盒测试:
是一种广泛使用的逻辑测试技术。
它的对象基本白盒测试上是源程序,是以程序的内部逻辑结构为基础的一种测试技术。
18、软件测试要经过哪几个阶段?
每个阶段与什么文档有关?
软件测试要经过哪几个阶段?
每个阶段与什么文档有关?
软件测试要经过测试计划过程、测试设计过程、测试执行过程、测试结束过4个阶段
测试计划输出文档:
测试计划与测试需求测试设计过程输出文档:
测试说明与测试方案测试执行过程输出文档:
测试用例与测试规程
测试结束过程输出文档:
测试结论与测试报告
第十章
1、软件的维护是软件产品生命周期的最后一个阶段
2、软件维护的过程:
①建立维护机构②用户提供维护申请并提交维护申请报告
③维护人员确认维护类型并实施相应的维护工作④整理维护记录并对维护工作进行评审
3、软件的维护可以分为:
●纠错性维护是为了识别并纠正软件产品中所浅尝的错误,改正软件性能上的缺陷所进行的维护;
●适应性维护时为了使软件产品适应硬件环境的变更而进行的维护;
●完善性维护是主要部分,他是针对用户对软件产品所提出新的需求所进行的维护;
●预防性维护。
4、影响可维护性的因素:
可理解性,可测试性,可修改性等。
提高可维护性的措施:
●建立完整的文档;
●采用先进的维护工具和技术;
●注重可维护性的评审环节。
5、软件的质量的特性包括功能性、可靠性、可用性、效率、可维护性和可移植性
6、McCall软件的质量特性模型中的每种特性有(运行维护移植):
正确性、效率、可靠性、可用性、完整性、可维护性、可测试性、灵活性、可移植性、互联性、可复用性。
7、软件质量的保证的措施:
①基于非执行的测试②基于执行的测试③程序的正确性证明。
8、配置管理的工作范围一般包括:
标识配置项、进行配置控制、记录配置状态、执行配置审计。
9、文档是指某种数据介质和其中所记录的数据。
软件文档是用来表示对需求、过程或结果进行描述、定义、规定或认证的图示信息,他描述或规定了软件设计和实现的细节。
10、软件工程文档可以分为:
用户文档、开发文档和管理文档。
二.解释名词
1.软件:
是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据、相关文档的完整集合以及后续的维护服务。
2.白盒测试:
是对软件的过程性描述做细致的检查,软件测试员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
3.边界值分析:
就是首先确定边界情况,然后选取正好等于、刚刚大于,或刚刚小于边界的值作为测试数据。
4.模块的扇入/扇出数:
在软件结构中,下级模块被上级模块调用的个数称为模块的扇入,上级调用下级模块的个数称为扇出数。
5.静态模型:
是通过系统对象类及其之间的关系描述系统的静态结构。
6.模块的控制范围:
指该模块及所包含的子树。
7.测试和调试:
测试是为了发现错误;调试是要找出错误的位置并改正错误。
8.继承:
就是子类自动共享父类数据结构和方法的机制。
9.渐增式测试:
在对系统的测试过程中,将模块是按照测试方案,一个一个逐步添加到被测试的系统中。
10.需求分析:
是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
11.数据流图,简称DFD,是结构化分析方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。
12.耦合性。
也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
13.对象是人们要进行研究的任何事物,从最简单的整数以至复杂的飞机等均可着作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
14.代码检查:
以小组为单位阅读代码,应用一系列规程和缺陷检查技术,检查实际的产品,包括文档和程序代码,发现存在缺陷和缺陷的过程。
15.可移植性:
将软件从一个系统平台搬到另一个系统平台的容易程度。
16.环路度量:
程序的复杂性很大程度上取决于程序控制流的复杂性,单一的顺序程序结构最简单,循环和选择所构成的环路越多,程序就越复杂。
17.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两方面的问题:
如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。
18.功能测试:
即黑盒测试,测试者值考虑程序的输入和输出,主要看程序是否实行其要求的功能。
19.结构化程序设计:
结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。
结构化程序设计方法的基本要点是:
1)采用自顶向下、逐步求精的程序设计方法
2)使用三种基本控制结构构造程序
3)主程序员组的组织形式。
20.状态图:
状态图是一个标准的计算机概念,它是有限自动机的图形表示,它反映了状态与事件的关系,状态图确定了由事件序列引起的状态序列。
21.软件配置管理:
软件配置管理,简称SCM,它用于整个软件工程过程。
其主要目标是:
标识变更;控制变更;确保变更正确地实现;报告有关变更。
SCM是一组管理整个软件生存期各阶段中变更的活动。
22.软件生存周期模型 :
描述软件开发过程中各种活动如何执行的模型
23.数据字典(DD):
数据字典是用来定义数据流图中的各个成分的具体含义的。
它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
24.内聚性:
内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量
25.JSP方法:
JSP方法是面向数据结构的设计方法,其定义了一组以数据结构为指导的映射过程,它根据输入,输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构。
26.多态性:
指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。
或(不同的对象,收到同一消息可以产生不同的结果。
)内容。
27.经济可行性:
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
28.社会可行性:
要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
29.投资回收期:
投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。
30.对应关系:
即有直接因果关系在程序中可以同时处理。
31.结构冲突:
输入数据与输出数据结构找不到对应关系的情况,称为结构冲突。
32.可行性分析:
用最小的代价在尽可能短的时间内确定问题是否能够解决。
33.信息隐藏:
是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说是不能访问的。
34.α测试是由一个用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。
β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
35.测试是为了发现错误;调试是要找出错误的位置并改正错误。
36.程序的可维护性:
为满足用户新的需求,或当环境发生了变化,或运行中发现了新的错误时,对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。
37.模块的控制范围:
指该模块及所包含的子树。
38.容错技术:
对那些无法避开的差错,使其影响减少至最小的技术。
也就是说,当错误发生时,尽可能地不影响其它的系统元素,或是把用户的影响限制在某些容许的范围内。
39.驱动模块与桩模块:
在测试过程中,用以代替被测试模块的上级模块称为驱动模块,用以替代被测试模块的下级模块称为桩模块。
40.渐增式测试:
在对系统的测试过程中,将模块是按照测试方案,一个一个逐步添加到被测试的系统中。
三.简要回答下列问题
1.需求分析的任务是什么?
需求分析的任务是确定待开发的软件系统“做什么”。
具体任务包括确定软件系统的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的用户手册。
2.数据流图由哪几种基本部件组成?
画数据流图时最常犯的有哪些错误?
⑴主要成分:
数据的源点或终点,数据处理,数据存储,数据流。
⑵没有分支,条件和循环;没有数据出错处理,没有文件的打开和关闭;数据处理必须“有进有出”;数据存储必须“有进有出”;数据流线上有数据流名,且数据流名是名词;数据处理的命名是动词。
3.什么叫模块化?
设计一个系统时是否分的模块越多就越好说明原因。
⑴模块化就是把程序划分成可独立命名且独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
⑵不一定。
当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了,但是,随着模块数量增加,设计模块间接上所需要的工作量也将增加,根据这两个因素,得出设计一个系统时并不一定模块越多越好。
4.PAD图的特点是什么?
4.PAD图的特点如下:
⑴清晰地反映了程序的层次结构。
图中的竖线为程序的层次线,最左竖线是程序的主线,其后一层一层展开,层次关系一目了然。
⑵支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化。
⑶易读易写,使用方便。
⑷支持结构化的程序设计原理。
⑸可自动生成程序。
5.软件测试过程中需要哪些信息?
软件测试时需要三类信息:
⑴软件配置:
指需求规格说明书、设计说明书、源程序等。
⑵测试配置:
指测试方案、测试用例、测试驱动程序等。
⑵测试工具:
指计算机辅助测试的有关工具。
6.描述详细设计的基本任务。
详细设计的基本任务是为每个模块进行详细的算法设计,为模块内的数据结构进行设计,确定每个模块的内部特性,包括模块的算法和使用的数据。
对数据库进行物理设计等。
7.结构化生命周期方法的优点及其适应对象。
结构化生命周期方法的主要优点是:
方法强调需求分析的重要性,即体现软件开发中用户至上的原则;开发过程的阶段划分,各阶段的具体任务明确;各阶段有具体的描述工具易于掌握;强调文档的重要性,并给出文档的内容和格式,因此方法具有易操作性,是软件开发人员应该掌握的基本方法。
结构化方法更适合于需求能够预先明确定义的软件系统,如系统软件或某些实时控制软件等。
8.画数据流图要注意哪些事项?
⑴设计数据流图时只需考虑系统必须完成的基本逻辑功能,不需要考虑怎样具体的实现这些功能。
⑵从顶层数据流开始。
⑶并不是所有数据存储和数据流都能直接从问题描述中提取出来;
⑷当进一步分解将涉及如何具体地实现一个功能时,就不应该在分解了;
⑸数据流图中个成分的命名要仔细推敲,看是否恰当;
9.简述Jackson方法的设计步骤。
Jackson方法(JSP)设计步骤:
⑴分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。
⑵找出输入数据和输出数据结构中有对应关系的数据单元。
“对应关系”指这些数据单元在数据内容上、数最上和顺序上有直接的因果关系,对于重复的数据单元,重复的次序和次数都相同才有对应关系。
⑶按一定的规则由输入输出的数据结构导出程序结构。
⑷列出基本操作与条件,并把它们分配到程序结构图的适当位置。
⑸
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 重点 考试 知识点