软件工程导论第五版复习重点课件_第1页
软件工程导论第五版复习重点课件_第2页
软件工程导论第五版复习重点课件_第3页
软件工程导论第五版复习重点课件_第4页
软件工程导论第五版复习重点课件_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

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

文档简介

11软件工程学概述2可行性研究3需求分析形式化说明技术总体设计6详细设计7实现8维护9面向对象相关内容10软件项目管理软件工程导论复习11软件工程学概述7实现软件工程导论复习2第1章软件工程学概述

1、什么是软件危机?P12、软件危机产生的原因有哪些?P33、什么是软件工程?P54、软件工程方法学包含哪些要素?P95、在软件过程中有哪些模型?他们各自的特点是哪些?P15—P222第1章软件工程学概述1、什么是软件危机?P13第2章可行性研究

1、可行性研究的目的是什么?P252、应从哪些方面研究可行性?P253、如何画系统流程图?P27—P304、如何画数据流图?P30—P375、了解数据字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P254数据流图(DataFlowDiagram,DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。2.4数据流图2.4数据流图(DFD)数据存储数据源点或终点处理加工名数据流数据流名文件名实体名箭头圆或椭圆单或双杠矩形框还有一些辅助的图例:一、数据流图的图符四种基本图形符号:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*

+或互斥+4数据流图(DataFlowDiagram,DFD)是描52.4数据流图举例:储户储户1记录存款信息打印存款信息存款单存款信息存款存单3计算利息4打印利息清单存款信息利息值利息清单D1存款信息存款信息252.4数据流图举例:储户储户1记录存款打印存款存款单存款6细化后的计算机储蓄系统软件结构6细化后的计算机储蓄系统软件结构7第3章需求分析

1、需求分析的基本任务是什么?P46-P482、分析建模

2.1什么是模型?模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。

2.2数据模型(E-R)、功能模型(2.4节数据流图)、行为模型(状态转换图是行为模型的基础)3、要从哪些方面验证软件需求?P607第3章需求分析1、需求分析的基本任务是什么?P468第4章形式化说明技术

软件工程的使用方法非形式化:用自然语言描述需求规格说明半形式化:用数据流图或实体—联系图建立模型形式化:描述系统性质的基于数学的技术1、有穷状态机P67—P722、Petri网技术P72—P758第4章形式化说明技术软件工程的使用方法非形式化:用9第5章总体设计

1、在设计过程中,总体设计一般有哪两个主要阶段组成?P812、什么模块化?模块独立性包含哪些内容?度量准则是什么?P85—P893、启发规则有哪些?P90—P924、描绘软件结构的图形工具P92-P945、面向数据流的设计方法P95—P1029第5章总体设计1、在设计过程中,总体设计一般有哪两105.2设计原理5.2.1模块化

模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。

模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。105.2设计原理5.2.1模块化模块是程序对象有名11模块化降低软件复杂度的简单证明5.2.5模块独立5.2.5模块独立“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:⑴功能即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。⑵逻辑即描述模块内部怎么做。⑶状态即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。11模块化降低软件复杂度的简单证明5.2.5模块独立5.2125.2.5模块独立性模块独立性的度量标准是两个定性准则:

耦合性用于描述模块之间联系的紧密程度。

内聚性用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。

125.2.5模块独立性模块独立性的度量标准是两个定性准则13图5.8变换型数据流图的基本模型

5.5.1概念–

变换流13图5.8变换型数据流图的基本模型5.5.1概念14图事务型数据流图的基本模型5.5.1概念–

事务流14图事务型数据流图的基本模型5.5.1概念–事15变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。不具有显著的事务特点。虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。15变换分析设计:把具有变换流特点的数据流图按预先确定的模式16第6章详细设计

1、结构程序设计中有哪几种基本控制结构?P1082、了解人机界面的设计。3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114—P1194、面向数据结构的设计方法(Jackson图)5、程序复杂度的定量度量(McCabe)16第6章详细设计1、结构程序设计中有哪几种基本控制176.1结构程序设计6.1结构程序设计图6.13种基本的控制结构176.1结构程序设计6.1结构程序设计图6.1186.1结构程序设计其他常用的控制结构图6.2其他常用的控制结构186.1结构程序设计其他常用的控制结构图6.2其196.3.1程序流程图

程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。图6.3程序流程图中使用的符号196.3.1程序流程图程序流程图是最早20N-S图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。在N-S图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。N-S图中,基本控制结构的表示符号如图6.4所示。6.3.2N-S图20N-S图又称为盒图,它是为了保证结构化程序设计而由Nas216.3.2N-S图图6.4盒图的基本符号216.3.2N-S图图6.4盒图的基本符号22图6.5PAD中基本符号顺序结构;(b)分支结构;(c)多分支CASE结构;(d)当型循环;(e);直到型循环;(f)语句标号;(g)定义6.3.3PAD图22图6.5PAD中基本符号6.3.3PAD图236.3.3PAD图图6.6使用PAD图提供的定义功能来逐步求精的例子236.3.3PAD图图6.6使用PAD图提供的定246.4面向数据结构的设计方法6.4面向数据结构的设计方法Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法246.4面向数据结构的设计方法6.4面向数据结25Jackson方法是由英国的M.A.Jackson在1975年首先提出的,他同时还提出了与这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称为Jackson图。Jackson方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中、小型系统特别有效,如商业应用中的文件、表格处理。该方法也可与其他方法结合,用于模块的详细设计。6.4面向数据结构的设计方法6.4.1Jackson图25Jackson方法是由英国的M.A.Jackson在1926图6.8三种基本结构在Jackson图中的表示符号(a)顺序结构;(b)选择结构;(c);循环结构6.4.1Jackson图(a)(c)(b)26图6.8三种基本结构在Jackson图中的表示符号6276.4面向数据结构的设计方法6.4.2改进的Jackson图图6.9改进的Jackson图276.4面向数据结构的设计方法6.4.2改进的286.5程序复杂程度的定量度量

定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。286.5程序复杂程度的定量度量定量度量296.5程序复杂程度的定量度量6.5.1McCabe方法McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。296.5程序复杂程度的定量度量6.5.1McCa306.5程序复杂程度的定量度量图6.16把程序流程图影射成流图306.5程序复杂程度的定量度量图6.16把程序流程31

环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。6.5.1计算环形复杂度的方法31环形复杂度定量度量程序的逻辑复杂度。有了描绘程序32第7章实现

1、编码2、测试技术P139—P1693、调试的途径有哪些?P1684、软件可靠性和可用性的基本概念P16932第7章实现1、编码33

编码:把软件设计结果翻译成用某种程序语言书写的程序。测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。

实现编码和测试33编码:把软件设计结果翻译成用某种程序语言书写的程序。实347.2软件测试基础7.2软件测试基础

软件测试:为发现程序中的错误而执行程序的过程。软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)测试方法(黑盒测试和白盒测试)测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)347.2软件测试基础7.2软件测试基础软件测试:为35

