软件工程原理方法与应用第三版重点.docx
- 文档编号:3450956
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:29
- 大小:463.71KB
软件工程原理方法与应用第三版重点.docx
《软件工程原理方法与应用第三版重点.docx》由会员分享,可在线阅读,更多相关《软件工程原理方法与应用第三版重点.docx(29页珍藏版)》请在冰豆网上搜索。
软件工程原理方法与应用第三版重点
第一章绪论
1.软件:
是能够完成预定功能和性能的可执行的计算机诚信度。
包括使程序正常执行所需的数据,以与有关描述程序操作和使用的文档。
即:
软件=程序+文档
2.软件的特征:
软件的开发不同于硬件设计、不同于硬件制造、不同于硬件维修。
3.软件工程方法学:
把在软件生命周期全过程中使用的一整套技术方法的集合。
三要素:
方法、工具、过程
4.软件工程学的畴:
软件开发技术〔软件开发方法学、软件工具、软件工程环境〕、软件工程管理〔软件管理学、软件经济学、度量学〕。
5.软件工程:
是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,目的是为了实现按照预期的进度和经费完成软件生产计划,同时提高软件的生产率和可靠性。
6.软件的开展:
大体经历了程序、软件、软件产品3个阶段。
7.工具和方法是软件开发技术的2大支柱。
8.3种编程泛型:
过程式编程泛型、面向对象编程泛型、基于构件技术的编程泛型
9.面向对象程序设计中,数据和操作被封装在一个对象中,对象之间那么是通过消息相互联系。
10.构件:
标准化/规格化的对象类。
11.3种编程泛型的差异:
粒度由小到大依次是:
过程式编程式、面向对象编程式、基于构件的编程泛型。
12.软件工程的分化:
1、传统软件工程2、面向对象软件工程3、基于构件的软件工程
13.消除软件危机的途径:
①正确认识计算机软件;②充分认识到软件开发是一种组织良好、管理严密、各类人员协同工作的工程项目;推广使用在实践中总结出来的开发软件的成功的技术和方法;③开发和使用更好的软件工具。
第二章软件生存周期与软件过程
1.软件生存周期:
计划、开发、运行3个时期。
需求分析-》软件分析-》软件设计-》编码测试-》软件测试-》运行维护
2.需求分析〔用户视角〕:
功能需求、性能需求、环境约束、外部接口描述。
3.软件分析〔开发人员视角〕:
建立与需求模型一致的,与实现无关的软件分析模型。
4.软件设计:
总体设计/概要设计、详细设计〔确定软件的数据结构和操作〕。
5.软件测试:
单元测试、集成测试、系统测试。
6.软件开发方法可区分:
形式化方法、非形式化方法。
开发模型
特点
场合
瀑布模型〔历史悠久、广为人知,它的优势在于它是规的、文档驱动的方法;这种模型的问题是,最终开发的软件产品可能并不是客户真正需要的〕
线性模型,每个阶段必须完成固定文档
需求明确的中小型软件开发
快速原型模型〔正是为了克制瀑布模型的缺点提出来的,他通过快速构建起一个可以在计算机上运行的原型系统,让用户使用原型并收集用户反应意见的方法,获取用户的真实需求〕
用户介入早,通过迭代完善用户需求,应用快速开发工具
需求模糊的小型软件开发
增量模型〔具有可在软件开发的早期阶使投资获得明显回报和交易维护的优点,但是,要求软件具有开放的结构是使用这种模型固有的困难。
〕
每次迭代完成一个增量,可用于OO开发
容易分块的大型软件开发
螺旋模型〔适用于开发的大型软件项目,但是只有在开发人员具有风险分析和排除风险的经验与专门知识时,使用这种模型才会成功。
〕
典型迭代模型,重视风险分析,可用于OO开发
具有不确定性的大型软件开发
构件集成模型〔面向对象基于构件库,融合螺旋模型的特征,支持软件开发,迭代方法,软件复用思想〕
软件开发与构件开发平行进展,主要用于OO开发
领域工程,行业的中型软件开发,主要用于oo开发
转换模型〔是将形式化软件开发和程序自动生成技术相结合的一种软件开发模型。
〕
形式化的需求规格说明书,自动的程序变换系统
理想化的模型,尚无成熟工具支持
净室模型〔是一种形式化的增量开发模型,其根本思想是力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或洁净的状态下实现软件的制作。
〕
形式化的增量开发模型,在洁净状态下实现软件的制作
开发团队熟悉形式化方法,中小型软件开发
7.形式化开发模型:
转换模型、净室模型
8.软件可行性研究:
经济可行性、技术可行性、运行可行性、法律可行性。
9.可行性研究的步骤:
对当前系统进展调查研究、导出新系统的解决方案、提出推荐方案、编写可行性论证报告。
10.可行性论证报告的容:
系统概述、可行性分析、结论意见。
11.软件风险分析包括:
风险识别〔项目风险、技术风险、商业风险〕、风险预测、风险的驾驭和监控。
12.软件计划的7种类型:
项目实施计划、质量保证计划、软件测试计划、文档编制计划、用户培训计划、综合支持计划、软件分发计划。
第三章结构化分析与设计
1.瀑布模型的生命周期:
需求定义与分析-》总体设计-》详细设计-》编码-》测试-》维护
2.系统的开发流程〔SA和SD流程〕:
结构化分析〔工具:
DFD,PSPEC〕------》分析模型〔分层DFD图〕+SRS
结构化设计〔工具:
SC图〔映射〕------》初始设计模型〔初始SC图〕
初始设计模型〔初始SC图〕〔优化〕------》最终设计模型〔最终SC图〕
3.SA需求分析的两项根本任务:
建立系统分析模型、编写SRS。
4.分析模型组成:
功能模型、数据模型、行为模型3种。
5.抽象和分解是结构化分析的主要指导思想,细化的实质是分解。
分解和细化是软件设计的策略。
6.SD阶段把分析模型中的DFD图转换为最终SC图。
7.传统软件的开发技术:
结构化设计、模块设计。
8.软件设计:
总体设计/概要设计〔初始SC图、最终SC图〕、详细设计〔用逐步细化的方法,完成模块的说明〕。
9.需求分析的步骤:
需求获取、需求提炼、需求描述、需求验证。
10.DFD图不能表示程序的控制结构〔如选择、循环结构〕。
11.加工规格说明通常用结构化语言、判定表、判定树作为描述工具。
12.软件中的数据分为3类:
数据项〔数据元素〕、数据流〔多个相关数据项〕、数据文件和数据库。
13.数据字典的组成:
数据项、数据流、数据存储(文件或数据库)、加工(处理逻辑)、外部项(人、物或其它软件系统)。
14.
SD模型是由SA模型映射而来的。
SA模型的数据字典可转换为待开发系统的数据设计
数据流图可转换为体系结构设计〔SC图〕与接口设计
加工规格说明可转换为模块部的详细过程设计
15.SD模型的组成:
从上到下依次是:
过程设计、接口设计、体系结构设计、数据设计。
16.结构化分析的根本步骤:
自顶向下对系统进展功能分解,画出DFD图;由后向前定义系统的数据和加工;编制DD和PEPES;写出SRS。
17.把不需要分解的加工成为根本加工。
把逐步分解成为“自顶向下,逐步细化〞。
18.DFD的优点:
便于实现,便于使用。
19.传统的软件设计可细分为:
面向数据流设计〔SD方法〕、面向数据结构设计〔Jackson方法〕。
20.用数据流图表示逻辑模型,在设计阶段,按照数据流图的不同类型〔变换型、事务型〕转换为相应的软件结构。
21.结构化设计通常从DFD图到SC图的映射开始。
22.
面向数据流的设计方法:
从DFD图到SC图的映射的4个步骤:
1、复审DFD图,必要时可再次进展修改或细化;
2、鉴别DFD图的结构特征:
事务?
变换?
;
3、按照规那么,把DFD图为初始的SC图;
4、改良初始的SC图。
23.变换型结构:
由输入、变换中心和输出三局部组成。
事务型结构:
具有在多种事务中选择执行某类事物的能力。
24.变换映射的步骤:
划分DFD图的边界、建立初始SC图的框架、分解SC图的各个分支。
事务映射的步骤:
在DFD图上确定边界、画出SC图框架、分解和细化承受分支和发送分支。
25.优化结构设计的指导规那么:
对模块分割、合并和变动调用关系的指导规那么、保持高扇入/低扇出的原那么、作用域/控制域规那么。
26.模块设计〔详细设计〕的主要任务是编写软件的模块设计说明书。
目的是确定模块采用的算法和块数据结构。
27.模块设计的原那么:
清晰第一的设计风格、结构化的控制结构、逐步细化的实现方法。
28.结构化程序设计原理和逐步细化的实现方法是完成模块设计的根底。
第四章面向对象和UML
1.面向对象的根本特征:
抽象、封装、集成、多态。
2.面向对象开发的优点:
提高软件系统的可复用性、可扩展性、可维护性、面向对象符合人类习惯的思维方式。
3.元素之间的联系有:
关联、泛化、依赖、实现、聚集、组合。
4.UML的4个抽象层次:
用户模型、模型、元模型、元元模型。
5.UML的2类图:
静态图〔用例图、类图、对象图、构件图、部署图〕;
动态图〔状态图、时序图、协作图、活动图〕
UML的5种视图:
用例视图、逻辑视图、进程视图、构件视图、部署视图。
6.UML的特点:
统一标准、面向对象、表达能力强,可视化。
7.UML模型作为测试阶段的依据:
单元测试使用类图和类规格说明;集成测试使用构件图和协作图;系统测试使用用例图来验证系统行为。
8.UML中用例图由系统边界、用例、参与者、关联组成。
用例之间存在的关系:
扩展关系、包含关系。
包与包之间的关系有:
依赖、泛化。
9.根据类/对象之间的具体情况,可分为普通关联,递归关联、多重关联、有序关联、限制关联、或关联、关联类
10.消息〔类里面的方法加参数〕:
简单消息、同步消息、异步消息。
状态图有:
初态、终态、中间态。
11.时序图中的消息可以是信号或操作调用。
12.时序图着重表达交互的时间顺序;协作图着重表达交互对象间的静态。
13.时序图和协作图适合描述单个用例中几个对象的行为;活动图适合表现跨越多用例或多线程的复杂行为。
14.构件图可以用来表现、编译、、执行时构件间的依赖关系。
15.UML用图表示语法,用元模型表示语义,采用模型来描述系统的结构〔静态特征〕以与行为〔动态特征〕。
第五章需求工程和需求分析
1.软件需求的3个层次:
业务需求、用户需求、功能需求。
软件项目中40%~60%的问题源自软件需求阶段。
2.软件需求的6个特性:
功能性、可用性、可靠性、性能、可支持性、设计约束。
3.需求分析的步骤:
需求获取、需求建模、需求描述〔编写SRS〕、需求验证。
4.需求分析的主要任务:
建立需求模型。
需求分析是迭代过程。
常见模型有:
用例图、数据流图、实体联系图、控制流图、状态转换图。
5.需求获取的方法:
1、建立联合分析小组2、用户访谈。
6.获得用例的方法通过问问题:
1、系统用户是谁?
系统维护时谁?
从哪获得信息?
给谁?
7.需求建模方法:
结构化分析建模方法、面向对象分析建模。
8.结构化需求模型由3局部组成:
功能模型〔数据流图、加工规格说明书〕、数据模型〔数据字典、ER图〕、行为模型〔状态转换图、控制流图、控制规格说明书〕。
9.面向对象需求模型:
用例模型〔用例图、用例规约〕、补充规约、术语表。
10.面向对象需求建模的步骤:
画用例图、写用例规约、描述补充规约、编写术语表、调整优化。
11.用例规约文档的容:
简要说明、事件流、特殊需求、前置条件和后置条件。
12.用例规约的检查:
功能需求的完备性、模型是否易于理解、是否存在不一致性、防止二义性。
13.软件需求规格说明书SRS的容:
引言、信息描述、功能描述、行为描述、质量保证、接口描述、其他描述。
14.需求管理的流程:
需求确认、需求跟踪、需求变更。
需求跟踪有两种方式,正向跟踪与逆向跟踪。
需求变更的流程:
变更申请、审批、更改、更新确认。
第六章面向对象分析
1.建立面向对象分析模型步骤:
1、建立类/对象层〔抽象出类和对象〕、2、建立属性层〔设计静态属性和关系〕、3、建立服务层〔定义动态属性和消息通信〕、4、建立结构层〔定义层次结构关系〕、5、建立主题层
2.OOA方法的共同特征:
类和类层次的表示、建立对象-关系模型、建立对象-行为模型。
3.面向对象开发的全过程:
OOA〔分析〕、OOD〔设计〕、OOP〔编码〕、OOT〔测试〕。
4.用例模型是面向对象分析最常用的一种模型。
5.分析类的类型:
边界类、控制类、实体类。
6.每个参与者与用例之间确定一个边界类,每个用例设置一个控制类,而实体类为现实生活中的对象,类〔属性与方法〕或用于保存和更新信息的有关对象。
7.边界类包括:
用户界面类、系统接口类、设备接口类。
如事务管理器、资源协调器、错误处理器都可为控制类。
8.控制类别离边界类和实体类,可用来建立系统的动态行为模型。
实体类用于保存和更新一些对象的有关信息。
9.为分析类分配职责是OOD的重点。
实体类具有持久性。
10.对象-关系模型的容:
分析类的属性、分析类的关联、分析类图、分析类的合并。
〔用类图来表示〕
11.对象行为模型用状态转换图、时序图、协作图、活动图来表示。
12.面向对象分析时:
1、确定分析类,2、静态模型建立画类图,3、动态模型建立画时序图和协作图。
13.时序图中的元素有:
对象、对象生命线、消息。
协作图中的元素有:
对象、、消息流。
14.面向对象分析的任务是:
将需求阶段产生的需求模型转换为软件分析模型。
面向对象设计的任务是:
将分析阶段建立的分析模型转换为软件设计模型。
第七章面向对象设计
1.软件设计的根本概念:
模块〔拥有明确定义的输入、输出和特性的程序实体〕与构件、抽象与细化、信息隐藏、软件复用。
2.软件设计的根底:
分析阶段对目标系统的数据、功能、行为建模。
3.软件设计的任务:
把分析阶段产生的分析模型转换为软件设计模型。
4.软件设计包括:
数据设计、体系结构设计、接口设计、过程设计。
5.面向对象设计准那么:
模块化;抽象;信息隐藏;弱耦合;强聚;可重用
6.分解和模块独立性是实现模块设计的重要指导思想。
7.模块的独立性从2个方面度量:
模块本身的聚、模块之间的耦合。
8.聚分类:
低聚〔偶然性聚、逻辑性聚、时间性聚〕、中聚〔过程性聚、通讯性聚〕、高聚〔顺序性聚、功能性聚〕。
9.耦合分类:
弱耦合〔非直接耦合、数据耦合、特征耦合〕、中耦合〔控制耦合〕、较强耦合〔外部耦合、公共耦合〕、强耦合〔容耦合〕。
10.一个模块,一个功能是模块化设计的一条准那么。
11.OO设计模型由系统架构层、类和对象层、消息层、责任层4个层次组成。
12.面向对象设计中,数据和过程被封装为类/对象的属性和操作;接口被封装为对象间的消息,而体系结构的设计那么表达为系统的技术根底设施和具有控制流程的对象间的协作。
13.传统的软件设计任务包括:
概要设计和详细设计
14.概要设计(总体设计):
包括软件的结构和接口设计,并编写概要设计文档。
详细设计,确定模块部的算法和数据结构,产生描述各模块程序过程的详细文档。
每个阶段完成的文档都必须经过复审。
15.OOD的软件设计任务可划分为2个层次:
系统架构设计、系统元素设计。
16.系统架构设计的容:
系统高层结构设计、确定设计元素、确定任务管理策略、实现分布式机制、设计数据存储方案、人机界面设计。
系统元素设计的容:
子系统设计、分包设计、类/对象设计。
17.常用的架构模式有:
层次架构、模型-视图-控制〔MVC〕架构、管道-过滤器架构、黑板架构。
18.面向并行需求,任务管理策略主要3种解决方案:
多处理机方案、操作系统方案、应用程序方案。
19.分包的原那么:
将边界类打包、将功能相关的类打包。
高聚-低耦合的原那么,包之间的耦合表现为依赖关系。
20.a向b发送消息的必要条件是a能够引用b,a可以通过4种方式引用b,对应于从a到b的4种连接可见度:
1、全局:
b是可以在全局围直接引用的对象。
2、参数:
b作为a的某一项操作的参数或返回值。
3、局部:
b在a的某一操作中充当临时变量。
4、域:
b作为a的数据成员。
21.操作的可见性:
公有:
除了累本身以外,操作对其他模型元素也是可见的;也可以用“+〞表示;
保护:
操作只对类本身、它的子类也是可见的;也可以用“#〞表示。
私有:
操作只对类本身是可见的,也可以用“—〞表示。
第八章编码和测试
1.编码的风格:
1、追求“聪明〞和“技巧〞---〉提倡“简明〞和“直接〞2、使用标准的控制结构3、清晰的前提下求取效率
2.编码的目的:
设计模型(不可执行的)---->〔编码〕源程序--à可执行代码
3.选择编码语言的标准:
1、应用领域2、算法与计算复杂性3、数据结构的复杂性4、效率的考虑
4.测试和纠错:
测试〔testing〕的目的与任务:
目的:
发现程序的错误;任务:
通过执行程序,暴露潜在的错误。
纠错〔debugging〕的目的与任务:
目的:
定位和纠正错误;任务:
消除软件故障,保证程序的可靠运行。
5.测试的特性:
挑剔型、复杂性、不彻底性、经济型。
6.测试分类:
静态分析〔静态分析器分析、代码评审〔代码会审、走查、办公桌检查〕〕;
动态测试〔黑盒测试〔功能测试〕、白盒测试〔结构测试〕〕。
7.黑盒测试分类〔根据被测试程序功能来进展测试〕:
等价类法、边界值法、错误猜想法。
8.白盒测试分类〔以程序结构为依据的测试方法〕:
路经测试〔点覆盖、边覆盖、路径覆盖〕、逻辑覆盖测试〔语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖〕。
第九章软件维护
1.决定软件可维护性的因素
2.软件副作用的类型:
修改编码的副作用、修改数据的副作用、修改文档的副作用。
3.什么是再工程:
将新技术和新工具应用于老的软件的一种较“彻底〞的预防性维护。
4.软件配置项包括:
程序〔源代码和可执行程序〕,文档,数据
5.基线(Baseline)是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的根底。
6.维护的代价
i.有形代价:
ii.无形代价:
占用资源以致延误开发;修改不与时引起用户不满;维护引入新错误,降低了软件质量;等等。
维护工作量的经验模型:
M=P+Ke^(c-d)
其中:
M=维护用的总工作量;P=生产性活动(如.分析,评价,修改设计,编码,测试等);K=经验系数;
c=复杂度(非结构化设计和缺少文档会增加复杂度)d=维护人员对软件的熟悉程度.
第十章软件复用
1.软件复用的定义:
(SR)定义为利用工程知识或方法,由一已存在的系统,来建造一新系统。
目的:
这种技术,可改良软件产品质量和生产率。
还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。
2.软件复用的目的是能更快、更好、本钱更低地生产软件制品。
3.按照可复用的粒度,软件制品从小到大分为以下几类:
源代码复用〔高级语言编写的源代码〕、软件体系结构复用〔已有软件的体系结构〕、应用程序生成器〔对整个软件体系结构、相应的子系统、特定的数据结构和算法〕、领域特定的软件体系结构的复用〔特定领域中存在的公共体系结构与其构件〕。
4.领域:
指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。
领域工程:
通过领域分析(domainanalysis)找出最优复用,对它们进展设计和构造,形成为可复用构件,进而建立大规模的软件构件仓库的过程。
5.横向复用:
是指复用不同应用领域中的软件元素。
纵向复用:
是指在一类具有较多公共性的应用领域之间进展软件构件进展复用。
6.领域分析:
领域分析是在特定应用领域寻找最优复用,以公共对象、类、子集合和框架等形式进展标识、分析和规约。
目标:
是获得领域分析模型。
7.构件应具有的特征:
通用性、可变性、易组装性;基于面向对象技术的复用通用构件。
8.领域构件的设计框架:
标准数据:
标识标准的全局数据结构;标准接口协议:
三个层次〔构件、外、人机接口〕;程序模板:
成形的结构模型作为新程序的体系结构设计的模板
9.几种流行的构件技术:
组件对象模型技术〔COM〕、公共对象请求代理体系结构〔CORBA〕、开放式文档接口。
10.建立可复用构件库目前最常用的有三种分类模式:
枚举分类、呈面分类〔呈面<=8〕、属性-值分类。
11.应用系统工程〔ASE〕:
定义:
在基于构件的软件开发中,通过复用构件系统开发某个特定应用系统的构件工程。
12.ASE过程的根本步骤:
获取需求〔建立用例模型〕、分析〔用用例模型输入来组装和特化分析构件〕、设计应用系统〔用分析模型输入来组装和特化设计构件〕、实现应用系统〔用设计模型输入来组装和特化实现构件〕、测试应用系统〔组装和特化测试构件,测试应用系统〕、应用系统打包。
13.OO方法对软件复用的支持:
OOA模型、OOA与OOD的分工、对象的表示、一般---特殊结构、整体---局部结构、实例连接、类描述模板、用例。
14.复用技术对OO方法的支持:
类库、构件库、构架库、工具、OOA过程。
题目1:
多模块程序的测试有哪些层次?
各层测试主要解决什么问题?
解答:
多模块测试的层次
所处时段
解决的问题
涉与测试方法
成果
单元测试/模块测试
编码阶段
1.对模块代码进展编译,发现并纠正其语法错误;
2.进展静态分析,验证模块结构与其部调用序列是否正确;
3.确定模块的测试策略,并据此设计一组测试用例和必要的测试软件;
4.用选定的测试用例对模块进展测试,直至满足测试终止标准为止;
5.注重执行路径、出错处理路径、局部数据结构、模块的对外接口的测试
6.编制单元测试报告。
黑盒测试——程序外部测试、功能性测试
测试报告
白盒测试——程序部测试、覆盖测试
集成测试
集成测试阶段
1.制订集成测试实施策略
2.确定集成测试的实施步骤,设计测试用例
3.逐一地添加模块,进展测试
模块〔子系统或小系统〕集成测试;训练驱动与桩的设计、组合与集成测试。
已组装软件
高
级
测
试
确认测试
集成测试阶段
1.进一步验证软件的有效性,即验证软件的功能和性能是否与用户的要求一致
已确认软件
系统测试
验收阶段
1.测试是否与硬件协调运行
2.测试是否和原来就有的其它软件协调运行
3.测试是否完成SRS对它的要求
系统的性能检验和软件系统实时运行状况的测试
可运行的系统
软件测试
表7.1“〞的等价分类
输入数据
有效等价类
无效等价类
地区码
1、空
2、3位数字
3、非空,但有非数字字符
4、非空,位数小于3位数字
5、非空,位数多于3位数字
前三位
6、非‘000’且非‘111’的3位数字
7、空
8、非空,但有非数字字符
9、非空,位数小于3位数字
10、非空,位数多于3位数字
后四位
11、任意4位数字
12、空
13、非空,但有非数字字符
14、非空,位数小于4位数字
15、非空,位数多于4位数字
表7.2有效等价类的测试用例
测试数据
期望结果
测试围
地区码
前三位
后四位
NULL
123
4567
输入有效
1、6、11
010
234
5678
输入有效
2、6、11
表7.3无效等价类的测试用例
测试数据
期望结果
测试围
地区码
前三位
后四位
#1*
123
4567
地区码输入无效
3、6、11
01
234
5678
地区码输入无效
4、6、11
0123
258
8888
地区码输入无效
5、6、11
NULL
NULL
8888
前三位输入无效
1、7、11
010
#1*
6666
前三位输入无效
1、8、11
020
45
6688
前三位输入无效
1、9、11
NULL
789
8866
前三位输入无效
1、10、11
NULL
666
NULL
后四位输入无效
2、6、12
010
888
*02#
后四位输入无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 原理 方法 应用 第三 重点
![提示](https://static.bdocx.com/images/bang_tan.gif)