前 言Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese Abridgement
如果有这样一款计算机软件,它能满足用户的需求,能在相当长的时间内无故障地运行,修改起来轻松便捷,使用起来更是得心应手,那么,这款软件必定是成功的,它切实改善了我们的生活。但是,如果有这样一款软件,它令用户失望,错误频出,修改起来困难重重,使用起来更是举步维艰,那么,这必定是一款失败的软件,它使我们的生活一团糟。谁都希望开发出优秀的软件,为我们的生活带来便利,而不是把自己陷入失败的深渊。要想使软件获得成功,在设计和构建软件时就需要有规范,需要采用工程化的方法。
自本书第1版问世以来的近35年中,软件工程已经从少数倡导者提出的一些朦胧概念发展成为一门正规的工程学科,已被公认为是一个值得深入研究、认真学习和热烈讨论的课题。在整个行业中,软件工程师已经代替程序员成为人们优先选择的工作岗位,软件过程模型、软件工程方法和软件工具都已在全行业的所有环节成功采用。
尽管管理人员和一线专业人员都承认需要有更为规范的软件方法,但他们却始终在争论应该采用什么样的规范。有许多个人和公司至今仍在杂乱无章地开发着自己的软件,甚至即使他们正在开发的系统要服务于当今最为先进的技术,状况也仍是如此。许多专业人员和学生并不了解现代方法,这导致他们所开发的软件质量很差,因而造成了严重的后果。此外,有关软件工程方法真实本质的争论一直持续进行着。软件工程的地位问题已成为一门对比研究课题。人们对软件工程的态度已经有所改善,研究工作已取得了进展,不过要成为一门完全成熟的学科,我们还有大量的工作要做。
我们希望本书能够成为引导读者进入正在走向成熟的软件工程学科的入门读物,和以前的7个版本一样,第8版对学生和专业人员同样具有很强的吸引力。它既是软件专业人员的工作指南,也是高年级本科生和一年级研究生的综合性参考书。
第8版中包含了许多新的内容,它绝不只是前一版的简单更新。这一版不仅对内容做了适当的修改,而且调整了全书的结构,以改进教学顺序;同时更加强调一些新的和重要的软件工程过程和软件工程实践知识。此外,本书进一步加强了“支持系统”,为学生、教师和专业人员提供了更为丰富的知识资源。读者可访问专门为本书建立的网站(www.mhhe.com/pressman)查阅这些信息。
篇章结构本书共26章,分为四个部分。这种划分有利于那些无法在一个学期内讲完全书内容的教师灵活安排教学。
第一部分“软件过程”给出了有关软件过程的各种不同观点,讨论了所有重要的过程模型,还涉及惯用过程和敏捷过程在指导思想上的分歧。第二部分“建模”给出了分析方法和设计方法,重点讲解面向对象方法和UML建模。第三部分“质量管理”介绍了有关质量管理的概念、规程和方法,使得软件团队能够很好地评估软件质量,实施软件质量保证规程,并正确地运用有效的测试策略和战术。第四部分“管理软件项目”介绍了与计划、管理和控制软件开发项目的人员有关的问题。
第8版沿用了前面几个版本的做法,在各章中都提供了大量的辅助阅读信息,包括一个虚拟软件团队在工作中遇到困难时展开的对话,还包括对各章相关知识给出的补充方法和工具。
致谢我们要特别感谢渥太华大学的Tim Lethbridge,他帮助我们开发了UML和OCL的案例,以及配合本书内容的其他案例研究。Colby学院的Dale Skrien开发了附录1的UML教辅资源。他们的帮助和意见都是十分宝贵的。此外也感谢高级软件工程师Austin Krauss,他提供了关于视频游戏产业软件开发的宝贵意见。同时,要对为第8版评审做出贡献的几位教授表示感谢,他们是佛罗里达大学的Manuel E. Bermudez、堪萨斯州立大学的Scott DeLoach、密歇根州立大学的Alex Liu和犹他州立大学的Dean Mathias。正是他们的详尽而真诚的评审意见帮助了我们,使得本书更加完善。
特别感谢十分高兴有机会与罗杰合作,参与本书第8版的撰写工作。在此期间我的儿子Benjamin推出了他的第一款移动App,我的女儿Katherine开始了她的室内设计生涯。我十分高兴地看到他们已经长大成人。同时非常感谢妻子Norma,她热情地支持我,使我能够将所有空闲时间都投入本书的写作。
布鲁斯R. 马克西姆(Bruce R. Maxim)随着本书各版本的不断推出,我的两个儿子Mathew和Michael也逐渐从小男孩成长为男子汉。他们在生活中的成熟、品格和成功鼓舞着我,没有什么比这更让我自豪了。他们现在也已经有了自己的孩子——Maya和 Lily,这两个女孩已经是移动计算时代新智能设备方面的奇才。最后要感谢妻子Barbara,她宽容我花费如此多的时间在办公室工作,并且还鼓励我继续写作本书的下一个版本。
罗杰 S.普莱斯曼(Roger S. Pressman)
改编者序Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese AbridgementPressman博士的《软件工程:实践者的研究方法》(第8版)加入了Maxim博士的工作,一如既往是软件工程领域的经典教材。
此次本科教学版的推出,主要是为了与第7版本科教学版保持一致,使内容更符合普通高校本科生的课程大纲,适合本科学生在一学期内掌握软件工程最核心的基础内容,也帮助更多学生更好地接受英文原版教材。
与原版相比,第8版本科教学版的改动内容如下。
我们注意到新版增加了移动App和安全工程这两块非常重要的内容。然而,考虑到课时限制,我们只保留了安全工程部分,将移动App的内容留给研究生课程。与第7版的改动宗旨相似,我们主要关注公共框架中的基本概念,而将WebApp、移动App、度量及其他高级课题内容留给研究生阶段的课程。
本科教学版不包含但适合研究生阶段学习的章节有:完整版第16章(基于模式的设计),第17章(WebApp设计),第18章(移动App设计),第20章(评审技术),第25章(测试WebApp),第26章(测试移动App),第28章(形式化建模与验证),第36章(维护与再工程),以及关于高级课题的第五部分。完整版第30章(产品度量)也是比较高级的课题,但概要介绍框架性概念的30.1节可保留,此节被移到第21章(软件质量保证)最后,变为21.10节。
此外,为了与第7版本科教学版保持一致,下列章节中还做了少量裁减:
1. 所有与WebApp和移动App相关的章节都被删除,具体包括:11.5节、14.5节、15.5节、22.5~22.6节、29.4节、32.2.6节、34.5.4 节。
2. 第3、4章:裁减3.5节和4.4~4.5节属于研究生课程中的高级内容。
3. 第7章:该章只是引言,其核心内容将在后面的章节中逐一展开介绍。为减少学生必须阅读的篇幅,该章被整体删除。
4. 第8章:裁减8.2.5~8.2.6节、8.6~8.8节属于研究生课程中的高级内容。
5. 第23章:裁减23.4.4节、23.6.1节、23.6.4节、23.8~23.10节属于研究生课程中的高级内容。
6. 对于本科课程而言,了解关于度量和估算的基本概念就足够了,因此32.4~32.6节以及33.9~33.10节也作为高级内容被裁减。
经过压缩,英文完整版900余页的篇幅被大幅压缩到中文版400页左右。由于我们只是就知识点做了裁减,对于保留部分并未删减原作的语言和案例,所以不会对写作风格造成明显的破坏。鉴于改编者的经验和学识有限,对于裁减内容的定夺或存在欠妥之处,欢迎广大读者批评指正。
陈越2016年11月译 者 序Software Engineering: A Practitioner’s Approach, Eighth Edition, Chinese Abridgement本书是国际知名软件工程专家罗杰 S. 普莱斯曼(Roger S. Pressman)的最新著作。自35年前第1版问世以来,这本书在软件工程界产生了巨大而深远的影响。其权威性是无可置疑的,在培养软件工程专业人才方面所起的作用也是显而易见的。在这一版中,新加入的布鲁斯(Bruce)作为第二作者参与了本书的编写工作。
我自20世纪80年代中期开始从事高校软件工程方面的教学与科研工作,多年来,这本书的各个版本一直是我的重要参考书,它给了我许多启发和帮助,我也曾多次向许多业界好友和学生推荐此书。
如今基于计算机的系统已经广泛而深入地渗透到经济、国防和人们日常生活的各个领域,特别是在互联网的推动下,不仅许多行业得以改进和更新,而且产生了一批新的行业,展现了全新的业态。我们必须意识到,在计算机不断向社会的深度和广度层面发展的过程中,软件始终处在系统的核心地位,起着中枢和灵魂的作用,而且这种作用正日益突出。因此,如何为现代化系统配备合格和优良的软件也就更加受到人们的广泛关注。
本书系统地论证了软件工程领域的基本知识和最新研究成果,包括新的概念、原则、技术、方法和工具。同时书中还为读者提供了进一步学习和研究的线索,包括许多可供利用的网上资料和信息。与第7版相比,本版继承了一些优点,同时也做了一些改动、扩充和更新。
本书特点1. 全书内容分为四个部分,共26章,还包括两个附录。四个部分的内容分别为软件过程、建模、质量管理和管理软件项目。
2. 本书继承了前一版的特色,突出了软件质量管理的内容,同时也加强了软件过程部分。此外,增加的内容还包括:软件工程工作对人员的要求;近年来软件产业发展中出现的新课题——软件系统安全性和移动App。
3. 仍然在各章的开头给出“要点浏览”(包括概念、人员、重要性、步骤、工作产品和质量保证措施)以及“关键概念”(全章内容的关键词)。
4. 仍然在各章的末尾给出“习题与思考题”以及“扩展阅读与信息资源”,这些都非常适合有兴趣、有需要的读者沿着所提供的线索开展进一步的学习和研究。
5. 仍然保留了本书历次版本在各章中为读者提供的多种形式的辅助阅读信息,可以说这是本书的一个突出特点。这些信息从形式上分为两类:一类是采用通栏形式的说明框,包括要点浏览、信息栏、软件工具和SafeHome对话框等。
……
Roger S. Pressman软件过程改善和软件工程技术方面的国际知名人士,目前还担任R. S. Pressman and Associates 公司总裁。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终工作在软件工程领域。Pressman博士著有6部著作,并撰写了很多技术文章,是多种行业期刊的固定撰稿人,曾任多个行业杂志的编委,多年来一直担任 《IEEE Software》杂志的Manager专栏的编辑。Pressman博士是知名的演讲者,曾在许多行业会议上演讲,他还是美国计算机协会 (ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。