版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档供参考,可复制、编制,期待您的好评与关注!软件工程复习第一章一、什么是软件?软件(Software )是计算机系统中与硬件相互依存的另一部分, 它是包括程序(Program ),数据(Data )及其相关文档(Document ) 的完整集合。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料二、软件危机原因:与软件本身的特点有关(难于维护,逻辑复杂)与软件开发与维护的方法不正确有关:软件?程序急于求成=拔苗助长各自为阵无方法/学现象:1.成本高.计算机软件和硬件费用比.软件质量得不到保证.由于软件质量问题导致失败的
2、软件项目非常多.进度难以控制.维护非常困难1 / 28文档供参考,可复制、编制,期待您的好评与关注!办法:软件工程(学)三、软件工程软件工程是应用计算机科学、数学及管理科学等原理开发软件的 工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。 开发、运行和维护软件的系统方法四、软件工程三要素软件工程方法学包含3个要素:方法、工具和过程。五、软件生命周期六、软件过程模型瀑布模型瀑布模型适合于用户需求明确、 完整、无重大变化的软件项 目开发。瀑布模型的成功在很大程度上是由于它基本上是一种 文档驱动的模型。“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。在项目开始的时候,用户常常难
3、以清楚地给出所有需求; 用户与开发人员对需求理解存在差异。实际的项目很少按照顺序模型进行。用户必须有耐心,等到系统开发完成。缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要2 / 28文档供参考,可复制、编制,期待您的好评与关注!性,但是在实践中要想获得完善的需求说明是非常困难的, 导致“阻塞状态”。反馈信息慢,开发周期长。虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的” 但是在需求被很好地理解的情况下,仍然是一种合理的方法。 快速原型模型增量模型增量模型是迭代和演进的过程。增量模型把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入。每个构件由多个相互作用的模块构成,并且能够完成特定
4、的功能。早先完成的增量可以为后期的增量提供服务。增量开发方法的新演进版本叫做“极限程序设计 (eXtreme Programming )”。3 / 28文档供参考,可复制、编制,期待您的好评与关注!针对每个埼门完成*详细及计、编码和 集成,经测试后交. 付给用户.维护螺旋模型喷泉模型各个开发步骤多次反复迭代,达到认识的逐步深化特点:主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征Rational统一过程 极限编程 微软过程4 / 28文档供参考,可复制、编制,期待您的好评与关注!第二章可行性研究一、可行性研究的任务:技术,经济,操作,社会,抉择(1)技术可行性度量一个特定技
5、术信息系统解决方案的实用性及技术资源的可用性。考虑的问题(1)开发风险分析(2)资源分析(3)相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)(2)经济可行性度量系统解决方案的性能价格比考虑的问题成本/效益分析(开发、运行的成本/效益)有形成本、效益无形成本、效益价值和成本的关系质量与价值、成本的关系价值/成本的均衡(3)操作可行性用户使用可能性时间进度可行性5 / 28文档供参考,可复制、编制,期待您的好评与关注!组织和文化上的可行性(4)社会可行性(法律可行性)开发项目是否会在社会上或政治上引起侵权、 破 坏或其它责任问题二、可行性研究过程:8步骤.复查系统规模和目
6、标.研究目前正在使用的系统.导出新系统的高层逻辑模型.进一步定义问题.导出和评价供选择的解法.推荐行动方针.草拟开发计划.书写文档提交审查三、系统流程图:数据在系统(人,软,硬)各部件之间流动 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系 统的每个部件(程序,文档,数据库,人工过程等)。四、数据流图:源点或终点,处理,数据存储和数据流.在数据流图中没有任何具体的物理部件,它只是描绘数 据在软件中流动和被处理的逻辑过程, 是系统逻辑功能的图 形表示。6 / 28文档供参考,可复制、编制,期待您的好评与关注!.例题1经调查,该储蓄所处理系统能完成储户的存
7、 /取款要 求处理。如果是新储户,则将该储户数据记入存款账文件。 如果是老储户存款,按储户编号在存款账中查找该储户的 记录,填写存款额并修改余额;如果是取款,就检查是否 超支。存/取款后应修改存款帐和储户的存折,并将存折 交还储户。第1层五、数据字典:流,元素,存储,处理.数据字典的任务是:对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义, 使得每一个图7 / 28文档供参考,可复制、编制,期待您的好评与关注!形元素的名字都有一个确切的解释.数据结构的描述出举例=被定义为+ 与 x = a + b.,. 或|或 x = a , b , x = a | b或 m.n 重复 x
8、 = a , x = 3a8(.)可选x =“”基本数据元素x =“a”. 连结符x = 1.9.例题北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨 0,若是本市电话则 再接着拨8位数字(第1位不是0),若是外地电话则拨3位 区码再拨8位电话号码(第1位不是0)。请用定义数据字典的方法,定义上述的电话号码。电话号码=校内电话号码|校外电话号码校内电话号码=非零数字+ 3位数字 后面继续定义校外电话号码=本市号码|外地号码本市号码=数字零+8位数字8 / 28文档供参考,可复制、编制,期待您的好评与关注!外
9、地号码=数字零+3位数字+8位数字非零数字=1|2|3|4|5|6|7|8|9数字零=03位数字=3数字3/3 至3个数字8位数字=非零数字+7位数字7位数字=7数字7数字=0|1|2|3|4|5|6|7|8|9六、成本/效益分析:估计,ROI,货币的时间价值第3章需求分析就是研究一种无二义性的表达工具,它能为用户和软件人员双方都接受并能够把“需求”严格地、形式地表达出来。准确地回答“系统必须做什么?”一、需求分析的任务:综合要求+数据要求+逻辑模型+修正计划1确定对系统的综合要求功能需求性能需求可靠性和可用性需求出错处理需求接口需求约束逆向需求、将来可能提出的要求。2分析系统的数据要求9 /
10、 28文档供参考,可复制、编制,期待您的好评与关注!软件需求分析的重要任务分析系统的数据要求通常采用建立数据模型的方法3导出系统的逻辑模型用数据流图、实体-关系图(ER图)、状态转换图、数据字典、主要的处理算法描述逻辑模型4修正系统开发计划准确地估计系统的成本及进度修正以前我们所制定的开发计划二、获取需求的方法:访谈、自顶向下、规格说明、软件原型。 访谈访谈两种基本形式:正式和非正式当需要调查大量人员的意见时,请被调查人填写调查表是有效方法.面向数据流自顶向下求精可行性研究-目标系统的高层数据流图把数据流和数据存储定义到元素级.简易的应用规格说明技术提倡用户与开发者密切合作,共同标识问题,提出
11、解决方案要素,商讨不同方案并指定基本需求.快速建立软件原型最准确、最有效、最强大的需求分析技术软件原型:快速建立起来的旨在演示目标系统主要功能的可运10 / 28文档供参考,可复制、编制,期待您的好评与关注!行的程序构建软件原型的要点:实现用户看得见的功能,省略目标系统 的“隐含”功能软件原型应具有的特性第一特性:快速第二特性:容易修改三、分析建模与规格说明:数据模型、功能模型和行为模型建立数据模型:实体-了解图建立功能模型:数据流图建立行为模型:状态转换图四、实体-了解图(ER图)五、数据规范化:第一、二、三范式(1 )第一范式每个属性值都必须是原子值,即仅仅是一个简单值而不含内部 结构。(
12、2)第二范式满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)(3)第三范式符合第二范式的条件。满足第三范式(3NF)必须先满足第二 范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中 不包含已在其它表中已包含的非主关键字信息11 / 28文档供参考,可复制、编制,期待您的好评与关注!六、状态转换图:状态、事件、符号通过描绘系统的状态及引起系统状态转换的事件,来表示系统的 行为状态是任何可以被观察到的系统行为模式,一个状态代表系统的 一种行为模式。状态规定了系统对事件的响应方式。事件就是引起系统做动作或(和)转换状态的控制信息。七、其他图形工具
13、:层次方框图、 Warnier图、IPO图层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次 结构。Warnier图也用树形结构描绘信息,但是这种图形工具比层次方 框图提供了更丰富的描绘手段。用 Warnier图可以表明信息的逻辑 组织。在需求分析阶段可以使用IPO表简略地描述系统的主要算法(即 数据流图中各个处理的基本算法)。八、验证软件需求:一致性、完整性、现实性和有效性(1) 一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2)完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现
14、的。(4)有效性必须证明需求是正确有效的,确实能解决用户面对的 问题。12 / 28文档供参考,可复制、编制,期待您的好评与关注!九、例题:状态转化图复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后 又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没 纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态, 准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发 出警告等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。第四章一、形式化说明的优点形式化的规格说明可以用数学方法研
15、究、验证形式化的规格说明消除了二义性鼓励软件开发者在软件工程过程的早期阶段使用更严格的方法,13 / 28文档供参考,可复制、编制,期待您的好评与关注!从而可以减少差错 二、形式化方法的缺点大多数形式化的规格说明主要关注于系统的功能和数据,而问题的时序、控制和行为等方面的需求却更难于表示形式化方法比欠形式化方法更难学习,不仅在培训阶段要花大量的投资,而且对某些软件工程师来说,它代表了一种“文化冲击”把形式化方法和欠形式化方法有机地结合起来, 取长补短,应该能获得更理想的效果第五章一、总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务确定系统的物理配置方案进而确定组成系统的每
16、个程序的结构二、总体设计阶段主要由两阶段组成系统设计阶段从数据流图出发设想完成系统功能的若干种合理物理方案分析员应仔细分析比较方案,和用户共同选定一最佳方案软件结构设计阶段确定软件由哪些模块组成及这些模块之间的动态调用关系 三、软件结构设计时应该遵循模块独立原理1.耦合14 / 28文档供参考,可复制、编制,期待您的好评与关注!耦合:对一个软件结构内不同模块间互连程度的度量(1)数据耦合如果两个模块彼此间通过参数交换信息,而且交换的信息 仅仅是数据,那么这种耦合称为数据耦合。数据耦合是低耦合。 (2)控制耦合如果两个模块彼此间传递的信息中有控制信息(有时该控制信息以数据形式出现),这种耦合称控
17、制耦合。控制耦合是中等程度的耦合,它增加了系统的复杂程度(3)特征耦合如果被调用的模块需要使用作为参数传递进来的数据结构 中的所有元素,那么,把整个数据结构作为参数传递就是完全 正确的。但当把整个数据结构作为参数传递而被调用的模块只 需使用其中一部分数据元素时,即出现特征耦合(4)公共环境耦合当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合(5)内容耦合出现下列情况之一,两个模块间就发生了内容耦合:? 一个模块访问另一个模块的内部数据? 一个模块不通过正常入口而转到另一个模块的内 部?两模块有部分程序代码重叠(只可能出现在汇编程15 / 28文档供参考,可复制、编
18、制,期待您的好评与关注!序)? 一个模块有多个入口 (这意味着一个模块有几种功能)内容耦合是最高程度的耦合(6)设计原则?尽量使用数据耦合?少用控制耦合和特征耦合?限制公共环境耦合的范围?完全不用内容耦合2.内聚内聚标志一个模块内各元素相结合的紧密程度(1)低内聚:偶然内聚,逻辑内聚,时间内聚偶然内聚:如果一个模块完成一组任务,这些任务彼此间即使有关系也是很松散的,就叫做偶然内聚逻辑内聚:如果一个模块完成的任务在逻辑上属于相同或相似的一类,则称为逻辑内聚时间内聚:如果一个模块包含的任务必须在同一段时间内执行(如模块初始化工作),就叫时间内聚(2)中内聚:过程内聚,通信内聚过程内聚:如果一个模块
19、内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚通信内聚:如果模块中所有元素都使用同一个输入数据和16 / 28文档供参考,可复制、编制,期待您的好评与关注!(或)产生同一个输出数据,则称通信内聚(3)高内聚:顺序内聚,功能内聚顺序内聚:如果一个模块内的处理元素和同一个功能密切 相关,而且这些处理必须顺序执行(通常一个处理元素的输出 数据作为下一个处理元素的输人数据),则称为顺序内聚功能内聚:如果模块内所有处理元素属于一个整体,完成 一个单一的功能,则称为功能内聚。功能内聚是最高程度的内 聚四、抽象和求精:由抽象到具体地构造软件层次结构五、软件开发过程中既要充分重视和利用启发式规则
20、, 又要从实际情 况出发避免生搬硬套六、自顶向下逐步求精是软件结构设计的常用途径在详细的过程设计和编写程序之前,首先进行结构设计,具好处 在于可以在软件开发早期站在全局高度对软件结构进行优化。在该时 期进行优化付出的代价不高,却可使软件质量得到重大改进第六章一、详细设计阶段的关键任务1.确定怎样具体地实现用户需要的软件系统,即要设计出程序的“蓝图”详细设计的结果基本决定了最终程序代码的质量二、详细设计阶段最重要的目标17 / 28文档供参考,可复制、编制,期待您的好评与关注!.保证软件的可靠性.使将来编写出的程序可读性好、容易理解、容易测试、容易修改和维护三、结构程序设计技术是实现上述目标的基
21、本保证, 是进行详细设计 的逻辑基础如果一个程序的代码块仅仅通过顺序、选择和循环这 3种基本控 制结构进行连接,并且每个代码块只有一个入口和一个出口, 则称这 个程序是结构化的。结构程序设计是尽可能少用 GO TO语句的程序 设计方法。四、人机界面设计是接口设计的重要的组成部分.对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要.人机界面的质量直接影响用户对软件产品的接受程度.在设计人机界面的过程中,必须充分重视并认真处理好系统响应时间、用户帮助设施、出错信息处理和命令交互等 4个设计问题(1)系统响应时间长度系统响应时间过长,用户就会感到紧张和沮丧系统响应时间过短会迫
22、使用户加快操作节奏, 从而可能 会犯错误易变性:系统响应时间相对于平均响应时间的偏差响应时间易变性低有助于用户建立起稳定的工作节奏18 / 28文档供参考,可复制、编制,期待您的好评与关注!响应时间变化暗示系统工作出现了异常(2)用户帮助设施集成的帮助设施一开始就设计在软件里面缩短用户获得帮助的时间,增加界面的友好性附加的帮助设施在系统建成后再添加到软件中多数情况实际是一种查询能力有限的联机用户手册(3)出错信息处理出错信息和警告信息,是出现问题时交互式系统给出的“坏消息”出错信息设计得不好,将向用户提供无用的甚至误导的信息,反而会加重用户的挫折感(4)命令交互面向窗口的、点击和拾取方式的界面
23、已经减少了用户对命令行的依赖许多高级用户仍然偏爱面向命令行的交互方式多数情况,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能五、过程设计-详细设计阶段应完成的主要工作精化、迭代、原型.在数据设计、体系结构设计和接口设计完成之后进行19 / 28文档供参考,可复制、编制,期待您的好评与关注!.任务是设计解题的详细步骤(即算法)(1)程序流程图(2)盒图(N-S图)(3)PAD图-问题分析图任务1任翳1PAD图基本结构选择结构分支途择的构任务1任翳1PAD图基本结构选择结构分支途择的构VSTIL,柒件先判定蜃弄蜡构后判定型看环州构(4)判定表当算法中包含多重嵌套的条件选择时,能
24、清晰地表示复杂的条件组合与应做的动作之间的对应关系判定树判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系(6)过程设计语言过程设计语言也称为伪码六、面向数据结构的设计方法(完成过程设计).Jackson结构程序设计方法程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复3类,因此,逻辑数据20 / 28文档供参考,可复制、编制,期待您的好评与关注!结构也只有这3类七、程序复杂程度的定量度量I.McCabe 方法(1)使用环形复杂度定量度量程序的复杂程度(2)实践表明,环形复杂度 V(G) = 10是模块规模的合理上限.HaIst
25、ead 方法(1)根据程序中运算符和操作数的总数度量程序复杂度(2)H = n 110g25 + n 210g2n2第七章一、实现包括编码和测试两个阶段二、编码=设计结果翻译成程序(某种程序语言编写)把软件设计结果翻译成用某种程序设计语言书写的程序三、测试包含静态测试和动态测试,测试步骤至少分为:.模块测试 - 单元测试重点-5个方面.模块接口.局部数据结构.重要的执行通路.出错处理通路21 / 28文档供参考,可复制、编制,期待您的好评与关注!.边界条件2,子系统测试-局部.系统测试-集成.验收测试-用户参与确认测试也称为验收测试,它的目标是验证软件的有效性。确认(validation ):
26、指的是为了保证软件确实满足了用户需求 而进行的一系列活动。验证(verification ):指的是保证软件正确地实现了某个特定 要求的一系列活动。有效性的简单定义:如果软件的功能和性能如同用户所合理期待的那样,软件就是有效的。四、白盒测试和黑盒测试是软件测试的两类基本方法.白盒测试逻辑覆盖-是以程序内部的逻辑结构为基础的设计测试用 例的技术。(1)语句覆盖使程序中每个语句至少执行一次22 / 28文档供参考,可复制、编制,期待您的好评与关注!(2)判定覆盖使每个判定的真假分支都至少执行一次。(3)条件覆盖使每个判定的每个条件的可能取值至少执行一次。(4)判定/条件覆盖选取足够多的测试用例,使
27、判断中的每个条件的所有可能取值 至少执行一次,同时每个判断本身的所有可能判断结果至少执行 一次.(5)条件组合覆盖所有可能的条件取值组合至少执行一次(6)点覆盖图论中点覆盖的概念定义如下:如果连通图 G的子图G是 连通的,而且包含G的所有结点,则称G是G的点覆盖。(7)边覆盖图论中边覆盖的定义是:如果连通图G的子图G是连通的, 而且包含G的所有边,则称G是G的边覆盖。为了满足边覆 盖的测试标准,要求选取足够多测试数据,使得程序执行路径至 少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。(8)路径覆盖路径覆盖的含义是,选取足够多测试数据,使程序的每条可能 路径都至少执行一次(如果程序图中有
28、环,则要求每个环至少经过 一次)。23 / 28文档供参考,可复制、编制,期待您的好评与关注!2.黑盒测试黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方 法,它很可能发现白盒测试不易发现的其他类型的错误。1等价类划分法(等价分配)把所有可能的输入数据(有效的和无效的)划分成若干个等 价的子集(称为等价类别或等价区间),使得每个子集中的一个 典型值在测试中的作用与这一子集中所有其它值的作用相同 .2边界值分析法边界值分析法与等价类划分法区别(1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生
29、 的测试情况3 错误推测法(error guessing)根据经验、直觉和预感来进行测试4因果图法因果图适合于描述对于多种输入条件的组合, 相应产生多个动 作的形式来设计测试用例。因果图方法最终生成的是判定表。第八章一、软件维护的4类活动(改正性、适应性、完善性、预防性)24 / 28文档供参考,可复制、编制,期待您的好评与关注!软件维护-就是在软件已经交付使用之后,为保证软件在相当长的时期能够正常运作所进行的软件活动。改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷、 排除实施中的误使用,所进行的诊断和改正错误的过程就叫做改正性 维护。适应性维护:为使软件适应外部环境和数据环境的变化
30、,而去修 改软件的过程就叫做适应性维护。扩充与完善性维护:在软件的使用过程中,用户往往会对软件提 出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件, 以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护 性。预防性维护:预防性维护是为了提高软件的可维护性、 可靠性等, 为以后进一步改进软件打下良好基础。二、决定软件可维护性的基本要素(可理解、可测试、可修改、可移植和可重用性).可理解性表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。模块化(模块结构良好,高内聚,松耦合)、详细的设计文档、 结构化设计、程序内部的文档和良好的高级程序设计语言等等, 都对提高软件的可理解性有重要贡献。.可测试性25 / 28文档供参考,可复制、编制,期待您的好评与关注!诊断和测试的容易程度取决于软件容易理解的程度。软件结构、可用的测试工具和调试工具,以及以前设计的测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护士绩效管理奖惩制度
- 招标采购奖惩制度规定
- 教培学科老师工作奖惩制度
- 教师教学成绩奖惩制度
- 教资代币制等奖惩制度
- 文明施工管理及奖惩制度
- 方向盘组装车间奖惩制度
- 施工考核奖惩制度范本大全
- 日光食堂员工奖惩制度
- 景区保安人员奖惩制度细则
- 2025年旅游摄影服务合同协议
- 有限空间脚手架施工方案
- 团校成立大会详细议程安排
- 法律职业伦理试题及答案
- 盐田安全培训证书课件
- 2024-2025学年度江苏旅游职业学院单招《语文》检测卷带答案详解(能力提升)
- 人工智能+智慧医疗影像分析AI辅助病理诊断系统研究报告
- 2025年甘肃省委党校在职研究生招生考试(中共党史党建)综合试题及答案
- 索尼微单相机A7 II(ILCE-7M2)使用说明书
- 汽修厂安全培训app课件
- 国际业务审计课件
评论
0/150
提交评论