软件工程考研文件

发布时间:2020-04-12 00:35:58

软件工程复习提纲

第1章软件工程差不多概念

1、软件危机的概念:指在计算机软件的开发和维护过程中所遇到的一系列严峻问题。

2、软件危机包含两方面的问题:1)如何开发软件以满足对软件日益增长的需求;

2)如何维护数量不断膨胀的已有软件。

3、软件危机的缘故:1)与软件本身的特点有关;2)和软件开发与维护的方法不正确有关。

4、软件危机的消除途径:解决软件危机,既要有技术措施(方法和工具),

又要有必要的组织治理措施。

5、软件工程的概念:软件工程确实是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而

建立和使用完善的工程原理。

6、软件工程的差不多原理:1)用分时期的生命周期打算严格治理

2)坚持进行时期评审

3)实行严格的产品操纵

4)采纳现代程度设计技术

5)结果应能清晰地审查

6)开发小组的人员应该少而精

7)承认不断改进软件实践的必要性

7、软件工程方法学(3个要素):通常把在软件生命周期全过程中使用的一整套技术方法的集合称为

方法学,也称为范型。三要素:方法、工具和过程。

8、软件生命周期: 从软件定义、软件开发和运行维护,直到最终被废弃,要经历一个漫长的时期,

通常把软件经历的那个漫长的时期称为生命周期。

1)软件定义:问题定义、可行性研究和需求分析;

2)软件开发:总体设计、详细设计、编码和单元测试、综合测试;

(前两个称系统设计,后两个称系统实现)

3)运行维护:软件维护;

9、软件过程及其特点:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任

务的工作步骤。

1)瀑布模型:a.时期间具有顺序性和依靠性;①前一时期的工作完成后,才

能开始后一时期的工作; ②前一时期的输出文档是后一时期的

输入文档,前一时期的输出文档正确,后一时期的工作才能获

得正确的结果。

b.推迟实现的观点;关于规模较大的软件项目来讲,往往编码

开始得越早最终完成开发工作所需要的时刻反而越长。

c.质量保证的观点;①每个时期都必须完成规定的文档。

②每个时期结束前都要对所完成的文档进行评审,以便尽早发

现问题,改正错误。

优点:文档驱动。

缺点:①需求模糊的系统可能不满足用户需求。

②线性模型太理想化太单纯,不再适合现代的软件开发模式,几乎被

淘汰。然而“线性”是人们最容易掌握并能熟练应用的思想方法。

2)快速原型模型:a.快速开发工具b.循环c.低成本。

优点:关注满足客户需求。

缺点:快速原型内部结构并不重要,重要的是迅速构建原型,并迅速修改,

以反应客户需求。可能导致系统设计差,效率低,难于维护。一旦需

求确定,往往快速原型将被抛弃。

3)增量模型(渐增模型):

优点:开发早期反馈及时(分批逐步的向用户提交产品,用户可完成部分工

作),易于维护。

缺点:需要特不行的体系结构,假如体系结构不够强壮可能导致设计差,效

率低。

4)螺旋模型:瀑布模型+快速原型+风险分析;迭代过程

优点:由风险驱动,支持现有软件的重用。

缺点:软件开发人员应该擅长查找可能的风险,准确地分析风险,否则将会

带来更大的风险。

适用范围:只适用于大规模软件项目,特不是内部项目。

5)喷泉模型:a.要紧用于支持面向对象开发过程,支持软件复用和生存期中多

项开发活动的集成。

b.体现了软件创建所固有的迭代和无间隙的特征,在各项开发活

动,即分析、设计和编码之间不存在明显的边界。

优点:减少了不一致性,降低了出错的可能性。

第二章可行性研究

1、可行性研究的任务:可行性研究的目的不是解决问题,而是用最小的代价在尽可能短的时刻内确

定问题是否能够解决,是否值得去解决。

从四方面研究每种解法的可行性:

(1)技术可行性:(2) 经济可行性:(3) 操作可行性:(4)法律、社会效益可行性。