测试内容模块模块接口测试局部数据结构测试重要路径测试错误处理测试边界条件测试I/O参数值的个数、类型、次序、格式是否正确,I/O文件属性、操作是否正确等。数据说明是否正确、一致,变量及其初值定义是否正确等。检查“错误处理程序”本身的错误。边界条件常包括循环边界,最大最小值、控制流中等于、大于、小于的比较值等。重要路径通常是指完成模块功能的主要路径,一般是控制结构。也称模块测试(moduletesting)7.3.1单元测试重点7.3单元测试35测试内容模块模块接口测试局部数据结构测试重要路径测试错36白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。语句覆盖判定覆盖条件覆盖判定条件覆盖条件组合覆盖弱强7.6白盒测试技术7.6白盒测试技术36白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标37①语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。②

判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。③条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。④

判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。⑤

条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。白盒法常用的覆盖标准37①语句覆盖:选择足够的测试用例,使得程序中每个语句至38等价分类法边值分析法错误推测法黑盒法

不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。7.7黑盒测试技术7.7黑盒测试技术38等边错黑盒法7.7黑盒测试技术7.7黑盒测试391、等价分类法基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例,具有“代表性”。等价类分为:有效等价类

—对于程序的规格说明是合理的、有意义的输入数据构成的集合。无效等价类

—对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。391、等价分类法基本思想:根据程序的I/O特性,将程序的定402、边值分析法基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。分析步骤:

A、先划分等价类。

