软件工程复习笔记_第1页
软件工程复习笔记_第2页
软件工程复习笔记_第3页
软件工程复习笔记_第4页
软件工程复习笔记_第5页
已阅读5页,还剩12页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章软件工程学概述

1.1软件危机

软件危机一一在软件的开发和维护过程中遇到的一系列问题。

1.2软件工程

软件工程定义:指导计算机软件开发和维护的一门工程学科。采用工程的概念原理技术

来开发和维护软件,把经时间考验正确的技术和当前最好的技术相结合,从而开发出高

质量的可维护的软件。

软件工程方法学:软件的生命周期中使用的一整套技术方法的集合

软件工程(方法学)三个要素:方法、工具和过程。

目前最广泛的软件工程方法学:传统方法学、面向对象方法学

1.3软件生命周期

软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划

分成若干个阶段,每个阶段有各自的任务

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

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

维护

1.4软件过程

生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为

过程模型。

瀑布模型:运用最广泛;从上到下;阶段间有明显的周期性和依赖性;推迟实现的观点:

不希望有变化,尽量推迟物理代码的实现;质量保证的观点:每个阶段都有规定的文档,

每个阶段完成都需要进行评审,尽早发现错误。

快速原型模型:快速建立起可以运行的程序,其功能往往是最终产品功能的子集。快速

建立能反映用户主需求的系统,让用户试用,从而来了解系统的全貌。一般正式开发时

原型将被抛弃。

增量模型:把软件产品看作一系列增量来设计、编码、运行和维护。第一个增量构件往

往是最核心的功能,以滚雪球的方式逐步为系统增添功能。

螺旋模型:螺旋模型的基本思想就是用原型或其他方法尽量降低风险。在每个阶段之前

都增加风险判断的快速原型模型。

喷泉模型:喷泉模型是典型的面向对象生命周期模型。体现了面向对象开发的“迭代、

无缝对接”的特性。阶段之间没有明显的界限。

1.4.6Rational统一过程

Rational统一过程RUP是一种完整而且完美的软件过程。运用迭代和渐增的方式来

开发软件。RUP重复一系列的组成软件生命周期的循环,每次循环都给软件增加一

些新的功能,并给用户交付•个可运行的版本。更容易拥抱变化,容纳需求的变更。

RUP的每个生命底期分为4个阶段:初始;精化;构建;移交

1.4.7敏捷开发和极限编程

敏捷过程

极限编程是嫩捷过程的典型,具有对变化和不确定性更快速更敏捷的反应特性,而

且在快速的同时仍然能够保持可持续的开发速度。能较好的适应对小型项目提出的

有限资源和有限开发时间的约束。

1.4.8微软过程

微软软件的生命周期:规划阶段、设计阶段、开发阶段、稳定阶段、发布阶段

微软过程模型适用于商业环境下具有有限资源和有限开发时间约束的项目。是RUP

的一种精简的配置版本,整个过程包含若干个生命周期的循环;是敏捷软件过程的

一种扩展,扩充了各个阶段的具体工作流程

1.5小结

第2章可行性研究

2.1可行性研究的任务

可行性研究4个方面;

技术可行性

经济可行性

操作可行性

法律可行性

2.2可行性研究过程

2.3系统流程图:表达数据在系统各个部分间流动的情况,不是对数据进行加工处理的控制

过程(物理构成)

>概括描绘物理系统的传统工具

>用图形符号,以黑盒子形式描述组成系统的每个部件(一些符号与程序流程图相似)

>程序、文档、数据库、人工过程

2.4数据流图:描绘信息流和数据从输入移动到输出的过程中所经受的变换。(逻辑功能)

数据流图有四种基本符号:

数据的源点或终点;变换数据的处理;数据存储;数据流。

数据流

数据存储

命名:数据流的命名一般是具体的数据内容的载体;处理的命名一般是一个动宾短语

2.5数据字典:是关于数据信息的集合,即对设计图中包含的元素的定义

=意思是等价于(或定义为);

+意思是和(即,连接两个分量:);

[]意思是或(即,从方括弧内列出的若干个分量中选择一个),用"I”号分开供选择的

分量;

{}意思是重复(即,重复花括弧内的分量);

()意思是可选(即,圆括弧里的分量可有可无)。

使用上限和下限进一步注释表示重复的花括弧。

左边用上角标和下角标分别表明重复的上限和下限:

左侧标明重复的下限,在闭括弧的右侧标明上限。

例如:{A}和1{A}5含义相同。

2.6成本/效益分析

2.7小结

第3章需求分析

建立模型,结构化分析。通常需要建立数据模型(ER图)、功能模型(数据流图)、行为模型

