普元软件(Primeton)公司是全球领先的面向构件的中间件提供商。本书即是对他们先进的面向构件技术进行了详细的阐述,并配以案例进行介绍。在本书中,您可以看到成功应用在电信、金融、电子政务、电力、物流等多个行业的实际项目开发案例。对于IT人士来说,有极大的借鉴及参考价值。
读者对象
软件开发人员
IT行业从业者
IT公司管理人员
大型软件项目组织者
电信、金融等公司相关技术人员
开发大型的复杂企业应用软件对于任何人和组织来说都是严峻的挑战,为此人们投入了巨大的精力和资源进行研究和实践,尝试了很多种技术手段来改善效率与质量、降低开发成本。在这些技术手段中,构件化的方法被实践证明是最为有效、最受信赖的一种。也可以说,构件技术是唯一一种被实践证明能够全面改善软件生命周期中各个阶段综合效益的技术手段,而且其效果之显著,对于产品质量、生产效率和通用性、开放性的提升幅度之大,也是其他任何一种技术手段无法相比的。因此,十几年来,尽管企业应用软件的运行平台和基础设施发生了根本性的变化,软件设计思想、开发工具和体系架构也已经经过了几代的变迁,但是构件化技术从其诞生的第一天开始,就一直以坚定的步伐向前迈进,不但已经取得了辉煌的成就,而且仍然保持着巨大的上升空间。例如,目前普遍认为,企业应用的基础架构将迅速迁移至SOA。然而事实上SOA的本质不过是一种新的组织构件并使之共同协作的方式,构件仍然是企业应用的根本。因此,绝大部分企业应用软件开发组织,今天都必须严肃地考虑一个问题,那就是如何尽快地过渡到构件化开发的方式。
然而,走向构件化开发对于一个软件开发组织而言也同样是一个挑战。构件化的方法要求一个软件开发组织从意识形态到管理实践,从应用整合策略到开发技术,从组织人员结构到开发工具选择,都要发生全方位的变化,而目前多数的企业和组织,并没有有意识地主动推动这一变化,而是被市场和大趋势逼迫着走上构件化方法的道路,在没有做好充分准备的情况下匆忙前行,希望自己的组织能够奇迹般地自然过渡到构件化开发的状态中。这就使得很多软件开发组织内部广泛存在意识、文化、技术和管理思路方面的不同程度的混乱。很多组织都存在“卫星与锄头齐飞,火箭共长矛一色”的怪异的文化、技术甚至性格上的分裂。特别是思想的不一致,成为目前不少软件开发组织在前进中步履蹒跚的重要原因。因此,走向构件化是需要一个积极主动的学习和实践过程的。
本书中所讨论的内容,来自普元公司在长期开发构件基础平台和实施构件化开发项目过程中积累的经验,书的篇幅虽然不大,但是涉及到应用构件技术的方方面面,并且通过丰富的真实案例来具体说明,其中不乏深刻的洞察与包含智慧的真知灼见。特别是其中通过案例探讨了中国市场环境下构件化开发组织的架构、组织管理和项目管理经验,这些来自实践的经验总结,在目前讨论构件化方法的著作中非常少见,对于中国的开发组织来说也有非常重要而且现实的指导意义。因此,这是一本值得向广大企业开发人员,特别是企业应用软件开发组织推荐的佳作。
孟岩 《程序员》杂志社技术主编
2006年4月 本书通过丰富的案例研究示例,阐明了构建面向构件软件的最重要因素:概念、技术、规范、管理以及分析与设计过程。\r\n 本书的涵盖范围包括:面向构件的基本概念和发展趋势,探索各种面向构件的软件体系架构,包括和其它架构方式的对比,全面研究面向构件的软件开发过程以及项目管理,通过“组织级管理”,帮助构建面向构件的企业,提供工业级生产实践指导,面向构件的产品支持和案例分析。\r\n 本书的目标是通过逐步的、清晰生动的面向构件实施指导,帮助读者获得对面向构件的坚实理解和实践指导。
目 录
第1章 面向构件概述及案例研究介绍 1
1.1 面向构件的演变 2
1.1.1 汽车行业的构件史 2
1.1.2 软件行业的构件史 3
1.2 面向构件的基本特征 5
1.3 面向构件的必要条件 6
1.4 面向构件的发展趋势 7
1.5 案例研究介绍 11
1.5.1 案例使用说明 11
1.5.2 案例背景介绍 12
第2章 面向构件的软件体系 17
2.1 面向构件的概念 18
2.1.1 构件定义 18
2.1.2 构件类型 25
2.1.3 构件系统 29
2.2 面向构件的软件架构 33
2.2.1 架构概述 33
2.2.2 面向构件的架构 39
2.2.3 面向构件:有容乃大 52
2.3 案例研究 56
2.3.1 功能架构 56
2.3.2 软件架构 57
第3章 面向构件的软件过程 61
3.1 过程制定的策略 63
3.2 面向构件软件过程的核心理念与优势 64
3.2.1 从关注点分离到构件编织 65
3.2.2 以构件为中心组织软件过程 69
3.2.3 高度关注可复用性和企业知识积累 74
3.2.4 对迭代开发和持续集成的支持 75
3.2.5 高度并行的开发过程 76
3.3 面向构件软件过程概述 77
3.3.1 深入理解软件过程 79
3.3.2 面向构件软件过程总览 79
3.3.3 面向构件软件过程的主要阶段 81
3.3.4 面向构件软件过程的核心工作产品 82
3.3.5 面向构件软件过程的主要角色 83
3.4 面向构件的软件需求 87
3.4.1 需求层次及其对策 89
3.4.2 捕捉领域词汇 90
3.4.3 需求捕获 92
3.4.4 确定参与者和用例 94
3.4.5 识别业务构件 96
3.4.6 可复用资产分析 97
3.4.7 确定业务构件需求 99
3.4.8 小结 100
3.4.9 案例研究 100
3.5 面向构件的分析与高层设计 113
3.5.1 用户交互设计 113
3.5.2 架构选型 116
3.5.3 业务构件分析 117
3.5.4 数据模型设计 118
3.5.5 业务构件设计 120
3.5.6 确定系统架构 122
3.5.7 可复用资产分析 123
3.5.8 确定服务构件需求 124
3.5.9 案例研究 125
3.6 面向构件的并行开发与测试 144
3.6.1 制定并行开发计划 145
3.6.2 并行开发与测试 147
3.6.3 案例研究 147
3.7 面向构件的提交、发布与部署 154
3.7.1 提交 155
3.7.2 发布 156
3.7.3 部署 156
3.7.4 案例研究 156
3.8 面向构件的应用管理 159
3.8.1 例行管理与维护 160
3.8.2 突发事件的管理与维护 160
3.8.3 案例研究 160
第4章 面向构件的项目管理 163
4.1 面向构件的项目计划 166
4.2 面向构件的项目组织 168
4.3 面向构件的项目实施 171
4.4 面向构件的项目度量 172
4.5 案例研究 175
第5章 面向构件的组织级管理 181
5.1 面向构件的精确控制力 182
5.2 企业和开发商的分工与合作 183
5.3 构件库管理 184
5.4 积累面向构件的企业知识体系 187
5.5 案例研究 189
第6章 面向构件的中间件 195
6.1 面向构件中间件的必要性 196
6.1.1 互联网时代对软件的挑战 196
6.1.2 以面向构件为核心的一体化平台 198
6.2 面向构件的中间件概述 200
6.2.1 面向构件的开发环境 201
6.2.2 面向构件的运行环境 202
6.2.3 面向构件的应用管理 204
6.2.4 基础构件库 204
6.3 面向构件,效率推动创新 205
普元五周年(代跋) 207
附录 211
附录A 普元EOS简介 212
附录B 面向构件概述及案例研究介绍 217
附录C 案例研究总结 221
附录D 开发规范示例(部分) 225
附录E 构件文档参考 235
附录F 创建面向构件的工作流、报表、内容管理 241
附录G 打造面向构件的大型企业应用 247
关于普元软件 253
关于GoCom社区 255
参考文献 257
参考书目 257
参考文章 258
参考电子文献 259
Table of Contents
Chapter One Brief Introduction of Component-Oriented
Approach and Case study 1
1.1 Evolvement of Component-Oriented Approach 2
1.1.1 History of Component-Oriented Approach in
Automobile Industry 2
1.1.2 History of Component-Oriented Approach in
Software Industry 3
1.2 Basic Characteristics of Component-Oriented Approach 5
1.3 Prerequisites of Component-Oriented Approach 6
1.4 Trends of Component-Oriented Approach 7
1.5 Introduction of Case study 11
1.5.1 How to Apply the Cases 11
1.5.2 Background Introduction on the Cases 12
Chapter Two Component-Oriented Software Architecture 17
2.1 Concepts in Component-Oriented Approach 18
2.1.1 Definitions of Component 18
2.1.2 Classification of Component 25
2.1.3 Component Based System 29
2.2 Component-Oriented Software Architecture 33
2.2.1 Brief Introduction of Architecture 33
2.2.2 Component-Oriented Architecture 39
2.2.3 Component-Oriented Approach:
Accommodating Everything 52
2.3 Case Study 56
2.3.1 Functional Architecture 56
2.3.2 Software Architecture 57
Chapter Three Component-Oriented Software Process 61
3.1 Strategy for Making Process 63
3.2 Core Concepts and Advantages of Process for
ComponentOriented Software 64
3.2.1 From Focus Separation to Component
Assembling 65
3.2.2 Process for Organizing Component
Centered Software 69
3.2.3 Focusing on Reusability and Accumulation of
Business Knowledge 74
3.2.4 Supporting Iterative Development and Continuous
Integration 75
3.2.5 Highly Parallel Development Process 76
3.3 Brief Description of Component-Oriented
Software Process 77
3.3.1 Profound Understanding of Software Process 79
3.3.2 Overview of Component-Oriented
Software Processes 79
3.3.3 Primary Stages in Component-Oriented
Software Process 81
3.3.4 Core Products in Component-Oriented Software
Process 82
3.3.5 Main Roles in Component-Oriented
Software Process 83
3.4 Requirements for Component-Oriented Software 87
3.4.1 Requirement Levels and Respective Solutions 89
3.4.2 Capturing Key Words in the Domain 90
3.4.3 Capturing Requirements 92
3.4.4 Determining Participants and Cases 94
3.4.5 Identifying Business Component 96
3.4.6 Analysis of Reusable Assets 97
3.4.7 Determining Requirements for Business
Component 99
3.4.8 Summary 100
3.4.9 Case Study 100
3.5 Component-Oriented Analysis and High
Level Design 113
3.5.1 User Interactive Design 113
3.5.2 Selecting Architecture 116
3.5.3 Analysis of Business Component 117
3.5.4 Design of Data Model 118
3.5.5 Design of Business Component 120
3.5.6 Determining System Architecture 122
3.5.7 Analysis of Reusable Assets 123
3.5.8 Determining Requirements for Service
Component 124
3.5.9 Case Study 125
3.6 Component-Oriented Parallel Development and Testing 144
3.6.1 Making Plan for Parallel Development 145
3.6.2 Parallel Development and Testing 147
3.6.3 Case Study 147
3.7 Submission, Publishing and Deployment of Com-
ponentOriented Software 154
3.7.1 Submission 155
3.7.2 Publishing 156
3.7.3 Deployment 156
3.7.4 Case Study 156
3.8 Component-Oriented Application Management 159
3.8.1 Routine Management and Maintenance 160
3.8.2 Management and Maintenance of
Emergency Events 160
3.8.3 Case Study 160
Chapter Four Component-Oriented Project Management 163
4.1 Component-Oriented Project Plan 166
4.2 Component-Oriented Project Organization 168
4.3 Component-Oriented Project Implementation 171
4.4 Component-Oriented Project Measurement 172
4.5 Case Study 175
Chapter Five Organizational Management in Component-
Oriented Approach 181
5.1 Precise Control in Component-Oriented Approach 182
5.2 Job Description and Coordination between Enterprise
and Vendor 183
5.3 Management of Component Library 184
5.4 Accumulating Enterprises-wide Systematic Knowledge
in Component-Oriented Approach 187
5.5 Case Study 189
Chapter Six Component-Oriented Middleware 195
6.1 Why is Component-Oriented middleware necessary 196
6.1.1 Challenges to Software in Internet Era 196
6.1.2 Integrated Platform Based on Core of
Components 198
6.2 Brief Description of Component-Oriented Middleware 200
6.2.1 Component-Oriented Development
Environment 201
6.2.2 Component-Oriented Run-time Environment 202
6.2.3 Component-Oriented Application Management 204
6.2.4 Foundation Component Library 204
6.3 Component-Oriented Software: Innovation Driven by
Efficiency 205
Five Years of Primeton (as postscript) 207
Appendices 211
Appendix A Introduction of Primeton EOS 212
Appendix B Reference for EOS Component Library 217
Appendix C Summary on Case Study 221
Appendix D Examples on Development
Specifications (excerpt) 225
Appendix E Reference for Component Documentations 235
Appendix F Establishing Component-Oriented Management
for Workflow, Statement, Content 241
Appendix G Creating Component-Oriented Application for
Large Scale Enterprises 247
About Primeton Software 253
About GoCom Community 255
References 257
Referenced Book List 257
Referenced Papers 258
Referenced Electronic Papers 259
第1章 面向构件概述及案例研究介绍\r\n 1.1 面向构件的演变\r\n 1.1.1 汽车行业的构件史\r\n 1.1.2 软件行业的构件史\r\n 1.2 面向构件的基本特征\r\n 1.3 面向构件的必要条件\r\n 1.4 面向构件的发展趋势\r\n 1.5 案例研究介绍\r\n 1.5.1 案例使用说明\r\n 1.5.2 案例背景介绍\r\n第2章 面向构件的软件体系\r\n 2.1 面向构件的概念\r\n 2.1.1 构件定义\r\n 2.1.2 构件类型\r\n 2.1.3 构件系统\r\n 2.2 面向构件的软件架构\r\n 2.2.1 架构概述\r\n 2.2.2 面向构件的架构\r\n 2.2.3 面向构件:有容乃大\r\n 2.3 案例研究\r\n 2.3.1 功能架构\r\n 2.3.2 软件架构\r\n第3章 面向构件的软件过程\r\n 3.1 过程制定的策略\r\n 3.2 面向构件软件过程的核心理念与优势\r\n 3.2.1 从关注点分离到构件编织\r\n 3.2.2 以构件为中心组织软件过程\r\n 3.2.3 高度关注可复用性和企业知识积累\r\n 3.2.4 对迭代开发和持续集成的支持\r\n 3.2.5 高度并行的开发过程\r\n 3.3 面向构件软件过程概述\r\n 3.3.1 深入理解软件过程\r\n 3.3.2 面向构件软件过程总览\r\n 3.3.3 面向构件软件过程的主要阶段\r\n 3.3.4 面向构件软件过程的核心工作产品\r\n 3.3.5 面向构件软件过程的主要角色\r\n 3.4 面向构件的软件需求\r\n 3.4.1 需求层次及其对策\r\n 3.4.2 捕捉领域词汇\r\n 3.4.3 需求捕获\r\n 3.4.4 确定参与者和用例\r\n 3.4.5 识别业务构件\r\n 3.4.6 可复用资产分析\r\n 3.4.7 确定业务构件需求\r\n 3.4.8 小结\r\n 3.4.9 案例研究\r\n 3.5 面向构件的分析与高层设计\r\n 3.5.1 用户交互设计\r\n 3.5.2 架构选型\r\n 3.5.3 业务构件分析\r\n 3.5.4 数据模型设计\r\n 3.5.5 业务构件设计\r\n 3.5.6 确定系统架构\r\n 3.5.7 可复用资产分析\r\n 3.5.8 确定服务构件需求\r\n 3.5.9 案例研究\r\n 3.6 面向构件的并行开发与测试\r\n 3.6.1 制定并行开发计划\r\n 3.6.2 并行开发与测试\r\n 3.6.3 案例研究\r\n 3.7 面向构件的提交、发布与部署 \r\n 3.7.1 提交\r\n 3.7.2 发布\r\n 3.7.3 部署\r\n 3.7.4 案例研究\r\n 3.8 面向构件的应用管理\r\n 3.8.1 例行管理与维护\r\n 3.8.2 突发事件的管理与维护\r\n 3.8.3 案例研究\r\n第4章 面向构件的项目管理\r\n 4.1 面向构件的项目计划\r\n 4.2 面向构件的项目组织\r\n 4.3 面向构件的项目实施\r\n 4.4 面向构件的项目度量\r\n 4.5 案例研究\r\n第5章 面向构件的组织级管理\r\n 5.1 面向构件的精确控制力\r\n 5.2 企业和开发商的分工与合作\r\n 5.3 构件库管理\r\n 5.4 积累面向构件的企业知识体系\r\n 5.5 案例研究\r\n第6章 面向构件的中间件\r\n 6.1 面向构件中间件的必要性\r\n 6.1.1 互联网时代对软件的挑战\r\n 6.1.2 以面向构件为核心的一体化平台\r\n 6.2 面向构件的中间件概述\r\n 6.2.1 面向构件的开发环境\r\n 6.2.2 面向构件的运行环境\r\n 6.2.3 面向构件的应用管理\r\n 6.2.4 基础构件库\r\n 6.3 面向构件,效率推动创新\r\n普元五周年(代跋)\r\n附录\r\n 附录A 普元EOS简介\r\n 附录B 面向构件概述及案例研究介绍\r\n 附录C 案例研究总结\r\n 附录D 开发规范示例(部分)\r\n 附录E 构件文档参考\r\n 附录F 创建面向构件的工作流、报表、内容管理\r\n 附录G 打造面向构件的大型企业应用\r\n 关于普元软件\r\n 关于GoCom社区\r\n参考文献 \r\n参考书目\r\n参考文章\r\n参考电子文献
序言(一)
在IT领域,硬件的发展遵循“摩尔定律”按指数规律增长,即1.5年集成电路的集成度翻一番,这种超常规的发展速度在很大程度上要归功于自动设计技术(EDA)的发展。很可惜,软件的发展速度比硬件慢得多,比如从Windows 3.1发展到Windows 2000,在9年的时间里源代码行数只增长9倍左右,软件似乎只能以很慢的速度线性增长,这在很大程度上是受制于软件落后的“手工”生产方式。
人们曾寄希望于构件技术,希望它能解决软件发展的瓶颈,使软件能像硬件那样进行现代化生产。可是问题不那么简单,尽管构件这个概念提出了多年,却很难实现产业化。如果说过去我们还说不清楚原因的话,那么,今天我们可以说,在很多情况下这是因为缺乏一个像普元EOS那样的中间件平台,“一个新的以构件为核心的生态系统,包括了构件运行环境、开发环境、应用管理环境、基础性的公共构件库、以及面向构件的方法学和经验论”。
五年以前,当刘亚东博士、黄柳青博士等人创建普元公司,着手开发这个面向构件的中间件平台时,业界并不看好,因为还没有人这样做过。现在,EOS的大批用户足以证明,这个创新取得了成效。
我们高兴地看到,黄柳青博士等多位业内构件领域的专家能将他们积累了5年的构件技术研究,产品开发和行业应用的宝贵经验,全盘托出,写出了《面向构件的方法与实践》一书,呈献给广大读者。虽然过去讲构件的书也不少,但像本书那样,将理论与实践紧密结合,通过实际案例分析,深入浅出,使读者能真正掌握构件方法的书却不多。
软件新技术层出不穷有时使软件工作者感到困惑,比如是选择面向构件的架构还是面向服务的架构(SOA)?本书清楚地告诉大家:“选择面向构件架构和选择SOA并不矛盾”。“从应用开发的层次看,面向构件技术可以看作是SOA中“服务”的组装和实现。而SOA则可以看作是在应用表现层次的软件构件化”。应该说,这是关于软件架构的真知灼见。
书中不乏这类精辟见解。例如,关于软件架构的“否定之否定”的论断,即从“原始的一锅粥架构”发展到“垂直分割”,又发展到“水平分割”,再发展到“横切竖割兼收并蓄”的面向构件的架构,很中肯地揭示了软件发展的内在规律。
本书详细叙述了有关面向构件的软件开发过程和项目管理,构件的“组织级管理”以及如何构建面向构件的企业等问题,这些,对于广大软件企业和软件工作者都是非常切合实际的指导。
正如本书所说,“构件技术正在逐步成为计算机软件运行环境的一个不可或缺的重要部分,正在与传统的基础中间件(如J2EE)整合在一起成为面向构件的中间件这样一个新的基础软件层次”。本书可以成为掌握这一新的基础软件层次的入门向导。也许,随着以构件为核心的生态系统的完善,刘亚东博士、黄柳青博士等人可以实现他们的理想,使面向构件的企业应用软件成为“真正适合中国特点,技术上可以实现,并有后发优势的软件‘银弹'”!
相信本书将为促进中国软件业的自主创新作出贡献。
倪光南 中国工程院院士
2006年4月
序言(二)
软件的可复用性是软件产业兴旺发展的关键所在,而要达到软件的可复用目标,“软件构件化”就是实现这个目标的基础。
当今世界发达国家的IT业界无一不在关注着“软件构件化”的实现,美国、印度、爱尔兰等软件产业发达的国家更是投入巨资和人力,建立能适应各种开发目标的构件库,一些跨国巨型IT企业也在纷纷建立“构件系统开发与设计”的研发机构。
最近,著名的经济学家郎咸平先生在一次经济论坛会上,“建议上海市政府抓住机遇,投入20-50亿人民币建设软件构件共享平台”,事实上,上海也确实非常重视软件构件库的建设,在浦东专门成立了“软件构件研发中心”,建立了“上海构件库”的网站,有力地促进和推动了上海软件产业的发展。
在“软件的构件化”的浪潮中,普元公司处于冲浪者的前列,普元的总裁刘亚东先生说过:“面向构件技术的出现可以帮助中国企业从技术的角度加速管理进步,减少企业在信息化建设中的弯路,提高企业竞争力。”(刘亚东,《软件中国的机会》)。
普元公司的技术人员将面向构件中间件产品开发实践中的经验、成果、技术收获以及教训加以总结、提炼,撰写这本凝结了作者们辛劳和成果的技术读本,对于软件开发者将有所启发。
在《构件中国:面向构件的方法与实践》一书中,呈现了面向构件的一整套方法与实践,提供了从概念、架构、产品支持到需求分析、开发实现及应用管理等方法与实现的步骤,其涵盖范围包括了:
-- 面向构件的基本概念和发展趋势
-- 探索各种面向构件的软件体系架构,包括和其它架构方式的对比
-- 全面研究有关面向构件的软件开发过程和项目管理
-- 通过“组织级管理”,帮助构建面向构件的企业信息管理系统
-- 面向构件的产品支持和案例分析
本书在面向构件的基本思想指导下,从面
黄柳青 Primeton(普元)软件公司创始人之一,兼首席技术官(CTO)。黄柳青专注于面向构件的中间件的研究和开发工作,特别是在可视化构件技术方面获得了一定的成就。除此之外,在软件构件技术、数据库系统设计、计算机网络和通信技术、视频、图像处理和人工智能等领域,黄柳青拥有多项突出贡献,并在各级专业论坛和刊物上发表过数十万字的学术专著。在此之前,他担任亚信科技首席技术官(CTO)。
前言
我们希望,
面向构件技术的出现可以帮助中国企业从技术的角度加速管理进步,
减少企业在信息化建设中的弯路,提高企业竞争力。
——刘亚东,《软件中国的机会》
经过百万行代码,无数无止无休的软件工程项目的洗礼之后,软件行业的思考都集中在软件开发、管理的能力方面了。从构件技术的出现,网络服务的产生,模型驱动的探索,大家都在尝试更大粒度的软件编写,更自动化的软件生成,以及更松散的软件组合。正是在这样的大环境之下,面向构件的技术体系应运而生,引领潮流。麦肯锡也在考察了全球一百多家软件企业之后,在《软件成功的奥秘》一书中指出,“不断采用构件技术是未来软件生产力提高的主要来源”。
面向构件以构件技术为核心,以数据总线为依托,融合了最新的构件技术、网络服务技术和模型驱动技术。经过三、五年的不断实践,不断提炼,以经从毛毛虫成长为飞蝴蝶,成为软件业界引人注目的新潮流。更令人振奋的是,这样一项软件的新兴技术,发源在中国这样一个地方,因为正是中国的软件应用环境
在全球来讲都是变化最快,交易量最多,而投资最少的一个软件市场。
中国的大量客户,包括电信、金融、政务,本身的业务发展模型、市场定位都在不断地演化过程中,而其信息技术部门往往因而承担着巨大的责任。一方面,软件系统必须快速地赶上业务发展的要求。另一方面,中国的发展中的业务模型在全球找不到第二家,也因而找不到另外一个地方的成熟的应用软件可以购买来完成自己的业务。比如在电信行业,在使用国际计费产品失败之后,寻找集成商自主开发成了首选。但是集成商的开发能力有限,在常常以百万行计的代码面前,一个系统往往开发两到三年,最多勉强使用,在接下去的业务变革中又推倒重来。
巨大的软件投入和软件开发周期,又因而成为企业发展的一大阻力。除了最大的电信公司,最大的银行,大家往往因为软件投入的脱节而无法快速成长,在相对已经比较开放的中国市场中,公司的成长无形中受到软件技术投入的制约。
面向构件解决了企业应用的结构问题。通过面向构件技术,一个系统是按照个性化的需求,从一个比较完备、比较成熟的构件库组装而成,大大提高了系统的成功率、稳定性、适应性和逐步发展性。通过面向构件对业务的封装和积累,能够保护现有投资,有助于高效地表达业务,进而表现其内在的组织敏捷性。当与面向服务技术联合时,面向构件提供了一个重要的潜在现实效益,从而改变组织的技术与前景。我们的目标是帮助读者去探索、理解并实现这个潜在的现实效益。
面向构件还解决了企业应用的开发和管理问题。通过建立一个不断完整的构件库,企业的知识可以得到有效的管理。业务知识不是在上百万行的代码之中,也不是在每天晚上回家的员工脑里,而是在一个可见的、可控的构件库中,便于管理、衡量,达到持续发展的目的。企业可以看到自己的业务、知识和流程。而厂商也通过构件库来不断发展自己的核心竞争力。要不,有二、三千人的软件大公司和一个新开始的二、三十人的小公司有什么本质区别呢?
很多软件工程师也面临这样一个问题。刚从学校出来的几
年,大家比较喜欢技术钻研,熬夜写代码,找Bug。而后自己想想,收获在哪里呢?确实每个人都积累了很多经历和经验,但只是一个熟练的代码工具。逐渐地大家希望自己能从日常的代码中逃离出来,去设计、规划一个大型的软件系统,而且能够长期持续发展。面向构件也正是这样的一个承载思想,承载知识,承载经验的平台。
面向构件的出现不是“崭新的”,其外延和基础技术仍在不断发展。面向构件作为将软件系统分解与隔离的一种方法,是一个非常通用的概念。我们注意到这在传统产业实践中更为常见,我们日常接触到的传统行业已经大部分实现了某种形式的构件化生产。尽管如此,一旦应用到软件领域,面向构件却是一个需要重新思考的主题。
本书分为六章。
第一章,面向构件概述及案例研究介绍。在这一章中,我们通过对传统行业发展的观察发现,构件化不是软件行业所特有的,而是所有行业进入工业化生产的必经之路。有了构件知识才能积累、才能重用。古代的建筑、现在的汽车、我们的软件都是这样。在这一章里,我们还具体介绍了神州电信这么一个假想的典型用户,便于大家思考和练习。
第二章,面向构件的软件体系。我们对面向构件技术的理论体系,做了全面的考察,包括面向构件的概念和面向构件的软件架构,从传统的横切竖割的软件架构出发,引入更为灵活、稳定的面向构件的条块编织的架构。
第三章,面向构件的软件过程。这一章内容比较丰富,为面向构件的实践总结了一套完整的全过程的方法。从软件工程的视角,用面向构件的思想,从新审视软件过程,包括软件需求,软件分析与高层设计,并行开发与测试,提交发布与部署,以至应用软件的管理。我们发现,以往的软件工程因为每个阶段的概念的脱节和工具的脱节造成了软件工程连贯性较差,前后阶段的双向可验证性较差的问题,通过面向构件的工程管理有了很好的解决方法。构件是前后贯通需求、分析、设计、开发、测试、提交、发布、部署、以至应用管理的实体,使软件工程有了连贯性
和双向可验证性,更好的保障软件系统和需求的一致性。
第四章,面向构件的项目管理。我们在这里提出了面向构件的项目级管理进程和组织方法。在面向构件的项目管理中,人员的工作分配更加清晰,互相之间工作的独立性更强,减少因为工作项间互相制约带来的不确定性。面向构件的方法大大加强了软件项目的可管理性和可控制性。
第五章,面向构件的组织及管理。我们发现,面向构件的方法不仅提高了项目管理能力。如果在组织级跨项目地对企业知识、软件构件库进行规划、设计和管理,企业的软件能力将随着构件库的不断丰富而不断的提高。
第六章,面向构件的中间件。面向构件是一个完整的理论体系,也有一套完整的实践方法。这一套方法在不同的技术平台上都会有所帮助,但是在一个为面向构件打造的平台上可以使面向构件的价值最大化。这一章里我们讨论了一个面向构件的中间件的设想和要求。
同时本书还附上了我们在本书的实践中所使用和参考的面向构件的中间件,普元EOS的介绍、普元EOS构件库参考、完整的案例研究总结、开发规范条例(部分)、构件文档参考等。如果大家需要更多的资料,需要试用普元EOS,或者参加最新的软件技术的讨论、交流,可以参加面向构件成长社区http://gocom.primeton.com。
本书的创作是长期积累的结果,包括EOS产品实践与研究成果、来自客户的反馈,以及最新的SOA和SCA规范等。本书的主要目的是从厂商中立的角度来讨论面向构件的方法与实践,同时还花费大量精力去研究面向构件的概念、架构,以及具体的产品实现。欢迎有兴趣的读者们一起来研究、批评和发展面向构件的软件技术。
作 者
2006年4月
无封面