优选软件工程导论复习.课件

上传人:汽*** 文档编号:592523827 上传时间:2024-09-21 格式:PPT 页数:134 大小:8.35MB
返回 下载 相关 举报
优选软件工程导论复习.课件_第1页
第1页 / 共134页
优选软件工程导论复习.课件_第2页
第2页 / 共134页
优选软件工程导论复习.课件_第3页
第3页 / 共134页
优选软件工程导论复习.课件_第4页
第4页 / 共134页
优选软件工程导论复习.课件_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《优选软件工程导论复习.课件》由会员分享,可在线阅读,更多相关《优选软件工程导论复习.课件(134页珍藏版)》请在金锄头文库上搜索。

1、软件工程导论复习软件工程导论复习第第1章章 基础知识基础知识 2024/9/2112什么是软件什么是软件软件的定义软件的定义软件由三部分组成:软件由三部分组成:程序:在运行时,能提供所希望的功能和性能的指程序:在运行时,能提供所希望的功能和性能的指令集令集数据:使程序能够正确运行的数据数据:使程序能够正确运行的数据文档:描述程序研制过程、方法及使用的文档文档:描述程序研制过程、方法及使用的文档软件处理的是信息和逻辑软件处理的是信息和逻辑软件的开发,绝不仅仅是编写程序软件的开发,绝不仅仅是编写程序软件围绕着逻辑进行软件围绕着逻辑进行软件就是一个信息交换器软件就是一个信息交换器产生、管理、获取、修

2、改、显示或传送信息产生、管理、获取、修改、显示或传送信息2024/9/213什么是软件危机什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。到的一系列严重问题。软件工程(软件工程(IEEE)1993年,提出软件工程年,提出软件工程1) 将系统化、规范化、可量化的工程原则和方法,将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。应用于软件的开发、运行和维护。2) 对对1)中方法的理论研究。中方法的理论研究。2024/9/214软件工程基本原理软件工程基本原理 (开发与维护的指导开发与维护的指导)1.

3、用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理2.坚持进行阶段评审坚持进行阶段评审3.实行严格的产品控制实行严格的产品控制4.采用现代程序设计技术采用现代程序设计技术5.结果应能清楚地审查结果应能清楚地审查6.开发小组的人员应该少而精开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性2024/9/215软件工程方法学软件工程方法学把在软件生命周期全过程中使用的一整套把在软件生命周期全过程中使用的一整套技术的集合技术的集合称为称为方法学方法学(methodology),也称范型,也称范型(paradigm)。软件工程方法学三个要素:软件工程

4、方法学三个要素:方法、工具和过程方法、工具和过程。方法是完成软件开发各项任务的技术,回答方法是完成软件开发各项任务的技术,回答“如何做如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什用什么做么做”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答各项任务步骤,回答“如何控制、协调、保证质量如何控制、协调、保证质量”。管理方法管理方法2024/9/216目前使用得最广泛的软件工程方法学。目前使用得最广泛的软件工程方法学。传统方法学也称为传统

5、方法学也称为生命周期方法学生命周期方法学或或结构化范型结构化范型。 当软件规模较大,或对软件的需求是当软件规模较大,或对软件的需求是模糊模糊的或随时间的或随时间变化变化的时的时候,使用结构化范型开发软件往往不成功;候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。此外,使用传统方法学开发出的软件,维护起来通常都很困难。结构化静态分析,面向对象动态分析结构化静态分析,面向对象动态分析世界万物是变化的世界万物是变化的传统方法学与面向对象方法学传统方法学与面向对象方法学2024/9/217传统方法的特点传统方法的特点生命周期模型生命周期模型软件过程划分为若

6、干个阶软件过程划分为若干个阶段段每个阶段有各自的任务每个阶段有各自的任务阶段之间有某种顺序性阶段之间有某种顺序性2024/9/218面向对象方法:面向对象方法:1.对象作为融合数据及在数据之上的操作行为的统一的软件对象作为融合数据及在数据之上的操作行为的统一的软件构件。构件。2.把所有对象都划分成把所有对象都划分成类类(Class)。每个类都定义了一组。每个类都定义了一组数据数据和一组和一组操作操作。3.按照父类按照父类(或称为基类或称为基类)与子类与子类(或称为派生类或称为派生类)的关系,把的关系,把若干个相关类组成一个若干个相关类组成一个层次结构层次结构的系统的系统(也称为类等级也称为类等

7、级)。在类等级中,下层派生类自动拥有上层基类中定义的数据在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为和操作,称为继承继承。4.对象彼此间仅能通过发送消息互相联系对象彼此间仅能通过发送消息互相联系封装性封装性。数据:静态数据:静态操作:动态操作:动态Everything is Object.2024/9/21大连理工大软件学院91.3 软件生命周期软件生命周期 软件生命周期由软件生命周期由软件定义、软件开发软件定义、软件开发和和运行维护运行维护三个时期组成,每个时期又可进一步划分成若干三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。个阶段,每个阶段有各自

8、的任务。1软件定义软件定义2软件开发软件开发3运行维护运行维护2024/9/211101.问题定义问题定义2.可行性研究可行性研究 3.需求分析需求分析4.概要设计概要设计5.详细设计详细设计6.编码和单元测试编码和单元测试7.综合测试综合测试8.软件维护软件维护2024/9/21111实际的瀑布模型实际的瀑布模型软件过程模型(生命周期模型)软件过程模型(生命周期模型)2024/9/21112快速原型模型快速原型模型2024/9/21113增量模型增量模型瀑布模型:力求一次性瀑布模型:力求一次性给用户完整的系统。给用户完整的系统。增量模型:逐步增加系增量模型:逐步增加系统功能。统功能。需要开放

