基本信息
- 原书名:Software Engineering 6th Edition
- 原出版社: Pearson Education

内容简介
计算机书籍
本书是英国著名软件工程学家Ian Sommerville系统介绍软件工程理论的力作,以要求极高的一类系统为实例,精辟透彻地阐述了软件工程的内涵。作者在第2篇中详细阐述了软件系统需求的内容、过程和描述方法,尤其是对形式化描述有详细的介绍和分析;在第3篇中针对主要类型系统的设计问题和重要的设计方法展开介绍,主要介绍了分布式系统设计、实时系统设计和用户界面设计,同时从体系结构、面向对象以及复用等视角对设计过程进行了精辟阐述;在第4篇和第5篇中,主要以实时系统为对象,介绍了系统的一系列重要特性及其度量方法,以及生命周期中包含的软件工程过程(如验证和测试等)内容和方法,内容翔实而透彻。在第7篇中作者对遗留系统处理和软件进化理论给出了高屋建瓴的分析,对软件改造的实践者来说无疑是一盏指路明灯;除此之外,作者还在第1篇和第6篇中对软件工程过程的诸多管理方面(如人员管理、项目管理、过程管理、成本估计和质量管理等重要方面)有极为详细的介绍和分析。
本书是软件工程学界的经典,被众多世界知名大学所采用,既有理论高度又有具体操作方法,对于软件工程的管理者和参与者来说都是不能不看的好教材。
该书英文原版设有专门的网站(<a href="http://www.software-engin.com/" target="_blank">www.software-engin.com</a>),提供了对该书相关资料的链接,以帮助那些将该书用于教学和自修的人们。主要包括教师参考手册、幻灯片、书中程序实例源代码以及CASE和形式化描述的额外材料。
<font color="#CC0000">试读:</font><a href="http://www.china-pub.com/temporary/list/cooperate/zipdownload/rjgc1-4.zip" target="_blank">1-4章(ZIP)</a>
作译者
Ian Sommerville英国著名软件工程专家,兰卡斯特大学软件工程学教授。Iam Sommerville教授在软件工程的教学和科研方面有20多年经验。目前他的研究兴趣包括计算机系统工程、需求工程、系统可靠性以及软件进化。
目录
第1章 概述
1.l 软件工程中的常见问题
1.1.l 什么是软件
1.1.2 什么是软件工程
1.l.3 软件工程和计算机科学有何区别
1.l.4 软件工程和系统工程有何区别
1.1.5 什么是软件过程
1.1.6 什么是软件过程模型
1.1.7 什么是软件工程的成本
1.1.8 什么是软件工程方法
1.1.9 什么是 CASE
1.1.10 什么是优良软件的属性
1.1.11 软件工程所面临的主要问题是什么
1.2 职业和道德上的责任
要点
进一步的阅读资料
练习
前言
即使是最简单的软件系统也有其固有的复杂性,因此,必须在软件开发中使用工程原则。软件工程是这样一个工程学科,即软件工程师用计算机科学中的方法和理论,在考虑成本效益的情况下,将其用于解决软件开发中的复杂问题,这些复杂问题的存在意味着许多软件开发项目的进行并不总是成功的。然而,绝大多数的现代软件能为用户提供好的服务,我们不应该让某些失败遮挡了过去30年中软件工程师们的巨大成功。
软件工程在为国防、政府和工业部门开发大型的、定制的软件系统中得到了发展。我们现在所开发的软件较以前具有更广的范围,从专门游戏设备上的游戏软件、个人计算机上运行的软件和基于Web的网络系统再到大规模的分布式系统。虽然有些技术是从定制系统开发中发展出来的,例如:面向对象的开发方法,但这些技术也同样是普遍适用的,新的软件工程技术正渗透到各种不同类型的软件开发过程当中。在这本书中不可能概括所有技术,因此,本书只针对那些大型系统开发技术进行分析,而不对个别产品中的技术进行过多阐述。
虽然本书是对软件工程的介绍,但由于作者对软件需求工程和要求极高的一类系统具有浓厚的兴趣,因此,本书对这两个方面有较大的侧重。在21世纪,我们面对的挑战是在确保软件能满足用户需要的同时不会对用户及其周围环境造成伤害。作者认为这些对于软件工程来说是至关重要的。
本书是要将软件工程全方位地展现给读者,而不是介绍某种特别的方法或具体的工具。作者不赞同对学院派的布道式的形式化方法的过分热衷,也不赞同对兜售的任何声称能解决软件开发问题的工具或方法的迷信。事实上,并不存在解决软件工程问题的灵丹妙药,我们需要的是广泛的技术和工具以解决软件工程问题。
每本书都不可避免地反映作者的个人观点甚至是偏见。可能有些读者与我观点相左,对我书中选择的材料不满意。存在不同意见是非常正常的,对软件工程的发展也是有益的。尽管如此,我还是期待所有的软件工程师和软件工程的学生能从本书中找到自己感兴趣的东西。对第5版的修改像许多软件系统一样,本书自1982年第1版问世以来进行了多次的修改和完善。对第5版的一个修改目标是要减少本书的字数,这对我来说是一件非常困难的选择,我必须在压缩字数的同时保留书中那些重要的内容,同时还要添加一些重要的新素材。结果是第6版较第5版的字数缩减了10%。其中主要的改动如下:
由前一版的8大部分改为7大部分,包含软件工程介绍、描述、设计、要求极高的系统开发、校验和有效注验证、管理和软件进化。
增加了有关软件过程、分布式系统体系结构、可靠性和遗留系统等几章。形式化描述部分缩减成一章,同时将CASE的有关材料进行了适当缩减并分散在不同的章节中介绍。
功能设计的介绍放在遗留系统那一章。校验和有效性验证合并成一章。对所有的章节都进行了修改,对部分章节进行了全面的改写。对复用的研究集中在基于复用的开发、基于模式信息的开发以及基于组件的开发;面向对象的设计已经不仅仅局限为过程的焦点;有关需求的那部分章节分成需求和需求工程过程两大部分。成本估计已更新为COCOMO 2。
概览篇包括4章。原先分散在第5版中的介绍材料全在这一篇介绍。第1章完全改写成有关软件工程的常见问题。
有关要求极高的系统的内容被重新组织和整理以便对可靠性、安全性和可用性进行集中的阐述。将保密性作为要求极高的一类系统的一个属性进行了相应的阐述。
书中的程序用Java书写,对象模型全部用UML来描述。Ada和C++的程序实例已经被删除,但仍可以从作者的网站上得到。
每章中有关进一步阅读部分进行了适当的改动,然而,在某些情况下,作者在20世纪80年代写的一系列文章现在看来仍然是相关主题的最佳介绍。
读者对象
本书适合作为在校本科生和研究生的教科书及软件工程师的参考书,也可以作为通用软件工程课程或高级程序设计、软件描述、软件设计或软件管理课程的教科书。软件从业者同样可以将其作为一般阅读材料来充实自己在某一方面的知识,如:需求工程学、体系结构设计、可靠的系统开发和过程改善等专题。不管用于哪些方面,本书都针对软件工程师必须掌握的不同应用类型给出了相应的实例。
本书的读者应当熟悉程序设计、现代计算机系统知识和基本数据结构,如堆栈、列表和队列等基本知识。
用本书作为教材
有三种主要类型的软件工程课程可以用本书作为教材:
1.对软件工程的一般性介绍对在此之前没有任何软件工程经验的学生,可以从第1篇开始,对后续章节可以大胆取舍,以合适为原则。这将会给所有学生一个总体介绍,同时给那些有浓厚兴趣的学生进一步阅读创造了条件。
2.对软件工程的某些专题的介绍可以作为软件需求描述、软件设计、软件工程管理、可靠的系统开发和软件进化专题的教材。书中每个专题部分都可以根据需要作为该专题的一般性教材。另外还介绍了一些附加的阅读材料。