《软件工程导论》学习笔记·

第一章,软件工程导论:

软件危机:计算机软件开发维护过程中所遇到得一系列严重的问题。

软件危机的典型表现:

  1. 对软件开发成本和进度的估计常常很不准确。
  2. 用户对以完成的软件系统不满意的现象经常发生。
  3. 软件产品质量靠不住
  4. 软件常常是不可维护的
  5. 软件常常没有适当的文档资料。
  6. 软件成本在计算机系统总成本所占比例逐年上升。
  7. 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件工程导论

软件=程序+数据+相关文档

 

 

软件生存周期(Software Life Cycle):一个软件 产品从定义、开发、维护到废弃的时间总和称为软 件的生存周期。

1.软件定义阶段: 该阶段必须要回答的问题是“需要软件解决的问题 是什么”,

   (1) 问题定义:  通过对客户的访问调查,系统分析员扼 要地写出关于问题性质、工程目标和工程规模的书 面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。

(2)可行性研究: 提交“可行性研究报告”,要回答“对于上 一个阶段所确定的问题有行得通的解决方法 吗?”

(3)软件需求分析: 主要确定目标系统必须具备哪些功能,提交 “需求规格说明书”,描述软件的功能和性 能,确定软件设计的限制和软件与其他系统 元素的接口,定义软件的其他有效性需求。

 2.软件开发阶段: 该阶段的任务是设计实现已定义的并经过需 求分析的软件系统。

(4)总体设计 (概要设计): 需要解决的问题是“应该如何宏观地解决问 题”确定软件德模块功能,得出意义明确的 功能模块,确定每个模块的输入、输出以及相互联系。

(5)详细设计(模块设计): 给出具体实现这个系统的步骤,但还不是编 写程序,而是设计出程序的详细规格说明(类 似于工程师的工程蓝图),它们包含必要的 细节,程序员可以根据它们写出实际的程序 代码。

(6)编码和单元测试 :写出正确的容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和实际环境 选取一种适当的高级程序设计语言把详细设 计的结果翻译成用选定的语言书写的程序, 并仔细测试编写出的每一个模块。

(7)综合测试 :关键任务是通过各种类型的测试及相应的调 试使软件大道预定的要求。 此阶段最重要的测试是:集成测试、验收测 试。(1)集成测试:是根据设计的软件结构,把经过单 元测试的模块按照某种选定的策略装配起来。 (2)验收测试:按照规格说明书的规定,由用户(或在用户积极参加下)对目标系统进行验收。

(8)软件维护: 运行阶段的任务是保障软件的正常运行以及对软件 进行维护。为了排除软件系统中可能隐含的错误, 适应用户需求及系统操作环境的变化,需要继续对 系统进行修改或扩充。

 

把软件生存周期中各项开发活动的流程用一 个合理的框架-开发模型来规范描述,这就是 软件过程模型,或称为软件生存周期模型。

瀑布模型

瀑布模型的优缺点

1、瀑布模型有以下优点: 1)为项目提供了按阶段划分的检查点。 2)当前一阶段完成后,您只需要去关注后续阶段。 3)可在迭代模型中应用瀑布模型。

2、瀑布模型有以下缺点: 1)在项目各个阶段之间极少有反馈。 2)只有在项目生命周期的后期才能看到结果。 3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

快速原型模型 :(简答题)是快速建立起来的可以在计算机上运行的程序,它 所能完成的功能往往是最终产品能完成的功能的一 个子集。 快速原型模型又称原型模型,它是增量模型的另一 种形式;它是在开发真实系统之前,构造一个原 型,在该原型的基础上,逐渐完成整个系统的开发 工作。

增量模型:

螺旋模型:每个阶段之前都增加了风险分析过程。

喷泉模型:面向对象的软件过程模型之一。

第二章,可行性研究

可行性研究本质:

实质上要进行一次大大压缩简化了的系统分析和设计的过程。也就是在较高的层次上以较抽象的方式进行系统分析和设计阶段的过程, 从经济可行性、技术可行性、法律可行性和用户操作可行性等方面评价系统是否值得做,是否能做。

 

 

