本书介绍了当前最常见的软件体系结构及其技术走向。全书共9章,包括:绪论;体系结构风格;实例分析;共享信息系统;体系结构设计指导;形式模型与规格说明;语言学问题;体系结构设计的工具;软件设计教育。
本书案例内容翔实,解说深入浅出,可作为高等院校“软件体系结构”课程教材和“软件工程”或“软件设计”课程的补充教材,也可供软件开发和项目管理人员使用。
Chapter1 Introduction
1.1 What Is Software Architecture
1.2 An Engineering Discipline for Software
1.3 The Status of Software Architecture
1.4 The Plan of This Book
Chapter2 Architectural Styles
2.1 Architectural Styles
2.2 Pipes and Filters
2.3 Data Abstraction and Object-Oriented Organization
2.4 Event-Based, Implicit Invocation
2.5 Layered Systems
2.6 Repositories
2.7 Interpreters
2.8 Process Control
2.9 Other Familiar Architectures
2.10 Heterogeneous Architectures
Chapter 3 Case Studies
3.1 Key Word in Context
3.2 Instrumentation Software
3.3 Mobile Robotics
3.4 Cruise Control
3.5 Three Vignettes in Mixed Style
Chapter 4 Shared Information System
4.1 Shared Information System
4.2 Database Integration
4.3 Integration in Software Development Environments
4.4 Integration in the Design of Buildings
4.5 Architectural Structures for Shared Information Systems
4.6 Some Conclusions
Chapter 5 Architectural Design Guidance
5.1 Guidance for User-Interface Architectures
5.2 The Quantified Design Space
Chapter 6 Formal Models and Specifications
6.1 The Value of Architectural Formalism
6.2 Formalizing the Architecture of a Specific System
6.3 Formalizing an Architecture Style
6.4 Formalizing an Architecture Design Space
6.5 Toward a Theory of Software Architecture
6.6 What Next?
6.7 Z Notation Used in This Chapter
Chapter 7 Linguistic Issues
7.1 Requirements for Architecture-Description Languages
7.2 First-Class Connectors
7.3 Adding Implicit Invocation to Traditional Programming Languages
Chapter 8 Tools for Architectural Design
8.1 UniCon: A Universal Connector Language
8.2 Exploiting Style in Architectural Design Environments
8.3 Beyond Definition/Use: Architectural Interconnection
Chapter 9 Education of Software Architects
9.1 Philosophy and Course Overview
9.2 Course Description
9.3 Assignments
9.4 Evaluation
Bibliography
Index
“软件工程”是自20世纪60年代起针对所谓“软件危机”而发展起来的概念。它是指将工程化的方法应用到软件开发中,以求优质高效地生产软件产品。其中综合应用了计算机科学、数学、工程学和管理科学的原理和方法。自从这—概念提出以来,软件开发方法从60年代毫无工程性可言的手工作坊式开发,过渡到70年代的结构化分析设计方法、80年代初的实体关系方法,直到当今所流行的面向对象方法,经历了根本性的变革。随着时代的发展,软件项目管理人员越来越需要从系统和战略的角度来把握项目的方向,引导开发向更高层次发展。在这方面,国外的知名企业和研究机构已经总结了相对成熟的一套知识和方法体系,并在实践中获得了相当大的成功。这里我们就从著名的培生教育出版集团(Pearson Education Group)选取了—些软件工程与方法类的有代表性的教材影印出版,以期让国内的读者尽快了解国外此领域的发展动态,分享国外专家的知识和经验。以下对每本书的内容作一些简要的介绍,以便读者选择。
在Internet广泛普及的今天,软件承载着越来越重要的使命,工程化的开发必须能够提供健壮性和普适性更好的产品。Scott E.Donaldson和Stanley G.Siegel合作编著的《成功的软件开发》 (Successful Software Development)一书从“软件系统开发无定式”这一事实出发,引入了一个灵活而成熟的开发过程模型一一系统工程环境(Systems Engineering Environment,SEE)。该模型包含两个互相联系的基本要素:确定软件开发策略和规程,以及可用于实现目标的技术。围绕这一模型,书中对开发过程中关系项目成败的各种关键问题进行了透彻的论述,可作为软件开发团队的全程培训教材。
软件工程经过几十年的发展,其关键环节——需求分析和管理终于得到了真正的重视。伴随认识的深化和案例的丰富,一系列实用的工程化需求分析方法应运而生。Ralph R.Young的《有效需求分析》 (Effective Requirements Practices)一书从管理和技术两个角度阐述了关系项目成败的各种问题,书中的案例分析让项目管理者能够对需求分析的框架体系和过程形成较为清晰的认识,在实践中准确了解客户的业务需求,正确地调配各种资源,从而更加准确地把握项目的方向,保证在整个项目周期中各种需求都能够得到应有的考虑和满足。
软件开发人员在系统组织方面通常会采用特定的模式,但就大多数而言,他们对体系结构的分析和判断在很大程度上都是出于自发而且并不规范。Mary Shaw和David Garlan的《软件体系结构》(Software Architecture:Perspectives on an Emerging Discipline)一书就对当前业界所公认的成功的系统设计思想进行了生动而全面的阐述。两位作者对软件体系结构的发展状况及其对设计的影响作用有独到的见解,相信各类读者都能从书中获得有用的信息:专业开发人员可能对书中所介绍的设计模式比较熟悉,但从对这些模式的讨论和评价中也能够获得新的启发;学生们能够从书中学到一些有用的技巧,从较高的视角来了解系统的组织结构,而不是仅仅追逐业界的潮流或是过时的方法:对于教师而言,本书可以作为“软件体系结构”课程的教材,或者是“软件工程”或“软件设计”课程的补充教材。
对于现在已经或者将要从事软件项目管理的读者来说,Joel Henry的《软件项目管理》 (Software Project Management:A Real-Worm Guide to Success)应该说是——本难得的好教材。书中论述了软件项目的四个基本构成要素:人、过程、工具和评价体系,并向读者提供每——领域中可以选用的合适方法,使项目实施取得最满意的效果。作者本人在软件行业工作多年,积累了丰富的第一手材料,他在书中用案例对技术、管理和领导等多方面问题进行了透彻的讲解。尽管他对这些问题的结论对业内人士而言已经是耳熟能详,但不论是何种类型和水平的读者,相信都能从本书中得到指导和启发。
软件开发中出现错误在所难免,关键是要及早发现,而不要让其扩散,增加纠正的成本。软件同级评审制度是任何高质量软件开发过程的重要环节,然而受过这方面必要培训的专业人员却还是凤毛麟角。Karl E.Wiegers的《软件同级评审》(Peer Reviews in Software)就是针对这方面需求而编写的。本书介绍了软件同级评审的全过程,内容涉及各种正规和非正规的评审方法和质量保证技巧。书中对大型项目及开发团队地域分散等情况下的同级评审进行了专门探讨。对于项目管理者而言,本书能够帮助他们以实用的资源启动同级评审计划,增进开发人员间的沟通,最终按期提交高质量的软件产品。
面向对象技术的应用已经越来越普遍,而与此同时越来越多的管理者在项目进行中却要面对许多原本隐藏着的成本和意外情况。对整个项目而言,管理者在规划阶段是否有远见、在进行过程中对各种情况反应是否得当,这些都影响着项目的成败。尽管市场上介绍对象技术的书很多,但对于项目实施中所需进行的规划和预测却还缺乏系统的知识归纳。Alistair Cockburn的《对象软件项目求生法则》 (Surviving Object-Oriented Projects)一书就以大量专家的知识和经验向读者提供成功管理对象软件项目的实用指导和建议,帮助读者应对项目中的意外挑战,使项目正常进行并最终获得成功。书中指出了对象软件项目所面临的潜在风险,并对时间安排、预算、人员安排以及成本合理化等重要问题进行了探讨,提供了可操作的解决方案。对于从事对象软件项目管理的读者而言,本书是——本相当合适的参考书,可以作为相关培训的教材。
以上就是目前这套影印版丛书的大致内容。需要指出的是,这套丛书并非—一个封闭的体系。随着软件工程的深入发展,必将涌现出更多新的开发理念和方法,我们也将尽己所能将更多新的优秀图书吸纳进来。读者对于这套丛书目前的内容或未来的发展有何意见或建议,望不吝赐之。