软件工程.pdf

软件工程.pdf
 

书籍描述

编辑推荐
《软件工程》的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、COTS复用、服务作为软件以及敏
捷规划等新内容。着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。《软件工程》设计为“印刷/Web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在Web上,为读者提供丰富翔实的信息。

媒体推荐
在计算机科学的同一领域往往都有比肩齐声的佳作。软件工程类综述性的巨著也有两本:第一本就是Roger Pressman所著的《软件工程:实践者的研究方法》,另一本就是lan Sommerville所著的本书。这两本名著都有多年历史(初版可追溯到20世纪80年代早期)。对于软件工程学科的形成和发展起到了重要作用。尤其是在教育界和学术界影响极大。相比Pressman的书,Sommerville的这本教材将全部内容划分为四个部分,每个部分可以单独使用或者是结合其他部分作为软件工程课程的基本内容,更加适合不同类型软件工程课程的教学需求,叙述也更趋清晰和简明。
  ——摘自业界专业人士的推荐
这本软件工程的经典教材不仅展现了软件工程的广阔视野。还着重阐述了在开发大型系统中一些广泛采用的技术。并辅以大量的例子和图解。作者将所有的话题控制在适度的篇幅,用简练到位的文字把最重要的内容呈现给读者,并提供进一步阅读资料,供有兴趣的读者深入学习,使得本书更符合国内软件工程课程的教学需求。书中没有学院派布道式的说教,作者认为并不存在解决软件工程问题的灵丹妙药,而是强调读者需要学习和掌握更广泛的技术和工具以解决软件工程问题。从内容选材上,本书不落俗套,大胆舍弃了传统的软件工程内容和一些繁琐的软件工程理论。代之以简洁实用的软件工程新知识、新方法,增加了教材的实用性和可读性;从专题安排上,本书避虚就实,没有对软件工程技术泛泛而谈,而是针对那些大型系统开发技术进行分析,避免对个别产品中的技术进行过多阐述。
  ——刘艺,《计算机英语》作者

作者简介
作者:(英国)萨默维尔(Ian Sommerville) 译者:程成 等

萨默维尔(Ian Sommerville),英国著名软件工程专家。曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验。他是IEEECS组织编撰“软件工程知识体系”(SWEBOK)的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进货。

目录
出版者的话
译者序
前言
第一部分 软件工程导论
第1章 概述
1.1 专业化软件开发
1.1.1 软件工程
1.1.2 软件工程的多样性
1.1.3 软件工程和Web
1.2 软件工程人员的职业道德
1.3 案例研究
1.3.1 胰岛素泵控制系统
1.3.2 用于心理健康治疗的患者
信息系统
1.3.3 野外气象站
要点
进一步阅读材料
练习
参考书目

第2章 软件过程
2.1 软件过程模型
2.1.1 瀑布模型
2.1.2 增量式开发
2.1.3 面向复用的软件工程
2.2 过程活动
2.2.1 软件描述
2.2.2 软件设计和实现
2.2.3 软件有效性验证
2.2.4 软件进化
2.3 应对变更
2.3.1 原型构造
2.3.2 增量式交付
2.3.3 Boehm的螺旋模型
2.4 Rational统一过程
要点
进一步阅读材料
练习
参考书目

第3章 敏捷软件开发
3.1 敏捷方法
3.2 计划驱动开发和敏捷开发
3.3 极限编程
3.3.1 极限编程中的测试
3.3.2 结对编程
3.4 敏捷项目管理
3.5 扩展的敏捷方法
要点
进一步阅读材料
练习
参考书目

第4章 需求工程
4.1 功能需求和非功能需求
4.1.1 功能需求
4.1.2 非功能需求
4.2 软件需求文档
4.3 需求描述
4.3.1 自然语言描述
4.3.2 结构化描述
4.4 需求工程过程
4.5 需求导出和分析
4.5.1 需求发现
4.5.2 采访
4.5.3 脚本
4.5.4 用例
4.5.5 深入实际
4.6 需求有效性验证
4.7 需求管理
4.7.1 需求管理规划
4.7.2 需求变更管理
要点
进一步阅读材料
练习
参考书目