结构化开发方法(Structured Developing Method)

 

 

数据流图描述了系统的逻辑结构,一个数据流图中的四个基本图形元素(数据源、数据流、数据存储和数据处理)

数据流图的基本成分

数据流图的基本图形元素

 

数据流图中的扩充符号

 

 

数据流图绘制方法

绘制步骤: (1)找出系统的输入输出 (2)画系统的内部 (3)画加工的内部

在顶层图中没有文件。

 

考试题

《软件工程导论》学习笔记·_第1张图片

订货单=配件号+配件名+规格+数量+顾客名+地址

提货单=订货单+金额

采货单=配件号+配件名+规格+数量+供货商名+地址

送货单=配件号+配件名+规格+数量+金额

1.画系统的顶层图(输入输出)


 

2.画系统的0层图

 

3.画加工的内部

 

 

数据字典(DD)

 数据字典是关于数据信息的集合,是数据流 图中所有元素严格定义的集合

 

 

数据字典有以下四类条目:数据项(数据流分量)、数据流、文件(数据存储)、基本加工(处理)。

1.数据流 :要定义数据流图中的数据流就要用数据流条目。数据流条目给出了某个数据流的定义,通常是列出该数据流的各个组成数据项。

订货单(数据流条目)=配件号(数据项)+配件名+规格+数量+顾客名+地址;

数据元素组成数据的方式:顺序,选择,重复,可选。

 

数据流条目的描述内容:

(1)名称:数据流名。

(2)别名:数据流的另一个名字。

(3)简述:对数据流的简单描述和说明。

(4)组成:描述数据流由哪些数据项组成,使用如表3-1所示的描述符号来表示数据流的组成

 

2.数据项条目 :

数据流的组成成员是数据项,数据项条目是不可再分解的数据单位,是组成数据流和数据存储的最小元素。数据项条目的描述内容如下:

(1)名称:数据项名。

(2)别名:数据项的另一个名字

(3)简述:对数据项的简单描述

 

 

(9)注解:对数据项的其它补充说明。

第三章,需求分析

需求分析是软件定义时期的最后一个阶段,基本任务是准确回答系统具体做什么,确定系统必须完成那些工作,对目标系统提出完整,准确,清晰,具体的要求。

需求分析的任务

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

 

分析过程建立的三种模型:

定义系统模型要区分逻辑模型和物理模型。 常用模型有数据建模、功能建模和行为建模

概念模型:E-R图;

2.3 结构化分析方法

结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 扩充后,将建模技术扩展到数据建模、功能建模和行为建模,以实体-关系图、数据流图和控制流图、状态-迁移图为工具,数据字典为核心,从不同视点建立系统的分析模型。

数据建模:E-R图;功能建模:DFD(数据流图);行为建模:状态转换图。

 

 

1. 数据建模

数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。

在需求分析阶段描述数据对象和它们之间的关系,使用了E-R 图。

2,功能建模:DFD图

3. 行为建模

 

状态转换图

 

状态:状态是任何可以被观察到的系统的行为模式,一个状态代表了一种行为方式。初态(实心圆),终态(同心圆),中态(同心圆)。一张状态图中只能有一个初态,终态可以有0到多个。中间状态用圆角矩形表示,上面部分为状态的名称,必须有,中间部分为状态变量的名字和值,可选,下面部分是活动表,

事件:事件是某个特定时刻发生的事情,它是对引起系统做动作或重一个状态转换到另一个状态的的外界事件的抽象。事件就是引起系统做动作的或转换状体的控制信息。

 

符号:

 

《软件工程导论》学习笔记·_第2张图片

 

其他图型工具:

1.层次方框图  

层次图也叫H图,它是一个表示信息系统 结构的有效工具。同模块结构图类似,但 比较简单。层次图一个方框表示一个模块, 方框内写模块名称。用方框间的连线表示 模块间的层次关系。

《软件工程导论》学习笔记·_第3张图片

2.Warnier图

法国计算机科学家Warnier提出了表示信息层 次结构的另外一种图形工具。 Warnier图可以表明信息的逻辑组织,它可以 指出一类信息或一个信息元素是重复出现的, 也可以表示特定信息在某一类信息中是有条件 地出现的。