B、选择测试用例,测试等价类边界。边界选择原则:

A、按照输入值范围的边界。

B、按照输入/输出值个数的边界。

C、输出值域的边界。

D、输入/输出有序集的边界。

402、边值分析法基本思想:选择等价类的边缘值作为测试用例413、错误推测法

错误推测法的概念:凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。

错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。413、错误推测法错误推测法的概念:凭经验或直觉推测可能的42

调试(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。

调试过程如下图所示:7.8调试7.8调试42调试(也称为纠错)作为成功测试的后果出现,也就是说,调43

无论采用什么方法,调试的目标都是寻找软件错误的原因并改正错误。通常需要把系统地分析、直觉和运气组合起来,才能实现上述目标。一般说来,有下列3种调试途径可以采用:蛮干法回溯法原因排除法7.8调试途径43无论采用什么方法,调试的目标都是寻找软件错误的原因并44

软件可靠性的定义:对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率

软件可用性的一个定义:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。7.9调试7.9软件的可靠性44软件可靠性的定义:对于软件可靠性有许多不同的定义,其中45第8章维护

1、软件维护的定义P1792、了解软件维护的特点3、软件维护过程中维护组织包括哪些人员?P1828.4决定软件的可维护性的因素有哪些?P185—P1868.5软件再工程过程45第8章维护1、软件维护的定义P179468.1软件维护的定义8.1软件维护的定义

软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成4类。完善性维护(PerfectiveMaintenance):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。纠错性维护(CorrectiveMaintenance):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。适应性维护(AdaptiveMaintenance):要使运行的软件能适应运行环境的变动而修改软件的过程。预防性维护(PreventiveMaintenance):为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。(8.5节)468.1软件维护的定义8.1软件维护的定义软件478.3软件维护过程图8.1维护组织478.3软件维护过程图8.1维护组织488.4软件的可维护性软件的可维护性定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。重用:同一事物不做修改或稍加改动就在不同环境中多次重复使用。提高可维护性是支配软件工程方法学所有步骤的关键目标。488.4软件的可维护性软件的可维护性定性地定义为:维护49第9章面向对象相关内容

1、面向对象方法学概述P193—P2002、面向对象建模(涵盖第9章和第10章)3、面向对象分析的基本过程4、面向对象的设计准则49第9章面向对象相关内容1、面向对象方法学概述509.1.1要点9.1概述

面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。对象彼此之间仅能通过传递消息互相联系。509.1.1要点9.1概述面向对象方法学的出发51

面向对象的方法学可以用下列方程来概括:OO=objects+classes+inheritance+communicationwithmessages也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。

只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。51面向对象的方法学可以用下列方程来概括:52类(Class)类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance)

,它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method)

,方法有方法名,方法体和参数。

由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。9.1.4其它概念52类(Class)由于对象是类的实例,在进行分53

实例:实际上类是建立对象时使用的“样板”,按照这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象。53实例:实际上类是建立对象时使用的“样板”54几何对象颜色位置移动(delta:矢量)选择(P:指针型):布尔型旋转(角度)图9.5对象类的描述人姓名:字符串年龄:整型改换工作改换地址文件文件名文件大小最近更新日期打印(人)里斯28绘图员人民路8号(人)张山24程序员无图9.6对象的描述对象和类的描述

对象和类一般采用“对象图”和“类图”来描述。类名属性运算

对象图

类图54几何对象图9.5对象类的描述人文件(人)(人)图9.655消息(Message)

消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息。注意:在并发系统中,多个控制线程(ThreadofControl)并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息、或是传递同步控制信息。在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。55消息(Message)注意:在并发系统中,多个控制线56消息(Message)属性:姓名年龄单位职称工资状态:李立

25

计算机系讲师

900属性:调工资评职称受聘方法:调工资(计算公式)评职称(步骤、条件)属性:调工资评职称受聘李立,调工资(••••••)数据结构数据值人事处向对象发消息执行的操作方法体类:教师对象:李立抽象实例抽象实例抽象方法名(参数)图9.7对象、类和消息传递56消息(Message)属性:姓名状态:李立属性:调工资方57

方法:就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C++语言中把方法称为成员函数。

属性:就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在C++语言中把属性称为数据成员。57方法:就是对象所能执行的操作,也就是类中所定义的服务。58

