09软件工程导论复习课.docx
- 文档编号:10790470
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:20
- 大小:383.96KB
09软件工程导论复习课.docx
《09软件工程导论复习课.docx》由会员分享,可在线阅读,更多相关《09软件工程导论复习课.docx(20页珍藏版)》请在冰豆网上搜索。
09软件工程导论复习课
09软件工程导论复习课
第1章软件工程学概述
1、什么是软件工程?
为什么会出现软件工程?
软件工程的主要目标是什么?
软件工程是:
1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件
2)研究1)中提到的途径。
软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为软件工程)。
软件工程的主要目标:
从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
(优质、高产)
2、什么是软件工程方法学?
软件工程的3要素(软件工程方法学的3要素)是什么?
分别包含什么内容?
软件工程方法学:
软件生命周期全过程中使用的一整套技术方法的集合。
软件工程的3要素:
方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎么做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目前使用得最为广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
3、软件工程的7条基本原理是什么?
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应少而精
7)承认不断改进软件工程实践的必要性
4、软件生命周期分为哪3个时期,每个时期又包含几个阶段?
软件生命周期有软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期也进一步划分成若干个阶段。
软件定义时期的任务是:
确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
开发时期具体设计和实现在前一时期定义的软件,它通常由下述4个阶段组成:
总体设计,详细设计,编码和单元测试,综合测试。
维护时期的主要任务是使软件持久地满足用户的需要。
5、常见软件生命周期模型(课件中的前5类)的特点有哪些?
在“快速原型”模型中软件原型的作用主要是什么?
在哪类生命周期模型中引入了风险分析?
哪类生命周期模型是典型的传统软件工程生命周期模型?
哪类生命周期模型是典型的面向对象软件工程生命周期模型?
常见软件生命周期模型:
1)瀑布模型
阶段间具有顺序性和依赖性;推迟实现的观点;质量保证的观点。
2)快速原型模型
使用这种软件过程开发出的软件产品通常能满足用户的真实需求;软件产品的开发过程基本上是线性顺序过程。
3)增量模型
能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击。
4)螺旋模型
有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险;软件维护与软件开发没有本质区别。
5)喷泉模型
是典型的面向对象生命周期模型,它充分体现了面向对象软件开发过程迭代和平滑过渡的特性。
原型是软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。
螺旋模型中引入风险分析。
瀑布模型是典型的传统软件工程生命周期模型。
喷泉模型是典型的面向对象软件工程。
第2章可行性研究
1、可行性研究包括哪几方面(每方面解决什么问题),可行性研究得到的文档和结论是什么?
技术可行性:
使用现有的技术能实现这个系统吗?
经济可行性:
这个系统的经济效益能超过它的开发成本吗?
操作可行性:
系统的操作方式在这个用户组织内行得通吗?
研究的结果:
是一份可行性研究的各个步骤的工作结果的文档,它包含了工程是否能够继续进行下去和分析员的推荐方案。
2、主要描述工具的概念和使用:
系统流程图:
什么是,成份和基本符号,描述什么模型,画法;
数据流图:
什么是,成份和基本符号,描述什么模型,系统级和功能级、简单细化数据流图的特点,画法;
数据字典:
什么是,哪些内容需要在数据字典中被定义,用到的符号,定义的方法。
系统流程图的定义:
是概括地描绘物理系统的传统工具。
它用图形符号以黑盒子形式描绘组成系统的每个部件。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,是物理数据流图而不是程序流程图。
系统流程图的基本符号如下:
数据流图的定义:
它是一种图形化技术,它描述信息和数据从输入移动到输出过程中所经历的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图的基本符号:
正方形(或立方体)表示数据的源点或终点
圆角矩形(或圆形)表示变换数据的处理
开口矩形(或两条平行横线)表示数据存储
箭头线表示数据流,特定数据流动方向
数据字典的定义:
是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
数据字典的内容:
数据流、数据流分量、数据存储、处理。
定义数据的方法:
用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低的成分组合来定义。
第3章需求分析
1、需求分析得到的成果(文档)是什么?
其中包含哪些内容?
需求分析得到的成果:
是通过需求分析得到的除了分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。
2、软件需求通常包括哪些方面?
如何获取用户需求?
1)功能需求:
这方面的需求指定系统必须提供的服务。
通过需求分析应该划分出系统必须完成的所有功能。
2)性能需求:
性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。
3)可靠性和可用性需求:
可靠性需求定量地指定系统的可靠性。
可用性与可靠性密切相关,它量化了用户可以使用系统的程度。
4)出错处理需求:
这类需求说明系统对环境错误应该怎样响应。
5)接口需求:
接口需求描述应用系统与它的环境通信的格式。
常见的接口需求有用户接口需求、硬件接口需求、软件接口需求、通信接口需求。
6)约束:
设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。
7)逆向需求:
逆向需求说明软件系统不应该做什么。
8)将来可能提出的要求:
应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。
这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时比较容易地进行这种扩充和修改。
3、增加的主要描述工具的概念和使用:
E-R图:
什么是,成份和基本符号,描述什么模型;
状态转换图:
什么是,包含的成份,描述什么模型。
E-R图的定义:
即实体——联系图,是表示数据对象及其之间关系的图形语言机制,是建立数据模型的图形工具。
E-R图的基本成分和使用的符号:
实体(即数据对象)矩形框
关系菱形框
属性椭圆形或圆角矩形
E-R图描述的模型:
用来建立数据模型,E-R模型使用简单的图形符号表达系统分析员对问题域的理解。
状态转换图的定义:
通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
状态转换图的基本成分和使用的符号:
基本成分是状态、事件和状态转换。
状态转换图描述的模型:
用来建立系统的行为模型。
4、在结构化分析中,建模的核心是什么?
3种模型分别是什么,分别用什么工具来描述?
建模的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。
1)数据模型,用实体-联系图描述;
2)功能模型,用数据流图描述;
3)行为模型,用状态转换图描述。
第5章总体设计
1、模块化设计原理的内涵包含什么?
为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。
模块化设计的原理包括:
模块化、抽象、逐步求精、信息隐蔽和局部化、模块独立。
为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。
2、模块独立性度量(描述)的两个指标:
内聚、耦合;什么是内聚,什么是耦合;在面向数据流的方法中,内聚、耦合各分为哪几级,每级的具体含义分别是什么?
强度从弱到强如何排列?
内聚定义:
它标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
内聚分类如下:
内聚使用原则:
设计时力求高内聚,设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。
耦合定义:
它是对一个软件结构内不同模块之间互连程度的度量。
耦合分类如下:
耦合使用原则:
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合,最终降低模块间接口的复杂性。
3、软件总体结构描述工具的概念和使用:
软件层次图、软件结构(SC)图、HIPO图:
什么是,基本符号和表示的结构,画法。
1)软件层次图的定义:
是用来描绘软件层次结构的图形工具。
一个矩形框代表一个模块,方框间的连线表示模块间的调用关系。
软件层次图的示例如下:
2)HIPO图的定义:
即层次图+输入/处理/输出图,由一张H图和一组IPO图组成。
通常将HIPO图作为软件结构的描绘,列入设计文档。
H图,是给每个模块加上编号的层次图。
IPO图,即为H图中的每个模块画一张IPO图。
3)结构图(SC)的定义:
描述了软件的模块结构,表示了一个系统的层次分解关系;反映了模块间的联系以及块内联系;反映了模块间的信息传递。
结构图一般不列入设计文档,只用于设计阶段检查模块设计的正确性和模块独立性。
结构图(SC)的基本符号:
A
方框,内有名称,表示模块;
直线,表示上层模块对下层模块的调用;
尾部带空心圆的箭头,表示按方向传递的数据信息;
尾部带实心圆的箭头,表示按方向传递的控制信息;
判定为真时调用A,为假时调用B模块M循环调用模块A、B、C
4、结构化设计(SD)方法(面向数据流的设计方法)中,如何将分析的结果(数据流图)逐层分解、转换成设计的初步结果(层次图/结构图)?
数据流分类:
SD方法把信息流(数据流图)映射成软件结构,信息流的类型决定了映射的方法。
DFD中的数据流可分为两类:
变换型数据流、事务型数据流;可转换为相应的软件结构:
变换型结构、事务型结构。
变换分析——从变换流到变换型结构的映射过程:
事物分析——从事物流到事物型结构的映射过程:
第6章详细设计
1、详细设计的任务(主要工作)有哪些?
结束后得到哪些成果(文档的内容)?
详细设计的任务(工作):
确定每个模块内部的算法和数据结构,用一定的工具精确描述目标系统,从而方便在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
包括:
确定每一模块的算法;确定每一模块使用的数据结构;确定本模块的外部接口和用户界面;为每一模块设计一组测试用例。
设计得到的结果:
确定每个模块内部的算法和数据结构,产生描述各模块处理过程的详细文档。
详细设计的要求:
不仅要逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程容易阅读和理解。
2、软件详细设计描述工具的概念和使用:
程序流程图、N-S图、PAD图:
什么是,基本符号和表示的意义,画法;
1)程序流程图的定义:
又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而它也是用的最混乱的一种方法。
程序流程图的基本符号如下:
2)盒图(N-S图)的定义:
出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图。
它有下述特点:
功能域(即,一个特定控制结构的作用域)明确,可以从盒图一眼就看出来;没有箭头,不可能任意转移控制;很容易确定局部和全局数据的作用域;很容易表现嵌套关系,也可以表示模块的层次结构。
盒图(N-S)的基本符号如下:
(a)顺序;(b)IF_THEN_ELSE型分支;(c)CASE型分支;(d)循环;(e)调用子程序
3)PAD(问题分析图)的定义:
1973年由日本日立公司发明。
它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。
PAD(问题分析图)的基本符号:
(a)顺序;(b)选择(IFCTHENP1ELSEP2);(c)CASE型多分支;(d)WHILE型循环(WHILECDOP);(e)UNTIL型循环(REPEATPUNTILC);(f)语句标号;(g)定义
4)过程设计语言(PDL)的定义:
也称为伪码,PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。
结构设计语言(PDL)的举例如下:
3、什么是模块的环形复杂度,如何计算?
环形复杂度的定义:
即程序的逻辑复杂度,主要是指模块内程序的复杂性。
环形复杂度的计算方法:
方法一:
流图中的区域数等于环形复杂度;方法二:
流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数;方法三:
流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
第7章实现
1、在结构化程序设计中,“好代码”的主要标准是什么?
程序的效率从哪几方面体现?
2、软件测试的三大阶段:
单元测试、集成测试(组装测试)、确认测试(验收测试)的目的和主要工作是什么?
测试计划分别在什么时候做?
测试计划的内容主要包括什么?
1)模块测试(单元测试)
目的:
是确保每个模块为一个单元能正确运行。
在编写出程序代码并通过了编译程序的语法检查之后,就可以用详细设计描述作指南,对重要的执行通路进行测试,以便发现模块内部的错误。
内容:
模块接口测试——检测数据能否正确无误地进入和流出模块;路径测试;出错处理测试——测试程序中包含的出错处理是否有效;边界条件测试——检测在数据边界处,主要使用白盒测试技术。
单元测试计划的时间:
在详细设计结束时制定,主要使用白盒测试技术。
2)集成测试
任务:
在单元测试的基础上,需要将所有模块按照设计要求组装成为系统,发现并排除在模块连接的接口中可能出现的问题,最终构成所要求的软件系统。
内容:
把各个模块连接起来后,考察穿越模块接口的数据是否会丢失或产生错误;各个子功能组合起来,能否达到预期要求的主要功能;一个模块的功能是否会对另一个模块的功能产生不理的影响;全局数据结构是否有错误;单个模块的误差累积起来,是否会被放大,从而达到不能被接收的程度。
继承测试计划的时间:
在总体设计结束时制定,详细设计结束时补充。
3)确认测试
目的:
也称为验收测试。
它的主要目标是验收软件的有效性。
证实软件功能与用户需求是否一致,即测试软件能否按照软件需求规格说明书(合同)的要求运行。
内容:
有效性测试、软件配置复查、验收测试。
验收测试计划的时间:
在需求分析时制定,后续阶段补充,通过黑盒测试技术。
3、什么是白盒测试?
典型的白盒测试技术有哪几个,含义如何?
白盒测试的定义:
也称为结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通络是否都能按预定要求正确工作。
应用时间:
白盒测试在测试过程的早期阶段进行。
白盒测试技术:
逻辑覆盖:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖;控制结构测试:
基本路径测试、条件测试、循环测试。
逻辑覆盖测试的5种标准
发现错误的能力
标准
含义
1(弱)
语句覆盖
每条语句至少执行一次A=2,B=0,X=4
2
判定覆盖
每一判定的每个分支至少执行一次A=3,B=0,X=3A=2,B=1,X=1
3
条件覆盖
每一判定中的每个条件,分别按“真”、“假”至少各执行一次A=2,B=0,X=4A=1,B=1,X=1
4
判定/条件覆盖
同时满足判定覆盖和条件覆盖的要求A=2,B=0,X=4A=1,B=1,X=1
5(强)
条件组合覆盖
求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次
条件覆盖不一定包含判定覆盖;判定覆盖也不一定包含条件覆盖。
4、逻辑覆盖测试中,各类测试发现错误的能力强弱如何?
简单的逻辑覆盖测试用例设计。
条件组合覆盖是前述集中覆盖标准中最强的。
但是,满足条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都能执行到。
例子:
5、什么是黑盒测试?
典型的黑盒测试技术有哪几个,含义如何?
简单的黑盒测试用例设计。
黑盒测试都定义:
着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
应用时间:
黑盒测试主要用于测试过程的后期。
黑盒测试技术:
等价划分、边界值分析、错误推测。
例子1:
时间报表(需8个测试用例)
例子2:
学号(需10个测试用例)
第8章维护
1、什么是软件维护、它在软件工程中的工作量比例?
软件维护定义:
就是在软件已经交付使用之后,为了改正错误或满足新的需要而修正软件的过程。
软件维护需要的工作量很大,平均说来,大型软件的维护成本高达开发成本的4倍左右。
目前国外许多软件开发组织把60%以上的人力用于维护已有的软件。
2、维护分哪四种类型、其含义分别是什么、在维护工作中占的比例如何?
维护为分四种类型:
改正性维护:
把诊断和改正错误的过程称为改正性维护;适应性维护:
为了和变化的环境适当的配合而进行的修改软件的活动;完善性维护:
在使用软件的过程中用户常常提出新增功能或修改已有功能的建议,为了满足这类要求的活动;预防性维护:
为了改进将来的可维护性或可靠性。
所占比例:
完善性维护:
50%-66%;改正性维护:
17%-21%;适应性维护:
18%-25%;其他维护:
4%。
3、什么是软件的可维护性?
决定软件可维护性的因素有哪些?
造成软件难以维护的原因有哪些?
软件的可维护性:
是指软件维护人员理解、纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩软件的难易程度。
决定软件可维护性的五个因素:
可理解性、可测试性、可修改性、可移植性、可重用性。
难以维护的原因:
在于这些软件的文档不全、质量差、开发过程不注意采用好的方法,忽视程序设计风格等。
难易维护的根本原因:
软件定义和软件开发的方法有缺点,在软件生命周期的头两个时期没有严格而又科学的管理和规划,没有采用软件工程思想开发软件。
4、什么是软件再工程?
软件再工程,也叫做修理或重生,是一类软件工程活动。
它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。
它从已存在的程序中重新活动设计信息,而且使用这些信息来改建或重构现有的系统,同时加进新的功能或改善它的性能,以改进它的综合质量。
第九章面向对象方法学引论
1、典型的面向对象软件工程生命周期模型是什么?
特点?
2、类与类之间有哪些关系?
理解每种关系的含义。
3、在面向对象的分析设计中,建立的软件的3种模型分别是什么?
使用UML工具时分别用什么图形来描述这3种模型?
第13章软件项目管理
1、软件项目管理涉及的主要工作?
2、软件规模估算的两种典型方法是什么?
含义分别是什么?
软件的工作量又如何估算?
代码行技术含义:
这种方法依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。
代码行技术估算方法:
估计该程序模块的最小规模(设为a)、最大规模(设为b)和最可能的规模(设为m),则计算单元规模的估计值为
。
功能点技术含义:
依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。
3、根据什么、如何确定软件项目组的最佳规模,为什么存在项目组的最佳规模?
对于某一个组员来说,他与其他组员通信的路径数在1-(P-1)的范围内变化。
如果不与任何人通信时个人生产率为L,而且每条通信路径导致生产率减少1,则组员个人平均生产率为Lr=L-l(P-1)r
其中,r是对通信路径数的度量,0
对于一个规模为P的项目组,从上式导出项目组的总生产率为Ltot=P(L-l(P-1)r)
对于给定的一组L、l和r的值,总生产率Ltot是项目组规模P的函数。
随着P值的增加,Ltot将从0增大到某个最大值,然后再下降。
因此,存在一个最佳的项目组规模Popt,这个规模的项目组其总生产率最高。
4、什么是软件质量?
它主要包括哪三方面的内容?
软件质量的定义:
就是“软件明确地和隐含地定义的需求向一致的程度”。
更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品但都应该具有的隐含特征相一致的程度。
它包括三方面含义:
软件需求是度量软件质量的基础,与需求不一致就是质量不高;指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,肯定会导致软件质量不高;通常,有一组没有显式描述的隐含需求(例如,软件应该是容易维护的)。
如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。
5、什么是软件配置项、什么是软件配置(包含的内容)、什么是基线(在什么时候产生)?
软件配置项:
计算机程序(源代码和可执行程序);描述计算机程序的文档(供技术人员或用户使用);数据(程序内包含的或在程序外的)。
软件配置的定义:
是指一个软件产品在软件生存周期各个阶段所产生的各种形式(机器可读或人工可读)和各种版本的文档、程序及其数据的集合。
基线的定义:
通过了正式复审的软件配置项称为基线,只有通过正式的变化控制过程才能改变它。
是一个软件配置管理概念,它有助于人们在不严重妨碍合理变化的前提下来控制变化。
6、CMM的基本思想是什么?
它的两个主要应用分别是什么?
CMM(能力成熟度模型)的基本思想是:
由于问题是由人们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量。
CMM有助于软件开发机构建立一个有规律的、成熟的软件过程。
改进后的软件过程将开发出质量更好的软件,使更多的软件项目免受时间耽误和费用超支之苦。
它的两个主要应用分别是软件过程评估和软件能力评估。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 软件工程 导论 复习