




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第5章章 软件设计软件设计25.1 5.1 软件设计的软件设计的任务任务 软件需求:解决软件需求:解决“做什么做什么” 软件设计:解决软件设计:解决“怎么做怎么做” 3软件设计的任务软件设计的任务 问题结构问题结构( (软件需求软件需求) ) 软件结构;软件结构; 从软件需求规格说明书出发,形成软件从软件需求规格说明书出发,形成软件的具体设计方案。的具体设计方案。映射映射 41.1.软件的总体结构主要回答的问题软件的总体结构主要回答的问题u软件的组成部分软件的组成部分u软件的层次关系软件的层次关系u模块的内部处理逻辑模块的内部处理逻辑u模块之间的界面模块之间的界面52. 2. 软件设计方法
2、软件设计方法F结构化设计方法结构化设计方法( (SDSD) )F面向数据结构的设计方法面向数据结构的设计方法( (JSDJSD方法方法) )F面向对象的设计方法面向对象的设计方法( (OODOOD) )63. 3. 软件设计分为两个阶段:软件设计分为两个阶段:(1)(1)概要设计概要设计( (总体设计总体设计) ) 确定软件的结构以及各组成成分确定软件的结构以及各组成成分( (子系统或模块子系统或模块) ) 之间的相互关系。之间的相互关系。(2)(2)详细设计详细设计 确定模块内部的算法和数据结构,产生描述各模确定模块内部的算法和数据结构,产生描述各模 块程序过程的详细文档。块程序过程的详细文
3、档。75.2 5.2 软件设计的基本概念软件设计的基本概念85.2. 软件设计基本概念 5.2.1 基本概念 设计师与程序员的地位。软件设计的技术难度要比编程、测试的高。所以程序员、测试员称为“员”,而设计师尊称为“师”。 设计的好坏在根本上决定了软件的优劣。我们可以断言“差的系统设计必定产生差的软件系统”,但是不能保证“好的系统设计必定产生好的软件系统”。因为在设计之前有需求开发工作,在设计之后还有编程、测试和维护工作,无论哪个环节出了差错,都会把好事搞砸了。9软件设计基本概念 5.2.1基本概念 软件设计之源是软件需求,包括“功能性需求”与“非功能性需求”。设计的目标就是使所设计的系统能够
4、被开发方顺利地实现,并且恰如其分地满足用户的需求,使开发方和用户的利益极大化。开发人员不万不能偏离需求,为了追求技术的先进性而开展系统设计工作。 依据“分而治之”的思想,我们把系统设计过程划分为两个阶段:高层设计阶段和详细设计阶段。高层设计阶段的重点是系统结构设计。详细设计阶段的重点是用户界面设计、数据库设计、模块设计、数据结构与算法设计等。 10软件设计基本概念系统设计过程示意图 11软件设计基本概念 软件系统与人体的比喻 体系结构如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的大
5、汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。12软件设计基本概念 软件系统与人体的比喻 用户界面如同人的外表,最容易让人一见钟情或一见恶心。象人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。我们在设计软件时不要沉迷于技术,而要多多思考什么样的界面才能让用户更加喜欢。13软件设计基本概念 软件系统与人体的比喻 数据库是存储和处理数据用的。人体的数据库是大脑,知识相当于数据,全存在大脑里。如果脑子里存储的知识很多,那么这个人就显得博学。如果脑子处理知识的速度很高,那么这个人就显得聪明。数据库设计的主要挑战是“高速处理大容量的数
6、据”。 14软件设计基本概念 软件系统与人体的比喻 模块如同人的器官。每个器官都具有特定的功能,器官们依附在骨架上。模块是软件系统的部件,它们安插在体系结构上(否则运行起来掉光光了)。在设计模块时要重视功能独立性,还要追求“高内聚、低耦合” 。15软件设计基本概念 软件系统与人体的比喻 数据结构与算法如同人的神经和肌肉,它分布在全身,让器官具有生命并能发挥功能。人之所以能够全身运动,那是无数的神经和肌肉在起作用。如果局部的神经和肌肉失效了,那么会导致对应的器官残废。如果全局的神经和肌肉失效了,那么人就瘫痪了。同理,数据结构与算法也有全局和局部之分,都要慎重设计。 16软件设计基本概念 漫谈设计
7、模式 20世纪90年代,面向对象(Object-Oriented)方法与技术在国内软件业界十分火爆,人们热衷于谈论“对象”并引以为荣。十多年来,人们发表、出版了无数的文章和书籍。现在,该写的似乎都写完了,没有新花样玩了,真是一片无聊。设计模式(Design Pattern)及时问世,面向对象爱好者们终于有了新的追求。 小结:小结:设计模式的应用价值在于它能帮助人们简便地复用以前成功的设计方案。设计模式不是凭空产生的,只有对应用域问题及其解决方案进行抽象和分析,发现本质,并按照一定的格式记录下来,才能成为可以被人们复用的设计模式。 175.3. 体系结构设计 5.3.1 体系结构设计原则体系结构
8、是指软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。一个软件系统的体系结构设计得好不好,可以用“合适性、结构稳定性、可扩展性、可复用性”这些特征量来评估。18体系结构设计合适性合适性:即体系结构是否适合于软件的:即体系结构是否适合于软件的“功能性需求功能性需求”和和“非功能性需求非功能性需求”。设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的体系结构。经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的地方。高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利
9、益,而不是不惜代价设计出最先进的软件。对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选哪一种?此时商业目标是决策依据,即选择此时商业目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个设计方案。能够为开发方和客户方带来最大利益的那个设计方案。大部分软件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切记切记。 19体系结构设计结构稳定性:当前中国有几句流行的至理名言:“稳定压倒一切”、“发展是硬道理”。发展的前提条件是稳定,社会如此,开发软件产品也是如此。 体系结构一旦设计完成,应当在一定的时间内保持稳定不变,只有这样才能使后续工作顺利开展。如果
10、体系结构经常变动,那么建筑在体系结构之上的用户界面、数据库、模块、数据结构等等也跟着经常变动,用“树倒猢狲散”来比喻很恰当,这将导致项目发生混乱。高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根于是根据那些稳定不变的需求设计体系结构,而根据那些可据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的变的需求设计软件的“可扩展性可扩展性”。20体系结构设计可扩展性:可扩展性是指软件扩展新功能的容易程度。可扩展性越好,表示软件适应“变化”的能力越强。可扩展性越来越重要,这是由现代软件的商业模式决定的:21体系结构设计可复用性可复用性 :复用就是
11、指“重复利用已经存在的东西”。被复用的对象可以是有形的物体,也可以是无形的知识财富。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。 复用的有利于提高产品的质量、提高生产率和降低成本。由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。22体系结构设计可复用性可复用性 :复
12、用的意义很容易理解,人们也乐意复用以前的成果,但是前提条件是该成果具有比较好的可复用性。可复用性是指成果被复用的容易程度。 可复用性是设计出来的,而不是偶然碰到的。可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。 23体系结构设计 5.3.2 体系结构设计流程体系结构设计流程:6个步骤体系结构设计报告模板见word文档 24体系结构设计 5.3.3 层次结构介绍层次结构是最常见的体系结构模式,它体现了“分而治之”的思想:当我们没法一口气解决复杂的原始问题时,就把该问题切割成许多
13、个小的相对简单的问题,然后逐个解决。水平方向切割产生的层称为Layer,而竖直方向切割产生的层称为Tier。25体系结构设计 5.3.3 层次结构介绍“层次结构层次结构”是应用最为广泛的体系结构模式。是应用最为广泛的体系结构模式。其最大的优点是具有良好的可扩展性,人们在其最大的优点是具有良好的可扩展性,人们在扩充或修改功能时,基本不会破坏原有结构的扩充或修改功能时,基本不会破坏原有结构的稳定性。但是万事有利必有弊,层次结构的系稳定性。但是万事有利必有弊,层次结构的系统的主要缺点是:管理多个统的主要缺点是:管理多个LayerLayer和和TierTier比较麻比较麻烦,运行效率可能比较低。所以,
14、一个具备良烦,运行效率可能比较低。所以,一个具备良好层次结构的系统,其好层次结构的系统,其LayerLayer和和TierTier的数目要恰的数目要恰如其分。如其分。 26 5.3.5.3.模块化模块化1.1.模块化:模块化:把程序划分成若干个模块,每个模块完成一个把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。定的功能,满足问题的功能。 模块:模块:一个拥有明确定义的输入、输出和特性的程序实体。一个拥有明确定义的输入、输出和特性的程序实体。27模块模块 模块是具有一定功能的可
15、以用名词调用的程序语模块是具有一定功能的可以用名词调用的程序语句集合,如:句集合,如:独立的汇编程序独立的汇编程序PascalPascal过程过程28概要设计的基本概念概要设计的基本概念 将系统划分成模块将系统划分成模块 决定每个模块的功能决定每个模块的功能 决定模块的调用关系决定模块的调用关系 决定模块的界面,即模块间传递的数据决定模块的界面,即模块间传递的数据29 2. 2. 抽象抽象(Abstraction)(Abstraction)与细化与细化 抽象抽象: :解决问题时只考虑与问题有关的方面,不解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性考虑与问题无关
16、的方面。即抽出事物的本质特性 而不考虑细节。而不考虑细节。 30抽象抽象( (Abstraction) )抽象原则应用举例抽象原则应用举例Windows NTWindows NT一体化的一体化的I/OI/O系统设计系统设计文件管理文件管理网络管理网络管理设备管理设备管理高速缓冲存储器高速缓冲存储器对虚拟文件的对虚拟文件的字节流字节流, ,虚拟文件可为虚拟文件可为任何设备和实任何设备和实体体抽象抽象31 细化:即分解。细化:即分解。 在逐步细化中,特别强调这种分解的在逐步细化中,特别强调这种分解的“逐步逐步”性质,即每一部分仅较其前一部增加性质,即每一部分仅较其前一部增加“少量少量”的细节。这样
17、,在相邻两部之间就只有微小的的细节。这样,在相邻两部之间就只有微小的变化,不难验证它们的内容是否等效。变化,不难验证它们的内容是否等效。323.3.信息隐蔽信息隐蔽(Information Hiding)(Information Hiding)信息隐蔽的含义:信息隐蔽的含义:有效的模块化可以通过定义一有效的模块化可以通过定义一组独立模块来实现,这些模块相互之间只交流软件组独立模块来实现,这些模块相互之间只交流软件功能必需的信息。功能必需的信息。换句话说:换句话说:模块所包含的信息,不允许其它不需要这模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成些信息的模块访问
18、,独立的模块间仅仅交换为完成系统功能而必须交换的信息。系统功能而必须交换的信息。信息隐蔽:对模块内部信息访问的约束信息隐蔽的基本原则:功能独立,高内聚且低耦合335.4 5.4 模块化设计模块化设计 1.1.分解分解 2.2.模块独立性模块独立性 内聚内聚 耦合耦合 自顶向下与自底向上设计自顶向下与自底向上设计34模块化模块化(Modularity)(Modularity) 模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握问题从整体上把握问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解
19、题所需的总的工作分解分解35C(p1)C(p2) 则则 E(p1)E(p2)其中:其中:p1和和p2是两个问题是两个问题C(x)是由是由x问题决定的复杂性问题决定的复杂性E(x)是解决是解决x问题所需要的工作量问题所需要的工作量C(p1+p2) C(p1) +C(p2)E(p1+p2) E(p1) +E(p2)试验发现模块划分得越小成本越低模块划分得越小成本越低 ,但是,但是 集成成本却随着模块划分得越小集成成本却随着模块划分得越小成本越高。成本越高。如何确定模块化分的最小成本区,并保证模块的最佳性能,是设如何确定模块化分的最小成本区,并保证模块的最佳性能,是设计活动中的主要任务之一。计活动中
20、的主要任务之一。1.1.分解分解各个击破理论各个击破理论36模块数与开发工作量的关系模块数与开发工作量的关系成成本本或或工工作作量量模块数量模块数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块M最小成本区域最小成本区域372. 2. 模块的独立性模块的独立性 模块独立性的概念模块独立性的概念模块完成独立的功能模块完成独立的功能符合信息隐蔽和信息局部化原则符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小38模块独立性的度量模块独立性的度量 模块独立性取决于模块的内部和外部特征。模块独立性取决于模块的内部和外部特征。SDSD方法提出的定性的度量标准:方
21、法提出的定性的度量标准: 模块自身的模块自身的内聚性内聚性 模块之间的模块之间的耦合性耦合性 392. 2. 模块独立性的度量之一:内聚性模块独立性的度量之一:内聚性一个模块内部各成分之间相互关联的强度一个模块内部各成分之间相互关联的强度设计目标:高内聚设计目标:高内聚( (一模块的所有成分都直接参与一模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的并且对于完成同一功能来说都是最基本的) )40模块的内聚性类型:模块的内聚性类型:低低 巧合内聚巧合内聚 内内 逻辑内聚逻辑内聚 聚聚 时间内聚时间内聚 性性 过程内聚过程内聚 通信内聚通信内聚 信息内聚信息内聚 高高 功能内聚功能内聚
22、模模块块独独立立性性弱弱( (功能分散功能分散) )强强( (功能单一功能单一) )41(1) (1) 巧合内聚巧合内聚( (偶然内聚偶然内聚) ) 模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差可理解性差, 可修改性差可修改性差。例例: :42(2) (2) 逻辑内聚逻辑内聚把几种相关功能把几种相关功能( (逻辑上相似的功能逻辑上相似的功能) )组合在一组合在一模块内模块内, ,每次调用由传给模块的参数确定执行每次调用由传给模块的参数确定执行哪种
23、功能。哪种功能。43逻辑内聚模块逻辑内聚模块ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG公用代码段公用代码段公用代码段公用代码段缺点:增强了耦合程度(控制耦合)不易修改,缺点:增强了耦合程度(控制耦合)不易修改,效率低。效率低。44(3) (3) 时间内聚时间内聚模块完成的功能必须在同一时间内执行,这些功能只模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。因时间因素关联在一起。例如:初始化系统模块、例如:初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模
24、块等。紧急故障处理模块等。45(4) (4) 过程内聚过程内聚模块内各处理成分相关,且必须以特定次序执行。模块内各处理成分相关,且必须以特定次序执行。46过程内聚模块过程内聚模块读入读入成绩单成绩单读入并审查读入并审查成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计并打印成绩成绩47(5) (5) 通信内聚通信内聚模块内各部分使用相同的输入数据,或产生模块内各部分使用相同的输入数据,或产生相同的输出结果。相同的输出结果。48通信内聚模块例通信内聚模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产
25、生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块49(6)(6)信息内聚信息内聚指模块完成多个功能,各个功能信息内聚指模块完成多个功能,各个功能都在同一数据结构上操作,每个功能有都在同一数据结构上操作,每个功能有唯一入口。如对同一个数据库的唯一入口。如对同一个数据库的“查找查找添加添加删除删除修改修改”模块。模块。50(7) (7) 功能内聚功能内聚模块仅包括为完成某个功能所必须的所有成分。模块仅包括为完成某个功能所必须的所有成分。( ( 模块所有成分共同完成一个功能,缺一不可模块所有成分共同完成一个功能,缺一不可 ) )内聚性最强内聚性最强51功能内聚模块功能内聚模块建立方
26、程组系数矩阵建立方程组系数矩阵高斯消去法高斯消去法回回 代代高斯消去法解题流程高斯消去法解题流程52模块独立性的度量之二:模块独立性的度量之二: 耦合性是模块间相互依赖程度的度量,耦合耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。问一个模块的点,以及通过接口的数据。 耦合性越高,模块独立性越弱耦合性越高,模块独立性越弱53耦合强度依赖的因素:耦合强度依赖的因素:一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控
27、制的数量一模块施加到另一模块的控制的数量模块间接口的复杂程度模块间接口的复杂程度54模块间耦合的类型:模块间耦合的类型: 低低 非直接耦合非直接耦合耦耦 数据耦合数据耦合合合 标志耦合标志耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱( (低耦合低耦合) )强强( (中耦合中耦合) )( (较强耦合较强耦合) )( (强耦合强耦合) )55(1) (1) 非直接耦合非直接耦合 两个模块没有直接关系两个模块没有直接关系( (模快模快1 1和模快和模快2)2),模块独立性,模块独立性最强。最强。模块模块1 1模块模块2 2模块模块3
28、3模块模块4 456(2) (2) 数据耦合数据耦合一模块调用另一模块时,被调用模块的输入、一模块调用另一模块时,被调用模块的输入、输出都是简单的数据,属输出都是简单的数据,属松散耦合松散耦合。57数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额58数据耦合举例数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费用水量用水量用电量用电量水费水费电费电费59(3) (3) 标记耦合标记耦合( (特征耦合特征耦合) )如两个模块通过传递数据结构如两个模块通过传递数据结构( (不是简单数据,不是简单数据,而是记录、数组等而是记录、数组等) )加以联系,或都与一
29、个数据加以联系,或都与一个数据结构有关系结构有关系, , 则称这两个模块间存在标记偶合。则称这两个模块间存在标记偶合。60标记耦合举例标记耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况“住户情况住户情况”是一个数据结构,图中模块都与此数据结是一个数据结构,图中模块都与此数据结构有关。构有关。“计算水费计算水费”和和“计算电费计算电费”本无关,由于引用了此数本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。据结构产生依赖关系,它们之间也是标记偶合。61将标记耦合修改为数据耦合举例将标记耦合修改为数据耦合举例计算水电费计算
30、水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费62(4) (4) 控制耦合控制耦合一模块通过开关量、标志、名字等控制信息,一模块通过开关量、标志、名字等控制信息,明显地控制另一模块的功能。明显地控制另一模块的功能。63控制耦合举例控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均/最高成绩64控制耦合举例控制耦合举例 读入分数读入分数 输出结果输出结果计算平均分计算平均分 计算最高分计算最高分平均平均/ /最高最高? ?调用逻辑性模块调用逻辑性模块 B B时,须先传递时,须先传递控制信号控制信号( (平均分平均分 / /最高分最高分
31、) ),以选,以选择所需的操作。择所需的操作。控制模块必须知控制模块必须知道被控模块的内道被控模块的内部逻辑,增强了部逻辑,增强了相互依赖相互依赖。B B65控制耦合增加了理解和编程的复杂性,调用模块控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。必须知道被调模块的内部逻辑,增加了相互依赖。去除模块间控制耦合的方法:去除模块间控制耦合的方法:(1)(1)将被调用模块内的判定上移到调用模块中进行;将被调用模块内的判定上移到调用模块中进行;(2)(2)被调用模块分解成若干单一功能模块。被调用模块分解成若干单一功能模块。66改控制耦合为数据耦合举例改控制耦合为数
32、据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B267(5) (5) 外部耦合外部耦合一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例如,例如,I/OI/O模块模块与特定的设备、格式和通信协议相关联与特定的设备、格式和通信协议相关联) ),它们之,它们之间便存在外部耦合。间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。外部偶合必不可少,但这种模块数目应尽量少。68(6) (6) 公共耦合公共耦合( (公共数据区耦合公共数据区耦合) ) 一组模块引用同一个公用数据区一组模块引用同一个公用数据区( (也称全局数据区、也称全局数据区、公共数据环境公共数据环境) )。 公共数据区公共数据区指:指: 全局数据结构全局数据结构 共享通讯区共享通讯区 内存公共覆盖区等内存公共覆盖区等69公共耦合举例公共耦合举例公共数据区公共数据区松散的公共耦合松散的公共耦合 公共数据区公共数据区紧密的公共耦合紧密的公共耦合70公共耦合举例公共耦合举例 公共数据区公共数据区C CB B模块模块A A、B B、C C间存在错综复杂的联系间存在错综复杂的联系71公共耦合举例公共耦合举例所有的公共耦合所有的公共耦合关系关系A AE EB BC CD D6 6个模块共享一个模块
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土硬化路施工方案
- 板房防水卷材施工方案
- TSHAEPI 014-2024 温室气体(二氧化碳和甲烷)走航监测技术规范
- 二零二五年度网络安全就业协议书协议内容详尽规范
- 二零二五年度股权投资公司股东合作协议
- 2025年度软装行业市场监测与风险评估合同
- 二零二五年度广东省房屋租赁合同租赁保险合作协议
- 二零二五年度娱乐产业动漫IP授权使用劳动合同
- 二零二五年度店铺转让定金及品牌授权使用合同
- 二零二五年度商业空间合租租赁及税务咨询合同
- 2023年湖南食品药品职业学院高职单招(英语)试题库含答案解析
- GB/T 39096-2020石油天然气工业油气井油管用铝合金管
- 炉外精炼说课
- GB/T 23111-2008非自动衡器
- GB/T 18877-2020有机无机复混肥料
- 三大构成之立体构成-课件
- DB11 938-2022 绿色建筑设计标准
- 最新家政服务员培训课件
- 2022译林版新教材高一英语必修二单词表及默写表
- 全国青少年机器人技术等级考试:二级培训全套课件
- TB T2075-《电气化铁道接触网零部件》
评论
0/150
提交评论