《软件工程导论》学习笔记·_第4张图片

圈加==异或符号,表明一类信息不能同时出现,px==表示重复的次数。

 

IPO图

是输入—输出—处理图的简称。它也是美 国IBM公司发展并完善起来的一种图形工具。它 具有简单、易用、描述清晰的特点,用来表示一 个加工比较直观,对设计很有帮助。一个完整的 IPO图由三个大方框组成。左边的方框内写有关 的输入数据,称输入框;中间的方框列出对输入 数据的处理,称处理框;右边的方框写处理所产 生的输出数据,称输出框。处理框中从上至下的 顺序表明系统操作的次序。 

《软件工程导论》学习笔记·_第5张图片

《软件工程导论》学习笔记·_第6张图片

 

 

 

第四章  形式化说明技术

按照形式化的程度,可以把软件工程使用的 方法划分为非形式化、半形式化、形式化3类

【注】

(1)用自然语言描述需求规格说明是典型 的非形式化方法.

(2)用数据流图或E-R图建立的模型是典型 的半形式化方法。

(3)形式化方法是描述系统性质的基于数学 的技术,即如果一种方法有坚实的数学基础,那么它就是形式化的。

 

4.2有穷状态机

 

 

Petri网:

 

 

Z语言:

 

 

第五章,总体设计

总体设计包括:系统设计阶段,(确定系统的具体实施方案)和结构设计阶段(确定软件结构)。

 

 

 

《软件工程导论》学习笔记·_第7张图片

 

从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。、

概要设计 将软件需求转化为软件体系结构 ,确定系统级接口, 全局数据结构或数据库模式。

详细设计 确立每个模块的实现算法和局部数据结构 ,用适当方法表示算法和数据结构的细节

 

 

 

 

 

设计原理(简答):

模块化,

抽象(自顶向下由抽象到具体的方式分配控制),

逐步求精,

信息隐藏和局部化,

模块独立(低耦合,高内聚),

 

软件设计的主要手段

1)    设计应遵循抽象化的原则,包含数据抽象和过程抽象。

过程抽象    

是指在软件设计中将处理过程的实现细节隐藏在数据抽象中,可以直接通过模块接口使用这些处理操作。

数据抽象  

是指采用抽象数据类型表示数据,实现数据封装,使得使用者可通过接口使用数据而不必关心数据结构的实现。

设计应遵循

自顶向下、逐步细化的原则,建立一个层次的结构。 将软件体系结构自顶向下,对过程细节和数据细节从抽象到具体,逐层细化,直到用编程语言的语句能够实现为止。

设计应当遵循模块化的原则。 

设计应遵循信息隐蔽的原则。

5.2  功能独立性

 

耦合性:   耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

高内聚,低耦合。

 

《软件工程导论》学习笔记·_第8张图片

模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。

 

非直接耦合(Nondirect Coupling):

两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。 非直接耦合的模块独立性最强。

 

 

内容耦合 (Content Coupling)

如果发生下列情形,模块之间就是内容耦合:

一个模块直接访问另一个模块的内部数据;

一个模块不通过正常入口转到另一模块内部;

两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

一个模块有多个入口。

 

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

《软件工程导论》学习笔记·_第9张图片

模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。 要求模块结构达到高内聚,低耦合。

功能内聚 (Functional Cohesion)

一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。 功能内聚模块的功能独立性最强。

 

 

巧合内聚(Coincidental Cohesion)

当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或联系很松散。

启发式规则:

 

 

3.深度(软件结构中控制的层数)、宽度(软件结构中同一层次的模总数的最大值)、扇出(一个模块直接控制或调用的模块的数目,一般3-4,上限5-9)和扇入(有多少个上级模块调用它。)都应适当

 

 

 

描绘软件结构的图形工具:描述软件结构在常用工具是结构图和层次图。

层次图和HIPO图:

层次图用来描绘软件的层次结构。在图5.2 中已经非正式地使用了层次图。虽然层次图 的形式和第3.7节中介绍的描绘数据结构的 层次方框图相同,但是表现的内容却完全不 同。

