软件工程.docx
- 文档编号:28160234
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:23
- 大小:33.27KB
软件工程.docx
《软件工程.docx》由会员分享,可在线阅读,更多相关《软件工程.docx(23页珍藏版)》请在冰豆网上搜索。
软件工程
第一章软件工程学概述3
什么是软件危机,有哪些具体表现形式?
3
为什么会产生软件危机?
3
解决软件危机的途径?
3
软件工程的定义及目标3
软件工程的基本原理4
简述结构化范型和面向对象范型的要点,并分析他们的优缺点4
什么是软件生存周期,包含哪些阶段?
4
什么是软件过程?
它与软件工程发法学有何关系?
5
常用的软件生存周期模型有哪些?
5
传统“瀑布模型”的主要缺陷是什么?
试说明改进方法。
5
什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
5
第二章可行性研究6
可行性研究包括哪几方面的内容?
7
可行性研究的主要工具是什么,有何作用?
7
系统流程图与数据流程图有什么区别?
7
为什么数据流图要分层?
画分层的DFD要遵循哪些原则?
7
数据字典包括哪些内容?
它的作用是什么?
8
第三章需求分析8
为什么要进行需求分析?
通常对软件系统有哪些需求?
8
需求分析的任务8
怎样与用户有效的沟通以获取用户的真实需求?
9
需求分析的描述工具有哪些?
9
什么是实体—联系图,具有哪些基本成分?
9
第五章总体设计9
什么是模块?
模块具有哪些基本属性、特性?
9
模块具有内部和外部两个特性:
10
什么是模块化?
模块设计的准则?
10
模块独立性的重要性10
模块独立型度量标准10
耦合10
内聚11
面向数据流的设计方法12
第六章详细设计12
程序流程图12
盒图(N-S图)12
PAD图(问题分析图)12
判定表13
过程设计语言(PDL-伪码)13
第七章实现13
什么是软件测试13
软件测试与软件调试的主要区别?
13
软件测试的目的14
软件测试准则14
软件测试方法14
软件测试步骤14
单元测试15
确认测试15
白盒测试技术15
黑盒测试技术15
黑盒测试主要采用的技术有哪些?
16
第八章维护16
第九章面向对象方法学引论16
第十三章软件项目管理18
第一章软件工程学概述
软件的定义:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合
软件的特点:
1.软件是一种逻辑实体,而非具体的物理实体2.在研制、开发活动中被创造出来,但不能按传统的生产含义加以理解3.在软件的运行和使用期间,没有磨损、老化问题
什么是软件危机,有哪些具体表现形式?
简单地讲,软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要有以下表现形式:
1、对软件开发成本和进度的估计常常很不准确2、用户对“已完成的”软件系统不满意的现象经常发生3、软件产品的质量往往靠不住4、软件常常是不可维护的5、软件通常没有合适的文档资料6、软件成本在计算机系统总成本中所占的比例逐年上升7、软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势
为什么会产生软件危机?
(1)来自软件自身的特点:
是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2)软件开发与维护的方法不当:
忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3)供求矛盾将是一个永恒的主题:
面对日益增长的软件需求,人们显得力不从心。
解决软件危机的途径?
(1)对计算机软件有一个正确的认识(软件≠程序)
(2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3)推广使用在实践中总结出来的开发软件的成功技术和方法(4)开发和使用更好的软件工具
软件工程的定义及目标
从不同的角度,软件工程有各种不同的定义:
1)FritzBauer认为:
“软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。
”
2)IEEE认为:
“软件工程是开发、运行、维护和修复软件的系统方法”,其中,“软件”的定义为:
计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。
3)中华人民共和国国家标准GB/T11457—1995《软件工程术语》的定义是:
“软件工程是软件开发、运行、维护和引退的系统方法”。
软件工程的目标可概括为:
在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户要求的软件产品。
软件工程的基本原理
软件工程的7条基本原理:
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)软件工程结果应能清楚地审查
6)开发小组的人员应该少而精
7)承认不断改进软件工程实践的必要性
软件工程的本质特征
(1)软件工程关注于大型程序(软件系统)的构造
(2)软件工程的中心课题是分解问题,控制复杂性(3)软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4)开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具(5)和谐地合作是开发软件的关键(6)软件必须有效地支持它的用户(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)
简述结构化范型和面向对象范型的要点,并分析他们的优缺点
1.传统方法学:
也称为生命周期发法学或结构化范型。
优点:
把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:
当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:
优点:
降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
什么是软件生存周期,包含哪些阶段?
软件生存周期是指从设计软件产品开始到产品不能使用为止的时间周期。
概括地说,软件生命周期由软件定义、软件开发和软件维护3个时期组成。
划分为问题定义、可行性研究、需求分析、软件设计(含:
总体设计与详细设计两个阶段)、编码和单元测试、综合测试、软件维护个阶段。
软件定义时期的任务:
确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该才用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
划分为:
问题定义、可行性研究、需求分析
软件开发时期:
具体设计和实现在前一个时期定义的软件,它有四个阶段组成:
总体设计、详细设计、编码和单元测试。
前两个阶段称为系统设计,后两个阶段称为系统实现
运行维护时期:
主要任务是使软件持久地满足用户的需要
什么是软件过程?
它与软件工程发法学有何关系?
软件过程:
是为了获得高质量软件所需要完成的一系列任务的框架,他规定了完成各项任务的工作步骤。
软件工程方法学:
通常把软件生命周期全过程中使用的一整套技术方法的集合成为方法学,也称范型
常用的软件生存周期模型有哪些?
1)瀑布模型:
也称线性顺序模型或软件生存周期模型,遵循软件生存期的划分,明确规定各个阶段的任务,各个阶段的工作自上而下、顺序展开。
2)快速原型模型:
快速建立一个能反映用户主要需求的原型系统,降低了由于软件需求不明确带来的开发风险。
3)增量模型:
将整个产品分解成若干个构件进行逐步交付,使得软件开发可以较好地适应需求的变化。
4)螺旋模型:
将瀑布模型与增量模型结合起来,并且加入两种模型均忽略了的风险分析。
5)喷泉模型
传统“瀑布模型”的主要缺陷是什么?
试说明改进方法。
传统的瀑布模型过于理想化。
增加“反馈环”
什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
瀑布模型优点:
可强迫开发人员才用规范化的方法;严格地规定每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证、缺点:
(1)实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
(2)经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
(3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
(4)会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。
称之为“堵塞状态”。
它是软件工程中应用最广泛的过程模型,在软件工程中占有肯定和重要的位置。
快速原型模型在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。
优点:
1.使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。
2.快速原型模型是不带反馈环的3.软件产品的开发基本上是线性顺序进行的。
缺点:
产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。
增量模型优点:
(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。
(2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:
(1)至始至终开发者和客户纠缠在一起,直到完全版本出来。
(2)适合于软件需求不明确、设计方案有一定风险的软件项目。
该模型具有一定的市场。
螺旋模型优点:
对于大型系统及软件的开发,这种模型是一个很好的方法。
开发者和客户能够较好地对待和理解每一个演化级别上的风险。
缺点:
(1)需要相当的风险分析评估的专门技术,且成功依赖于这种技术。
(2)很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。
(3)这种模型相对比较新,应用不广泛,其功效需要进一步的验证。
该模型适合于大型软件的开发
传统瀑布模型特点1、阶段间具有顺序性和依赖性2、推迟实现的观点3、质量保证的观点
第2章可行性研究
可行性研究的目的:
就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
可行性研究的任务:
具体任务:
1、进一步分析和澄清问题定义2导出系统的高层逻辑模型。
从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。
对每种解法都应该至少从下述几方面研究其可行性:
经济技术法律操作3、对以后的行动方针提出建议。
最根本的任务:
对以后的行动方针提出建议。
如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划
可行性研究包括哪几方面的内容?
1)经济可行性:
通过对被开发软件系统的成本效益的分析,估算系统的开发成本,估计系统可能取得的效益,确定待开发系统是否值得投资开发。
2)技术可行性:
从问题定义规格说明书提出的系统功能、性能以及实际系统的各种约束来分析,确定当前的技术及条件是否能实现整个系统。
3)法律可行性:
分析在系统开发的全部过程中可能出现和涉及的法律问题,如合同、责任、知识产权、专利等问题。
4)运行可行性:
判断新系统的运行方式是否可行。
可行性研究的主要工具是什么,有何作用?
在进行可行性研究时,使用的主要工具为系统流程图。
系统流程图的基本作用是:
以黑盒方式描述系统各部件(如人工处理、程序、数据库、图表等),它只描述了信息在系统各部件中的流动情况,不对信息在系统中的加工细节进行描述,所以它不同于程序流程图。
可行性研究过程:
1、复查系统规模和目标2、研究目前正在使用的系统3、到处新系统的高层逻辑模型4、进一步定义问题5、导出和评价供选择的解法6、推荐行动方针7、草拟开发计划8、书写文档提交审查
系统流程图与数据流程图有什么区别?
系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况。
为什么数据流图要分层?
画分层的DFD要遵循哪些原则?
分层的目的:
便于逐步细化、结构清晰。
画分层的DFD要遵循哪些原则:
1)父图与子图之间数据要平衡。
2)分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。
3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。
4)不要把控制流作为数据流。
5)忽略琐碎的枝节。
6)每个数据流要有一个合适的名字,尽量使用现实系统中有具体意义的名字。
数据字典包括哪些内容?
它的作用是什么?
数据字典是描述数据流图中数据的信息的集合。
数据字典的组成:
1、数据流2、数据流分量(数据元素)3、数据存储4、处理
对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。
数据元素出现别名的原因:
1、对于同样的数据,不同的用户使用了不同的名字2、一个分析员在不同时期对同一个数据使用了不同的名字3、两个分析员分别分析同一个数据流时,使用了不同的名字
定义数据的方法:
1、顺序2、选择3、重复4、可选
第三章需求分析
为什么要进行需求分析?
通常对软件系统有哪些需求?
通过需求分析,明确用户对目标软件系统在功能、性能、行为、设计约束等方面的期望,回答软件系统“必须做什么”。
通常对软件系统的需求是以下几方面的综合:
(1)功能需求;
(2)性能需求;(3)可靠性和可用性需求;(4)出错处理需求;(5)接口需求;(6)约束;(7)逆向需求;(8)将来可能提出的要求。
需求分析的任务
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
1、确定对系统的综合要求(功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求)
2、分析系统的数据要求
3、导出系统的逻辑模型
4、修正系统开发计划
怎样与用户有效的沟通以获取用户的真实需求?
(1)初步需求获取,通过访谈与会议、问卷调查、观察用户工作流程等方法;
(2)面向数据流,自顶向下求精(3)简易的应用规格说明(4)快速建立软件原型
需求分析的描述工具有哪些?
实体-关系图(ER)、数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言、层次方框图、Warnier图、IPO图和需求描述语言等。
什么是实体—联系图,具有哪些基本成分?
实体联系图简称为E-R图。
E-R图中包含了实体(即数据对象)、联系和属性等3种基本成分。
1)数据对象:
可以由一组属性来定义的实体都可以被认为是数据对象。
在E-R图中用矩形框表示。
2)属性:
属性定义了数据对象的特征。
它可用来:
为数据对象的实例命名;描述这个实例;建立对另一个数据对象的另一个实例的引用。
在E-R图中用圆角矩形框表示。
3)联系:
数据对象彼此之间相互连接的方式称为联系,也称为关系。
实体与实体之间的关系,在E-R图中用连接两个实体的菱形框表示。
联系可分有3种类型:
一对一(1:
1)、一对多(1:
m)、多对多(n:
m)。
第5章总体设计
什么是模块?
模块具有哪些基本属性、特性?
模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。
模块具有3个基本属性:
1)功能:
模块实现的功能(含该模块调用的子模块的功能)。
2)逻辑:
描述模块内部怎么做。
3)状态:
模块使用时的环境和条件。
模块具有内部和外部两个特性:
1)外部特性:
模块的名字、参数表等。
2)内部特性:
完成模块功能的程序代码和模块内部数据。
什么是模块化?
模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
1)改进软件结构,提高模块独立性:
在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
2)模块大小要适中:
大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块合并到上级模块中。
3)软件结构图的深度、宽度、扇入和扇出要适当。
一般模块的调用个数不要超过5个。
4)尽量降低模块接口的复杂程度;
5)设计单入口、单出口的模块。
6)模块的作用域应在控制域之内。
模块独立性的重要性
1、有效的模块化(即具有独立的模块)的软件比较容易开发出来。
这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个有点尤其重要。
2、独立的模块比较容易测试和维护。
总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。
模块独立型度量标准
模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。
耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
耦合
耦合是对一个软件结构内各个模块之间互连程度的度量。
耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。
具体区分模块间耦合程度的强弱的标准如下:
数据耦合(低耦合):
数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。
控制耦合(中等程度的耦合):
模块间传递的信息不但有数据,还包括控制信息,这种块间联系方式称为控制耦合。
控制耦合的缺点:
控制耦合增加了模块之间的复杂性。
去除模块间控制耦合的方法:
(1)将被调用模块内的判定上移到调用模块中进行
(2)被调用模块分解成若干单一功能模块
公共环境耦合:
当两个或多个模块通过一个公共数据环境相互作用时,他们之间的耦合称为公共环境耦合
特征耦合:
当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合
设计原则:
总之,耦合是影响软件复杂程度的一个重要因素。
应该采取的原则是:
尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。
内聚
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。
简单地说,理想内聚的模块只做一件事情。
偶然内聚(低内聚):
如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫偶然内聚。
逻辑内聚(低内聚):
如果一个模块完成的任务在逻辑上属于相同或相似的一类,则称为逻辑内聚。
时间内聚(低内聚):
如果一个模块包含的热舞必须在同一段时间内执行,就叫时间内聚。
过程内聚(中内聚):
如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
通信内举(中内聚):
如果模块中所有元素都使用同一个输入数据和产生同一个输出数据,则称为通信内聚。
顺序内举(高内聚):
如果一个模块内的处理元素和同一个功能密切相关,而却这些处理必须顺序执行,则称为顺序内聚。
功能内聚(最高程度的内聚):
如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。
设计原则:
设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块件的耦合程度,从而获得较高的模块独立型。
面向数据流的设计方法
面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径,定义了一些不同的“映射”,利用这些映射可以把数据流图转换成软件结构。
因为任何软件系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以设计任何软件的结构。
通常所说的结构化设计方法,也就是基于数据流的设计方法。
第6章详细设计
程序流程图
优点:
对控制流程的描绘很直观,便于初学者掌握。
缺点:
1、程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构2、程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。
3、程序流程图不易表示数据结构
盒图(N-S图)
出于要有一种不允许违背结构程序设计精神的图形工具
特点:
1、功能域明确,可以从盒图上一眼看出来2、不可能任意转移控制3、很容易确定局部和全程数据的作用域4、很容易表现嵌套关系,也可以表示模块的层次结构
PAD图(问题分析图)
优点:
1.使用表示结构优化控制结构的PAD符号所设计出来的程序必然是程序化程序
2.PAD图所描述的程序结构十分清晰。
图中最左边的竖线是程序的主线,即第一层控制结构。
随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。
PAD图中竖线的总条数就是程序的层次数;
3.用PAD图表现程序逻辑,易读、易懂、易记。
PAD图是二维数型结构的图形,程序从图中最左边上端的结点开始执行,自上而下,从左到右顺序执行;
4.很容易将PDA图转换成高级程序语言源程序,这种转换可由软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。
5.既可用于表示程序逻辑,也可用于描述数据结构
6.PAD图的符号支持自顶向下、逐步求精方法的使用。
开始时设计者可以定义一个抽象程序,随着设计工作的深入而使用“def”符号逐步增加细节,直至完成详细设计。
判定表
优点:
1、能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。
2、能够简洁而又无歧义地描述处理规则。
缺点:
并不能适用于作为一种通用的设计工具,没有一种简单的方法能使它能同时清晰地表示顺序和重复等处理特性
过程设计语言(PDL-伪码)
特点:
1、关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。
为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,if…fi(或endif)等。
2、自然语言的自由语法,它描述处理特点。
3、数据说明的手段。
应该既包括简单的数据结构(例如纯量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。
4、模块定义和调用的技术,应该提供各种接口描述模式
优点:
1、可以作为注释直接插在源程序中间。
这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。
2、可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
3、已经有自动处理程序存在,而且可以自动由PDL生成程序代码。
PDL的缺点:
是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。
第7章实现
什么是软件测试
软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。
软件测试与软件调试的主要区别?
1)测试从一个侧面证明程序员的失败;调试证明程序员的正确;
2)测试从已知条件开始,使用预先定义的程序,且有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程