9、的架构设计。需要开放的架构设计。2024/9/21114完整的螺旋模型完整的螺旋模型2024/9/21115喷泉模型喷泉模型迭代迭代是是OO开发过程的主要特性。开发过程的主要特性。喷泉模型是典型的面向对象生命周期模型。喷泉模型是典型的面向对象生命周期模型。“喷泉喷泉” 体现了面向对象软件开发过程体现了面向对象软件开发过程迭代和无缝迭代和无缝的特性。的特性。为避免喷泉模型的过分无序,把一个为避免喷泉模型的过分无序,把一个线性过程线性过程作为总目标。作为总目标。迭代迭代 2024/9/21116喷泉模型喷泉模型迭代:逐步求精迭代:逐步求精阶段间没有明显的界限阶段间没有明显的界限面向对象的思想保证了

10、面向对象的思想保证了各个阶段开发的一致性。各个阶段开发的一致性。迭代迭代是是OO开发过程开发过程的主要特性。的主要特性。喷泉模型是典型的面喷泉模型是典型的面向对象生命周期模型。向对象生命周期模型。“喷泉喷泉” 体现了面体现了面向对象软件开发过程向对象软件开发过程迭代和无缝迭代和无缝的特性。的特性。2024/9/21117可行性与需求分析可行性与需求分析可行性研究可行性研究不是解决问题,而是确定问题是否值得去解决不是解决问题,而是确定问题是否值得去解决较高层次的系统分析和设计过程较高层次的系统分析和设计过程需求分析需求分析发现、求精、建模、规格说明和复审的过程发现、求精、建模、规格说明和复审的过

11、程反复求精多次细化,得出对目标系统的完整、准确和反复求精多次细化,得出对目标系统的完整、准确和具体的要求。具体的要求。建立数据模型、功能模型和行为模型等三种模型。建立数据模型、功能模型和行为模型等三种模型。还要写出准确的软件需求规格说明。还要写出准确的软件需求规格说明。2024/9/21119系统流程图系统流程图系统流程图系统流程图概括描绘物理系统的传统工具概括描绘物理系统的传统工具用图形符号,以黑盒子形式描述组成系统的每用图形符号,以黑盒子形式描述组成系统的每个部件个部件程序、文档、数据库、人工过程程序、文档、数据库、人工过程2024/9/21120系统流程图例子系统流程图例子例子例子每个符

12、号用黑盒子每个符号用黑盒子形式定义了组成系形式定义了组成系统的一个部件。统的一个部件。没有部件内部的具没有部件内部的具体工作过程体工作过程箭头确定通过系统箭头确定通过系统的逻辑路径(信息的逻辑路径(信息流动路径)流动路径)2024/9/21121 数据流图数据流图数据流图数据流图(DFD) 描绘信息流和数据从输入移描绘信息流和数据从输入移动到输出的过程中所经受的变换。动到输出的过程中所经受的变换。或或或或或或或或或或或或符符符符 号号号号含含含含 义义义义数据的源点或终点数据的源点或终点数据的源点或终点数据的源点或终点数据流数据流数据流数据流数据存储数据存储数据存储数据存储加工加工加工加工(

13、(数据处理数据处理数据处理数据处理) )2024/9/21122加工中常见关系的符号表示加工中常见关系的符号表示加工中常见关系的符号表示加工中常见关系的符号表示符符符符 号号号号含含含含 义义义义由数据由数据由数据由数据A A和和和和B B共同变换为数据共同变换为数据共同变换为数据共同变换为数据C C由数据由数据由数据由数据A A变换为数据变换为数据变换为数据变换为数据B B和数据和数据和数据和数据C C由数据由数据由数据由数据A A或或或或B B,或者数据,或者数据,或者数据,或者数据A A和和和和B B共同变换为数据共同变换为数据共同变换为数据共同变换为数据C C由数据由数据由数据由数据A

14、 A变换为数据变换为数据变换为数据变换为数据B B或或或或C C,或者同时变换为数,或者同时变换为数,或者同时变换为数,或者同时变换为数据据据据B B和和和和C C由数据由数据由数据由数据A A或或或或B B其中之一变换为数据其中之一变换为数据其中之一变换为数据其中之一变换为数据C C由数据由数据由数据由数据A A变换为数据变换为数据变换为数据变换为数据B B或或或或C C其中之一其中之一其中之一其中之一T*T*T+T+TT2024/9/211232024/9/21124把处理事务的功能进一步分解后的数据流图把处理事务的功能进一步分解后的数据流图2024/9/21125数据字典数据字典数据字典

15、是关于数据的信息的集合,即对数据字典是关于数据的信息的集合,即对DFD图图中包含的元素的定义的集合。中包含的元素的定义的集合。数据字典的用途是供人查阅不了解的条目的解释。数据字典的用途是供人查阅不了解的条目的解释。提供分析设计过程中关于数据的描述。提供分析设计过程中关于数据的描述。数据字典与数据字典与DFD相辅相成。相辅相成。只有只有DFD和对应的元素的精确定义放在一起,才和对应的元素的精确定义放在一起,才能构成系统的规格说明。能构成系统的规格说明。2024/9/21126定义数据的方法定义数据的方法 意思是等价于意思是等价于(或定义为或定义为); 意思是和意思是和(即,连接两个分量即,连接两

16、个分量); 意思是或意思是或(即,从方括弧内列出的若干个分即,从方括弧内列出的若干个分量中选择一个量中选择一个),用,用“”号分开供选择的分量;号分开供选择的分量; 意思是重复意思是重复(即,重复花括弧内的分量即,重复花括弧内的分量);( )意思是可选)意思是可选(即,圆括弧里的分量可有可无即,圆括弧里的分量可有可无)。使用上限和下限进一步注释表示重复的花括弧。使用上限和下限进一步注释表示重复的花括弧。左边用上角标和下角标分别表明重复的上限和下限;左边用上角标和下角标分别表明重复的上限和下限;左侧标明重复的下限,在闭括弧的右侧标明上限。左侧标明重复的下限,在闭括弧的右侧标明上限。例如:例如:

