新書推薦:
《
女人的胜利
》
售價:NT$
254.0
《
数据有道:数据分析+图论与网络+微课+Python编程(鸢尾花数学大系:从加减乘除到机器学习)
》
售價:NT$
1214.0
《
500万次倾听:陪伤心的人聊聊
》
售價:NT$
245.0
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:NT$
367.0
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:NT$
398.0
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:NT$
301.0
《
周易
》
售價:NT$
203.0
《
东南亚的传统与发展
》
售價:NT$
306.0
內容簡介:
现有的软件工程教材基本不考虑安全因素,而专业的信息安全教材又因为过于偏安全而很少被非安全专业的学生学习。在当前网络安全问题日益严重的情况下,软件开发如果不考虑安全因素,则开发的软件终注定会出问题。将软件工程与信息安全技术有机地融合,才能开发出安全的软件,这已经成为行业共识。本书从宏观和微观两个角度讲授如何将软件工程与安全技术相结合,目标是让非安全专业的学生也能充分掌握其中涉及的安全技术。本书提供了丰富的案例,力求保证内容的科学性和时代性,并突出软件工程的实践性。
全书共13章,内容包括软件工程概述、软件开发过程模型、可行性研究、软件需求工程、面向对象分析、软件总体设计、软件详细设计、面向对象设计、软件安全设计、软件界面设计、软件实现、软件测试、软件维护。
本书可作为高等院校计算机、网络安全相关专业“软件工程”课程的教材或教学参考书,也可供广大工程技术人员参考使用。本书提供电子课件。
關於作者:
芦效峰,男,2010年博士毕业于北京航空航天大学计算机学院,2007,2008年被国家公派留学英国剑桥大学。一直从事移动自组网、移动互联网、计算机网络、无线传感器网络、信息安全、隐私保护等方面研究,在这几个研究领域积累了大量的经验并取得创新性成果,发表科研论文30多篇,其中SCI论文10多篇。担任SCI期刊《Computer Communications》,《Journal of Network and Computer Applications》,《Communications Letter》的审稿人。
目錄 :
第1章软件工程概述1
1.1软件和软件危机1
1.1.1软件的特点1
1.1.2软件的分类2
1.1.3软件的发展3
1.1.4软件危机3
1.2软件工程5
1.2.1软件工程概述5
1.2.2工程化思想7
1.2.3软件工程基本原理8
1.3软件安全9
1.3.1软件安全的概念9
1.3.2软件安全的威胁10
习题12
第2章软件开发过程模型13
2.1软件生存周期13
2.2瀑布模型15
2.3原型模型16
2.4迭代模型18
2.5增量模型19
2.6螺旋模型20
2.7喷泉模型21
2.8组件集成模型22
2.9敏捷开发模型23
2.9.1什么是敏捷开发?23
2.9.2敏捷开发流程24
2.10微软公司开发过程26
2.11软件安全开发生命周期27
2.11.1什么是安全开发?27
2.11.2安全开发生命周期28
习题29
第3章可行性研究30
3.1问题定义30
3.2可行性研究的任务30
3.3可行性研究的步骤32
3.4系统流程图34
3.5数据流建模35
3.5.1数据流图35
3.5.2DFD画法与命名37
3.5.3分层数据流图37
3.5.4检查数据流图39
3.6软件项目进度计划40
3.6.1进度管理与工作分解40
3.6.2进度安排与进度图41
3.6.3软件规模估计43
3.7成本/效益分析44
3.7.1成本估算44
3.7.2效益分析46
习题46
第4章软件需求工程47
4.1软件需求47
4.1.1什么是软件需求?47
4.1.2软件错误与软件需求48
4.1.3需求的类型49
4.1.4需求的层次51
4.2需求工程52
4.2.1需求工程概述52
4.2.2需求工程人员54
4.2.3影响需求质量的因素54
4.3需求获取56
4.3.1需求获取的困难56
4.3.2需求获取的方法57
4.3.3需求调研的问题59
4.3.4需求调研的步骤和计划61
4.3.5创新性需求61
4.4需求分析与建模62
4.4.1需求分析的含义62
4.4.2分析方法与过程64
4.4.3功能定位与优先级65
4.4.4需求建模方法67
4.4.5数据建模67
4.4.6行为建模68
4.4.7数据字典69
4.4.8案例70
4.5软件安全需求73
4.5.1安全需求73
4.5.2安全需求分析方法75
4.6需求文档76
4.6.1用户需求说明书76
4.6.2软件需求规格说明书76
4.7需求验证78
4.7.1需求验证的含义78
4.7.2需求验证的内容79
4.8需求管理80
4.8.1需求基线80
4.8.2需求变更80
4.8.3需求跟踪82
习题84
第5章面向对象分析85
5.1面向对象开发85
5.1.1结构化开发方法的不足85
5.1.2面向对象开发方法85
5.1.3面向对象常用概念86
5.2统一建模语言87
5.2.1面向对象分析方法87
5.2.2UML简介89
5.3用例建模91
5.3.1用例与执行者/参与者91
5.3.2用例关系93
5.3.3用例建模95
5.4行为模型:活动图99
5.4.1活动图概述99
5.4.2活动图元素99
5.4.3创建活动图102
5.5行为模型:状态图104
5.5.1状态图概述104
5.5.2状态图元素104
习题106
第6章软件总体设计107
6.1软件设计107
6.1.1软件设计概述107
6.1.2总体设计的步骤108
6.2软件模块化设计109
6.2.1软件模块109
6.2.2抽象111
6.2.3逐步求精111
6.2.4信息隐蔽112
6.2.5模块独立性112
6.3软件结构与优化115
6.3.1软件结构115
6.3.2模块设计优化117
6.4总体设计工具119
6.4.1HIPO图119
6.4.2系统结构图120
6.5结构化总体设计121
6.5.1数据流类型121
6.5.2结构化设计方法122
6.5.3变换流映射123
6.5.4事务流映射125
6.5.5混合结构分析126
6.6软件体系结构127
6.6.1软件体系结构概述127
6.6.2集中式体系结构128
6.6.3基于网络的体系结构129
习题131
第7章软件详细设计132
7.1详细设计132
7.2结构化程序设计132
7.3详细设计工具133
7.3.1程序流程图134
7.3.2NS图134
7.3.3PAD图136
7.3.4判定表137
7.3.5判定树138
7.3.6PDL139
习题141
第8章面向对象设计142
8.1面向对象设计与UML142
8.2类图和对象图143
8.2.1类与类图143
8.2.2类之间的关系144
8.2.3对象图145
8.3顺序图和协作图146
8.3.1顺序图146
8.3.2分支和从属148
8.3.3协作图150
8.4实现图151
习题153
第9章软件安全设计154
9.1安全设计原则154
9.2威胁建模156
习题160
第10章软件界面设计161
10.1软件界面设计概述161
10.1.1人机交互基本概念161
10.1.2用户眼中的好软件161
10.1.3好的软件界面应具备的特性162
10.1.4谁来设计软件的交互界面162
10.2以用户为中心的交互设计163
10.2.1软件交互设计中人的因素163
10.2.2以用户为中心的软件交互界面设计163
10.3软件交互设计要求164
10.4图形界面设计一般原则167
10.4.1合理的版式布局167
10.4.2色彩的设计原则167
10.4.3按钮的设计168
10.4.4菜单界面的设计168
10.4.5输入界面的设计169
10.4.6合理使用图形隐喻169
10.4.7联机帮助的设计原则169
10.5手机应用界面设计170
10.5.1手机应用界面设计新问题170
10.5.2手机应用界面设计方法171
10.5.3手机应用界面导航172
习题174
第11章软件实现176
11.1软件实现概述176
11.1.1软件编程176
11.1.2编程语言的发展177
11.1.3编程语言的选择179
11.1.4软件复用179
11.2编程规范和风格180
11.2.1编程规范和风格的重要性180
11.2.2使用标准的控制结构180
11.2.3源程序文档化:标识符的命名180
11.2.4源程序文档化:程序的注释181
11.2.5源程序文档化:程序的视觉组织182
11.2.6数据说明183
11.2.7语句结构184
11.2.8输入和输出186
11.3程序效率186
11.3.1算法对效率的影响186
11.3.2影响存储器效率的因素187
11.3.3影响输入/输出的因素187
11.4安全编码187
习题189
第12章软件测试191
12.1软件测试概述191
12.1.1软件测试的目的191
12.1.2测试文档192
12.1.3软件测试原则192
12.1.4软件测试类型194
12.2白盒测试技术195
12.2.1语句覆盖195
12.2.2判定覆盖195
12.2.3条件覆盖196
12.2.4判定/条件覆盖196
12.2.5条件组合覆盖196
12.2.6路径覆盖197
12.3黑盒测试技术197
12.3.1等价类划分197
12.3.2边界值分析198
12.3.3错误推测199
12.4灰盒测试199
12.5软件测试的步骤200
12.5.1软件测试V模型200
12.5.2单元测试201
12.5.3集成测试201
12.5.4确认测试202
12.5.5系统测试203
12.5.6验收测试204
12.6软件测试周期204
12.6.1测试周期204
12.6.2测试停止205
12.7安全测试206
12.7.1软件安全测试206
12.7.2模糊测试207
12.7.3渗透测试207
习题207
第13章软件维护209
13.1软件维护概述209
13.1.1软件维护的重要性209
13.1.2软件维护的特点210
13.1.3软件维护的副作用210
13.2软件维护的类型211
13.3软件维护过程212
13.3.1软件维护的基本流程212
13.3.2软件维护的管理流程212
13.4软件可维护性213
13.4.1软件可维护性概述213
13.4.2提高软件的可维护性215
习题216
参考文献217