方框间的连线表示调用关系而不像层次方框 图那样表示组成关系。层次图中的一个矩形框代表一个模块,最顶层的方 框代表正文加工系统的主控模块,它调用下 层模块完成正文加工的全部功能;第二层的 每个模块控制完成正文加工的一个主要功能.

《软件工程导论》学习笔记·_第10张图片

HIPO图HIPO图具有可追踪性,在H图(层次图)里除了 最顶层的方框之外,每个方 框都加了编号。 编。

《软件工程导论》学习笔记·_第11张图片

结构图

结构图和层次图类似,也 是描绘软件结构的图形工具,图中一个方框 代表一个模块,框内注明模块的名字或主要 功能;方框之间的箭头(或直线)表示模块的 调用关系。尾部是空心圆表示传递的是数 据,实心圆表示传递的是控制信息。

《软件工程导论》学习笔记·_第12张图片

面向数据流的设计方法:把信息流映射为软件结构,信息流的类型决定了映射方法。

面向数据流的设计方法的目标是给出设计软 件结构的一个系统化的途径。

(1)在软件工程的需求分析阶段,信息流是 一个关键考虑,通常用数据流图描绘信息在 系统中加工和流动的情况。

(2)面向数据流的设计方法定义了一些不同 的“映射”,利用这些映射可以把数据流图 变换成软件结构

通常所说的结构化设计方法(简称SD法 ),也就是基于数据流的设计方法

数据处理的类型

在需求分析阶段,面向数据流的SA方法产生数据流图DFD。

在软件设计阶段,面向数据流的SD方法将DFD转换成程序结构图。

数据处理即为在DFD中从系统的输入数据流到系统的输出数据流所经历的一连串连续变换。

数据处理的类型分为变换流型与事务流型。 

变换流:

数据沿着输入通路进入系统,经过一系列数据变换,将数据的外部形式转换成对应的内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的数据流称为变换流。

变换流型DFD可以分成:     输入+变换中心(主加工)+输出

相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出等三部分组成。

 

 

 

 

变换分析

变换分析从变换流型的数据流图导出系统结构图.

重画数据流图;

《软件工程导论》学习笔记·_第13张图片

区分有效(逻辑)输入、有效(逻辑)输出和变换中心部分;

《软件工程导论》学习笔记·_第14张图片

进行一级分解,设计模块结构的顶层和第一层模块;

顶层模块:其功能就是整个系统的功能;

输入控制模块:接收所有的输入数据;

变换控制模块:实现输入到输出的变换;

输出控制模块:产生所有的输出数据。

《软件工程导论》学习笔记·_第15张图片

《软件工程导论》学习笔记·_第16张图片

进行二级分解,设计输入、输出和中心变换部分的中、下层模块。

输入控制模块的分解:从变换中心的边界开始,沿着各输入通路,把输入通路上的每个加工映射成输入控制模块的一个低层模块。

输出控制模块的分解:从变换中心的边界开始,沿着各输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。

变换控制模块的分解:变换控制模块通常没有通用的分解方法,应根据数据流图中变换部分的实际情况进行设计。

考试题:

 

《软件工程导论》学习笔记·_第17张图片

《软件工程导论》学习笔记·_第18张图片

《软件工程导论》学习笔记·_第19张图片

《软件工程导论》学习笔记·_第20张图片

《软件工程导论》学习笔记·_第21张图片

 

层次图和结构图是描述软件的常用工具

第六章 详细设计

详细设计的任务:

  1. 为每个模块确定采用的算法,选择某种合适的工具表达算法的过程,写出模块的详细过程性描述,
  2. 确定每一模块使用的数据结构。
  3. 确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口以及模块输入数据。
  4. 为每一个模块设计出一组测试用例。

人机界面设计:系统的响应时间:有两个重要的属性,长度和易变度。

 

 

6.3过程设计的 工具

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

程序流程图:又称为程序框图,它是历史最悠 久、使用最广泛的描述过程设计的方法,然 而它也是用得最混乱的一种方法。