17、A和和1A5 含义相同。含义相同。 152024/9/21127数据字典的实现数据字典的实现CASE工具工具人工卡片人工卡片2024/9/21128 实体实体关系图关系图数据模型包含三种相互关联的信息:数据模型包含三种相互关联的信息:数据数据对象对象、描述数据对象、描述数据对象属性属性及数据对象彼此及数据对象彼此间相互连接的间相互连接的关系关系。2024/9/21129某校教学管理 ER 图2024/9/21130 学生和课程之间的学生和课程之间的E-RE-R模型模型(a)(a)学生和课程之间的多对多联系学生和课程之间的多对多联系E-RE-R模型;模型;(b) (b) 将多对多联系转换为一对多

18、联系将多对多联系转换为一对多联系E-RE-R模型模型选课mn学号专业年级课名课号学时1n学号专业课名课号学时学号课号n1姓名课程学生姓名课程学分学生年级选课学分(a)(b)2024/9/21131 其他图形工具其他图形工具Warnier图图2024/9/21132其他图形工具其他图形工具(3)IPO图图2024/9/21133其他图形工具其他图形工具(2)IPO图图IPO图是输入、处理、输出图的简称图是输入、处理、输出图的简称左边框中列出有关的输入左边框中列出有关的输入中间框中列出主要的处理中间框中列出主要的处理右边框中列出产生的输出右边框中列出产生的输出处理的顺序暗示了执行的顺序处理的顺序暗

19、示了执行的顺序箭头指出数据通信的情况箭头指出数据通信的情况2024/9/21134总体设计总体设计总体设计总体设计概要设计和详细设计概要设计和详细设计。概要设计主要任务是通过仔细分析软件规格说明,概要设计主要任务是通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件适当地对软件进行功能分解,从而把软件划分为划分为模块模块,并且设计出完成预定功能的,并且设计出完成预定功能的模块结构模块结构。详细设计阶段详细地设计每个模块,确定完成每详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的个模块功能所需要的算法和数据结构算法和数据结构。2024/9/21136模块化:就是把程序划分成

20、独立命名且可模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。可以完成指定的功能满足用户的需求。可以由许多程序员分工编写不同的模块可以由许多程序员分工编写不同的模块可以使软件结构清晰,便于扩展可以使软件结构清晰,便于扩展使软件容易测试和调试,因而有助于提高软使软件容易测试和调试,因而有助于提高软件的可靠性。件的可靠性。模块大小要适中,不过分细。模块大小要适中,不过分细。2024/9/21137模块独立模块独立模块的独立程度可以由两个

21、定性标准来度量,模块的独立程度可以由两个定性标准来度量,分别称为分别称为内聚和耦合内聚和耦合。耦合:衡量不同模块彼此间互相依赖耦合:衡量不同模块彼此间互相依赖( (连接连接) )紧密紧密程度;程度;内聚:衡量一个模块内部各个元素彼此结合的紧内聚:衡量一个模块内部各个元素彼此结合的紧密程度。密程度。2024/9/21138耦合是对一个软件结构内不同模块之间互耦合是对一个软件结构内不同模块之间互连程度的度量。连程度的度量。尽可能尽可能松散耦合松散耦合2024/9/21139数据耦合:数据耦合:特征耦合:特征耦合:控制耦合:控制耦合:外部耦合:外部耦合:公共耦合:公共耦合:内容耦合:内容耦合:弱弱强

22、强尽量使用数据耦合,少用控制耦合,尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用限制公共环境耦合的范围,完全不用内容耦合。内容耦合。2024/9/21140内聚:标志一个模块内各个元素彼此结合内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的紧密程度,它是信息隐蔽和局部化概念的自然扩展。的自然扩展。简单地说,简单地说,理想内聚的模块只做一件事情理想内聚的模块只做一件事情。2024/9/21141功能内聚:功能内聚:信息内聚:信息内聚:通信内聚:通信内聚:过程内聚:过程内聚:时间内聚:时间内聚:逻辑内聚:逻辑内聚:巧合内聚:巧合内聚:强强弱弱设计时应该力

23、求做到设计时应该力求做到高内聚高内聚。2024/9/21142改进改进软件结构软件结构提高模块独立性提高模块独立性模块模块规模规模应该适中应该适中深度、宽度、扇出和扇入深度、宽度、扇出和扇入都应适当都应适当模块的模块的作用域作用域应该在应该在控制域控制域之内之内力争降低力争降低模块接口模块接口的复杂程度的复杂程度设计设计单入口单出口单入口单出口的模块的模块模块功能模块功能应该可以预测应该可以预测2024/9/21143描绘软件结构的图形工具描绘软件结构的图形工具层次图和层次图和HIPO图图结构图结构图2024/9/21144正文加工系统的层次图2024/9/21145正文加工系统的H图2024

24、/9/21146结构图的例子产生最佳解的一般结构2024/9/21147软件结构设计方法软件结构设计方法面向数据流的设计方法面向数据流的设计方法的目标是给出设计的目标是给出设计软软件结构件结构的一个系统化的途径。的一个系统化的途径。利用数据流图中的利用数据流图中的“映射映射“,把数据流图变,把数据流图变换成软件结构。换成软件结构。2024/9/21148变换流和事务流2024/9/21149设计步骤设计步骤1.复查基本系统模型。复查基本系统模型。2.复查并精化数据流图。复查并精化数据流图。3.确定数据流图具有变换特性还是事务特性。确定数据流图具有变换特性还是事务特性。4.确定输入流和输出流的边

25、界,从而孤立出变换确定输入流和输出流的边界,从而孤立出变换中心。中心。5.完成完成“第一级分解第一级分解”。6.完成完成“第二级分解第二级分解”。7.使用设计度量和启发规则对第一次分割得到的使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。软件结构进一步精化。2024/9/21150数字仪表数字仪表板系统的板系统的数据流图数据流图精化数据流图精化数据流图数据流图具有数据流图具有变换特性还是变换特性还是事务特性事务特性2024/9/21151具有边具有边界的数界的数据流图据流图确定输入流和输确定输入流和输出流的边界,从出流的边界,从而孤立出变换中而孤立出变换中心心2024/9/2115

