软件工程课件第4章_第1页
软件工程课件第4章_第2页
软件工程课件第4章_第3页
软件工程课件第4章_第4页
软件工程课件第4章_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、 总体的基本目的就是回总体的基本目的就是回答:答:“概括地说,系统应概括地说,系统应该如何实现?该如何实现?”。 在软件开发时期中,设计在软件开发时期中,设计阶段是最富有活力、最需要发阶段是最富有活力、最需要发挥创造精神的阶段。在软件需挥创造精神的阶段。在软件需求分析阶段,已搞清楚了软件求分析阶段,已搞清楚了软件“做什么做什么”的问题,并把这些的问题,并把这些需求通过规格说明书描述了出需求通过规格说明书描述了出来,这也是目标系统的逻辑模来,这也是目标系统的逻辑模型。型。 进入了设计阶段,要把软件进入了设计阶段,要把软件“做做什么什么”的逻辑模型变换为的逻辑模型变换为“怎么做怎么做”的物理模型,

2、即着手实现软件的需求,的物理模型,即着手实现软件的需求,并将设计的结果反映在并将设计的结果反映在“设计规格说设计规格说明书明书”文档中,所以软件设计是一个文档中,所以软件设计是一个把软件需求转换为软件表示的过程,把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总体最初这种表示只是描述了软件的总体的体系结构,称为软件总体设计或结的体系结构,称为软件总体设计或结构设计。然后对结构进一步细化,称构设计。然后对结构进一步细化,称为详细设计或结构设计。为详细设计或结构设计。 总体设计总体设计4.1 总体设计的过程总体设计的过程4.2 软件设计的概念和原理软件设计的概念和原理4.3 启发式规则

3、启发式规则4.4 图形工具图形工具4.5 面向数据流的设计方法面向数据流的设计方法4.6 小结小结 软件设计在开发阶段软件设计在开发阶段中的重要性中的重要性 总体设计要着手实现软件的需总体设计要着手实现软件的需求,即要着手解决求,即要着手解决“怎么做怎么做”的问题。的问题。 基本目的:就是回答基本目的:就是回答“概括地概括地说,系统应该如何实现?说,系统应该如何实现?”这这个问题。个问题。 重要任务:重要任务:设计软件的结构,也就设计软件的结构,也就是要确定系统中每个程序是由哪些是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间模块组成的,以及这些模块相互间的关系。的关系。 必要性:

4、必要性:可以站在全局高度上,花可以站在全局高度上,花较少成本,从较抽象的层次上分析较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开理的软件结构,从而用较低成本开发出较高质量的软件系统。发出较高质量的软件系统。4.1 总体设计的过程总体设计的过程l 想供选择的方案想供选择的方案l 选取合理的方案选取合理的方案l 推荐最佳方案推荐最佳方案l 功能分解功能分解l 设计软件结构设计软件结构l 数据库设计数据库设计l 制定测试计划制定测试计划l 书写文档书写文档l 审查和复

5、审审查和复审 软件设计的任务软件设计的任务基本任务:基本任务:1、设计软件系统结构、设计软件系统结构(简称软件(简称软件结构)为了实现目标系统,最终必结构)为了实现目标系统,最终必须设计出组成这个系统的所有程序须设计出组成这个系统的所有程序和数据库(文件),对于程序,则和数据库(文件),对于程序,则首先进行结构设计,具体为:首先进行结构设计,具体为:结构设计结构设计 (1)采用某种设计方法,将一个复杂)采用某种设计方法,将一个复杂的系统按功能划分成模块。的系统按功能划分成模块。 (2)确定每个模块的功能。)确定每个模块的功能。 (3)确定模块之间的调用关系。)确定模块之间的调用关系。 (4)确

6、定模块之间的接口,即模块之)确定模块之间的接口,即模块之间传递的信息。间传递的信息。 (5)评价模块结构的质量。)评价模块结构的质量。 从以上内容看,软件结构的从以上内容看,软件结构的设计是以模块为基础的,在需求设计是以模块为基础的,在需求分析阶段,已经把系统分解成层分析阶段,已经把系统分解成层次结构。设计阶段,以需求分析次结构。设计阶段,以需求分析的结果为依据,从实现的角度进的结果为依据,从实现的角度进一步划分为模块,并组成模块的一步划分为模块,并组成模块的层次结构。层次结构。 软件结构的设计是总体设软件结构的设计是总体设计关键的一步,直接影响到下计关键的一步,直接影响到下一阶段详细设计与编

