热门关键字:  听力密码  单词密码  新概念美语  巧用听写练听力  零起点

软件工程概论

中国水利水电出版社
    【作 者】倪天林 王伟娜 【I S B N 】978-7-5170-2105-6 【责任编辑】陈洁 【适用读者群】高职高专 【出版时间】2014-09-22 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】368 【千字数】507 【印 张】23 【定 价】45 【丛 书】高职高专院校“十二五”精品示范系列教材(软件技术专业群) 【备注信息】
图书详情

    软件工程是软件工程(或软件技术)专业的一门核心课程,也是计算机科学与技术、信息管理等相关专业的主干课程,同时也是软件设计人员、程序开发人员、软件测试人员和软件项目管理人员等应具备的专门知识。

    本书全面系统地讲授了软件工程的理论、方法和技术,书中运用大量的软件开发实例,采用图文并茂的形式来组织、理解知识内容。每章给出多种形式的习题练习,以巩固所学知识,书中安排有大量实训,以指导学生进行软件开发练习。全书共13章,内容包括软件工程概述、可行性研究、需求分析、概要设计、详细设计、程序编码、面向对象的分析与设计、统一建模语言UML、统一软件开发过程RUP、软件测试、软件维护、软件项目管理及软件复用技术。

    本书可作为高等院校软件工程课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。

    平台课+ 模块课 搭建专业群课程

    实例驱动+ 项目同步 优化内容 新颖实用

    教材+ 案例+ 实战素材 立体化资源相结合

    前 言

    软件工程是研究软件开发技术和软件项目管理的一门工程学科,从工程化的角度来指导软件开发、测试和项目管理等活动。软件工程研究的范围非常广泛,包括技术方法、工具和管理等许多方面,软件工程又是一门迅速发展的新兴学科,新的技术方法和工具不断涌现。本书是软件工程的入门教材,着重从实用角度讲述软件工程的基本原理、概念和方法,同时也力求做到知识的全面性和系统性。本书既适用于软件工程教学,又能对实际的软件开发工作提供指导与帮助。

    软件工程是软件工程(或软件技术)专业的一门核心课程,也是计算机科学与技术、信息管理等相关专业的主干课程,同时也是软件设计人员、程序开发人员、软件测试人员和软件项目管理人员等应具备的专门知识。

    高等职业教育是以就业为导向的职业能力教育,是培养数以万计高技能人才的主力军。高技能人才必须具有较强的技术应用能力,这就要求高职院校要加大对学生实际操作能力的培养。本书旨在借鉴国内外优秀教材的基础上,以多年的教学实践为基础,采用工学结合的方式,全面系统地组织教学内容,既注重知识的系统性和完整性,又突出技术能力的实践性。全书全面系统地讲授了软件工程的理论、方法和技术,书中运用大量的软件开发实例,采用图文并茂的形式来组织、理解知识内容。每章给出多种形式的习题练习,以巩固所学知识,书中安排有大量实训,以指导学生进行软件开发练习。

    全书共13章,内容包括软件工程概述、可行性研究、需求分析、概要设计、详细设计、程序编码、面向对象的分析与设计、统一建模语言UML、统一软件开发过程RUP、软件测试、软件维护、软件项目管理及软件复用技术。

    本书可作为高等院校软件工程课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。

    本书由倪天林、王伟娜任主编,负责设计编写大纲、修改定稿。各章的分工是:第1章、第9章由倪天林编写,第2章、第3章由王伟娜、张晓红编写,第4章、第5章由罗东芳编写,第6章、第7章由郭峰、孙惠娟编写,第8章、第13章由祁慧敏编写,第10章由倪天林、董洁编写,第11章、12章由王伟娜、张恩宾编写。

    在编写过程中得到了中国水利水电出版社向辉同志、祝智敏同志的指导与支持,同时得到了责任编辑的认真审阅。此外,本教材还参考和借鉴了许多专家学者的研究成果,在此一并表示谢意。

    由于编者水平所限,不足之处在所难免,敬请读者批评指正,以便在以后修订时加以改进和更正。

    编者

    2014年3月

    第1章 软件工程概述 1
    1.1 软件的概念和特点 1
    1.1.1 计算机系统的构成及实现 1
    1.1.2 软件的概念 1
    1.1.3 软件的特点 2
    1.1.4 计算机软件的分类 2
    1.2 软件的发展和软件危机 3
    1.2.1 计算机软件的发展过程 3
    1.2.2 软件危机 3
    1.3 软件工程及其原理 5
    1.3.1 软件工程的概念 5
    1.3.2 软件工程的要素 5
    1.3.3 软件工程的目标 6
    1.3.4 软件工程的原则 6
    1.3.5 软件工程的基本原理 7
    1.3.6 软件开发方法 8
    1.4 软件生存周期及其模型 9
    1.4.1 软件定义时期 9
    1.4.2 软件开发时期 10
    1.4.3 软件运行与维护时期 10
    1.4.4 软件生存周期模型 11
    习题一 15
    第2章 可行性研究 17
    2.1 问题定义 17
    2.1.1 问题定义的内容 17
    2.1.2 问题定义的步骤 17
    2.1.3 问题定义报告 18
    2.2 可行性研究的任务 18
    2.2.1 技术可行性 18
    2.2.2 经济可行性 19
    2.2.3 操作可行性 19
    2.2.4 法律可行性 19
    2.3 可行性研究的步骤 19
    2.3.1 确定项目规模和目标 19
    2.3.2 研究正在运行的系统 20
    2.3.3 建立目标系统的高层逻辑模型 20
    2.3.4 导出和评价各种方案 20
    2.3.5 推荐可行的方案 20
    2.3.6 编写可行性研究报告 20
    2.4 系统流程图 21
    2.4.1 系统流程图的作用 21
    2.4.2 系统流程图的符号 21
    2.5 成本—效益分析 22
    2.5.1 成本估计 22
    2.5.2 两种成本估算技术 23
    2.5.3 度量效益的方法 24
    2.6 可行性研究报告 24
    2.7 项目开发计划 25
    实训 25
    习题二 26
    第3章 需求分析 28
    3.1 需求分析任务 28
    3.1.1 需求分析的意义 28
    3.1.2 需求分析的步骤 29
    3.1.3 需求分析的具体任务 31
    3.2 需求分析的基本原则 31
    3.3 需求分析过程 32
    3.3.1 需求获取 32
    3.3.2 需求建模 33
    3.3.3 编写需求分析文档 34
    3.3.4 需求评审 34
    3.4 需求获取方法 35
    3.4.1 需求需要获取的内容 35
    3.4.2 需求获取的方法 36
    3.4.3 需求调研的步骤 37
    3.5 需求分析模型 39
    3.5.1 实体关系图 39
    3.5.2 数据流图 41
    3.5.3 状态转换图 46
    3.6 数据字典 47
    3.6.1 数据字典的概念和组成 47
    3.6.2 数据字典各部分的描述 48
    3.6.3 词条描述 49
    3.6.4 数据字典中的符号 51
    3.7 需求规格说明书 52
    3.7.1 引言 53
    3.7.2 任务概述 53
    3.7.3 需求规定 53
    3.7.4 运行环境规定 54
    实训 54
    习题三 56
    第4章 概要设计 60
    4.1 软件设计过程 60
    4.1.1 软件设计过程 60
    4.1.2 目标系统的运行环境 62
    4.2 概要设计的目标和任务 62
    4.2.1 概要设计的目标 62
    4.2.2 概要设计的任务 62
    4.3 概要设计原则 63
    4.3.1 模块化 63
    4.3.2 抽象 65
    4.3.3 自顶向下,逐步细化 65
    4.3.4 信息隐蔽 66
    4.3.5 模块独立性 66
    4.4 体系结构设计工具 70
    4.4.1 结构图 70
    4.4.2 HIPO图 72
    4.5 概要设计的启发式规则 74
    4.5.1 提高模块独立性 74
    4.5.2 模块大小要适中 74
    4.5.3 模块应具有高扇入和适当的扇出 74
    4.5.4 软件结构中的深度和宽度不宜过大 75
    4.5.5 模块的作用域应处于控制域之内 75
    4.5.6 尽量降低模块的接口复杂度 77
    4.5.7 设计单入口、单出口的模块 77
    4.5.8 模块功能应该可以预测 77
    4.6 面向数据流的设计方法 77
    4.6.1 SD方法实施的步骤 78
    4.6.2 变换分析 79
    4.6.3 事务分析 87
    4.6.4 软件模块结构的改进 88
    4.6.5 设计后的处理 90
    4.7 概要设计说明书 90
    实训 91
    习题四 93
    第5章 详细设计 96
    5.1 详细设计的任务与原则 96
    5.1.1 详细设计的任务 96
    5.1.2 详细设计的原则 97
    5.2 结构化程序设计 97
    5.2.1 结构化程序设计的概念 97
    5.2.2 结构化和非结构化程序设计方法
    的比较 97
    5.2.3 结构化程序设计的原则 98
    5.2.4 结构化程序设计的优点 99
    5.3 过程设计工具 99
    5.3.1 程序流程图 99
    5.3.2 盒图(N-S图) 102
    5.3.3 PAD图 102
    5.3.4 判定表 103
    5.3.5 判定树 104
    5.3.6 PDL语言 104
    5.4 用户界面设计 106
    5.4.1 用户界面设计的“黄金规则” 106
    5.4.2 用户界面设计过程 106
    5.4.3 用户界面的主要形式 107
    5.4.4 界面设计应考虑的因素 109
    5.4.5 用户界面设计分析 109
    5.4.6 用户界面的质量要求 111
    5.5 数据库设计 111
    5.5.1 数据需求分析 112
    5.5.2 概念结构设计 112
    5.5.3 逻辑结构设计 112
    5.5.4 物理结构设计 113
    5.5.5 数据库的实施 113
    5.6 接口设计 113
    5.6.1 软件接口设计的依据 113
    5.6.2 软件接口的类型 113
    5.6.3 应用程序编程接口 114
    5.7 详细设计说明书 114
    实训 116
    习题五 118
    第6章 程序编码 120
    6.1 程序编码的目的和任务 120
    6.1.1 程序编码的目的 120
    6.1.2 程序编码的任务 121
    6.2 程序设计语言 121
    6.2.1 程序设计语言的分类 121
    6.2.2 程序设计语言的选择 122
    6.3 编码风格 123
    6.3.1 源程序文档化 123
    6.3.2 数据说明 124
    6.3.3 语句结构 125
    6.3.4 输入/输出方式 126
    6.4 程序效率 127
    6.4.1 程序效率的准则 127
    6.4.2 算法对效率的影响 127
    6.4.3 存储效率 127
    6.4.4 输入/输出效率 128
    6.5 冗余编程及容错技术 128
    6.5.1 冗余编程 128
    6.5.2 软件容错技术 129
    6.6 程序复杂性的度量 132
    6.6.1 代码行度量法 132
    6.6.2 McCabe度量法 133
    实训 134
    习题六 135
    第7章 面向对象的分析与设计 137
    7.1 面向对象概述 137
    7.1.1 面向对象方法 137
    7.1.2 面向对象的基本概念 139
    7.1.3 面向对象的特性 145
    7.2 面向对象分析与对象模型化技术 146
    7.2.1 面向对象的分析过程 146
    7.2.2 面向对象的开发方法 148
    7.2.3 对象模型化技术 149
    7.2.4 Coad&Yourdon面向对象分析 153
    7.3 面向对象设计 158
    7.3.1 面向对象设计准则 158
    7.3.2 面向对象设计的启发式规则 160
    7.3.3 Coad&Yourdon 设计方法 161
    7.4 面向对象编程 164
    7.4.1 面向对象语言的优点 164
    7.4.2 面向对象语言的技术特点 165
    7.4.3 选择面向对象语言的现实因素 167
    7.4.4 程序设计风格 168
    案例:自动取款机(ATM)系统的分析
    与设计 169
    习题七 178
    第8章 统一建模语言UML 180
    8.1 UML概述 180
    8.1.1 UML的产生和发展 180
    8.1.2 UML的组成 181
    8.1.3 UML视图 182
    8.1.4 UML的主要特点 184
    8.1.5 UML的应用 185
    8.2 通用模型元素 186
    8.2.1 模型元素 186
    8.2.2 约束 187
    8.2.3 依赖关系 187
    8.2.4 细化 188
    8.2.5 注释 188
    8.3 静态建模机制 189
    8.3.1 用例图 189
    8.3.2 类图和对象图 193
    8.3.3 包图 200
    8.3.4 构件图 201
    8.3.5 配置图 202
    8.4 动态建模机制 203
    8.4.1 消息 203
    8.4.2 顺序图 204
    8.4.3 协作图 205
    8.4.4 状态图 207
    8.4.5 活动图 210
    案例:医院电话挂号系统 213
    实训 217
    习题八 221
    第9章 统一软件开发过程RUP 223
    9.1 RUP概述 223
    9.1.1 RUP的意义 223
    9.1.2 RUP的特点 224
    9.2 RUP的二维开发模型 227
    9.3 RUP开发阶段及里程碑 228
    9.3.1 初始阶段 229
    9.3.2 细化阶段 229
    9.3.3 构造阶段 230
    9.3.4 交付阶段 231
    9.4 RUP的四个要素 232
    9.4.1 人员至关重要 233
    9.4.2 项目创造产品 233
    9.4.3 产品不仅仅是代码 234
    9.4.4 过程指导项目 234
    9.4.5 工具对于过程不可或缺 235
    9.5 RUP制品 235
    9.5.1 模型 235
    9.5.2 其他制品 236
    9.6 RUP的核心工作流 236
    9.6.1 业务建模 237
    9.6.2 需求 238
    9.6.3 分析 240
    9.6.4 设计 241
    9.6.5 实现 244
    9.6.6 测试 246
    9.6.7 部署 248
    9.6.8 配置和变更管理 249
    9.6.9 项目管理 249
    9.6.10 环境 249
    9.7 RUP裁剪 251
    9.8 RUP的迭代开发模式 251
    习题九 253
    第10章 软件测试 255
    10.1 软件测试基础 255
    10.1.1 软件测试的意义 255
    10.1.2 软件测试的目标 256
    10.1.3 软件测试的原则 256
    10.1.4 软件测试的信息流 257
    10.1.5 软件测试的对象 258
    10.1.6 软件测试与软件开发阶段的关系 258
    10.1.7 软件测试有关概念 259
    10.2 软件测试方法 260
    10.2.1 静态测试和动态测试 260
    10.2.2 白盒测试和黑盒测试 260
    10.2.3 测试用例的设计 262
    10.3 软件测试策略 281
    10.4 软件测试过程 281
    10.4.1 单元测试 282
    10.4.2 集成测试 283
    10.4.3 确认测试 285
    10.4.4 系统测试 287
    10.4.5 调试 288
    10.5 面向对象的测试 290
    10.5.1 面向对象测试模型 291
    10.5.2 面向对象分析的测试 291
    10.5.3 面向对象设计的测试 293
    10.5.4 面向对象编程的测试 294
    10.5.5 面向对象的单元测试 294
    10.5.6 面向对象的集成测试 295
    10.5.7 面向对象的系统测试 295
    10.6 测试计划和分析报告 295
    10.6.1 软件测试计划 296
    10.6.2 测试分析报告 298
    实训 300
    习题十 302
    第11章 软件维护 305
    11.1 软件维护概述 305
    11.1.1 软件维护的定义 305
    11.1.2 软件维护的类型 306
    11.1.3 影响软件维护工作量的因素 307
    11.1.4 造成软件维护困难的因素 308
    11.1.5 结构化维护与非结构化维护 308
    11.2 软件维护策略 309
    11.2.1 改正性维护 309
    11.2.2 适应性维护 309
    11.2.3 完善性维护 310
    11.3 软件维护成本 310
    11.4 软件维护的实施 310
    11.4.1 软件维护机构 310
    11.4.2 软件维护报告 311
    11.4.3 软件维护工作流程 312
    11.4.4 软件维护步骤 312
    11.4.5 编写维护档案记录 313
    11.4.6 维护评价 314
    11.5 软件的可维护性 314
    11.5.1 影响软件可维护性的因素 314
    11.5.2 软件可维护性的度量 315
    11.5.3 提高软件可维护性的方法 318
    11.6 软件维护的副作用 321
    11.6.1 软件维护副作用的类型 321
    11.6.2 控制软件维护副作用的策略 322
    习题十一 322
    第12章 软件项目管理 324
    12.1 软件项目管理概述 324
    12.1.1 软件项目管理的意义 324
    12.1.2 软件项目的特点 325
    12.1.3 软件项目管理的职能 325
    12.2 软件项目计划 325
    12.2.1 软件项目计划的目标和风险分析 325
    12.2.2 软件项目计划的类型 325
    12.2.3 项目实施计划中任务的划分 326
    12.2.4 项目的进度安排 326
    12.3 软件项目组织 328
    12.3.1 组织原则 329
    12.3.2 组织结构的模式 329
    12.3.3 程序设计小组的组织形式 330
    12.4 软件项目的人员配备 331
    12.4.1 项目开发各阶段所需人员 332
    12.4.2 配备人员的原则 332
    12.4.3 对项目经理的要求 333
    12.4.4 评价软件开发人员的标准 333
    12.5 软件配置管理 333
    12.5.1 软件配置管理的概念 333
    12.5.2 软件配置管理的基本目标 334
    12.5.3 基线 334
    12.5.4 软件配置项 334
    12.5.5 版本控制 335
    12.5.6 变更控制 336
    12.5.7 软件配置管理应注意的问题 337
    12.6 软件质量管理 337
    12.6.1 软件质量的含义 337
    12.6.2 影响软件质量的因素 337
    12.6.3 软件质量保证措施 339
    12.7 软件能力成熟度模型 340
    12.7.1 软件过程的度量 340
    12.7.2 关键过程域 340
    实训 342
    习题十二 344
    第13章 软件复用技术 346
    13.1 软件复用概述 346
    13.1.1 软件复用的意义 346
    13.1.2 软件复用的层次 347
    13.1.3 软件成分的重用级别 348
    13.2 可复用的软件成分 348
    13.3 软件复用过程 349
    13.4 软件复用环境 350
    13.5 面向对象的复用技术 351
    13.5.1 类构件的复用 351
    13.5.2 类库 352
    13.5.3 产生所需类的次序 353
    13.5.4 既存类的复用方法 353
    习题十三 354
    参考文献 356
最新评论共有 2 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册