软件工程复习笔记.docx
- 文档编号:26620867
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:53
- 大小:4.18MB
软件工程复习笔记.docx
《软件工程复习笔记.docx》由会员分享,可在线阅读,更多相关《软件工程复习笔记.docx(53页珍藏版)》请在冰豆网上搜索。
软件工程复习笔记
第一章
1,软件是程序加文档
•初级阶段:
程序甚至机器指令处于从属地位。
•中期阶段:
计算机系统的引入,在设计计算机系统时同时考
虑软硬件。
•当今阶段:
把工程学的基本原理和方法引进到软件的设计和
生产中。
程序是软件的表现形式,文档是软件的质。
软件的正确含义:
1.运行时,能提供所要求功能和性能的指令(Instruction)或计算机程序(Program)集合。
2.程序能满意地处理信息的数据逻辑(datastructure)。
3.程序能满意地按照预定的商业逻辑进行处理。
4.描述程序功能需求以及程序如何操作和使用所要求的文档(Documents).
2软件的分类
3软件危机
软件危机真正的含义:
在计算机软件开发和维护过程中所遇到的一系列严重问题。
概括地讲:
产生软件危机有二个方面:
一方面与软件本身的特点有关。
一方面与软件开发与维护的方法不正确有关。
①忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护等。
事实上,对用户要求没有完整准确的认识,匆忙着手编写程序是许多软件开发工程失败的主要原因。
②忽视软件文档的重要性,认为文档可有可无,到后期更新及修改无法有效地进行,重复大量人力物力。
1.软件危机的具体表现
1.对软件开发成本和进度的估计常常不准确(成本估计不足,拖延工期,影响信誉)。
2.用户对“已完成的”软件系统不满意的现象经常发生(用户需求了解不清,闭门造车,导致不符合要求)。
3.软件产品的质量往往靠不住(没有严格执行质保技术)。
4.软件常常不可维护:
不能适应新环境,程序错误不容易纠正。
5.没有适当的文档资料。
6.软件成本占总成本的比例逐步上升(1985年软件成本占总成本的90%);
7.软件开发速度跟不上计算机应用普及深入的趋势。
4解决软件危机的办法
5软件工程的基本原理
1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组人员应少而精
7.承认不断改进软件工程实践的必要性
6软件的生命周期
软件维护的种类:
·改正性维护
·适应性维护
·完善性维护
·预防性维护
7生存周期模型
8软件审查
技术审查和管理审查
第2章可行性研究
1,可行性研究的任务
可行性研究的目的就是用最小代价在尽可能短的时间内确定问题是否能够解决。
可行性研究应从以下三个方面来分析:
(1)技术可行性:
使用现有技术能实现这个系统吗?
(2)经济可行性:
该系统的经济效益能超过它的开发成本吗?
(3)操作可行性:
系统的操作方式在这个用户组织内行得通吗?
2,数据流图
数据流图描绘系统的逻辑模型,图中没有物理元素,只是描绘信息在系统中流动和处理情况。
该图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何具体实现。
符号:
画数据流图的基本目的是利用它作为交流信息的工具,分析员把他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。
数据流图的另一个主要用途是作为分析和设计的工具。
3 数据字典(DD,dataDictionary)
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图不严格,反之,没有数据流图数据字典难发挥作用.
一般来讲,数据字典由对下列四类元素的定义组成:
(1)数据流
(2)数据流分量(即数据元素)
(3)数据存储
(4)处理
符号:
例子:
4成本/效益分析
成本估计:
1.代码行技术
一旦估计出源代码行数后,用每行代码的平均成本乘以行数便可确定软件的成本.每行代码的平均成本主要取决于软件的复杂程度和工资水平.
2.任务分解技术
把软件开发分解为若干个相对独立的任务,再分别估计每个单独的开发任务成本,最后累加起来得出软件开发工程的总成本.估计每个任务的总成本时,通常先估计完成该项任务需要用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本.
3.自动估计成本技术
不太常用,采用这种技术须有长期收集的大量历史数据为基础。
第3章需求分析与项目管理
1需求分析的任务
“做什么”,而不是“怎样做”。
分析员必须在较好地弄清数据流,控制流功能处理过程、行为操作和信息内容的情况下,建立系统模型。
1、功能需求
2、性能需求
3、可靠性和可用性需求
4、出错处理需求
5、接口需求
6、约束
7、逆向需求
8、将来可能提出的需求
分析系统的数据要求:
分析系统的数据要求通常采用建立数据模型的方法。
为了提高可理解性,常常利用图形工具辅助描绘数据结构,常用的工具有:
层次方框图、Warnier图等。
导出系统的逻辑模型
根据分析结果可以导出系统的详细逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和处理算法描述这个逻辑模型。
2结构化的分析方法
软件系统开发中的结构化分析方法就是面向数据流自顶向下逐步求精的需求分析方法。
数据流图是帮助对分析结果进行复查的极好的工具。
从输出端开始,分析员借助数据流图、数据字典、IPO图向用户解释数据是怎样转变成输出数据的,并填补遗漏或空白元素。
分析建模:
3规格说明
4需求验证
5结构化的分析方法
补充:
ER图:
菱形表示联系举行表示实体圆角矩形表示属性
状态图:
层次方框图:
第四章
1分类
按照形式化的程度,可以把软件工程使用的方法划分成非形式化、半形式化和形式化3类。
用自然语言描述需求规格说明,是典型的非形式化方法。
用数据流图或实体-联系图建立模型,是典型的半形式化方法。
所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。
形式化方法的分类:
1)面向模型的形式化方法。
面向模型的方法通过构造一个数学模型来说明系统的行为。
2)面向属性的形式化方法。
面向属性的方法通过描述目标软件系统的各种属性来间接定义系统行为
根据表达能力,形式化方法可以分为五类:
1)基于模型的方法:
通过明确定义状态和操作来建立一个系统模型(使系统从一个状态转换到另一个状态)。
用这种方法虽可以表示非功能性需求(诸如时间需求),但不能很好地表示并发性。
如:
Z语言,VDM,B方法等。
2)基于逻辑的方法:
用逻辑描述系统预期的性能,包括底层规约、时序和可能性行为。
采用与所选逻辑相关的公理系统证明系统具有预期的性能。
用具体的编程构造扩充逻辑从而得到一种形式化方法,通过保持正确性的细化步骤集来开发系统。
如:
ITL(区间时序逻辑),区段演算(DC),模态逻辑,时序逻辑,TAM(时序代理模型),RTTL(实时时序逻辑)等。
3)代数方法:
通过将未定义状态下不同的操作行为相联系,给出操作的显式定义。
与基于模型的方法相同的是,没有给出并发的显式表示。
如:
OBJ,Larch族代数规约语言等;
4)过程代数方法:
通过限制所有容许的可观察的过程间通信来表示系统行为。
此类方法允许并发过程的显式表示。
如:
通信顺序过程(CSP),通信系统演算(CCS),通信过程代数(ACP),时序排序规约语言(LOTOS),计时CSP(TCSP),通信系统计时可能性演算(TPCCS)等。
5)基于网络的方法:
由于图形化表示法易于理解,而且非专业人员能够使用,因此是一种通用的系统确定表示法。
该方法采用具有形式语义的图形语言,为系统开发和再工程带来特殊的好处。
如Petri图,计时Petri图,状态图等。
2优缺点
非形式化:
用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。
形式化:
它能够简洁准确地描述物理现象、对象或动作的结果,因此是理想的建模工具。
它提供了高层确认的手段。
可以使用数学方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
第5章总体设计
1,任务
总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想各种可能方案的基础。
总体设计又称为概要设计或初步设计,通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。
包括:
软件系统结构的总体设计
基于功能层次结构建立系统。
采用某种设计方法,将系统按功能划分成模块的层次结构
确定每个模块的功能
建立与已确定的软件需求的对应关系
确定模块间的调用关系
确定模块间的接口
评估模块划分的质量
根据用信息域表示的软件需求,以及功能和性能需求,进行
数据设计
系统结构设计
过程设计
接口设计
数据设计将实体–关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。
体系结构设计定义软件系统各主要成份之间的关系。
接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。
过程设计则是把结构成份转换成软件的过程性描述。
从工程管理的角度来看,软件设计分两步完成。
概要设计,将软件需求转化为数据结构和软件的系统结构。
详细设计,即过程设计。
通过对结构表示进行细化,得到软件的详细的数据结构和算法。
2概要设计需要完成文档
3评审设计
4总体设计的过程
5模块独立
耦合:
6深度、宽度、扇入和扇出都应适当。
设计单入口单出口的模块
7描绘软件结构的图形工具
层次图和HIPO图:
层次图用来描绘软件的层次结构。
层次图中的一个矩形框代表一个模块,方框之间的连线表示调用关系而不像层次方框图那样表示组成关系。
HIPO图是IBM公司发明的“层次图加输入/处理/输出图”的英文缩写,为了能使HIPO图具有可追踪性,H图中除了顶层方框之外,每个方框都加了编号。
结构图:
结构图是进行软件结构设计的另一个有力工具。
按惯例总是图中位于上方的方框代表的模块调用下方的模块,用带注释的箭头表示模块调用过程中来回传递的信息。
如果希望进一步表明传递信息是数据还是控制信息,用尾部形状区分:
尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。
8面向数据流的设计方法
怎样设计从DFD到程序结构的转换?
一般采用以变换流为主,事物流为辅的方法
1 先划出输入、变换和输出
2 设计软件结构的上层
3 再根据DFD个部分的特征,进行变换设计和事物设计
怎样区分是根据如下准则:
1若是单口进、单口出则为变换流设计
2若是含有T处理的特殊事物流
第六章详细设计
1任务
详细设计的目标是对目标系统给出精确的描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。
详细设计不是具体编写代码,而是要设计出程序的“蓝图”程序员根据这个蓝图写出实际的程序代码。
详细设计的结果关系到程序代码的质量。
结构程序设计是一种设计程序的技术,它采用自上向下逐步求精的设计方法和单入口单出口的控制结构。
2程序流程图
盒图(N-S图)
功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。
不可能任意转移控制。
很容易确定局部和全程数据的作用域。
很容易表现嵌套关系,也可以表示模块的层次结构。
PAD图(problemanalysisdiagram)
1.使用表示结构优化控制结构的PAD符号所设计出来的程序必然是程序化程序
2.PAD图所描述的程序结构十分清晰。
图中最左边的竖线是程序的主线,即第一层控制结构。
随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。
PAD图中竖线的总条数就是程序的层次数;
3.用PAD图表现程序逻辑,易读、易懂、易记。
PAD图是二维数型结构的图形,程序从图中最左边上端的结点开始执行,自上而下,从左到右顺序执行;
4.很容易将PDA图转换成高级程序语言源程序,这种转换可由软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。
5.既可用于表示程序逻辑,也可用于描述数据结构
6.PAD图的符号支持自顶向下、逐步求精方法的使用。
开始时设计者可以定义一个抽象程序,随着设计工作的深入而使用“def”符号逐步增加细节,直至完成详细设计。
判定表:
算法中包含有多重嵌套的条件选择时,用程序流程图、盒图、PAD图及过程设计语言(PDL)都不易清楚的描述,此时用判定表则比较容易。
判定表能简洁而又无歧义的描述处理规则。
但是判定表并不是与作为一种通用的设计工具,没有一种简单的方法使它能同时清晰的表示顺序和重复等处理特性。
判定树:
判定树是判定表的变种,容易掌握与使用,是一种比较常用的系统分析和设计的工具。
缺点是简洁性不如判定表,数据元素的同一个值往往要重复写多便,而且越接近树的叶端重复次数越多。
3伪码
PDL也称为伪码,它使用正文形式表示数据和处理过程的设计工具。
伪码的语法规则分为“外部语法”和“内部语法”。
外部语法应当符合一般程序设计语言常用语句的语法规则。
内部语法可用英语中一些简单的句子,短语和通用的数学符号来描述程序应执行的功能。
4面向数据结构的设计方法
数据结构既影响程序结构又影响程序的处理过程,重复出现的数据通常由具有循环控制结构的程序处理,选择数据要用带有分支控制结构的程序处理。
层次的数据组织通常和使用这些数据的程序的层次结构十分相似。
面向数据结构的设计方法的最终目标:
是得出对程序处理过程的描述。
使用面向数据结构的设计方法,应先分析确定数据结构,用适当的工具清晰地描绘出数据结构。
Warnier图
5结构化的程序设计方法
结构化程序设计的方法:
(1)以三种基本结构的组合来描述程序;
(2)整个程序采用模块化结构;
(3)有限制地使用转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个结构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能;
(4)以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰;
(5)采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读;
(6)注意程序设计风格。
6程序复杂程度的定量度量
定量度量方法,可把程序的复杂程度乘以适当常数即可估算出,软件中故障的数量以及软件开发需要用的工作量,它可以比较出两个不同设计或两种不同算法的优劣。
有两种常用的方法:
McCabe方法
1. 环形复杂度的计算方法
在一个强连同图的有向图中线性无关环的个数由下面的公式给出
V(G)=m-n+p
强连同图是指从图中任一个节点出发都可到达所有其他节点.用McCabe方法度量得出的结果称为程序的环形复杂度.它等于强连通图的程序图中线性无关的有向环的个数.
2. 环形复杂度的用途
实践表明V(G)≤10,V(G)=10是模块规模的上限.
第一步:
画出控制流图
流程图用来描述程序控制结构。
可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。
在流图中,每一个圆,称为流图的结点,代表一个或多个语句。
一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。
一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:
if-else-then结构)。
由边和结点限定的范围称为区域。
计算区域时应包括图外部的范围。
第二步:
计算圈复杂度
圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。
独立路径必须包含一条在定义之前不曾用到的边。
有以下三种方法计算圈复杂度:
流图中区域的数量对应于环型的复杂性;
给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
halstead方法:
halstead方法是一种程序复杂度度量方法。
halstead度量方法不仅仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐释程序语言的等级高低。
它以程序中出现的操作符和操作数为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。
任意程序P,总是由操作符和操作数通过有限次的组合连缀而成。
P的符号表词汇量n=n1+n2(n1:
惟一操作数数量,n2:
惟一操作符数量)。
设N1是P中出现的所有操作数,N2是程序中出现的所有操作符。
度量指标如下:
程序长度N=N1+N2
halstead预测长度H=n1log2n1+n2log2n2
第七章实现
1冗余
把一个程序制成两个冗余拷贝的开发费用表面上似乎应为单个文本的两倍,但实际费用可能还不到1.5倍。
因为软件的描述、设计和大部分测试以及文档编制的费用由两个文本分担了。
冗余编程的副作用是由于文本增加而带来的存储空间的增加,以及运行时间的延长。
为此可以采用海量存储器和覆盖技术,并仅仅在关键部分采用冗余计算,这样可使附加费用减到最小。
2测试
测试的目的:
是尽可能多的发现并排除软件中的错误。
国际上惯用α测试和β测试.
◆测试的目标和定义:
在G.J.Myers的经典著作《软件测试之艺术》中给出了测试的定义:
“程序测试是为了发现错误而执行程序的过程”。
这个定义,被业界所认可,经常被引用。
除此之外,G.J.Myers还给出了与测试相关的三个重要观点,那就是:
测试是为了证明程序有错,而不是证明程序无错误;
一个好的测试用例是在于它能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试。
单元测试:
单元测试是针对模块,它不是一个独立的程序。
因此,模块自己不能运行,要靠其它部分来调动和驱动,这样就要为每个单元测试开发两个软件:
驱动程序和连接程序。
边界测试
软件通常容易在边界上出错,比如一个n位数组,当处理数组的第n个元素时,或M次循环在遇到第M次重复时,都常常发生错误。
就是说使用数据流、控制流,当刚好等于、小于、或大于最大值或最小值的数据时,非常可能发生错误。
集成测试
▲自顶而下集成:
称为渐增测试:
一个要测模块与已测试好的结合测试;
▲自底向上集成:
非渐增测试:
分别测试每个模块,再把所有模块按设计要求结合。
自顶而下结合
自顶而下结合是从主模块(主程序)开始,沿控制层次向下移动,逐步结合每个模块。
确认测试(验收测试):
白盒测试
所谓白盒测试是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。
大致有以下一些不同的覆盖标准。
具体做法是确定一组最可能发现某类错误的测试数据,作到尽可能完备的测试。
7.7.2边界值分析
边界值测试也是一种黑盒测试技术,它与等价划分测试区别:
1. 边界值分析不是从等价类中随便选一数据做代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标.
2. 边界值分析不仅要考虑输入条件,还要考虑输出情况(即输出等价类)
7.7.3错误推测
错误推测则很大程度上靠直觉和经验进行,是列举出程序中可能有的错误和容易发生错误的特殊情况。
1.输入/输出数据为零时,容易出错;
2.输入/输出数目允许变化(如被检测或生成表的项数)则输入/输出数目为0或1时(表为空表或只有一项内容)容易出错;
3.等价划分法和边界分析法都只考虑各个输入数据的测试效率,而没有考虑多个输入数据的组合效率,可能会遗漏了输入数据易出错的组合情况。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习 笔记