




已阅读5页,还剩188页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统与软件 软件学院 桑楠 sn 第七章 嵌入式软件设计方法 核心内容 嵌入式软件工程思想嵌入式软件开发过程一些基本的设计原则通用的设计方法专用的设计方法设计方法的发展 7 1嵌入式软件工程 嵌入式软件的分类嵌入式软件的特点嵌入式软件生命期 一 嵌入式软件工程的基本思想 在传统的软件工程方法基础上 面向增加实时 并发等设计技术而形成的 功能域 非功能域 嵌入式软件的生命期 关注嵌入式实时系统 任务的实时性时间特性强调计算状态的时间边界和它们之间的关系时间表达基于时间点 基于时间间歇 开始 终止 时间限制在满足了所有启动条件后 对一个可执行对象开始执行和必须终止的约束 start dealine 关注 并发任务之间的协作关系互斥问题同步问题 信息隐藏任务之间 模块之间接口消除全局变量 二 嵌入式软件的分类 三 嵌入式软件的特点 实时性环境特定 快速启动异步事件的并发处理多任务 随机性应用 操作系统一体化VxWorks Linux应用固化不可修改性实用性面向行业 定向开发适用性可裁减 适应应用鲁棒性容错够用即可成本 资源可信性安全 防危 可靠等 四 嵌入式软件开发过程 开发过程 需求定义 功能需求基本功能 扩展功能对应于软件功能的硬件非功能需求外观 尺寸 功耗 成本 实时 安全 可靠 需求说明的要点 只指明外部行为 不考虑特殊实现列出实现的限制 必须特别说明硬件接口细节 针对嵌入式系统 文档易修改必须记录有关系统生存期的一些考虑必须特征化针对异常事件的响应 包括 资源失败临时或永久 非正确输入输入 比较 出错 输出 非正确内部数据不一致 比较 输出 最重要说明 与所委派事件相关 可以是绝对时间 给定时间达到后 事件发生 超过限定时间 事件不允许发生 在事件发生前可以产生哪些计算活动根据优先级响应某种事件 时间限制 需求说明必须包含的内容 硬件接口必要特征 任意细节 输入 输出软件功能功能结构 条件 事件 所用模型 特殊处理状态图一种可视化的形式化方法 用于说明复杂系统的行为 所有行为由外部刺激产生 状态 事件 条件 变迁 状态图示例 需求考虑 所有与设计相关的需求 功能 非功能 必须明确说明例 若无deadline 就不考虑硬实时在许可条件下 尽可能提高速度 计算机 网络 确保采样率 资源使用 Deadline等指定软件组件之间的接口需求标识消息传递 需要指定系统正常运行对CPU的使用率便于管理共享资源 开发过程 硬件选择 嵌入式处理器应用规模 领域功能硬件处理器相关 应用功能确定目标板设计需求配套芯片 外观 尺寸 功耗 成本 开发过程 嵌入式OS 来源专用 COTS选择CPU支持环境 资源 实时 功能成本开发支持 开发过程 选择 软件体系结构核心因素软件设计模型驱动 任务划分 约束 实时 安全等 保障开发平台工具链 方便性开发的可管理性 开发过程 编码调试 基本的编码原则 清除无用代码避免使用递归资源减少浮点运算速度精简库函数清除调试代码精炼 开发过程 测试 基本方法类似于一般软件测试特殊性可靠性测试实时性测试并发性测试资源占用测试 7 2常规设计方法 通用软件设计方法在嵌入式软件开发领域的应用 一 语言描述 必不可少的分析设计方法 优缺点突出对其他方法的补充 二 数学分析 形式化分析 是一种精确而有效的方法最好的验证方式缺点突出应用大型系统中的关键部件设计软件性能优化科学计算 三 结构图 体系结构 DesignDom内存中的一种结构形式 DocumentObjectModel 每个节点由一个元素构成 在设计界面中表现为控件 控件的属性在DesignDom中定义可视化GUI设计器IDE框架的核心部分 支持所见即所得的应用程序GUI开发方式 Windows风格项目资源管理Widget压缩包的管理 支持Widget应用程序和目录的压缩 加载等调试运行负责对Widget应用程序进行模拟运行和调试 四 流程图 最早之一 网口驱动主程序流程图 具体软件处理步骤描述 WidgetIDE处理流程 一种工作流描述 指纹识别的顺序图 四 伪代码 类编码 x y 0 fori 1 20beginx x 1 ifx 10theny y x 3elsey y 2 end printx y 五 有限状态机 描述控制特性 六 Petri网 定义多进程多任务关系 同步 竞争 并发 评价 Petri网演化过程 七 数据流图 DFD 描述数据转换和流动情况 确定功能关联 示例 7 3实时多任务设计 起因 常规方法的不足重点 并发性 实时性设计方式 传统方法的实时性改造要点 多任务划分基于事件 基于结构 1 RTSAD方法 RTSA阶段 实时系统需求模型RTSD阶段 实时系统设计基本概念 模块内聚模块耦合数据流 控制流 RTSA主要活动及其结果 RTSD主要活动及其结果 功能 转换 过程 功能 RTSAD示例 汽车行驶监控 车速数据流 汽车行驶监控 车速状态转换 汽车行驶监控 任务划分 优先级设置 2 DARTS方法 将系统结构化成并发任务病定义任务间接口 DARTS 任务划分原则 I O依赖性直接操作I O设备时间关键性对时间有很强要求 必须具有高优先级周期执行时间内聚多个 同一时段 重复功能内聚多个 功能紧密 交互多计算需求大量 低优先级 DARTS 任务接口 DARTS 任务接口 续 DARTS示例 机器人控制 控制执行过程 按下 上电 按钮 系统进入了上电状态 上电成功后 系统进入了手动状态 此时 操作者可以通过程序选择开关选择程序按下 运行 按钮 则选定的程序开始运行 系统转为运行态 程序运行中如果按下 停止 键 程序被挂起 之后 操作者可以按下 运行 键 使程序恢复执行 也可按下 结束 键 结束程序 按下 结束 键后 系统进入终止态 当程序最终终止执行时 系统返回手动状态 系统状态变迁图 执行流程 数据流图 任务划分 任务界面 7 4设计方法的发展 复杂性单机 网络应用领域广泛 差异大集成度软硬件协同更新速度重用通用方法 多种起因 1 软硬件协同设计 2 构件化设计 3 基于中间件的设计 7 5基本设计原则 尽量简单使用静态表尽量减少动态性恰当的任务数目使用有限状态自动机辅助设计面向对象设计减少预留接口 尽量简单 不存在完善方法任何的设计都只能尽量好 不可能最优 以成本为基准开发计划易实现 成本费用可控制 软件质量有保障不能过于强调精简软件具有可读性 可移植性 易维护常用模型和方法原型模型 增量模型 组件 构件方法 使用静态表 系统运行前 根据各任务的实时要求生成一张任务的运行时间表 指明各任务的起始运行时间以及运行长度运行时间表生成后 在系统运行过程中不再变化系统运行时 调度器只需根据这张表在指定的时刻启动相应的实时任务 减少动态性 特点决定嵌入式系统中 时间资源非常宝贵 往往需要以空间换时间采用静态数据结构如静态数组不能绝对禁止动态消息队列 资源丰富系统 动态更新 减少任务数 任务队列变长 任务调度管理复杂化 调度延迟增加 从而降低整个系统的实时性能任务数目的增多 任务间通信几何级数增长 影响系统的实时性能原则在实时性允许的范围内定义适当的任务数目 软件开发的相关考虑 一 程序的风格 注释标识符非正常语句 注释 写程序必须有注释 问题 注释的功效 注释的最重要功效在于传承 便于以后再次查看代码时理清思路前人栽树 后人乘凉方便后继程序员对程序进行维护 注释的原则 应当浅显 明白不需要临时信息不是编程指南不需要说明之后程序如何实现不是标准库函数参考手册不需要说明函数的意义及使用是答疑逻辑复杂 流程冗长处需要注释对设计思想的精确描述代表之后程序段的原理 标识符 最能体现程序员风格的是标识符命名规则问题 标识符的定义 个人风格不等于规范如两个程序员Wang和Zhang 变量名为wNum和zNum标准标识符的封装都必须易理解如Integer wI或LongInteger宏定义名易读和理解如TaskQueue和BufferCount不能因为保密而失去可读性 优秀程序员的要求 后继者可以轻松阅读自己的代码后继者可以轻松复用自己的代码后继者可以轻松修改自己的代码后继者可以轻松区分代码的作者 问题示例 16位平台上的Word类型 对32位平台 意义不明 小结 风格不能妨碍沟通混合风格等于没有风格没有个性特色的代码未必就是好代码 非正常语句 有些程序段可能是用非常规语句编写的 小结 任何语法规则都可能被滥用风格的优劣取决于是否是正确的选择选择的前提 代码是否更为简洁 高效 易维护 二 内存使用 程序内存异常的两种情况持续的内存泄漏造成内存不足非法内存访问如普通用户访问系统区 内存泄漏 死循环 不断分配 不回收 内存不足 Java垃圾回收机制回收内存 自动 问题示例 已经说明使用方法 经常失效 小结 分配的内存一定要释放所有可能的出口都需要释放完全如果没有特别原因 永远不要假定别人会弥补你的错误内存不足对不同系统影响不同 非法访问 输入参数无效 没有分配空间 可能大于最大长度 分配可能失败 解决方案 必须对输入参数进行有效性检查必须保证my name足够长避免字符串结束符 0 丢失name长度大于MAX LEN时必须处理避免空指针滥用my name分配失败必须处理各个分支 附带问题 构造函数内内存分配失败如何将失败信息通告使用者对OO编程 构造函数无返回值解决方案在构造函数中不进行内存分配 初始化函数负责 小结 非法内存访问是最常出现的错误之一C C 类特别易发生避免的方法好的编程规范 语言和工具的选择 有效测试等 三 运行速度 只在非常有限的几种情况下 才会首先考虑程序的执行速度 应用程序首先需要考虑功能正确和运行稳定计算机速度越来越快存储资源越来越丰富空间换时间大多数终端应用对速度没有严格限制 速度问题 用户不满意程序执行时间太长 资源耗用太多流媒体处理3D图象处理硬件相关处理提高编程能力 示例 1 x2 2 x4 4 x6 6 去掉内层循环和条件判断 小结 改进算法可以显著提高速度重点在反复调用的代码上使用更快的存储介质硬盘和内存数据交换会极大影响速度特别是出现异常时编译优化不保证提高速度 四 多线程 在程序中使用多线程是一种好的思路 但必须考虑相关代价 系统是否需要多线程机制是用多线程还是用多任务使用多线程机制会增加系统的复杂度错误增加 是否能保证系统稳定可靠 多进程的特点 传统的多任务处理均用多进程方式实现fork exec signal wait 每个进程有独立的内存空间可以放心使用 不必担心共享冲突缺陷不同进程之间共享资源和通信困难 进程切换开销大 耗时 轻量级进程的特点 一种折衷的线程实现方式Solaris应用程序创建的轻量级进程与应用程序在同一地址空间运行共享内存和资源每个轻量级进程绑定在一个内核线程上实际线程操作在内核完成缺点涉及内核态与用户态的切换 必须做 用户与内核 边界检查 线程的特点 用户线程通过线程库实现 在用户进程的地址空间和保护模式下运行Windows Linux Unix 同一进程的多个线程共享同一地址空间共享全局数据缺点对共享数据的读写容易引起冲突 如死锁 小结 只有在必要情况下才使用多线程多线程代码中应尽量避免使用全局数据或共享资源切记使用线程同步机制对共享类的静态变量与全局变量一样危险对多线程环境 四 版本管理 DLL使用问题 永远不清楚哪个DLL才拥有版本向后兼容的能力 解决方案 尽量保持可重用组件的兼容性将特定版本组件与特定版本应用程序捆绑在一起用全新组件实现新增功能在软件安装时 先检查版本冲突问题 版本演化示例 版本1 0发布增加功能 得到版本2 0版本2 0中发现一个bug 修改但未赋予新的版本号在修改版本2 0上扩展 得到版本2 1 无GUI 在原版本2 0上扩展 得到版本3 0 增加GUI 不断进一步完善功能以前文档丢失 版本管理基本原则 所有程序员从一个地方获取工作代码复制代码等于复制错误有效的版本编码避免不必要的版本分支注意备份不允许从备份处获取工作代码只用于修复新引入的错误 五 系统设计 A B C各自负责哪类工作 编码正确 各自的职责 A在项目中负责需求分析工作 提出 需求说明书 B在项目中负责规格说明工作 给出 规格说明书 C在项目中负责编码工作 或许还包括设计工作 各自的工作阶段 A的工作属于需求阶段B的工作属于规格说明阶段C的工作属于设计实现阶段 各自的失误 A的描述不完整 没有指出客户需求是一个可执行程序 一个DLL或一个静态函数 没有说明输入输出方式B给出了错误的规格说明书 技术上不严谨 导致开发过程远离目标C过于迷信和盲从 完全未考虑程序代码的意义和用途 小结 完善 严谨的规格说明是开发出合格软件的必要条件 六 典型方法的比较 典型的SA和OO方法 方法的比较 由顶向下的分解 要说明的问题 系统描述 典型应用航空公司订票系统 可能的情况 用户验证 查询航班指定日期 查询座位指定航班 查询预订 每种情况下 可能的操作 显示面板 用户填表 需求 系统处理一致性检查 修改DB 进一步处理 另一情况 操作界面 任务状态图 问题求解要点 尽可能多的一般性和灵活性状态图可能很大一个应用可以有数百个状态结构可能改变设计者无法预见所有可能的状态和转换 完成后需要改变应用多样最小的航空公司订票系统是一个范例 但各公司的需求不同 因此需要可适合不同应用的复用模块集 第一个方法 直接的 不精确的程序模式 由许多模块组成 每个模块处理系统中的一个状态B查询 B预订 B取消 模块结构 非OO观点 B查询Repeat 在订票面板上显示查询 Read用户输入Cfor下一步IfC非法Then 输入合适信息 EndUntilC合法CaseCOf 处理输入 C0 gotoExit C1 gotoBHelpC2 gotoB预订 End 存在的问题 Goto语句的使用 分支语句结构确切反映了状态转换图的结构 软件设计脆弱任何简单的改变 增加状态 改变状态变迁等 必须改变系统的整个结构 无法复用 结构化解决方案 由低级的 基于goto的结构进化成由顶向下的 层次组织的结构 结构化方法 OO方法一定是结构化方法 任务状态图 状态变迁功能 状态变迁仅仅是系统的性质 不应控制所有事情 将状态变迁从算法中剥离出来 状态变迁依赖于具体应用 状态变迁图的定义二元组 状态 用户选择 软件级实现两种方法 由一个子程序 函数 实现 数组一类的数据结构 状态变迁表 注意 状态return返回调用状态 状态 1为终止状态 程序结构 程序结构描述 选择系统的Top 主程序 执行会话 模块 描述怎样执行一个完整的交互会话 直接下级与状态有关的操作 定义初始 终止状态 状态变迁结构 描述每个状态上可执行操作的 执行状态 最低级构成 执行状态 的操作 显示屏幕等 完整的软件结构 镜像 了应用结构 涉及状态 基本操作等 Execute Session 尽可能与实际应用无关 执行一个完全的交互系统会话localstate choice INTEGERdostate initialrepeatexecute state state next 修改下一个状态的值state transition state next untilis final state endend Execute Session 描述 一个典型的状态变迁图算法 每个阶段 都处于一个状态 状态由 initial 开始 以 is final 结束 对非结束状态 执行 execute state execute state 技术不适合于OOD 改变本身变量的值state 不显示与任何特殊应有关的信息 必须在第二级填写应用相关的信息 变迁函数 初始化状态 终止检查 Execute State 描述 精练 execute state 执行与状态s相关的操作 返回用户选择的下一个状态c Execute State execute state ins Integer outc integer locala Answer ok Boolean Dostate initialRepeatdisplay s read s a ok correct s a IfnotokThenmessage s a EndUntilokEndprocess s a c next choice a End 相关操作 display s 输出到与状态s有关的面板read s a 将状态s的显示面板上的用户输入读到a中correct s a 返回true的充要条件是a为正确输入必须正确处理第一级的特性 display read correct message 方案评述 一个较好的方案 不完全满意 比 第一个方法 好 无法满足可扩展性和可复用性 状态 表面上与应用无关 实际上模块间 与应用间紧耦合 主要问题系统的数据变迁结构 状态s到处都用 真正的程序结构必然涉及 数据 程序结构 非OO方法 功能与数据未统一管理 所有第一级的程序必须完成依赖于状态s的不同操作 对某些状态 显示面板 读 解释用户的输入状态s 检查输入是否正确 增加状态需要涉及整个结构 每个第一级程序 复用无法实现 程序结构描述 OO解决方案 若系统涉及太多的数据 应该以数据为主导 功能服从数据 逆转定律 从结构设计 功能分解 到OOD的关键 OO方法以数据类型为基础 将程序连到最相关的数据上 状态作为类 功能结构中 状态 仅仅是一个变量 OOD中 状态 可以作为OO结构的模块化成分 即是一个 类 类 中 所有的操作都表达了 状态 的一个特性 显示对应的屏幕 分析用户输入 检查输入是否正确 表达完成活动的状态的顺序 状态作为类 结构 状态 类的形式 classStatefeatureinput Answer choice Integer executeisdo enddisplayisdo endreadisdo endcorrect Booleanisdo endmessageisdo endprocessisdo endend 相关信息 状态变量已隐藏 属性input choice 操作其余 状态使用s execute 设计完善信息隐藏 将execute当作一个命令 不返回用户选择choice 采用input作为输入的用户选择 继承和被派生类 类State没有描述一个特殊的类 execute对所有状态相同 但其它操作是状态相关的 被派生类的作用 在状态级 了解execute的所有细节 在状态级 知道其它操作存在 了解规格说明 但不知道实现 这些操作应该被派生 被派生类 Indexing描述 交互的 面板驱动的应用的状态 deferredclassStatefeature 存取input Answer 当前状态所需输入choice Integer 下一步的用户选择feature 状态报告correct Booleanis 输入是否正确deferredend 被派生类 基本操作 feature 基本操作displayis 显示与状态相关的面板deferredendmessageis 输出出错信息deferredendreadis 获取用户输入deferredendprocessis 处理输入requirecorrectdeferredend 基本操作 续 executeis 执行与当前状态有关的操作 为下一个状态设置choicelocalok Booleandofromok FalseuntilokLoopdisplay read ok correct ifnotokthenmessageendendprocessensureokend 继承 采用 继承 来描述特定的状态 继承 程序结构 classEnquiry On FlightsinheritStatefeature 存取displayis 输入是否正确do 特定的显示过程end 特定的read correct message end classEnquiry On Flight 继承 描述 结构是分离的 公共元素集中在在State中 不重复说明 满足封装 开放原则 State被封装成定义好的 可编译的单元 随时可增加子类 后代 完整的系统描述 完成整个设计必须仔细管理会话 功能分解结构中 execute session完成 在OOD中 抽象的数据类型方法 应该有的抽象 关键抽象State 特定交互系统的抽象Application 新类 Application特性 Application特性 续 execute session描述怎样执行应用 简写成execute 封闭类 不会与State的execute混淆 initial与is final应用中的特殊状态 描述Application性质非State性质 State无初始化和结束状态 某些应用有final 某些没有 transition描述应用中的状态变迁 功能分解与OO分解 OO分解包括了功能分解 功能分解是OO分解的特例 一些State 一些Application OO技术 也包含层次机制 两种方法组织软件元素的方法不同 在最低级 两种方法的元素是类似的 数据抽象 信息隐藏 断言 继承 动态绑定 Application扩展 增加一个新状态 增加一个新变迁 重复前两个操作 构建一个应用 删除一个状态 变迁 将一个完整应用保存进数据库 包括其状态和变迁 模拟一个应用 用线性显示替代State 检查变迁 监控应用的使用 Application类 与实现有关的几个决定 应用有n个状态1 n 状态属性随应用而异 一维数组 变迁为另一属性n m m为可能的选择 二维数组 初始状态 保存在属性initial中 由方法choose initial设置 Application的创建过程采用make 带四个参数a make 1 25 1 10 应用类实现 indexing描述 交互的 面板驱动的应用 classApplicationcreationmakefeature 初始化make n m Integer is 创建n个状态 m个选择的应用dotransition make 1 n 1 m associate state make 1 n endfeature 存取initial Integer 初始化状态数 应用类实现 二 feature 基本操作executeis 完成一个用户会话localst State st num Integerdofromst num initialinvariant0 st num nuntilst num 0loopst associate state item st num st execute 引用State的executest num transition item st num st choice end 应用类实现 三 feature 元素改变put state st State sn Integer is 得到序号sn的状态strequirel sn associate state upperdoassociate state put st sn endchoose initial sn Integer is 设置sn为初始状态序号requirel sn associate state upperdoinitial snend 应用类实现 四 put transition source target label Integer is 获取变迁标记label 由状态source变迁到状态targetrequirel source associate state upperl target associate state upperl label associate state upper2dotransition put source label target endassociate state put st sn end 应用类实现 五 feature NONE 实现transition Array2 State associate state Array State 其它属性 Invarianttransition upper1 associate state upperEnd classApplication 状态的多态结构 st execute的执行依赖于 被派生的特性read message correct 在哪级State上派生 对哪个后代的影响如Reservation st execute对不同操作的统一接口多态性 状态的多态数组 创建一个交互应用 应用由一个实体表示air reservation 航空公司预订系统 必须创建相应的对象 air reservation make st num choice num 分别定义和创建应用的状态 作为State的后代 新的或复用的 为应用中的每个状态s赋一个数i air reservation put state s i 创建一个交互应用 续 设置应用的初始状态 赋一个数i0 air reservation choose initial i0 设置状态变迁 air reservation enter transition sn tn i 对终止变迁 tn 0 执行应用 air reservation execute session 可随时用同样的过程为应用添加 删除State Transition 以及其它扩展 示例 设计一个简单的电视遥控器 分析 设计 分析阶段 综述问题 写下一个能清晰定义问题或工作目标的问题综述 清楚 全面 不提供解决方案 用户同意包括潜在用户 分析阶段 约束条件 约束定义可能对项目带来灾难的问题的限制注重约束的原因 约束随过程不断产生 约束影响所选择方 约束可以滋生新的约束 太多约束则结果无意义 可能产生约束的一些问题 是否需要满足项目的工期限制是否存在项目预选限制项目投入人员每个员工的工时每个员工的技术水平员工对所需解决问题的熟练程度 可能产生约束的一些问题 续 员工地理位置关键人才特殊硬件需求特殊工具需求必须的审查环节对供货方的依赖程度 分析阶段 罗列需求 使用用户语言 非工程术语假设用户认可可能需要罗列的问题 系统的任务目标系统接收的输入系统输出目标 内容系统的物理要求大小 重量系统相关外设 需要罗列的问题 续 系统运行环境内存与外存需求可靠性 可拆装性 牢固性电源管理故障报警代用装置如手动装置远程诊断 维护需求 例 问题陈述 开发一个三个按键的简单遥控器遥控电视机遥控器重量轻电池供电内置红外控制器三个按键设置 一个Power 两个频道切换键上下箭头 频道切换递增或递减 例 系统约束 必须用客户提供的ROM 该电视只响应独特约定信号 该约定由厂商专门的代码 信号和时序构成 厂商代码存于专用ROM中遥控必须遵从客户的代码时序规定 遥控器发射信号时 信号 代码 命令 时序有误 电视不能识别 进一步的说明 ROM封装说明 电路设计要求代码时序规定的详细说明 例 用户要求 电池供电 最多两个5号电池 每次更换电池后可以按键1000次以上重量小于100克 大小限制在10cm 5cm 1 5cm内采用高密度塑料制作电源按键必须是圆形的 红色频道切换键黑色 长方形 详细说明产品的技术指标 例 用户要求 续 防震性1 5米高度落下无影响红外信号必须符合客户提供的时序技术要求有效范围距离10米内 电视机前50度角范围 与红外接收器的夹角不超过20度红外信号必须在按键后20ms内发射 注意 说明必须是非常概括的 不涉及设计细节只考虑系统要做什么 例 软硬件说明 处理器4位或8位 型号待定操作系统无编程语言直接写硬件 C或汇编第三方软件无第三方硬件无 设计阶段 八个步骤 审查分析资料说明硬件部件定义硬件接口说明软件子系统定义软件接口规定启动与关闭过程规定出错处理方案检查设计 1 设计阶段 审查资料 对问题陈述和用户需求进行审查 理清思路审查约束条件 确定构建系统的方案 软硬件划分 算法选择 工具选择反复进行 2 设计阶段 硬件部件 硬件部件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三二模考试题及答案
- 高分地理考试题及答案
- 风景简笔画考试题及答案
- 发电厂考试题及答案
- 中国糖果PVC包装盒项目投资计划书
- 建设项目环境影响报告表0502
- 电商规则考试题及答案
- 电焊办证考试题目及答案
- 中国燃料油添加剂项目创业投资方案
- 地勤机务考试题及答案解析
- 光伏电站安全运维讲解
- 缺血性脑血管疾病
- 第2讲科研不端不当行为及其桅
- 工作岗位名称、编码、职责国家统一标准
- 《建筑平立剖面》课件
- 拼多多市场营销案例分析
- 徐汇区智能鱼池施工方案
- 自考《兽医内科学与兽医临床诊断学》考试复习题库大全(含答案)
- (完整版)数字信号处理教案(东南大学)
- 初中物理八年级下册7.3重力市公开课一等奖省优质课赛课一等奖课件
- 陶杰版材料科学基础-第1章-晶体学基础
评论
0/150
提交评论