2、可行性研究的过程:(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻

辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推进行动方针(7)

草拟开发打算(8)书写文档提交审查。

3、系统的流程图:(1)定义:是概括地描绘物理系统的传统工具。

(2)差不多思想:用图形符号以黑盒子形式描绘组成系统的每个部件。

###【【【系统流程图表达的是数据在系统各部件之间流淌的情况,而不是对数据进行加工处理

的操纵过程,是物理数据流图而不是程序流程图。】】】###

(3)系统流程图常用符号:

4、系统的数据流图:(1)定义:是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中

所经受的变换。

###【【【数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,

因此是分析员与用户之间极好的通信工具。】】】###

(2)数据流图的常用符号:

word/media/image2.gif

或 数据源点/终点


或 数据加工处理


或 数据存储(文件)

(静态数据)

数据流(动态数据)

*********例子:处理事务的功能进一步分解后的数据流图*********

(3)作数据流图的目的和用途:a.画数据流图的差不多目的是利用它作为交流信息的

工具。

b.数据流图的另一个要紧用途是作为分析和设计

的工具。

5、数据字典的内容:是关于数据的信息的集合,也确实是对数据流图中包含的所有元素的定义的集合。

数据字典由下列4类元素的定义组成:

(1)数据流(2)数据流重量(即数据元素)(3)数据存储(4)处理。

###【【【 数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,

没有数据流图数据字典也难于发挥作用。】】】###

6、定义数据的方法:一般由3+1种关系算符:

= 被定义为

+ 与(顺序结构) x=a+b,表示x由a和b组成;

[ ,] 或(选择结构) x=[a,b],x=[a|b],表示x由a或由b组成[|] ;

{ } 重复(循环结构) x={a},表示x由0个或多个a组成;

###限制重复次数: m{...}n###

( ) 可选 x=(a),表示a可在x中出现,也可不出现;

7、数据字典的用途:数据字典最重要的用途确实是作为分析时期的工具。

8、数据字典的实现过程:数据字典几乎总是作为CASE“结构化分析与设计工具”的一部分实现的。

###大型软件系统:人工维护数据字典几乎不可能;小型软件系统:建议采纳卡

片形式书写数据字典(包含的信息:名字、不名、描述、定义、位置)###

9、成本/效益分析:1)成本可能:a.代码行技术:软件的成本=每行代码的平均成本*行数;

b.任务分解技术:最常用的方法是按开发时期划分任务(各部分求和);

c.自动可能成本技术:采纳自动可能成本的软件工具能够减轻人的劳

动,同时使得可能的结果更客观。

2)成本/效益分析的方法:a.货币的时刻价值: F=P(1+i)^n

b.投资回收期:使累计的经济效益等于最初的投资所需要

的时刻。(投资回收期越短,获得利润越快)

c .纯收入:在整个生存期之内系统的累计经济效益(折合

成现在值)与投资之差。

d.投资回收率:衡量投资效益的大小。

P=F1/(1+j)+F2/(1+j)2+……+Fn/(1+j)n

第三章需求分析

1、需求分析的任务:1)确定对系统的综合要求2)分析系统的数据要求(通常采纳建立数据模型的方法);

即:准确地回答:“系统必须做什么?”

2、获得需求的要紧方法:1)访谈:访谈是使用最早的、迄今仍然最广泛的一种需求分析技术;

2)面向数据流自顶向下求精:结构化分析方法确实是面向数据流自顶向下逐步

求精进行需求分析的方法;

3)简易的应用规格讲明技术:又称面向团队的需求收集法;

优点:开发者和用户不分彼此,齐心协力,紧密合作;即时讨论并求精;

4)快速建立软件原型:a.方法和工具: (1)第四代技术(4GT);(2)可重用的软

件构件;(3)形式化规格讲明和原型环境。

b.特点:(1)快速;(2)容易修改。

c.优点:关注满足客户需求。

d.缺点:可能导致系统设计差,效率低,难于维护。

3、word/media/image4.gif分析建模:依照结构化分析准则,需求分析过程应该建立3种模型 数据模型(实体-联系图E-R)

功能模型(数据流图DFD)

行为模型(状态转换图STD)

4、实体—联系图:1)描绘数据对象及数据对象之间的关系,用于建立数据模型。

word/media/image5.gif 数据对象:能够由一组属性来定义的实体。

2)数据模型包括 数据对象的属性 :定义了数据对象的性质。 一对一

数据对象的联系:数据对象彼此之间相互连接的方式。 一对多

多对多

3)例子:

word/media/image6.gif

5、状态转换图:1)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

2)状态转换图的3部分:

a.状态:(1)状态:任何能够被观看到的系统行为模式,一个状态代表系统的一种

行为模式。

(2)状态图中定义的状态要紧有:初态(初始状态)、终态(最终状态)和

中间状态。在一张状态图中只能有一个初态,而终态则能够有0至多个。

b.事件:引起系统做动作或(和)转换状态的操纵信息。

c.符号:(1)初态:用实心圆表示;(2)终态:用一对同心圆表示;(3)中间状态:

用圆角矩形表示。

word/media/image7.gif (必选)

word/media/image9.gif (可选)

word/media/image10.gif (可选)

word/media/image11.gif 层次方框图(重要)

6、其他图形工具: IPO图(重要)

Warnier图(不重要)

1)层次方框图:用树形结构的一系列多层次的矩形框描绘数据的层次结构。

2)IPO图:是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和

输出数据之间的关系。算法的初级描述。

word/media/image12.gif

改进

IPO图 改进的IPO图

word/media/image11.gif 验证需求的一致性

7、验证软件需求的方法 :验证需求的现实性

验证需求的完整性和有效性

8、验证软件需求分析的工具:PSL/PSA(问题陈述语言/问题陈述分析程序)系统。

优点:改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可

以减少治理和维护的费用;数据存放在数据库中,便于增加、删除和更改。

第四章总体设计

1、总体设计/概要设计/初步设计的目的:“概括地讲,系统应该如何实现?”How to do?

word/media/image13.gif2、总体设计过程:1)通常由两个要紧时期组成: a.系统设计时期,确定系统的具体实现方案;

b.结构设计时期,确定软件结构;