继承(Inheritance)

继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容。继承性分:单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。基类子类A子类B图9.9继承性描述现存类定义父类(基类)新类定义子类(派生类)继承图9.8继承性58继承(Inheritance)基类子类A子类B图959图9.8实现继承机制的原理59图9.8实现继承机制的原理60

多态性:

(Polymorphism)是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。多态即一个名字可具有多种语义。

即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。例如:“绘图”操作,作用在“椭圆”和“矩形”上,画出不同的图形。

有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。重载进一步提高了面向对象系统的灵活性和可读性。60多态性:(Polymorphism)是指相同的操作或61

面向对象建模技术所建立的3种模型,分别从3个不同侧面描述了所要开发的系统。这3种模型相互补充、相互配合,使得我们对系统的认识更加全面:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成3种模型的集成。3种模型之间的关系61面向对象建模技术所建立的3种模型,分别从3个不同侧面描62(1)面向对象分析的三个模型面向对象建模是面向对象分析的关键。面向对象的模型包括:对象模型、动态模型和功能模型。对象模型描述了系统的静态结构;动态模型描述了系统的互交次序;功能模型描述了系统的数据变换。不同的问题,三个子模型的侧重程度不同,但是,对象模型是最基础的、最核心的、最重要的。无论解决什么问题,首先要在问题域中提取和定义出对象模型。当问题涉及用户界与过程控制时,动态模型是重点。如果问题涉及大量数据变换,则功能模型非常重要。对象模型中的操作(服务)可以出现在动态模型和功能模型内。面向对象分析的基本过程9.33个子模型与5个层次62(1)面向对象分析的三个模型面向对象分析的基本63(2)面向对象分析的五个层次面向对象分析由五个主要活动组成:主题层、类与对象层、结构层、属性层和服务层,见图9.2。图对象模型的五个层次3个子模型和5个层次63(2)面向对象分析的五个层次图对象模型的五64模块化抽象信息隐藏弱耦合强内聚可重用

面向对象设计的准则面向对象设计的准则64模块化面向对象设计的准则面向对象设计的准则65

重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。广义地说,软件重用可分为以下3个层次:(1)知识重用(例如,软件工程知识的重用)。(2)方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用)。(3)软件成分的重用。前两个重用层次属于知识工程研究的范畴,本节仅讨论软件成分重用问题。软件重用软件重用65重用也叫再用或复用,是指同一事物不作修改或稍加改66第10章软件项目管理

1、了解如何估算软件规模,如何进行工作量的估算?2、制定进度计划的工具有哪些?P302—P3093、了解人员如何组织?4、软件质量的保证措施有哪些?P316—P3175、软件配置管理P319—P3216、能力成熟度模型分为哪几级?P322—P32466第10章软件项目管理1、了解如何估算软件规模,如67

不论从事哪种技术性项目,实际情况都是,在实现一个大目标之前往往必须完成数以百计的小任务(也称为作业)。这些任务中有一些是处于“关键路径”(见13.3.5节)之外的,其完成时间如果没有严重拖后,就不会影响整个项目的完成时间;其他任务则处于关键路径之中,如果这些“关键任务”的进度拖后,则整个项目的完成日期就会拖后,管理人员应该高度关注关键任务的进展情况。13.3进度计划13.3进度计划67不论从事哪种技术性项目,实际情况都是,在实现一个68软件开发进度计划安排是一件困难的任务,既要考虑各个子任务之间的相互联系,尽可能并行地安排任务,又要预见潜在的问题,提供意外事件的处理意见。

描述计划进度的主要工具有:一般的表格工具、甘特图、PERT技术与CPM方法。1、一般的表格工具例如:进度表(图13.3)

▲▲▲软件测试

▲▲▲

编码

▲▲详细设计

▲▲总体设计▲▲▲需求分析123456789101112任务月份图13.3进度表010203040506070一月二月三月四月五月六月需求分析

总体设计详细设计编码、测试13.3.2