26、2第一级分解的方法2024/9/21153数字仪表板系统的第一级分解完成完成“第一级分解第一级分解”2024/9/21154第二级分解的方法2024/9/21155未经精化的输入结构未经精化的输入结构完成完成“第二级分解第二级分解”2024/9/21156精化后的数字仪表板系统的软件结构软件结构进一步精化软件结构进一步精化2024/9/21157事务分析的映射方法事务分析的映射方法2024/9/21158详细设计详细设计详细设计阶段主要完成界面和程序过程设计详细设计阶段主要完成界面和程序过程设计过程设计过程设计应该在数据设计、体系结构设计和接应该在数据设计、体系结构设计和接口设计完成之后进行口

27、设计完成之后进行程序员将根据程序员将根据过程设计过程设计写出实际的程序代码。写出实际的程序代码。2024/9/21160结构程序设计结构程序设计的经典定义如下所述:的经典定义如下所述:如果一个程序的代码块仅仅通过顺序、选择和循如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每个代码块只环这三种控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化有一个入口和一个出口,则称这个程序是结构化的。的。2024/9/21161过程设计的工具过程设计的工具程序流程图程序流程图2024/9/21162盒图盒图(N-S图图)2024/9/21163PAD图图20

28、24/9/21164判定表判定表2024/9/21165用判定树表示计算行李费的算法判定树判定树2024/9/21166伪码伪码2024/9/21167测试测试2024/9/21169回归测试回归测试 ( (已执行过的测试用例的子集已执行过的测试用例的子集) )包括下述三种不同的测试用例。包括下述三种不同的测试用例。检测软件全部功能的代表性测试用例。检测软件全部功能的代表性测试用例。专门针对可能受修改影响的软件功能的附加专门针对可能受修改影响的软件功能的附加测试。测试。针对被修改过的软件成分的测试。针对被修改过的软件成分的测试。2024/9/21170白盒测试技术白盒测试技术逻辑覆盖逻辑覆盖是

29、设计白盒测试方案的技术。设计是设计白盒测试方案的技术。设计测试方案是测试阶段的关键技术问题。测试方案是测试阶段的关键技术问题。2024/9/211711.语句覆盖语句覆盖为暴露程序的错误,至少每个语句应该执行为暴露程序的错误,至少每个语句应该执行一次。一次。含义是,选择足够多的测试数据,使被测程含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。序中每个语句至少执行一次。2024/9/211722.判定覆盖判定覆盖又叫分支覆盖又叫分支覆盖不仅每个语句必须至少执行一次,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执而且每个判定的每种可能的结果都应该至少执行一次

30、,也就是每个判定的每个分支都至少执行一次,也就是每个判定的每个分支都至少执行一次。行一次。3.条件覆盖条件覆盖不仅每个语句至少执行一次,而且判定表不仅每个语句至少执行一次,而且判定表达式中每个条件都取到各达式中每个条件都取到各种可能的结果。种可能的结果。2024/9/211734.判定判定/条件覆盖条件覆盖判定覆盖不一定包含条件覆盖,条件覆盖也不一定判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,判定包含判定覆盖,判定/条件覆盖能同时满足这两种覆条件覆盖能同时满足这两种覆盖标准。盖标准。选取足够多的测试数据,使得判定表达式中的每个选取足够多的测试数据,使得判定表达式中的每个条件都取到

31、各种可能的值,而且每个判定表达式也条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。都取到各种可能的结果。5.条件组合覆盖条件组合覆盖要求选取足够多的测试数据,使每个判定表达式要求选取足够多的测试数据,使每个判定表达式中中条件的各种可能组合都至少出现一次。条件的各种可能组合都至少出现一次。2024/9/21174路径测试路径测试Tom McCabe提出的一种白盒测试技术。提出的一种白盒测试技术。首先计算过程设计结果的逻辑复杂度,并以该首先计算过程设计结果的逻辑复杂度,并以该复杂度为指南定义执行路径的基本集合,从该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以

32、保证程序中每条基本集合导出的测试用例可以保证程序中每条语句至少执行一次,而且每个条件在执行时都语句至少执行一次,而且每个条件在执行时都将分别取将分别取true(真真)和和false(假假)值。值。2024/9/21175求平均值过程的流图使用基本路径测试技术设计使用基本路径测试技术设计测试用例步骤如下。测试用例步骤如下。1.根据过程设计结果画根据过程设计结果画出相应的流图出相应的流图2024/9/21176PROCEDURE average;/*这个过程计算不超过这个过程计算不超过100个在规定值域内的有效个在规定值域内的有效数字的平均值;同时计算有效数字的总和及个数字的平均值;同时计算有效数

33、字的总和及个数。数。*/INTERFACE RETURNS average, total_input, total_valid;INTERFACE ACCEPTS value, minimum, maximum;TYPE value 1.100 IS SCALAR ARRAY;TYPE average, total_input, total_valid, minimum, maximum, sum IS SCALAR;2024/9/21177TYPE i IS INTEGER;1: i1; total_inputtotal_valid0; sum0;2: DO WHILE valuei -99

34、9 3: AND total_input 1004: increment total_input by 1;5: IF valuei = minimum6: AND valuei 011: THEN average = sum/total_valid;12: ELSE average = -999;13: END IFEND average2024/9/211792.计算流图的计算流图的环形复杂度环形复杂度环形复杂度定量度量程序的逻辑复杂性。三环形复杂度定量度量程序的逻辑复杂性。三种方法来计算环形复杂度。种方法来计算环形复杂度。流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。流图流

35、图G的环形复杂度的环形复杂度V(G)E-N+2,其中,其中E是流是流图中边的条数,图中边的条数,N是流图中节点数。是流图中节点数。流图流图G的环形复杂度的环形复杂度V(G)P+1,其中,其中P是流图中是流图中判定节点的数目。判定节点的数目。使用上述任何一种方法,都可以计算出流图使用上述任何一种方法,都可以计算出流图的环形复杂度为的环形复杂度为6。2024/9/211803.确定确定线性独立路径线性独立路径的基本集合的基本集合对于所描述的求平均值过程来说,由于环形复杂度为对于所描述的求平均值过程来说,由于环形复杂度为6,因此,因此共有共有6条独立路径。例如,下面列出了条独立路径。例如,下面列出了

