软件工程复习资料张海藩.docx
- 文档编号:10059356
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:37
- 大小:66.95KB
软件工程复习资料张海藩.docx
《软件工程复习资料张海藩.docx》由会员分享,可在线阅读,更多相关《软件工程复习资料张海藩.docx(37页珍藏版)》请在冰豆网上搜索。
软件工程复习资料张海藩
软件工程复习资料--张海藩
软件工程复习提纲
第一章
1.软件危机包含两方面的问题:
1)如何开发软件,以满足对软件日益增长的需求
2)如何维护数量不断膨胀的已有软件。
2.软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。
软件定义划分为:
问题定义、可行性研究、需求分析
软件开发划分为:
总体设计、详细设计、编码和单元测试、综合测试。
这8个阶段每个阶段的基本任务是什么?
3.软件过程的各种模型:
瀑布模型(文档驱动模型),快速原型模型,增量模型,螺旋模型(风险驱动的模型),喷泉模型(适用于面向对象软件开发),Rational统一过程,敏捷过程和极限编程,微软过程。
各模型的基本特点(描述出过程的特点能识别出是哪种过程模型)
4.软件工程的基本原理:
1)用分阶段的生命周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应该少而精
7)承认不断改进软件工程实践的必要性。
第二章
5.可行性研究,应该至少从三个方面研究每种解法的可行性:
技术可行性、经济可行性、操作可行性。
6.可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
7.可行性研究的过程包括哪些主要步骤?
1)复查系统规模和目标
2)研究目前正在使用的系统
3)导出新系统的高层逻辑模型
4)进一步定义问题
5)导出和评价供选择的解法
6)推荐行动方针
7)草拟开发计划
8.数据流图是描绘系统逻辑功能的图形表示,掌握数据流图的基本符号和附加符号,会用数据流图描绘系统逻辑功能。
9.数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
定义数据的方法。
10.数据流图和数据字典共同构成了系统的逻辑模型。
11.货币时间价值的公式:
F=P(1+i)n
第三章
12.与用户沟通获取需求的方法有哪些?
访谈,面向数据流自顶向下求精,简易的应用规格说明技术,快速建立软件原型
13.软件需求规格说明书是需求分析阶段得出的最主要文档。
14.会画实体-联系图(E-R图):
实体、属性、联系
15.状态转换图,会看,明白其含义
16.层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
会画层次方框图。
17.Warnier图也用树形结构描绘信息,但是比层次方框图提供更丰富的描绘手段,会看Warnier图,明白其含义。
18.IPO图是输入、处理、输出图的简称,它能够方便的描绘输入数据、对数据的处理和输出数据之间的关系。
改进的IPO图。
第五章
19.软件设计过程中应该遵循的基本原理:
模块化、抽象、逐步求精、信息隐藏与局部化、模块独立。
1)模块化:
把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,由这些模块集成起来构成一个整体,可完成指定的功能,满足用户的需求。
2)抽象:
抽出事物的本质特征而暂时不考虑它们的细节。
3)逐步求精:
为了解决主要问题而推迟对问题细节的考虑,是一种把一个时期内要解决的问题按优先级排序的技术。
4)信息隐藏和局部化:
信息隐藏指的是一个模块包含的信息对不需要这些信息的模块来说是不能访问的。
局部化指把关系密切的软件元素物理地放得彼此靠近。
5)模块独立:
开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,可做到模块独立。
可用内聚和耦合来衡量模块的独立程度。
20.模块独立程度可以用内聚和耦合两个定性标准度量。
耦合衡量不同模块彼此间互相依赖的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
21.有哪些种类的耦合?
各有什么特点?
耦合种类:
数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合。
有关使用耦合的设计原则:
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
22.内聚分为高内聚、中内聚、低内聚。
各有哪几种?
各有什么特点?
偶然内聚、逻辑内聚、时间内聚是低内聚
过程内聚、通信内聚是中内聚
顺序内聚、功能内聚是高内聚
23.总体设计中用于改进软件设计提高软件质量的启发性规则:
1)改进软件结构提高模块独立性
2)模块规模应该适中
3)深度、宽度、扇出和扇入都应适当
4)模块的作用域应该在控制域之内
5)力争降低模块接口的复杂程度
6)设计单入口单出口的模块
7)模块功能应该可以预测
24.上题中深度、宽度、扇入、扇出的含义
25.层次图用来描绘软件的层次结构,层次图中一个矩形框代表一个模块,方框间的连线表示调用关系。
会画层次图。
26.HIPO图是“层次图加输入/处理/输出图”的英文缩写,会画HIPO图。
27.结构图是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头表示模块的调用关系。
会画结构图。
第六章
28.结构化程序设计三种基本控制结构是:
顺序、选择、循环
29.掌握过程设计的几种工具:
程序流程图、盒图(N-S图)、PAD图、判定表、判定树、过程设计语言(伪码,这个要能看懂)。
30.会画流图,能够用三种方法计算程序环形复杂度。
第七章
31.选择程序设计语言时应该尽量选用理想的高级语言,但是实际选取语言时不能仅仅使用理论上的标准,还必须同时考虑实用方面的各种限制。
32.软件测试是为了发现程序中的错误而执行程序的过程。
G.Myers给出了一些关于测试的规则,也可以看做是测试的目标或定义:
1)测试是为了发现程序中的错误而执行程序的过程。
2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
3)成功的测试是发现了至今为止尚未发现的错误的测试。
33.大型软件系统的测试过程基本上由下述几个步骤组成:
模块测试(单元测试),子系统测试、系统测试(系统测试与子系统测试一起称为集成测试)、验收测试、平行运行。
各步骤的含义。
34.软件测试准则:
1)所有测试都应该追溯到用户需求
2)应该远在测试开始之前就制定出测试计划
3)把Pareto原理应用到软件测试中(80%的错误出现在20%的模块中,因此应该重点测试它们)。
4)应该从小规模测试开始,并逐步进行大规模测试。
5)穷举测试是不可能的,因此必须精心设计测试方案,才有可能充分覆盖程序逻辑并使程序达到所要求的可靠性。
35.测试方法分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。
36.集成测试可以有非渐增式测试方法和渐增式测试方法,渐增式测试分为自顶向下和自底向上两种集成策略。
它们各表示什么含义。
37.逻辑覆盖是对一系列测试过程的总称,主要的覆盖标准有:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。
每种覆盖是什么含义。
会用前5种覆盖标准设计测试用例。
38.会用基本路径测试技术设计测试用例
39.会写条件测试中的条件约束集。
40.理解结构化程序中的简单循环、嵌套循环和串接循环应该如何进行循环测试。
41.理解等价类划分和边界值分析两种黑盒测试技术。
42.理解调试的定义及过程。
调试是在测试发现错误之后排除错误的过程。
43.理解估算程序中错误总数的两种方法:
植入错误法和分别测试法。
第八章
44.软件维护主要包括改正性维护、适应性维护、完善性维护、预防性维护
45.软件维护过程包括哪些活动?
1)建立维护组织
2)确定报告和评价过程(维护报告)
3)明确维护的事件流(规定一个标准化的事件序列)
4)保存维护记录
5)评价维护活动
46.决定软件可维护性的因素:
可理解性、可测试性、可修改性、可移植性、可重用性。
47.软件系统的文档分为用户文档和系统文档两类。
用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。
第九章
48.面向对象方法学的要点:
对象、类、继承、通过传递消息互相联系。
具体解释如下:
1)认为客观世界是由各种对象组成的,软件中任何元素都是对象,复杂对象由简单对象组合而成。
2)把所有对象都划分成对象类(class),每个对象类都定义了一组数据和方法。
3)按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统。
下层可继承上层的特性。
4)对象彼此之间仅能通过传递消息互相联系。
对象有封装性,私有信息不能被外界直接访问。
49.面向对象方法包括的基本概念:
对象、类、实例、消息、方法、属性、封装、继承、多态性、重载。
以及各概念的含义。
50.用面向对象方法开发软件,通常需要建立三种形式的模型:
描述系统数据结构的对象模型;描述系统控制结构的动态模型和描述系统功能的功能模型。
51.类图是建立对象模型的工具。
类图的基本符号,尤其是定义类图的符号。
类图中表示关系的符号:
关联(包括限定关联)、聚集(包括共享聚集和组合聚集)、泛化(包括普通泛化和受限泛化,受限泛化的约束有多重、不相交、完全、不完全)、依赖、细化。
能够用类图建立对象模型。
52.用例图的作用和包含的模型元素:
用例图是进行需求分析和建立功能模型的强有力工具,用用例图建立起来的系统模型称为用例模型。
使用用例模型代替传统的功能说明往往能够更好的获取用户需求,它回答的问题是:
“系统应该为每个(或每类)用户做什么”。
用例图包含的模型元素有:
系统、行为者、用例、用例之间的关系。
第十三章
53.估算软件规模的两种常用的度量标准为:
代码行、功能点。
54.制定进度计划的工具有:
Gantt图、工程网络。
理解这两种工具,能看懂,理解其中的一些关键概念,例如最早时刻、最迟时刻。
55.关键路径:
工程网络中最早时刻和最迟时刻相同的事件定义了关键路径。
关键路径上的事件(关键事件)必须准时发生,组成关键路径的作业(关键作业)的实际持续时间不能超过估计的持续时间,否则工程就不能准时结束。
56.什么是机动时间?
作业的机动时间=作业结束事件的最迟时间-作业开始事件的最早时间-作业持续时间。
57.民主制程序员组、主程序员组和现代程序员组的特点。
58.能力成熟度模型的5个等级为:
初始级、可重复级、已定义级、已管理级、优化级。
各级的特点是什么?
注意考试要求:
1.答应用题时,一定不能只写最后结果,要把产生这个结果的原因写清楚。
比如,如果回答一个要求你用逻辑覆盖法中的分支覆盖写测试用例的题目,一定不能只把测试用例写出来,还要写出该测试用例是覆盖哪个分支的。
因为这样的题目正确答案往往不止一个,如果不写清楚产生结果的原因的话,考试不给分,切记!
2.题目都写在答题纸上,标清题号,填空题注意填空的先后顺序。
软件工程概论
1、软件危机定义:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2、软件危机的两个主要问题:
如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、软件危机的典型表现:
(1)对软件开发成本和进度的估计常常很不准确。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
4、根据软件危机的典型表现,分析软件危机案例:
传统工业中知名的生产方式可算是“手工作坊式”生产方式。
过去的一段时间里,甚至到现在,中国软件业中还有一部分公司的开发方式与之类似。
公正地说,以此方式还是成就了好多成功的应用开发项目,甚至可以说此法支撑起了软件开发的初期事业。
但是,在我们的“作坊”里还有太多的项目失败,例如开发周期的不可控制、项目结果为用户所不认可、项目最终的严重亏损,这种失败的惨痛出乎我们的意料,以至于我们无所适从。
再加上技术人员、资金严重匮乏的困扰,软件开发管理举步维艰。
你认为“软件就是程序”这一个观点正确吗?
如果不正确,请批驳之。
1.请从以下几个方面结合自己的经验实例加以论述。
软件就是程序的观点是不正确的,因为软件=程序+文档+数据。
(1)文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用。
(2)在软件开发的每一个阶段都应有相应的文档。
它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介。
(3)文档是软件在不同阶段的表现形式。
(4)程序与文档必须一致,文档才有价值。
(5)文档质量直接决定软件质量的高低。
(6)文档也是软件测试和维护的依据。
在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情。
(7)文档是软件可重用的依据。
5、软件工程定义:
软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。
6、软件工程的基本原理,案例分析(严格管理,阶段评审、审查和brooks原则)
某公司开发一个企业信息化项目,随着项目的进展,该项目经理发现项目进度没有按照计划在进展,于是开始计划招聘相关人员,但是由于特殊原因,没有招到理想的人员,没有办法只能降低要求招聘,新员工到来后,项目经理发现项目进展反而更慢,该经理百思不得其解。
请用软件工程基本原理分析问题。
软件开发不同于传统的机械制造,人多不见得力量大。
如果给落后于计划的项目增加新人,可能会更加延误项目。
因为新人会产生很多新的错误,使项目混乱,并且原有的开发人员向新人解释工作和交流思想都要花费时间,使实际的开发时间更少,所以制定恰如其分的项目计划是很重要的。
7、软件工程方法学的三要素:
方法、工具和过程。
8、软件生命周期(概念、三时期,八阶段)
软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
1问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8软件维护
9、有人说:
软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
对否?
请解释你的回答。
对,
10、软件过程,案例分析:
中华信息系统开发公司的软件产品以开发实验型的新软件为主。
用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。
若你作为一名管理员刚加入该公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:
副总裁不喜欢报告长度超过300字。
快速原型:
所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌
瀑布模型:
特点:
阶段的顺序性和依赖性(规范化)
推迟实现的观点(系统化)
质量保证(阶段评审)
存在问题:
不适合需求模糊的系统(需求的迷糊性和不确定性),适用于操作系统、编译系统、数据库管理系统等系统软件的开发
11、试论软件工程化思想在软件开发过程中的重要性。
论述要点:
在软件工程思想出现之前,人们通常把软件等同于程序,认为软件开发就是程序设计。
致使计算机软件的开发和维护出现一系列的问题,软件开发常常失败,从而导致软件危机的出现。
例如:
(1)对软件开发成本和进度的估计常常不准确;
(2)用户对“已完成”的软件常常不满意;(3)软件产品的质量往往靠不住;(4)软件的可维护性也很差;(5)软件通常没有文档资料;(6)软件成本在计算机系统的总成本中的比例逐年上升。
解决软件危机问题的过程中,便出现了软件工程化思想,人们逐渐地把软件工程化思想应用于软件开发过程中,使得软件开发的成本相对下降,并能得到有效控制,软件的开发进度可以得到预测,所开发的软件的质量稳步提高。
人们逐步认识到,软件不仅仅是程序,而是程序、文档和数据的一个集合体,文档在软件开发的过程中起着相当重要的作用。
人们按照软件工程化的思想把软件开发分为不同的阶段,每一个阶段都完成确定的任务,对每个阶段所完成的工作都可以进行评审,使得软件开发的可管理性可大大增强,。
对任何一个产品来说,质量都是第一位的,软件工程化思想的目的就是开发出高质量的软件系统。
而事实证明,只有在软件开发过程中运用软件工程化思想才能开发出高质量的软件系统;否则只能导致软件开发的失败。
可行性分析
1、可行性研究的目的:
在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决。
2、可行性研究实质:
技术可行性、经济可行性、操作可行性
4、如何做可行性研究(结合案例分析)
5、系统流程图的定义和作用
可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁。
系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。
系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程。
在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型。
6、数据流程图的定义和作用:
数据流程图有两个特征:
抽象性和概括性。
抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况。
λ
概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体λ
7、数据流程图的组成元素
数据流图可以用来抽象地表示系统或软件。
它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
8、数据流程图的组成:
外部实体(外部实体是指系统之外的人或单位,它们和本系统有信息传递关系)数据流,处理、数据存储。
如何绘制数据流程图
(1)识别系统的输入和输出,画出顶层图
(2)画系统内部的数据流、加工与文件,画出一级细化图
(3)加工的进一步分解,画出二级细化图
(4)其它注意事项
8、数据流程图的注意点
1、每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的。
(数据守恒)
2、每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了。
3、数据流只能在处理与处理、数据存储或者外部实体之间流动。
、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的。
4、一个处理可以细分成多个子处理,分成若干个层次(均匀分解)
5、良好命名
9、数据字典
1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用。
2.数据字典的内容包括:
数据项、数据结构、数据流、数据存贮、处理逻辑和外部实体。
10、可行性分析的结果
需求分析
1、为什么要做需求分析
可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析。
2、需求分析的任务
需求分析的主要任务不是确定系统如何完成它的具体工作,而是确定系统必须完成哪些工作,在用户的参与下提出目标系统的完整、准确、清晰、具体的实际要求,软件应完成的具体功能和性能,确定软件设计受到的限制及软件同其它系统的接口细节,描述软件用到的数据形式,逐步细化到详细定义,并为软件验收和质量评价提供依据
3、如何做需求分析
(1)确定被开发系统的综合要求:
系统分析员与用户共同讨论,澄清模糊要求,删除做不到的要求,改正错误的要求,确定具体的功能要求和性能要求。
如:
精确度要求,运行要求,软硬件限定条件要求,出错率限定要求,文件使用权限要求与读写保护要求,资源使用要求,运行维护成本消耗要求等;
(2)分析系统信息,抽象出系统的数据要求:
通过系统的调查分析,由系统的信息流归纳、汇集,抽象出系统的数据模型(ER图),包括数据的组成元素、数据间的逻辑关系、数据的输入、输出、存储的形式及数据结构关系等;
(3)由描述的系统问题结构导出系统的目标逻辑模型:
利用软件需求工具和数据流分析方法导出系统的目标逻辑模型(数据流程图)。
如:
利用结构化分析工具、数据流程图进行描述和表达;功能模型和行为模型
(4)根据系统实际需求审定和修正软件项目的开发计划:
一般可由用户、开发方、专家组成的小组对项目预算、开发成本估计、计划安排、进度安排、人员和资源安排进行审定和修正,看其是否一致,是否符合软件的实际认定范围,确定出切实可行的开发计划;
(5)审定系统需求分析的正确性:
利用原型、需求分析验证工具、或人工的方法进行审定;
(6)提交软件需求规格说明书,作为系统的开发和验收的依据。
4、需求分析的难点
(1)问题空间理解
(2)人与人之间的通信
(3)需求的不断变化
5、ER图:
可以把实体-联系图简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。
ER图中包含了实体(即数据对象)、关系和属性等3种基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。
6、状态转换图:
指明了作为外部事件结果的系统行为。
为此,状态转换图描绘了系统的各种行为模式(称为“状态”)和在不同状态间转换的方式。
状态转换图是行为建模的基础。
7、软件需求的验证:
需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求。
为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。
一般说来,应该从下述4个方面进行验证:
(1)一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。
对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性。
(4)有效性必须证明需求是正确有效的,确实能解决用户面对的问题。
8、利用DFD图进行需求分析:
在结构化分析方法中,用以表达系统内数据的运动情况的工具有(A)。
供选择的答案:
A.数据流图B.数据词典C.结构化英语D.判定表与判定树
在结构化分析方法中用状态―迁移图表达系统或对象的行为。
在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有(A)个。
供选择的答案A.1B.2C.多个D.不确定
在结构化分析方法中用实体―关系图表达系统中的对象及其关系。
在实体―关系图中,表达对象的实例之间的关联有三种类型:
一对一联系、(B)联系、多对多联系。
供选择的答案:
A.多对一B.一对多
分析:
使用实体―关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习资料 张海藩