2)典型的总体设计过程包括9个步骤: 1. 设想供选择的方案

2. 选取合理的方案

3. 推举最佳方案

4. 功能分解:先进行结构设计(总体设计阶

段),然后过程设计(详细设计时期);

5. 设计软件结构:能够用层次图或结构图

来描绘;

6. 设计数据库

7. 制定测试打算

8. 书写文档

9. 审查和复审

3、总体设计原理:1)模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,

这些模块集成起来构成一个整体,能够完成指定的功能满足用户的需求。

(1)优点:使软件结构清晰;使软件容易测试和调试;能够提高软件的可修改性。

【【【模块是构成程序的差不多构件。】】】

2)抽象:抽出事物的本质特性而临时不考虑细节(忽略差异,集中相似在一起)。

3)逐步求精:是人类解决复杂问题时采纳的差不多方法,是一种自顶向下的设计策略。

4)信息隐藏和局部化:局部化有助于实现信息隐藏。

5)模块独立:是模块化、抽象、信息隐藏和局部化概念的直接结果。

(1)度量模块独立程度的两个定性标准:内聚和耦合。

(2)什么缘故模块的独立性专门重要?

a.有效的模块化(即具有独立的模块)的软件比较容易开发出来。

b.独立的模块比较容易测试和维护。

(3)耦合:对一个软件结构内不同模块之间互连程度的度量。

a.设计目标:软件设计中追求尽可能松散耦合的系统。

b.模块间耦合的类型:

c. ①数据耦合:两个模块彼此间通过参数交换信息,而且交换的信息

仅仅是数据;属松散耦合。

【【【系统中至少存在这种耦合】】】

②操纵耦合:一个模块通过传送开关、标志、名字等操纵信息,明显地

操纵选择另一个模块的功能。

【【【操纵耦合增加了系统的复杂程度,通常是把它分解然后用数据耦

合代替它】】】

③特征耦合:把整个数据结构作为参数传递而被调用的模块只需要使用

其中一部分数据元素。

④公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。

⑤内容耦合:它是最高程度的耦合。

d.模块化设计的原则:

尽量使用数据耦合,少用操纵耦合和特征耦合,

限制公共环境耦合的范围,完全不用内容耦合。

(4)内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部

化概念的自然扩展。

a.设计目标:高内聚。

b.模块的内聚类型:

.

c.①偶然内聚:一个模块完成一组任务,这些任务彼此间即使有关系,关

系也专门松散。

【【【缺点:可理解性差, 可修改性差】】】

②逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类。

【【【缺点:增强了耦合程度(操纵耦合)不易修改,效率低】】】

③时刻内聚④过程内聚⑤通信内聚⑥顺序内聚

⑦功能内聚: 模块内所有处理元素属于一个整体,完成一个单一的功能。

【【【功能内聚是最高程度的内聚】】】

d.设计目标:强内聚、弱耦合,获得较高的模块独立性。

4、启发规则:利用长期实践中积存的丰富经验来改进软件设计,提高软件质量。

1)几条启发式规则:

(1) 改进软件结构提高模块独立性;

(2) 模块规模应该适中;

(3) 深度、宽度、扇出和扇入都应适当;

a. 深度:表示软件结构中操纵的层数。

b. 宽度:是软件结构内同一个层次上的模块总数的最大值。

c. 扇出:一个模块直接操纵(调用)的模块数目。

d. 扇入:表明有多少个上级模块直接调用它。

【【【设计得专门好的软件结构通常:顶层扇出比较高中层扇出较低,底层扇入

到公共的有用模块中去(底层模块有高扇入)】】】

(4) 模块的作用域应该在操纵域之内;

(5) 力争降低模块接口的复杂程度;

word/media/image16.gif (6) 设计单入口单出口的模块;

(7) 模块功能应该能够预测;

5、描绘软件结构的图形工具:

1)层次图(H图):(1)用来描绘软件的层次结构;

(2)一个矩形框代表一个模块,方框间的连线表示调用关系;

(3)适于在自顶向下设计软件的过程中使用。

H图 在H图基础上的修改 HIPO图

2) HIPO图:(1)是美国IBM公司发明的“层次图+输入/处理/输出图”的英文缩写。

3)结构图(SC):(1)Yourdon提出的描绘软件结构的图形工具,和层次图类似;

(2)箭头(或直线)表示模块的调用关系。

(3)带注释的箭头表示模块调用过程中来回传递的信息:

a. 尾部是空心圆表示传递的是数据;

b. 实心圆表示传递的是操纵信息。

(4) 附加符号:

a. 选择调用 b.循环调用

判定为真时调用A,为假时调用B 模块M循环调用模块A、B、C

6、面向数据流的设计方法:

目标:给出设计软件结构的一个系统化的途径。

结构化设计方法(简称SD方法):即基于数据流的设计方法。

word/media/image18.gif 1)概念:把信息流(数据流)映射成软件结构。

(1) 变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入

系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外

部形式离开软件系统。

(2) 事务流:数据沿输入通路到达一个处理T,那个处理依照输入数据的类型在

