版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件分析与设计基础第一页,共一百四十三页,2022年,8月28日经验和教训表明:1)软件开发需要遵循软件工程方法论的指导,软件分析与设计质量决定软件产品的质量2)合理的软件分析与设计建立在对软件需求正确理解的基础上,对软件需求的深入理解是软件开发工作获得成功的前提和关键3)要开发出好的软件产品,首先必须知道用户的需求,并在充分了解用户需求的基础上,对用户的业务需求建模,并进行相应的分析与设计,才能生产出真正符合用户要求且生命周期长的软件产品。
第二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
传统的软件工程方法:结构化分析(StructruedAnalysis,SA)结构化设计(StructruedDesign,SD)。
第三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
结构化分析
结构化分析是20世纪70年代后期提出的,是一种基于功能分解的需求分析方法,适用于分析大型数据处理系统。与结构化设计(SD)一起联合使用,能较好地实现一个软件系统的研制。它是一种面向数据流,自顶向下、逐步求精进行需求分析的方法。
它通常用数据流图表达需求,以数据字典表示数据的逻辑定义。
第四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
SA方法的特点:核心思想是自顶向下、逐步求精基本手段是分解和抽象
所谓分解就是把大问题分割成若干小问题,把复杂度降低到人们可以掌握的程度,然后分别解决。所谓抽象就是把细节略去,先考虑最本质的东西。■使用数据流图、数据字典等规范化工具描述需求。第五页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计使用SA方法进行软件需求分析的步骤:(1)建立当前系统的具体模型分析当前系统和现实环境,描述当前系统的工作方式,客观地反映现实世界的实际情况。(2)抽象出当前系统的逻辑模型就是在理解当前系统“怎么做”的基础上,抽取出“做什么”的本质,从当前系统的具体模型抽象出当前系统的逻辑模型。第六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(3)建立目标系统的逻辑模型所谓目标系统是指将要开发的由计算机处理的系统。方法如下:在数据流图上把目标系统与当前系统在逻辑上不同的部分找出来,这部分就是要改变的部分。将要改变部分抽象为一个加工,再进行逐步分解,最后就可获得目标系统的逻辑模型。第七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计1.数据流图
数据流是数据在系统内的传输途径,数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的变换过程。数据流图是结构化系统分析的主要工具,它去掉了具体的组织机构、工作场所、物质流等,仅反映信息和数据存储、流动、使用以及加工的情况。
第八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计①数据流图的基本元素包括数据流、加工、数据存取文件、输入数据的源点和输出数据的汇点4类。常采用如图2-1所示的图形符号:图2-1数据流图基本图形符号第九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
绘制数据流图时,应先找出系统的数据源点与汇点及对应的输入数据流与输出数据流,然后从输入数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出系列逻辑加工,直到所需的输出数据流(即系统的汇点)。
第十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计数据流在传递过程中,需要一些加工处理。常见的加工关系及对应的图形符号如图2-2所示。图2-2数据流图加工关系第十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计数据流图应用举例:取款单信息付款储户核查登录账卡存折存折信息取款信息银行取款过程的数据流图反馈信息付款信息可取款信息第十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计②分层数据流图较复杂的实际问题中,仅用一个数据流图很难表达数据处理过程和数据加工情况,需要采用“先全局后局部,先整体后细节,先抽象后具体”的逐步求精原则,按照问题的层次结构逐步分解。首先确定顶层数据流图,把整个数据处理过程抽象为一个加工,它的输人数据和输出数据实际上反映了系统与外界环境的接口,这就是顶层数据流图。然后在上一层数据流图的基础上进一步细化,直到数据流图的加工不能再分解为止。
第十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
第十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
③画数据流图的步骤和原则画数据流图的基本步骤是自外向内,自顶向下,逐层细化,完善求精,并且需要遵循以下基本原则:顶层数据流图上的数据流必须封闭在外部实体之间。每个加工至少有一个输入数据流和一个输出数据流。在数据流图中,需按层给加工进行编号。编号应表明该加工处在哪一层,以及与上下层的父图与子图的对应关系。任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致,即父图与子图的平衡。图上每个元素都必须有名字,加工的名字应当表明做什么事情。第十五页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
数据流图画法举例:(培训中心管理系统数据流图)第十六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
第十七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
第十八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
第十九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计2.数据字典
数据字典是各类数据描述的集合。它通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。第二十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计①数据项
数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。对数据项的描述通常包括以下内容。数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}第二十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计②数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成(嵌套数据结构),或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以下内容。数据结构={数据结构名,含义说明,组成:{数据项或数据结构}}第二十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计③数据流数据流是数据结构在系统内的传输路径。对数据流的描述通常包括以下内容。数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
④数据存储数据存储是数据结构停留或保存的地方。数据存储的描述通常包括以下内容。数据存储={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}第二十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计⑤处理过程处理过程应描述处理逻辑的功能,详细地描述其输入输出的数据流以及这些数据的基本转换路径和策略说明性信息,对处理过程的描述通常包括以下内容。处理过程={处理过程名,编号,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}
第二十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计⑥外部实体外部实体是系统的“人-机”界面,系统的数据流由外部实体流入,经过加工处理之后,向外部实体流出。外部实体的描述如下。外部实体={外部实体的名称,编号,输入:{数据流},输出:{数据流}}第二十五页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计3.实例--学籍管理分析
学籍管理涉及的内容比较多,业务逻辑也较复杂。在不失一般性的基础上,本实例简化了学籍管理的业务逻辑.(1)需求描述工作内容:
■建立学生的学籍
■汇总每学期学生的学分■学生每门课程的的考试成绩
■学生的平均成绩
■汇总各分数段的人数
■各种查询第二十六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计涉及人员:■管理人员■班主任■任课教师■学生
系统初步:系统性质:MIS软件。系统使用者:管理人员、班主任、教师、学生等。系统运行环境:网络运行。第二十七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计表2-1学籍管理主要功能表功能名称功能说明学生管理登记学生的基本信息(姓名、性别、班级等),并提供查询功能。课程管理登记课程基本情况(课程名称、开课学期、课程类型、学分等),提供查询教师管理登记教师基本情况(姓名、年龄、性别、学历等),提供查询统计成绩管理登记学生各门课程的考试成绩、提供查询、统计功能授课管理登记教师讲授课程、授课地点、授课学期,提供查询功能编码维护维护系统中使用的编码(如职称编码、学院编码、班级编码等)第二十八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(2)分析设计顶层数据流图
管理人员、教师、班主任、学生等是数据输入的源点和数据输出的汇点。学生基本信息、教师信息、课程信息、教学计划、考试成绩等是数据存储文件。
图2-4学籍管理顶层数据流图第二十九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(3)逐步细化数据流图根据表2-1中列出的学籍管理的主要功能,将学籍管理加工细化分解为学生管理、课程管理、教师管理、成绩管理、授课管理和编码维护等子加工。图2-5学籍管理1层数据流图第三十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
根据实际业务,分析各处理流程,直到数据流图中出现的每个加工处理都不能再分解为止。成绩管理可以继续细化为如图2-6所示的成绩管理数据流图。图2-6成绩管理数据流图第三十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
图2-6所示的成绩录入和成绩查询都可以继续分解。例如:成绩录入加工可以继续细化为增加成绩、修改成绩、删除成绩等子加工,为了方便成绩录入,还需要班级学生名单查询子过程,因此图2-6所示的成绩管理的2层数据流图的成绩录入加工可以继续细化分解为图2-7所示成绩录入的3层数据流图。图2-7细化后的成绩录入数据流图第三十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(4)制定整理数据字典数据字典是系统中各类数据描述的集合。通常包括数据项、数据结构、数据流、数据存储、处理过程和外部实体等6个部分。
①数据项的描述以图2-7中的“学号”数据项为例说明:数据项名称:学号含义:唯一标识每个学生别名:类型:字符型长度:5
取值范围:00000至99999
取值含义:前2位标别该学生所在年级,后3位为顺序编号。第三十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
②数据流的描述以“学生名单”数据流为例。数据流名称:学生名单说明:某班全部学生的名单数据流来源:班级学生名单查询数据流去向:班级学生名单显示组成(包含的数据项):班级、学号、姓名平均流量:高峰期流量:第三十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
③数据存储的描述以数据存储“考试成绩”为例。数据存储:考试成绩说明:保存学生各门课的考试成绩流入数据流:新增的成绩、修改后的成绩流出数据流:原成绩组成:学号、姓名、成绩数据量:3000(学生)*15(课程)存取方式:随机存取第三十五页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计④处理过程的描述以处理过程“增加成绩”为例。处理过程:增加成绩说明:录入一个或一批学生某门课程的考试成绩输入:添加成绩要求输出:新增的成绩处理:在考试成绩数据存储中增加一个或一批学生的考试成绩。第三十六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计结构化设计
通常把设计工作划分为概要设计和详细设计两个阶段。概要设计阶段的主要任务是,通过仔细分析需求规格说明,对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。详细设计阶段的主要任务是,详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。第三十七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计结构化设计的主要原则如下:抽象就是把事物本质的共同特性提取出来而不考虑其他细节。软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。模块化模块是指把一个待开发的软件分解成若干小的简单的部分。每个模块可以完成一个特定的子功能,各个模块可以按一定的方法组装起来成为一个整体,从而实现整个系统的功能。
第三十八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计信息隐蔽指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。模块独立性模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
第三十九页,共一百四十三页,2022年,8月28日2.1结构化开发方法①内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。按照内聚性由弱到强的顺序可分为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。②耦合性是模块间互相连接紧密程度的度量。按照耦合性由弱到强的顺序可分为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。一般来说,设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共耦合,杜绝内容耦合。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合。第四十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
1)非直接耦合。如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。
2)数据耦合。如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。第四十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
3)标记耦合。如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。
4)控制耦合。如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
5)外部耦合。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。第四十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
6)公共耦合。若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
7)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。
第四十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
1)偶然性内聚。
偶然性内聚又称为巧合性内聚。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块。
2)逻辑性内聚。
这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。第四十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
3)时间性内聚。如果一个模块内的几个功能必须在同一时间内执行,但这些功能只是因为时间因素关联在一起,则称为时间性内聚。
4)过程性内聚。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程性内聚。
5)通信性内聚。如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。第四十五页,共一百四十三页,2022年,8月28日
6)信息性内聚。如果一个模块内完成许多功能,每个功能都有各自的入口点,并且代码相对独立,但所有功能都在相同的数据结构上完成,则该模块具有信息性内聚。
7)功能性内聚。一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割,则称该模块为功能内聚模块。第四十六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计1.概要设计概要设计的基本任务是:(1)设计软件系统结构在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。划分的具体过程是:①将一个复杂的系统按功能划分成模块;②确定每个模块的功能;③确定模块之间的调用关系;④确定模块之间的接口,即模块之间传递的信息;⑤评价模块结构的质量。第四十七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(2)数据结构及数据设计数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。数据设计的具体任务是:
■确定输入、输出文件的详细数据结构;■结合算法设计,确定算法所必需的逻辑数据结构及其操作;■确定对逻辑数据结构所必须的那些操作的程序模块,限制和确定各个数据设计决策的影响范围;■需要与操作系统或调度程序接口所必需的控制表进行数据交换时,确定其详细的数据结构和使用规则;■数据的保护性设计;■防卫性、一致性、冗余性设计。第四十八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计(3)编写概要设计文档。
■概要设计说明书
■数据库设计说明书
■集成测试计划等。(4)概要设计文档评审。对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都要进行评审。第四十九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
概要设计的设计过程为:
(1)分析数据流图,弄清楚数据流加工的过程;
(2)根据数据流图确定数据流图的类型;
(3)从数据流图导出系统的初始软件结构图;
(4)改进软件结构图,直到符合要求为止;
(5)复查。第五十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计数据流图的类型
◆转换处理型是对输入数据流进行转换而得到输出数据流的处理。处理过程由输入数据流、变换数据流和输出数据流3步组成。输入加工输入信息转换加工内部输入输入加工内部结果输出信息第五十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
◆事务处理型是对输入数据流进行某种加工后,按加工的结果选择一个输出数据流继续执行的处理。事务处理中,输入数据流称为事务流,加工称为事务中心,若干平行数据流称为事务路径。事务中心事务流P2事务路径2P1事务路径1P3事务路径3第五十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
常用的软件结构设计工具是结构图(SC,StructureChart),也称程序结构图。使用结构图描述软件系统的层次和分块结构关系,它反映了整个系统的功能实现以及模块与模块之间的联系与通讯。
表示模块,框内用文字标记模块名。箭头表示模块间的调用关系;边上的小箭头表示调用时模块间传送的数据,小箭头的方向表示传送信息的方向。表示上属模块有条件地调用下属模块。表示上属模块重复调用下属模块。第五十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
第五十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计转换分析使用转换分析技术可以把转换型处理数据流图转换为标准结构。(有了标准结构就可根据软件结构的度量准则、模块化准则、模块独立性准则完善软件结构,从而得到结构良好的最终结构图)。
◆
转换分析步骤为:确定数据流图的类型;确定输入流、转换流、输出流的流界;进行一级分解,设计上层模块;进行二级分解,设计中下层模块;进一步细化。
第五十五页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
(1)确定数据流图的类型(2)确立流界主要确定输入流和输出流的边界,独立出中心流。
◆
找出输入流的终点
◆
找出输出流的起点
◆
找出中心加工
4号加工1号加工A2号加工B中心加工C3号加工DEF输入输出转换流第五十六页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
(3)进行一级分解,设计上层模块。
在中心加工位置设计一个主模块,命名为M,其功能是控制整个软件结构,完成系统所要做的各项工作,为输人流设计一个输入控制模块,功能是为主模块提供输入信息。为输出流设计一个输出控制模块CO,功能是为主模块提供数据输出。为中心设计一个转换控制模块CT,功能是控制所有内部数据的操作。MCTCICOCCDD第五十七页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
(4)进行二级分解,设计中下层模块。自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、转换模块设计从属模块.
为输入流加工设计一个输入模块,向上属模块提供输入信息,而这个模块又需要两个下属模块,一个为此模块输入信息,另一个将接收的信息转换为上属模块所需的信息。如果输入模块还有输入模块时,又要重复上属过程,若输入模块是物理输入端时,则细化工作停止。
CIC取BB转换BBCA取A转化AAB第五十八页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
为输出流加工设计一个输出模块,接收中心加工的输出信息,而这个模块又需要两个下属模块,一个将接收的信息转换为输出的形式,另一个将它们输出。如果输出模块还有输出模块时,又要重复上属过程,若输出模块是物理输出端时,则细化工作停止。COD转换DD送EEE转换E送FFF第五十九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
为中心加工设计转换模块。
(5)进一步细化对上述采用转换分解技术方法得到的结构图按照设计标准进一步细化。CT处理CCDCD第六十页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计事务分析
(1)确定数据流图的类型(2)确立流界
◆
从数据流图中找出事务中心
◆
确定事务流
◆
确定事务路径
1事务流P2P1P3事务中心事务路经第六十一页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
(3)进行一级分析,设计上层模块。
事务分析的任务是从数据流图中导出具有接受分支和发送分支的软件结构。对事务中心设计“事务控制”模块;对事务流设计“接受事务’’模块;对事务路径,设计“发送事务’’模块。事务控制接受事务发送事务第六十二页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
(4)进行二级分解,设计中下层模块。对于接受分支,可用类似于转换处理型数据流图中对输人数据流的分析方法设计中下层模块。对于发送分支,在发送事务模块下为每个事务路径设计一个事务处理模块。这一层称为事务层。在事务层模块下,沿各事务路径进行分析,进一步细化,设计动作层模块及细节层模块等。第六十三页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计
好的设计准则:①模块独立性高。②模块规模适中。③深度、宽度适度④作用域在控制域内。⑤接口和界面简单。⑥模块的出口、入口为单入口、单出口。⑦功能可预测。
第六十四页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计2.详细设计
详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常见设计工具有:图形工具:程序流程图,N-S(方框图),PAD(问题分析图);表格工具:判定表;语言工具:PDL(伪码)。
第六十五页,共一百四十三页,2022年,8月28日2.1结构化开发方法第六十六页,共一百四十三页,2022年,8月28日第六十七页,共一百四十三页,2022年,8月28日第六十八页,共一百四十三页,2022年,8月28日方框图(N-S图)。2.1面向过程分析与设计第六十九页,共一百四十三页,2022年,8月28日2.1面向过程分析与设计第七十页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
面向对象方法和技术是自20世纪80年代以来逐渐形成的一种分析问题和解决问题的新方法,它的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。面向对象方法不把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。第七十一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
面向对象软件开发方法又称为OOSD(Object-OrientedSoftwareDevelopment)。
OOSD包括面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)3个方面。
OOP是基础,OOA和OOD是应用OOP的机制。所以应用OOSD时,必须使用面向对象程序设计语言。第七十二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计传统软件分析设计的问题
(1)传统的软件分析技术难以应对需求的不断变化
(2)传统软件开发方法无法实现高效的软件复用
(3)传统软件设计方法难以实现从分析到设计的直接过渡
第七十三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计面向对象分析与设计的主要特点
(1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑传统的面向过程的设计方法以算法为核心,将数据和过程作为相互独立的部分,程序代码用于处理这些数据
面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题
第七十四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(2)软件生存期各阶段所使用的方法、技术具有高度的连续性传统的软件开发过程把一个充满回溯的软件开发过程硬性地分割为几个阶段,而且各个阶段所使用的模型、描述方法不相同。面向对象的方法使用喷泉模型作为其工作模型,软件生存期各阶段没有明显的界限,开发过程回溯重叠,使用相同的描述方法和模型,使得软件生存期各阶段所使用的方法、技术具有高度的连续性。第七十五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(3)软件开发各阶段有机集成,有利于系统的稳定性
OOA、OOD与OOP有机地集成在一起,使开发过程始终围绕着建立问题领域的对象(类)模型进行,且各阶段解决的问题又各有侧重。(4)具有良好的重用性由于对象具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性,因此,对象类提供了较理想的可重用的软件成分。第七十六页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计2.2.3面向对象建模
面向对象分析与设计从3种角度建立模型:
1)使用对象模型描述系统数据结构
定义了做事情的实体
2)使用动态模型描述系统动态的协作及控制结构规定了什么时候做
3)使用功能模型描述系统功能系统应该“做什么”
第七十七页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计准备知识:
(1)对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。第七十八页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(3)类具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
第七十九页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(4)消息和方法对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。第八十页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(5)面向对象的特征封装性:将对象的特性(属性)和行为(方法)包装在一起。它实现了信息的隐蔽作用,使我们通过类的方法来操作该类的对象,而不必关心其内部实现。抽象性:将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。继承性:是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。第八十一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
多态性:描述的是面向对象里同一方法名的多种实现。多态有两类情况:一类是方法的重写(Overriding),另一类是方法的重载(Overloading)。重写发生在父类与子类的方法之间,重载发生在同一个类的方法之间。重写指子类可以重写实现父类中有相同的名称和参数的方法,以屏蔽父类的调用。重载指一个类中多个同名的方法,通过具有不同的参数个数或有不同的参数类型,来完成不同的实现,甚至返回不同的类型。第八十二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计2.2.3UML(统一建模语言)简介
UML(UnifiedModelingLanguage)不仅统一了Booch方法、OMT方法、OOSE方法、OOA/OOD的表示方法,而且对其作了进一步的发展,最终统一为大众接受的标准建模语言。
UML是一种定义良好、易于表达、功能强大的建模语言。它不但支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程。第八十三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计统一建模语言(UnifiedModelingLanguage,UML)是目前最流行的可视化建模语言,可以贯穿软件开发周期中的每一个阶段。
第八十四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计1.用例图(UseCaseDiagram)
用例图用于需求分析阶段,第一,它描述了待开发系统的功能需求,强调这个系统是什么;第二,它将系统看作黑盒,从外部参与者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和检测所开发系统是否满足需求。用例图的主要元素是角色(Actor)、用例(UseCase)、角色与用例间的通信角色代表触发系统功能的用户或其他系统用例代表具体的功能描述
第八十五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(1)角色(参与者)角色是系统外部的一个实体,它以某种方式参与用例的执行过程。角色通过向系统输入或请求输入某些事件来触发系统的执行。角色包括人角色(HumanActor)和外部系统角色(SystemActor)。系统的用户是人角色,用户通过与系统的交互,操纵系统,完成所需要的工作。与本系统交互的外部系统是另一种角色,它与本系统相互作用,交换信息。它可以是软件系统,也可以是硬件设备,例如在实时监控系统中的数据采集器等。
第八十六页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
第八十七页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(2)用例规定了系统或部分系统的行为。描述了系统具有的行为,但没有规定怎样实现这些行为,它是从用户(角色)的角度来看系统的特定方式。第八十八页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(3)用例间的关系①泛化关系(Generalization)(类属关系)即用例之间的一般和特殊关系②包含关系(Include)。即源用例包含了其他用例的行为③扩展关系(Extend)
即目标用例扩充了源用例的行为第八十九页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(4)UML用例图第九十页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(2)类图(ClassDiagram)
类图描述系统的静态结构,是面向对象系统建模最常用的图,它描述了类、接口及它们之间的关系。主要元素是类以及类之间的关系。
第九十一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计类描述了一类对象的属性和行为。
类与类之间通常有泛化(继承)、关联、聚合与组合、依赖等多种关系。第九十二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(1)泛化(继承)
继承是类与类之间较常见的关系,一个类(称为子类)继承另一个类(称为基类)的功能,并增加它自己的新功能。
第九十三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(2)关联关联表示两个类的对象之间存在某种语义上的联系,是类之间的一种很弱的联系。第九十四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(3)聚合与组合聚合与组合都是特殊的关联关系,都体现了整体与部分的关系。聚合体现的是整体与部分拥有的关系即has-a的关系,此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享比如计算机与CPU、公司与员工的关系等第九十五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计组合体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,例如人和人的大脑。
UML中定义聚合和组合都使用一个带菱形的连线表示,菱形指向具有整体性质的类,其中未填充的菱形表示聚合,填充的菱形表示组合。
第九十六页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(4)依赖当一个类A使用到另一个类B,并且B类的变化会影响到A类,则称A类依赖于B类。第九十七页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(3)对象图(ObjectDiagram)对象图描述了某一瞬间系统的对象、对象的状态及对象间的关系。对象图可以看作是类图的实例。对象是类的实例,对象间的连线是类之间的关联关系的实例。
Object1Object2第九十八页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(4)交互作用图包括时序图和协作图,描述了对象间的交互作用,由对象、对象间的关系组成,并包含在对象间传递的消息。时序图描述了消息的时间顺序,适合于描述实时系统和复杂的脚本。它是一张表,对象沿X轴排列,消息按照时间顺序递增沿Y轴排序。第九十九页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
协作图强调发送和接收消息的对象的组织结构。
协作图和时序图在语义上是相当的,可以彼此转换而不损失信息。第一百页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(5)状态图
状态图描述类的特定对象所有可能的状态,以及事件发生时状态的转移条件。
第一百零一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(6)活动图
主要是一个流图,描述了从活动到活动的流。它由一系列动作组成。
第一百零二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
交互作用图强调从对象到对象的控制流,活动图则强调从活动到活动的控制流。第一百零三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(7)组件图组件图描述了组件及组件间的关系。
它的用途是显示系统中的软件对其他软件组件的依赖关系。
第一百零四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(8)配置图
配置图描述软件系统如何部署到硬件环境中,反映了系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中组件的配置。它的用途是显示该系统不同的组件将在何处物理地运行,以及将如何彼此通信。第一百零五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
有很多CASE工具都支持UML设计,如Visio、PowerDesinger、RationalRose等。这些工具不仅提供了标准的符号来绘制UML的各类模型图,同时也提供了很多辅助工具来辅助分析人员进行模型检查和各类正向与逆向工程。
第一百零六页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计面向对象分析
1.面向对象分析的基本过程(1)学习、了解原始需求目的:1)初步了解业务需求
2)找出原始需求中存在二义性、不完整、不准确的需求为需求分析打基础(2)进一步的需求调研发现和改正原始陈述中的二义性和不一致性,补充遗漏的内容,从而使需求陈述更完整、更准确。
第一百零七页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(3)需求分析
深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。
(4)建立对象模型面向对象建模得到的模型包含3类,即对象模型、动态模型、功能模型。这3类模型在不同的系统中的重要程度不同,但是对象模型是任何一个软件系统都需要的,当涉及交互作用和时序时(如用户界面及过程控制等),需要使用动态模型。第一百零八页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
2.建立对象模型对象模型的建立主要是确定类、建立类之间的关联关系、确定类的属性等过程。
(1)确定类与对象
以自然语言书写的需求陈述为依据,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。
第一百零九页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
用这种简单方法确定的候选者是不准确的,往往包含大量不正确的或不必要的事物,必须经过进一步的严格筛选,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象,筛选时主要依据下列标准:①冗余。如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述力的名称。②无关。仅需要把与本问题密切相关的类放进目标系统中,与当前要解决的问题无关的类应该删掉。
第一百一十页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计③笼统。在需求陈述中常常使用一些笼统的名词,如果系统无需处理有关它们的信息或者有更明确更具体的名词对应它们所暗示的事务,那么就应该去掉这些笼统的或模糊的类。④属性。在需求陈述中有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类与对象中去掉。⑤操作。在需求陈述中有时可能使用一些既可作为名词,又可作为动词的词,应该慎重考虑它们在本问题中的含义,以便正确地决定把它们作为类还是作为类中定义的操作。⑥实现。在分析阶段不应该过早地考虑怎样实现目标系统,在分析阶段过早地考虑它们反而会分散注意力,因此应该去掉仅和实现有关的候选类与对象。第一百一十一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计需要不断地和用户、领域专家交流,反复构造模型,逐渐澄清二义性,改正错误,才能最终把模型建立起来
第一百一十二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(3)划分主题为了降低复杂程度,在开发大型、复杂系统的过程中,可以把系统再进一步划分成几个不同的主题,也就是在概念上把系统包含的内容分解成若干范畴。应该按问题领域而不是用功能分解方法来确定主题。
(4)确定属性通常,在需求陈述中用名词词组表示属性,但是不可能仅依靠需求陈述找到所有属性,还必须借助于领域知识和常识才能分析得出需要的属性。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。
第一百一十三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(5)识别继承关系一般说来,可以使用两种方式建立继承(即泛化)关系:①自底向上:抽象出现有类的共同性质泛化出父类,这个过程实质上模拟了人类归纳思维过程。②自顶向下:把现有类细化成更具体的子类,这模拟了人类的演绎思维过程。从应用域中常常能明显看出应该做的自顶向下的具体化工作。第一百一十四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
3.建立动态模型建立动态模型基本包括:
1)编写典型交互行为的脚本;
2)从脚本中提取出事件,确定触发每个事件的动作对象以及接收事件的目标对象;
3)排列事件发生的次序,确定每个对象可能有的状态及状态间的转换关系,并用状态图描绘它们;
4)比较各个对象的状态图,检查它们之间的一致性,确保事件之间的匹配。第一百一十五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
4.建立功能模型功能模型表明了系统中数据之间的依赖关系,以及有关的数据处理功能,它由一组数据流图组成。数据流图的画法与结构化分析一样,其中的处理功能可以用IPO图(或表)、伪码等多种方式进一步描述。在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。与对象模型和动态模型比较起来,数据流图并没有增加新的信息,有助于软件开发人员更深入地理解问题域,改进和完善自己的设计。第一百一十六页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
IPO指结构化设计中变换型结构的输入(Input)、加工(Processing)、输出(Output)。
IPO图是对每个模块进行详细设计的工具,它是输入加工输出(INPUTPROCESSOUTPUT)图的简称.
第一百一十七页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计面向对象设计
按照面向对象方法的“喷泉模型”,软件生命周期的各个阶段交替回溯,整个生命周期的概念、属性、描述方法具有一致性,因此从分析到设计无须表示方法的转换,只是分析和设计的任务分工与侧重不同。第一百一十八页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计面向对象分析建立的是应用领域面向对象的模型,而面向对象设计建立的是软件系统的模型。与OOA的模型比较,OOD模型的抽象层次较低,但是建模的原则和方法是相同的。总体看,分析与设计本质上是一个多次反复迭代的过程,而面向对象分析与面向对象设计的界限尤其模糊。用面向对象方法设计软件,原则上也是先进行总体设计(即系统设计),然后再进行详细设计(对象),当然,它们之间的界限非常模糊,事实上是一个多次反复迭代的过程。
第一百一十九页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计1.面向对象设计的基本任务将分析阶段所创建的分析模型转换为设计模型,解决如何做的问题。面向对象分析主要考虑系统做什么,而不关心系统如何实现的问题。在面向对象设计需要以OOA模型为基础,重新定义或补充一些新的类,或在原有类中补充或修改一些属性及操作。因此,OOD的目标是产生一个满足用户需求的、可实现的OOD模型。第一百二十页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计面向对象的设计包括系统设计和对象设计。
(1)系统设计将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作。进行系统设计的关键是子系统的划分,子系统由它们的责任及所提供的服务来标识,在OOD中,这种服务是完成特定功能的一组操作。
第一百二十一页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(2)对象设计为每个类的属性和操作进行详细设计,包括属性和操作的数据结构及实现算法,以及类之间的关联。另外,在OOA阶段,将一些与具体实现条件密切相关的对象,例如,与图形用户界面(GUI)、数据管理、硬件及操作系统有关的对象推迟到OOD阶段考虑。
第一百二十二页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
(3)设计优化主要涉及提高效率的技术和建立良好的继承关系的方法。提高效率的技术包括增加冗余关联以提高访问效率、调整查询次序、优化算法等技术。建立良好的继承关系是优化设计的重要内容,通过对继承关系的调整实现。第一百二十三页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计
2.面向对象设计准则
(1)模块化面向对象软件开发模式很自然地支持了把系统分解成模块的设计原理:对象就是模块,是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。
(2)抽象面向对象方法不仅支持过程抽象,而且支持数据抽象,类实际上是一种抽象数据类型。
第一百二十四页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(3)信息隐藏在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了接口与实现,从而支持了信息隐藏。对于类的用户来说,属性的表示方法和操作的实现算法都应该是隐藏的。(4)弱耦合在面向对象方法中,耦合主要指不同对象之间相互关联的紧密程度。如果一类对象过多地依赖其他类对象来完成自己的工作,则不仅给理解、测试或修改这个类带来很大困难,而且还将大大降低该类的可重用性和可移植性。第一百二十五页,共一百四十三页,2022年,8月28日2.2面向对象分析与设计(5)强内聚内聚衡量一个模块内各个元素彼此结合的紧密程度。也可以把内聚定义为:设计中使用的一个构件内的各个元素,对完成一个定义明确的目的所做出的贡献程度。在设计时应该力求做到高内聚。(6)可重用重用有两方面的含义:尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类);如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。第一百二十六页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
大多数软件系统中都包含数据库处理,软件设计的成败与数据库设计息息相关。设计一个好的数据库需要遵循软件工程的理论和方法,采用规范的设计方法,根据用户的需求,进行分析、归纳、抽象,最终设计出符合实际情况的数据模型,选择一种符合要求的数据库管理系统,最终实现对数据模型及数据的管理。第一百二十七页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
规范的设计方法之一——新奥尔良(NewOrleans)方法把数据库设计分成:6个阶段。第一百二十八页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
需求分析
需求分析就是分析用户的需要与要求,确定系统必须完成哪些工作,对系统提出完整、准确、清晰、具体的要求。确定用户的最终需求非常困难。一方面用户缺少计算机知识,开始时无法确定计算机究竟能为自己做什么,不能做什么,无法一下子准确地表达自己的需求,用户所提出的需求往往不断地变化。另一方面设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。第一百二十九页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
需求分析阶段应该了解以下内容:①组织机构情况。包括部门组成情况、各部门的职责、应用程序的使用权限等,在此基础上形成系统功能权限的划分。②各部门的业务活动情况。包括各部门输入和使用哪些数据,如何加工处理这些数据,处理数据需要什么具体的算法,产生什么信息,这些输出信息提供到什么部门,输出结果的格式是什么。在此基础上形成数据流图和数据字典。③用户对系统的功能要求。在熟悉了业务活动的基础上,协助用户明确对系统的各种要求,包括信息要求、处理要求、完全性与完整性要求。第一百三十页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
常用的调查方法有以下几种。①亲自参与业务活动,了解业务处理的基本情况②请专人介绍③与用户交流、询问等方式来解决存在的疑问④设计调查表请用户填写⑤查阅记录。即查问与原系统有关的数据记录。⑥学习文件。及时了解掌握与用户业务相关的政策和业务规范等文件。⑦使用旧系统。如果用户已经使用计算机系统协助业务处理,可以通过使用旧系统,掌握已有的需求、了解用户变化的和新增的需求。
第一百三十一页,共一百四十三页,2022年,8月28日2.3数据库建模与设计
2.3.2概念结构设计概念结构独立于数据库逻辑结构,也独立于支持数据库的DB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 奥龙计划-奥园连锁经营战略策划方案
- 国庆节团建活动方案设计
- 散货物流行业营销策略方案
- 爱心之旅方案书可编辑版
- CFG桩基工程施工方案
- 北京市重要道路地栽花卉布置工程施工组织方案
- xx小区杜绝高空抛物等安全文明倡议活动方案
- 范本新学期学习计划范文集锦5篇
- 专业技术工作总结范文
- 个人年度述职报告范文
- 小记者第一课我是一名小记者
- 团结友爱和睦相处主题班会
- 2024年采购部年度工作总结
- 2024年江苏省中等职业学校学生学业水平考试机械CAD绘图评分表
- 期中 (试题) -2024-2025学年外研版(三起)英语六年级上册
- 中小学教师职业道德规范(2023年修订)全文1500字
- 2024年车路云一体化系统建设与应用指南报告
- 2024中国移动重庆公司社会招聘138人高频难、易错点500题模拟试题附带答案详解
- 二十届三中全会精神知识竞赛试题及答案
- (完整版)初中道德与法治课程标准
- 在建工地第三方安全文明巡查方案、在建工地安全文明施巡查方案
评论
0/150
提交评论