《软件设计与体系结构(第二版)》2_第1页
《软件设计与体系结构(第二版)》2_第2页
《软件设计与体系结构(第二版)》2_第3页
《软件设计与体系结构(第二版)》2_第4页
《软件设计与体系结构(第二版)》2_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

内容提要2.1 什么是软件模型2.2 软件模型的发展脉络2.3 软件模型解析2.3.1 功能模型2.3.2 对象模型2.3.3 组件模型2.3.4 配置型组件模型2.3.5 服务模型2.3.6 抽象模型2.4 深入认识软件模型2.4.1 软件体系结构的描述2.4.2 软件体系结构的设计2.5 体系结构描述语言2.5.1 ADL简介2.5.2 典型ADL的比较2.5.3 描述体系结构行为

12.1 什么是软件模型体系结构强调一种思想的抽象,通过一些原则和方法等具体体现。体系结构的另一种解释,是指系统的基本组成元素及其相互关系的抽象。软件体系结构也是体系结构概念在软件上的投影或具体应用,是一系列关于软件系统组织的重大决策,是软件系统结构的结构,由软件元素、元素的外部可见属性及元素间的关系组成。软件模型作为软件组成的最基本单元的抽象,既反映了软件体系结构构建的核心思想,也奠定了软件体系结构构建的基础。一方面,定义了软件体系结构构建的基本单元元素的形态;另一方面,定义了基本单元元素之间关系的基本形态。不同的软件模型,隐式地定义了软件体系结构构建的不同方法。

2模型模型(Model),一般是指客观世界中存在事物的一种抽象。事物可以是具体的,例如房子、人,也可以是抽象的,例如思想、算法。模型一般都需要通过某种形式表达出来,以便交流。从形式上看,模型的表达,有文字(包括自然语言和数学语言)、图形(图形语言)或图文混合。用数学语言表达的模型,称为数学模型,这种模型的形式化级别最高,一般用来描述事物的抽象本质,刻画事物内在的稳定规律。

3软件模型软件模型(SoftwareModel),是指软件的一种抽象,目前,一般通过非数学模型来描述。相对于其它事物,软件具有特殊性。这主要体现在软件描述的基本元素的一致性,也就是说,无论如何描述软件,同构模型中描述的最基本单元的抽象,都是统一的。将这种统一的基本单元的抽象,称为软件模型,而将软件系统的抽象,称为软件体系结构。因此,软件模型可以看做一种元模型(MetaModel)。

4软件模型

52.2 软件模型的发展脉络审视软件模型从诞生到发展的历程,尽管各种软件模型的发展存在一定的时间交叉,但从其是否作为软件构造技术的主体支撑技术来说软件模型的发展脉络,清晰地体现了计算机应用发展的历程,以及计算机技术发展的历程。

6技术、应用和软件模型的关系计算机应用的发展和计算机技术的发展相辅相成。一方面,计算机应用的发展,对计算机技术提出了新的要求,促进计算机技术的发展;另一方面,计算机技术的发展,又为新型计算机应用的发展提供了基础,促进计算机应用的发展。软件技术作为计算机技术之一,在计算机应用和其它计算机技术之间建立起桥梁。因此,软件模型的发展,事实上也就是不断动态地黏合应用与技术。

72.3 软件模型解析2.3.1 功能模型功能模型(FunctionModel)也可以称为过程模型或函数模型,是模型化软件构建方法的第一个基本模型。功能模型的基本原理,是将一个系统分解为若干个基本功能模块,基本功能模块之间可以按需进行调用。基本功能模块集合及其调用关系集合,构成一个系统的模型。功能模型诞生于20世纪60年代,强调了对程序中数据处理(功能)的抽象,通过功能分解和综合的方法,降低系统构造的复杂度。从而实现一体式程序体系结构,向结构化程序体系结构的转变,并建立了结构化软件设计方法。功能模型的核心之一,是基本功能模块的抽象及耦合。

8基本功能模块的实现基本功能模块的抽象,一般需要定义其处理的抽象数据集。具体实现中,基本功能模块一般有函数(Function)和过程(Procedure)两种形式,前者返回处理结果,后者不返回处理结果。

9function函数名(形参列表):返回值类型数据组织定义;begin