7、码的工作。一阶段详细设计与编码的工作。软件系统的质量及一些整体特软件系统的质量及一些整体特性都在软件结构的设计中决定。性都在软件结构的设计中决定。因此应由经验丰富的软件人员因此应由经验丰富的软件人员担任,采用一定的设计方法,担任,采用一定的设计方法,选取合理设计的方案。选取合理设计的方案。2、数据结构及数据库设计、数据结构及数据库设计 对于大型数据处理的软件系对于大型数据处理的软件系统,除了控制结构的模块设计统,除了控制结构的模块设计外,数据结构与数据库设计也外,数据结构与数据库设计也是重要的。是重要的。 (1)数据结构的设计。逐步细)数据结构的设计。逐步细化的方法也适用于数据结构的化的方法也

8、适用于数据结构的设计。设计。(2)数据库设计。指数据存储文件)数据库设计。指数据存储文件的设计,主要进行以下几方面设计:的设计,主要进行以下几方面设计:概念设计。在数据分析的基础上,概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行采用自底向上的方法从用户角度进行视图设计,一般用视图设计,一般用er模型来表示数模型来表示数据模型,这是一个概念模型。据模型,这是一个概念模型。逻辑设计。逻辑设计。物理设计。物理设计。3编写总体设计文档编写总体设计文档 主要有:(主要有:(1)总体设计说明书。()总体设计说明书。(2)数据库设计说明书,主要给出所使用数据库设计说明书,主要给出所使用的的d

9、bms简介、数据库的概念模型、逻简介、数据库的概念模型、逻辑设计、结果。(辑设计、结果。(3)用户手册,对需)用户手册,对需求分析阶段编写的用户手册进行补充。求分析阶段编写的用户手册进行补充。(4)修订测试计划,)修订测试计划, 对测试策略、方对测试策略、方法、步骤提出明确要求。法、步骤提出明确要求。4评审评审 最后应该对总体设计的结果进最后应该对总体设计的结果进行严格的技术审查和复审,这行严格的技术审查和复审,这是在所有步骤中必不可少的,是在所有步骤中必不可少的,但也是最容易忽视的,请大家但也是最容易忽视的,请大家勿必注意到这一步。勿必注意到这一步。4.2 软件设计的概念和原理软件设计的概念

10、和原理l4.2.1 模块化模块化l4.2.2 抽象抽象l4.2.3 信息隐蔽和局部化信息隐蔽和局部化l4.2.4 模块独立模块独立 4.2.1模块(模块(module)化化 模块:在程序中是数据说明、可执行语句模块:在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、址的元素,如高级语言中的过程、函数、子程序等等。在软件的体系结构中,模块子程序等等。在软件的体系结构中,模块是可组合、分解和更换的单元。模块具有是可组合、分解和更换的单元。模块具有以下几种基本属性:以下几种基本属性: 接口:指模块的输入与输出。接

11、口:指模块的输入与输出。 功能:指模块实现什么功能。功能:指模块实现什么功能。 逻辑:描述内部如何实现要求的功能及所逻辑:描述内部如何实现要求的功能及所需的数据。需的数据。状态:该模块的运行环境,即模块的调用状态:该模块的运行环境,即模块的调用与被调用关系。与被调用关系。功能、状态与接口反映模块的外部特性,功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。逻辑反映它的内部特性。模块化:指解决一个复杂问题时自顶向下模块化:指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块个模块完成一个特定的子功能

12、,所有的模块按某种方法组装起来,成为一个整体,完成按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。模块化是软件解决整个系统所要求的功能。模块化是软件解决复杂问题所具备的手段,为了说明这一点,复杂问题所具备的手段,为了说明这一点,可将问题的复杂性和工作量的关系进行推理。可将问题的复杂性和工作量的关系进行推理。设问题设问题x,表示它的复杂性函数为,表示它的复杂性函数为c(x),解决它),解决它所需要的工作量函数为所需要的工作量函数为e(x)。对于问题)。对于问题p1和和p2,如果如果 c(p1)c(p2) 即即p1比比p2复杂复杂那么那么 e(p1)e(p2) 即问题越复杂,所需要即问

13、题越复杂,所需要的工作量越大。的工作量越大。根据解决一般问题的经验,规律是:根据解决一般问题的经验,规律是: c(p1p2)c(p1)c(p2)即一个问题由两个问题组合而成的复杂度大于分别即一个问题由两个问题组合而成的复杂度大于分别考虑每个问题的复杂度之和。这样,可推出:考虑每个问题的复杂度之和。这样,可推出: e(p1p2)e(p1)e(p2)由此可见,由此可见,开发一个大而复杂的软件系统,将它进开发一个大而复杂的软件系统,将它进行适当的分解,不但可降低其复杂性,还可减少开发行适当的分解,不但可降低其复杂性,还可减少开发工作量,从而降低开发成本,提高软件生产率,这就工作量,从而降低开发成本,