36、6条独立路径:条独立路径:路径路径1:1-2-10-11-13路径路径2:1-2-10-12-13路径路径3:1-2-3-10-11-13路径路径4:1-2-3-4-5-8-9-2-路径路径5:1-2-3-4-5-6-8-9-2-路径路径6:1-2-3-4-5-6-7-8-9-2-2024/9/211814.设计可强制执行基本集合中每条路径测试用例设计可强制执行基本集合中每条路径测试用例选取数据使得在测试每条路径时都适当设置好选取数据使得在测试每条路径时都适当设置好了各个判定节点的条件。了各个判定节点的条件。路径路径1的测试用例:的测试用例:valuek有效输入值,其中有效输入值,其中ki (

37、i的定义在下的定义在下)valuei-999,其中,其中2i100预期结果:基于预期结果:基于k的正确平均值和总数的正确平均值和总数注意,路径注意,路径1无法独立测试,必须作为路径无法独立测试,必须作为路径4、5和和6的的一部分来测试。一部分来测试。路径路径2的测试用例:的测试用例:value1 -999预期结果:预期结果:average-999,其他都保持初始值,其他都保持初始值2024/9/21182路径路径4的测试用例:的测试用例:valuei有效输入值,其中有效输入值,其中i100valuek minimum,其中,其中ki预期结果:其于预期结果:其于k的正确平均值和总数的正确平均值和

38、总数路径路径5的测试用例:的测试用例:valuei有效输入值,其中有效输入值,其中i100valuekmaximum,其中,其中ki预期结果:其于预期结果:其于k的正确平均值和总数的正确平均值和总数路径路径6的测试用例:的测试用例:valuei=有效输入值,其中有效输入值,其中i100预期结果:正确的平均值和总数预期结果:正确的平均值和总数2024/9/21183黑盒测试技术黑盒测试技术黑盒测试着重测试软件的黑盒测试着重测试软件的功能需求功能需求,让软件工程,让软件工程师设计出能充分检查程序所有功能需求的输入条师设计出能充分检查程序所有功能需求的输入条件集。件集。黑盒测试并不能取代白盒测试技术

39、,它是与白盒黑盒测试并不能取代白盒测试技术,它是与白盒测试互补的测试互补的方法,它很可能发现白盒测试不易发方法,它很可能发现白盒测试不易发现的其他不同类型的错误。现的其他不同类型的错误。2024/9/21184黑盒测试力图发现下述类型的错误:黑盒测试力图发现下述类型的错误: 功能不功能不正确或遗漏了功能;正确或遗漏了功能; 界面错误;界面错误; 数据结构数据结构错误或外部数据库访问错误;错误或外部数据库访问错误; 性能错误;性能错误; 初始化和终止错误。初始化和终止错误。白盒测试在测试过程的早期阶段进行,而黑盒测白盒测试在测试过程的早期阶段进行,而黑盒测试主要用于测试过程的后期。试主要用于测试

40、过程的后期。黑盒测试故意黑盒测试故意不考虑程序的控制结构,而把注意不考虑程序的控制结构,而把注意力集中于力集中于信息域信息域。2024/9/21185等价划分等价划分:确定确定输入数据的有效等价类和无效输入数据的有效等价类和无效等价类等价类。边界值分析边界值分析错误推测错误推测2024/9/21186面向对象基础面向对象基础什么是对象技术什么是对象技术 基于对象概念的软件开发方法基于对象概念的软件开发方法 对象包含有数据及处理数据的功能函数对象包含有数据及处理数据的功能函数 在分析、设计和实现的整个过程中只使用在分析、设计和实现的整个过程中只使用一个概念对象的开发方法一个概念对象的开发方法 能

41、够解决软件危机中大多数问题的方法能够解决软件危机中大多数问题的方法对象对象 = = 数据数据 + + 功能功能2024/9/21188对象技术的优势对象技术的优势稳定稳定: 较小的需求变化不会导致系统结构较小的需求变化不会导致系统结构大的改变大的改变举例:某公司的销售处理系统举例:某公司的销售处理系统定单定单合同合同出费出费2024/9/21189对象技术的优势对象技术的优势 稳定稳定:数据和功能都打包在一起,从而改善软件的数据和功能都打包在一起,从而改善软件的再重用性再重用性软件重用能提高质量,减少由于编制新的系统代软件重用能提高质量,减少由于编制新的系统代码而产生的成本码而产生的成本Fil

42、eMgrMacroEditorMathUtilitiesTextEditorPrintUtilitiesFormatEditorMenusStringUtilitiesSpreadsheetWord ProcessorReusable-Component Repository2024/9/21190对象技术的优势对象技术的优势面向对象的模型更加贴切地反映了现实世面向对象的模型更加贴切地反映了现实世界界 更加准确地描述公共数据和过程更加准确地描述公共数据和过程 易于理解,尤其对于使用者易于理解,尤其对于使用者现实世界现实世界Laser PrinterExternal DriveComputer对

43、象图对象图2024/9/21191对象技术的优势对象技术的优势 面向对象的方法支持大规模开发面向对象的方法支持大规模开发 可以严格定义各个组件之间的交互可以严格定义各个组件之间的交互 减少内部的依赖关系减少内部的依赖关系 减少集成的问题减少集成的问题 支持并行开发支持并行开发2024/9/21192对象技术的优势对象技术的优势帮助开发多层结构帮助开发多层结构 Equipment and Customer specific CodeProcesses and other application code Major abstractions, classes, etc. MechanismsH/