(状态转换图)用来描述系统

3.1需求分析的任务

3.2与用户沟通获取需求的方法

访谈:分为正式和非正式俩种;分发调查表;情景分析

面向数据流自顶向下求精:数据决定了需要处理的方式和算法,是需求的出发点

简易应用规格说明的方法

快速原型模型

3.3分析建模与规格说明

3.4实体一联系图(ER图):数据模型包含三种相互关联的信息:数据对象、描述数据对象

属性及数据对象彼此间相互连接的关系。

ER图中包含实体(即数据对象)、关系和属性三种基本成分.

3.5数据规范化

3.6状态转换图(状态图):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的

行为。

状态一一是任何可以被观察到的系统行为模式。

事件一一是在某个特定时刻发生的事情,引起系统从一个状态转换到另一个状态的转换

3.7其它图形工具

3.7.3IPO图一一是输入、处理、输出图的简称,能方便描述输入数据、对数据处理和

输出数据之间的关系。

・人处及

3.8验证软件需求

3.9小结

第5章总体设计

5.1设计过程

5.2设计原理

模块化

模块一一是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它

模块是构成程序的基本构件。

模块化一一就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,

把所有模块构成一个整体,就能满足用户的需求。

抽象

把事物中相似的部分集中概括起来,暂时忽略它们之间的差异,这就是抽象

逐步求精

为集中精力解次主要问题而推迟了对问题细节的考虑

信息隐藏和局部化

信息隐藏一一一个模块内包含的信息对于不需要这些信息的模块来说是不可见的。

局部化一一把一些密切相关的软件元素物理地放得很近。

模块独立:模块的独立程度可以由两个定性标准来度量,这两个标准分别称为内聚和耦

合。

耦合衡量不同模块彼此间互相依赖(连接)紧密程度;

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

耦合

•非直接耦合

•数据耦合:交换简单的数据参数信息。

•标记(特征)耦合:传递参数表记录信息,如文件、数组、指针等。(传递整个

数据结构)。传参传递整个数据结构,但是使用的数据只是数据结构的一部分“

•控制耦合:控制变量,有可能是一个简单变量,但可能改变程序流程。模块与

模块间交换的是控制信息.

•外部耦合:一组模块都访问同一全局简单变量。

•公共耦合:i组模块访问同一个公共数据环境。公共区可以降低语句的数量和

内存的耗费,但增加耦合度。

•内容耦合:一组模块使用另一模块内部数据:模块通过非正常渠道进入另一模

块执行。一个模块由多个入口(一个模块由几种功能)

原则:尽量使用数据耦合,少用控制耦合,缩小公共耦合的范围,避免内容耦合

内聚

•(高)功能内聚:模块内所有元素属于一个整体,完成单一功能。

•(高)信息内聚(顺序内聚):模块完成多个功能,每个功能都在同一数据结构

上操作(按一定的顺序),各功能有唯一的出口点和入口点。

-(中)通信内聚:模块内各功能部分使用了相同的输入数据,或产生了相同的

输出数据。

•(中)过程内聚:模块内部的处理元素是相关的模块中包含有一组任务,必须

按照一定的顺序执行完成功能。(没有公共数据),通常上一任务的输出是下一

任务的输入。

•(低)时间内聚:任务需在同一时间段完成。(各种初始化)

•(低)逻辑内聚:相关功能通过逻辑关系组成在模块内,功能相同或相似,(应

合理使用,否则增加模块数)

•(低)巧合内聚/巧合内聚:各部分之间没有任何联系,或有联系也很松散。

5.3启发规则

深度,宽度,扇入,扇出

5.4描绘软件结构的图形工具

5.4.1层次图和HIPO图

层次图用来描述软件的层次结构,一个方框代表一个模块,方框间的连线表示调用,

每个方框都对应一张IPO图就构成了HIPO图

5.5面向数据流的设计方法

解决的问题:根据数据流图构造出层次图

数据流包括变换流和事物流。

5.6小结

第6章详细设计

6.1结构程序设计

结构化设计定义:

如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个

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

•如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这三种基本控制结

构,则称为经典的结构程序设计;

•如果除了上述三种基本控制结构之外,还允许使用DO-CASE型多分支结构和D0-

UNTIL型循环结构,则称为扩展的结构程序设计;

・如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。

6.2人机界面设计

6.3过程设计的工具

描述程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言三类。

程序流程图

合图

PAD图

判定表:能够清晰地表示复杂的条件组合与应做动作之间的关系

6.4面向数据结构的设计方法

6.5程序复杂程度的度量方法

