内容推荐 现有的软件工程教材基本不考虑安全因素,而专业的信息安全教材又因为过于偏安全而很少被非安全专业的学生学习。在当前网络安全问题日益严重的情况下,软件开发如果不考虑安全因素,则开发的软件最终注定会出问题。将软件工程与信息安全技术有机地融合,才能开发出安全的软件,这已经成为行业共识。本书从宏观和微观两个角度讲授如何将软件工程与安全技术相结合,目标是让非安全专业的学生也能充分掌握其中涉及的安全技术。本书提供了丰富的案例,力求保证内容的科学性和时代性,并突出软件工程的实践性。 全书共13章,内容包括软件工程概述、软件开发过程模型、可行性研究、软件需求工程、面向对象分析、软件总体设计、软件详细设计、面向对象设计、软件安全设计、软件界面设计、软件实现、软件测试、软件维护。 本书可作为高等院校计算机、网络安全相关专业“软件工程”课程的教材或教学参考书,也可供广大工程技术人员参考使用。本书提供电子课件。 目录 第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
|