版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
物联网应用软件设计武汉大学计算机学院自强弘毅求是拓新1/170学习目标目标类别具体目标知识理解理解物联网应用软件的十大特点及其对设计的指导意义方法掌握掌握软件工程基本方法,特别是结构化方法与面向对象方法的核心思想实践能力能够运用需求分析技术获取和表达物联网软件需求设计能力掌握软件设计各阶段的任务,能够完成模块划分、架构设计工程思维理解软件测试、维护、项目管理在物联网软件开发中的重要性综合应用能够针对物联网应用场景,选择合适的部署方案和开发工具2/17001物联网应用软件的特点02软件工程方法03
应用软件设计模式04
嵌入式软件设计方法目录05
分布式信息处理与软件设计方法06
移动终端APP设计07
物联网应用部署08
物联网应用软件设计说明书编制3/170物联网应用软件的特点特点描述对设计的指导意义交互广泛性一对多、多对多的交互模式需处理并发性、数据相关性、资源冲突测试困难性缺乏直观界面,与客观世界关联需加强仿真测试、形式化验证能效敏感性电池供电,对能耗敏感设计休眠机制、低功耗算法传输实时性严格的时间限制需满足时限要求,优化响应速度批量微型性数据量小但频率高协议需轻量高效数据海量性随时间积累海量数据需健壮的数据处理能力施控忠实性必须准确控制客观对象保证正确性、鲁棒性隐私暴露性设备暴露于公开场合加强安全设计、隐私保护时间关联性数据具有时间相关性需时间序列处理能力功能智能性AIoT趋势,强智能特性集成AI,支持小微设备部署4/170课堂讨论问题背景你所在团队要设计一个"智能农田监测系统",由太阳能供电的传感器节点采集土壤湿度、温度、光照数据,通过LoRa网关上传至云平台,农民通过手机APP查看数据和接收灌溉建议。请分析该系统体现了物联网软件的哪些特点?针对这些特点,你在设计时会重点关注哪些问题?5/170课堂测验物联网软件与传统互联网软件相比,最显著的区别是:A.需要处理海量数据B.具有交互广泛性(一对多、多对多)C.需要进行软件测试D.需要编写用户界面6/17001软件工程概述02软件开发过程03
问题定义与可行性分析04
需求分析软件工程方法05
软件设计06
软件实现07
软件维护08
软件计划与管理7/170软件工程概述定义软件工程是“将系统化的、规范的、可量化的方法应用于软件的开发、操作和维护,即将工程化的方法应用于软件。”(IEEESTD61012-1990)宗旨用工程化方法开发和维护软件中心课题控制由于问题分解出现大量细节而导致的复杂性8/170软件工程方法学的三要素关注点分层“质量”焦点过程方法工具SoftwareEngineering:APractitioner’sApproach,8/e(McGraw-Hill2014).Slidescopyright2014byRogerPressman.管理视角:软件开发、运行和维护需要开展哪些工作、按照什么样的步骤和次序来开展工作技术视角:软件开发、运行和维护如何做工具辅助的视角:如何借助工具来辅助软件开发、运行和维护9/170主流软件开发方法结构化方法学核心思维:自顶向下逐层分解,模块化设计优点:成功率高、生产率高缺点:数据和操作分离,维护困难面向对象方法学核心思维:对象、类、继承、协作、消息优点:问题域与解空间一致,易于维护和重用缺点:学习曲线较陡,运行时有性能开销,抽象层次可能是特定系统开发负担敏捷方法核心思维:价值驱动、拥抱变化、短周期迭代、跨职能团队自组织协作优点:快速响应市场需求和需求变更,提升团队士气与生产力缺点:团队自组织和沟通能力要求极高,可预测性较弱,复杂项目实施难度大10/170软件生命周期核心思想:分而治之,早期发现问题,避免错误放大软件定义时期问题定义──确定目标、范围、可行性需求分析──明确"做什么",形成需求规格说明软件计划──成本估算、进度安排、资源分配软件开发时期软件设计──总体设计+详细设计软件编码──选择合适的语言实现软件测试──发现并排除错误软件运行和维护时期运行──交付使用维护──纠错、修改、完善、扩充11/170问题定义与可行性分析问题定义任务:弄清问题性质、工程目标、软件规模产出:问题定义报告(项目任务说明书)可行性研究目标:以最小代价确定问题是否值得解决研究维度技术可行性:现有技术能否实现?经济可行性:成本效益如何?社会因素:法律法规、用户接受度?12/170案例分析问题背景某社区希望开发一个社区文化资源的管理系统,为社区居民共享社区内的文化资源提供方便。问题定义报告
用户单位:XX社区
负责人:XXX
分析员单位:XX软件公司
分析员:XXX
项目名称:XX社区文化资源管理系统
问题概述:XX社区中有着各类文化资源,供社区工作人员、社区居民浏览和借阅。希望通过社区文化资源管理软件帮助社区文化站管理社区各类文化资源的存放和使用问题。
项目目标:开发一个有效的社区文化资源管理系统
项目规模:开发成本约XX万元
可行性研究建议:进行一周,费用不超过XXXX元签
字:XXXXXXXXX年XX月XX日13/170需求分析需求分析的目标核心问题:明确软件具体要实现什么功能产出:完整、准确、清晰、具体的目标系统描述需求获取的内容系统综合要求数据要求逻辑模型(功能模型、数据模型、控制模型)修正系统开发计划14/170系统综合要求系统的所有功能性能需求可靠性和可用性出错处理需求接口需求环境用户特点约束逆向需求将来可能的需求15/170案例分析:社区文化资源管理系统需求陈述
社区中有着各类文化资源,包括图书、杂志、报纸、电影(光盘、录像带)、音乐(磁带、光盘、唱片)等,供社区工作人员、社区居民浏览和借阅。
社区文化资源有一部分是存放在社区文化站的,这些资源是社区购买、社区居民和各界人士捐赠的,由管理员登记在册,方便使用者查询。某些居民私有的一些文化资源,也愿意提供给社区其他居民或工作人员使用,但这部分资源只在文化站登记,而存放在拥有者家中,其他居民或社区工作人员可通过文化站向拥有者借用。
社区居民或者工作人员凭本人身份证在文化站阅览资源,不需办任何手续;如需借出,须先在管理员处登记借用者信息(姓名、身份证号码、联系电话)、资源信息、借出日期、归还日期等借阅信息,然后才能借出资源;若欲借资源为私藏,则由管理员按借阅流程办理借阅手续后,将资源拥有者的联系方式给借阅者,再由借阅者联系资源拥有者获取资源。
资源借用到期前,管理员会联系借用者催还资源。借用者归还资源后,管理员收回资源,并注销借用登记;如资源是私藏的,管理员将联系资源拥有者到文化站取回资源。16/170用例模型——社区文化资源管理系统处理借阅维护资源维护借阅者查询资源处理归还催还资源借阅者管理员添加资源修改资源删除资源添加借阅者修改借阅者删除借阅者社区文化资源管理系统17/170传统需求分析方法分析模型功能模型:数据流图(DFD)数据的加工处理过程数据模型:实体-关系图(ERD)系统的实体对象、对象属性以及实体之间的关系行为模型:状态转换图(STD)系统、子系统或者对象对内部或者外部事件响应的行为数据字典定义所有数据元素18/170数据流图(DataFlowDiagram,DFD)采用的符号层次化的数据流图顶层椭圆S:整个系统椭圆1:具体的加工处理椭圆1.1、1.2、1.3、……更具体的加工处理……19/170案例分析——社区文化资源管理系统顶层数据流图社区文化资源管理系统借阅者查询请求借阅者查询结果管理员维护请求管理员维护结果管理员借还处理请求管理员借还处理结果管理员催还请求管理员催还处理结果20/170案例分析——社区文化资源管理系统功能级数据流图处理借阅借阅请求4维护资源管理员资源维护结果2资源维护请求维护借阅者借阅者维护请求借阅者维护结果3管理员查询资源借阅者查询请求借阅者查询结果资源信息表1处理归还借阅者信息表借阅记录表归还请求管理员借阅处理结果5催还资源催还请求管理员催还处理结果归还处理结果621/170案例分析——社区文化资源管理系统加工处理4“处理借阅”的数据流图资源位置信息管理员资源拥有者联系方式待借资源信息借阅者ID管理员检查借阅资格借阅信息借阅者信息表借阅登记借阅记录表4.14.2资源拥有关系表资源拥有者ID资源ID获取资源拥有者资源信息表获取拥有者联系方式资源拥有者信息表4.34.422/170案例分析——社区文化资源管理系统实体-关系图n拥有借阅借阅日期1资源拥有者ID姓名联系电话家庭住址借阅者ID姓名联系电话可借册数身份证号n资源ID资源名作者译者类别出版社出版时间版本位置状态私藏关键词内容简介m管理员ID姓名账号联系电话密码23/170案例分析——社区文化资源管理系统“文化资源”的状态转换图分类编号新资源待入库资源入库在架借出借出
统计借出天数
发催还提醒遗失淘汰待上架归还上架24/170数据字典常用符号符号含义举例=被定义为
+与x=a+b[…,…]或
[…|…]或x=[a,b],x=[a|b]{…}或
m{…}n重复x={a},x=3{a}8(…)可选x=(a)“...”基本数据元素x=“a”..连接符x=1..925/170案例分析——社区文化资源管理系统“借阅处理”功能中“资源位置信息”加工处理“借阅登记”的定义数据存储名称:借阅记录流入数据流:借阅者ID、资源ID流出数据流:无组成:借阅记录={借阅者ID+资源ID+借阅时间+应还时间}组织方式:按借阅时间顺序排列
处理名:借阅登记
处理编号:4.2
输入数据流:待借资源
输出数据流:资源位置信息
访问的数据存储:借阅者信息表、资源信息表
处理逻辑:从借阅者信息表中获取借阅者ID,从资源信息表中获取资源ID,并将这些信息登记到借阅记录表中,填写借阅记录中的借阅日期为当前日期,根据借阅期限规定填写应还日期;修改资源信息表中的资源状态为“借出”,修改借阅者信息表中的借阅册数。获取资源信息表中的资源位置信息。26/170面向对象的需求分析分析模型功能模型用例+场景正常场景异常场景对象模型类图动态模型
状态图顺序图复杂交互的用例27/170案例分析——社区文化资源管理系统用例“处理借阅”的一个正常场景
一个异常场景1.借阅者张先生希望借阅一张音乐CD:2004年维也纳新年音乐会。2.管理员小王登录进系统。3.小王选择“借阅”功能。4.系统提示要检查借阅权限。5.小王询问张先生的身份证号,并输入系统。6.系统返回检查结果:该借阅者还可以借阅资源2件。7.小王询问张先生欲借阅的CD标题,并将“2004年维也纳新年音乐会”输入系统。8.系统显示该CD在文化站库房A架第4层第13号。9.小王去库房取出CD。10.小王在系统界面上点击“借出”。11.小王将CD交给张先生,并告诉张先生最长借期为一个月,如果到时候还想继续欣赏,可以来文化站办理续借手续。1.借阅者李先生希望借阅一本书:莫言的《红唇绿嘴》。2.管理员小王登录进系统。3.小王选择“借阅”功能。4.系统提示要检查借阅权限。5.小王询问李先生的身份证号,并输入系统。6.系统返回检查结果:该借阅者已借阅资源3件,均未归还,目前暂不能继续借阅资源。7.小王告诉李先生,他需要至少还1件资源才能继续借阅。28/170案例分析——社区文化资源管理系统类图借阅者-ID-姓名-身份证号-电话号码-可借册数
资源拥有者-ID-姓名-电话号码-家庭住址管理员-ID-姓名-用户名-密码-电话号码
借阅记录-资源ID-借阅者ID-接触日期-应还日期-续借状态
书籍-译者-版本
影碟-语言-国别
CD-风格
报纸-刊号-日期
杂志-刊号-期号
*1**资源-ID-资源名-作者-关键词-内容简介-状态-位置-类别-出版社-出版时间0..10..129/170案例分析——社区文化资源管理系统“处理借阅”的一个正常场景的顺序图借阅者ID、资源ID、借阅日期、应还日期资源信息表资源ID、位置信息请求资源位置信息、资源ID借阅记录表借阅界面借阅者信息表借阅者ID、借阅者ID、可借册数请求可借册数资源位置管理员借阅请求的相关信息资源借阅者借阅需求借阅管理借阅者身份、和资源信息资源位置信息30/170需求分析文档主要包括待开发软件介绍最终用户特点软件功能软件性能输入输出要求数据管理能力要求故障处理要求运行环境规定控制该软件运行的方法和控制信号31/170需求阶段的质量保证工作需求验证人工技术审查验证、仿真或性能模拟需求评审一致性:所有需求必须一致,不能前后矛盾或相互矛盾。完整性:需求规格说明书应包括用户需求的每一方面。现实性:所有需求在现有基础上是可实现的。有效性:必须证明需求有效,能解决用户提出的问题。测试准备制订测试计划设计测试用例32/170软件计划计划的过程成本估算确定目标范围界定任务分解顶层结构(方案)活动定义资源规划活动顺序活动时间进度安排成本预算管理计划风险管理33/170活动之间的关系(1)FS(完成-开始)关系:必须先完成活动1,然后活动2才能开始,如活动1“需求获取”,活动2“需求分析”,两者就是FS关系。(2)SS(开始-开始)关系:如果活动1没有开始,那么活动2也无法开始。例如,活动1“编码”,活动2“单元测试”,两者就是SS关系。(3)FF(完成-完成)关系:活动1的完成日期决定活动2的完成日期。例如,活动1“硬件部署”,活动2“检查硬件”,活动1没完成前,活动2不能完成。(4)SF(开始-完成)关系:活动1的开始日期决定活动2的完成日期。现实中发生频率较其它关系低。例如活动1“系统启动”,活动2“启动准备”。
AB完成-开始AB完成-完成AB开始-开始AB开始-完成34/170估算或评估软件项目的规模、工作量和成本国家标准《GB/T36964-2018软件工程软件开发成本度量规范》方程法估算软件规模估算工作量估算成本估算确定软件开发成本类比法估算类推法估算估算间接非人力成本估算直接人力成本估算间接人力成本估算直接非人力成本35/170规模估算技术技术原理公式适用场景代码行技术(LOC)专家估算子系统的代码行数L=(a+4m+b)/6有类似项目经验功能点技术(FP)基于信息域特性计算FP=UFP×TCF与语言无关,早期可用36/170代码行技术计算程序的最佳期望行数由专家或软件开发人员分别估计程序的最小(乐观)的行数(a)、最大(悲观)的行数(b)和最可能的行数(m)行数误差公式m为块数常用的单位代码行数(LOC)、千行代码数(KLOC,Kilo-DeliveredSourceInstruction)37/170案例分析——计算机辅助设计(CAD)应用系统规模估算软件成分最小值(a)最可能值(m)最大值(b)期望值(L)误差(Ld)用户接口控制1800240026502340140二维几何图形分析4100520074005380550三维几何图形分析4600690086006800670数据结构管理2950340036003350110计算机图形显示4050490062004950360外部设备控制200021002450214075设计分析6600850098008400540总
计26100334004070033360244538/170功能点技术用功能点作为软件规模的度量单位,依据对软件信息域特性和软件复杂性的评估结果估算软件规模软件信息域特性输入项数(Inp):用户向软件输入的项数,用于查询的输入单独计数。输出项数(Out):软件向用户输出的项数,报表内的数据项不单独计数。査询数(Inq):査询是一次联机输入,它使得软件以联机输出方式产生某种即时响应。主文件数(Maf):逻辑主文件的数目。逻辑主文件是数据的一个逻辑组合,表现为大型数据库的一部分或一个独立的文件。外部接口数(Inf):机器可读全部接口的数量,用这些接口可把信息传送给另一个系统。39/170案例:用FP估算规模案例——外卖平台通过分析得到了未调整功能点数为60014个技术特征在用户界面友好程度、在线更新方面要求比较高DI值取4分其它方面要求一般DI值取3分则TCF为1.09,那么最终的功能点FP为6541.数据通信2.分布式数据处理3.性能准则4.大量使用的硬件5.高事务处理率6.在线数据人口7.端用户效率8.在线更新9.复杂计算10.重用性11.易于安装12.易于操作13.可移植性14.可维护性技术复杂因子TCF=0.65+0.01
DIFP=UFP
TCF未调整功能点数(UFP)技术复杂度因子(TCF)0:不存在5:影响很大技术复杂因子40/170成本/工作量估算(COCOMO模型)COCOMO模型(
ConstructiveCostModel)
COCOMO将项目类型分为了三类开发方式特征工作量公式有机方式小型团队,熟悉领域MM=2.4×(KDSI)1.05半分离方式中等经验MM=3.0×(KDSI)1.12嵌入方式严格约束,复杂系统MM=3.6×(KDSI)1.2841/170成本/工作量估算(COCOMO模型)COCOMO模型(
ConstructiveCostModel)
COCOMO81包含了三个可用于不同阶段的模型基本的COCOMO81模型中等COCOMO81模型高级COCOMO模型制定计划的初期阶段——粗略快速估算软件开发成本,以便决策制定计划的中期阶段——需求明确后精确估算软件开发成本,需要更详细的项目信息(多维度参数)复杂项目/成熟流程中需要分阶段控制成本——非常精确地估算软件开发成本,需最详细的项目特性信息(大量历史数据)42/170软件开发工作量估算举例例如,为了开发一个规模估算约为3.2万行(32KDSI)的软件,需要工作量:生产率:工期:平均投入人数:采用功能点来估算软件的工作量假设某项目计算出总的FP估算值是310,已有的项目的平均FP生产率是5.5FP/PM,则项目的总工作量为
工作量=310/5.5=56PM(人月)43/170项目进度计划安排流程制订子任务关系时间表建立PERT图在PERT图中标出最早起止时间在PERT图中标出最迟起止时间找出PERT图中的关键路径利用PERT图优化开发活动安排用甘特图描述进度安排44/170PERT图项目评估与评审技术(ProjectEvaluationandReviewTechnique)把项目从开始到结束所应当完成的任务用图的形式表示出来,图中用节点表示子任务和完成该任务所需时间,用箭头表示各子任务在时间上的依赖关系起点A4B3C3D2G4E5F6H6终点45/170案例分析——项目进度安排某项目各子任务间的依赖关系和工作时间子任务前导任务所需时间/月子任务前导任务所需时间/月A一4EA、D5BA3FB6CB3GD4D—2HE、F、G646/170案例分析——项目进度安排某项目各子任务间的依赖关系和工作时间建立PERT图子任务前导任务所需时间/月子任务前导任务所需时间/月A一4EA、D5BA3FB6CB3GD4D—2HE、F、G6起点A4B3C3D2G4E5F6H6终点47/170案例分析——项目进度安排在PERT图中标出各子任务的最早起止时间在PERT图中标出各子任务的最早起止时间起点A4B3C3D2G4E5F6H6终点(0,0)(0,4)(4,7)(7,10)(0,2)(4,9)(7,13)(2,6)(13,19)(19,19)起点A4B3C3D2G4E5F6H6终点(0,0)(0,4)(4,7)(7,10)(0,0)(0,2)(4,9)(7,13)(2,6)(13,19)(19,19)(19,19)(13,19)(7,13)(16,19)(4,7)(0,4)(8,13)(6,8)(9,13)48/170案例分析——项目进度安排找出PERT图中的关键路径子任务A、B、F、H的最早起止时间和最晚起止时间是一样的,是关键路径利用PERT图优化开发活动安排将项目组优质技术人员安排到任务A、B、F、H中,以确保这些任务按时保质完成。研究任务A、B、F、H,寻找适当的方法尽可能地缩短这些任务所需要的开发时间。适当延迟任务D的开始时间,但保证
D
在
A启动后的第6个时间单位前开始。起点A4B3C3D2G4E5F6H6终点(0,0)(0,4)(4,7)(7,10)(0,0)(0,2)(4,9)(7,13)(2,6)(13,19)(19,19)(19,19)(13,19)(7,13)(16,19)(4,7)(0,4)(8,13)(6,8)(9,13)49/170进度计划展示甘特图线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间活动的计划安排情况和实际完成情况
50/170软件计划文档主要包括交付的产品(如程序、文档、服务、非移交产品、验收标准、交付期限)开发团队的组织方式所需工作概述项目估算项目组织资源实施详细软件开发活动的计划进度计划风险管理支持计划(如配置管理计划、测试计划、质量保障计划等专题计划)51/170软件设计设计阶段任务软件设计原理模块化:划分独立命名的模块抽象:抽出本质特性,忽略细节逐步求精:自顶向下,层层细化信息隐藏:模块内部信息对其他模块不可见模块独立:高内聚、低耦合阶段任务产出总体设计确定软件结构、模块划分、接口定义概要设计说明书详细设计设计模块内部算法、数据结构详细设计说明书52/170软件编码编码阶段语言选择:考虑应用领域、性能、人员知识编码风格:命名规范、注释、格式代码审查:确保与设计一致53/170代码规范团队共同遵守的代码规范如标识符命名规则、注释规范、程序格式规范、代码修改规范等代码规范是将个人编码习惯系统化为团队共同遵守的工程纪律(如命名、格式、结构约定)提升代码的可读性、可维护性和一致性,降低团队成员间的认知成本54/170模块序言性注释一般包括如下内容:/*************************************************//版权说明://文件名://文件编号://项目名称://对应设计文档://主要算法://接口://子程序://开发简历://设计者://设计日期://复审者://复审日期://修改记录:*修改人:〈修改人〉*修改时间:YYYY-MM-DD*跟踪单号:〈跟踪单号〉*修改单号:〈修改单号〉*修改内容:〈修改内容〉//摘要://版本://作者://更新日期:*************************************************/序言性注释模板可包含如下内容:/*************************************************//函数名://函数功能、性能等的描述://被本函数调用的函数://调用本函数的函数://被访问的表(此项仅对于牵扯到数据库操作的程序)://被修改的表(此项仅对于牵扯到数据库操作的程序)://输入参数说明,包括每个参数的作用、取值说明及参数间关系://输出参数的说明://函数返回值的说明://影响全局或局部的静态变量://测试建议://修改记录://其他说明:*************************************************/55/170软件测试测试策略单元测试集成测试系统测试Alpha测试Beta验收测试56/170测试过程测试过程分析测试需求编制《测试计划》和《测试准则》设计测试用例搭建测试环境实施测试分析测试结果编制测试报告覆盖率测试用例覆盖率=测试用例覆盖的测试需求数量/总的测试需求数量测试需求执行覆盖率=执行了的测试用例覆盖的测试需求数量/总的测试需求数量测试用例执行率=执行了的测试用例数量/测试用例的总数量不同级别的缺陷数量可能的结果通过未通过且无法变通未通过但存在变通57/170测试方法黑盒测试等价类划分边界值分析错误推测探索性测试白盒测试语句覆盖、判定覆盖、条件覆盖、条件组合覆盖独立路径覆盖循环测试58/170黑盒法测试用例设计划分等价类法边界值分析法错误推测法等效——不重复效率——易发现错误效率——易发现错误59/170划分等价类法第一步:划分等价类划分输入数据等价类(合理等价类和不合理等价类)划分输出数据等价类第二步:根据等价类设计测试方案1.为每个等价类规定一个惟一的编号。2.设计一新测试方案,尽可能多覆盖尚未被覆盖的有效等价类,重复,直至全部覆盖。
3.设计一新测试方案,覆盖且仅覆盖一个无效等价类,重复,直至全部覆盖。60/170划分等价类的启发式规则举例值的范围
值的个数
值约束
值的规则
等价类的细化
x∈[a,b]
x=a
x∈A={a1,a2,…,an}{x|P(x)}x∈Z Z+,0,Z-表格 空表、一行、多行x<a,x>bx<a,x>ax
A{x|┐P(x)}
61/170案例分析——黑盒测试用例设计某同学要编制一个用海伦公式计算三角形面积的程序。请测试其功能。测试需求:测试三角形面积计算程序的功能。划分等价类分析条件输入数据3个正数a、b、c,且任两个之和大于第三个输出数据正数,是三角形的面积62/170案例分析——黑盒测试用例设计某同学要编制一个用海伦公式计算三角形面积的程序。请测试其功能。测试需求:测试三角形面积计算程序的功能。划分等价类确定等价类——3个正数a、b、c,且任两个之和大于第三个有效等价类无效等价类63/170划分等价类测试点合理等价类不合理等价类个数3个没有、1个、4个正数正数有0、有负数两边之和大于第三边两边之和大于第三边两边之和等于第三边、两边之和小于第三边⑴⑵⑷⑸⑹⑺⑻⑼⑽⑶64/170设计测试用例编号覆盖的等价类输入数据预期结果测试记录问题分析1⑴⑸⑻3,4,5输出:面积=62⑵——提示:无输入3⑶3提示:数据不够4⑷3,4,5,6输出:面积=6。提示:数据太多5⑹3,0,5提示:输入不能为06⑺3,-4,5提示:输入不能有负数7⑼3,4,7提示:不满足“两边之和大于第三边”的条件8⑽3,3,7提示:不满足“两边之和大于第三边”的条件65/170边界值分析(BoundaryValueAnalysis,BVA)大量错误常常出现在输入域的边界位置选择边界值作testcases,暴露error的可能性大刚好等于等价类边界值
稍小于
稍大于66/170边界值分析的参考规则值的范围 x∈[a,b]
值的个数 a~b
输出等价类sinx 1
0
-1
有序集a-1,a,b,b+1a-1,a,b,b+1π/20-π/2[0,n-1]错位67/170案例分析——边界值分析测试点合理等价类不合理等价类个数3个没有、1个、4个正数正数有0、有负数两边之和大于第三边两边之和大于第三边两边之和等于第三边、两边之和小于第三边如果输入三个边界附近的正数是否不会出错?68/170错误推测法特殊的容易出错的情况→
testcases凭经验、直觉,根据程序的特点,所以没有步骤着重测试已发现了较多错误的程序段(错误的群集现象)测试数据的组合(等价划分&边界值分析:孤立测试数据)0,空数据结构负边界:栈上溢、下溢未赋初值的变量排序: 空一个元素 全等 已排序69/170白盒测试用例的设计逻辑覆盖(Logicalcoverage)语句覆盖判定覆盖条件覆盖判定—条件覆盖条件组合覆盖基本路径测试循环测试70/170案例分析——利用逻辑覆盖设计测试用例ABXA>1B=0A>1andB=0X/AA=2X>1A=2orX>1bdSacE
SabcE
SabcdE
SacdE
语句覆盖203TTT1.5TTT√√√判定/分支覆盖404TTT1FFF√√
213TFFTTT√√条件覆盖204TTT2TTT√√√111FFFFFF√条件覆盖201TTT0.5TFT√√√112FFFFTT√√条件组合覆盖204TTT2TTT√√√211TFFTFT√V102FTFFTT√√111FFFFFF√入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFSabcdE71/170路径分析(pathtesting)路径覆盖通过分析控制结构的环路复杂性,导出基本可执行路径集合覆盖程序基本路径集合中每条可能的执行路径保证程序的每一个可执行语句至少执行一次每个条件在执行时都将分别取真、假两种值程序控制流图72/170案例分析——路径分析程序流程图流图73/170案例分析——路径分析计算环路复杂度环路复杂度=区域数=4基本路径路径1:4-14路径2:4-6-7-13-4-14路径3:4-6-9-10-13-4-14路径4:4-6-9-12-13-4-14设计测试用例依据源程序具体信息使得程序分别按照路径1、2、3、4执行74/170循环测试测试思想关注循环体结构的正确性,对循环变量运用类似于边界值测试的方法以验证循环体结构的正确性。不同类型的循环结构简单循环嵌套循环连接循环非结构循环75/170测试简单循环如果n是循环次数,那么测试用例应包括直接跳过循环体只执行一遍循环体连续执行两遍循环体执行m(
m<n)遍循环体执行n-1遍循环体执行
n
遍循环体执行n+1
遍循环体76/170测试嵌套循环Beizer’s的方法从最内层测试开始,其它层的循环变量置为最小值按照简单循环的测试方法测试最内层的循环体,外层循环仍旧取最小值向外扩展循环体,测试下一个循环所有外层循环变量取最小值其余内层嵌套的循环体取典型值继续本步骤直到所有循环体均测试完毕77/170测试串接循环如果相连接的循环体互相独立,按照简单循环测试每一个循环体如果相连接的循环体1的循环变量的最终结果是循环体2循环变量的初始值,那么采用嵌套循环的方法来测试(靠前认为是内层循环)78/170测试非结构循环方法重新设计循环体结构结构化程序设计单入单出顺序、选择、循环尽可能少用GOTO语句79/170面向对象的软件测试测试的对象和内容不同面向对象的单元测试测试单元为封装的类和对象但不能孤立地测试单个操作,应把单个操作作为类的一部分来测试。面向对象的集成测试集成测试的策略有基于线程的测试和基于使用的测试面向对象的确认测试类似传统的确认测试和系统测试根据动态模型和描述系统行为的脚本来设计测试用例采用黑盒法80/170软件维护交付后维护软件交付使用后,对软件系统及其配套设施进行修改的过程目的提高性能优化软件性能,提升运行效率。增强功能增加新功能或改进现有功能,以满足用户需求。适应环境变化使软件适应新的硬件、操作系统或其他环境变化。81/170软件维护的形式软件维护活动通常分为四种类型纠正性维护完善性维护适应性维护预防性维护改造软件以适应新的环境和平台增加新的功能、修改已有的功能改造软件以提高可靠性和可维护性纠正软件中的缺陷和错误82/170软件维护过程将安排好的工作量列入计划将改正错误列入计划人员安排用户维护人员安排改正性维护确认维护类型实施维护评价优先级
分析问题复审评价错误严重程度
分析问题确定更改要求维护要求完善性适应性低高校正性严重不严重
人
员
安排交付使用的软件理解程序分析设计安排计划修改程序测试程序或或或或修改过的软件83/170软件再工程目的改善软件的静态质量,以提高软件的可维护性或帮助人们更好地理解软件说明软件再工程改变的是系统的实现机制(系统结构或数据结构),而不改变系统的功能六类活动并非总是以线性顺序发生循环模型中每个活动都可能被重复典型的软件再工程过程84/170软件开发过程软件过程用于构建、交付和维护软件所执行的一系列活动、方法、实践及转换的框架核心意义将原本不可见、难以管理的智力创造活动,转化为结构化、可重复、可度量的工程流程,从而保证项目能在预算内按时交付高质量的软件产品。85/170软件过程框架定义了软件开发中一组适合于项目特点的任务集合包括所要完成的任务任务的顺序标志任务完成的里程碑采取的管理措施应该交付的产品等过程框架
目标
活动任务任务交付物SQA点里程碑任务工件(交付物)质量保证点里程碑软件过程框架86/170瀑布模型(WaterfallModel)1970年,WinstonRoyce现在仍是应用最广泛的模型之一瀑布模型完全基于确定性假设即假定用户需求、软件运行环境等都是可以事先精确预知开发过程的一系列阶段顺序展开的项目开发进程从一阶段“流动”到下一阶段每个阶段都会产生循环反馈如果有信息未被覆盖或者发现了问题则“返回”上阶段并进行适当的修改87/170原型模型(PrototypeModel)针对开发早期用户、开发者对系统的认识模糊,很难完全准确表达系统的全面要求模拟某种产品的原始模型原型是一个可实际运行、能够反复修改、需要不断完善的系统原型反映了最终系统的重要特性运用原型的2种不同策略废弃策略追加策略88/170螺旋模型(SpiralModel)结合瀑布模型与原型模型,增加风险分析螺旋模型的原理沿着螺旋线旋转,4个象限分别表达4类活动制定计划风险分析实施开发客户评估89/170增量模型(IncrementalModel)综合瀑布模型和原型模型,软件产品可以分批次提交给用户把待开发的软件系统模块化将每个模块作为一个增量组件,分批次分析、设计、编码测试优点逐步交付,用户可逐步适应,降低一次性集成风险缺点架构设计要求高需要开放性架构各增量间接口需提前规划增量划分不合理可能导致架构频繁重构90/170统一过程模型(RUP,RationalUnifiedProcess)RUP是IBMRational公司的软件过程产品提供了在组织中分派任务和责任的严格方法RUP是一种重量级过程适用于大型软件团队开发大型项目RUP的三大特点软件开发是一个迭代过程软件开发是由UseCase驱动的软件开发是以架构设计为中心的核心过程工作流核心支撑工作流91/170XP(ExtremeProgramming,极限编程)项目开发过程XP强调若干实践原则现场客户项目计划系统隐喻简单设计代码集体所有结对编程测试驱动小型发布重构持续集成每周40小时工作制代码规范等92/170XP过程开发过程终端用户提供用户故事开发团队提出隐喻制订交付计划多个迭代过程项目通过验收测试交付使用注意新用户故事不在本迭代内解决,以保证本次迭代开发不受干扰。93/170常见过程模型模型特点适用场景瀑布模型顺序阶段,文档驱动需求稳定,低风险原型模型快速原型引导需求需求模糊螺旋模型风险驱动高风险复杂系统增量模型分部分交付客户需逐步适应RUP迭代+工作流中大规模XP过程轻载,快速响应变化小团队,需求多变94/170人员管理人员组织方式民主制程序员组小组成员完全平等,享有充分民主,通过协商做出技术决策小组成员之间的通信是平行的主程序员组用经验多、技术好、能力强的程序员作为主程序员利用人和计算机在事务性工作方面给主程序员提供充分支持所有通信都通过一两个人进行现代程序员组实际的“主程序员”应该由两个人共同担任:
一个技术负责人(开发负责人),负责小组的技术活动;一个行政负责人(测试负责人),负责所有非技术性事务(测试质量和计划)的管理决策。95/170人员管理民主制程序员组+主程序员组适合于大规模项目的团队合作96/170开源软件的软件开发实践开源软件(Open-SourceSoftware)是指其源代码向公众公开,并授予用户免费使用、修改、分发权利的软件,其核心理念强调协作、透明与共享。通常遵循经OSI(OpenSourceInitiative)认证的开源许可证(如MIT、GPL、Apache2.0)特点源码开放透明、社区驱动协作开发、快速迭代修复、高度可定制,以及“同行评审”带来的潜在高可靠性与安全性典型代表如Linux、Git、Kubernetes和VSCode,已深度融入现代软件基础设施,成为技术创新和产业生态的重要基石。97/170本节小结软件过程核心认知软件工程不是“写代码”,而是系统化的工程方法软件生命周期需求分析
、设计
、编码
、
测试
、
维护软件开发方法结构化vs面向对象vs敏捷开发软件过程模型瀑布、原型、螺旋、增量、RUP、XP软件项目管理规模估算、进度安排、人员组织、配置管理软件质量保证:测试、评审98/170测试题多选题软件工程方法学的三要素包括:A.方法B.工具C.过程D.文档E.人员99/170测试题单选题某项目需求非常明确且稳定,开发团队对应用领域非常熟悉,风险较低。最适合采用的过程模型是:A.螺旋模型B.瀑布模型C.原型模型D.XP模型100/17001物联网应用软件特点02架构设计基础03从视图到实现04模块划分应用软件设计模式101/170物联网应用软件特点通常是一个分布式软件应遵循分布式软件的设计规律和规则一般是大规模系统部分功能通常运行在嵌入式环境102/170架构设计基础软件架构的定义(IEEE)架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。主要内容是软件系统的组织;选择组成系统的结构元素和它们之间的接口,以及这些元素相互协作时体现的行为;如何组合这些元素使它们成为更大的子系统;用于指导这个系统组织的架构风格(元素及其接口、协作和组合方式);软件的使用、功能性、性能、弹性、重用、可理解性、经济与技术的限制与权衡、美学(艺术性)等103/170架构设计视图是对从某一视角看到的系统所作的简化描述涵盖了系统的某些特定方面忽略了与此方面无关的实体常用架构视图逻辑架构物理架构逻辑架构试图逻辑层/子系统/模块接口定义模块间关系物理架构试图物理节点(设备/服务器)进程/线程数据分布部署策略104/170逻辑架构规定软件系统由哪些逻辑元素组成以及这些元素之间的关系组成软件的逻辑元素逻辑层、功能子系统、模块设计逻辑架构的核心任务识别模块,规划接口,并基于此模块之间的调用关系和调用机制逻辑视图模块+接口逻辑架构试图逻辑层/子系统/模块接口定义模块间关系105/170物理架构规定组成软件系统的物理元素、物理元素之间的关系以及它们部署到硬件上的策略物理元素进程、线程,以及类的运行时实例对象进程调度、线程同步、进程或线程通信反映物理架构的动态行为反映出软件系统动态运行时的组织情况物理架构还需要说明数据是如何产生、存储、共享和复制的物理元素主要包括物理层:设备端层,Web层,业务层,企业信息层并发控制单元:进程,线程运行时实体:组件,对象(类的实例化),消息数据:临时数据,持久化数据,共享数据,以及数据的传送物理架构试图物理节点(设备/服务器)进程/线程数据分布部署策略106/170从视图到实现架构设计指导后续的详细设计和编程逻辑架构设计物理架构设计详细设计和编程软件在计算机/设备中运行期间的并发和交互层、子系统、模块的划分接口和交互机制107/170架构设计需求成果需求领域模型高层架构成果关键需求概念架构架构设计规格细化架构架构原型透彻了解系统需求正确建立概念架构全面设计架构要素108/170架构设计原则透彻了解系统需求把需求全面地罗列出来,还要找出需求之间的矛盾关系、关联关系正确建立概念架构全面设计架构要素设计架构的每一部分并验证应使用多视图设计方法,从多个方面进行架构设计针对性能、可用性方面的需求,应进行并行、分时、排队、缓存、批处理等方面的策略设计针对可扩充性、可重用性方面的需求,应进行代码文件组织、变化隔离、框架应用等方面的策略设计109/170架构设计的6个步骤需求需求概念架构概念架构
架构验证架构原型
领域建模领域原型确定关键需求概念架构设计细化架构设计需求分析110/170领域建模目的提炼领域概念,建立领域模型输入功能需求+可扩展性需求输出领域模型(概念类图)作用指导界面设计、持久化设计、可扩展性决策原则业务决定功能,功能决定模型111/170领域模型在软件开发中的作用需求定义领域模型界面领域知识要展现的内容设计类可扩展性决策持久数据模型实现类要持久化的内容可扩展性因素精化精化分析阶段开发测试阶段架构设计阶段112/170概念架构设计的任务选择架构风格;划分顶级子系统集成技术选型开发技术选型二次开发技术选型不支持集成支持集成不支持二次开发支持二次开发113/170细化架构设计的内容
逻辑架构职责划分逻辑层子系统、模块关键类职责间协作接口协作关系
运行结构控制流进程、线程事件处理程序控制流组织系统启动与停机控制流通信加锁与同步
数据架构持久数据单元文件常规数据库实时数据库数据存储格式文件格式数据视图
开发架构程序单元源文件、配置文件程序库、框架目标单元程序单元组织Project划分目录结构编译依赖关系
物理架构物理节点设备、PC、服务器单片机等软件安装部署系统软件选型物理节点拓扑连接方式、拓扑结构物理层冗余方案
114/170架构验证架构是否合理直接关系到最终的软件系统能否成功验证架构的方法原型法对所关心的问题和技术,进行有限度的试验通过试验,借以确定预计的风险是否存在,是否找到解决风险的办法框架法将架构设计方案用框架的形式加以实现,并在此基础上进行评估验证115/170验证架构的步骤合格实现测试评审运行期质量属性评价开发期质量属性评价决策重新设计不合格116/170模块划分——架构设计的细化功能模块划分将功能大类、功能组、功能项的关系以树的形式表示出来功能分层三层架构展现层:显示数据,接收用户输入,为用户提供交互式操作的界面业务层:或称业务逻辑层,处理各种功能请求,实现系统的业务功能数据层:或称数据访问层,与数据存储打交道,包括访问数据库等四层架构UI层(用户界面层):封装与用户的双向交互SI层(系统交互层):封装与硬件、外部系统的交互PD层(问题领域层):对问题领域或业务领域的抽象及领域功能的实现DM层(数据管理层):封装各种持久化数据的具体管理方式,包括数据库、数据文件等功能划分与层次划分的结合每个层次包含哪些功能模块117/170功能树的一种表示方式(呼叫中心系统为例)118/170功能树的常见表示方式119/170模块划分与层次划分功能模块(子系统)层
模块(细粒度)功能模块与细粒度模块层次、模块划分结果120/170本节小结软件架构设计的核心思想
"架构不是功能的堆砌,而是对质量属性的保障"设计过程
需求→领域模型→关键需求→概念架构→细化架构设计成果
功能树(模块划分)
分层架构图
五视图模型(逻辑/开发/运行/物理/数据)架构验证报告关键思维:架构设计是"权衡的艺术"性能vs可维护性
实时性vs能耗
安全性vs便利性121/170课堂讨论设计一个"智慧园区停车管理系统",包括地磁传感器检测车位占用、车牌识别摄像头、车位诱导屏、手机APP(查询空车位、预约车位、缴费)、后台管理系统请你:划分功能模块(画出功能树)设计分层架构(明确每层包含哪些模块)122/170测试题判断题物理架构主要描述软件模块之间的调用关系,而逻辑架构描述软件部署在哪些硬件节点上。123/170测试题单选题在架构设计过程中,领域建模的主要输入是:A.源代码B.功能需求和可扩展性需求C.测试用例D.用户手册124/17001
嵌入式软件开发特点02
开发工具与平台03
基于虚拟机的调试与测试嵌入式软件设计125/170嵌入式软件开发特点交叉开发开发平台≠运行平台资源受限CPU、内存、存储需要虚拟机调试126/170开发工具与平台类别工具适用场景集成开发环境ARMADSARM7/9/10、XScaleARMRVDSARM新一代开发工具AndroidStudio安卓嵌入式设备GNU工具链开源、跨平台操作系统选择Linux开源、可裁剪VxWorks强实时WinCEGUI丰富、占内存大鸿蒙跨平台、物联网终端安卓智能手机/物联网设备硬件调试工具JEENI仿真器以太网/串口连接,JTAG调试Multi-ICEARM官方JTAG仿真器127/170基于虚拟机的调试与测试交叉开发与调试流程在PC上编译生成目标设备(如ARM)可执行的代码PC开发机•编辑代码•交叉编译•链接虚拟机调试•仿真运行•早期调试
目标硬件•实际运行•最终调试
128/170本节小结嵌入式软件设计的核心挑战
资源受限
代码精简、内存优化能效敏感
休眠机制、低功耗算法交叉开发
虚拟机调试、JTAG仿真实时要求
操作系统选型、中断设计关键认知嵌入式设计是"在约束中创造"用有限资源实现必要功能用更低能耗满足更长时间用仿真工具弥补调试困难129/170测试题单选题嵌入式软件开发中,交叉编译是指:A.在目标设备上编译代码B.在开发平台上编译生成目标设备可执行的代码C.同时编译多个源文件D.编译时可以跨过语法错误130/170测试题判断题嵌入式系统资源有限,因此测试时不需要虚拟机,直接在实际硬件上测试更可靠。131/17001
分布式计算模型02
分布式程序架构03
分布式程序设计方法分布式信息处理与软件设计方法132/170分布式计算模型物联网系统及物联网软件的基本形态以Internet为基础的分布式系统计算模型C/S(客户机/服务器)和B/S(浏览器/服务器)模型ClientServerServer调用指令返回结果调用指令返回结果133/170分布式程序架构分布式程序的特点至少包括两个相对独立的、分别运行在不同的硬件设备上的程序无线传感器网络中的一个感知软件系统或应用系统运行在传感器节点上的感知程序运行在汇聚节点上的数据收集程序服务器上的数据存储与处理程序RFID应用系统运行在标签中的程序运行在读写器中的程序计算机上的数据存储与处理程序134/170分布式程序架构编写分布式程序分别编写每个程序,分别编译并部署到对应的硬件设备上分布式程序系统的角色充当服务器的设备程序应具有监听功能不间断地(或周期性地)监听来自客户机的请求,并作出响应,类似于事件响应程序通信功能典型的通信模型是send()与receive()原语,发送消息者,使用send()原语发送指令,对方使用receive()原语接收消息使用数据包传递来实现发送、接收功能135/170物联网主流协议协议特点适用场景CoAP基于UDP,最小4字节,C/S架构资源受限设备MQTT基于TCP,订阅/发布模式,3种QoS物联网最广泛MQTT-SNMQTT的传感器版本,基于UDP传感器网络136/170CoAP(ConstrainedApplicationProtocol)协议一种运行在资源受限设备上的协议,通常基于UDP实现CoAP协议的一种模型传输协议网络协议链路协议物理协议CoAP应用协议Request/ResponseMessageUDPIPv66LowPAN802.15.4MAC802.15.4PHY137/170CoAP的应用程序通信方式CoAP服务器传感器传感器CoAPGETCoAPPUTCoAPOBSERVE138/170MQTT(MessageQueueTelemetryTransport)协议能较好满足低耗能和低网络带宽的需求特点实现简单提供数据传输的QoS轻量、占用带宽小可传输任意类型的数据基于TCP协议采用C/S架构使用订阅/发布模式收发消息是异步的提供3种消息QoS:只有1次,最多一次,最少一次139/170MQTT通信模式MQTT由代理(Broker)和多个Client组成MQTT是目前物联网中运用最广的协议MQTTBrokerClientClientClient发布发布订阅订阅140/170MQTT-SN(MQTTforSensorNetwork)是MQTT的传感器版本,运行于UDP之上通信模式MQTTBroker传感器传感器传感器MQTT-SN协议MQTT-SN网关MQTT协议MQTT-SN协议MQTT-SN协议141/170分布式程序设计方法B/S程序设计服务器端:处理业务逻辑、数据存储客户端:网页程序(HTML/CSS/JavaScript)开发平台:.NET、J2EEMPI(消息传递接口)定义:可在C/C++中调用的函数库用途:实现分布式节点间的消息传递原语:send()、receive()142/170课堂讨论问题背景设计一个"智能楼宇能耗监测系统",需要在每层楼部署多个传感器节点(采集电表、水表数据),通过网关汇聚到中心服务器,管理人员可通过Web查看实时数据和分析报表。请问:选择哪种通信协议(CoAP/MQTT/自定义)?为什么?143/170本节小结分布式软件设计的核心要素计算模型:C/S、B/S、订阅/发布通信协议:CoAP、MQTT、MQTT-SN程序设计:多节点协同、消息传递质量属性:可靠性、可扩展性、实时性关键认知分布式系统是“通过网络协同的多个程序”,没有程序是孤岛通信是核心复杂度协议选择影响全局性能144/170测试题单选题以下哪种协议采用订阅/发布模式,是当前物联网应用最广泛的协议?A.CoAPB.MQTTC.HTTPD.TCP145/170测试题判断题在C/S模型中,客户机和服务器是绝对的概念,一台设备一旦被定义为服务器,就不能再充当客户机。146/17001
主流移动开发平台02
物联网中APP的角色移动终端APP设计147/170移动终端APP设计大量的物联网应用都需要设计基于智能手机的APP智能移动终端如智能手机已成为物联网中信息收集、信息交互、信息处理、系统应用的重要载体基于智能手机APP的开发工具基于Android的AndroidStudio基于iOS的XCODE基于鸿蒙的DevEcoStudio148/170主流移动开发平台平台开发工具语言适用设备AndroidAndroidStudioJava/Kotlin
安卓手机/平板/物联网设备iOSXcodeSwift/Objective-CiPhone/iPad鸿蒙DevEcoStudioJava/JS/eTS
华为鸿蒙设备149/170物联网中APP的角色用户交互界面数据可视化远程控制本地处理与缓存与云端/设备通信150/170本节小结移动终端APP设计要点开发工具选择Android:AndroidStudioiOS:Xcode鸿蒙:DevEcoStudio跨平台:Flutter、ReactNativeAPP在物联网中的角色移动的交互界面数据可视化与告警本地缓存与计算与云和设备的桥梁151/170测试题多选题以下哪些是开发安卓APP可能使用的语言?A.JavaB.KotlinC.SwiftD.JavaScript(配合跨平台框架)152/17001
应用在末梢终端上的部署02
应用在服务器上的部署03
基于云计算的应用部署物联网应用部署153/170应用在末梢终端上的部署特点C/C++编写,少量汇编语言绿色程序(无需安装)运行时一般直接执行相应的程序,基本上没有特殊的关联环境要求升级方式内置升级模块154/170终端升级的一般流程检查新版本有新版本?下载并替换功能程序启动功能程序需检查升级?YNYN155/170应用在服务器上的部署特点非绿色程序,需安装程序安装程序功能复制功能程序、运行时函数库设置运行环境生成配置参数趋势Web化部署——客户机无需升级,只需升级浏览器156/170基于云计算的应用部署云服务三层模型物联网常用:PaaS(部署应用)、IaaS(部署虚拟机)虚拟化技术:Docker(容器)PC开发机SaaS(软件即服务)用户直接使用应用PaaS(平台即服务)用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南经贸外事职业学院《生物试验设计与统计分析》2024-2025学年第二学期期末试卷
- 驻马店幼儿师范高等专科学校《数控技术》2024-2025学年第二学期期末试卷
- 重庆对外经贸学院《人力资源管理英》2024-2025学年第二学期期末试卷
- 新疆职业大学《风景园林建筑设计》2024-2025学年第二学期期末试卷
- 上海东海职业技术学院《遥感概论》2024-2025学年第二学期期末试卷
- 企业成本预算测算管理制度
- 湖南涉外经济学院《材料分析与测试技术实验》2024-2025学年第二学期期末试卷
- 中国石油大学(北京)《教师教育技术》2024-2025学年第二学期期末试卷
- 石家庄理工职业学院《农业设施基础》2024-2025学年第二学期期末试卷
- 2026湖北宜昌西陵城市发展集团有限公司招聘工作人员5人考试备考题库及答案解析
- 急诊患者人文关怀
- 进厂打工的测试题及答案
- DB31/T 398-2015建筑垃圾车技术及运输管理要求
- 地基房屋共有协议书
- 《现代视觉设计基础》课件
- 跟单员工作流程图
- 装修项目班组管理制度
- 施工单位商务经理培训
- 温通刮痧技术操作流程图及考核标准
- 停车设备安装改造维修质量手册+程序文件+安装作业指导书
- 2025年度光伏电站运维服务合同范本
评论
0/150
提交评论