word/media/image18.gif 若干个动作序列中选出一个来执行。

变换流 事务流

2) 变换分析:通过一系列设计步骤把具有变换流特点的数据流图按预先确定的

模式映射成软件结构。

word/media/image19.gif 换流

word/media/image19.gifword/media/image21.gif 输入流

输出流

3)事务分析:数据流具有明显的事务特点(事务中心)时,采纳事务分析方法。

4)设计优化:先使它能工作,然后再使它快起来。

5)软件开发方法要紧有:

word/media/image21.gifword/media/image23.gif 面向数据流的结构化方法 传统开发方法

面向数据结构的Jackson方法(见第6章)

面向对象方法(见第9-12章)

第5章详细设计

1、详细设计时期的全然目标:确定应该如何样具体地实现所要求的系统。

2、结构程序设计:

1)假如一个程序的代码块仅仅通过顺序、选择和循环这3种差不多操纵结构进行连接,同时每

个代码块只有一个入口一个出口,则称那个程序是结构化的。

2)三种差不多的操纵结构:

3、人机界面设计:

1)在设计人机界面的过程中,有下述4个问题:

word/media/image25.gif 系统响应时刻:从用户完成某个操纵动作到软件给出预期的响应之间的这段时刻。

用户关心设施:常见的关心设施可分为集成的和附加的两类。

出错信息处理:(无)

命令交互:菜单+键盘输入。

4、过程设计工具:

1)程序流程图:

优点:直观、容易掌握,且历史“久”, 使用广泛。

缺点:本质上不具备逐步求精的特点;用箭头代表操纵流,转移操纵太方便;

不易表示数据结构。

2)盒图(N-S图):

概念:是一种符合结构化程序设计原则的图形描述工具,用方框图代替传统的流程图。

特点:(1) 功能域明确,能够从盒图上一眼就看出来。

(2) 不可能任意转移操纵。

(3) 专门容易确定局部和全程数据的作用域。

(4) 专门容易表现嵌套关系,也能够表示模块的层次结构。

3)PAD图(问题分析图):

概念:用二维树形结构的图来表示程序的操纵流,将这种图翻译成程序代码比较容易。

优点:(1) 使用表示结构化操纵结构的PAD符号所设计出来的程序必定是结构化程序。

(2) PAD图所描绘的程序结构十分清晰。

(3) 用PAD图表现程序逻辑,易读、易明白、易记。

(4) 容易将PAD图转换成高级语言源程序。

(5) 即可用于表示程序逻辑,也可用于描绘数据结构。

(6) PAD图的符号支持自顶向下、逐步求精方法的使用。

4)判定表:

概念:当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与

应做的动作之间的对应关系。

5)判定树:它是判定表的变种。

判定树和判定表的优缺点:

注:判定表与判定树并不适用于作 为一种通用的设计工具,通常用于辅助测试。

5、面向数据结构的设计方法:

1) 定义:依照数据结构设计程序处理过程的方法。

目标:得出对程序处理过程的描述。

步骤:使用面向数据流的方法设计软件结构——使用面向数据结构的方法来设计每个模块

的处理过程。

代表:Jackson方法和Warnier方法是最闻名的两个面向数据结构的设计方法。

2) Jackson图:

(1)优点:a. 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。

b. 形象直观可读性好。

c. 既能表示数据结构也能表示程序结构。

(2)三种类型:

(3)Jackson方法的步骤:

①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

②找出输入数据结构和输出数据结构中有对应关系的数据单元。

③从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

④列出所有操作和条件,同时把它们分配到程序结构图的适当位置。

⑤用伪码表示程序。

3)程序复杂程度的定量度量:

(1)概念:程序的复杂性要紧指模块内程序的复杂性。

(2)McCabe方法:依照程序操纵流的复杂程度定量度量程序的复杂程度。其结果称为程序

的环形复杂度。

①方法:先画出流图,然后用该图的环路数作为程序复杂性的度量值。

word/media/image35.gif ②流图组成: 圆:结点(一个圆代表一条或多条语句)。

箭头线:边。

③计算环形复杂度的方法:

a. 环形复杂度=流图中的区域数。

b. 环形复杂度V(G)=E-N+2,其中E是边数,N是结点数。

c. 环形复杂度V(G)=P+1,其中P是判定结点数。

④例子:

【【【实践表明,模块规模以V(G)≤10为宜,V(G)=10是模块规模的一个更科学

更精确的上限。】】】

3)Halstead方法:依照程序中可执行代码行的运算符和操作数(运算对象)的个数来计

算程序的复杂性。

①n1:程序中不同运算符的个数

n2:程序中不同操作数(运算对象)的个数

N1:程序中实际出现的运算符总个数

N2:程序中实际出现的操作数(运算对象)总个数

N(程序长度)=N1+N2

H(程序预测长度)=n1log2n1+n2log2n2

E:预测程序中包含错误的个数

E=Nlog2(n1+n2)/3000

第6章实现

1、编码风格:

1)源程序代码的逻辑简明清晰、易读易明白是好程序的一个重要标准。