Gantt图13.3.2Gantt图68软件开发进度计划安排是一件困难的任务,既要考虑各个子69上一小节介绍的Gantt图具有直观简明和容易掌握、容易绘制的优点,但是Gantt图也有3个主要缺点:(1)不能显式地描绘各项作业彼此间的依赖关系;(2)进度计划的关键部分不明确,难于判定哪些部分应当是主攻和主控的对象;(3)计划中有潜力的部分及潜力的大小不明确,往往造成潜力的浪费。工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络是系统分析和系统设计的强有力的工具。13.3.3工程网络13.3.3工程网络69上一小节介绍的Gantt图具有直观简明和容易掌握、容易绘70图13.6旧木板房刷漆工程的完整的工程网络13.3.4估算工程进度70图13.6旧木板房刷漆工程的完整的工程网络13.3.7113.5质量保证软件质量保证措施:基于非执行的测试(也称为复审或评审),基于执行的测试(即以前讲过的软件测试)和程序正确性证明。基于非执行的测试(也称为复审或评审),主要用来保证在编码之前各阶段产生的文档的质量;基于执行的测试(即以前讲过的软件测试)需要在程序编写出来之后进行,它是保证软件质量的最后一道防线;程序正确性证明使用数学方法严格验证程序是否与对它的说明完全一致。7113.5质量保证软件质量保证措施:基于非执行的测试(也721.软件配置项:软件过程的输出信息可以分为3类:①计算机程序(源代码和可执行程序);②描述计算机程序的文档(供技术人员或用户使用);③数据(程序内包含的或在程序外的)。上述这些项组成了在软件过程中产生的全部信息,我们把它们统称为软件配置,而这些项就是软件配置项。13.6.1软件配置2.基线:是一个软件配置管理概念,基线就是通过了正式复审的软件配置项。在软件配置项变成基线之前,可以迅速而非正式地修改它。一旦建立了基线之后,虽然仍然可以实现变化,但是,必须应用特定的、正式的过程(称为规程)来评估、实现和验证每个变化。721.软件配置项:软件过程的输出信息可以分为3类:①73CMM将软件过程的成熟度分为5个级别(MaturityLevels)

,如图所示,5个等级分别是:初始级可重复级已定义级已管理级优化级13.7.2

软件过程的成熟度等级1、初始级(Initial)2、可重复(Repeatable)3、已定义级(Defined)4、已管理级(Managed)5、优化级(Optimizing)

SW-CMM为每个软件组织建立和改善软件过程提供了一个阶梯式的过程成熟度框架,这一框架由5个成熟度等级构成。除初始级以外,其余的成熟度等级都包含了若干个关键过程区域,每个关键过程区域又包含了若干个关键实践,这些关键实践按照5个共同特点加以组织。

图13.7成熟度等级单击鼠标左键查看相应内容73CMM将软件过程的成熟度分为5个级别(Maturity74祝大家学习愉快!74祝大家学习愉快!751软件工程学概述2可行性研究3需求分析形式化说明技术总体设计6详细设计7实现8维护9面向对象相关内容10软件项目管理软件工程导论复习11软件工程学概述7实现软件工程导论复习76第1章软件工程学概述

1、什么是软件危机?P12、软件危机产生的原因有哪些?P33、什么是软件工程?P54、软件工程方法学包含哪些要素?P95、在软件过程中有哪些模型?他们各自的特点是哪些?P15—P222第1章软件工程学概述1、什么是软件危机?P177第2章可行性研究

1、可行性研究的目的是什么?P252、应从哪些方面研究可行性?P253、如何画系统流程图?P27—P304、如何画数据流图?P30—P375、了解数据字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P2578数据流图(DataFlowDiagram,DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。2.4数据流图2.4数据流图(DFD)数据存储数据源点或终点处理加工名数据流数据流名文件名实体名箭头圆或椭圆单或双杠矩形框还有一些辅助的图例:一、数据流图的图符四种基本图形符号:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*

+或互斥+4数据流图(DataFlowDiagram,DFD)是描792.4数据流图举例:储户储户1记录存款信息打印存款信息存款单存款信息存款存单3计算利息4打印利息清单存款信息利息值利息清单D1存款信息存款信息252.4数据流图举例:储户储户1记录存款打印存款存款单存款80细化后的计算机储蓄系统软件结构6细化后的计算机储蓄系统软件结构81第3章需求分析

1、需求分析的基本任务是什么?P46-P482、分析建模

2.1什么是模型?模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。

2.2数据模型(E-R)、功能模型(2.4节数据流图)、行为模型(状态转换图是行为模型的基础)3、要从哪些方面验证软件需求?P607第3章需求分析1、需求分析的基本任务是什么?P4682第4章形式化说明技术

软件工程的使用方法非形式化:用自然语言描述需求规格说明半形式化:用数据流图或实体—联系图建立模型形式化:描述系统性质的基于数学的技术1、有穷状态机P67—P722、Petri网技术P72—P758第4章形式化说明技术软件工程的使用方法非形式化:用83第5章总体设计

1、在设计过程中,总体设计一般有哪两个主要阶段组成?P812、什么模块化?模块独立性包含哪些内容?度量准则是什么?P85—P893、启发规则有哪些?P90—P924、描绘软件结构的图形工具P92-P945、面向数据流的设计方法P95—P1029第5章总体设计1、在设计过程中,总体设计一般有哪两845.2设计原理5.2.1模块化

模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。

模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。105.2设计原理5.2.1模块化模块是程序对象有名85模块化降低软件复杂度的简单证明5.2.5模块独立5.2.5模块独立“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:⑴功能即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。⑵逻辑即描述模块内部怎么做。⑶状态即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。11模块化降低软件复杂度的简单证明5.2.5模块独立5.2865.2.5模块独立性模块独立性的度量标准是两个定性准则:

耦合性用于描述模块之间联系的紧密程度。

内聚性用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。

125.2.5模块独立性模块独立性的度量标准是两个定性准则87图5.8变换型数据流图的基本模型

5.5.1概念–

变换流13图5.8变换型数据流图的基本模型5.5.1概念88图事务型数据流图的基本模型5.5.1概念–

事务流14图事务型数据流图的基本模型5.5.1概念–事89变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。不具有显著的事务特点。虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。15变换分析设计:把具有变换流特点的数据流图按预先确定的模式90第6章详细设计

1、结构程序设计中有哪几种基本控制结构?P1082、了解人机界面的设计。3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114—P1194、面向数据结构的设计方法(Jackson图)5、程序复杂度的定量度量(McCabe)16第6章详细设计1、结构程序设计中有哪几种基本控制916.1结构程序设计6.1结构程序设计图6.13种基本的控制结构176.1结构程序设计6.1结构程序设计图6.1926.1结构程序设计其他常用的控制结构图6.2其他常用的控制结构186.1结构程序设计其他常用的控制结构图6.2其936.3.1程序流程图

程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。图6.3程序流程图中使用的符号196.3.1程序流程图程序流程图是最早94N-S图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。在N-S图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。N-S图中,基本控制结构的表示符号如图6.4所示。6.3.2N-S图20N-S图又称为盒图,它是为了保证结构化程序设计而由Nas956.3.2N-S图图6.4盒图的基本符号216.3.2N-S图图6.4盒图的基本符号96图6.5PAD中基本符号顺序结构;(b)分支结构;(c)多分支CASE结构;(d)当型循环;(e);直到型循环;(f)语句标号;(g)定义6.3.3PAD图22图6.5PAD中基本符号6.3.3PAD图976.3.3PAD图图6.6使用PAD图提供的定义功能来逐步求精的例子236.3.3PAD图图6.6使用PAD图提供的定986.4面向数据结构的设计方法6.4面向数据结构的设计方法Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法246.4面向数据结构的设计方法6.4面向数据结99Jackson方法是由英国的M.A.Jackson在1975年首先提出的,他同时还提出了与这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称为Jackson图。Jackson方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中、小型系统特别有效,如商业应用中的文件、表格处理。该方法也可与其他方法结合,用于模块的详细设计。6.4面向数据结构的设计方法6.4.1Jackson图25Jackson方法是由英国的M.A.Jackson在19100图6.8三种基本结构在Jackson图中的表示符号(a)顺序结构;(b)选择结构;(c);循环结构6.4.1Jackson图(a)(c)(b)26图6.8三种基本结构在Jackson图中的表示符号61016.4面向数据结构的设计方法6.4.2改进的Jackson图图6.9改进的Jackson图276.4面向数据结构的设计方法6.4.2改进的1026.5程序复杂程度的定量度量

定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。286.5程序复杂程度的定量度量定量度量1036.5程序复杂程度的定量度量6.5.1McCabe方法McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。296.5程序复杂程度的定量度量6.5.1McCa1046.5程序复杂程度的定量度量图6.16把程序流程图影射成流图306.5程序复杂程度的定量度量图6.16把程序流程105

环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。6.5.1计算环形复杂度的方法31环形复杂度定量度量程序的逻辑复杂度。有了描绘程序106第7章实现

1、编码2、测试技术P139—P1693、调试的途径有哪些?P1684、软件可靠性和可用性的基本概念P16932第7章实现1、编码107

编码:把软件设计结果翻译成用某种程序语言书写的程序。测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。

实现编码和测试33编码:把软件设计结果翻译成用某种程序语言书写的程序。实1087.2软件测试基础7.2软件测试基础

软件测试:为发现程序中的错误而执行程序的过程。软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)测试方法(黑盒测试和白盒测试)测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)347.2软件测试基础7.2软件测试基础软件测试:为109

测试内容模块模块接口测试局部数据结构测试重要路径测试错误处理测试边界条件测试I/O参数值的个数、类型、次序、格式是否正确,I/O文件属性、操作是否正确等。数据说明是否正确、一致,变量及其初值定义是否正确等。检查“错误处理程序”本身的错误。边界条件常包括循环边界,最大最小值、控制流中等于、大于、小于的比较值等。重要路径通常是指完成模块功能的主要路径,一般是控制结构。也称模块测试(moduletesting)7.3.1单元测试重点7.3单元测试35测试内容模块模块接口测试局部数据结构测试重要路径测试错110白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。语句覆盖判定覆盖条件覆盖判定条件覆盖条件组合覆盖弱强7.6白盒测试技术7.6白盒测试技术36白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标111①语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。②

判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。③条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。④

判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。⑤

条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。白盒法常用的覆盖标准37①语句覆盖:选择足够的测试用例,使得程序中每个语句至112等价分类法边值分析法错误推测法黑盒法

不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。7.7黑盒测试技术7.7黑盒测试技术38等边错黑盒法7.7黑盒测试技术7.7黑盒测试1131、等价分类法基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例,具有“代表性”。等价类分为:有效等价类

—对于程序的规格说明是合理的、有意义的输入数据构成的集合。无效等价类

—对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。391、等价分类法基本思想:根据程序的I/O特性,将程序的定1142、边值分析法基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。分析步骤:

A、先划分等价类。

B、选择测试用例,测试等价类边界。边界选择原则:

A、按照输入值范围的边界。

B、按照输入/输出值个数的边界。

C、输出值域的边界。

D、输入/输出有序集的边界。

402、边值分析法基本思想:选择等价类的边缘值作为测试用例1153、错误推测法

错误推测法的概念:凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。

错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。413、错误推测法错误推测法的概念:凭经验或直觉推测可能的116

调试(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。

调试过程如下图所示:7.8调试7.8调试42调试(也称为纠错)作为成功测试的后果出现,也就是说,调117

无论采用什么方法,调试的目标都是寻找软件错误的原因并改正错误。通常需要把系统地分析、直觉和运气组合起来,才能实现上述目标。一般说来,有下列3种调试途径可以采用:蛮干法回溯法原因排除法7.8调试途径43无论采用什么方法,调试的目标都是寻找软件错误的原因并118

软件可靠性的定义:对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率

软件可用性的一个定义:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。7.9调试7.9软件的可靠性44软件可靠性的定义:对于软件可靠性有许多不同的定义,其中119第8章维护

1、软件维护的定义P1792、了解软件维护的特点3、软件维护过程中维护组织包括哪些人员?P1828.4决定软件的可维护性的因素有哪些?P185—P1868.5软件再工程过程45第8章维护1、软件维护的定义P1791208.1软件维护的定义8.1软件维护的定义

软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成4类。完善性维护(PerfectiveMaintenance):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。纠错性维护(CorrectiveMaintenance):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。适应性维护(AdaptiveMaintenance):要使运行的软件能适应运行环境的变动而修改软件的过程。预防性维护(PreventiveMaintenance):为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。(8.5节)468.1软件维护的定义8.1软件维护的定义软件1218.3软件维护过程图8.1维护组织478.3软件维护过程图8.1维护组织1228.4软件的可维护性软件的可维护性定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。重用:同一事物不做修改或稍加改动就在不同环境中多次重复使用。提高可维护性是支配软件工程方法学所有步骤的关键目标。488.4软件的可维护性软件的可维护性定性地定义为:维护123第9章面向对象相关内容

1、面向对象方法学概述P193—P2002、面向对象建模(涵盖第9章和第10章)3、面向对象分析的基本过程4、面向对象的设计准则49第9章面向对象相关内容1、面向对象方法学概述1249.1.1要点9.1概述

面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。对象彼此之间仅能通过传递消息互相联系。509.1.1要点9.1概述面向对象方法学的出发125

面向对象的方法学可以用下列方程来概括:OO=objects+classes+inheritance+communicationwithmessages也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。

只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。51面向对象的方法学可以用下列方程来概括:126类(Class)类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance)

,它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method)