第5章 系统建模
5.1 上下文模型
5.2 交互模型
5.2.1 用例建模
5.2.2 时序图
5.3 结构模型
5.3.1 类图
5.3.2 泛化
5.3.3 聚合
5.4 行为模型
5.4.1 数据驱动的建模
5.4.2 事件驱动模型
5.5 模型驱动工程
5.5.1 模型驱动体系结构
5.5.2 可执行UML
要点
进一步阅读材料
练习
参考书目

第6章 体系结构设计
6.1 体系结构设计决策
6.2 体系结构视图
6.3 体系结构模式
6.3.1 分层体系结构
6.3.2 容器体系结构
6.3.3 客户机一服务器体系结构
6.3.4 管道和过滤器体系结构
6.4 应用体系结构
6.4.1 事务处理系统
6.4.2 信息系统
6.4.3 语言处理系统
要点
进一步阅读材料
练习
参考书目

第7章 设计与实现
7.1 利用UML进行面向对象设计
7.1.1 系统上下文与交互
7.1.2 体系结构的设计
7.1.3 对象类识别
7.1.4 设计模型
7.1.5 接口描述
7.2 设计模式
7.3 实现问题
7.3.1 复用
7.3.2 配置管理
7.3.3 宿主机一目标机开发
7.4 开源开发
要点
进一步阅读材料
练习
参考书目

第8章 软件测试
8.1 开发测试
8.1.1 单元测试
8.1.2 选择单元测试案例
8.1.3 组件测试
8.1.4 系统测试
8.2 测试驱动开发
8.3 发布测试
8.3.1 基于需求的测试
8.3.2 情景测试
8.3.3 性能测试
8.4 用户测试
要点
进一步阅读材料
练习
参考书目

第9章 软件进化
9.1 进化过程
9.2 程序进化的动态特性
9.3 软件维护
9.3.1 维护预测
9.3.2 软件再工程
9.3.3 通过重构进行预防性维护
9.4 遗留系统管理
要点
进一步阅读材料
练习
参考书目
第二部分 可依赖性和信息安全性
第三部分 高级软件工程
第四部分 软件管理

文摘
版权页:

软件工程

插图:

软件工程

现代社会离不开软件。国家基础设施和公共建设都是由基于计算机的系统控制,大多数的电子产品都有计算机和控制软件。工业制造和分销已经完全计算机化了,金融系统也是这样。娱乐业,包括音乐产业、计算机游戏产业、电影和电视产业,也是一个软件密集型的产业。因此,软件工程对于一个国家和整个国际社会的运转都是必不可少的。
软件是抽象的、不可触摸的,它不受物质材料的限制,也不受物理定律或加工过程的制约,这一方面使软件工程得以简化,因为软件的潜能不受物理因素的限制;另一方面,由于缺乏自然约束,软件系统也就很容易变得极为复杂,理解它会很困难、改变它价格高昂。
从简单的嵌入式系统到复杂的全球信息系统,有很多不同类型的软件系统。正是由于不同的软件系统需要不同的技术,所以试图为软件工程寻求通用的符号系统、方法和技术是毫无意义的。开发一个机构信息系统和开发一个科学仪器的控制器是完全不同的。而这些系统都跟图形密集型的计算机游戏没有太多的共同点。所有这些应用都需要软件工程,但不是都需要相同的软件工程技术。
现在仍有许多有关软件项目出问题和“软件失败”的报道。软件工程因不能充分支持现代软件的开发而遭非议。然而,在我看来,这些所谓的软件失败源于以下两方面的原因:
1.不断增长的需求由于新的软件工程技术可以帮助我们构建更大更复杂的系统,用户的需要因而在发生改变。系统必须更快速地构建并交付;需要更大更复杂的系统;系统必须具备在以前看来不可能实现的功能。现有的软件工程方法已经不能应对新形势,而新的软件工程技术还有待于进一步发展。

内容简介
《软件工程(原书第9版)》是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的不断发展,不断更新版本,影响了一代又一代软件工程人才,对学科本身也产生了重大影响。本版保留了上一版中的软件工程的基本材料,但对各章都进行了修改和更新,并增加了很多有关其他主题的新材料。
《软件工程(原书第9版)》包含四个部分:第一部分是对软件工程的一般性介绍,包括软件工程过程和敏捷开发,以及面向对象的设计和设计模式的使用;第二部分介绍可依赖性和信息安全性问题;第三部分介绍高级软件工程;第四部分介绍软件管理,重点介绍技术管理问题。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多