程序流程图中用箭头代表控制流,程序流程图不易表示数据结构。

盒图:N-S图

出于要有一种不允许违背结构程序设计精神 的图形工具的考虑,Nassi和Shneiderman 提出了盒图,又称为N-S图。

特点:

(1)功能域(一个特定控制结构的作用域 )明确,可以从盒图上一眼就看出来。

(2)不可能任意转移控制。

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

(4)很容易表现嵌套关系,也可以表示模块 的层次结构。

《软件工程导论》学习笔记·_第22张图片

PAD图

它用二维树形结构 的图来表示程序的控制流,将这种图翻译 成程序代码比较容易。

 

《软件工程导论》学习笔记·_第23张图片

(1)使用表示结构化控制结构的PAD符号所设 计出来的程序必然是结构化程序。

(2)PAD图所描绘的程序结构十分清晰。圈表语句标号,等号表定义

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

(4)容易将PAD图转换成高级语言源程序, 这种转换可用软件工具自动完成,从而可省 去人工编码的工作,有利于提高软件可靠性 和软件生产率。

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

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

6.3.4判定表

当算法中包含多重嵌套的条件选择时,判定表却能够清晰地表示复杂的条件组 合与应做的动作之间的对应关系。

判定表的组成】 一张判定表由4部分组成,左上部列出 所有条件,左下部是所有可能做的动作,右 上部是表示各种条件组合的一个矩阵,右下 部是和每种条件组合相对应的动作。判定表 右半部的每一列实质上是一条规则,规定了 与特定的条件组合相对应的动作。

《软件工程导论》学习笔记·_第24张图片

6.5.3判定树

【判定树】 判定树是判定表的变种,也能清晰地表示复 杂的条件组合与应做的动作之间的对应关系

判定树的优点

(1)它的形式简单到不需任何说明,一眼就 可以看出其含义,因此易于掌握和使用。

(2)多年来判定树一直受到人们的重视,是 一种比较常用的系统分析和设计的工具。

《软件工程导论》学习笔记·_第25张图片

过程设计语言(PDL)

也称为伪码,它是用正文 形式表示数据和处理过程的设计工具。 PDL具有严格的关键字外部语法,用于定义控 制结构和数据结构;另一方面,PDL表示实 际操作和条件的内部语法通常又是灵活自由 的,可以适应各种工程项目的需要。因此, 一般说来,PDL是一种“混杂”语言。

考试题

某物流公司运费计算标准如下:若省内运输,快递服务每千克5元,平邮普通包裹资费每千克3元;若省外运输,重量不超过5千克的快递服务每千克12元,超重部分按每千克5元计算,重量不超过5千克的平邮普通包裹资费每千克8元,超重部分按每千克3元计算。请用结构化语言(PDL)表示

画判定树,判定图。

面向结构的的设计方法:

.1Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法,层次图表现的是调用关系,而Jackson图表现的是组成关系。

程序复杂程度的定量度量:McCabe方法,Halstead方法,

 

 

第七章 实现

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

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

软件测试的目标(简答):

  1. 测试是为了发现程序中的错误而执行程序的过程。
  2. 好的测试方案是极有可能发现迄今为止尚未发现的错误的测试方案,
  3. 成功的测试是发现了至今为止尚未发现的错误的测试。

测试方法

黑盒测试:功能测试,如果已经知道了产品应该具有 的功能,可以通过测试来检验是否每个功能 都能正常使用;

  1. 等价划分
  2. 边界值分析
  3. 错误推测

 

白盒测试:结构测试,如果知道产品的内部工作过程 ,可以通过测试来检验产品内部动作是否按 照规格说明书的规定正常进行。

  1. 逻辑覆盖:是以程序内部的逻辑结构为基础的设计测试用例的技术。是对一系列测试过程的总称, 这组测试过程逐渐进行越来越完整的通路测 试。它属白盒测试。 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖 点覆盖 边覆盖。
  2. 控制结构测试:基本路径测试,调减测试,循环测试,

测试步骤:

  1. 模块测试,

  2. 子系统测试,

  3. 系统测试,

  4. 验收测试,(把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是在用户积极参与下进行的。也称确认测试)

  5. 平行运行。

