




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.1 软件危机软件危机的表现软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。1 )成本难以估计、成本高。2)软件开发进度估计不准确,项目延期比比皆是。3)软件质量得不到保证(功能和性能)。4)用户对“已完成的”软件系统不满意的现象经常发生。5)维护非常困难(多样性、复杂性、副作用)。6)软件通常没有适当的文档。7)软件产品供不应求,跟不上计算机普及速度。产生软件危机的原因( 1) 与软件本身的特点有关(逻辑复杂,成本高, 风险大,难于维护)( 2)与软件开发与维护的方法不正确有关:软件?程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使
2、用和维护、废弃要经历一个漫长的生命周期)各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目)1.2 软件工程定义软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。软件工程的特性:1. 软件工程关注于大型程序的构造 (传统的程序设计技术和工具是支持小型程序设计的)2. 软件工程的中心课题是控制复杂性(问题分解)3 .软件经常变化(考虑将来要发生的变化)4 .开发软件的效率非常重要(寻求更好、更有效的工具)5 .和谐地
3、合作是开发软件的关键(运用标准和规程)6 .软件必须有效地支持它的用户(软件要服务于用户)7 .在软件工程领域中通常是由具有一种文化背景的人替具有另 一种文化背景的人创造产品软件工程的7条基本原理1 .用分阶段的生命周期计划严格管理2 .坚持进行阶段评审3 .实行严格的产品控制4 .采用现代程序设计技术5 .结果应能清楚地审查6 .开发小组的人员应该少而精7 .承认不断改进软件工程实践的必要性软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合 称为方法学(methodology),也称为范型(paradigm)。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对 象方
4、法学。软件工程方法学包含3个要素:方法、工具和过程。1.3软件生命周期每阶段的基本任务:1 .问题定义2 .可行性研究3 .需求分析4 .总体设计5 .详细设计6 .编码和单元测试7 .综合测试8 .软件维护1.4 软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常包括四种基本的过程活动:(1 )软件规格说明;(2 )软件开发;(3 )软件确认;(4 )软件演进软件过程模型:软件开发程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。几种典型的模型:瀑布模型、快速原型模型、增量
5、模型、螺旋模型、喷泉模型、RUP等。软件过程模型的选择基于项目和应用的性质、采用的方法工具以及需要的控制和交付的产品。瀑布模型(Waterfall Model ) :传统瀑布模型:规定了各项软件工程活动,包括:制定开发计划、需求分析和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。特点:1 、阶段间具有顺序性和依赖性。2、推迟实现。3、质量保证。优点 :1、 可强迫开发人员采用规范的方法(例如, 结构化技术);严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。2、瀑布模型的成功在很大程度
6、上是由于它基本上是一种文档驱动的模型。3、瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发!问题:1、不适应需求经常发生变更的环境:在项目的开发过程中,变更可能会引起混乱。所以,有人形象地把采用线性模型进行商业软件工程称之为“在沙滩上盖楼房”。 (适合于用户需求明确、完整、无重大变化的软件项目开发)2、线性顺序模型每一步的工作都必须以前一阶段的输出为输入,这种特征会导致工作中发生“阻塞”状态。3、由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。4、是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。在可
7、运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。快速原型模型(Rapid Prototype Model )步骤: 第一步进行试验开发,得出产品的“原型”,其目的在于弄清软件需求并探索可行性;第二步在原型的基础上开发出较为满意的软件产品。该模型克服了瀑布模型的部分缺陷,减少了软件需求不明确给开发工作带来的风险。前提 :(1)是用户必须积极参与原型的建造,建造原型仅仅是为了定义需求,之后就必须被全部抛弃(至少是部分抛弃),实际的软件必须在充分考虑到软件质量和可维护性之后才被开发。从这个意义上说,原型模型又往往被称为“抛弃原型模型”。(2)是必须有快速开发工具可供使用。增量模型
8、(Incremental Model)是一种渐进地开发逐步完善的软件版本的模型,该模型一般首先开发产品的基本部,然后再逐步开发产品的附加部分。整个软件产品被分解成许多个增量构件。每个构件由多个相互作用的功能模块构成,并能够完成特定的功能。该增量模型表明:必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计,因此风险较小。优点: 是十分有用的一种模型。在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确有显著的效果;缩短产品提交时间都能够起到良好的作用。困难:1、在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外, 必须把软件的体系
9、结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。2、开发人员既要把软件系统看作整体。又要看成可独立的构件,因此相互矛盾。除非开发人员有足够的技术能力协调好。3、多个构件并行开发,具有无法集成的风险螺旋模型(Spiral Model)优点:对于高风险的大型软件,螺旋模型是一个理想的开发方法。缺点:风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大。适合场合:主要适用于内部开发的大规模软件项目,随着过程的进展演化, 开发者和用户能够更好地识别和对待每一个演化级别上的风险。只有内部开发的项目,才能在风险过大时方便地中止项目。
10、如果进行风险分析的费用接近整个项目的经费预算,则风险 分析是不可行的。喷泉模型(Fountain Model)特点: 喷泉模型的各阶段均采用了 “对象” 这一统一范式,整个过程看起来像喷泉从喷出到落下再喷出的周而复始过程产生的光滑水柱,体现了软件创建所固有的迭代和无间隙的特征。适合场合:喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。Rational 统一软件开发过程RUP软件开发生命周期是一个二维的软件开发模型。横轴代 表时间,体现生命周期特征;纵轴代表工作流,体现了开发过程 的静态结构。RUP 中的软件生命周期在时间上被分解为四
11、个顺序的阶段:初始、细化、构造和移交。每个阶段围绕着9 个核心工作流分别迭代。适合场合:可开发或大或小、分布在各个领域的项目,表明了 RUP的多功能性和广泛适应性。适合于需求不稳定、不全面 的软件项目开发。1.5 小结软件=程序+数据+文档软件危机: 原因,现象,办法(软件工程学)软件工程:指导计算机软件开发和维护的一门工程科学软件工程3 个要素:方法、工具和过程。软件生命周期:定义,开发,运行维护软件过程: 瀑布模型,快速原型模型、增量模型、螺旋模型、喷泉模型、RUP等2.1 可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2 可行性研究的主要内容(1) 技术可行性(
12、2) 经济可行性(3) 操作可行性(4) 法律可行性(5) 社会可行性2.3 数据流图1、一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。2、它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。3、设计数据流图时只需考虑系统必须完成的基本逻辑功能, 完全不需要考虑怎样具体地实现这些功能。数据流图四种基本符号数据加工/处理/变换口或数据源点峭点(外部实体)1 或 数据存储文件(静止状态数据)数据流(dm门口心(运动中的 数据)画数据流图的方法:1、自顶向下,逐步求精2、先画顶层DFD,描绘系统的整体逻辑概貌;顶层流图仅 包含一个加工,它代表被开发系统。
13、它的输入流是该系统的输入 数据,输出流是系统所输出数据。3、其次画中间层流图:对上层父图的处理的细化,形成子 图。底层流图是指其加工不需要在做分解的数据流图, 它处在最 底层。注意:数据流图应该分层,并且在把功能级数据流图细化 后得到的处理超过9个时,应该采用画分图的办法。当把一个处 理分解为一系列处理时,分解前和分解后的输入输出数据流必须 相同!数据流图用途:1、画数据流图的基本目的是利用它作为交流信息的工具2、分析员把他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。3、由于在数据流图中通常仅仅使用4 种基本符号,而且不包含任何有关物理实现的细节,因此, 绝大多数
14、用户都可以理解和评价它。4、数据流图着重描绘系统所完成的功能,其另一个主要用途是作为辅助物理系统的分析和设计的工具。2.4 小结1、可行性研究的任务: 技术 , 经济,社会2、可行性研究过程: 8 步骤3、数据流图: 源点或终点,处理,数据存储和数据流4、数据字典: 是分析阶段的工具,包括流,元素,存储,处理 4 类元素组成。5、 成本/效益分析:从经济角度判断是否继续投资于这项工程的主要依据。3.1 需求分析的具体任务确定对系统的综合要求:1、功能需求2、性能需求3、可靠性和可用性需求4、出错处理需求5、接口需求6、约束7、 逆向需求8、将来可能提出的要求分析系统的数据要求:建立数据模型,用
15、图形化的工具描述数据结构(如层次方框图和 warnier 图) 。导出系统的逻辑模型数据流图、实体联系图、状态转换图、数据字典等。修正系统开发计划:由分析过程准确地估计系统的成本和进度,修正以前制定的开发计划。3.2 与用户沟通获取需求的方法1、访谈2、面向数据流自顶向下逐步求精3、简易的应用规格说明技术4、快速建立软件原型(它应该实现用户看得见的功能,原型要具有快速并容易修改的特点)3.3 数据规范化规范化的目的是:1、消除数据冗余,即消除表格中数据的重复;2、消除多义性,使关系中的属性含义清楚、单一;3、使关系的“概念”单一化,让每个数据项只是一个简单的数或字符串,而不是一个组项或重复组;
16、4、方便操作。使数据的插入、删除与修改操作可行并方便;5、使关系模式更灵活,易于实现接近自然语言的查询方式。3.4 状态转换图(状态图 )通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态1、状态规定了系统对事件的响应方式。2、系统对事件的响应,既可以是做一个( 或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。3、可分为:初态(初始状态);终态(最终状态);中间状态4、 一张状态图中只能有一个初态,而终态则可以有0 至多个。事 件 事件就是引起系统做动作或( 和 ) 转换状态的控制信息。1、初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表 示2、
17、中间状态用圆角矩形表示,分成上、中、下3个部分。3、 活动表的语法格式:事件名(参数表)/动作表达式(1) “事件名”可以是任何事件的名称。在活动表中经常 使用下述3种标准事件:entry , exit和do。(2) entry事件指定进入该状态的动作,exit事件指定退 出该状态的动作,而do事件则指定在该状态下的动作。需要 时可以为事件指定参数表。(3)动作表达式描述应做的具体动作。4、事件表达式的语法:事件说明守卫条件/动作表达式(1)事件说明:事件名(参数表)(2)动作表达式:当状态转换开始时执行该表达式。(3)守卫条件是一个布尔表达式,如果既有事件说明又有 守卫条件,则当事件发生且守
18、卫条件为真是状态转换才发生, 如果只有守卫条件没有事件说明,则守卫条件为真时,发生状 态转换。5.1 设计过程1 .设想供选择的方案;2.选取合理的方案;3.推荐最佳方 案;4.功能分解;5.设计软件结构;6.设计数据库;7.制定测 试计划;8.书写文档;9.审查和复审5.2 设计原理模块化1、把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,这些模块集成起来构成一个整体,可以完成指定的功能以满足用户的需求。2、模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。3、过程、函数、子程序和宏等,都可作为模块。4、面向对象方法学中的对象是模
19、块,对象内的方法(或称为服务)也是模块。模块化的好处:1、可以降低软件开发的难度;2、可以使程序结构清晰,增加易读性和易修改性;3、模块化还有利于提高代码的可重用性及团队合作开发大型软件的可行性。抽象抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来, 而暂时忽略它们之间的细节差异。结构化程序中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。逐步求精定义: 为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。好处:1、降低了软件开发中每个阶段的工作难度;2、简化了软件的设计和实现过程;3、有助于
20、提高软件的可读性、可测试性和可维护性;4、 在程序设计中运用抽象的方法还能够提高代码的可重用性。信息隐藏和局部化1、信息隐藏:设计和确定模块,使得一个模块内包含的信息 (过程和数据)对于不需要这些信息的模块来说,是不能访问的。目的: 主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。模块之间的信息传递只能通过合法的调用接口来实现。信息隐蔽对提高软件的可读性和可维护性都是非常重要的。2、局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。如模块中的局部数据元素是局部化的一个例子。3、局部化和信息隐藏概念是密切相关的,局部化有助 于信息隐藏模块独立模块的独立性是指软件系统
21、中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。1、耦合:不同模块之间互连程度的度量。2、内聚:模块功能强度的度量。3、模块独立是模块化、抽象、信息隐藏和局部化概念的直接结果。3、 优点: 比较容易开发出有效模块化(即具有独立的模块)的软件;独立的模块比较容易测试和维护。4、耦合:(1) 数据耦合:若两个模块之间仅通过模块参数交换信息,且交换的信息全部为简单数据,则称这种耦合为数据耦合。耦合性最低。(2) 控制耦合:若模块之间交换的信息中包含有控制信息(尽管有时控制信息是以数据的形式出现的),则称这种耦合为控制耦合。控制耦合是中等程度的耦合,它会增加程序的复杂性。
22、(3) 特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素。(4) 公共环境耦合:若两个或多个模块通过引用公共数据相互联系。(5) 内容耦合:一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口(这意味着一个模块有几种功能)。(6)尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。5、内聚:低内聚:偶然内聚,逻辑内聚,时间内聚中内聚:过程内聚,通信内聚高内聚:顺序内聚,功能内聚6、高内聚、低耦合6.1 结构程序设计1、结构程序设计技术:是实现质量要求的基本
23、保证,是详 细设计的逻辑基础。2、结构程序设计定义:一个程序的代码块仅仅通过顺序、选择和循环这三种基本的控制结构进行连接;并且每个代码块只有一个入口和一个出口。-3、只用三种基本的控制结构(顺序,选择,循环)就能实现任何单 入口单出口的程序。从而实现结构程序设计。4、三种基本结构的共同特点:(1)只有一个入口;(2)只有一个出口 ;(3)结构内的每一部分都有机会被执行到;(4)结构内不存在“死循环”(无终止的循环)。5、结构程序设计的特点:(1)由三种基本结构顺序组成的,可以解决任何复杂的问 题。(2)程序内不存在无规律的转向,只在基本结构内才允许 存在分支和向前或向后的跳转。6.2 过程设计
24、的工具(1)过程设计是设计模块的详细步骤 (算法),是详细设计阶段 应完成的主要工作。(2)过程设计的工具描述程序处理过程的工具。程序流程图的优缺点:主要优点:对控制流程的描绘很简明直观、易于理解,便于初学者掌握。主要缺点:(1)本质上不是逐步求精的好工具。- -改进:PAD®(2)用箭头代表控制流,描述程序时可以随意跳转。- -改进:N-S图(3)不易表示数据结构。- -改进:PAD®(4)嵌套的条件选择表示不清。- -改进:判定树、判定表起止框判断框处理框流向线连接点为了避免流程图在描述程序时的随意跳转,提出了N-S图代替流循环三种基本结构组成多分支选择结构当条件成立时
25、当型循环 while)口输入/输出框PAD图(问题分析图)PAD图的特点:(1)能展现算法的层次结构(2)表示形式直观易懂;(3)既可用于表示程序逻辑,又可用于描述数据结构;(4)支持自顶向下,逐步求精的过程。选结ise多支构6型分结PAD图基本符号判定表当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、 PAD图等都不易清楚地描述,然而,判定表能够清晰地表示复杂 的条件组合与应做的动作之间的对应关系。判定表的优缺点:优点:判定表能够简洁而无歧义地描述处理规则。可以对 判定表进行校验或化简。缺点:并不适于作为一种通用的设计工具,直观性不够。判定树判定树是用来表达加工逻辑的一种工具。比判定表
26、更直观,是 一种常用的系统分析和设计工具。判定树的优缺点:优点:比判定表更直观。缺点:(1)不够简洁,数据元素重复多次地写(2) 画判定树时分枝的次序对简洁程序有影响。PDL程序设计语言(1) 是一种非形式化、比较灵活的混杂语言。也称为伪码。(2) 用于描述模块内部过程的具体算法,以便在开发人员之间比较精确的进行交流。PDL的优缺点:优点:(1)可以作为注释直接插入到源程序中。有利于PDL和源程序保持一致性。(2) PD序写方便。(3)可以由自动处理程序将PDL生成程序代码。缺点:(1) 不如图形工具形象直观。(2) 描述复杂的条件组合与动作间的对应关系时,不 如判定表清晰简单。6.5 程序复
27、杂程度的定量度量McCab防法基本原理:根据程序控制流的复杂程度定量度量程序的复杂程度(称为程序的环形复杂度)。采用“流图”: 仅描绘程序的控制流程,完全不表现对数据的具体操作及分支或循环的具体条件。基本步骤:(1)将程序流程图或PDL等映射为流图。(2) 基于流图计算环形复杂度,以定量度量程序的复杂程度。流图定义:仅仅描绘程序的控制流程基本符号:圆:表示结点,代表一条或多条语句。箭头线:边区域:由边和圆围成的面积基本原则:合并原则:顺序处理框和菱形判定框、顺序处理框序列分别合并映射成流图中的一个结点。分解原则:复合条件分解为若干个简单条件,每个简单条件映射成流图中一个结点。其他情况下的框映射
28、成流图中的一个结点。计算环形复杂度的方法:(1)流图中的环形复杂度 V(G)=E域数。(2)流图G的环形复杂度V(G尸E-N+率中,E是流图中边的条数, N 是结点数。(3)流图G的环形复杂度V(G)=P+1其中,P是流图中判定结点的数目。环形复杂度的用途:(1) 可以用于比较两个算法的优劣。对测试难度的一种定量度量。(2) 作为模块规模的精确限度。环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)W10为宜。7.1 软件测试基础根本目标尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。软件测试准则(1) 所有测试都应该能追溯到用户需求
29、。(2) 应该远在测试开始之前就制定出测试计划。(3) 把 Pareto 原理应用到软件测试中。(测试发现的错误中的80%很可能是由程序中20%的模块造成的。)(4) 应该从 “小规模 ”测试开始,并逐步进行“大规模 ”测试(5) 穷举测试是不可能的。(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。测试方法r人工测诚方法计算机辅助静态分析方法(静态测试方法A软件测试的 策略和方法J白盒测试方法I动态测试方法I黑盒测试方法测试步骤(1)模块测试;(2)子系统测试;(3)系统测试;(4)验收测试; (5)平行运行7.2 白盒测试技术逻辑覆盖以程序的逻辑结构为基础设计测试用例的技术。
30、(1)语句覆盖 使程序中每个语句至少执行一次。(2)判定覆盖 使每个判定的真假分支都至少执行一次。(3)条件覆盖使每个判定的每个条件的可能取值至少执行一 次。(4)判定/条件覆盖 每个条件的所有可能取值至少执行一次; 使每个判定的真假分支都至少执行一次。(5)条件组合覆盖 所有可能的条件取值组合至少执行一次。满 足条件组合覆盖的测试数据,也一定满足判定覆盖、条件覆盖和判 定/条件覆盖标准。覆盖标准相对较强,但是也不意味着所有的路 径都能被执行到。(6)路径覆盖 使程序中每条可能路径都至少执行一次。控制结构测试基本路径测试(常用)第1步:画出程序流图第2步:计算程序的环形复杂度 P (表示程序基
31、本路径逻辑覆盖测试的6种标准的比较发现错误的能力1(弱)语句覆盖判定覆盖每条语句至少执行一次条件覆盖每一判定的每个分支至少执行一次每一判定中的每个条件,分别按正真”.假”至少各执行一次6(强)判定/条件覆生条件组合覆盖同时满足判定覆盖和条件覆盖的要求路径覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次使程序中每条可能路径都至少执行一次77集中的独立路径数的上限)第3步:确定独立路径的基本集合第4步:从该基本集合导出测试用例第5步:执行测试用例第6步:写测试报告条件测试 条件成分的类型包括布尔算符、布尔变量、布尔 括弧(括住简单条件或复合条件)、关系算符及算术表达式。循环测
32、试(1)简单循环;(2)嵌套循环;(3)串接循环7.3 黑盒测试技术黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试, 它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型的错误。黑盒测试力图发现下述类型的错误:功能不正确或遗漏了功能;界面错误;数据结构错误或外部数据库访问错误;性能错误;初始化和终止错误。黑盒测试技术:(1) 等价划分法:把程序的输入域划分成若干个数据类,据数据类导出测试用例。(2) 边界值分析法。(3) 错误推测法。(4) 因果图法等9.1 面向对象的概念1)对象 对象是封装了数据和行为的通信单位。2)类 类是对具有相同数据和相同操作的一组对象的定义,即
33、类是对具有相同属性和行为的对象的描述。3)消息对象之间进行通信的构造或结构。消息分为请求消息和完成消息两种( 由消息模式描述) 。消息模式:发送对象、接收对象、内容4)封装面向对象的一个重要原则。封装是指在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。5)继承面向对象描述类之间相似性的重要机制,子类自动地共享基类中定义的数据和方法的机制。6)多态性允许每个对象以自己最合适的方式去响应共同的消息,从而增强软件的灵活性和可复用性。7) 重载函数重载是指在同一作用域内具有多个同名的函数,这些函数具有若干个不同的参数特征;运算符重载是指同一个运算符可以施加于不同类型的操作数上。9.4
34、对象模型对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。类图的基本符号1. 定义类UM叶类的图形符号为长方形,分成上、中、下 3个区域(下面两个区域可省略),分别放类的名字、属性和服务。类名应该是富于描述性的、简洁的而且无二义性的。2. 定义属性UML苗述属性的语法格式如下: 可见性 属性名:类型名 =初值 性质串 属性的可见性(即访问性):共有的(public) 、私有的(private) 和保护的(protected) ,分别用加号(+) 、减号 (-) 和井号 (#) 表示。3. 定义服务服务也就是操作,UML
35、苗述操作的语法格式如下:可见性操作名 (参数表): 返回值类型性质串参数表是用逗号分隔的形式参数的序列。描述一个参数的语法: 参数名: 类型名 = 默认值 表示关系的符号1. 关联 关联表示两个类的对象之间存在某种语义上的联系。1) )普通关联:类与类之间存在连接关系就可以用普通关联表示。2) 关联的角色:在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),如果没有显式标出角色名,则意味着用类名作为角色名。3) 限定关联:通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。4) 关联类:说明关联的性质可能需要一些附加信息。关联类通过一
36、条虚线与关联连接。关联类与一般类一样,也有属性、 操作和关联。关联中的每个连接与关联类的一个对象相联系。2. 聚集 也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系1 )共享聚集:在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成。一般聚集和共享聚集的图示符号, 都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。2)组合聚集:如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了) , 则该聚集称为组合聚集(简称为组成)。 组成关系用实心菱形表示。3. 泛化 就是通常所说的继承关系,它是通用元素和具体元素之间的一种
37、分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。1) 普通泛化:普通泛化与继承基本相同。没有具体对象的类称为抽象类。抽象类通常作为父类,用于描述其他类(子类) 的公共属性和行为。图示抽象类时,在类名下方附加一个标记值 abstract 。2) 受限泛化:给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法。3) 多重继承:一个子类可以同时多次继承同一个上层基类。9.5 动态模型动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。9.6 功能模型用例图一幅用例图包含的模型元素有系统、行为者、 用例及用例之间的关系。1 )用例:表示系统提供的服务,主要刻画系统如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年丽水市直事业单位公开选聘人员24人模拟试卷带答案详解
- 2025年宁德霞浦县国资与金融服务中心公开招聘6人考前自测高频考点模拟试题及答案详解一套
- 2025年度威海机械工程高级技工学校公开招聘教师(6人)模拟试卷附答案详解(考试直接用)
- 2025年牡丹江市高校毕业生留牡来牡就业创业专项行动工作的考前自测高频考点模拟试题及参考答案详解1套
- 2025江苏苏州市港航投资发展集团有限公司专业化青年人才定岗特选人员考前自测高频考点模拟试题及答案详解(夺冠)
- 2025江苏苏州工业园区星慧幼儿园后勤辅助人员招聘1人考前自测高频考点模拟试题及答案详解(易错题)
- 2025江苏徐州选聘徐州泉山经济开发区投资发展有限公司总经理(四)模拟试卷附答案详解(典型题)
- 2025年长江工程职业技术学院人才引进24人模拟试卷及一套参考答案详解
- 2025年福建省龙岩市河田镇人民政府招聘1人模拟试卷及答案详解(易错题)
- 2025湖南长沙人才集团有限公司见习人员招聘模拟试卷(含答案详解)
- 全国小学生英语竞赛(NECPS)四年级组测试题
- 新版人教版 小学英语五年级上册第二单元课件
- 孕期三病筛查
- 墙体砌筑技术培训课件
- 水库巡查维护保洁人员配备及培训
- 酸枣树栽培方法
- 进行性球麻痹的护理查房
- 抖音汽车直播培训方案
- 生物技术与医药研发的前沿与应用
- 《建筑基坑工程监测技术标准》(50497-2019)
- 高新技术企业、研发费用加计扣除
评论
0/150
提交评论