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

软件工程

中国水利水电出版社
    【作 者】曾强聪 赵歆 【I S B N 】978-7-5170-2574-0 【责任编辑】张玉玲 【适用读者群】本科 【出版时间】2015-01-04 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】292 【千字数】445 【印 张】18.25 【定 价】36.8 【丛 书】普通高等应用型院校“十二五”规划教材 【备注信息】
图书详情

    软件工程是软件研发与维护的工程方法学。本书较好地体现了软件工程的实用性,有较完整的软件工程知识体系,有对工程概念、规则的生动说明,有与工程实践相适应的基于软件生存周期的内容编排,有基于案例的工程方法应用。

    全书共三个部分16章内容。第一部分工程基础包含两章内容,是对软件工程概念方法、软件工程项目管理的常识性介绍;第二部分工程过程包含7章内容,涉及软件工程过程模式,并以软件生存周期为线索,对软件研发全过程进行了说明;第三部分工程方法包含7章内容,有基于案例的工程方法说明,涉及主流的结构化工程方法、面向对象工程方法、数据库工程方法,并介绍了敏捷工程等一些非主流方法,第16章是一个较完整的面向对象工程案例,基于UML建模,并已通过C++和Java进行工程创建。

    本书语言精简、通俗易懂、便于自学,而且教学资源完备,书中案例均已基于主流软件工具(Rose、Visio、PowerDesigner)建立模型,可作为教学或自学资源供读者参考(可与出版社或作者联系获取)。

    本书可作为高校相关专业本科生、研究生教材,也可作为软件开发人员的技术参考书,还可供广大读者自学软件工程方法。

    本书较好地体现了软件工程的实用性,有较完整的软件工程知识体系,有对工程概念、规则的生动说明,有与工程实践相适应的基于软件生存周期的内容编排,有基于案例的工程方法应用;语言精简、通俗易懂;

    教学资源完备,书中案例均已基于主流软件工具(Rose、Visio、PowerDesigner)建立模型,可作为教学或自学资源供读者参考。

    软件工程是关于软件产品研发与维护的工程方法学,是软件开发者—软件项目负责人、软件分析师、软件设计师、软件程序员、软件测试员研发与维护软件时的作业指南。

    20世纪60年代,软件产业发展遭遇到了危机,出现了软件研发成本进度难以控制,软件产品不能满足用户需求,软件程序容易出错、难于维护等诸多危机现象。这样的软件危机引发了软件研发者的心理恐慌,软件工程即诞生于这样的背景之下,其谋求对软件研发维护能有方法上的指导,能有规则上的约束,以使得面对有待研发的复杂软件系统,软件开发者能更具预见力与自信心。

    软件工程影响着软件产业的发展,软件工程人才已越来越受到软件业界的重视。可以看到的是,当前的软件工程师已代替了早期的软件程序员成为了软件研发中的技术骨干。然而,软件产业的发展不只是要求软件工程师需要具备软件工程知识与技能,还要求软件研发的所有参与者—技术人员、管理人员、产品客户都应该具备一定的软件工程知识与技能,由此软件工程规则方法才能更顺利地得以应用。

    软件工程在随软件产业的发展而进步。目前软件工程已是计算机科学领域中的一个重要分支,其已有了结构化、面向对象等比较成熟的工程方法学体系,并已有了对技术、管理、经济的比较全面的工程方法支持。然而,直至今天,软件工程还仍是处于成长过程中,仍然非常年轻,需要工程探索,需要逐步完善。

    软件工程的真正价值在于工程应用与产生工程实效。本书编写即充分考虑到了软件工程的实用性,有对软件工程概念、规则的生动说明,有与工程实践相适应的基于软件生存周期的内容编排,并有基于工程案例的工程方法应用指导。

    本书内容由三个部分共16章组成。

    第一部分是工程基础(第1、2章),涉及软件工程概况与软件项目管理两个方面的内容。我们认为要学好软件工程,首要的问题是学习者能对软件工程有一个好的学习态度,这个部分即用于培养与树立学习者的工程意识,并因此激发起学习者的工程学习热情。

    第二部分是工程过程(第3~9章),涉及一些主流的过程模式,并以软件生存周期为线索,对软件研发全过程进行了细节说明,包括:软件需求分析、软件概要设计、程序算法设计、软件测试、软件维护与进化等内容。我们认为,以软件生存周期为线索的内容编排将有利于基于软件项目的工程实践与学以致用。

    第三部分是工程方法(第10~16章),既包括主流的结构化工程方法、面向对象工程方法、数据库工程方法,也涉及一些非主流的工程方法,如敏捷工程方法、净室工程方法等。诸多方法都通过案例进行了应用说明。这个部分的核心内容是面向对象工程方法,有比较全面的基于UML的建模说明。第16章是一个较完整的面向对象工程案例,不仅有基于UML的分析设计建模,并通过C++、Java进行工程创建。

    本书的重点是软件分析与设计,并主要体现在分析设计建模上。对于分析设计建模,本书有以下方面的教学考虑,这有利于学习者更好地把握建模方法:

    (1)学习建模不能仅限于识别图形元素或看懂图表,而应该学会如何基于一定的流程,并通过一定的建模方法,对软件问题进行模型演变,由此使软件问题得解。因此,本书中无论结构化建模还是面向对象建模,其都有较好的基于案例的由分析到设计的全过程推演,以反映软件系统构建的严密性。

    (2)结构化分析中的数据流细化建模一直是一个学习难点,其实它也是一个实际建模中的应用难点,即不知道如何进行功能细化。对此,本书基于功能树的功能逐级分解,可使这个难点得到较好的处理,其具有教学意义,同时也有一定的工程参考价值。

    (3)统一开发过程中的面向对象建模是基于用例驱动的,由此可使对系统的业务分析能延伸到系统的结构设计、过程设计、界面设计、安装部署。然而,以往的大多数教科书,仅局限于纲领性说明,而无实际建模演示,因此也就看不到用例驱动的实际价值。对此,本书有较好的基于案例的用例驱动建模过程说明,如分析中基于用例的活动建模,设计中基于用例的类结构建模、对象协作建模,诸多案例无不体现出用例驱动的价值。

    一些初学者认为,软件工程是教条式理论。然而,它却不应该成为教条,只是有可能出现教条式教学。实际上,软件工程有很强的工程实践性,其一系列的方法规则就建立在工程实践基础上。无疑,这个实践性必然会对软件工程的教学提出要求,这就是有用、能用、实用。显然,经过软件开发者长期的实践与努力探索而获得的工程方法肯定是有用的,值得认真学习。然而,有用还只能体现出软件工程的知识特性,若要使这些知识转化为学习者的能力,则必须能用。通常的看法是,案例教学有利于培养学习者能力。本书提供了较丰富的案例,其目的就在于培养学习者的能力,以使书中的知识能够被用起来。软件工程教学还要求实用,可用来解决实际问题。对此,可采取项目方式进行工程实践,这有利于知识、能力与实际应用的结合,由此可使软件工程学习具备实用性。

    还需要注意的是,基于项目的工程实践的成效依赖于教师的精心组织。我们的建议是,可3~5人一组进行项目实践,并以组为单位进行整体评价,但各成员应有特定任务,以方便对各成员做个体评价。这种教学模式的好处是,既可考察学习者的团队协作,又可体现学习者的个人学习成就。还由于是团队合作学习,有利于调动学习者的工程实践热情,能产生更好的工程实践效果。

    本书主要由曾强聪、赵歆编写,阳王东、刘震、周新民、刘娜承担了部分内容的编写工作。无疑,本书的创作是一件非常耗费心力的事情。首先是结构,它应该是严谨的。接着是语言,其应该既严密又畅快,以便于阅读,并能尽量吸引学习者去阅读。接下来就是取舍内容、定义概念、描述方法、设计案例等。

    实际上,本书中的每一个细节都经过反复推敲,因为毕竟是教科书,很担心因工作疏忽而给学习者带来误导。然而,由于作者学识水平与时间都是有限的,因此书中难免有一些缺点和不足,对此特请广大读者批评指正,以使本书再版时能够不断完善。值得庆幸的是,软件工程仍在不断发展,因此本书的再版与完善也是一件很自然的事情。

    编 者

    2014年9月

    第1章 软件工程综述 1
    1.1 什么是软件工程 1
    1.2 软件有什么特点 2
    1.2.1 软件特点 3
    1.2.2 软件分类 4
    1.3 为什么会发生软件危机 6
    1.4 软件工程技术 8
    1.4.1 软件过程 8
    1.4.2 工程方法 9
    1.4.3 软件工具 9
    1.5 软件工程管理 10
    1.5.1 项目计划 10
    1.5.2 人员组织 10
    1.5.3 过程管理 11
    1.5.4 产品管理 11
    1.5.5 工程目标 11
    1.6 主流软件工程方法学 12
    1.6.1 结构化方法学 12
    1.6.2 面向对象方法学 12
    1.7 常用软件工具 15
    1.7.1 Microsoft Visio 15
    1.7.2 Sybase PowerDesigner 15
    1.7.3 IBM Rational Rose 16
    小结 17
    习题 18
    第2章 软件项目管理 19
    2.1 软件研发团队 19
    2.1.1 软件研发机构 19
    2.1.2 软件项目小组 20
    2.1.3 项目小组管理机制 21
    2.2 软件项目计划 23
    2.2.1 任务分配 23
    2.2.2 进度计划 24
    2.2.3 项目计划书 26
    2.3 软件项目成本估算 26
    2.3.1 程序代码行成本估算 27
    2.3.2 软件功能点成本估算 28
    2.3.3 基于软件过程的成本估算 31
    2.4 软件项目风险 32
    2.4.1 风险类别 32
    2.4.2 风险识别 33
    2.4.3 风险评估 34
    2.4.4 风险防范 35
    2.5 项目文档管理 36
    2.5.1 文档概念 36
    2.5.2 文档分类 37
    2.5.3 软件文档与软件生命周期之间
    的关系 37
    2.5.4 文档的使用者 38
    2.5.5 文档编码 39
    2.5.6 文档格式 39
    2.6 项目配置管理 41
    2.6.1 软件配置概念 41
    2.6.2 配置规划 41
    2.6.3 软件变更控制 43
    2.6.4 软件版本控制 43
    2.7 项目质量管理 44
    2.7.1 质量标准 44
    2.7.2 质量计划 45
    2.7.3 质量保证 45
    2.7.4 质量指标 46
    小结 47
    习题 48
    第3章 软件工程过程模式 50
    3.1 软件生存周期 50
    3.1.1 软件定义期 50
    3.1.2 软件开发期 51
    3.1.3 软件运行与维护期 52
    3.2 瀑布模式 53
    3.2.1 瀑布模式的特点 53
    3.2.2 瀑布模式中的信息反馈 54
    3.2.3 瀑布模式的作用 55
    3.3 原型进化模式 55
    3.3.1 软件原型 55
    3.3.2 原型进化过程 56
    3.4 增量模式 57
    3.4.1 增量开发过程 57
    3.4.2 增量模式的优越性 57
    3.5 螺旋模式 58
    3.6 迭代模式 59
    3.7 组件复用模式 60
    小结 61
    习题 62
    第4章 计算机系统工程 63
    4.1 计算机系统特征 63
    4.2 计算机体系结构 64
    4.2.1 主机结构 64
    4.2.2 客户机/服务器结构 65
    4.2.3 浏览器/服务器结构 65
    4.3 系统前期分析 66
    4.3.1 分析过程 67
    4.3.2 系统结构建模 68
    4.3.3 系统工作流建模 68
    4.4 项目可行性分析 70
    4.4.1 评估内容 71
    4.4.2 评估报告 72
    小结 73
    习题 74
    第5章 软件需求分析 75
    5.1 需求分析任务 75
    5.1.1 分析内容 75
    5.1.2 分析过程 76
    5.1.3 任务承担者 76
    5.2 获取用户需求 77
    5.2.1 识别用户 77
    5.2.2 从调查中收集用户需求 79
    5.2.3 建立需求规约 81
    5.3 建立需求模型 82
    5.3.1 业务域模型 83
    5.3.2 业务流模型 83
    5.4 定义与验证软件规格 84
    5.4.1 软件规格定义 84
    5.4.2 软件需求验证 85
    5.4.3 通过原型验证用户需求 85
    5.4.4 通过评审验证产品规格 86
    5.5 需求规格说明书 86
    小结 87
    习题 88
    第6章 软件概要设计 89
    6.1 概要设计任务 89
    6.1.1 基本任务 89
    6.1.2 设计过程 90
    6.2 系统构架设计 91
    6.2.1 软件系统支持环境 91
    6.2.2 软件系统体系结构 92
    6.3 数据结构设计 96
    6.3.1 动态程序数据 96
    6.3.2 静态存储数据 96
    6.4 程序结构设计 96
    6.4.1 程序模块 97
    6.4.2 模块独立性 99
    6.4.3 结构化程序结构 103
    6.4.4 面向对象程序结构 104
    6.5 概要设计说明书 105
    小结 107
    习题 107
    第7章 程序算法设计与编码 109
    7.1 程序结构化流程控制 109
    7.2 程序算法设计工具 110
    7.2.1 程序流程图 110
    7.2.2 NS图 110
    7.2.3 PAD图 112
    7.2.4 PDL语言 113
    7.3 程序算法复杂度评估 114
    7.3.1 程序算法复杂度 114
    7.3.2 McCabe方法 114
    7.4 程序编码 116
    7.4.1 编程语言 116
    7.4.2 编程规范 118
    7.4.3 程序运行效率 120
    小结 121
    习题 121
    第8章 软件测试 123
    8.1 测试目的、计划与方法 123
    8.1.1 测试目的 123
    8.1.2 测试计划 123
    8.1.3 测试方法 124
    8.2 测试任务 125
    8.2.1 单元测试 125
    8.2.2 集成测试 127
    8.2.3 确认测试 129
    8.3 测试用例 130
    8.3.1 白盒测试用例设计 130
    8.3.2 黑盒测试用例设计 132
    8.4 面向对象程序测试 134
    8.4.1 面向对象单元测试 134
    8.4.2 面向对象集成测试 134
    8.4.3 面向对象确认测试 135
    8.5 程序调试 135
    8.5.1 诊断方法 135
    8.5.2 调试策略 136
    8.6 测试工具 137
    8.6.1 测试数据生成程序 137
    8.6.2 动态分析程序 137
    8.6.3 静态分析程序 137
    小结 137
    习题 138
    第9章 软件维护与再工程 140
    9.1 软件维护分类 140
    9.2 软件可维护性 141
    9.2.1 软件可维护性评估 141
    9.2.2 如何提高软件的可维护性 141
    9.3 软件维护实施 142
    9.3.1 维护机构 142
    9.3.2 维护过程 143
    9.4 软件再工程 145
    9.4.1 逆向工程 145
    9.4.2 重构工程 146
    9.4.3 正向工程 146
    小结 146
    习题 147
    第10章 结构化分析建模 148
    10.1 结构化分析 148
    10.2 功能层级图 149
    10.3 数据流图与功能建模 149
    10.3.1 数据流图 149
    10.3.2 数据流细化 151
    10.3.3 功能建模 152
    10.3.4 数据字典 154
    10.4 状态转换图与行为建模 156
    小结 158
    习题 159
    第11章 结构化设计建模 162
    11.1 建模语言 162
    11.1.1 程序结构图 162
    11.1.2 HIPO图 163
    11.1.3 框架伪码 164
    11.2 基于数据流的程序结构映射 165
    11.2.1 变换流映射 165
    11.2.2 事务流映射 167
    11.2.3 混合流映射 168
    11.3 程序结构优化 170
    11.4 设计举例 173
    小结 179
    习题 179
    第12章 面向对象分析建模 181
    12.1 面向对象工程方法 181
    12.1.1 面向对象工程建模方法 181
    12.1.2 UML建模语言 182
    12.2 用例建模 185
    12.2.1 图形元素 185
    12.2.2 参与者关系 186
    12.2.3 用例关系 186
    12.2.4 用例建模举例 188
    12.3 活动建模 190
    12.3.1 图形元素 190
    12.3.2 业务级活动建模 191
    12.3.3 用例级活动建模 192
    12.4 类分析建模 193
    12.4.1 实体类 193
    12.4.2 实体类关系 194
    11.4.3 类分析建模举例 197
    小结 198
    习题 198
    第13章 面向对象设计建模 200
    13.1 面向对象设计方法 200
    13.1.1 面向对象设计特点 200
    13.1.2 基于UML的设计建模 202
    13.2 逻辑结构设计 203
    13.2.1 确定系统构架 203
    13.2.2 设计类体 205
    13.2.3 抽象类、接口及其用途 209
    13.2.4 程序逻辑结构 212
    13.3 动态过程设计 217
    13.3.1 协作图 217
    13.3.2 时序图 219
    13.3.3 状态图 221
    13.4 物理装配与部署 222
    13.4.1 程序构件图 222
    13.4.2 系统部署图 224
    小结 226
    习题 227
    第14章 数据库分析与设计 229
    14.1 数据库体系结构 229
    14.1.1 基本体系结构 229
    14.1.2 基于数据库服务器的数据库系统 231
    14.1.3 数据库分布应用 232
    14.1.4 SQL语言 232
    14.2 数据库分析建模 233
    14.2.1 实体关系图 233
    14.2.2 基于工具的ER建模 234
    14.2.3 商品订购数据建模举例 236
    14.3 数据库结构设计 237
    14.3.1 数据表 237
    14.3.2 数据表关联 237
    14.3.3 数据索引 238
    14.3.4 数据完整性 239
    14.3.5 数据表结构优化 240
    14.4 数据库访问设计 240
    14.4.1 数据视图 240
    14.4.2 存储过程 241
    14.4.3 数据事务 241
    小结 242
    习题 242
    第15章 非主流工程方法 244
    15.1 敏捷工程方法 244
    15.1.1 敏捷价值观 244
    15.1.2 敏捷工程法则 245
    15.1.3 敏捷过程特点 245
    15.1.4 敏捷设计原则 246
    15.1.5 极限编程 246
    15.1.6 自适应软件开发 247
    15.1.7 动态系统开发方法 248
    15.2 净室工程方法 248
    15.2.1 工程策略 249
    15.2.2 盒结构建模 249
    15.2.3 程序正确性验证 251
    15.3 Jackson程序设计方法 253
    15.3.1 设计步骤 254
    15.3.2 设计举例 255
    15.4 Z语言形式化规格说明 258
    15.4.1 Z语言特点 258
    15.4.2 Z语言应用举例 259
    小结 261
    习题 262
    第16章 “象棋对垒程序系统”工程案例 263
    16.1 系统分析 263
    16.1.1 基本需求说明 263
    16.1.2 功能用例分析 263
    16.1.3 任务活动分析 265
    16.2 系统设计 266
    16.2.1 系统构架设计 266
    16.2.2 类结构设计 266
    16.2.3 对象交互设计 268
    16.2.4 棋局对垒界面设计 272
    16.2.5 系统构件设计 273
    16.3 程序框架清单 274
    16.3.1 客户端程序 274
    16.3.2 服务器程序 279
    参考文献 281
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册