软件 可靠性:

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

软件的可用性:

程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

 

7.4集成测试

集成测试是测试和组装软件的系统化技术。

一种方法是先分别测试每个模块,再把所 有模块按设计要求放在一起结合成所要的程 序,这种方法称为非渐增式测试方法;

另一种方法是把下一个要测试的模块同已经 测试好的那些模块结合起来进行测试,测试 完以后再把下一个应该测试的模块结合进来 测试。这种每次增加一个模块的方法称为渐增式 测试,这种方法实际上同时完成单元测试 和集成测试。

目前在进行集成测试时普遍采用渐增 式测试方法

自顶向下集成:

自顶向下集成方式是一个递增的组装软件结 构的方法。从主控模块(主程序)开始沿控 制层向下移动,把模块一一组合起来。分两 种方法: 第一:先深度:按照结构,用一条 主控制路径将所有模块组合起来;第二:先 宽度:逐层组合所有下属模块,在每一层水 平地 集成测试 沿着移动。 

自底向上集成测试 :

自底向上的集成方式是最常使用的方法。其 他集成方法都或多或少地继承、吸收了这种 集成方式的思想。 【集成思想】自底向上集成方式从程序模块 结构中最底层的模块开始组装和测试。因为 模块是自底向上进行组装的,对于一个给定 层次的模块,它的子模块(包括子模块的所 有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实 模块,给待测模块提供调用接口或数据的测 试用软件模块)。

 

 

 

 

Alpha和Beta测试:

【Alpha测试】由用户在开发者的场所进行, 并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。

【Beta测试】由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此,Beta 测试是软件在开发者不能控制的环境中的“真实”应用。

 

 

 

软件维护的基本概念    

    软件维护:就是在软件产品投入使用之后,为了改正软件产品中的错误或为了满足用户对软件的新需求而修改软件的过程。

  软件维护的种类

1.改正性维护:20%

2.适应性维护:25%

3.完善性维护:50%

4.预防性维护:5%

软件维护的特点:

  1. 结构化维护与非结构化维护差别巨大;
  2. 维护的代价高昂
  3. 维护的问题很多

 

 

第九章 面向对象方法学导论

 

 

OO = object + class + inheritance + communication with messages

 面向对象 = 对象 + 分类 + 继承 + 消息通信

面向对象即使用对象又使用类和继承等机制,而且对象直接仅能通过传递消息实现彼此通信,

面向对象方法学的优点:

  1. 与人类习惯的思维方法一致。
  2. 稳定性好。
  3. 可重用性好。
  4. 较易开发软件产品。
  5. 可维护性好。

面向对象的概念:

对象:对问题域中某个实体的抽象,设立某个对象就表示系统具有保存有关它的信息与它进行的交互能力。特点:以数据为中心,对象是主动的,实现了数据的封装,本质上有并行性,模块独立性好。

其他概念:

类:具有相同数据和数据操作的一组相似对象的定义。

实例:由某个实例的类所描述的一个具体的对象。

消息:要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明,接收消息的对象,消息选择符,零个或多个变元。

方法:对象所能执行的所有操作,就是类中所定义的服务。

属性:类中所定义的数据,即对客观世界所具有的性质的抽象。

封装:有清晰的边界,有确定的接口(协议),受保护的内部实现,

继承:直接获得已有的性质和特性。

多态性:在类等级的不同层次中可以共享一个行为的名字。

重载:函数重载,在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字,运算符重载,同一运算符可以施加于不同类型的操作数上。

面向对象建模:

3种 形式的模型,、

第一是描述系统数据结构 的对象模型(UML类图),

第二是描述系统控制结构的动 态模型(状态转化图);

第三是描述系统功能的功能模型(用例图)。

对象模型::表示静态的、结构化的系统的“数 据”性质。 它是对模拟客观世界实体的对象以及对象彼 此间的关系的映射,描述了系统的静态结构。

类与类之间通常有关联、泛化(继承)、依赖和 细化等4种关系。 

 

你可能感兴趣的:(《软件工程导论》学习笔记·)