2)①程序内部的文档:包括恰当的标识符、适当的注解和程序的视觉组织等(例:次数-times)。

②数据讲明:数据讲明的次序应该标准化,能够加速测试、调试和维护的过程。

③语句构造:每个语句都应该简单而直接。

④输入输出:对所有输入数据都进行检验;保持输入格式简单。

⑤效率:要紧指处理机时刻和存储器容量两个方面。

【【【不要牺牲程序的清晰性和可读性来不必要地提高效率。】】】

2、测试的定义和目标:

1)概念:①测试是为了发觉程序中的错误而执行程序的过程;

②好的测试方案是极可能发觉迄今为止尚未发觉的错误的测试方案;

③成功的测试是发觉了至今为止尚未发觉的错误的测试。

2)软件测试:为了发觉错误而执行程序的过程。(是为了证明程序有错,而不是证明程序无错)

3、单元测试:

1)集中检测软件设计的最小单元——模块(要紧使用白盒测试技术)。

2)测试重点:

4、集成测试过程及方法:

1)是测试和组装软件的系统化技术,要紧目标是发觉与接口有关的问题。

2)由模块组装成程序有两种方法:非渐增式测试方法;渐增式测试方法(被普遍采纳的)。

3)渐增式测试方法:

自顶向下集成策略(被普遍采纳):能够使用深度优先宽度优先策略。

自底向上集成策略:

不同集成测试策略的比较:

5、白盒、黑盒测试技术:

1)白盒测试(结构测试)

①两种:逻辑覆盖、操纵结构测试。

a. 逻辑覆盖:是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通

word/media/image42.gifword/media/image42.gifword/media/image42.gifword/media/image42.gifword/media/image42.gifword/media/image42.gif 路测试。(语句 判定 条件 判定 条件组合 点 边 路径)覆盖

b. 操纵结构测试:

⑴差不多路径测试:

⑵条件测试:着重测试程序中的每个条件。(BRO测试:)

优点:㈠容易度量条件的测试覆盖率;

㈡程序内条件的测试覆盖率可指导附加测试的设计。

BRO测试 是由K.C.Tai提出的一种条件测试策略。

(3)循环测试:循环测试是一种白盒测试技术,专注于测试循环结构的有效性。

包括:㈠、简单循环; ㈡、嵌套循环; ㈢、串接循环。

2)黑盒测试(功能测试):

① 3种方法 等价划分

边界值分析

错误推测

【【【黑盒测试着重测试软件功能,是与白盒测试互补的测试方法。】】】

等价划分:

例1、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008

年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则

显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,

后两位代表月。用等价类划分法设计测试用例,测试程序的日期检查功能?

第一步:等价类划分

“报表日期”输入条件的等价类表

第二步:为有效等价类设计测试用例

对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:

第三步:为每一个无效等价类至少设计一个测试用例

边界值分析:黑盒测试方法,对等价类划分方法的补充。

3)黑盒测试与白盒测试优缺点比较:

6、BRO测试:

1)测试的一些规定:关于布尔变量B来讲,B的输出约束指出,B必须是真(t)或假(f)。

关于关系表达式来讲,用符号>,=和<指定表达式的输出约束。

2)例1 C1: B1 & B2

B1和 B2是布尔变量。C1的条件约束形式为(D1,D2),其中D1和D2中的每一个差不多上

t或f.因此约束集{(t,t),(t,f),(f,t)}被C1的执行所覆盖。

例2 C2: B1 & (E3=E4)

B1是布尔变量,E3和E4是算术表达式。C2的条件约束形式为(D1,D2),其中D1是t

或f.。D2是>,=,<。关于(E3=E4)来讲,t 意味着=,而f意味着<或>。因此分不(t,=), (f,=)

替换(t,t),(f,t),并用(t,<),(t,>)替换(t,f)。故C2的约束集为:{(t,=),(f,=),(t,<),(t,>)} 。

例3 C3: (E1>E2) & (E3=E4)

E1,E2,E3和E4差不多上算术表达式。C3的条件约束形式为(D1,D2),其中D1和D2的每一

个都>,=,<。除了C3的第一个简单条件是关系表达式之外,C3和C2相同,因此可通过修

改C2的约束集得到C3的约束集,结果为:{(>,=),(=,=),(<,=),(>,<),(>,>)} 。

7、确认测试:

1)目标:验证软件的有效性。

2)软件有效性:假如软件的功能和性能如同用户所合理期待的那样,软件确实是有效的。

3)通常使用的方法:黑盒测试法。

4)两种测试方法:

Alpha测试:由用户在开发者场所进行;

Beta测试:由软件的最终用户们在一个或多个客户场所进行。

5)测试与调试的区不:

8、软件可靠性:

1)系统的稳态可用性为: Ass=MTTF/(MTTF+MTTR)

【系统平均无故障时刻MTTF和平均维修时刻MTTR】

2)估算平均无故障时刻: MTTF=IT /[K( ET- Ec(τ))] (其中K为常数,其典型值是200)

【ET——测试之前程序中错误总数;IT——程序长度(机器指令总

数);τ——测试(包括调试)时刻;Ed( τ)——在 0 至τ期间发

