版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1软件设计2软件设计概述软件设计分为两个阶段概要设计(又称总体设计):确定软件系统的总体结构详细设计(又称过程设计):详细设计则是对概要设计结果进一步细化,给出目标系统的精确描述。软件设计的目标软件需求:解决“做什么”软件设计:解决“怎么做”3软件设计的任务问题结构(软件需求)软件结构从软件需求规格说明书出发,形成软的具体设计方案。映射4软件设计的任务数据流图数据字典加工策略数据设计体系结构设计接口设计过程设计5软件设计的任务分析模型设计模型目标系统逻辑模型目标系统物理模型6系统概要设计7概要设计概要设计的过程需求文档概要设计文档设计软件结构设计系统构架设计数据结构需求框架系统构架数据环境子系统功能需求数据需求软件结构数据结构图14.1概要设计过程8概要设计概要设计的内容制订规范系统构架设计软件结构设计公共数据结构设计安全性设计故障处理设计可维护性设计编写文档概要设计评审9概要设计软件的构架设计概要设计通过需求框架来映射系统构架。例如:利用需求分析中的高层数据流程图对系统基本工作流程的描述来映射系统的基本结构,使得需求分析中对系统的逻辑描述转换为概要设计中对系统的物理描述。系统构架设计的步骤定义子系统。定义子系统外部接口。定义系统物理构架。10软件设计概念与原则11主要内容模块与模块化抽象与逐步求精信息隐蔽与局部化模块独立性软件结构的设计原则12模块化(Modularity)模块:独立命名和独立编址调用的一组程序语句,即数据说明、可执行语句等程序对象的集合。模块化:把软件系统划分为若干个模块,每一个模块完成一个相对独立的子功能,把这些模块组合起来,满足问题的求解需求。把问题/子问题的分解与软件开发中的系统/子系统或系统/模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。13模块化模块化是好的软件设计的一个基本准则复杂问题较小问题
分解可减小解题所需的总的工作14为什么要模块化设函数C(x)定义问题x的复杂程度函数E(x)确定解决问题x需要的工作量1.一个问题越复杂,解决它所需要的工作量就越大。
即:C(P1)>C(P2),则E(P1)>E(P2)
15为什么要模块化2.如果把一个大而复杂的问题分解成一些容易处理的小问题后,所需工作量会减少。即:C(P1+P2)>C(P1)+C(P2),且E(P1+P2)>E(P1)+E(P2)。3.影响软件的总的工作量的因素有两个:模块复杂性成本,模块接口成本。16为什么要模块化模块化和软件成本成本或工作量模块数量软件总成本集成成本成本/模块M最小成本区域17抽象化软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。因此,描述问题时,可以使用面向问题的术语。在较低的抽象层次上,则采用过程化的方法。实现时,采用能够直接实现的方式描述。18过程的抽象在软件计划阶段,将软件当作整个计算机系统中的一个元素来看待。在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。
在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。19信息隐蔽每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。20信息局部化把关系密切的软件元素物理地放得彼此靠近。优点:可维护性好可靠性好可理解性好21模块独立性模块独立性:软件系统中每个模块只涉及软件要求的具体的子功能(功能是单一的),而和软件系统中其它的模块的接口是简单的。模块完成独立的功能符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小衡量模块独立性的准则耦合性:模块之间的互相联系的紧密程度的度量。内聚性:是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。模块独立性比较强的模块应是高内聚低耦合的模块。22模块间的耦合低低耦合无直接耦合强耦合性数据耦合模块独立性标记耦合中等程度耦合控制耦合较强耦合外部耦合公共耦合高强耦合内容耦合弱23非直接耦合(NondirectCoupling)如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。24数据耦合(DataCoupling)如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。数据耦合属松散耦合。开发票计算水费单价数量金额25标记耦合(StampCoupling)如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。计算水电费计算水费计算电费住户情况水费电费住户情况26将标记耦合修改为数据耦合举例计算水电费计算水费计算电费本月用水量本月用电量水费电费27控制耦合(ControlCoupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。28控制耦合举例A计算平均分或最高分B平均/最高(控制信号)成绩读入分数输出结果计算平均分计算最高分平均/最高?B29控制耦合控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块30改控制耦合为数据耦合举例A计算平均分B1平均成绩最高成绩计算最高分B231外部耦合(ExternalCoupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。32公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共数据区指:全局数据结构共享通讯区内存公共覆盖区等33公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。公共耦合(CommonCoupling)34公共耦合存在的问题软件可理解性降低诊断错误困难软件可维护性差软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!!!35内容耦合(ContentCoupling)如果发生下列情形,两个模块之间就发生了内容耦合一个模块直接访问另一个模块的内部数据一个模块不通过正常入口转到另一模块内部两个模块有一部分程序代码重迭(只可能出现在汇编语言中)一个模块有多个入口36B内容耦合(ContentCoupling)一模块直接访问另一模块的内部信息(程序代码或数据)ABA模块代码重叠Entry1……Entry1……多入口模块最不好的耦合形式!!!37降低模块间耦合度使用程度低的耦合尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合降低接口的复杂性38模块内聚低偶然内聚弱内聚性逻辑内聚模块独立性时间内聚过程内聚通信内聚顺序内聚高功能内聚强39偶然内聚(巧合内聚)模块内各部分间无联系ABCMMOVEOTORREADFILEFMOVESTOT模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差例:40逻辑内聚模块ABCEFGABCEFGA1B1C1EFG模块内部逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:增强了耦合程度(控制耦合)不易修改,效率低公用代码段公用代码段41逻辑内聚(LogicalCohesion)
这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。42时间内聚(ClassicalCohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。43过程内聚(ProceduralCohesion)模块内各处理成分相关,且必须以特定次序执行读入成绩单审查成绩单统计成绩打印成绩读入并审查成绩单统计并打印成绩单44通信内聚(CommunicationCohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。45通信内聚模块例产生工资报表计算平均工资职工工资记录职工工资报表平均工资产生职工工资报表并计算平均工资模块46通信内聚(CommunicationCohesion)47顺序内聚顺序内聚:如果一个模块各成分都与同一个功能密切相关,一个成分的输出作为另一个成分的输入,各成分必须按顺序执行,则称为顺序内聚建立方程组系数矩阵高斯消去法回代48功能内聚(FunctionalCohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。49
内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合。设计目标:
高内聚、低耦合50耦合、内聚与模块独立性关系
耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。51软件结构的设计准则改进软件结构提高模块独立性(低耦合高内聚)提高模块独立性的方法——分解与合并ABABC1C1C2CCC2C分解AC1BC2C
合并52软件结构的设计准则模块规模要适中深度、宽度、扇入及扇出要适当深度宽度(同一层最大模块数)扇出(一个模块直接调用的模块数)扇入(调用一个给定模块的模块个数)53软件结构的设计准则54软件结构的设计准则模块的作用域应该在控制域之内作用域---该模块内一个判断影响的模块的集合。控制域---该模块本身以及所有直接或间接从属于它的模块的集合。改进软件结构以符合作用域是控制域子集的方法将包含判定的模块合并到它的调用模块中将受判定影响的模块下移到控制范围之内将判定上移到足够高的位置模块A的控制域:{A、B、C、D}模块A的作用域:{A、C、D}ABCD55软件结构的设计准则将包含判定的模块合并到它的调用模块中,从而使判定处于足够高的位置。56软件结构的设计准则
将受判定影响的模块下移到控制范围内。把判定上移到足够高的位置。57软件结构的设计准则力争降低模块接口的复杂程度模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。设计单入口单出口的模块模块间不要出击内容耦合。模块功能应该可以预测只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。带有内部“存储器”的模块的功能可能是不可预测的,因为它的输出可能取决于内部存储器(例如某个标记)的状态。58结构化设计方法
(StructureDesign,SD)
59软件结构图(SCStructureChart)SD方法在概要设计中的主要表达工具用来描述软件的模块组成及其调用关系描绘软件结构的图形工具60软件结构图的组成方框表示模块,反映模块功能方框之间的箭头表示模块之间的调用关系调用线旁的注释箭头表示调用中来回传递的数据流辅助符号弧型符号表示循环调用菱形表示条件调用61EFFE在系统结构图中的模块传入模块(a)(b)AA传出模块BB变换模块(c)CD控制模块(d)(e)源XX(f)漏62在系统结构图中的模块传入模块─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模块─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。控制模块─对所有下属模块进行协调和管理的模块。63在系统结构图中的模块源模块——不调用其他模块的传入模块,只使用于传入部分的始端。漏模块——不调用其他模块的传出模块,仅用于传出部分的末端。64SC中的模块调用无条件调用(简单调用)ABCX,YZZ65选择调用ACBDA根据内部判断决定是否调用BA按另一判定结果选择调用C或D66循环调用ABCA根据内在的循环重复调用B、C等模块67挂号单结构图(SC)举例医院管理系统门诊管理药房管理药库管理病房管理处方挂号处理挂号费总计挂号费总计出库处理进药管理病历管理处方管理常规处理68结构化设计方法结构化的设计方法(SD方法)是面向数据流的设计方法。它以描述系统逻辑模型的数据流图和数据字典为基础,讨论怎样得到软件系统的模块结构。具体地将,将DFD转换成软件结构图,将数据字典映射成软件过程和数据结构。SD方法是基于模块化、自顶向下逐层细化、结构化程序设计等基础。69SD方法SD方法以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法映射DFD(问题结构)(软件需求)软件系统的结构70系统描述的类型系统结构特征可归纳为两种典型形式:变换型结构事务型结构数据流图可分为两种类型:变换型数据流事务型数据流71数据流图的类型变换中心输入输出变换型结构事务中心接受路径动作路径基本模型特征事务型结构由输入、变换中心和输出三部分组成。基本上呈线性形状的结构。具有在多种事务中选择执行某类事物的能力。呈辐射状。72变换型数据流结构事务型数据流结构传入变换传出变换中心传入部分传出部分事务分析事务中心动作1动作2动作3接受接受部分73变换型数据流举例输入信息格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)
和传出界面的DFD74变换型数据流举例例:75变换流示意图信息时间信息流输入流输出流变换流外部表示内部表示76事务型数据流图举例IMLNOABCDFEGH77复杂系统的类型大型系统DFD中,变换型和事务型结构往往共存T传入变换传出事务中心78结构化设计方法的步骤首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。79由数据流图推导出系统的初始结构图。利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。修改和补充数据词典。制定测试计划。结构化设计方法的步骤80SD的总体过程“变换”“事务”精化数据流图流类型区分事务中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析81SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析82初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生83变换型系统结构图变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。84变换型系统结构图85事务型系统结构图它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。8687事务分析例:
88变换分析变换分析方法由以下四步组成:重画数据流图;区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;进行一级分解,设计上层模块;进行二级分解,设计输入、输出和中心变换部分的中、下层模块。89区分传入、变换中心、传出部分,在DFD上标明分界线BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分例90第一级分解的方法MCMTMAME91第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块92第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块MACBAbacEDdec,e93传入分支的分解
MAGetCbacReadDdeBtoCbcdeabGetEGetBDtoEAtoBReadAc,e94传出分支的分解MEWWriteVuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2)95中心加工分支的分解MTPQRec,pru,wpr96变换分析97变换分析98事务分析在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。99事务分析过程①
识别事务源
利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。100事务分析过程②
规定适当的事务型结构
在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。③识别各种事务和它们定义的操作
从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。101事务分析过程④注意利用公用模块
在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。⑤对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。102事务分析过程⑥
对事务处理模块规定它们全部的下层操作模块⑦对操作模块规定它们的全部细节模块103事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径104用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据激活/非活动系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据105用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器106用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器读系统数据建立配置文件显示信息与状态107用户命令交互子系统的SC用户执行模块读用户命令命令处理密码处理控制器现用/非现用系统系统设置控制器建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器产生无效信息读系统数据108综合设计(1)从总体上确定数据流图的类型(2)根据总体类型,设计出上层模块结构(3)根据局部数据流图的类型,进行从属模块的设计109例子110111设计优化
通过转换分析和事务分析,得到初始的标准结构图,如果初始结构图不符合设计准则,则要对初始结构图进行修改和完善,以得到满意的最终结构图。112详细设计113概述详细设计是编码的先导。从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。这就是过程设计的任务。在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具。详细设计的结果最终决定编码阶段程序的质量。(逻辑正确、性能满足要求、便于阅读和理解)114主要任务确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。确定每一模块的数据结构。确定模块接口细节。为每一个模块设计一组测试用例。编写详细设计说明书。115结构化程序(SP)设计GOTO语句的争论赞成取消goto:造成程序混乱,难以理解和维护赞成保留goto:概念简单,使用方便争论的实质1)程序设计首先讲究结构,还是讲究效率(新的程序设计思想)2)方法和风格,提高软件生产率,软件质量,降低维护成本结论1)避免使用goto表达正常的循环或条件语句2)当出现算法的自然结构被破坏的异常情况时,保留goto116结构化程序(SP)设计最早由E.W.Dijkstra在60年代中期提出的。详细设计并不是具体地编程序,而是已经细化成很容易地从中产生程序的图纸。因此详细设计的结果基本决定了最终程序的质量。定义:是一种设计程序的技术采用自顶向下逐步求精的设计方法采用标准的控制结构采用单入口单出口的控制结构117结构化程序(SP)设计的原则(1)模块的逻辑描述要正确可靠、清晰易读。(2)采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性。(3)选择恰当描述工具来描述各模块算法。说明:(1)在许多情况下,当程序执行到满足某种条件时,可以提前退出循环。(2)
GOTO语句不应滥用,但也不必完全禁止。一般地说,把GOTO语句的转移范围限制在同一控制结构的内部。118详细设计的工具详细描述处理过程常用三种工具:图形、表格和语言。程序流程图盒图(N-S图)问题分析图PAD图判定表判定树过程设计语言(PDL)119程序流程图120程序流程图又称为程序框图,是历史最悠久使用最广泛的描述软件设计的方法。优点:直观清晰、易于使用,是开发者普遍采用的工具。缺点:可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。编码时势必不加限制地使用GOTO语句,导致基本控制块多入口多出口,这样会使软件质量受到影响,与软件设计的原则相违背。流程图不易反映逐步求精的过程,往往反映的是最后的结果。不易表示数据结构。121程序流程图的标准符号122程序流程图的控制结构123多出口判断程序流程图的控制结构124示例MAX=A(1)I=2MAX<A(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧灯杆智能共享会议室施工方案及技术措施
- 2025年上海市成人高考专升本《教育理论》真题汇编(含答案)
- 1.3 土地改革 教学设计 统编版八年级历史下册
- 基础设施工程雨季施工手册
- 风力发电场并网调度操作规范手册
- 2025-2026学年教学活动设计评价量表
- 2023八年级数学下册 第17章 函数及其图象17.3一次函数4求一次函数的表达式教学设计 (新版)华东师大版
- 2.2.1动物细胞培养(教学设计)-2025-2026学年高二下学期生物人教版(2019)选择性必修3
- 2025-2026学年大单元教学课题设计
- 2026年曲靖市麒麟区社区工作者招聘考试备考试题及答案详解
- 2026年齐齐哈尔市总工会工会社会工作者招聘备考题库含答案详解
- (2025年)广西玉林职业技术学院使用教职人员招聘笔试真题带答案详解
- 车辆爆胎安全教育
- 医疗影像科服务礼仪与沟通技巧
- 行走的思政课课题申报书
- 2025版 全套200MW800MWh独立储能项目EPC工程概算表
- 2025老年人能力评估师题库及答案
- 医院安全生产考核细则
- 中国软件行业协会:2025中国软件行业基准数据报告 SSM-BK-202509
- 医院招聘检验试题及答案
- 企业资料档案管理制度化模板
评论
0/150
提交评论