【文档说明】软件分析与设计基础授课用_课件.ppt,共(122)页,1.120 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45334.html
以下为本文档部分文字说明:
软件分析与设计基础经验和教训表明:1)软件开发需要遵循软件工程方法论的指导,软件分析与设计质量决定软件产品的质量2)合理的软件分析与设计建立在对软件需求正确理解的基础上,对软件需求的深入理解是软件开发工作获得成功的前提和关键3)要开发出好的软件产品,首先必
须知道用户的需求,并在充分了解用户需求的基础上,对用户的业务需求建模,并进行相应的分析与设计,才能生产出真正符合用户要求且生命周期长的软件产品。面向过程分析与设计传统的软件工程方法:结构化分析(StructruedAnalysis,SA)结构化设计(Stru
ctruedDesign,SD)。面向过程分析与设计结构化分析结构化分析是20世纪70年代后期提出的,是一种基于功能分解的需求分析方法,适用于分析大型数据处理系统。与结构化设计(SD)一起联合使用,能较好地实现一个软件系统的研制。它是一种面向数据流,自顶向下、逐步
求精进行需求分析的方法。它通常用数据流图表达需求,以数据字典表示数据的逻辑定义。面向过程分析与设计SA方法的特点:◼核心思想是自顶向下、逐步求精◼基本手段是分解和抽象所谓分解就是把大问题分割成若干小问题,把复杂度降低到人们可以掌握的程度,然后分别解决。所谓抽象就是把细节略去,先考虑最本质的东西。■
使用数据流图、数据字典等规范化工具描述需求。面向过程分析与设计使用SA方法进行软件需求分析的步骤:(1)建立当前系统的具体模型分析当前系统和现实环境,描述当前系统的工作方式,客观地反映现实世界的实际情况。(2)抽象出当前系统的逻辑模型就是在理解当前系统“怎么做”的
基础上,抽取出“做什么”的本质,从当前系统的具体模型抽象出当前系统的逻辑模型。面向过程分析与设计(3)建立目标系统的逻辑模型所谓目标系统是指将要开发的由计算机处理的系统。方法如下:在数据流图上把目标系统与当前系统在逻辑上不同的部分找出来,这部分就
是要改变的部分。将要改变部分抽象为一个加工,再进行逐步分解,最后就可获得目标系统的逻辑模型。面向过程分析与设计1.数据流图数据流是数据在系统内的传输途径,数据流图从数据传递和加工的角度,以图形的方式刻画数据流
从输入到输出的变换过程。数据流图是结构化系统分析的主要工具,它去掉了具体的组织机构、工作场所、物质流等,仅反映信息和数据存储、流动、使用以及加工的情况。面向过程分析与设计①数据流图的基本元素包括数据流、加工、数据存取文件、输入数据的源点和输出数据
的汇点4类。常采用如图2-1所示的图形符号:1数据流,被加工的数据与流向N数据存储文件,须加以命名(图中N为文件编号)数据输入的源点和数据输出的汇点加工,输入数据在此进行变换产生输出数据图型符号等价符号描述图2-1数据流图基本图
形符号面向过程分析与设计绘制数据流图时,应先找出系统的数据源点与汇点及对应的输入数据流与输出数据流,然后从输入数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出系列逻辑加工,直到所需的输出数据流(即系统的汇点)。面向过程分析与设计数据流在传递过程中,
需要一些加工处理。常见的加工关系及对应的图形符号如图2-2所示。BBABC*数据A变成B和CABC数据A和B同时输入变换成C*AC数据A或B(不能同时)输入变换成CAC数据A变成B或C(不能B和C)ABC数据A或B,或A和B同时输入变换成C+
ABC数据A变成B或C,或B和C+图2-2数据流图加工关系面向过程分析与设计数据流图应用举例:取款单信息付款储户核查登录账卡存折存折信息取款信息银行取款过程的数据流图反馈信息付款信息可取款信息面向过程分析与设计②分层数据流图较
复杂的实际问题中,仅用一个数据流图很难表达数据处理过程和数据加工情况,需要采用“先全局后局部,先整体后细节,先抽象后具体”的逐步求精原则,按照问题的层次结构逐步分解。首先确定顶层数据流图,把整个数据处理过程抽象为一个加工,它的输人数据和输
出数据实际上反映了系统与外界环境的接口,这就是顶层数据流图。然后在上一层数据流图的基础上进一步细化,直到数据流图的加工不能再分解为止。面向过程分析与设计面向过程分析与设计③画数据流图的步骤和原则画数据流图的基本步骤是自外向内,自顶
向下,逐层细化,完善求精,并且需要遵循以下基本原则:◼顶层数据流图上的数据流必须封闭在外部实体之间。◼每个加工至少有一个输入数据流和一个输出数据流。◼在数据流图中,需按层给加工进行编号。编号应表明该加工处在哪一层,以及与上下层的父图与子图的对应关系。◼
任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图与子图的平衡。◼图上每个元素都必须有名字,加工的名字应当表明做什么事情。面向过程分析与设计数据流图画法举例:(培训中心管理系统数据流图)面向过程分析与设计面向过程分析与设计面向过程分析与设计面向过程分
析与设计2.数据字典数据字典是各类数据描述的集合。它通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。◆转换分析步骤为:确定数据流图的类型;3数据库建模与设计对象实现了数据和操作的结合,使数
据和操作封装于对象的统一体中。结构化分析(StructruedAnalysis,SA)对数据项的描述通常包括以下内容。3数据库建模与设计表示模块,框内用文字标记模块名。2面向对象分析与设计一般说来,可以使用两种方式建立继承(即泛化)关系:(1)角色(参
与者)图形工具:程序流程图,N-S(方框图),PAD(问题分析图);数据流去向:班级学生名单显示3UML(统一建模语言)简介进行系统设计的关键是子系统的划分,子系统由它们的责任及所提供的服务来标识,在OOD中,这种服务是完成特
定功能的一组操作。关联表示两个类的对象之间存在某种语义上的联系,是类之间的一种很弱的联系。面向过程分析与设计①数据项数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。对数据项的描述通常包括以下内容。数据项描述={
数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}面向过程分析与设计②数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成(嵌套数据结构),或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以
下内容。数据结构={数据结构名,含义说明,组成:{数据项或数据结构}}面向过程分析与设计③数据流数据流是数据结构在系统内的传输路径。对数据流的描述通常包括以下内容。数据流描述={数据流名,说明,数据流来源,数据流去向,
组成:{数据结构},平均流量,高峰期流量}④数据存储数据存储是数据结构停留或保存的地方。数据存储的描述通常包括以下内容。数据存储={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}面向过程分析与设计⑤处
理过程处理过程应描述处理逻辑的功能,详细地描述其输入输出的数据流以及这些数据的基本转换路径和策略说明性信息,对处理过程的描述通常包括以下内容。处理过程={处理过程名,编号,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}面向过程分析与设计⑥外部实
体外部实体是系统的“人-机”界面,系统的数据流由外部实体流入,经过加工处理之后,向外部实体流出。外部实体的描述如下。外部实体={外部实体的名称,编号,输入:{数据流},输出:{数据流}}面向过程分析与设计3.实例--学籍管理分析学籍管理涉及的内容比较多,业务逻辑也较复杂。在不失一般性的基础
上,本实例简化了学籍管理的业务逻辑.(1)需求描述工作内容:■建立学生的学籍■汇总每学期学生的学分■学生每门课程的的考试成绩■学生的平均成绩■汇总各分数段的人数■各种查询面向过程分析与设计涉及人员:■管理人员■班主任■任课教师■学生系统初步:
◼系统性质:MIS软件。◼系统使用者:管理人员、班主任、教师、学生等。◼系统运行环境:网络运行。面向过程分析与设计表2-1学籍管理主要功能表功能名称功能说明学生管理登记学生的基本信息(姓名、性别、班级等),并提供查询功能。课程管理登记课程基本情况(课
程名称、开课学期、课程类型、学分等),提供查询教师管理登记教师基本情况(姓名、年龄、性别、学历等),提供查询统计成绩管理登记学生各门课程的考试成绩、提供查询、统计功能授课管理登记教师讲授课程、授课地点、授课学期,提供查询功能编码维护维护系统中使用
的编码(如职称编码、学院编码、班级编码等)面向过程分析与设计(2)分析设计顶层数据流图管理人员、教师、班主任、学生等是数据输入的源点和数据输出的汇点。学生基本信息、教师信息、课程信息、教学计划、考试成绩等是数据存储文件。0学籍管理管理人员学生基本信息学生信息教师学生考试成绩班主任查询统计条件学生
基本信息课程基本信息教师基本信息教学计划信息教师信息教学计划课程信息教师信息课程信息教学计划考试成绩考试成绩学生考试成绩成绩查询条件考试通过情况考试成绩表学生基本情况汇总报表编码各类编码对应关系编码学生考试成绩汇总报表图2-4学籍管理顶层数据流图面向过程分析与设计(3)逐
步细化数据流图根据表2-1中列出的学籍管理的主要功能,将学籍管理加工细化分解为学生管理、课程管理、教师管理、成绩管理、授课管理和编码维护等子加工。1学生管理2课程管理3教师管理4成绩管理5授课管理6编码维护
管理人员学生考试成绩汇总报表学生基本信息学生信息教师学生考试成绩班主任查询统计条件学生基本信息课程基本信息教师基本信息各类编码对应关系教师信息教学计划课程信息教师信息课程信息教学计划考试成绩考试成绩学生考试成绩成绩查询条件考试通过情况考试成绩
表学生基本情况汇总报表编码编码教学计划信息图2-5学籍管理1层数据流图面向过程分析与设计根据实际业务,分析各处理流程,直到数据流图中出现的每个加工处理都不能再分解为止。成绩管理可以继续细化为如图2-6所示的成绩管理数据流图。管理人员考试成绩汇总报
表教师学生考试成绩班主任查询条件考试成绩考试成绩学生考试成绩考试通过情况考试成绩表考试成绩统计条件4.1成绩录入4.2成绩查询统计成绩查询条件图2-6成绩管理数据流图面向过程分析与设计图2-6所示的成绩录入和成绩查询都可以继续分解。例如:成绩录入加工可以继续
细化为增加成绩、修改成绩、删除成绩等子加工,为了方便成绩录入,还需要班级学生名单查询子过程,因此图2-6所示的成绩管理的2层数据流图的成绩录入加工可以继续细化分解为图2-7所示成绩录入的3层数据流图。教师学生班级学生信息学生名单变动成绩要求添加成绩要求考试成绩修改后的成绩修改的成绩学生基本信息新增
的成绩原成绩需要删除成绩的学号删除成绩要求4.1.1班级学生名单查询4.1.6班级学生名单显示4.1.2增加成绩4.1.5成绩查询4.1.3修改成绩4.1.4删除成绩图2-7细化后的成绩录入数据流图面向过程分析与设计(4)制定整理数据字典数据字典是
系统中各类数据描述的集合。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。①数据项的描述以图2-7中的“学号”数据项为例说明:数据项名称:学号含义:唯一标识每个学生别名:类型:字符型长度:5取值范围:0000
0至99999取值含义:前2位标别该学生所在年级,后3位为顺序编号。面向过程分析与设计②数据流的描述以“学生名单”数据流为例。数据流名称:学生名单说明:某班全部学生的名单数据流来源:班级学生名单查询数据流去向:班级学生名单显示组成(包含的数据项):班级、学号、姓名平均
流量:高峰期流量:面向过程分析与设计③数据存储的描述以数据存储“考试成绩”为例。数据存储:考试成绩说明:保存学生各门课的考试成绩流入数据流:新增的成绩、修改后的成绩流出数据流:原成绩组成:学号、姓名、成绩
数据量:3000(学生)*15(课程)存取方式:随机存取面向过程分析与设计④处理过程的描述以处理过程“增加成绩”为例。处理过程:增加成绩说明:录入一个或一批学生某门课程的考试成绩输入:添加成绩要求输出:新增的成绩处理:在考试成绩数据存储中增加一个
或一批学生的考试成绩。面向过程分析与设计结构化设计通常把设计工作划分为概要设计和详细设计两个阶段。概要设计阶段的主要任务是,通过仔细分析需求规格说明,对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模
块结构。详细设计阶段的主要任务是,详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。面向过程分析与设计结构化设计的主要原则如下:◼抽象就是把事物本质的共同特性提取出来而不考虑其他细节。软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。
◼模块化模块是指把一个待开发的软件分解成若干小的简单的部分。每个模块可以完成一个特定的子功能,各个模块可以按一定的方法组装起来成为一个整体,从而实现整个系统的功能。面向过程分析与设计◼信息隐蔽指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是
不能访问的。◼模块独立性模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。面向过程分析与设计1.概要设计概要设计的基本任务是:(1)设计软件系统结构在需求分析阶段,已
经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。划分的具体过程是:①将一个复杂的系统按功能划分成模块;②确定每个模块的功能;③确定模块之间的调用关系;④确定模块之间的接口,即模块之间传递的信息;⑤评价模块结构的质量。面向过
程分析与设计(2)数据结构及数据设计数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。数据设计的具体任务是:■确定输入、输出文件的详细数据结构;■结合算法设计,确定算法所必需的逻辑数据结构及其操作;■确定对逻辑数据结构所必须的那些操作的程序模块,限制和确定各个数
据设计决策的影响范围;■需要与操作系统或调度程序接口所必需的控制表进行数据交换时,确定其详细的数据结构和使用规则;■数据的保护性设计;■防卫性、一致性、冗余性设计。面向过程分析与设计(3)编写概要设计文档。■概要
设计说明书■数据库设计说明书■集成测试计划等。(4)概要设计文档评审。对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都要进行评审。面向过程分析与设计概要设计的设计过程为:(1)分析数
据流图,弄清楚数据流加工的过程;(2)根据数据流图确定数据流图的类型;(3)从数据流图导出系统的初始软件结构图;(4)改进软件结构图,直到符合要求为止;(5)复查。面向过程分析与设计好的设计准则:①模块独立性高
。②模块规模适中。③深度、宽度适度④作用域在控制域内。⑤接口和界面简单。⑥模块的出口、入口为单入口、单出口。⑦功能可预测。面向过程分析与设计2.详细设计详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常见设计工具有:图形工具:程序流程图,N-S(方框图),PAD(问题分析图);表格工具:判定表;语言工具:PDL(伪码)。2.1结构化开发方法◼方框图(N-S图)。面向过程分析与设计面向过程分析与设计2.2面向对象分析与设计面向对象方法和技术是自20世纪80年代以来逐渐形成的一种分析问题和
解决问题的新方法,它的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。面向对象方法不把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。2.2面向
对象分析与设计传统软件分析设计的问题(1)传统的软件分析技术难以应对需求的不断变化(2)传统软件开发方法无法实现高效的软件复用(3)传统软件设计方法难以实现从分析到设计的直接过渡2.2面向对象分析与设计面向对象分析
与设计的主要特点(1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑传统的面向过程的设计方法以算法为核心,将数据和过程作为相互独立的部分,程序代码用于处理这些数据面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类
认识世界的思维方式来渐进地分析、解决问题2.2面向对象分析与设计(2)软件生存期各阶段所使用的方法、技术具有高度的连续性传统的软件开发过程把一个充满回溯的软件开发过程硬性地分割为几个阶段,而且各个阶段所使用的模型、描述方法不相同。面向对象的方法使用喷泉模型作为其工作模型,软件生存期各阶段
没有明显的界限,开发过程回溯重叠,使用相同的描述方法和模型,使得软件生存期各阶段所使用的方法、技术具有高度的连续性。2.2面向对象分析与设计(3)软件开发各阶段有机集成,有利于系统的稳定性OOA、OOD与OOP有机地集成在一起
,使开发过程始终围绕着建立问题领域的对象(类)模型进行,且各阶段解决的问题又各有侧重。(4)具有良好的重用性由于对象具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性,因此,对象类提供
了较理想的可重用的软件成分。2.2面向对象分析与设计2.2.3面向对象建模面向对象分析与设计从3种角度建立模型:1)使用对象模型描述系统数据结构定义了做事情的实体2)使用动态模型描述系统动态的协作及控制结构规定了什么时候
做3)使用功能模型描述系统功能系统应该“做什么”2.2面向对象分析与设计准备知识:(1)对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。(2)对象的状态和行为。对象具有状态,一个对象用数据值
来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。2.2面向对象分析与设计(3)类具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就
是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。2.2面向对象分析与设计(4)消息和方法对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,
消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。类中操作的实现过程叫做方法,一个方法有方法名、参数、
方法体。2.2面向对象分析与设计(5)面向对象的特征封装性:将对象的特性(属性)和行为(方法)包装在一起。它实现了信息的隐蔽作用,使我们通过类的方法来操作该类的对象,而不必关心其内部实现。抽象性:将具有
一致的数据结构(属性)和行为(操作)的对象抽象成类。继承性:是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。2.2面向对象分析与设计多态性:描述的是面向对象里同一方法名的多种实现。多态有两类情况:一类是方法的重写(Overriding),另一类是方法的重载(Overloadin
g)。重写发生在父类与子类的方法之间,重载发生在同一个类的方法之间。重写指子类可以重写实现父类中有相同的名称和参数的方法,以屏蔽父类的调用。重载指一个类中多个同名的方法,通过具有不同的参数个数或有不同的参数
类型,来完成不同的实现,甚至返回不同的类型。2.2面向对象分析与设计2.2.3UML(统一建模语言)简介UML(UnifiedModelingLanguage)不仅统一了Booch方法、OMT方法、OOSE方法、OOA/OOD的表示方法,而且对其作
了进一步的发展,最终统一为大众接受的标准建模语言。UML是一种定义良好、易于表达、功能强大的建模语言。它不但支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程。2.2面向对象分析与设计统一
建模语言(UnifiedModelingLanguage,UML)是目前最流行的可视化建模语言,可以贯穿软件开发周期中的每一个阶段。2.2面向对象分析与设计1.用例图(UseCaseDiagram)用例图用于需
求分析阶段,第一,它描述了待开发系统的功能需求,强调这个系统是什么;第二,它将系统看作黑盒,从外部参与者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发系统是否满足需求。用例图的主要元素是
角色(Actor)、用例(UseCase)、角色与用例间的通信角色代表触发系统功能的用户或其他系统用例代表具体的功能描述2.2面向对象分析与设计(1)角色(参与者)角色是系统外部的一个实体,它以某种方式参与用例的执行过程。角色通过向系统输入或请求输入某些事件来触发系统的执行。角色
包括人角色(HumanActor)和外部系统角色(SystemActor)。系统的用户是人角色,用户通过与系统的交互,操纵系统,完成所需要的工作。与本系统交互的外部系统是另一种角色,它与本系统相互作用,交换信息。它可以是软件系统,也可以是硬件设备,例如在实时监控系统中的数据
采集器等。2.2面向对象分析与设计2.2面向对象分析与设计(2)用例规定了系统或部分系统的行为。描述了系统具有的行为,但没有规定怎样实现这些行为,它是从用户(角色)的角度来看系统的特定方式。.2.2面向对象分析与设计(3)用例间的关系①泛化关系(Gener
alization)(类属关系)即用例之间的一般和特殊关系②包含关系(Include)。即源用例包含了其他用例的行为③扩展关系(Extend)即目标用例扩充了源用例的行为2.2面向对象分析与设计(4)UML用例图2.2面向对象分析与设计(2)类图(Cla
ssDiagram)类图描述系统的静态结构,是面向对象系统建模最常用的图,它描述了类、接口及它们之间的关系。主要元素是类以及类之间的关系。2.2面向对象分析与设计类描述了一类对象的属性和行为。student--idname:int:string++add
()update():int:int类与类之间通常有泛化(继承)、关联、聚合与组合、依赖等多种关系。2.2面向对象分析与设计(1)泛化(继承)继承是类与类之间较常见的关系,一个类(称为子类)继承另一个类(称为基类)的功能,并增加它自己的新
功能。student--idname:int:string++add()update():int:intperson--idname:int:string++add()update():int:int2.2面
向对象分析与设计(2)关联关联表示两个类的对象之间存在某种语义上的联系,是类之间的一种很弱的联系。0..10..*student--idname:int:string++add()update():int:intclass--idname:int:string++add()up
date():int:int2.2面向对象分析与设计(3)聚合与组合聚合与组合都是特殊的关联关系,都体现了整体与部分的关系。聚合体现的是整体与部分拥有的关系即has-a的关系,此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整
体对象共享比如计算机与CPU、公司与员工的关系等2.2面向对象分析与设计组合体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,例如
人和人的大脑。UML中定义聚合和组合都使用一个带菱形的连线表示,菱形指向具有整体性质的类,其中未填充的菱形表示聚合,填充的菱形表示组合。2.2面向对象分析与设计(4)依赖当一个类A使用到另一个类B,并且B类的变化会影响到A类,则称A类依赖于B类。2.2面向对象分析与设计
(3)对象图(ObjectDiagram)对象图描述了某一瞬间系统的对象、对象的状态及对象间的关系。对象图可以看作是类图的实例。对象是类的实例,对象间的连线是类之间的关联关系的实例。Object1Object22.2面向对象分析与设计(4)交互作用图包括时序图和协作图,描述了对象间的交互作用,由
对象、对象间的关系组成,并包含在对象间传递的消息。时序图描述了消息的时间顺序,适合于描述实时系统和复杂的脚本。它是一张表,对象沿X轴排列,消息按照时间顺序递增沿Y轴排序。2.2面向对象分析与设计协作图强调发送和接收消息的对象的组织结构。协作图和时序图在语义上是相当的,可以彼此
转换而不损失信息。2.2面向对象分析与设计(5)状态图状态图描述类的特定对象所有可能的状态,以及事件发生时状态的转移条件。2.2面向对象分析与设计(6)活动图主要是一个流图,描述了从活动到活动的流。它由一系列动作组成。2.2面向对象分析与设计交互作用图强调从对象到对象的控制流,活动
图则强调从活动到活动的控制流。2.2面向对象分析与设计(7)组件图组件图描述了组件及组件间的关系。它的用途是显示系统中的软件对其他软件组件的依赖关系。2.2面向对象分析与设计(8)配置图配置图描述软件系统如何部署到硬件环境中,反映了系统中软件
和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置。它的用途是显示该系统不同的组件将在何处物理地运行,以及将如何彼此通信。2.2面向对象分析与设计有很多CASE工具都支持UML设计,如Visio、PowerDesinger、RationalRose等。这些工具不仅提供了标准的符号来
绘制UML的各类模型图,同时也提供了很多辅助工具来辅助分析人员进行模型检查和各类正向与逆向工程。2.2面向对象分析与设计面向对象分析1.面向对象分析的基本过程(1)学习、了解原始需求目的:1)初步了解业务需求2)找出原始需求中存在二义性、不完整、不准确的需求为需求分析打
基础(2)进一步的需求调研发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。2.2面向对象分析与设计(3)需求分析深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。(4)建立对象模型面
向对象建模得到的模型包含3类,即对象模型、动态模型、功能模型。这3类模型在不同的系统中的重要程度不同,但是对象模型是任何一个软件系统都需要的,当涉及交互作用和时序时(如用户界面及过程控制等),需要使用动态模型。2.2面向对象分析与设计2.建立对象
模型对象模型的建立主要是确定类、建立类之间的关联关系、确定类的属性等过程。(1)确定类与对象以自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。2.2
面向对象分析与设计用这种简单方法确定的候选者是不准确的,往往包含大量不正确的或不必要的事物,必须经过进一步的严格筛选,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象,筛选时主要依据下列标准:①冗余。如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述
力的名称。②无关。仅需要把与本问题密切相关的类放进目标系统中,与当前要解决的问题无关的类应该删掉。2.2面向对象分析与设计③笼统。在需求陈述中常常使用一些笼统的名词,如果系统无需处理有关它们的信息或者有更明确更具体的名词对应它们所暗示的事务,那么就应该去掉这些笼统的或模
糊的类。④属性。在需求陈述中有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类与对象中去掉。⑤操作。在需求陈述中有时可能使用一些既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正
确地决定把它们作为类还是作为类中定义的操作。⑥实现。在分析阶段不应该过早地考虑怎样实现目标系统,在分析阶段过早地考虑它们反而会分散注意力,因此应该去掉仅和实现有关的候选类与对象。2.2面向对象分析与设计需要不断地和用户、领域专家交流,反复构造模型,逐渐澄清二义性,改正错误,才能最终把模型建
立起来2.2面向对象分析与设计(3)划分主题为了降低复杂程度,在开发大型、复杂系统的过程中,可以把系统再进一步划分成几个不同的主题,也就是在概念上把系统包含的内容分解成若干范畴。应该按问题领域而不是用功能分解
方法来确定主题。(4)确定属性通常,在需求陈述中用名词词组表示属性,但是不可能仅依靠需求陈述找到所有属性,还必须借助于领域知识和常识才能分析得出需要的属性。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。2.2面向对象分析与设计(5)识别继承关系一般说来,
可以使用两种方式建立继承(即泛化)关系:①自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。②自顶向下:把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。从应用域中常常能明显看出应该做的自顶向下的具体化工作。2.2面向对象分析与设计3.建立动态模型建立
动态模型基本包括:1)编写典型交互行为的脚本;2)从脚本中提取出事件,确定触发每个事件的动作对象以及接收事件的目标对象;3)排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们;4)比较各个对象的状态图,检查它们之间的一
致性,确保事件之间的匹配。2.2面向对象分析与设计4.建立功能模型功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。数据流图的画法与结构化分析一样,其中的处理功能可以
用IPO图(或表)、伪码等多种方式进一步描述。在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。与对象模型和动态模型比较起来,数据流图并没有增加新的信息,有助于软件开发人员更深入地理解问题域,改进和完善自己的设计。2.2面向对象分析与设
计面向对象设计按照面向对象方法的“喷泉模型”,软件生命周期的各个阶段交替回溯,整个生命周期的概念、属性、描述方法具有一致性,因此从分析到设计无须表示方法的转换,只是分析和设计的任务分工与侧重不同。2.2面向对象分
析与设计面向对象分析建立的是应用领域面向对象的模型,而面向对象设计建立的是软件系统的模型。与OOA的模型比较,OOD模型的抽象层次较低,但是建模的原则和方法是相同的。总体看,分析与设计本质上是一个多次反复迭代的过程
,而面向对象分析与面向对象设计的界限尤其模糊。用面向对象方法设计软件,原则上也是先进行总体设计(即系统设计),然后再进行详细设计(对象),当然,它们之间的界限非常模糊,事实上是一个多次反复迭代的过程。2.2面向对象分析与设计
1.面向对象设计的基本任务将分析阶段所创建的分析模型转换为设计模型,解决如何做的问题。面向对象分析主要考虑系统做什么,而不关心系统如何实现的问题。在面向对象设计需要以OOA模型为基础,重新定义或补充一些新的类,或在原有类中补充或修改一些属性及操作。因此,OOD的目标是产生一个满足用户需求的
、可实现的OOD模型。2.2面向对象分析与设计面向对象的设计包括系统设计和对象设计。(1)系统设计将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作。进行系统设计的关键是子系统的划分,子系统由它们的责
任及所提供的服务来标识,在OOD中,这种服务是完成特定功能的一组操作。2.2面向对象分析与设计(2)对象设计为每个类的属性和操作进行详细设计,包括属性和操作的数据结构及实现算法,以及类之间的关联。另外,在OOA阶段,将一些与具体实现条件密切相关的对象,例如,与图形用户界面(
GUI)、数据管理、硬件及操作系统有关的对象推迟到OOD阶段考虑。具有相同或相似性质的对象的抽象就是类。如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述力的名称。实例--学籍管理分析这些工具不仅提供了标准的符号来绘制UML的各
类模型图,同时也提供了很多辅助工具来辅助分析人员进行模型检查和各类正向与逆向工程。含义:唯一标识每个学生例如,缓冲区的大小和个数、块的长度、块因子的大小等。及时了解掌握与用户业务相关的和业务规范等文件。结构化设计(St
ructruedDesign,SD)。◆找出中心加工3数据库建模与设计进行系统设计的关键是子系统的划分,子系统由它们的责任及所提供的服务来标识,在OOD中,这种服务是完成特定功能的一组操作。1)偶然性内聚
。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。①自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。结构化设计(StructruedDesign,SD)。图2-5学籍管理1层数据流图
即目标用例扩充了源用例的行为2.2面向对象分析与设计(3)设计优化主要涉及提高效率的技术和建立良好的继承关系的方法。提高效率的技术包括增加冗余关联以提高访问效率、调整查询次序、优化算法等技术。建立良好的继
承关系是优化设计的重要内容,通过对继承关系的调整实现。2.2面向对象分析与设计2.面向对象设计准则(1)模块化面向对象软件开发模式很自然地支持了把系统分解成模块的设计原理:对象就是模块,是把数据结构和操作这些数据的方法
紧密地结合在一起所构成的模块。(2)抽象面向对象方法不仅支持过程抽象,而且支持数据抽象,类实际上是一种抽象数据类型。2.2面向对象分析与设计(3)信息隐藏在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持了信息隐藏。对于类的用户来说,属性的表
示方法和操作的实现算法都应该是隐藏的。(4)弱耦合在面向对象方法中,耦合主要指不同对象之间相互关联的紧密程度。如果一类对象过多地依赖其他类对象来完成自己的工作,则不仅给理解、测试或修改这个类带来很大困难,而且还将大大
降低该类的可重用性和可移植性。2.2面向对象分析与设计(5)强内聚内聚衡量一个模块内各个元素彼此结合的紧密程度。也可以把内聚定义为:设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度。在设计时应该力求做到高内聚
。(6)可重用重用有两方面的含义:尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类);如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。2.3数据库建模与设
计大多数软件系统中都包含数据库处理,软件设计的成败与数据库设计息息相关。设计一个好的数据库需要遵循软件工程的理论和方法,采用规范的设计方法,根据用户的需求,进行分析、归纳、抽象,最终设计出符合实际情况的数据模型,选择一种符合要求的数据库管理系统,最终实现对数据模型及数据的管理。2
.3数据库建模与设计规范的设计方法之一——新奥尔良(NewOrleans)方法把数据库设计分成:6个阶段。2.3数据库建模与设计需求分析需求分析就是分析用户的需要与要求,确定系统必须完成哪些工作,对系统提出完整、准确、清晰、具体的要求。确定用户的最终需求非常困
难。一方面用户缺少计算机知识,开始时无法确定计算机究竟能为自己做什么,不能做什么,无法一下子准确地表达自己的需求,用户所提出的需求往往不断地变化。另一方面设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。2.3数据库建模与设计需求分析阶段应该了解以下内容:①组织机构情况。包括
部门组成情况、各部门的职责、应用程序的使用权限等,在此基础上形成系统功能权限的划分。②各部门的业务活动情况。包括各部门输入和使用哪些数据,如何加工处理这些数据,处理数据需要什么具体的算法,产生什么信息,这些输出信息提供到什么部门,输出结果的格式是什么。在此基础上形成数据流图
和数据字典。③用户对系统的功能要求。在熟悉了业务活动的基础上,协助用户明确对系统的各种要求,包括信息要求、处理要求、完全性与完整性要求。2.3数据库建模与设计常用的调查方法有以下几种。①亲自参与业务活动,了解业务处理的基本情况②请专人介绍③与用户交流、询问等方式来解决存在的疑问④设计调查
表请用户填写⑤查阅记录。即查问与原系统有关的数据记录。⑥学习文件。及时了解掌握与用户业务相关的和业务规范等文件。⑦使用旧系统。如果用户已经使用计算机系统协助业务处理,可以通过使用旧系统,掌握已有的需求、了解用户变化的和新增的需求。2.3数据库建模与设计2.3.2概念结构设计概念结
构独立于数据库逻辑结构,也独立于支持数据库的DBMS。它能够充分反映现实世界中实体之间的联系。概念结构设计的步骤如下:(1)数据抽象与局部视图设计产生分E-R图需求分析阶段产生的数据流图是进行概念结构设计的
基础。高层的数据流图能反映系统的概貌,但包含的信息不足以描述系统的详细情况。中层的数据流图能较好地反映系统中各局部应用子系统的详细情况,因此中层数据流图经常作为设计分E-R图的依据。2.3数据库建模与设计(2)解决冲突,合并分E-R图,形成初步E-R图分E-R图是表
现了局部应用的信息使用和处理情况,在此基础上设计的分E-R图势必会存在一些冲突和冗余。各分E-R图之间的冲突主要有3类:属性冲突、命名冲突和结构冲突。①属性冲突。指属性值的类型、取值范围或取值集合在不同的E-R图中定义不同。②命名冲突。命名冲突包括同名异义和异名同义两
种情况。2.3数据库建模与设计③结构冲突。结构冲突的情况比较多。一种是同一对象在不同应用中具有不同的抽象,这类冲突的解决方法通常是把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。另一种结构冲突是同一实体在不同分E-R图中所包含的
属性个数和属性排列次序不完全相同。这是很常见的一类冲突,原因是不同的局部应用所关心的实体属性不同。解决方法是使该实体的属性取各分E-R图属性的并集,再适当调整属性的次序。最后一种结构冲突发生在不同的分E-R图中实体
间的联系上,实体1与实体2在一个局部应用中的联系是1∶n联系,而在另外一个局部应用中可能是m∶n联系,解决的方法是根据语义进行综合或调整。2.3数据库建模与设计(3)消除不必要的冗余,设计基本E-R图分E-R图经过合并生成的是初步E-R图,这种E-R图中可能会存在冗余。冗余
包括两种情况,数据冗余和联系冗余,其中数据冗余是可由基本数据导出的数据,联系冗余是指可由其他联系导出的联系。视图集成时必须尽量消除这些冗余。但是有时为了提高应用效率,不得不以信息冗余作为代价。因此在设计数据库概念结构时,哪些冗余信息必须消除,哪些冗余信息允许存在,需要根据用户的整体需求
来确定。消除不必要的冗余后的初步E-R图称为基本E-R图。2.3数据库建模与设计2.3.3逻辑结构设计概念结构独立于DBMS,需要将概念结构进一步转化为与特定DBMS产品所支持的数据模型相符合的逻辑结构。目前大多数应用系统都选用支持关系模型的DBMS。设
计逻辑结构时首先要将概念结构转化为关系模型,然后对数据模型进行优化。2.3数据库建模与设计1.E-R图向关系模型转换E-R图是由实体、实体属性和实体之间的联系3个要素组成的。将E-R图转换为关系模型实际上就是将实体、属性和实体之间
的联系转化为关系模式,并确定关系模式的属性和码。关系(表)(Table)属性(字段)(Field)域(Domain)主码(主键)(Key)表间关系(Reference)实体(Entity)属性(Attribute)
域(Domain)码(Key)实体间的联系(Relationship)2.3数据库建模与设计FK_RELATION_RELATIONS_STUDENTFK_RELATION_RELATIONS_COURSE学生表idnameclasschar(10)char(
10)varchar(20)<pk>课程表c_idc_namechar(10)varchar(30)<pk>Relationship_1idc_idchar(10)char(10)<pk,fk1><pk,fk2>Relationship_
1学生表idnameclass<pi>Characters(10)Characters(10)Variablecharacters(20)<M>Identifier_1<pi>课程表c_idc_name<pi>Char
acters(10)Variablecharacters(30)<M>Identifier_1<pi>2.3数据库建模与设计2.优化关系模型完成E-R图向关系数据模型的转换之后,还需要对数据模型进行优化,修改、调整数据模
型的结构,提高数据库的性能。2.3数据库建模与设计3.设计用户子模式用户子模式的设计,主要是视图(View)的设计,目的是方便用户使用,提高用户使用效率。(1)使用更符合用户习惯的别名(2)针对不同级别的用户定义不同的视图
(3)简化用户对系统的使用2.3数据库建模与设计2.3.4物理结构设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构。物理结构依赖于给定的DBMS和计算机系统。数据库物理设计的任务是对给定的逻辑数据模型选取适合应用环境的物理结构,即在逻辑设计的
基础上,为每个关系模式选择合适的存储结构和存取方法,使数据库的事务能够高效率地运行。2.3数据库建模与设计数据库物理设计阶段主要包括以下4个过程:①分析影响物理数据库设计的因素。②为关系模式选择存取方法
。③设计关系、索引等数据库文件的物理存储结构。④评价物理结构。2.3数据库建模与设计进行数据库物理设计需要注意以下问题:①确定数据的存储结构。需考虑存取时间、空间效率和维护代价间的平衡。②选择合适的存取路径。例如,确定应该为哪些关系模式建立索引,索引关键字是什么等。③确定数据
的存放位置。例如,确定数据存放在一个磁盘上还是多个磁盘上,什么数据该存放在高速存储器上,什么应存放在低速存储器上等。④确定存取分布。许多DBMS都提供了一些存储分配参数供设计者使用。例如,缓冲区的大小和个数、块的长度、块因子的大小等。设计者必须规定其中的一些参数设
置。感谢观看