现的错误数 ;Ec( τ)——在 0 至τ期 间改正的错误数。】

3) 对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,

现在MTTF=10h;通过两个月测试后,总共改正了25个错误(第二个月改正了10个错

误),MTTF=15h。

要求:(1) 依照上述数据确定MTTF与测试时刻之间的函数关系,画出MTTF与测试

word/media/image49.gif 时刻τ的关系曲线。在画这条曲线时做了什么假设?

(2) 为做到MTTF=100h,必须进行多长时刻的集成测试?当集成测试结束时总

共改正了多少个错误,还有多少个错误埋伏在程序中?

答:(1)由题意知

(2)MTTF=100h时:100=5+5τ 解得τ=19 即需要进行19个月的集成测试。

word/media/image50.gif 因为 因此可得

word/media/image51.gif

解得 :ET=45,K=33.33

word/media/image52.gif 又因为 已知集成测试结束时MTTF=100h,即:

因此 =42

即,集成测试结束时总共改正了42个错误,还有45-42=3个错误。

第七章维护

1、维护的定义:软件差不多交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

1)四类维护活动: (1)改正性维护 (2)适应性维护 (3)完善性维护 (4)预防性维护。

(17%~21%) (18%~25%) (50%~66%)

2、维护的特点:结构化维护与非结构化维护差不巨大。

3、要紧的维护活动:1)维护组织: (注:应在维护活动开始之前就明确维护责任)

2)维护报告;3)维护的事件流;4)保存维护记录;5)评价维护活动;

4、软件的可维护性:

1)概念:维护人员理解、改正、改动或改进那个软件的难易程度。

2)决定软件可维护性的因素:①可理解性②可测试性③可修改性④可移植性⑤可重用性。

5、软件再工程过程:

1)概念:软件再工程是一类软件工程活动,是一个工程过程, 它将逆向工程重构正向工程

组合起来,将现存系统重新构造为新的形式。

2)优势:①减少软件演化风险②降低成本。

3) 图形:

再工程过程示意图 软件再工程过程模型

4)过程:①库存目录分析:每个软件组织都应该保存其拥有的所有应用系统的库存目录,包含

关于每个应用系统的差不多信息。

②文档重构:老程序固有的特点是缺乏文档,情况不同,处理那个问题的方法也不同。

③逆向工程:逆向工程是一个恢复设计结果的过程。

④代码重构:代码重构是最常见的再工程活动。

⑤数据重构:

⑥正向工程:正向工程也称为革新或改造,这项活动不仅从现有程序中恢复设计信息,

而且使用该信息去改变或重构现有系统,以提高其整体质量。

第8章面向对象方法学引论

1、面向对象方法学的要点、优点:

1)传统方法和面向对象方法的比较:

2)面向对象方法学的差不多原则:尽可能模拟人类适应的思维方式,使开发软件的方法与过程尽

可能接近人类认识世界解决问题的方法与过程。

3)面向对象的方法学方程:OO=objects+classes+inheritance+communication with messages

面向对象=对象+类+继承+传递消息

word/media/image61.gif 4)面向对象方法学优点: 与人类适应的思维方法一致。

稳定性好。

可重用性好。

较易开发大型软件产品。

可维护性好。

【【【注:并不是减少了开发时刻,而是通过提高可重用性、可维护性,进行扩充和修改的容

易程度等,从长远角度改进了软件的质量。】】】

2、面向对象的差不多概念:

1)对象 (属性与方法):封装了数据结构及能够施加在这些数据结构上的操作的封装体。(具有

相同状态的一组操作的集合)

word/media/image62.gif 特点: 以数据为中心。

对象是主动的。

实现了数据封装。

本质上具有并行性。

模块独立性好。

2)类与实例:确实是由某个特定的类所描述的一个具体的对象。

3)封装 (信息隐藏):在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。

4)继承(多重继承):子类自动共享基类中定义的数据和方法的机制。

5)消息:消息是对象发出的服务请求。

6)多态性(重载、动态绑定):指在父类中定义的属性或服务被子类继承后,能够具有不同的数

据类型或表现出不同的行为。

3、面向对象的建模:

1)模型:为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。

word/media/image63.gif 2)面向对象方法开发软件需要建立3种形式的模型: 对象模型:描述系统数据结构

动态模型:描述系统操纵结构

功能模型:描述系统功能

4、对象模型:

word/media/image64.gif 1)概念:表示静态的、结构化的系统的“数据”性质。 描述了系统的静态结构。

2)UML:国际对象治理组织OMG批准把UML 1.1作为基于面向对象技术的标准建模语言。

word/media/image65.gif 用UML提供的类图来建立对象模型。

用UML提供的状态图来描绘动态模型。

用UML提供的用例图来建立功能模型。

word/media/image66.gif 3)类图的差不多符号:

①定义类:图形符号为长方形,分成上、中、下3个区域。

②为类命名时应该遵守以下几条准则:

word/media/image67.gif (1) 使用标准术语。 (可省略)

(2) 使用具有确切含义的名词。

(3) 必要时用名词短语作名字。