44、W specific code, O/S specific code general-purpose code12345ApplicationSpecificApplicationIndependentLess ReuseMore Reuse2024/9/21193面向对象概念面向对象概念Object 对象对象Class 类类Instance 实例实例State 状态状态Behavior 行为行为Attribute 属性属性Operation 操作操作 (Method方法方法)Inheritance 继承继承Subclasses 子类子类Superclasses 父类父类Generalizat

45、ion 普遍化普遍化Polymorphism 多态多态2024/9/21194面向对象概念面向对象概念Abstraction 抽象抽象Encapsulation 封装封装Association 关联关联Role 角色角色Multiplicity 多重性多重性Aggregation 聚合聚合Dependency association 依赖依赖Package 包包Use Case 用例用例Scenario 脚本脚本Actor2024/9/21195什么是对象什么是对象一个对象代表了一个现实的或虚构的实体一个对象代表了一个现实的或虚构的实体自然实体自然实体概念实体概念实体软件实体软件实体化学过程化

46、学过程连接显示连接显示2024/9/21196对象的属性对象的属性 对象是应用中具有明显边界和含义的概念、对象是应用中具有明显边界和含义的概念、抽象或事物抽象或事物 一个对象有三个重要属性一个对象有三个重要属性: : 状态状态 行为行为 标识标识 术语术语“实例实例”是是“对象对象”的同义词的同义词2024/9/21197对象的状态对象的状态 一个对象的状态是它反映于现实世界的一一个对象的状态是它反映于现实世界的一系列属性:系列属性: 参数的数值参数的数值 ( (也就是也就是, ,与对象有关系的数据与对象有关系的数据) ) 它与其它对象的关系它与其它对象的关系 任一时刻的历史状态任一时刻的历史

47、状态可能的状态:可能的状态:停泊停泊 运营运营着陆着陆 终止终止班机班机 747 7472024/9/21198对象的行为对象的行为定义当其它对象发出请求时,该对象如何定义当其它对象发出请求时,该对象如何反应反应由为对象定义的一系列操作决定由为对象定义的一系列操作决定班机班机 747核对出发时间核对出发时间(返回返回 9:27)机票代理机票代理2024/9/21199对象的标识对象的标识 每一个对象都有一个唯一的标识每一个对象都有一个唯一的标识, , 即使其即使其状态有可能与其它对象一样状态有可能与其它对象一样班机班机 747 on 11/10班机班机 747 on 11/11班机班机 747