14、提高软件生产率,这就是模块化的依据。是模块化的依据。模块化和软件成本模块化和软件成本 如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了? 当模块数目增加时每个模块将减小,开发单个模块需要的成本(工作量)确实减小了;但是随着模块数目增加,设计模块间接口所需要的工作量将增加。4.2.2 抽象抽象 抽象:是认识复杂现象过程抽象:是认识复杂现象过程中使用的思维工具,即抽出事中使用的思维工具,即抽出事物本质的共同特性而暂不考虑物本质的共同特性而暂不考虑它的细节,不考虑其它因素。它的细节,不考虑其它因素。 4.2.3 信息隐蔽和局部化信息隐蔽和局部化 信息隐蔽:把系统分解为模块时应信息

15、隐蔽:把系统分解为模块时应该遵守的指导思想,在设计和确定该遵守的指导思想,在设计和确定模块时,使得一个模块内包含的信模块时,使得一个模块内包含的信息(过程或数据),对于不需要这息(过程或数据),对于不需要这些信息的其他模块来说,是不能访些信息的其他模块来说,是不能访问的。问的。信息隐藏的目的信息隐藏的目的 是为了提高模块的独立性,是为了提高模块的独立性,当修改或维护模块时减少当修改或维护模块时减少把一个模块错误扩散到其把一个模块错误扩散到其它模块中去的机会。它模块中去的机会。4.2.4模块独立性模块独立性(module independence) 模块独立性:概括了把软件划模块独立性:概括了把

16、软件划分为模块时要遵守的准则,也是判分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。坚断模块构造是不是合理的标准。坚持模块的独立性,一般认为是获得持模块的独立性,一般认为是获得良好设计的关键。每个模块只完成良好设计的关键。每个模块只完成系统要求的独立的子功能,并且与系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。其他模块的联系最少且接口简单。 l 1、耦合性耦合性(coupling)l 也称块间的联系。指软件系统结构中各模也称块间的联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。块间相互联系紧密程度的一种度量。l (1)非直接耦合()非直接耦合(no direc

17、t coupling)。)。没有信息传递没有信息传递l (2) 数据耦合(数据耦合(data coupling)。参数:)。参数:简单变量简单变量l (3) 特征耦合(特征耦合(stamp coupling)。参数:)。参数:数据结构数据结构返回耦合性耦合性(coupling) (4) 控制耦合(控制耦合(control coupling)。传递:)。传递:开关量、标志等开关量、标志等 (5)外部耦合外部耦合(external coupling).访问一个访问一个全局量。全局量。 (6) 公共耦合公共耦合(common coupling)。访问的。访问的是全局变量或数据结构等是全局变量或数据结

18、构等 (7) 内容耦合内容耦合(content coupling)。直接调用。直接调用另一模块的数据或直接转移到另一模块中另一模块的数据或直接转移到另一模块中去。去。 123456 弱耦合弱耦合 中耦合中耦合 较强耦合较强耦合 强耦合强耦合弱弱 强强 2、内聚性、内聚性(cohesion)l 又称块内联系。指模块的功能强度又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内段之间)联系的越紧密,则它的内聚性就