③UML描述属性的语法格式如下: 可见性 属性名: 类型名=初值{性质串}

(public)、(private)和(protected),分不用(+)、(-)和(#)表示。

4)表示关系的符号:

①类与类之间通常有依靠、关联、泛化(一般化)和细化(实现)等4种关系。

②关联:(通常为双向的)

(一般关联) (关联的角色)

(限定关联:通常是一对多或多对多) (关联类)

③聚拢:关联的特例,表示类与类之间的关系是整体与部分的关系。

(共享聚拢) (组合聚合)

④泛化:确实是通常所讲的继承关系。

5、动态模型:(第三章已介绍状态图)

1)概念:表示瞬时的、行为化的系统的“操纵”性质,它规定了对象模型中的对象的合法变化

序列。

6、功能模型:

1)概念:表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了

用户对目标系统的需求。

word/media/image77.gif 2) 功能模型: 由数据流图组成(结构化方法)。

由用例图组成(面向对象方法)。

①用例图:用例图在UML方法中占有十分重要的地位,人们甚至称UML是一种用例图

word/media/image78.gif 驱动的开发方法。

word/media/image79.gif ②用例图包含的模型元素有:系统、行为者、用例

及用例之间的关系。

③实例:自动售货机系统用例图

7、三种模型之间的关系:面向对象建模技术所建立的3种模型,分不从3个不同侧面描述了所要开发

的系统。这3种模型相互补充、相互配合,使得我们对系统的认识更加全面:

功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何

种状态下同意了什么事件的触发)做;对象模型则定义了做情况的实体。

在面向对象方法学中,对象模型是最差不多最重要的,它为其他两种模型奠定

了基础,我们依靠对象模型完成3种模型的集成。

第9章面向对象分析设计

1、面向对象分析的概念和差不多过程:

1)概述:面向对象分析,确实是抽取和整理用户需求并建立问题域精确模型的过程。

2)面向对象建模得到的模型包含系统的3个要素: 静态结构(对象模型)

交互次序(动态模型)

数据变换(功能模型)。

3)3个子模型与5个层次:

2、确定类、对象、关联、属性等建立对象模型:

1)确定类与对象:①找出候选的类与对象②筛选出正确的类与对象。

2)确定关联:①初步确定关联②筛选③进一步完善。

3、UML的差不多概念:UML是一种标准化的图形建模语言,它是面向对象分析与设计的一种标准表示。

1)UML中有四种关系:

依靠 关联

一般化 实现

2)UML的九种图:

4、顺序图、用例图等图形的作法:

1)顺序图:顺序图是描述对象之间的动态交互的情况,着重表示对象间消息传递的时刻顺序。

纵向是时刻轴,时刻沿竖线向下延伸横向轴代表了在协作中各独立对象的类元角色

2)四元素:①对象②生命线③消息④激活

图一 图二 图三

消息:是对象之间某种形式的通信,能够激活某个操作。(图二)

激活:假如对象接收到消息立即执行某个活动,就称该对被激活了。

激活用细长的矩形框表示,写在该对象的下方。(图三)

3)综合实例:

5、面向对象的设计:

word/media/image92.gif 1)面向对象设计的准则: 模块化:对象确实是模块。

抽象:

信息隐藏:

弱耦合:耦合要紧指不同对象之间相互关联的紧密程度。

强内聚:内聚衡量一个模块内各个元素彼此结合的紧密程度。

可重用:提高软件开发生产率和目标系统质量的重要途径。

第10章面向对象的实现

1、面向对象语言的有优点、技术特点:

1)面向对象语言的有优点:语言的一致的表达能力可重用性可维护性

word/media/image93.gif 2)面向对象语言的技术特点: LISP(动态联编,交互式开发环境)

SIMULA(类的概念,继承机制)

Modula_2和Ada(数据抽象机制)

2、选择程序设计的风格:

1)提高可重用性:①提高方法的内聚②减小方法的规模③保持方法的一致性④把策略与实现

分开⑤全面覆盖⑥尽量不使用全局信息⑦利用继承机制。

2)提高可扩充性:①封装实现策略②不要用一个方法遍历多条关联链③幸免使用多分支语句

④精心确定公有方法

3)提高健壮性:①预防用户的操作错误②检查参数的合法性③不要预先确定限制条件

④先测试后优化

3、面向对象的单元测试、集成测试、确认测试等测试策略:

4、word/media/image94.gifword/media/image94.gifword/media/image94.gif 1)传统测试:单元测试 集成测试 确认测试 系统测试。

2)面向对象的单元测试:最小的可测试单元是封装起来的类和对象。

3)面向对象的集成测试:

word/media/image95.gif ⑴要紧有下述两种策略: 基于线程的测试:分不集成并测试每个线程,后同时应

用回归测试以保证没有产生副作用。

基于使用的测试:先独立类测试,结束后再测试使用独

立类的下一个层次的类(称为依靠类),

对依靠类的测试一层一层进行下去,

直至把整个软件系统构造完为止。

4) 面向对象的确认测试:传统的黑盒测试方法可用,关于面向对象的软件来讲,要紧依旧根