数据处理定义;end返回值类型函数名(形参列表){数据组织定义;

数据处理定义;}PASCAL语言实现C语言实现function过程名(形参列表);数据组织定义;begin

数据处理定义;endvoid函数名(形参列表){数据组织定义;

数据处理定义;}参数传递和函数返回按照传递的方式,参数传递基本上有值传递、地址传递两种。值传递将实际参数的值复制到堆栈,地址传递则是将实际参数值存放的内存地址复制到堆栈。

10两种参数传递方式的C语言实现当被调模块的抽象数据集具体化后,值传递方式不会因为被调模块的处理而改变原始的实际参数值,而地址传递方式,由于被调模块的处理会通过实际参数值存放的内存地址而间接地作用于原实际参数,从而改变原始的实际参数值。

11intsubmodule(intp,intq){intr;r=p+q;returnr;}mainmodule(){intx=10,y=20,z=0;z+=submodule(x,y);printf(“TheResultsis:%d\n”,z);}intsubmodule(int*p,int*q){intr;r=*p+*q;returnr;}mainmodule(){intx=10,y=20,z=0;z+=submodule(&x,&y);printf(“TheResultsis:%d\n”,z);}递归方法的基本思想递归(Recursion)是指用同一种处理方法来处理不断缩小规模的数据集,并通过不断综合小规模数据集的处理结果,来得到大规模数据集的处理结果的一种问题处理方法。

12

13汉诺塔问题求解把n-1个圆金片环从A到B,其中,C作为临时用。

14(3)(2)(1)(3)(1)(2)nn-11n-11n-11n-1n-21n-21n-21n个圆金片环从A到C,B作为临时用n-1个圆金片环从A到B,C作为临时用voidmove(unsignedn,chara,charc,charb){if(n>0){move(n-1,a,b,c);(1)printf(“%d:%c->%c\n”,n,a,c);(2)move(n-1,b,c,a);(3)}}递归的多种具体应用

15模块调用模块调用模块调用模块调用模块调用模块调用模块调用模块调用模块调用模块调用模块模块模块模块模块模块模块模块模块调用(a)单直接递归(b)单直接递归(c)多直接递归(d)间接递归(e)嵌套递归三种基本的处理逻辑及其语义处理逻辑的递归应用,是指将问题的整个处理逻辑看做数据集,将基本的处理逻辑看做处理方法,从而实现用基本的处理逻辑及其组合,来处理不同复杂度问题的整个处理逻辑。功能模型建立了三种基本处理逻辑:顺序、分支、循环

16处理逻辑的递归应用内涵程序A(大程序)和子程序B(小程序)在思维上,具有显示通约性。

17C语言中的两类数据类型由于功能模型侧重于功能部分,淡化了数据部分以及数据与功能之间的关系,因此,对于大规模程序的构造,功能模型具有其固有的波动效应的缺陷。于是,如果一个模块或者某个数据被修改了或被调整了,而又没有及时通知其他相关的模块,会产生意想不到的影响。

18复合数据类型数据类型基本数据类型整数单精度浮点数双精度浮点数字符字符串数组指针结构联合

192.3.2 对象模型对象模型(ObjectModel)于20世纪80年代诞生,强调了对程序中数据组织的抽象,并将数据处理和数据组织统一进行考虑。对象模型以对象为核心,通过对象进行数据组织的抽象并实现数据组织和数据处理的统一,在此基础上,建立面向对象的软件构造方法。因此,对象模型的基本原理,是将一个系统分解为若干个对象,对象之间可以通过发送消息按需进行协作。对象集合及其协作关系集合,构成一个系统的模型。对象(Object),是指客观世界中存在的事物,可以是具体的(如:人、猫、狗等)或者抽象的(如:缓冲池、堆栈等)。计算机中,为了描述一个对象(或以对象进行数据组织),必须给出对象的形态(称为对象的型),并按照需要建立对象的各个具体实例(称为对象的值)。

20对象描述的基本视图C++语言中描述对象的具体案例