19、越高,内聚性有以下几种类聚性就越高,内聚性有以下几种类型:型:(1)偶然性内聚)偶然性内聚(coincidental cohesion):块内各组成成份在功能上块内各组成成份在功能上是互不相关的。是互不相关的。(2)逻辑内聚)逻辑内聚(logical cohesion):通常由若干个逻辑功能相似的成份通常由若干个逻辑功能相似的成份组成。组成。( 3 ) 时 间 内 聚) 时 间 内 聚 ( t e m p o r a l cohesion):这类模块所含的成分,:这类模块所含的成分,是由相同的执行时间将它们联结到是由相同的执行时间将它们联结到一起的。一起的。 (4) 过程性内聚(过程性内聚(p

20、rocedural cohesion):当一个模块中包含的):当一个模块中包含的一组任务必需按照某一特定的次序一组任务必需按照某一特定的次序执行时,就称为过程性模块。执行时,就称为过程性模块。 (5)通信内聚)通信内聚(communicational cohesion):这类模块的标志是,:这类模块的标志是,模块内部的各个成份都使用同一个模块内部的各个成份都使用同一个输入数据,或者产生同一个输出数输入数据,或者产生同一个输出数据。它们借公用数据而联系在一起,据。它们借公用数据而联系在一起,故称为通讯性内聚。故称为通讯性内聚。 ( 6 ) 顺 序 内 聚) 顺 序 内 聚 ( s e q u e

21、 n t i a l cohesion):这类模块中的各组成:这类模块中的各组成部分是顺序执行的。在通常情况下,部分是顺序执行的。在通常情况下,一个处理框的输出就是下一个处理一个处理框的输出就是下一个处理框的输入。框的输入。 ( 7 ) 功 能 内 聚) 功 能 内 聚 ( f u n c t i o n a l cohesion):在这类模块中,所有:在这类模块中,所有的成份结合在一起,用于完成一个的成份结合在一起,用于完成一个单一的功能。单一的功能。“一个模块,一个功一个模块,一个功能能”,已成为模块化,已成为模块化设计的一条准则,也设计的一条准则,也是设计人员争取的目是设计人员争取的目标

22、。标。1234567 低内聚低内聚 中内聚中内聚 高内聚高内聚 弱弱 强强返回 4.34.3启发式规则启发式规则 改进软件结构提高模块独立性改进软件结构提高模块独立性 模块规模应该适中模块规模应该适中 深度、宽度、扇入和扇出都应适当深度、宽度、扇入和扇出都应适当 模块的作用域应该在控制域之内模块的作用域应该在控制域之内 力争降低模块接口的复杂程度力争降低模块接口的复杂程度 设计单入口单出口的模块设计单入口单出口的模块 模块功能应该可以预测模块功能应该可以预测4.3.1改进软件结构提高模块独立性改进软件结构提高模块独立性划分模块时尽量做到高内聚,低耦合,划分模块时尽量做到高内聚,低耦合,保持模块

23、相对独立性,并以此原则优保持模块相对独立性,并以此原则优化初始的软件结构。化初始的软件结构。 (1 1)如果若干模块之间耦合强度过高,)如果若干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合每个模块内功能不复杂,可将它们合并,以减少信息的传递和公共区的引并,以减少信息的传递和公共区的引用。用。 (2 2)若有多个相关模块,应对它们的)若有多个相关模块,应对它们的功能进行分析,消去重复功能。功能进行分析,消去重复功能。4.3.2模块规模应该适中模块规模应该适中 在考虑模块的独立性同时,为了增在考虑模块的独立性同时,为了增加可理解性,模块的大小最好在加可理解性,模块的大小最好在50-150

24、50-150条语句左右,可以用条语句左右,可以用1-21-2页页打印纸打印,便于人们阅读与研究。打印纸打印,便于人们阅读与研究。模块的大小,可以用模块中所含模块的大小,可以用模块中所含语句的数量的多少来衡量。把模语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。块的大小限制在一定的范围之内。通常规定其语句行数在通常规定其语句行数在5050100100左右,保持在一页纸之内,最多左右,保持在一页纸之内,最多不超过不超过500500行。行。4.3.3深度、宽度、扇入和扇出都应深度、宽度、扇入和扇出都应适当适当 深度是软件结构设计完成后观察到的情况,能深度是软件结构设计完成后观察到的情况,能

25、粗略地反映系统的规模和复杂程度,宽度也能粗略地反映系统的规模和复杂程度,宽度也能反映系统的复杂情况。宽度与模块扇出有关,反映系统的复杂情况。宽度与模块扇出有关,一个模块的扇出太多,说明本模块过分复杂,一个模块的扇出太多,说明本模块过分复杂,缺少中间层。单一功能模块的扇入数大比较好,缺少中间层。单一功能模块的扇入数大比较好,说明本模块为上层几个模块共享的共用模块,说明本模块为上层几个模块共享的共用模块,重用率高。但是不能把彼此无关的功能凑在一重用率高。但是不能把彼此无关的功能凑在一起形成一个通用的超级模块,虽然它扇入高,起形成一个通用的超级模块,虽然它扇入高,但低内聚。因此非单一功能的模块扇入高