据动态模型和描述系统行为的脚本来设计确认测试用例。

5、测试类的方法、集成测试的方法:

word/media/image96.gif 1)测试类的方法: 随机测试:随机产生的测试用例。

划分测试:⑴能够减少测试类时所需要的测试用例的数量。

⑵①基于状态的划分②基于属性的划分③基于功能的划分。

⑶传统测试:等价划分法;

基于故障的测试:与传统的错误推测法类似,首先推测软件中可能有的

错误,然后设计出最可能发觉这些错误的测试用例。

2)集成测试的方法:⑴在那个测试时期,必须对类间协作进行测试。

⑵和测试单个类相似,测试类协作能够使用随机测试方法和划分测试方

法,以及基于情景的测试和行为测试。

word/media/image95.gif ⑶分为两种: 多类测试:多类随机测试和多类划分测试。

从动态模型导出测试用例:用UML提供的状态图来

描绘动态模型。

第11章软件项目治理

1、可能软件规模:

word/media/image97.gif 1)每个人都可能程序的最小规模(a)、最大规模(b)和最可能的规模(m),分不算出这3种规模的

平均值,和之后,再用下式计算程序规模的可能值: L=

2、开发工作量估算:

1) 静态单变量模型:

⑴这类模型的总体结构形式如下: E=A+B×(ev)C

word/media/image95.gif ⑵面向KLOC的估算模型: Walston_Felix模型 E=5.2×(KLOC)0.91

Bailey_Basili模型 E=5.5+0.73×(KLOC)1.16

Boehm简单模型 E=3.2×(KLOC)1.05

Doty模型(KLOC>9) E=5.288×(KLOC)1.047

⑶面向FP的估算模型: Albrecht & Gaffney模型 E=-13.39+0.0545FP

Maston,Barnett和Mellichamp模型 E=585.7+15.12FP

【【【其中,A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,

ev是估算变量(KLOC或FP)。】】】

2)动态多变量模型:

⑴动态多变量估算模型的形式:E=(LOC×B0.333/P)3×(1/t)4

【【【E是以人月或人年为单位的工作量;t是以月或年为单位的项目持续时刻;

关于较小的程序(KLOC=5~15)B=0.16;关于超过70 KLOC的程序B=0.39;

P是生产率参数,它反映了成熟度、治理水平等因素对工作量的阻碍】】】

当程序较小时常用的单位是代码行数(LOC),当程序较大时常用的单位是千行代码数(KLOC)。

3)COCOMO2模型:

⑴它反映了十多年来在成本可能方面所积存的经验。

⑵3个层次的估算模型分不是: 应用系统组成模型。

早期设计模型。

word/media/image98.gif 后体系结构模型。

⑶E= 【E是开发工作量,a是模型系数,b是模型指

数,fi(i=1~17)是成本因素。】

3、开发时刻、进度估算:

1)估算开发时刻: Walston_Felix模型 T=2.5E0.35

原始的COCOMO模型 T=2.5E0.38

COCOMO2模型 T=3.0E0.33+0.2×(b-1.01)

Putnam模型 T=2.4E1/3

【【【E是开发工作量(以人月为单位),T是开发时刻(以月为单位)。】】】

2)估算工程进度:

事件4的最早时刻为:EET=max{2+3,6+0}; 事件9的最迟时刻为: LET=21-1=20;

事件8的最迟时刻为:LET=min{21-6,20-0};事件10的最迟时刻为:LET=23-2=21;

4、关键路径、机动时刻:

1)关键路径:关键路径上的事件(关键事件)必须准时发生,组成关键路径的作业(关键作业)

的实际持续时刻不能超过可能的持续时刻,否则工程就不能准时结束。

2)机动时刻:①不在关键路径上的作业有一定程度的机动余地。

②机动时刻=(LET)结束-(EET)开始-持续时刻。

5、软件配置及治理过程:

1)软件配置治理是在软件的整个生命期内治理变化的一组活动。具体地讲,这组活动用来:

①标识变化; ②操纵变化; ③确保适当地实现了变化;

④向需要明白这类信息的人报告变化。

2)软件配置治理要紧有5项任务:

①标识软件配置中的对象

②版本操纵

③变化操纵

④配置审计

⑤状态报告

6、能力成熟度模型(CMM):

1)概念:是用于评价软件机构的软件过程能力成熟度的模型。

2)CMM通过定义能力成熟度的5个等级,引导软件开发机构不断识不出其软件过程的缺陷,

并指出应该做哪些改进,然而,它并不提供做这些改进的具体措施。

3)能力成熟度的5个等级从低到高依次是:

初始级(又称为1级): 特征是无序的,有时甚至是混乱的;

可重复级(又称为2级):软件项目的策划和跟踪是稳定的;

已定义级(又称为3级):不管是治理活动依旧工程活动差不多上稳定的;

已治理级(又称为4级):在定量范围内预测过程和产品质量趋势,推断软件产品质量;

优化级(又称为5级): 识不软件过程要素的薄弱环节,采纳的最佳新技术改进它们。

软件工程考研文件

相关推荐