21classCar{ stringbrand; stringmodel; stringcolor; intprice; intweight; stringno;public: Car(); ~Car(); voidmoveforward(); voidstop(); voidturnleft(); voidturnright(); voidmoveback();}Carc1,c2;属性行为型值数据类型的抽象所谓数据类型的抽象,是允许用户按照需求定义自己的数据类型,并通过其进行数据组织,从而拓展某种程序设计语言固有的数据类型,为应用程序的构造带来灵活性。相对于传统的固有数据类型,拓展的数据类型,称为抽象数据类型(AbstractType)。一般来说,一种数据类型既要规定数据的取值范围,又要定义数据的基本运算操作。因此,对象模型中的对象机制可以用来定义抽象数据类型。其中,对象的属性描述与数据的取值范围相对应,对象的行为描述与数据的基本运算操作相对应。可见,对象本质上就是数据,对象的描述就是定义一种抽象数据类型。

222.3.3 组件模型20世纪90年代,组件模型(ComponentModel)诞生,在对象模型的基础之上,强调了异族对象关系以及独立性问题。异族对象关系指,组件内部完成组件功能的对象可以是同族的,也可以是异族的。独立性是指,组件建立在二进制基础上并独立封装,可以独立部署。组件模型以接口为核心,通过接口抽象组件行为,在此基础上,建立面向接口的软件构造方法。组建集合及其协作关系集合,构成一个系统的模型。接口(Interface)指对象动态行为的集合,接口也支持继承机制。相对于对象模型,组件模型更加重视在概念层次和规约层次上认识面向对象的方法和思想,强调对象具有可以被其它对象或对象自身调用的方法。

23

24组件基本结构组件(Component)指能完成特定功能并能独立部署的软件合成单元。一个组件一般具有一个或多个接口,每个接口的功能由一个或多个方法实现。接口的具体功能,由组建对象实现。

25组件功能重用方式

组件功能重用方式组件模型强调标准,以实现具有独立性的组件之间的集成。组件模型的标准一般称为软总线(SoftwareBus),定义组件的封装结构并提供基本的集成服务功能(例如,命名服务、查找服务等)。满足同一标准的组件,可以通过软总线进行集成。目前,常见的组件模型标准,有微软的COM、SUN的JavaBeans和OMG的CORBA。

26微软COM组件的基本结构为了实现对组件的管理和集成,软总线除了提供各种基本服务功能外,还提供一些高级服务功能,例如属性服务、持久化服务、安全服务、事务服务。

27(a)封装结构(b)运行时结构组件集成的基本原理组件对象首先必须在软总线中进行注册,然后才能被使用。某个客户应用或一个对象需要使用某个组件对象时,也是通过软总线进行查找,然后再使用。因此,软总线充当组件对象集成的中介。组件模型,通常采用基于框架的程序构造方法。

28

29框架框架(Framework)指已实现部分功能的某类程序结构的实现。框架抽象了某类程序的结构,定义其中各个功能组件及其相互关系并实现部分功能。框架与生产线很相似,通过框架构造程序,相当于按照生产线进行各种组件的装配。框架可分为水平型、垂直型、复合文档型三种。水平型框架一般面向通用类程序的构造,与特定应用领域无关,例如,VisualC++支持的各种项目类型,就是各种水平型框架。垂直型框架一般面向特定应用领域,抽象和封装了该应用领域应用程序的基本结构和共性基本组件。复合文档型框架是一种比较通用的框架,将一个程序抽象为一个文档,将构成程序的各个组件看作是文档中的不同的独立元素,这些独立元素,通过事件消息相互联系。通过复合文档型框架构造程序,相当于用各种元素在文档上创作一幅动态的图画。

30利用复合型文档框架进行程序构造

31(a)基本原理(b)一个样例分布式对象计算的基本模型由于组件模型解决了异构集成问题,因此,分布式对象计算模型,得到迅速发展。分布式对象计算的基本模型在软件总线的基础上,通过在客户端和服务端分别增加代理机制,来实现分布式环境下组件对象之间的集成。

32DCOM运行时结构CORBA直接支持分布式计算模型,JavaBeans通过JavaRMI(RemoteMethodInvoke)将其组件模型拓展为分布式计算模型,COM通过RPC(RemoteProcedureCall)将其拓展为DCOM(DistributedComponentObjectModel)。对于DLL封装的组件,DCOM通过自动加载一个Dllhost.exe作为其宿主。