流图一一表示程序的控制流

流图的环形复杂度:环形复杂度定量度量程序的逻辑复杂性。三种方法来计算环形复杂

度。

­流图中的区域数等于环形复杂度。

•流图G的环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是流图中节点数。

•流图G的环形复杂度V(G)=P+1,其中P是流图中判定节点的数目。

6.6小结

第7章实现

通常把编码和测试统称为实现。

软件测试在软件生命周期中横跨两个阶段。

-单元测试,模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同

一个阶段。

对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常

由专门的测试人员承担这项工作。

7.1编码

7.2软件测试基础

测试是为了发现程序中的错误而执行的过程。

测试方法(黑盒测试和白盒测试)

•黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。

•黑盒测试是在程序接口进行的测试

-只检查程序功能是否能按照规格说明书的规定正常使用

-程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如,数据

库或文件)的完整性.

•黑盒测试又称为功能测试。

•白盒测试法是把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和

处理过程。

•白盒测试按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要

求正确工作。

•白盒测试又称为结构测试。

测试步骤

1.单元测试(模块测试):使用白盒测试技术

2.集成测试:将模块组合起来进行测试,一般运用黑盒测试

3.系统测试

4.验收测试(确认测试):在用户参与下使用实际数据进行测试,验证系统能否满足用

户的要求

73单元测试

可以应用人工测试和计算机测试这两种不同的方法来完成单元测试。

人工测试:代码审查,由审查小组正式进行

计算机测试:模块不是一个单独的程序,必须开发驱动软件和存根软件。

驱动软件是一个“主程序”,接受测试数据,并传送给被测试程序,打印相关结果。

存根程序是一个“虚拟子程序”,代替被测试模块所调用的模块。

7.4集成测试

主要是为了发现与接口有关的问题

模块组装时的两种方法:非渐增式测试方法和渐增式测试方法

渐增方式把模块结合到程序中时有两种策略:自顶向下;自底向上

自顶向下:从主程序开始测试,有宽度优先和深度优先的测试方法,测试时需要用到存

根程序来代替附属模块。为了保证新加入的程序没有错误,需要进行回归测试(重复之

前全部或者部分的测试内容)。

自底向上:从“原子模块”开始进行测试,测试时需要“驱动程序”

7.5确认测试

确认一一保证软件满足客户的需求

验证一一保证软件正确地实现了某个特定的功能

Alpha测试一一用户在开发者的场所并在开发者的“指导”下进行测试。

Beta测试一一在客户场所下进行测试

7.6白盒测试技术

逻辑覆盖是白盒测试技术。

测试的数据和预计输出项叫做测试用例

覆盖的不同等级:

语句覆盖一一每个语句至少执行一次

判定覆盖(分支覆盖)一一不仅每个语句至少执行一次,每个判定分支都执行一次

条件卷盖一一不仅每个语句执行一次判定表达式中的每个条件都取到可能的结果

判定/条件覆盖一一判定覆盖和条件覆盖不能相互包含

条件组合覆盖一一条件的各种组合都执行一次

基本路径测试也是白盒测试的技术

控制结构测试:基本路径测试步骤(先写长度短的路径)

画出相应流图

-计算流图的环形复杂度

确定线性独立路径的基本组合(独立路径至少包含一条在定义该路径之前不曾用过

的边)

-环形复杂度决定独立路径的上限

循环测试:

简单循环

嵌套循环

套接循环

7.7黑盒测试技术

等价划分是一种黑盒测试技术

等价划分把输入域划分为若干个数据类

(1)对于有效的笔价类在一个测试方案中尽可能多地被覆盖

(2)对于无效的等价类在一个测试方案中覆盖一个即可

边界值分析

按照边界值分析法,应该选取刚好等于、稍小于和梢大于等价类边界值的数据作为测试

数据

错误推测

7.8调试

7.9软件可靠性

软件可靠性的定义:

软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率

7.10小结

UML

UML的表示法:

UML由视图(view)、图(diagram)、模型元素(modelelement)和通用机制(generalmechanism)等

几个部分组成。

多个图组成视图

用例图:是对系统提出功能的描述。是从用户的角度出发来描述系统,定义了系统的艺能需

1用例图的主要元素是用例和执行者。

A用例:是系统执行一系列操作之后所完成的功能。

山执行者:是与系统交互的人或物。

A用例的三种关系:扩展(extend)、包含(include)>泛化

扩展(extend):基于甫例中一段独立的可选的动作,辅用例依赖主用例,箭头指向上用

例。

包含(include):这些动作是必选的,主用例依赖辅用例,箭头指向辅用例。

