基本信息
- 原书名:Software Architecture in Practice(Second Edition)
- 原出版社: Addison Wesley/Pearson
- 作者: [美]Len Bass,Paul Clements,Rick Kazman
- 丛书名: 卡内基·梅隆大学软件工程丛书
- 出版社:清华大学出版社
- ISBN:7302070431
- 上架时间:2003-9-12
- 出版日期:2003 年8月
- 开本:32开
- 页码:584
- 版次:2-1
- 所属分类:计算机 > 软件工程及软件方法学 > 综合
教材 > 研究生/本科/专科教材 > 工学 > 计算机
教材 > 计算机教材 > 本科/研究生 > 计算机专业教材 > 计算机专业课程 > 软件工程
内容简介
计算机书籍
[font color="#FF6600">软件工程师不容错过的好书!
它结构清晰,内容丰富,是每个软件工程师必读的参考书。
——Martin于美国波士顿[/font>
本书在第1版的基础上,根据软件生命期的特点。分预想构架、创建构架,分析构架和从一个系统到多个系统进行阐述。本书对第1版某些内容进行了深入介绍,并增添了一些新内容:ATAM、质量需求、构架重构、用UML对构架编档和CBAM等。此外,本书还对一些新案例进行了分析,以帮助理解软件构架如何适应商业需求。 本书是卡内基·梅隆大学软件工程研究所推荐教材,荣获美国权威的"软件开发"杂志第九届图书效率大奖。本书可作为软件学院及高校相关专业本科生和研究生的教材,也适合业界人士研究参考。
目录
第1章 构架商业周期
1.1 构架的产生
1.2 软件过程和构架商业周期
1.3 什么样的构架才算好
1. 4 小结
1.5 讨论题
第2章 什么是软件构架
2.1 软件构架概念的澄清
2.2 其他观点
2.3 构架模式、参考模型和参考构架
2.4 为什么说软件构架非常重要
2.5 构架结构和视图
2.6 小结
2.7 可进一步参阅的文献
2.8 讨论题
第3章 A-7E航空电子系统:使用构架结构的案例分析
3.1 与构架商业周期的关系
3.2 需求与质量
3.3 A-7E航空电子系统的构架
前言
在设计和分析大型的、复杂的以软件为主的系统方面的经验,使我们认识到软件行业和开发组织对这些系统的设计及最终成败所起的作用。构建系统的目的是为了满足组织的需求(或者是预先假设的需求),这些需求决定了系统的性能、可用性、安全性、与其他系统的兼容性以及在生命期内适应变化的能力。系统的这些属性都是受软件构架制约的,或者说,上述属性的实现影响着软件设计师的设计选择。
本书通过对一些现实系统的案例分析,阐述了如何把软件构架与行业或组织的实际情况相结合的问题。这些实例包括如下内容:
.在最小程度的集中控制下,在本组织范围内快速、方便地共享文档的设想如何最终转化为万维网的软件构架。
.在空中交通管制中,对安全性的极高要求如何使公司围绕可实现极高可用性的构架构建系统。
.分散在各地的不同开发人员开发的飞行模拟器子系统如何连接成一个构架,以便于各子系统的集成。
.为满足产品同时交付的需求而促使(或者说强迫)公司采用某个适当的构架,从而使该公司能够将一组复杂的相关软件系统构建为一个产品线。
.在组织间和团体内标准化构架方法的需要导致了诸如J2EE和EJB这样的基础结构。
上述及其他一些案例分析向读者展示了如何根据组织和其业务模型的需求、设计师的经验或主流设计方式来构建合适的软件构架。
另外,我们也讨论了软件构架本身对上述诸因素的影响。一个或一组成功的产品能够影响其他产品的开发方式,对万维网软件构架的案例分析无疑就是一个很好的例子。在该系统诞生之前,考虑网络需求的软件很少。当时很少考虑数据的可访问性,只有少数几家组织(一般是金融组织或政府部门)考虑安全问题。
本书的读者对象是软件专业人员--即设计和实现大型的以软件为主的系统的人士、软件专业人员的管理人员和希望成为软件专业人士的学生。
作为开发产品,软件构架在质量、进度和成本方面具有极高的投资回报。这是因为软件构架出现于产品生命期的早期阶段,合理的构架为系统生命期的其他阶段--开发、集成、测试和更改--奠定了良好的基础。相反,如果构架选择不当,就意味着系统的整体结构有误,而且无法通过细小的修补或删除某些部分得到更正,即经常导致要全部拆解重建。另外,与其他的开发活动相比,构架分析的投入较低。由于在构架方面所做的决策对以后阶段的开发有着重大影响,并且对构架的检查和修正代价相对较低,因此,软件构架能够实现极大的投资回报。
另外,我们认为可重用的组件只有在良好的构架下才会发挥应有的作用。组件也并非是惟一能够重用的部分。构架的重用有利于相类似的系列产品的开发,而这反过来又将导致新的组织结构和新的商机。
本书用大量篇幅讲述了一些用于解决组织的现实问题的具体构架。精选这些案例旨在说明设计师必须根据具体的质量目标做出各种选择,以及组织的目标对最终系统的影响。
除了上述案例分析外,本书还讲述了软件构架设计、构建和评价方面的若干技巧。我们从理解对构架的实际质量要求和构建满足这些要求的构架的角度来阐述这些技巧。我们把构架表示和重构技术看作是描述和验证软件构架的手段。我们从分析和评价某个构架与其目标的符合程度来讨论这些技巧。书中所有技巧都来自我们自己和在卡内基.梅隆大学工作的同事分析各种软件系统的经验。我们分析的一些系统长达数百万行代码,是由大软件开发商历经数年开发出来的。
尽管关于商业问题的讨论贯穿全书(如软件构架会如何影响组织的市场竞争力、系列产品的构架将如何影响产品上市时间),我们并没有深入讨论企业经营的问题,也没有使用企业经营方面的专业术语。毕竟,我们是软件工程师。相比之下,关于技术的讨论要深入得多。这些技术方面的内容代表了当前软件构架研究的现状--即当前该领域研究与实践相结合的程度,这也是全书的理论基础。书中的案例分析进一步阐明了这些基础,并向读者展示了这些理论知识如何应用于实践。为了从案例分析所说明的经验教训中获益,您需要具备计算机科学、软件工程和相关学科的一些背景知识。但是,我们在撰写这些案例时也做了一定的处理,使得读者无需过多了解相关领域的专业知识就可理解这些案例。例如,理解空中交通管制系统或分行模拟案例分析都不要求具备飞行员的专业知识。
本书第2版与第1版的目的相同,但自第1版问世后,软件业已经有了新的发展,对软件构架的重要基础也有了新的理解。为了说明这些变化,本书采用了新的案例进行了分析,添加了新章节,并对某些章节进行了深入分析。此外,自第1版问世后,我们共同编写的其他几本书对第2版产生了很大影响,它们分别是《软件构架编档》、《软件构架评估》和《软件产品线--实践与模式》。这几本书和其他技术及研究活动对本书的编写产生了很大影响。自第1版推出后,构架分析、设计、重构和编档都有了很大发展,本书就反映了这一变化。
构架分析已经发展成为一个成熟的领域,已经出现了几个主要的构架分析方法。第Ⅲ部分增加了一章,对ATAM(构架权衡分析方法)进行了阐述。软件业的许多组织都把ATAM作为评估软件构架的方法。
自第1版问世后,构架设计也有了很大发展。质量需求的获取、其通过小规模和大规模方法的实现(分别为策略和模式)以及反映如何实现它们的知识的设计方法都在各章进行了讨论。本书增加了如下3个章节:理解质量属性、实现质量属性和ADDM(属性驱动设计方法)。
对于获取未编档的构架来说,构架重构(或反向工程)是一个基本的活动。可以把构架重构作为设计项目或分析项目的一部分,或者在决定把什么作为重构系统的基础时,将其作为考虑因素。在第1版中,我们简要提及了工具集(Dali)及其在反向工程环境中的使用,在第2版即本书中,我们对其进行了详细深入的介绍。
序言
CMU/SEI为了达到这个目的,提出了创造、应用和推广的战略。这里的"创造"是指与软件工程研究社团一起,共同创造新的实践或改进原有的实践,而不墨守成规。这里的"应用"是指与一线开发人员共同工作,以应用、改进和确认这些新的或改进的实践,强调理论联系实际。这里的"推广"是指与整个社团一起,共同鼓励和支持这些经过验证和确认的、新的或改进的实践在世界范围内的应用,通过实践进行进一步的检验和提高。如此循环,往复无穷。
他们把所获得的成就归纳为两个主要领域。一个是倡导软件工程管理的实践,使软件组织在采办、构建和改进软件系统时,具有预测的能力与控制质量、进度、成本、开发周期和生产效率的能力。另一个是改进软件工程技术的实践,使软件工程师具有分析、预测和控制软件系统属性的能力,其中包括在采办、构建和改进软件系统时,能进行恰当的权衡,作出正确的判断和决策。CMU/SEI通过出版软件工程丛书,总结他们的研究成果和实践经验,是推广这两个领域经验的重大举措。
卡内基.梅隆大学软件工程丛书由CMU/SEI和Addison-Wesley公司共同组织出版,共分4个部分:计算机和网络安全(已出版了2本著作),工程实践(已出版了8本著作),过程改进和过程管理(已出版了11本著作),团队软件过程和个体软件过程(已出版了3本著作)。前两者属于软件工程技术实践,后两者属于软件工程管理实践。目前这4个部分共出版了24本著作,以向软件工程实践人员和学生方便地提供最新的软件工程信息。这些著作凝聚了全世界软件工程界上百位开拓者和成千上万实践者的创造性劳动,蕴含了大量的宝贵经验和沉痛教训,很值得我们学习。
清华大学出版社邀请我和郑人杰教授共同组织卡内基·梅隆大学软件工程译丛编委会。清华社计划首先影印6本著作,翻译出版15本著作。据我所知,在Addison-Wesley公司出版的SEI软件工程丛书中,人民邮电出版社已经翻译出版了《个体软件过程》和《团队软件过程》,还拟影印出版《个体软件过程》和《软件工程规范》;电子工业出版社已经翻译出版了《净室软件工程的技术与过程》、《能力成熟度模型CMM1.1指南》、《能力成熟度模型集成CMMI》和《软件项目管理》;北京航空航天大学出版社已经翻译出版了《统计过程控制》。这些出版社共计影印2本著作,翻译出版7本著作。这样,可以预期我国在今年年底共可影印8本著作,翻译出版22本著作。各个出版社的有远见的辛勤劳动,为我们创造了"引进、消化、吸收、创新"的机遇。我们应该结合各自的实践,认真学习国外的先进经验,以大大提高我国软件工程的理论和实践水平。
在这套丛书中,特别值得一提的是,在过程工程领域被誉为软件过程之父的Humphrey先生所撰写的《软件过程管理》、《技术人员管理》、《软件工程规范》、《个体软件过程》、《团队软件过程》和《软件制胜之道》等6本著作,将于今年年内全部翻译出版,其中《软件过程管理》、《技术人员管理》、《软件工程规范》、《个体软件过程》和《软件制胜之道》等5本著作亦已经或将于今年年内影印出版。
《软件过程管理》是软件过程领域的开创性著作,是为软件公司经理和软件项目经理撰写的。用这本书提出的原理来指导软件开发,可以有效地按照预定进度得到高质量的软件,同时还可了解如何持续进行过程改进。美国CMU/SEI按照这本书提出的原理开发了能力成熟度模型,在国际上得到绝大多数国家的认可和广泛采用,是改进软件过程能力的有力武器。在信息技术迅速发展和企业激烈竞争的今天,能否持续改进过程往往决定企业的命运。
作为一个软件经理,在改进组织的能力之前,首先必须明确绝大多数软件问题是由管理不善所引起的。因此,要改进组织的性能,首先需要改进自己的管理模式。同时还要认识到软件开发是一项智力劳动,需要拥有掌握高技能和忘我工作的技术人员。因此,有效的软件管理需要充分注意技术人员的管理。
《技术人员管理》这本著作就是为达到这个目的而撰写的。高质量的技术工作要求没有差错,这就要求人们高度专心和高度献身。因此要求人们对他所从事的工作不仅具有高度的责任感,而且具有浓厚的兴趣和高度的热忱。在当前知识经济群龙相争的今天,一个能激励人们进行创造性工作的领导群体,是众多竞争因素中最重要的因素。本书提供了大量的实用指南,可用来有效地改进工程人员、经理和组织的性能。
Humphrey先生还认为这本书特别适合于在我国工作的软件经理。我国是一个人口大国,拥有大量能干的知识分子,而且信息领域的劳动力价格比国际市场的价格要低,因此吸引了许多国家到我国来投资。但若不提高人员的素质,不在产品质量和进度方面也狠下功夫,就不能在这方面持续保持优势。
《软件工程规范》是为编程人员撰写的。它精辟地阐述了个体软件过程(PSP)的基本原理,详尽地描述了人们如何来控制自己的工作,如何与管理方协商各项安排。在软件工程界,这本著作被誉为是软件工程由定性进入定量的标志。目前在世界范围内,有成千上万的软件工程技术人员正在接受有关PSP的培训,以便正确地遵循PSP的实践、开发和管理工作计划,在他们承诺的进度范围内,交付高质量的产品。
《软件制胜之道》这本著作描述了团队软件过程的基本原理,详尽地阐述了在软件组织中如何应用PSP和TSP的原理以及它所能带来的效益。此外,虽然CMM同样适用于小型组织,但在其他著作中都没有描述如何应用CMM于个体或小型团队,这本书填补了这个空白。应该指出,如果一个组织正在按照CMM改进过程,则PSP和TSP是和CMM完全相容的。如果一个组织还没有按照CMM改进过程,则有关PSP和TSP的训练,可以为未来的CMM实践奠定坚实的基础。
在软件工程技术实践方面目前共出版了10本著作,其中《用商业组件构建系统》、《软件构架实践》和《软件构架评估--方法和案例研究》等3本著作详尽地阐述了软件构架的构建、实践和评估。鉴于是否有一个稳定的软件构架,对软件的质量和成本影响很大,因此如何获得一个良好的构架就成为当今软件界研究的重点。我相信这几本著作的出版,将对我国软件构架领域的研究与实践有重要的参考价值。此外,众所周知,计算机与网络的安全问题对信息系统的可靠使用关系极大,《CERT安全指南》的出版将会对我国在这一领域的研究和实践起积极的促进作用。《风险管理--软件系统开发方法》、《软件采办管理--开放系统和COTS产品》、《项目管理原理》、《软件产品线--实践与模式》和《系统工程--基于信息的设计方法》等5本著作,分别从风险管理、软件采办、项目管理、软件产品线以及信息系统设计方法等几个方面阐述了大型、复杂软件系统的开发问题,是有关发展软件产业的重要领域,很值得我国软件产业界借鉴。
目前我们所处的时代是信息化时代,是人类进入能够综合利用物质、能量和信息三种资源的时代。千百年来以传统的物质产品的生产、流通、消费为基本特征的物质型经济,将逐步进入以信息产品的生产、流通、利用和消费为基本特征的知识型经济。在这个历史任务中,建造和广泛应用各类计算机应用系统是其公共特征。计算机软件是计算机应用系统的灵魂,没有先进的软件产业,不可能有先进的信息产业,从而也不可能建成现代化的知识型经济。
我们应该看到,在软件领域中我国在总体上离世界先进水平还有相当大的差距。但是,我们不能跟随他国的脚印,走他人的老路。我们应该抓住机遇,直接针对未来的目标,在软件工程技术和软件工程管理两个方面,注意研究卡内基.梅隆大学软件工程丛书中倡导的原理和方法,联系实际,认真实践,并充分利用我国丰富优秀的人力资源和尊重教育的优良传统,大力培养各个层次的高质量的软件工程人员,使其具有开发各类大型、复杂软件系统的能力。我衷心地预祝清华大学出版社影印和翻译出版这套丛书,在把我国建设成为一个真正现代化的软件产业大国的历史任务中起到推波助澜的作用,并请读者在阅读这些译著时,对这套丛书的选题、译文和编排等方面都提出批评和建议。
周伯生
于北京
2002年8月18日