332.3.4 配置型组件模型配置型组件模型(ConfigurableComponentModel),又称为服务器组件模型,专门针对应用服务器,定义其基于组件的基础结构模型。在传统的分布式对象计算模型中,软总线提供的附加基础服务,需要被业务逻辑代码显式地使用。然后,对于响应大量客户端的服务器,基础服务的提供涉及系统资源的有效利用,基础服务需要与资源管理技术一起使用。因此,如果这两者都由业务逻辑代码来显式使用,那么,应用开发的复杂度,就会急剧增大。特别是,随着组件交互的行为越加复杂,协调这些基础服务就,成为了一项困难的任务,需要与编写业务逻辑代码无关的系统级专门技术来处理。

34配置型组件模型的基本实现思想配置型组件模型的基本原理,是将应用业务逻辑与系统基础服务两者解耦,由系统基础服务构成一个服务容器,自动隐式地为各种应用业务逻辑按需统一提供相应的基础服务。应用业务逻辑,可以按需提出不同的基础服务要求,亦即,它是可配置的。这样,基于问题分离(SeparationofConcerns)原理和功能可变性(FunctionalVariability)原理,将业务逻辑的功能部分和系统资源有效管理的技术部分分开,允许两者独立进化并促进基础服务和资源的重用。

35.NET模块及装配件的基本结构.NET采用装配件(Assembly)作为基本的组件打包及部署单元,是一种逻辑组件(LogicalComponent),可以包含打包清单(Manifest,用来描述该配件以及所需的其他配件,包括版本号、编译链接号以及编译器在编译时捕获的修正号、文化特征等版本信息)以及一个(或多个)物理DLL或EXE模块,每个模块内部,包含中间语言(IntermediateLanguage,IL)代码、元数据(Metadata,描述配件中声明的所有类型及其关系)及资源(包括图标、图像等),模块以文件形式存储。

36.NET应用程序结构.NET支持两种组件,即使用基础服务的组件(ServicedComponent)和标准的被管理组件(ManagedComponent,又称托管代码或受控代码)。其中,前者是COM+标准组件的进化和发展,后者则是新的组件封装模型。.NET实现了两者统一。为了支持说明性程序设计,.NET提供的新型程序设计语言C#支持,将配置要求以属性方式写入程序中,建立基于属性的程序设计方法。

372.3.5 服务模型服务(Service)指一个封装着高级业务概念、实现公共需求功能、可远程访问的独立应用程序模块。服务一般由数据、业务逻辑、接口及服务描述构成

38服务模型的基本原理服务独立于具体的技术细节,一般提供业务功能,而不是技术功能。服务模型的基本原理,是明确服务提供者和服务使用者,并通过服务中介实现两者的耦合

39服务模型的抽象作用服务模型通过定义独立于具体技术、可以扩展的通用描述手段,来描述服务和实现服务交互,而将服务实现的具体技术细节隐藏在内部,从而实现服务的无缝集成。

40XML作为一种集成技术XML是一种通用的结构化信息编码标准。亦即,作为一种可以创建其他专用标记语言的通用元标记语言,XML可以对任意结构化信息进行定义。XMLInfoset所定义的信息模型是层次型模型,层次型模型的递归特性决定了其广泛的适用性和描述能力。XML可以是软件集成问题的统一解决方案

41面向互联网的Web服务对象微软.NET平台面向新一代Web应用的开发,通过在开发工具VisualStudio.NET中提供VisualC#Projects中的ASP.NETWeb服务模版类型以及建立支持属性编程的新型程序设计语言C#,直接支持面向Web服务的应用开发。通过Web服务,将COM+对象包装为面向互联网的一种服务对象

422.3.6 抽象模型一个可恢复程序语句组件实例,需要一个或多个书签,因此,所有的书签必须由一个书签管理器统一管理。并且还需要一个监听器程序,所有需要分发到书签中去的数据,都由该程序进行分发。书签管理器和监听器,都独立于可恢复程序语句组件。

43可恢复程序语句组件的基本模型基于书签机制,可恢复程序语句组件,具有可恢复性(Resumable)及支持片段式执行(EpisodicExecution)的特点。因此,可恢复程序语句组件的基本模型,一般包括两个部分:基本执行逻辑和可恢复执行逻辑

44可恢复程序基本结构基于可恢复程序语句组件模型的可恢复程序,是由可恢复程序语句组件和复合语句组件及其逻辑关系定义所建立的一个复合语句组件。可恢复程序,本质上也是一个复合语句组件,描述的控制流,是相对独立的某种业务工作流。

