计算机类专业教育 > 软件工程类

软件工程

书号:9787113123918 套系名称:"高等学校计算机科学与技术专业核心课程系列规划教

作者:陈明 出版日期:2011-04-02

定价:35.00 页码 / 开本:356 /16

策划编辑:严晓舟 杨勇 责任编辑:秦绪好

适用专业:无 适用层次:高等院校

最新印刷时间:

资源下载
教学课件(暂无) 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  •         本书是计算机专业核心课程软件工程的教材,主要内容包括:软件工程概述、软件项目分析、需求分析、概要设计、详细设计、面向对象的分析与设计方法、用户界面设计、编码、软件质量与质量保证、项目计划与管理、软件维护、软件开发工具与环境概述、软件建模等。

            本教材的主要特点体现在其内容系统、语言精练、概念准确。本书适合作为高等学校软件工程课程的教材,也可作为从事软件工程的人员的参考书。

  •         计算机软件是逻辑产品,有着与硬件产品完全不同的特征。而近年来计算机软件的快速发展,使它已成为计算机技术乃至社会经济发展的新的驱动力。在这个发展过程中,软件工程的产生与发展对计算机软件的发展与应用起到了至关重要的作用。

            提到计算机软件,不能不涉及软件危机。软件危机是指软件开发和维护过程中遇到的一系列严重问题。为了克服与摆脱软件危机,诞生了软件工程学。从1969年提出软件工程概念以来,历经40多年飞速的发展,软件工程逐渐成熟,现已成为一门重要的学科。软件工程的目标是以解决软件生产的质量与效率为宗旨,研究一套科学的工程方法以及与此相应的方便的软件工具系统,用来指导和帮助软件的开发与研究工作,在软件的开发与研究中起到重要的技术保障与促进作用。

            软件工程是研究开发大型软件系统的学科,它不仅覆盖了构建软件系统的相关技术层面的问题,还包括指导开发团队、安排进度及预算等管理层面的问题。软件工程不仅仅包括编写程序代码所涉及的技术,还包括所有对软件开发能够造成影响的问题。不存在任何单一开发技术或管理技术能够解决软件工程所面临的所有问题。因而,软件工程是包括一系列概念、理论、模式、语言、方法及工具的综合性学科。软件工程技术可分为产品实现技术及开发管理技术,产品实现技术主要涉及软件系统开发的相关问题,为实现软件产品提供支持;开发管理技术通常不针对某个软件开发项目,而是为管理和改进软件,组织所有的业务活动提供技术支持。

            软件开发工具是支持软件生存期中某一阶段的任务实现而使用的计算机程序。软件开发环境是一组相关的软件工具的集合,将它们集成在一起支持某种软件开发方法或某种软件开发模型。软件开发工具与环境是软件工程的重要组成部分,对于提高软件生产率,改进软件质量有越来越大的作用。

            软件工程不是刻板的学科,需要丰富的想象力。软件工程是一门科学,它是有规律和步骤可循的。软件工程又是一个实践性极强的实用学科,在学习中,不仅要能掌握其理论原则与方法,更重要的是能学会熟练的应用。计算机科学与技术专业和相近专业的毕业生,有相当部分的同学要从事计算机软件开发和应用工作,通过软件工程的理论学习与实践,可以培养学生以软件工程的方法开发软件的习惯和素质,并在软件开发的工作中得以贯彻。

            学习软件工程应注重计算思维能力、算法设计与分析能力、程序设计和实现能力、系统能力(系统的认知、设计、开发、应用)的培养。其中,系统能力尤为重要,它包含两个层面上的含义:一层是指对一定规模的系统的全局掌控能力;另一层面是指能够在构建系统时,系统地考虑问题的求解。

            本书是“软件工程”课程的教材,在编写过程中,以教育部高等学校计算机科学与技术教学指导委员会编制的《高等学校计算机科学与技术专业核心课程教学实施方案》为指导,构建了全书内容。全书分为13章,分别对软件工程概述、软件项目分析、软件需求工程、概要设计、详细设计、面向对象设计、用户界面设计、编码、软件质量与软件测试、软件支付与维护、项目计划与管理、软件建模及其工具、软件开发工具与环境等进行了讲解,并在附录中给出了常用的标准文档。

            因在内容选择上以先进性和系统性为重,所以各章呈模块化展示,我们认为这样更有助于学生快速掌握软件工程原则和方法。

            由于作者水平有限,书中不足之处在所难免,敬请批评指正。
     
            2011年1月
     

  • 第1章  软件工程概述 1
    1.1  软件 1
    1.1.1  软件的发展 2
    1.1.2  软件的定义 3
    1.1.3  软件的特点 3
    1.1.4  软件的分类 5
    1.2  软件工程的内容与方法 7
    1.2.1  软件危机与软件工程的定义 7
    1.2.2  软件工程的基本内容与目标 9
    1.2.3  软件的基本开发方法 10
    1.2.4  软件工程的基本原则 10
    1.2.5  软件工具与环境 11
    1.3  软件生存周期与软件开发模型 11
    1.3.1  软件生存周期 11
    1.3.2  软件开发模型 13
    1.4  软件工程学的知识体系 21
    小结 22
    习题 22
    第2章  软件项目分析 23
    2.1  可行性研究的任务 23
    2.2  可行性研究的步骤 24
    2.3  可行性研究的要素 26
    2.3.1  经济可行性 26
    2.3.2  技术可行性 26
    2.3.3  社会环境 27
    2.4  系统流程图 27
    2.5  成本-效益分析 29
    2.5.1  成本估计 29
    2.5.2  费用估算 30
    2.5.3  度量效益的方法 31
    小结 32
    习题 32

    第3章  软件需求工程 33
    3.1  概述 34
    3.1.1  软件需求分类 35
    3.1.2  需求规格说明 36
    3.1.3  需求工程概念 37
    3.1.4  需求工程过程 37
    3.2  需求获取方法 38
    3.3  需求分析的任务与原则 40
    3.3.1  需求分析的任务 40
    3.3.2  需求分析的原则 41
    3.4  需求建模方法 41
    3.4.1  结构化需求建模方法 42
    3.4.2  数据流图 44
    3.4.3  数据字典 51
    3.5  需求分析图形工具 55
    3.5.1  层次方框图 56
    3.5.2  Warnier图 56
    3.5.3  IPO图 57
    3.6  需求验证 57
    3.6.1  目的与任务 57
    3.6.2  内容与方法 58
    3.6.3  需求评审 59
    3.7  需求管理 60
    3.7.1  需求管理的目标 60
    3.7.2  需求管理的原则 60
    3.7.3  需求开发的管理 61
    3.7.4  需求管理活动 62
    小结 64
    习题 64
    第4章  概要设计 65
    4.1  软件体系结构 66
    4.1.1  概述 66
    4.1.2  系统构成 68
    4.1.3  控制模型 71
    4.1.4  模块化分解 74
    4.1.5  领域相关的体系结构 76
    4.2  概要设计任务与步骤 78
    4.2.1  概要设计任务 78
    4.2.2  概要设计过程 79
    4.3  软件设计的基本概念 80
    4.3.1  模块化与模块独立性 80
    4.3.2  抽象 85
    4.3.3  结构设计原则 87
    4.3.4  软件复用 90
    4.3.5  设计模式 93
    4.4  面向数据流的设计方法 95
    4.4.1  基本概念 95
    4.4.2  系统结构图的组成 96
    4.4.3  变换分析 98
    4.4.4  事务分析 102
    4.4.5  设计优化 103
    4.5  面向数据结构的分析设计方法 104
    4.5.1  Jackson系统开发方法 104
    4.5.2  Warnier方法 113
    4.6  概要设计文档评审 114
    小结 115
    习题 115
    第5章  详细设计 116
    5.1  详细设计的任务与原则 117
    5.1.1  详细设计的任务 117
    5.1.2  详细设计的原则 117
    5.2  详细设计工具 118
    5.2.1  程序流程图 118
    5.2.2  N-S图 119
    5.2.3  PAD图 121
    5.2.4  PDL 122
    5.2.5  HIPO图 124
    5.2.6  详细设计工具的选择 125
    5.3  详细设计规格说明与复审 126
    5.3.1  详细设计说明书 126
    5.3.2  设计复审 127
    小结 127
    习题 128
    第6章  面向对象设计 129
    6.1  面向对象方法 130
    6.1.1  面向对象方法概述 130
    6.1.2  面向对象软件工程 131
    6.1.3  面向对象的基本概念和特征 135
    6.2  面向对象分析 142
    6.2.1  面向对象分析过程与原则 142
    6.2.2  确定对象与类 146
    6.2.3  确定属性 149
    6.2.4  定义服务 149
    6.2.5  对象间通信 153
    6.3  面向对象设计的概念和方法 158
    6.3.1  面向对象设计的概念 159
    6.3.2  面向对象设计的方法 160
    小结 163
    习题 163
    第7章  用户界面设计 164
    7.1  用户界面的主要特征 165
    7.1.1  用户界面的质量特征 165
    7.1.2  用户界面的图形特征 165
    7.1.3  用户界面的优点 166
    7.2  设计原则 166
    7.3  用户交互 168
    7.3.1  用户交互类型 168
    7.3.2  交互类型的比较 168
    7.4  信息表示 169
    7.4.1  用户界面的信息表示方法 169
    7.4.2  用户界面的信息表示形式 170
    7.5  帮助系统 171
    7.6  界面设计 173
    7.6.1  数据输入界面设计 173
    7.6.2  数据显示界面设计 174
    7.6.3  控制界面设计 174
    7.7  界面设计评价 174
    7.7.1  界面设计评价指标 174
    7.7.2  界面设计评价方法 175
    小结 176
    习题 176
    第8章  编码 177
    8.1  程序设计语言 178
    8.1.1  程序设计语言的分类 178
    8.1.2  程序设计语言的特点 180
    8.1.3  程序设计语言的选择 182
    8.2  编码风格 184
    8.2.1  源程序文档化 184
    8.2.2  数据说明 186
    8.2.3  语句结构 186
    8.2.4  输入/输出 189
    8.3  程序效率 189
    8.3.1  程序效率准则 190
    8.3.2  算法对效率的影响 190
    8.3.3  影响存储器效率的因素 190
    8.3.4  影响输入/输出效率的因素 190
    8.4  编程安全 191
    8.4.1  冗余程序设计 191
    8.4.2  防错程序设计 192
    8.5  面向对象程序设计步骤 193
    8.6  编码优化 193
    8.6.1  优化的内容与原则 193
    8.6.2  程序结构优化 194
    8.6.3  程序代码优化 195
    小结 195
    习题 195
    第9章  软件质量与软件测试 196
    9.1  软件质量 197
    9.1.1  软件质量定义 197
    9.1.2  影响软件质量的因素 197
    9.1.3  软件质量保证策略 198
    9.1.4  软件质量保证活动 199
    9.1.5  软件质量保证标准 200
    9.2  软件评审 201
    9.2.1  设计质量评审内容 202
    9.2.2  程序质量评审内容 206
    9.3  结构化程序测试 208
    9.3.1  软件测试目的 209
    9.3.2  软件测试原则 209
    9.3.3  软件测试对象 210
    9.3.4  软件测试过程 210
    9.3.5  软件测试技术 211
    9.3.6  设计测试方案 212
    9.3.7  软件测试步骤 214
    9.3.8  软件纠错技术 219
    9.4  面向对象软件测试 220
    9.4.1  面向对象分析和设计模型测试 220
    9.4.2  面向对象测试策略 222
    9.4.3  面向对象软件测试集设计 223
    9.5  测试计划与测试分析报告 225
    小结 227
    习题 227
    第10章  软件交付与维护 228
    10.1  软件发布与部署 228
    10.1.1  软件产品发布 229
    10.1.2  软件产品实施 229
    10.2  软件演化的特征 230
    10.2.1  大型程序演化的动态特征 230
    10.2.2  软件体系结构的进化 231
    10.3  软件维护 231
    10.3.1  软件维护分类与特点 232
    10.3.2  软件维护步骤 234
    10.3.3  软件的可维护性 237
    10.3.4  软件维护的副作用 238
    10.4  逆向工程和再生工程 239
    小结 240
    习题 240
    第11章  项目计划与管理 242
    11.1  软件项目特点及软件管理功能 243
    11.1.1  软件项目的特点 243
    11.1.2  软件管理的功能 243
    11.1.3  软件项目的工作范围 244
    11.2  软件项目的资源 244
    11.2.1  人力资源 244
    11.2.2  硬件资源 245
    11.2.3  软件资源 245
    11.3  人员的计划和组织 246
    11.4  成本估计及控制 247
    11.4.1  软件开发成本估计方法 247
    11.4.2  专家估算法 247
    11.4.3  成本估算模型 248
    11.5  进度计划 251
    11.5.1  各阶段工作量的分配 251
    11.5.2  制定开发进度计划 251
    11.6  软件配置管理 252
    11.6.1  基线 252
    11.6.2  软件配置项 253
    11.6.3  软件配置管理过程 255
    11.7  软件管理方案 258
    11.8  软件能力成熟度模型 259
    11.8.1  软件过程评估的必要性 259
    11.8.2  能力成熟度模型的主要用途 260
    11.8.3  能力成熟度模型中的概念 261
    11.8.4  软件能力成熟度的等级 263
    11.8.5  能力成熟度模型的内部结构 266
    11.8.6  能力成熟度模型的应用 268
    小结 270
    习题 270
    第12章  软件建模及其工具 271
    12.1  模型概述 271
    12.1.1  模型的定义 271
    12.1.2  模型的分类 272
    12.2  软件建模中最常用的模型 272
    12.2.1  业务模型 272
    12.2.2  功能模型 272
    12.2.3  数据模型 273
    12.3  需求建模 273
    12.4  统一建模语言(UML) 274
    12.4.1  UML概述 274
    12.4.2  UML表示法 280
    12.4.3  UML软件开发过程概述 291
    小结 294
    习题 294
    第13章  软件开发工具与环境 295
    13.1  软件开发工具概述 295
    13.2  软件开发工具的功能 296
    13.3  软件开发工具的特性 297
    13.4  软件开发工具的分类 298
    13.5  软件开发环境 300
    13.6  常用开发环境 301
    13.6.1  Windows开发环境 301
    13.6.2  Linux开发环境 305
    13.6.3  UNIX开发环境 309
    13.7  软件开发工具的发展 313
    13.8  CASE技术 314
    小结 316
    习题 316
    附录A  可行性研究报告规范 317
    附录B  项目开发计划规范 322
    附录C  需求规格说明书规范 325
    附录D  概要设计说明书规范 330
    附录E  详细设计说明书规范 333
    附录F  测试计划 336
    附录G  测试分析报告 339
    附录H  项目开发总结报告规范 341
    参考文献 343