集成与构建指南(7)

原创 2004年03月01日 10:11:00

1          构件的集成原则<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.1         生产者与消费者

不同构件的开发者之间通常处于一种生产者与消费者的关系,即生产者交付工件提供给消费者使用。生产者交付的工件类型有:原始(Original)工件(源码、构建脚本、配置文件等),中间(Derived)工件(Obj文件、lib库等),最终产品(Product)工件(可执行文件、Dll库等),其它临时(Temporal)工件(编译器产生的临时文件等)。消费者将使用这些工件。C++项目中这种消费关系包含:编译引用他方的公开(public)头文件、链接他方的静态库文件(或Obj文件)、以及生成的最终执行文件调用他方的动态链接库等。

除了原始(Original)工件,其它派生工件都可以通过构建过程来自动生成,为了简化生产者与消费者的依赖关系,保持派生工件对原始工件版本的一致性,并减轻配置管理的开销,生产者应尽量只向消费者提交原始工件,消费者则依靠构建脚本生成他们需要的派生工件(出于效率考量,在构建开销较大时,消费者也可以直接使用生产者构建出的最终产品工件,其后果是版本冲突的风险变大,配置管理的开销增加)。

为了满足只提交原始工件的需要,编制自动化程度很高和高质量的构建脚本变得格外重要,如果构建过程增加了消费者的负担,或者出现了构建失败的情况,消费者将更倾向于直接从生产者手中拿到构建后的产品工件。

理想情况下,生产者可能在消费者开始使用前就交付了其依赖的工件,但通常团队会采用并行开发模式,消费者必须在生产者完成交付前就开始工作,因此开发替代的桩(Stub)代码,甚至为了调试方便而专门开发摹仿(Mock)代码,成了家常便饭。根据实际需要,替代代码可以由生产者自身或消费者来开发。针对这种状况,在编写构建脚本时,应提供相应的编译、链接选项,使得消费者可以自由选择将交付代码或桩(Stub)代码编译、链接到他的构造工作版本中,同时集成员还可以利用这些选项来开展增量式的迭代集成。

1.2         源码目录组织原则

开发目录组织结构从来就是关系到项目健康成长的关键因素。开发(产品)目录提供了项目团队进行开发、管理等活动的统一共享场所,它需要满足不同涉众(角色),在不同的阶段,对不同类型工件进行访问的多种场景需求。因为项目的编码实施、集成等活动相互间的依赖关系远比其它文档编写类活动要复杂,协同整合更为困难,使得合理的源码组织结构变得极为重要,构架师和配置管理员必须投入更多精力关注开发(产品)目录中的源码组织部分。

源码目录组织的首要原则是目录结构的统一,项目中应当采用统一的分类方式、同一的风格、一致的命名格式来创建所有构件的源码目录。本项目中涉及到第三方库、项目构件、子系统、系统四类构件,其源码目录结构采用同一的基础目录结构,并根据各自需要做了相应的扩展。

开发(产品)目录的组织应当尽量在同一级的目录中采用同一种分类标准。目录分类标准有:按照工件类型(src/bin/lib/doc/mdl/script/web/xdoc),按照工件功能或用途(build/test/interface/example),按照活动组织(plan/requirement/design),按照归属关系(第三方库3rd Lib/基础构件Components/子系统Subsystem),等等。

如下图所示,本项目中,第一级目录按照归属关系来划分,源码构件的第二级目录按照构件设计包结构来划分,源码构件的第三级目录则按照工件类型并结合工件用途来划分。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-2-291850420.png

 

开发(产品)目录应当面向团队协作,既要做到实施员在私有空间开发时相对独立,不受他人工作的影响,又能保证与他人的工作成果同步,并顺利地实现集成。这将依赖软件配置管理工具的支持,方能较好地达成上述目标。

开发(产品)目录本身可以看作是项目的一个工件,随着项目的进展也在不断地调整和演进,代码需要经历重构,目录结构也不例外。在项目初期就完全固定目录结构是不现实的。当前支持对目录进行版本控制,并能方便修改目录结构的配置管理工具不多,其中以ClearCase为主要代表,这也是本项目选用ClearCase的原因之一。

每日构建与持续集成联系与区别

每日构建与持续集成联系与区别 1)持续集成(Continuous Integration)贵在速度,强调一个快速反馈。      比如我一签入代码,就立刻集成,给我一个反馈,我要知道我的代码是否破坏...
  • xifeijian
  • xifeijian
  • 2013年07月18日 00:04
  • 7069

Java 7 并发编程指南中文版

Java 7 并发编程指南中文版 分享到: 原文链接 作者: Javier Fernández González  译者:郑玉婷,许巧辉 校对:方腾飞,欧振聪   ...
  • xjh2011xjh
  • xjh2011xjh
  • 2014年10月23日 10:11
  • 735

我的javascript权威指南-7

1. 函数概述 定义:只定义一次,却可以被执行和调用多次的javascript代码。 构成: 函数名称标识符:函数名称是函数声明语句的必须部分。它的用途就像变量的名称一样。新定义的函数对象会赋值给这...
  • wangongda
  • wangongda
  • 2017年12月20日 18:05
  • 64

《CMDB分步构建指南》译者序,不明白概念的可以读读

CMDB是IT管理领域众多概念中最为奇妙的一个。 几年前,我的一个朋友,一位有着丰富的IT管理经验的IT主管曾经对我说:“CMDB就是个筐,别的IT管理软件做不了的事情就都往里装。” 我好奇地追问缘...
  • xiaokui008
  • xiaokui008
  • 2014年01月13日 15:17
  • 2376

MAVEN项目构建指南

Maven的安装、配置及使用入门 本书代码下载  大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎...
  • changjiujiang1
  • changjiujiang1
  • 2016年12月24日 12:10
  • 966

webpack+gulp实现自动构建部署

1、初始化webpacknpm init2、用npm 安装webpacknpm install webpack -g此时 Webpack 已经安装到了全局环境下,可以通过命令行 webpack -h ...
  • longzhoufeng
  • longzhoufeng
  • 2017年05月20日 14:08
  • 580

Thinking in BigData(12)大数据之有指导数据挖掘方法模型序(3)

数据挖掘的目的,就是从数据中找到更多的优质用户。接着上篇博客继续探讨有指导数据挖掘方法模型。什么是有指导的数据挖掘方法模型,以及数据挖掘如何构建模型。在构建一个有指导的数据挖掘模型,首先要理解和定义一...
  • yczws1
  • yczws1
  • 2014年03月07日 11:13
  • 3100

前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力。当今时代,前端工程师需要维护的代码变得及...
  • OLiver_web
  • OLiver_web
  • 2017年01月01日 16:28
  • 685

基于Java的大型网站设计方案

第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅通过消息传递来通信并协调行动。 分布式系统的意义: 升级单机处理能力的性价比越来越低单机处理能力存在瓶颈处...
  • liunian02050328
  • liunian02050328
  • 2018年01月04日 15:14
  • 54

Heroku第三方服务接入指南(一)

Heroku,是业界领先的PaaS平台,用户能使用该平台提供的各种组件服务。这些组件服务第三方厂商提供的,Heroku与第三方服务之间有哪些约定,作为一个厂商,如何为Heroku开发第三方服务,是本文...
  • lizeyang
  • lizeyang
  • 2014年10月24日 16:54
  • 1398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集成与构建指南(7)
举报原因:
原因补充:

(最多只允许输入30个字)