版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程第1章软件工程概述1看了《色戒》,知道女人是靠不住的看了《投名状》,知道兄弟是靠不住的看了《集结号》,知道组织是靠不住的看了《长江7号》,知道外星人是靠不住的看了《霍元甲》,知道徒弟是靠不住的看了《无间道》,知道警察是靠不住的看了《史密斯夫妇》,知道公司是靠不住的看了《疯狂的石头》,知道国际高手是靠不住的看了《越狱》,知道牢房是靠不住的……看了《软件工程》,知道软件是靠不住的2软件工程的产生缘起:“软件危机”困难:软件的属性解决之道:工程化3软件工程学科范畴计算机科学和数学用于构造软件的模型与算法;工程科学用于制定规范、设计范型、评估成本以及确定权衡等;管理科学用于计划、资源、质量、成本等管理。软件工程知识与实践数学基本原理计算机科学基本原理应用领域知识与实践工程科学知识与实践管理科学知识与实践5CC2005的软件工程范畴6软件工程知识体系(SWEBOK)软件设计软件测试基本概念和定义测试级别测试技术测试相关度量测试过程管理软件需求需求工程过程需求获取需求分析需求规格说明需求验证需求管理软件构造降低复杂性预知多样性结构化验证使用外部标准软件维护基本概念维护过程关键问题维护技术软件配置管理配置过程管理配置标识配置控制配置状态报告配置审计软件发布管理与交付软件工程管理组织管理过程/项目管理软件工程度量软件工程过程软件过程概念过程基础设施过程度量过程定义定性过程分析过程实施与变更软件工程工具与方法软件工具软件方法软件质量软件质量概念SQA和V&V目的与计划SQA和V&V活动与技术适用于SQA和V&V的度量基本概念关键问题结构与体系结构质量分析与评价设计符号策略与方法7软件工程教育知识体系(5)软件建模与分析建模基础 模型类型分析基础需求基础获取需求需求规格说明与文档需求验证(6)软件设计设计概念 设计策略体系结构设计人机界面设计详细设计设计策略设计支持工具与评价9软件工程教育知识体系(7)软件验证与确认验证与确认的术语和基础评审测试人机用户界面测试和评价问题分析与报告(8)软件演化演化过程演化活动(9)软件质量软件质量概念与文化软件质量标准软件质量过程过程保证产品保证(10)软件管理管理概念项目计划项目人员与组织项目控制软件配置管理10内容摘要软件的概念软件工程的基本概念软件过程及其模型11软件的发展
1946-1956年
从计算机问世到实用的高级程序语言出现前存储容量比较小,运算速度比较慢采用个体工作方式,用低级语言编写程序应用领域主要是以数值数据处理为主的科学计算,其特点是输入、输出量较小衡量程序质量的标准主要是功效,即运行时间省、占用内存小主要研究内容是科学计算程序、服务性程序和程序库,研究对象是顺序程序131956-1968年
从实用的高级程序语言出现到软件工程出现前存储器容量大,外围设备得到迅速发展,出现了高级程序设计语言应用领域包括数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大高速主机与低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系统20世纪60年代初提出了软件一词,开始认识到文档的重要性研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件工作方式逐步从个体方式转向合作方式出现“软件危机”141968年-至今
从软件工程出现到现在硬件向巨型机和微型机二个方向发展,出现了计算机网络,软件方面提出了软件工程,出现了“计算机辅助软件工程”(CASE)计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入的宿主系统开发方式逐步由个体合作方式转向工程方式软件工程方面的研究主要包括软件开发模型、软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等软件方面研究以智能化、自动化、集成化、并行化、以及自然化为标志的软件开发新技术15代价高进度难控制工作量和成本估算难质量差维护难用户不满意软件生产率提高的速度跟不上计算机应用迅速普及深入的趋势1979年,美国USGovernmentAccountingOffice的调查1999年,美国StandishGroup的调查“软件危机”17软件危机的原因软件是逻辑产品,开发进度、成本难以估计缺乏或不完整、不一致的文档给维护带来困难用户对软件需求的描述往往不够精确,有遗漏,有二义软件开发人员对需求的理解与用户的本来愿望有差异大型软件项目需多人协同完成,缺乏管理经验开发人员不能有效地、独立自主地处理大型软件的全部关系缺乏有力的方法学和工具的支持软件项目的特殊性和人类智力的局限性……18问题归结软件生命期阶段计划需求设计实现测试维护主观盲目地制定计划;成本、资源、工作量估算不准;进度计划无法遵循需求提出不明确或者表达不准;需求错误;需求说明书质量不高没有统一的、公认的方法论和规范指导;设计资料不完整;忽视接口;编码不规范、难读;程序文档不完整;修改随意,与设计有偏差,无修改记录变更随意不规范;维护文档不完整;维护错误测试不充分;测试文档不完整;测试过程缺乏控制不注意回归测试19软件的特点软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大软件的使用没有硬件那样的机械磨损和老化问题21软件的故障曲线22软件的开发和运行常受到计算机硬件的限制,对计算机硬件有着不同程度的依赖性软件的开发至今尚未完全实现自动化软件成本相当昂贵相当多的软件工作涉及到社会因素软件的特点(续)23内容摘要软件的概念软件工程的基本概念软件过程及其模型25软件工程的定义1968年NATO(北大西洋公约组织)会议上首次提出FritzBauer:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则IEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程26软件工程的发展已经历了四个重要阶段:1、第一代软件工程—传统的软件工程2、第二代软件工程—对象工程3、第三代软件工程—过程工程4、第四代软件工程—构件工程
80年代中到90年代,面向对象的方法与技术得到发展,研究的重点转移到面向对象的分析与设计,演化为一种完整的软件开发方法和系统的技术体系,称为对象工程。软件工程的发展29软件工程的发展已经历了四个重要阶段:1、第一代软件工程—传统的软件工程2、第二代软件工程—对象工程3、第三代软件工程—过程工程4、第四代软件工程—构件工程80年代中开始,人们在软件开发的实践过程中认识到:提高软件生产率,保证软件质量的关键是“软件过程”,是软件开发和维护中的管理和支持能力,逐步形成软件过程工程。软件工程的发展30软件工程的发展已经历了四个重要阶段:1、第一代软件工程—传统的软件工程2、第二代软件工程—对象工程3、第三代软件工程—过程工程4、第四代软件工程—构件工程90起年代,基于构件(Component)的开发方法取得重要进展,软件系统的开发可通过使用现成的可复用构件组装完成,而无需从头开始构造,以此达到提高效率和质量,降低成本的目的。称为构件工程。软件工程的发展31软件工程的三要素三要素:软件工程方法软件工程工具软件工程过程软件工程层次32要素一:软件工程方法软件工程方法为软件开发提供了“如何做”的技术在时间上将软件开发工作划分为若干阶段,为每一阶段规定了若干任务,并提供为完成这些任务所需的各种技术是一种使用早已定义好的技术集和符号表示习惯来组织软件生产的过程代表:结构化开发方法Jackson开发方法Z形式化开发方法面向对象开发方法33软件开发方法可分为几大类:面向过程的开发方法(传统的)面向对象的开发方法基于构件的开发方法特别要注意:由于软件与程序是不同的概念,软件开发方法与程序设计方法是两个不同的概念软件开发方法可以是针对局部的,也可以是针对全局的。软件工程方法,更加强调和重点研究的是需求分析与软件设计的开发方法34一、结构化开发方法(StructuredDevelopingMethod)是一种面向数据流的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想是自顶向下、逐步求精,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。
结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如功能的分解与抽象、模块独立性、信息屏蔽等。35面向对象方法是80年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为90年代软件的核心技术之一。面向对象方法
其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。36软件复用技术“软件重用”或“软件复用”(SoftwareReuse)是指将已有的软件成分用于构造新的软件系统。该技术是提高软件生产率和质量,降低成本的有效方法。复用方式复用程序:包括目标代码和源代码的复用,可通过连接(Link)、绑定(Binding)、包含(include)等功能支持及对象链接及嵌入(OLE)技术实现。复用分析
比设计复用级别更高,实现方式与设计复用类似复用设计:设计结果比源程序的抽象级别高,因此复用受环境影响小。可以通过从现有系统中提取全部或者不同粒度的设计构件,或者独立于具体应用开发设计构件。复用结构
复用模块结构或者数据结构。可复用的构件
构件是指可以被明确标识的软件制品,可以是软件开发不同阶段的产品。
可复用构件是指可被其它系统复用,用于构成新系统的构件。可复用构件的特性:1.独立性解决相对独立的问题,与外界联系尽量少。2.完整性既要包括完整的解决方案,还定义相应操作。3.通用性在同类应用中具有一般性。4.可标识性通过合适的命名,构件所解决的问题是可标识的。5.可适应性适应环境变化。6.可靠性对各个使用它的系统都具有高的可靠性。38要素二:软件工具为支援软件人员的开发和维护活动而使用的软件项目估算工具、需求分析工具、设计工具、编程和调试工具、测试工具和维护工具、……软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件工具集成起来,构成“计算机辅助软件工程”(CASE)39在软件工程活动中,软件工程师和管理人员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程称为计算机辅助软件工程计算机辅助软件工程(CASE)
ComputerAidedSoftwareEngineering40软件工具是用来辅助计算机软件的开发、运行、维护、管理、支持过程中的活动或任务的软件CASE工具41CASE工具的类型按支持的软件过程活动分类:开发过程:需求分析工具,设计工具,编码工具,测试工具它们还可按支持的开发方法分为:结构化XX工具,面向对象XX工具维护过程:版本控制工具,文档分析工具,逆向工程(reverseengineering)工具,再工程(reengineering)工具管理过程:项目管理工具,配置管理工具,软件评价工具应用类工具42集成型开发环境是一种把支持多种软件开发方法和过程模型的软件工具集成到一起的软件开发环境集成型开发环境由环境集成机制和工具集组成集成型软件开发环境43软件开发环境一个理想的软件工程环境:支持开发+支持管理的工具软件开发环境的特点数据库软件工具的集成友好的用户界面信息提取的能力分析能力可裁减性和可扩充性项目控制和管理方法学的支持
44典型的软件工程环境具有三级结构:1.核心级(核心工具组、数据库、通讯工具、运行支持功能、与硬件无关的移植接口)2.基本级(环境的用户工具,编译、编辑程序,作业控制语言的解释程序等)3.应用级(应用软件的开发工具)应用级基本级核心级45要素三:软件工程过程将软件工程的方法和工具综合起来,达到合理、及时地进行计算机软件开发的目的定义方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑等基本的过程活动包括软件描述、软件开发、软件确认、软件演化等46软件生存周期
(softwarelifecycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期软件生存周期大体可分为如下几个活动:计算机系统工程(计划和分析)、需求分析、设计、编码、测试、运行和维护47软件开发的基本目标较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用按时完成开发工作,及时交付使用48目标之间的关系软件开发项目的实施,力图在各个目标的冲突之间取得一定程度的平衡49软件工程七原则(B.W.Boehm,1983)按软件生存期分阶段制定计划并认真实施坚持进行阶段评审坚持严格的产品控制使用先进的程序设计技术明确责任用人少而精不断改进开发过程50内容摘要软件的概念软件工程的基本概念软件过程及其模型51软件过程软件过程是软件生存周期中的一系列相关的过程。过程是活动的集合,活动是任务的集合。软件过程有三层含义:个体含义:软件产品或系统在生存周期中的某一类活动的集合,如软件开发过程,软件管理过程等整体含义:软件产品或系统在所有上述含义下的软件过程的总体工程含义:即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过程模型,并结合软件产品的具体要求进行实例化,以及在用户环境下的运作,以此进一步提高软件生产率,降低成本52软件过程体系结构53ISO12207软件生存周期过程ISO/IEC12207标准把软件生存周期中可以开展的活动分为:5个基本过程8个支持过程4个组织过程每一个过程划分为一组活动,每项活动进一步划分为一组任务。541、软件规格说明:规定软件的功能及其运行环境2、软件开发:产生满足规格说明的软件3、软件确认:确认软件能够完成客户提出的要求4、软件演化:为满足客户的变更要求,软件必须在使用的过程中演进。软件过程通常包括四类基本过程55软件过程模型软件过程模型是软件开发全部过程、活动和任务的结构框架也称软件开发模型或软件生存周期模型典型的软件过程模型有:瀑布模型(waterfallmodel)演化模型(evolutionarymodel)增量模型(incrementalmodel)原型模型(prototypingmodel)螺旋模型(spiralmodel)喷泉模型(waterfountainmodel)基于构件的开发模型(component-baseddevelopmentmodel)形式方法模型(formalmethodsmodel)56边做边改模型(Build-and-FixModel)“作坊式”开发,主要问题在于:缺少规划和设计环节,导致软件无法继续修改忽略需求环节没有考虑测试和程序的可维护性57瀑布模型
(W.Royce,1970年)问题定义编码需求分析设计可行性研究运行与维护测试开发时期运行时期计划时期(目标与范围说明书)(可行性论证论告)(维护报告)(测试报告)(程序)(设计文档)(需求说明书)58瀑布模型的特点:
特征接受上一阶段的结果作为本阶段的输入利用这一输入实施本阶段应完成的活动对本阶段的工作进行评审将本阶段的结果作为输出,传递给下一阶段
缺点缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发开发早期存在的问题往往要到交付使用时才发现,维护代价大59循环模型为了描述软件开发过程中可能的回溯,尤其是维护阶段往往要经历上述各个阶段,采用循环模型描述需求分析设计编码测试运行评价计划60增量模型项目日历时间软件功能性和特征12345第2次增量发布增量212345第n次增量发布增量n12345第1次增量发布增量1┇5部署(发布,反馈)4构造(编码,测试)3建模(分析,设计)2计划1交流61增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。增量模型融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征增量模型强调每一个增量都发布一个可运行的产品62增量模型特别适用于:需求经常变化的软件开发市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术63原型(prototype)是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。被开发的原型应交付给客户试用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。原型模型64部署交付和反馈构建原型交流快速设计方式建模快速计划原型模型65原型模型的特点优点能够处理模糊的需求,开发人员与用户可通过原型充分进行交流原型系统可用做培训环境有助于降低风险、降低总的开发费用,缩短开发时间缺点对于开发人员不熟悉的领域,演化模型可能误导开发者把系统的次要部分当作主要框架,作出不切题的原型原型迭代不收敛于开发者预定的目标原型过快地收敛于需求集合,使得某些基本方面被忽视资源规划和管理比较困难,随时更新文档也会带来许多麻烦长期在原型环境下开发,只注意得到令人满意的原型,容易“遗忘”用户环境与实际客户环境之间的差别66瀑布模型和演化模型的结合,增加了风险分析螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析:评价所选的方案,识别风险,消除风险工程实施:实施软件开发,验证工作产品客户评估:评价开发工作,提出修正建议螺旋模型(B.Boehm,1988)67
68简化的螺旋模型
简化版本:瀑布模型+风险分析每个阶段之前确定目标,可供选择的办法及其限制条件风险分析每个阶段之后评估计划下一阶段69螺旋模型的特点适合于大型软件的开发,它吸收了软件工程“演化”的概念,使得开发人员和客户对每个演化层出现的风险有所了解,继而做出应有的反映模型的使用需要具有相当丰富的风险评估经验和专门知识。如果项目风险较大,又未能及时发现,势必造成重大损失70喷泉模型喷泉模型是一种支持面向对象开发的模型体现迭代和无间隙特征迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统无间隙:开发活动之间不存在明显的边界71支持软件复用(reuse)利用预先包装好的软件构件(包括组织内部开发的构件和现存商品化构件COTS)来构造应用系统基于构件的开发模型72形式方法模型(formalmethods)是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。形式化方法用严格的数学语言和语义描述功能规约和设计规约,通过数学的分析和推导,易于发现需求的岐义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。通过数学的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码的转换成为可能。73形式化开发的方式采用形式化的软件开发方法,对形式化的软件规格说明进行一系列自动的或半自动的程序变换,最终映射成为计算机系统能够接受的程序系统74形式化规格说明及其变换技术主要技术手段基于模型的规格说明及其变换技术基于代数结构及其变换技术基于时序逻辑的规格说明和验证技术基于可视化的形式化技术……程序变换系统由一系列程序变换语言(大多是系统内部的中间语言)及其编译系统、分析验证工具、控制变换过程的工具和变换规则库构成。
75本章小结软件的基本概念软件危机的表现和原因软件工程的基本概念常见的软件过程模型及其特点76讨论:一些关于软件工程的观点我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题如果我们已经落后于计划,可以增加更多的程序员来赶上进度项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的一旦我们写出了程序并使其正常运行,我们的工作就结束了。人们有时认为,只有差的软件产品才需要维护77本课程的教学目标软件生命期各个阶段的主要工作需求分析、设计、测试等关键任务的方法和技术有关CASE工具的使用MSProject;RationalRose;MSVisualSourceSafe;JUnit等主要软件文档的撰写经验与讨论78w*t!qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaJ7F4C0z)w&oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYnVjSK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOG5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0z)v&s#pXmUiRfOcK9D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络教育培训质量承诺责任书(3篇)
- 信息守秘保护承诺函(6篇)
- 产品安全无质量问题保证承诺书(7篇)
- 科技成果流转承诺函6篇范文
- 汽车租赁运营服务协议
- 公司技术研发与创新支持承诺书范文8篇
- 2025年萧山五中学招聘面试题库及答案
- 2025年佳木斯事业单位线上考试及答案
- 2025年中盐财务笔试真题及答案
- 2025年五分钟八道题的面试题库及答案
- 书法培训班安全制度
- GB/T 44626.2-2025微细气泡技术表征用样品中气泡消除方法第2部分:消除技术
- 4s店安全教育培训课件
- 工伤三方协议书
- 2026年苏科版七年级上学期数学期末考试试题(含答案详解)
- 2025年速冻食品市场调研:馄饨需求与馅料多样度分析
- 龙门吊安全教育培训课件
- 风力发电运输合同范本
- 法律合规风险评估检查表
- 2025至2030武术培训行业深度分析及投资战略研究咨询报告
- 医美体雕科普知识培训课件
评论
0/150
提交评论