45可恢复程序设计思想与面向对象设计思想的思维通约性可恢复程序,本质上就是一种数据,即程序=数据。该类型化设计思想,与面向对象的设计思想具有明显的思维通约性。

46可恢复程序的执行流程统一书签机制,将对整个程序实例中的每一个可恢复程序语句组件实例的可恢复调度,与对一个可恢复程序语句组件实例的可恢复调度采用同一个书签机制。分级书签机制,将对两者的可恢复调度,采用不同的书签机制。

472.4 深入认识软件模型2.4.1 软件体系结构的描述软件体系结构的描述,指通过某种语言表达软件体系结构,描述的目的,是为了实现对软件体系结构的认识、理解、交流。进而,基于描述,可以对软件系统的行为、特性进行各种理论分析和仿真模拟,以及实现软件系统代码的自动生成。因此,软件体系结构的描述对于科学的软件系统设计方法的建立、大规模高质量软件系统的设计与构造,有着重要的意义。目前,软件体系结构的描述,有非形式化描述和形式化描述两大类方法。

48非形式化描述软件体系结构非形式化描述方法的典型代表,是统一建模语言(UnifiedModelingLanguage,UML)方法。UML是一种通用的可视化建模语言,建立在对象模型概念的基础上,提供了标准的系统建模方法,可以对任何具有静态结构和动态行为的系统进行建模。UML的统一性在于,所提供的概念可以统一已有的各种建模方法,在系统开发的各个阶段具有一致性,可以面向各种应用领域系统建模。UML统一了建模的基本元素及其语义、语法和可视化表示方法。

49非形式化描述有如下缺陷语义模糊由语义模糊引起的沟通障碍无法实现系统验证不适于描述体系结构行为

50形式化描述计算机科学中,形式化描述是指,用于软件与硬件系统的说明、开发、验证的数学化方法。形式化的基础,就是数学化理论。在一个软件开发过程中,形式化描述可以被应用到各个方面。形式化描述在体系结构描述上具有如下特点:形式化描述可以用于系统描述,而且可以在不同层次上进行描述。形式化描述在体系结构行为描述上更胜一筹。形式化描述使得系统验证变得可行。

51Petri网Petri网是用于表述分布式系统的众多数学方法之一。作为一种建模语言,Petri网采用图形化方法将一个分布式系统结构表述为带标签有向双边图。1962年,CarlAdamPetri在博士论文中提出了Petri网。CarlAdamPetri是一名物理学家,他发明Petri网主要是从物理的角度去描述并发现象的。Petri网是对离散并行系统的数学表示,适合于描述异步、并发的计算机系统模型。经典的Petri网是简单的过程模型,由两种节点(库所、变迁),有向弧,以及令牌等元素组成。其中,圆圈表示位置,圆圈中有标识表示条件满足,线段表示变迁。

52Z语言Z语言是一种形式化的说明语言,用于计算系统的描述与建模。旨在对计算程序的明晰说明以及对于系统行为的公式化证明。1997年,Jean-RaymondAbrial在SteveSchuman与BertrandMeyer的帮助下,提出了Z语言。形式化描述语言Z指德国著名数学家策梅洛(Zermelo),是使用最广泛的一种形式化描述语言,在软件产业的一些大型项目中已经获得成功的应用,以一阶谓词逻辑策梅洛-弗兰克尔(Zermelo-Fraenkel,ZF)公理集合论为主要数学基础。Z语言是一种用“数学文字”或“数学符号”,来描述计算机系统的规范化语言,不但能应用于计算机硬件系统,而且也特别适用于计算机软件系统。Z语言描述“做什么”,而不涉及“怎么做”,只对目标软件系统进行功能描述。用户可以通过这些内容,去理解计算机系统的模块、数据类型、过程、函数、对象、类,进而对计算机系统的行为、结构、逻辑进行分析、验证、改进、测试。

532.4.2 软件体系结构的设计水平型设计水平型设计是指,运用通用建模设计工具和表达语言所进行的软件体系结构的设计。垂直型设计垂直型设计是指,运用面向体系结构的专用建模设计工具及其表达模型所进行的软件体系结构的设计。随着计算机应用的不断发展,软件系统规模愈发庞大,人们对于软件系统的设计策略也逐渐从归纳式思维策略,向演绎式思维策略转变。