26、时应但低内聚。因此非单一功能的模块扇入高时应重新分解,以消除控制耦合的情况。软件结构重新分解,以消除控制耦合的情况。软件结构从形态上,总的考虑是顶层扇出数较高一些,从形态上,总的考虑是顶层扇出数较高一些,中间层扇出数较低一些,底层扇入数较高一些。中间层扇出数较低一些,底层扇入数较高一些。4.3.4模块的作用域应该在控制域之内模块的作用域应该在控制域之内 一个模块的作用范围应在其控制范围之内,且判定所一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。在的模块应与受其影响的模块在层次上尽量靠近。在软件结构中,由于存在着不同事务处理的需要,某在软件结构中,由于

27、存在着不同事务处理的需要,某一层上的模块会存在着判断处理,这样可能影响其他一层上的模块会存在着判断处理,这样可能影响其他层的模块处理。为了保证含有判定功能模块的软件设层的模块处理。为了保证含有判定功能模块的软件设计的质量,引入了模块的作用范围(或称影响范围)计的质量,引入了模块的作用范围(或称影响范围)与控制范围的概念。与控制范围的概念。一个模块的作用范围指受该模块内一个判定影响的所一个模块的作用范围指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集其所有下属模块(直接或间接从属

28、于它的模块)的集合。合。模块的模块的控制范围控制范围包括它本身及其所有包括它本身及其所有的从属模块。的从属模块。 模块的模块的作用范围作用范围是指模块内一个判定是指模块内一个判定的作用范围,凡是受这个判定影响的的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。所有模块都属于这个判定的作用范围。 如果一个判定的作用范围包含在这个如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这判定所在模块的控制范围之内,则这种结构是简单的,否则,它的结构是种结构是简单的,否则,它的结构是不简单的。不简单的。4.3.5力争降低模块接口的复杂程度力争降低模块接口的复杂程度 模块的接口要

29、简单、清晰、含义明模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与确,便于理解,易于实现、测试与维护。维护。 4.3.6设计单入口单出口的模块设计单入口单出口的模块 模块间不要出现内容耦合。模块间不要出现内容耦合。 这也是结构化设计的一个要求。这也是结构化设计的一个要求。 4.3.7模块功能应该可以预测模块功能应该可以预测 只要输入的数据相同就产生同样的只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预输出,这个模块的功能就是可以预测的。带有内部测的。带有内部“存储器存储器”的模块的模块的功能可能是不可预测的,因为它的功能可能是不可预测的,因为它的输出可能取决于内部存储器

30、(例的输出可能取决于内部存储器(例如某个标记)的状态。如某个标记)的状态。4.4 图形工具图形工具 4.4.1 层次图和层次图和hipo图图 4.4.2 结构图结构图4.4.1 层次图和层次图和hipo图图 层次图层次图(sc)(sc)用来描绘软件的层次结构。用来描绘软件的层次结构。scsc图是图是sdsd方法在总方法在总体设计中使用的主要工具,用来显示软件的组成模块及其体设计中使用的主要工具,用来显示软件的组成模块及其调用关系。层次图中的一个矩形代表一个模块,用带箭头调用关系。层次图中的一个矩形代表一个模块,用带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出的连线表示模块间的调用关系

31、。在调用线的两旁,应标出传入和传出模块的数据流。传入和传出模块的数据流。 1 1、模块、模块 2 2、调用关系、调用关系 3 3、传入、传入/ /传出数据流传出数据流 hipohipo图(图(hierarchy plus input/processing/outputhierarchy plus input/processing/output)是)是美国美国ibmibm公司公司7070年代发展起来的表示软件系统结构的工具。年代发展起来的表示软件系统结构的工具。它既可以描述软件总的模块层次结构它既可以描述软件总的模块层次结构hh图,又可以描述图,又可以描述每个模块输入每个模块输入/ /输出数据、

32、处理功能及模块调用的详细情况输出数据、处理功能及模块调用的详细情况ipoipo图。图。 4.4.2 结构图结构图 scsc图是用来显示软件的组成模块及其调用关系。图是用来显示软件的组成模块及其调用关系。sdsd方法约定,用矩形来表示模块,用带箭头的连线表方法约定,用矩形来表示模块,用带箭头的连线表示模块间的调用关系。在调用关系的两旁,应标出示模块间的调用关系。在调用关系的两旁,应标出传入和传出模块的数据流。传入和传出模块的数据流。 (1)(1)模块的表示符号模块的表示符号 下图显示了下图显示了scsc图允许使用的图允许使用的6 6种模块。其中传入、种模块。其中传入、传出和变换模块用来组成变换结构中的各个相应部传出和变换模块用来组成变换结构中的各个相应部分。源模块是不调用其它模块的传入模块,只用于分。源模块是不调用其它模块的传入模块,只

温馨提示

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

最新文档

评论

0/150

提交评论