软件工程期末考试整理

  • 格式:doc
  • 大小:81.09 KB
  • 文档页数:9

一.知识点1.软件:软件是一系列按照特定顺序组织的计算机数据和指令的集合。

2.软件工程:软件工程是:1.把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2.研究把工程用用于软件中操作的途径。

本质特性:1.软件工程关注于大型程序的构造:2.软件工程的中心课题是控制复杂性;3.软件产品交付使用后仍然需要经常修改;4.开发软件的效率非常重要;5.和谐地合作是成功地开发软件的关键;6.软件必须有效地支持它的用户;7.再软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人开发产品。

基本原理:1.用分阶段的生命周期计划严格管理;2.坚持进行阶段评审;3.实行严格的产品控制;4.采用现代程序设计技术;5.结果应能清楚地审查;6.开发小组的人员应该少而精;7.承认不断改进软件工程实践的必要性。

3.软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1.主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

2.典型表现:1.对软件开发成本和进度的估计常常很不准确;2.经常出现用户对“已完成的”软件产品不满意的情况;3.软件产品的质量往往达不到要求;4.软件通常是很难维护的;5.软件产品往往没有适当的文档资料;6.软件成本在计算机系统总成本所占的比例逐年上升;7.软件开发生产率提高的速度远远不能满足社会对软件产品的日益增长的需求。

3.原因:1.对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因。

2.轻视软件维护。

3.忽视软件需求分析的重要性。

4.软件开发方法:1.传统方法学:2.面对对象方法学:5.软件生存周期模型:1.瀑布模型:2.快速原型模型:3.增量模型:4.螺旋模型:5.喷泉模型:6.增量开发:增量开发,又叫增量式开发,是软件工程当中,一种常用的软件开发过程思想。

其中增量是指在软件开发过程中,先开发主要功能模块,再开发次要功能模块,逐步完善,最终开发出符合需求的软件产品(来自百度)。

7.软件需求:软件需求是(1)用户解决问题或达到目标所需条件或权能(Capability)。

(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。

(3)一种反映上面(1)或(2)所述条件或权能的文档说明(来自百度)。

8.需求分析:需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。

基本任务:准确地回答“系统必须做什么”这个问题。

1.确定对系统的综合要求;2.分析系统的数据要求;3.到处系统的逻辑模型;4.修正系统开发计划。

9.功能需求:指定系统必须提供的服务。

通过需求分析应该划分出系统完成的所有功能。

10.非功能需求:1.性能需求;2.可靠性和可用性需求;3.出错处理需求;4.接口需求;5.约束;6.逆向需求;7.将来可能提出的要求。

11.数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

1.数据字典的内容:数据流;数据流分量(即数据元素);数据存储;处理。

2.用途:作为分析阶段的工具。

12.父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。

13.数据流图:数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。

(P34~P40)14.变换型数据流图:15.事务型数据流图:变换型结构的数据流图呈一种线性状态,见图6-4-4所示,它所描述的工作可表示为输入、主处理及输出。

事务型结构的数据流图则呈束状,见图6-4-5所示,即一束数据流平行流人或流出,可能同时有几个事务要求处理。

图6-4-4变换型结构的数据流图(来自百度)16.软件设计:1.系统设计阶段。

确定系统的具体实现方案;2.结构设计阶段,确定软件结构。

17.内聚性:内聚标志着一个模块内的各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。

简单地说,理想内聚的模块只做一件事情。

18.耦合性:耦合是对一个软件结构内的不同模块之间互连程度的度量。

耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

19.模块的作用范围:1.定义:受该模块内一个判定影响的所有模块的集合。

2.模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。

20.程序设计风格:程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等。

(来自百度)21.白盒测试:白盒测试[1]又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。

白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

(来自百度百科)典型技术:1.逻辑覆盖:1.语句覆盖2.条件覆盖3.判定/条件覆盖4.条件组合覆盖5.点覆盖6.边覆盖7.路径覆盖2.控制结构测试:1.基本路径测试2.条件测试3.循环测试22.黑盒测试法:黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

(来自百度百科)1.等价划分:2.边界值分析3.错误推测23.静态测试:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

24.桩模块:桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。

主模块作为驱动模块,与之直接相连的模块用桩模块代替。

在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。

(来自百度百科)25.确认测试:也称为验收测试,它的目标是验证软件的有效性。

1.软件有效性:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。

2.确认测试必须有用户积极参与。

3.确认测试通常使用的黑盒测试法。

26.软件测试:为了发现程序中的错误而执行程序的过程。

1.测试的目标是暴露程序中的错误。

2.成功的测试是发现了至今为止尚未发现的错误的测试。

27.测试用例:测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

(为了发现程序中的故障而专门设计的一组数据或脚本)28.多态性:是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送到子类对象。

指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果29.泛化:即通常所说的继承关系,它是通用元素与具体元素之间的一种分类关系。

30.聚合:即聚集,是关联的特例,聚集表示类与类之间的关系是整体与部分的关系。

1.共享聚集2.组合聚集31.依赖:依赖关系描述两个模型元素(类、用例)之间的语义连接关系:如果独立的模型元素改变了,将影响依赖于它的模型元素。

32.软件的配置管理:软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。

软件配置管理应用于整个软件工程过程。

在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。

SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。

从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。

(来自百度百科)33.软件质量保证:是指在软件开发过程中,为了保证产品满足指定标准而进行的各种活动。

二.问答题1.什么是软件的生命周期?软件生命周期分哪几个阶段?软件的生命周期,亦称软件的生存周期。

它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。

软件生命周期一般分为定义,开发,维护三大阶段,定义阶段有可行性论证和开发计划,需求分析,开发阶段有概要设计,详细设计和编码,维护阶段有测试,运行维护。

2.常见的几种生存周期模型的特点1.瀑布模型:① 顺序性、依赖性:下一阶段依赖上一阶段的完成。

② 推迟实现:阶段任务结束形成文档,并审核后方能进行设计任务,将程序的实现推迟进行。

③ 质量保证:文档完整、文档评审,避免错误积累与放大效应。

2.快速原型模型:1.开发实践短,见效快;2.。

对环境的适应能力强。

3.增量模型:当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。

客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。

增量模型强调每一个增量均发布一个可操作的产品。

4.螺旋模型:引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。

5.喷泉模型:1.开发过程有分析、系统设计、软件设计和实现四个阶段。

2.它反映了软件过程迭代性的自然特性,从高层返回低层无资源消耗。

3.以分析为基础,资源消耗成塔形。

4.各阶段相互重叠,它反映了软件过程并行性的特点。

5.强调增量开发,整个过程是一个迭代的逐步提炼的过程6.对象是所有活动作用的实体。

3.软件工具是什么?按照软件生存周期可将其分为几类?软件工具是指为支持计算机软件及其文档的开发、维护、模拟、移植或管理而研制的程序系统。

按照软件生存周期可将其分为如下几类:(1)需求分析:如数据流图绘制与分析工具、状态转换图绘制与分析工具、面向对象的模型和分析工具、快速原型构造工具、数据字典与数据库工具等。

(2)软件设计:如HIPO图、PDL(程序设计语言)或PAD(问题分析图)支持工具等。

(3)编码:集成化的程序员工作平台。

如各种正文编辑器和常规的编译程序、汇编程序、连结程序及符号调试器等。

(4)软件测试:如静态分析器、动态覆盖率测试器、测试用例生成器、测试报告生成器及环境模拟器等。

(5)软件维护:如反汇编程序、反编译程序、程序结构分析器、源程序格式化工具、文档生成工具、源程序至PAD(问题分析图)或流程图的自动转换工具等。