,方法有方法名,方法体和参数。

由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。9.1.4其它概念52类(Class)由于对象是类的实例,在进行分127

实例:实际上类是建立对象时使用的“样板”,按照这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。当使用“对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用“实例”这个术语时,必然是指一个具体的对象。53实例:实际上类是建立对象时使用的“样板”128几何对象颜色位置移动(delta:矢量)选择(P:指针型):布尔型旋转(角度)图9.5对象类的描述人姓名:字符串年龄:整型改换工作改换地址文件文件名文件大小最近更新日期打印(人)里斯28绘图员人民路8号(人)张山24程序员无图9.6对象的描述对象和类的描述

对象和类一般采用“对象图”和“类图”来描述。类名属性运算

对象图

类图54几何对象图9.5对象类的描述人文件(人)(人)图9.6129消息(Message)

消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息。注意:在并发系统中,多个控制线程(ThreadofControl)并发执行,情况就复杂得多,消息可以是发出服务请求、提交数据、发布事件信息、或是传递同步控制信息。在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。55消息(Message)注意:在并发系统中,多个控制线130消息(Message)属性:姓名年龄单位职称工资状态:李立

25

计算机系讲师

900属性:调工资评职称受聘方法:调工资(计算公式)评职称(步骤、条件)属性:调工资评职称受聘李立,调工资(••••••)数据结构数据值人事处向对象发消息执行的操作方法体类:教师对象:李立抽象实例抽象实例抽象方法名(参数)图9.7对象、类和消息传递56消息(Message)属性:姓名状态:李立属性:调工资方131