类图:不仅定义了类,还描述了类与类之间的关系,定义了类的方法和属性(静态图;

类图是构建其他图的基础。

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

属性的可见性(即可访问性)通常分为三种:公有的(public)、私有的(private)和保护的

(protected),分别用加号(+)、减号(-)和井号(的表示

UML描述操作的语法格式为:可见性操作名(参数表):返回值类型{性质串}

类与类之间的关系:关联、泛化(继承)、依赖和细化

关联关系:

1)普通关联关系:关联一般为双向,单向的称为导航关联。用带箭头的实线表示,箭

头指向宾语

2)限定关联:把模型中的重数从一对多变成一对一或多对多简化为多对一,提取限定

词,提高语义的精度。

3)关联类:用关联类来记录一些关联的属性

4)聚集:关联的一个特例,说明了类与类之间是整体和部分的关系。组合聚集表示“同

生共死”;共享聚集不表示“同生共死二(分别用实心菱形和空心菱形表示)

泛化(继承)关系:用空心三角形表示

1)普通泛化

2)受限泛化

依赖和细化:

1)依赖关系:一种非固定的联系,表示“A用到B",用带箭头的虚线来表示,箭头指

向A

2)细化:表示一种具体的描述

对象图:类图的实例(静态图)

对象的名字下面加卜划线,格式为:对象名:类名

状态图:状态图描述类的对象可能具有的所有状态,以及引起状态变化的事件,状态变化称

作状态转换。通常,状态图是对类图的补充(行为图)

与第六章的状态图相同。

活动图:活动图描述为满足用例要求而进行的动作以及动作间的关系(行为图)

活动图举例:

顺序图:显示若「个对象间的动态协作关系,它强调对象之间发送消息的先后次序,推述对

象之间的交互过程(交互图)

▲顺序图有两个坐标轴:纵坐标轴表示时间,横坐标地表示不同的对象。

[ondiUon]

同步消息

异步消息

简单消息

|cMldltmci]

消息类型:W第7.1gcgiix同步立即返回

0顺序图举例:

a协作图:与顺序图类似,也描述对象间的动态协作关系。除了显示对象间发送的消息之

外,协作图还显示对象及它们之间的关系(称为上下文相关)(交互图)

4协作图对象与对象之间的消息传递用消息标签。

1消息标签格式:前缀:守卫条件]序列表达式返回值:=消息说明

4协作图举例:

架构模式(architecturepattern)

Layers层次架构模式:结构被分解为响应的层,每一层都是一个子任务的抽象

特点:

每一层都给更高的层提供服务

每一层服务的实现都依赖于低一层提供的服务

服务频繁地通过同步程序调用被请求

例子:网络的5层结构

Model-view-controllerMVC架构模式:将交互式的应用分为3个部分。Model,核心的功能

和和数据;view,向用户展示信息;controller,控制用户的输入

特点:控制器输入事件时对模型和视图进行控制和调度。模型接受事件后改变自身的状态,

同时立即通知与之相关联的视图更新显示。

例子:Smalltalk

Client-serverC/S架构模式

特点:

服务器可以为多个客户机提供服务

客户机发出的服务请求来自服务器

请求将通过进程或机器边界来完成

服务器永远都是运行状态,等待来自客户机的请求

例子:web应用

Master-slave主从架构模式

特点:

主从模式提供错误的容忍度较高以及并行计算

主部分可以将任务分发给几个相同的从部分来进行计算,最后从各个从部分中收集信息并

计算最后的结果

例子:线程控制、嵌入式系统

Pipe-filter管道过滤器架构模式

特点:

•种为系统传输数据流的结构

每一步的处理都被压缩进一个“过滤器”

数据通过相邻过滤器之间的管道进行传输

举例:unix的shell命令行

设计原则一一子系统类与类之间的设计原则

面向接口编程一一使用“接口继承”,而非“实现继承”

C++使用纯虚类来实现“接口编程”

JAVA有单独的“接口编程”的语法结构

依赖倒置一一高层模块不应该依赖于底层模块,两者都依赖于抽象

组合优于继承一一优先使用组合可以获得重用性和简单性更加的设计

继承一般表示的是子类是父类的一种“特殊类型”而不是父类将要扮演的角色

单一职责一一类的功能只有一个

DataChannel

开放一封闭法则(OCP)——OCP认为应该试图设计出永远也不需要改变的模块。可以添加

新代码来扩展系统的行为;不能对已有的代码进行修改。

Liskov替换一一派生类永远可以替换基类在程序中出现的位置

设计模式一一基于设计原则

Factory工厂模式一一客户类和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论