48、 on 11/122024/9/211100什么是类(什么是类(Class) 类是一组具有相同结构和行为的对象的集类是一组具有相同结构和行为的对象的集合合 共同的结构通过属性表现出来共同的结构通过属性表现出来 (i.e. 数据数据) 共同的行为通过操作表现出来共同的行为通过操作表现出来 (i.e. 功能功能)班机班机 747结构结构班机号班机号日期日期分配的班分配的班机机起点起点终点终点状态状态行为行为装载设备装载设备起飞起飞延迟延迟取消取消终止终止2024/9/211101类的示例类的示例ClassEmployeeStructureNameAddressPositionSalaryStart

49、 DateEnd DateBehaviorHireFirePromoteIncrease SalaryRetire2024/9/211102类图:用来表达类类图:用来表达类 类图是一种主要的图形化对象表示法类图是一种主要的图形化对象表示法 类图显示类及类之间的关系类图显示类及类之间的关系 一个类通过在类图标中的类名(唯一的)来代一个类通过在类图标中的类名(唯一的)来代表表班机班机2024/9/211103属性属性 属性是类的特征或特性属性是类的特征或特性 属性的值是某一特定对象的属性值属性的值是某一特定对象的属性值 在类中属性名必须是唯一的在类中属性名必须是唯一的 每一个类的实例都有为这个类定

50、义的所有每一个类的实例都有为这个类定义的所有属性的值属性的值 例如:例如:银行帐户类属性银行帐户类属性帐号帐号银行名称银行名称拥有者拥有者金额金额Mary的银行帐户属性值的银行帐户属性值12345678First National BankMary Smith$1024.482024/9/211104操作操作 对象的行为是由为此对象定义的一系列操对象的行为是由为此对象定义的一系列操作决定的作决定的 操作访问或修改对象的属性值操作访问或修改对象的属性值 一个类可能同时存在多个实例,也可能在一个类可能同时存在多个实例,也可能在某一时刻没有实例某一时刻没有实例 一个类的所有实例都可以使用在这个类中一

51、个类的所有实例都可以使用在这个类中定义的操作定义的操作2024/9/211105属性和操作的标记法属性和操作的标记法 在类的图标中描述属性和操作在类的图标中描述属性和操作 通常只显示最重要的属性和操作,避免图通常只显示最重要的属性和操作,避免图形混乱形混乱 属性显示在操作上方,操作的名字后跟有属性显示在操作上方,操作的名字后跟有()()班机班机flightNumberdatedeparturetimestatusrelease( )takeOff( )属性属性操作操作2024/9/211106类是生成对象的模板类是生成对象的模板类是生成对象的模板类是生成对象的模板类的定义中包含有产生和删除对象

52、的操作属性类的定义中包含有产生和删除对象的操作属性显示在操作上方,操作的名字后跟有显示在操作上方,操作的名字后跟有()一个类定义了使用哪种数据表示法来描述一个类定义了使用哪种数据表示法来描述属性属性每一个实例都采用有属性值的数据表示法每一个实例都采用有属性值的数据表示法一个类通过一系列操作来定义行为一个类通过一系列操作来定义行为这种操作能在每个实例中激活这种操作能在每个实例中激活班机班机Flight 187Flight 121Flight 7472024/9/211107类和对象的关系类和对象的关系 每一个对象都是某一个类的实例每一个对象都是某一个类的实例 每一个类在某一时刻都有零个或更多的实

53、每一个类在某一时刻都有零个或更多的实 类是静态的类是静态的; ; 它们的存在、语义和关系在它们的存在、语义和关系在序执行前就已经定义好了序执行前就已经定义好了 对象是动态的对象是动态的; ; 它们在程序执行时可以被它们在程序执行时可以被建和删除建和删除2024/9/211108关系关系 所有的系统都包含了大量的类和对象所有的系统都包含了大量的类和对象 对象通过与其它对象的协作完成系统的功对象通过与其它对象的协作完成系统的功能行为协作通过关系来实现能行为协作通过关系来实现 几种重要的关系类型几种重要的关系类型: : 关联关联 聚合聚合 依赖依赖继承继承2024/9/211109示例示例: : 关

54、联关联 在一个工资系统中有下面两个类在一个工资系统中有下面两个类: :关联表示了双向的关系,例如关联表示了双向的关系,例如: :给出一个给出一个PersonPerson的实例的实例, , 我们能够知道他属于我们能够知道他属于哪家公司哪家公司给出一个给出一个 CompanyCompany的实例的实例, , 我们能够知道在其中我们能够知道在其中工作的所有人工作的所有人PersonCompany2024/9/211110关联的多重性关联的多重性 多重性是指多个实例参与一个关联多重性是指多个实例参与一个关联 多重性通过位于关联线某一端的一个表达多重性通过位于关联线某一端的一个表达式或符号来表示式或符号

55、来表示 对于每个关联关系对于每个关联关系, 需要做出两个多重性需要做出两个多重性的决定的决定 例如例如, 在公司和职员的关联中在公司和职员的关联中 每个公司可以雇用多个职员每个公司可以雇用多个职员 每个职员只有一个从属公司每个职员只有一个从属公司2024/9/211111示例:关联的多重性示例:关联的多重性 多重性决定可以揭示建模过程中隐藏的问多重性决定可以揭示建模过程中隐藏的问题题 职员会不会失业职员会不会失业? ? 公司能不能没有职员公司能不能没有职员? ? 一个职员能不能有两份工作一个职员能不能有两份工作? ?职员职员职员职员雇主雇主公司公司1.*1.*1 12024/9/211112常

56、用的多重性表示法常用的多重性表示法 多重性能解决两个问题多重性能解决两个问题 关联是强制的关联是强制的 (不包含零个不包含零个) 或随意的或随意的 (包含零包含零个个)? 一个实例可以连接的其它实例的最大数目一个实例可以连接的其它实例的最大数目? 常用的多重性表示法常用的多重性表示法:1只有一个只有一个0.* 零或更多零或更多1.* 一个或更多一个或更多0.1 零或一个零或一个*零或更多零或更多3.7 指定的范围指定的范围 (3 or 4 or 5 or 6 or 7)1.3,7结合使用结合使用 (1 or 2 or 3 or 7)2024/9/211113自反关联自反关联自反关联指同一个类中

57、的对象的关系自反关联指同一个类中的对象的关系表示同一个类中多个对象的协作表示同一个类中多个对象的协作A course may have many pre-requisitesA course may be a pre-requisite for many other coursesPre-requisiteCourse0.*0.*2024/9/211114聚合(包含)聚合(包含) 聚合是一种特殊的关联,体现整体和部分聚合是一种特殊的关联,体现整体和部分的关系的关系 聚合是一种聚合是一种 “has-a” 或包含的关系或包含的关系 同样可以使用多重性同样可以使用多重性CompanyDepartme

58、nt1.*12024/9/211115依依 赖赖 依赖表示一个对象需要其它对象为其提供依赖表示一个对象需要其它对象为其提供服务服务 又可称为又可称为client-supplier 关系关系 client 使用使用supplier提供的服务提供的服务 supplier 不需要了解不需要了解 client(s) 单向关系单向关系ControllerDisplay Itemcontrols2024/9/211116继承继承 继承表示一个类从其它类中获得结构和行继承表示一个类从其它类中获得结构和行为(子类为(子类/父类)父类) 又名普遍化又名普遍化 交通工具是一个父类交通工具是一个父类 地面交通工具和

59、空中交通工具是子类地面交通工具和空中交通工具是子类VehicleGroundVehicleAirVehicleThe arrow points toward the superclass2024/9/211117继承继承 继承表示子类从父类继承时抽象的层次继承表示子类从父类继承时抽象的层次 单继承:子类只从一个父类继承单继承:子类只从一个父类继承 多继承:子类从多于一个的父类继承多继承:子类从多于一个的父类继承 继承通常被称为继承通常被称为 “is-a” 或或“kind-of” 一个子类的实例也一个子类的实例也 “is a” 父类的实例父类的实例 一个子类的实例是一个子类的实例是 “kind-

60、of” 父类父类2024/9/211118多层次多层次A Car is a kind of GroundVehicle which is a kind of VehicleVehicle and AirVehicle areancestors of AirplaneAirVehicle and Airplane are descendants of VehicleVehicleGroundVehicleAirVehicleCarTruckAirplaneHelicopter2024/9/211119继承的内容继承的内容属性属性操作操作关系关系约束约束继承平衡类之间的共同之处继承平衡类之间的共同

61、之处2024/9/211120继承属性继承属性属性在继承结构的最高一层定义属性在继承结构的最高一层定义 所有子类的实例能够继承这些属性所有子类的实例能够继承这些属性 每个子类可以增加或重新定义继承的属性每个子类可以增加或重新定义继承的属性; 但在修改是要加倍注意但在修改是要加倍注意GroundVehiclelicenseNumberweightCarTrucktonnageA truck has three attributes:licenseNumberweighttonnage2024/9/211121继承操作继承操作属性在继承结构的最高一层定义属性在继承结构的最高一层定义所有子类的实例能

62、够继承这些操作所有子类的实例能够继承这些操作每个子类可以增加或重新定义继承的属性每个子类可以增加或重新定义继承的属性GroundVehiclelicenseNumberweightregister( )CarTrucktonnagecalculateTax( )A truck has three attributes:licenseNumberweighttonnageand two operations:registercalculateTax2024/9/211122继承关系继承关系 关系也可以继承关系也可以继承 每个子类都可以分享继承的关系每个子类都可以分享继承的关系GroundVehi

63、clelicenseNumberweightregister( )A truck has an ownerCarTrucktonnagecalculateTax( )OwnerPerson1.*and a car has an owner12024/9/211123对象模型化技术对象模型化技术OMT对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型。这个模型化的过程是一个迭代过程。2024/9/211124基于三个模型的分析过程基于三个模型的分析过程功功能能模模型型着着重重于于系系统统内内部部数数据据的的传送和处理。传送和处理。 功能模型定义“做什么” 动态模型定

64、义“何时做” 对象模型定义“对谁做”。2024/9/211125UML的图的图1.用例图用例图(use-case diagram)用例是对系统提供的功能用例是对系统提供的功能(即系统的具体用法即系统的具体用法)的描述。的描述。用例图从用例图从用户用户的角度描述系统功能,并指出各个功能的的角度描述系统功能,并指出各个功能的操作者。操作者。用例图定义了系统的用例图定义了系统的功能需求功能需求。2024/9/2111262.静态图静态图(static diagram)这类图描述系统的静态结构,属于这类图的有类图这类图描述系统的静态结构,属于这类图的有类图(class diagram)和对象图和对象图

65、(object diagram)。类图不仅定义系统中的类,表示类与类之间的关系类图不仅定义系统中的类,表示类与类之间的关系(例例如,关联、依赖、泛化和细化等关系如,关联、依赖、泛化和细化等关系),也表示类的内,也表示类的内部结构部结构(类的属性和操作类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命期内类图描述的是一种静态关系,在系统的整个生命期内都是有效的。都是有效的。2024/9/211127对象图是类图的实例,它使用几乎与类图完全相同的图示对象图是类图的实例,它使用几乎与类图完全相同的图示符号。两者之间的差别在于,对象图表示的是类的多个对符号。两者之间的差别在于,对象图表示的是

66、类的多个对象实例,而不是实际的类。象实例,而不是实际的类。由于对象有生命周期,因此对象图只能在系统的某个时间由于对象有生命周期,因此对象图只能在系统的某个时间段内存在。段内存在。一般说来,对象图没有类图重要,它主要用来帮助对类图一般说来,对象图没有类图重要,它主要用来帮助对类图的理解,也可用在的理解,也可用在协作图协作图中,表示一组对象之间的动态协中,表示一组对象之间的动态协作关系。作关系。2024/9/2111283.行为图行为图(behavior diagram)这类图描述系统的动态行为和组成系统的对象间的交互这类图描述系统的动态行为和组成系统的对象间的交互关系,包括关系,包括状态图状态图

67、(state diagram)和和活动图活动图(activity diagram)两种图形。两种图形。状态图描述类的对象可能具有的所有状态,以及引起状状态图描述类的对象可能具有的所有状态,以及引起状态变化的事件,状态变化称作状态转换。通常,状态图态变化的事件,状态变化称作状态转换。通常,状态图是对类图的补充。是对类图的补充。2024/9/211129实际使用时,并不需要为每个类都画状态图,仅需要实际使用时,并不需要为每个类都画状态图,仅需要为那些有多个状态,且其行为在不同状态有所不同的为那些有多个状态,且其行为在不同状态有所不同的类画状态图。类画状态图。活动图描述为满足用例要求而进行的动作以及

68、动作间活动图描述为满足用例要求而进行的动作以及动作间的关系。的关系。活动图是状态图的一个变种,它是另一种描述交互的活动图是状态图的一个变种,它是另一种描述交互的方法。方法。2024/9/2111304.交互图交互图(interactive diagram)这类图描述对象间的交互关系,包括这类图描述对象间的交互关系,包括顺序图顺序图(sequence diagram)和和协作图协作图(collaboration diagram)两种图形。两种图形。顺序图显示若干个对象间的动态协作关系,它强调对顺序图显示若干个对象间的动态协作关系,它强调对象之间发送消息的先后次序,描述对象之间的交互过象之间发送消

69、息的先后次序,描述对象之间的交互过程。程。协作图与顺序图类似,也描述对象间的动态协作关系。协作图与顺序图类似,也描述对象间的动态协作关系。除了显示对象间发送的消息之外,协作图还显示对象除了显示对象间发送的消息之外,协作图还显示对象及它们之间的关系及它们之间的关系(称为上下文相关称为上下文相关)。2024/9/211131由于顺序图和协作图都描述对象间的交互关系,所以由于顺序图和协作图都描述对象间的交互关系,所以建模者可以选择其中一种表示对象间的协作关系:如建模者可以选择其中一种表示对象间的协作关系:如果需要强调时间和顺序,最好选用顺序图;如果需要果需要强调时间和顺序,最好选用顺序图;如果需要强

70、调上下文相关,最好选择协作图。强调上下文相关,最好选择协作图。2024/9/2111325.实现图实现图(implementation diagram)这类图提供关于系统实现方面的信息,这类图提供关于系统实现方面的信息,构件图构件图(component diagram)和和配置图配置图(deployment diagram)属于这类图。属于这类图。构件图描述代码构件的物理结构及各个构件之间的构件图描述代码构件的物理结构及各个构件之间的依赖关系。构件可能是源代码、二进制文件或可执依赖关系。构件可能是源代码、二进制文件或可执行文件。使用构件图有助于分析和理解构件之间的行文件。使用构件图有助于分析和理解构件之间的相互影响。相互影响。2024/9/211133配置图定义系统中软件和硬件的物理体系结构。通常,配置图定义系统中软件和硬件的物理体系结构。通常,配置图中显示实际的计算机和设备配置图中显示实际的计算机和设备(用节点表示用节点表示),以及,以及各个节点之间的连接关系,也可以显示连接的类型及各个节点之间的连接关系,也可以显示连接的类型及构件之间的依赖关系。构件之间的依赖关系。在节点内部显示可执行的构件和对象,以清晰地表示在节点内部显示可执行的构件和对象,以清晰地表示出哪个软件单元运行在哪个节点上。出哪个软件单元运行在哪个节点上。2024/9/211134

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号