方法:就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C++语言中把方法称为成员函数。

属性:就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在C++语言中把属性称为数据成员。57方法:就是对象所能执行的操作,也就是类中所定义的服务。132

继承(Inheritance)

继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新内容。继承性分:单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。基类子类A子类B图9.9继承性描述现存类定义父类(基类)新类定义子类(派生类)继承图9.8继承性58继承(Inheritance)基类子类A子类B图9133图9.8实现继承机制的原理59图9.8实现继承机制的原理134

多态性:

(Polymorphism)是指相同的操作或函数,过程作用于不同的对象上并获得不同的结果。多态即一个名字可具有多种语义。

即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。例如:“绘图”操作,作用在“椭圆”和“矩形”上,画出不同的图形。

有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。重载进一步提高了面向对象系统的灵活性和可读性。60多态性:(Polymorphism)是指相同的操作或135

面向对象建模技术所建立的3种模型,分别从3个不同侧面描述了所要开发的系统。这3种模型相互补充、相互配合,使得我们对系统的认识更加全面:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的触发)做;对象模型则定义了做事情的实体。在面向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成3种模型的集成。3种模型之间的关系61面向对象建模技术所建立的3种模型,分别从3个不同侧面描136(1)面向对象分析的三个模型面向对象建模是面向对象分析的关键。面向对象的模型包括:对象模型、动态模型和功能模型。对象模型描述了系统的静态结构;动态模型描述了系统的互交次序;功能模型描述了系统的数据变换。不同的问题,三个子模型的侧重程度不同,但是,对象模型是最基础的、最核心的、最重要的。无论解决什么问题,首先要在问题域中提取和定义出对象模型。当问题涉及用户界与过程控制时,动态模型是

温馨提示

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

评论

0/150

提交评论