542.5 体系结构描述语言2.5.1 ADL简介体系结构描述语言(ArchitectureDescriptionLanguage,ADL)的一个非正式的定义是:是一种用于描述软件与系统结构的计算机语言。该定义关注的,是ADL的使用意图,而缺乏必要的规范定义。目前,相关研究领域对ADL仍有争议。争议主要集中在:ADL是什么?ADL应该从系统的哪些角度建模?随着ADL家族的发展壮大,争论也愈演愈烈,对其定义形成共识,愈发困难。

55构件、操作、模式、闭包、规格说明作为一种经典理论,CMU的DavidGarlan和MaryShawd定义了ADL元素,包括构件、操作、模式、闭包、规格说明。构件(Components):指抽象级别上组成系统的计算模块。一个模块可以是物理上的具体软件元素或者是编译单元。一个模块可以是一个功能逻辑独立的软件包,甚至是软件体系结构的更抽象的概念。操作(Operations):指构件之间的交互机制。操作被认为是将结构元素连结成为更加高级构件的功能。模式(Patterns):指结构元素依照特殊方式进行的组合。模式是元素的可重用组合。一个设计模式(或体系结构模式),是一个针对特定问题的设计模版。模式会在实际的设计中被实例化。模版将体现元素选择与元素交互的限制。闭包(Closure):是用于实现分层描述的概念。规格说明(Specification):规格说明包括功能、性能、容错能力等。

562.5.2 典型ADL的比较在软件体系结构研究领域,使用着各种不同的ADL。不同的ADL的设计意图是大相径庭的。

57WRIGHTWRIGHT语言旨在精确描述系统结构与抽象行为、体系结构风格的描述以及系统一致性完整性的验证等。根据WRIGHT语言作者的观点,一种体系结构描述语言应该至少提供两项内容:无二义性的精确语义,并能够进行不一致性的检测。一套支持系统属性推理的机制。还有一个目标是满足架构师自身的词汇表达需求。WRIGHT专注于抽象表达,以及为架构师提供结构化表达系统信息的方法。

58C2C2的特色在于,支持构件重置与图形化用户接口(GUI)重用。如今用户接口占据了软件的很大一部分,并且重用度相当有限。C2着眼于构件的重用,尤其是系统的进化——系统在运行时的动态改变。因此,C2的设计目标,基于如下考虑:构件可能用不同的编程语言实现,构件可能在同一时刻运行在分布、异构的并且没有共享地址空间的环境中,运行时的结构可能发生变化,可能发生的多用户交互,可能使用多种工具集,涉及多种媒体类型等。

59DarwinDarwin是一种陈述性语言,为一类系统提供通用的说明符号,这类系统由使用不同交互机制的不同构件组成,着眼于描述分布式软件系统。近来关于分布式系统维护的相关研究表明,采用分布式构造可以降低构件的复杂度。但是,这一优势,还不足以抵消由分布式结构带来的缺点以及结构复杂度的增加。Darwin的设计出发点,正是要解决这样的问题。此外,Darwin同样支持动态结构说明。

60AcmeAcme是一种交互式ADL,旨在为开发工具与环境提供交互格式。设计中关键在于,综合各种独立开发的ADL工具,为交换结构信息提供媒介格式。除了交互这一基本目标之外,设计Acme还考虑了如下目标:为实现结构分析与可视化提供表达模式;为开发新的特定领域的ADL提供基础;为体系结构信息表达提供标准;这种语言必须便于读写表达。

61xADL在过去10年中,无数ADL伴随着各种研究活动相继诞生。这导致了软件体系结构表达符号的过剩,而每种ADL都有各自在系统表达上的重点。同时,可重用性与可扩展性也非常有限。使用现有的符号表达来达成一种新的设计目的,无异于重新开发一门新的ADL。xADL为架构师提供了更好的拓展性,将用于快速地构造新的ADL。

62π-ADLπ-ADL是用于解决动态与移动体系结构说明的一种ADL。动态体系结构意味着,软件结构可以在运行时改变。移动体系结构意味着,构件能在系统

温馨提示

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

评论

0/150

提交评论