集成与构建指南

上传人:微*** 文档编号:96468974 上传时间:2022-05-25 格式:DOCX 页数:27 大小:579.65KB
返回 下载 相关 举报
集成与构建指南_第1页
第1页 / 共27页
集成与构建指南_第2页
第2页 / 共27页
集成与构建指南_第3页
第3页 / 共27页
点击查看更多>>
资源描述
集成与构建指南XXX 项目修订历史日期版本作者审核说明2004-2-6V1.0胡协刚初稿2004-2-14V1.1胡协刚根据潘学会的反馈进行修订2004-2-16V1.2胡协刚增加持续集成的内容1 概述 52 术语说明 53 角色与职责64 集成环境 64.1 集成网络部署 74.2 编译环境 74.2.1 msvc6 74.2.2 bcc55 84.3 构建工具 84.4 持续集成工具94.5 软件配置管理客户端94.6 用户私有构建场所94.7 主机克隆 105 构建基础知识 105.1 ANT 构建脚本 105.1.1 Ant 项目配置文件105.1.2 Ant 配置文件示例 105.1.3 Ant 执行示例 125.2 CRUISECONTROL 执行脚本 135.2.1 CruiseControl 项目配置文件135.2.2 CruiseControl 配置文件示例 145.2.3 Ant 封装( wrapper )配置文件示例 155.2.4 cruisecontrol 执行示例 156 集成构建基本流程166.1 概述 166.2 集成过程说明 166.3 持续集成过程说明 177 构件的集成原则 187.1 生产者与消费者187.2 源码目录组织原则 198 各类构件集成的实施方案208.1 第三方开发包的实施方案208.2 项目构件的实施方案238.3 项目系统集成发布的实施方案258.4 批量构建步骤 26集成与构建指南1 概述软件开发的目标是得到满足需求的可运行的交付工件, 即通常是得到由源码等中间工件编译、链接并集成而生成的一个建造( build ) 。然而构建集成却是一项看似简单实际上充满了陷阱的工作,特别是在团队开发的场景下,将牵涉到将不同成员开发的源码等集成一体,解决各类冲突与依赖等复杂情况, 这个过程还直接依赖于软件配置管理流程的支持。 一个合格的集成员需要掌握多项知识和技能, 本文档将帮助集成员等相关角色理解一个完整的构建集成过程,引导他们迅速地掌握本项目的构建工作。本文档主要内容包括:描述如何创建满足项目集成与构建活动的工作环境简要介绍构建工具的相关知识描述实施单元测试提交集成冒烟测试的基本流程深入说明自动化持续集成的流程提供对第三方开发包、项目构件等的源码结构组织和集成的指南2 术语说明冒烟测试用于快速验证一个系统集成的工作版本被成功地构建的一组测试。 它们必须是低成本的测试(比如自动化的测试) ,目标是保证一个相对稳定的、值得展开后续重量级测试的工作版本被发布给测试员使用。持续集成是对日构建的进一步扩展。在专门工具的支持下,通过实施自动化的构建、测试,使得项目的源码可以在专用构建机上持续地进行集成构建与测试, 即在既定周期 (可以 短到 30 秒)中,新提交的源码将被自动地集成,相关人员随即获得编译和测试结果。3角色与职责参与构建集成过程的角色如下:角色相关职责描述备注集成员制定集成与构建计划编制集成的自动化构建脚本指导或帮助实施员编制私有构件的自动化构建脚本执行集成,解决编译与链接冲突, 调试构建脚本等建立工作基线实施员编制私有构件向向集成的自动化构建脚本 提交构件源码等中间工件(delivery ) 重设开发基线(rebase )配置管理员配置集成用工作视图(view )分配存取权限环境工程师制定项目组的开发环境配置方案建立项目的开发、集成与测试软件环境解决软件开发环境和工具使用中出现的问题4集成环境为了将源码等中间工件编译、链接生成的一个建造 (build),必须使用相应的编译工具;而实现 构建的自动化,则需要类 似make等构建工具的支持;实施持续集成还依赖CruiseControl这类专门工具;另外由于集成通常在团队协同的环境下开展,软件配置管理工具将在此间充当重要角色。推荐的安装顺序是:克隆主机一安装配置管理工具客户端一建立用户视图一 准备用户私有构建场所一配置编译环境一配置构建环境一执行初次构建4.1集成网络部署作成服务器ClearCase 2003 ClientMSVC6.0JDK1.4.XAnt1.6.0+Cpptask+ContribCruiseControl2.0Tomcat5.0软件配置管理库ClearCase 2003 ServerClearCase View: to Integration Stream to Developing StreamBuilding-ServerClearCase-ClientMSVC6 JDK Ant+Cpptask CruiseControlTomcatLAN测试工作站-ClearCase 2003 ClientMSVC6.0JDK1.4.XAnt1.6.0+Cpptask+ContribClearCase View: to Testing StreamLAN发-L作站ClearCase 2003 ClientMSVC6.0JDK1.4.XAnt1.6.0+Cpptask+ContribSCM-DBClearCase-ServerLANLANTesting-WorkstationClearCase-ClientMSVC6JDKAnt+CpptaskClearCase View: to Integration Stream to Developing StreamDeveloping-WorkstationClearCase-ClientMSVC6JDKAnt+CpptaskDeveloping-WorkstationClearCase-ClientMSVC6JDKAnt+Cpptask4.2 编译环境4.2.1 msvc6本项目的首要IDE用的是 MS Visual Studio 98 ,编译器相应的用msvc6。项目中使用了 msvc6的基础库和mfc库的全集(包括Unicode部件,在安装时注意要使 用定制方式来选择)。为了正常使用 msvc6,注意正确设置相应的Path等环境变量,虽然安装程序能自动设置它们,但通过克隆的机器可能丢失。环境变量示例:Path=C:WINNTsystem32;C:WINNT;C:Development_ToolsBuilding-Utilsapache-ant-1.6.0bin;C:Development_ToolsMicrosoftVisualVisualStudioCommonMSDev98Bin;C:Development_ToolsMicrosoftStudioCommonTools;C:Development_ToolsMicrosoftVisual StudioVC98bin;C:Development_ToolsMicrosoft V isual StudioCommonMSDev98bin另外可以直接运行下列批命令来自动设置(仅对克隆的机器有效) :D:Development_HomeTools.Configspath.bat4.2.2 bcc55为了支持第三方使用 Borland IDE ,需要配置Bcc55 编译器。4.3 构建工具常见的构建工具,C/C+有 Make, Bjam , cpptasks for Ant; Java 有 Ant, C# 有 NAnt。考虑到 Ant 具备使用方便、功能全面、 XML 格式可读性强、容易掌握等优点,本项目选用Ant 作为首要的构建工具。典型构建工具环境的配置为:jsdk1.4.x Java 运行环境apache-ant-1.6.0 Ant 工具安装路径示例:C:Development_ToolsBuilding-Utilsapache-ant-1.6.0cpptasksl.Obeta支持 Ant进彳f C/C+构建的扩展安装路径示例:C:Development_ToolsBuilding-Utilsapache-ant-1.6.0lib cpptasks.jarant-contrib-0.6 支持 Ant 使用控制逻辑的扩展安装路径示例:C:Development_ToolsBuilding-Utilsapache-ant-1.6.0lib ant-contrib-0.6.jarenvset项目组自行开发的一个WinNT环境变量设置小程序安装路径示例:C:Development_ToolsBuilding-Utilsapache-ant-1.6.0bin envset.exe注意:为了支持 cpptasks , ant-contrib 的使用,必须在 Ant 构建脚本中加入以下声明: 4.4 持续集成工具主流的持续集成工具有CruiseControl , 提供了 Java 与 两个版本。 我们通过对Java版本进行相应配置,实现了 C/C+ 项目的持续集成。在集成服务器上的安装路径示例:C:Development_ToolsBuilding-Utilscruisecontrol-2.1.5为了支持 C/C+ 项目,需要加入 cpptasks 、 ant-contrib ,可以通过修改 CruiseControl.bat文件来实现,示例如下:set EXTLIBDIR=%ANT_HOME%lib%EXTLIBDIR%ant-contrib-0.6.jar;%EXTLIBDIR%cpptasks.jar;4.5 软件配置管理客户端本项目选用 ClearCase作为软件配置管理的工具。开发工作站、测试工作站和集成服务器都将安装ClearCase客户端,其安装配置参见其它ClearCase相关文档。视图路径示例:D:Shared_ViewsPCHL_V1_Dev4.6 用户私有构建场所各构建主机上需要创建类似 的目录,作为工作用户私有的开发场所,开发人员可以将PCHL_SupportsEnvironmentsDevelopment Development_Home.zip( 可 以 从 ClearCase 的 PCHL_Working 流 下 找 到 ) 解 压 直 接 生 成 此 目 录 集 , 其 中D:Development_HomeBuilding.Workspace 子目录将用于自动构建。 Development_Home.zip包内还包含 CruiseControl 持续集成的相关配置文件。4.7主机克隆为了提高工作效率,项目组的开发工作站可以通过克隆的方式进行快速安装。环境工程师针对项目组日常开发、管理、协同等工作需要,制作了完整的系统盘( C主分区)映像, 包括开发工具、CASE工具、其它常用工具等,上述构建用工具软件均包含在内。映像有 Windows2000Professional 与 Windows2000Server 两个版本,源路径示例:back1-svrghost_imgsw2ksrv_xw2ksrv .GHO使用者可以用支持网络连接的引导CD启动系统,执行ghost,然后进行克隆。5构建基础知识5.1 Ant构建脚本自动化构建的核心是表达构件间依赖关系和构建步骤的脚本,Make工具使用makefile,而Ant使用了基于XML格式的缺省文件名为 Build.Xml的配置文件。5.1.1 Ant项目配置文件Ant配置文件描述了一个构建项目( project),它由一些属性定义(property)和一个目 标机(target tree)组成;目标代表了一个期望的构建结果(例如生成一个链接好的可执行文件),并表述了其依赖的其它目标,常见的构建目标有初始化( Init)、编译(Compile)、单 元测试(Test)、安装(Install)、清除(Clean)等;每个目标包含了实现它而将要执行的任 务(task), Ant支持的任务种类非常丰富,例如源码编译、文件拷贝、执行命令行操作等。Ant还提供一种非常重要的任务就是执行其它的项目配置文件,使得多个构建项目的批处理成为可能。5.1.2 Ant配置文件示例下面是一个 Ant项目的配置文件示例:project name=Improve-Install default=InstallAll basedir=.description Build file for all Improve library project/descriptionproperty environment=sys_env/property name=proj.root location=./target name=-Initcondition property=cc value=$mswin32-compiler/conditioncondition property=cc value=gcc/conditionecho message=$ant.project.name: Init Complete/targettarget name= Clean depends=-Initdescription=Clean the temporal building space!- Delete all files in temporal build space -delete includeEmptyDirs=truefileset dir=$tgt.bin includes=objs/*, objs_d/* defaultexcludes=false/delete includeEmptyDirs=truefileset dir=$tgt.lib includes=objs/*, objs_d defaultexcludes=false/mkdir dir=$tgt.libobjs_d/mkdir dir=$tgt.libobjs/ifequals arg1=$cc arg2= msvc/cc name=$cc objdir=$tgt.libobjs_d outfile=$tgt.libimprove_debug outtype=static exceptions=true multithreaded=true runtime=dynamic debug=truecompiler extends=$cc-compilerincludepath path=$tgt.interface/includepath path=$getenv.BOOST_ROOTinclude/includepath path=$getenv.CPPUNIT_ROOTinclude/definesetdefine name=WIN32/define name=_WINDOWS/definesetcompilerarg value=/W3/compilerarg value=/GR/compilerarg value=/O2/linker extends=$cc-linkerlinkerarg value=/machine:I386/!-fileset dir=$getenv.LIBS_ROOTlib includes=3d_party.*/-fileset dir=$tgt.srcinclude name=*/*cpp/include name=*/*c/exclude name=exception_ex.*/echo message=$ant.project.name: AutoBuild Complete/target name=Test depends=-Init, TestBuild description=Perform acception testingecho message=test_main.exe Debug V ersion Testing Pass/echo message=test_main.exe Release Version Testing Pass/echo message=$ant.project.name: Testing Complete/target/project在此Ant配置文件中定义了项目将引用的一些property ,例如环境变量、项目的根目录路径、指定的编译器等;项目的缺省构建目标为 InstallAll ,它通过依赖定义,使得初始化(Init)、 清除(CleanAll)、编译(AutoBuild )、安装(Install)、测试(Test)等目标依次执行;AutoBuild 目标执行的cc任务,将对源码进彳T编译,并通过 includepath设置了编译头文件的查找路径, 通过linker段指定了需链接的库 3d_party.lib。本项目中各 Ant配置文件的具体配置和使用,请参见Ant用户手册等参考资料,和阅读Ant配置文件本身内容。5.1.3 Ant执行示例Ant在命令行下执行的示例:国 C:WINNT system32cnMl.eKe - antBulldf He : build, xmlInit :eclw J Log4cpluS-Install: Init CoupleteClean:delete Deleting directory K:PCHL_Ul_DevLihpapieslog4cplusxbuild_space echo 1 Log4cplus-Install: Ciean buildspac# ConpleteCleanAll:delete IXeleting directory K;TCHL-VUevSLibrariesXlosjlcplusXtestsbindelete J Deleting 173 f iles f ron K : t*CHL UlDeu Mjibraries log4cplus Jtestdelete 1 Deleted 46 diiectaries Fran K: PCHL_U 1 _J)euXLibpai&slog4cplusXtest echo Log4cplus-Install: Glean A11 Complete-Prep:LmkdipJ Created dir = K : XPCHL_U 1 _Deu L 1 Jbrat*ies log4cplustes fc b 1 nLinkdii* J CreAted dir: K: PCHL_Ul_DeuLihrAFieslog4cplus build_spaceecho J Log4cplus-Ins tall: Prepare for Re-Install Complete at 1月 9 2100 H 63:1?下午Unpack:Cuntar 1 Expanding: K: XPCHL_Vl_DevSLibvariesXlof4cplus ippedloj4cplusl .ft,t into K: JCHLl-DevXLibraviesMocplusMmild-space5.2 CruiseControl执行脚本持续集成的过程由缺省文件名为 config.xml的配置文件来定义。config.xml中确定了构 建周期间隔,以及检测配置库状态、 调用Ant配置文件进行构建等步骤的内容。为了实现自动化持续集成,还应编制 Ant封装(wrapper)配置文件,它在调用原始 Ant构建脚本(相 当于将原始Ant脚本封装在内)的基础上,添加用于持续集成的更新源码目录等步骤。5.2.1 CruiseControl项目配置文件CruiseControl项目配置文件描述了一个集成项目(project),它由引导段(bootstrappers)、检测修改集段(modificationset )、调度段(schedule)、日志记录段(log)、发布段(publishers)、 插件定义段(plugin)组成。引导段用来设置持续集成流程开始执行时相关的初始化任务, 例如更新源码管理中的指定文件;检测修改集段则指定了需要检测的已置于配置管理下的目标源码,以便在检测到有源码更新后启动后续的构建步骤,例如 clearcase中的某分支下、 某视图中的一个目录; 调度段是持续集成流程的核心部分, 在此确定了构建周期间隔、休眠时段,并描述了构建的目标,目标通常指向一个 Ant封装配置文件;日志记录段指定了将向发布步骤提供数据的各项日志记录; 发布段则设置了对构建结果进行发布和通知的内容, 例如指定报告的 E-mail地址等;插件定义段用来指定 CruiseControl各项功能实现对应的插件 类。5.2.2 CruiseControl配置文件示例下面是一个 CruiseControl项目的配置文件示例:project name=peripheral_api_projectcurrentbuildstatusbootstrapper file=currentbuild.txt/modificationset quietperiod=30clearcase branch=PCHL_V1_Dev recursive=trueviewpath=d:/Shared_Views/PCHL_V1_Dev/PCHL_Components/protocols_api/peripheral/modificationsetschedule interval=60/schedulepublisherscurrentbuildstatuspublisher file=currentbuild.txt/project5.2.3 Ant封装(wrapper)配置文件示例下面是一个 Ant封装(wrapper)配置文件示例:project name=peripheral_api_cc default=masterbuildproperty file=proj.propertiesproperty name=proj.dir location=$proj.path/ccupdate log=clearcase.log overwrite=true viewpath=$proj.dir/target name=clean description=Clean all build productstarget name= masterbuild depends=update,rununittests,smoketest description=Cruise control master build/target name=cleanbuild depends=clean,masterbuild description=Cruise control clean build/project注意本Ant项目配置文件中主要添加了 update目标,用来将proj.properties文件中定义的proj.path=d:/Shared_Views/PCHL_V1_Dev/PCHL_Components/protocols_api/peripheral 目录下的所 有内容进行更新。5.2.4 cruisecontrol 执行示例cruisecontrol在命令行下执行的示例:6集成构建基本流程6.1 概述在构建开始前,构架师应当确定项目初步的基本源码包组织结构,和包之间的依赖关系等,并定义项目统一的构建目录结构。构架师还应指导集成员制定集成构建计划,以确定集成的内容、构建周期和日程表。 在项目构建阶段初期, 构架师应密切参与或直接承担集成的 工作,从而为项目源码结构确定演进的方向;其后还应给予足够的关注,并经常性地修订和维护源码目录结构,以便在整体上把握项目源码和最终交付工件。随后的每个构建周期都包含:实施一单元测试一提交一集成一冒烟测试的基本过程。6.2 集成过程说明实施员在私有的开发工作站上,按照项目统一的源码结构组织其单元开发目录,完成源码和单元测试代码的编制,并在集成员的指导或帮助下编制私有构件的自动化构建脚本(为了编码和调试方便, 实施员通常选择 GUI集成环境进行编译, 这种IDE内部格式的编译项目 既不标准,也不适于集成构建使用,因此维护额外的构建脚本是必要的),在构建成功后向集成流( Stream )提交成果( delivery ) ;在结束提交之前,实施员应尽可能在本机尝试集 成构建,以验证构建脚本、单元测试代码与源码可用,之后完成提交。集成员在集成服务器获取各实施员提交的构件源码, 先根据需要调整各源码结构以解决构件间的编译冲突,再编制或修改集成构建脚本,加入集成构造目标(target ) ,并增添对新增单元构建脚本的调用,以实施统一的批量编译、链接,最终生成集成构造;为了实现并验证集成目标,可能需要修改源码,增加或修改用于集成测试的代码,和进行集成调试等,这可由集成员或实施员来完成此项工作; 集成员开始执行干净的集成构建 (为了实现持续集成,可以配置操作系统任务,定时在夜间自动执行构建任务) ,生成可执行交付工件(也包括静态或动态链接库等) ;为了验证构建步骤成功,随后需要执行冒烟测试,其原则是尽可能利用已有的测试代码,通过在构建脚本中调用它们,实现自动化的冒烟测试(对于GUI 目标系统而言,实现自动化较为困难,往往依靠手工完成冒烟测试) 。集成员或配置管理员为构建成功的一个构造建立基线; 测试员将在测试工作站上对此基线进行集成测试; 实施员则可能在各自的开发工作站上, 重设开发基线于此基线上 ( rebase ) ,以在新的基础上继续后续开发工作。6.3 持续集成过程说明集成员通过配置 CruiseControl 工具,可以将部分较为简单、不需要人工干预和希望经常重复执行的集成工作交给工具来自动完成。 集成员可以配置多个持续集成项目, 包括若干个多人同时在开发的子构件、最终发布的集成包等。CruiseControl 在活动时段,循环执行各构建周期,包含:引导初始化检测源码变化集成构建单元测试发布构建和测试结果等步骤。每当实施员在私有开发工作站上, 将源码检入 ( Checkin ) 、 加入源码控制 ( Add to SourceControl ) 、或者向集成流( Stream )提交成果( delivery )时, CruiseControl 在随后的构建周期循环中, 将通过检测源码变化步骤检测到这一变化, CruiseControl 此时会等待预定的间隔,看看是否有新的源码变化出现,避免实施员批量检入或加入源码控制时遗漏后续变更;CruiseControl 开始调用 Ant 封装( wrapper )配置文件执行构建,它首先更新目标源码目录下的所有内容(调用 ClearCase ccupdate 指令) ,以同步变化的源码,再进行编译、链接,完成预定第 17 页,共 27 页的 冒烟测试, 并将结果记录到相应的日志中; CruiseControl 在构建完成后, 通过 e-mail 将成功或失败的结果通知提交源码变更的实施员、以及指定的其他人员,并生成构建报告网页,相关人员通过e-mail 接受通知的同时,也可以登陆CruiseControl 的发布网页来浏览构建报告详细信息。7 构件的集成原则7.1 生产者与消费者不同构件的开发者之间通常处于一种生产者与消费者的关系, 即生产者交付工件提供给消费者使用。生产者交付的工件类型有:原始( Original )工件(源码、构建脚本、配置文件等) ,中间( Derived )工件( Obj 文件、 lib 库等) ,最终产品( Product )工件(可执行文件、 Dll 库等) ,其它临时( Temporal )工件(编译器产生的临时文件等) 。消费者将使用这些工件。C+项目中这种消费关系包含:编译引用他方的公开( public )头文件、链接他方的静态库文件(或Obj 文件) 、以及生成的最终执行文件调用他方的动态链接库等。除了原始( Original )工件,其它派生工件都可以通过构建过程来自动生成,为了简化生产者与消费者的依赖关系, 保持派生工件对原始工件版本的一致性, 并减轻配置管理的开销, 生产者应尽量只向消费者提交原始工件, 消费者则依靠构建脚本生成他们需要的派生工件(出于效率考量, 在构建开销较大时, 消费者也可以直接使用生产者构建出的最终产品工件,其后果是版本冲突的风险变大,配置管理的开销增加) 。为了满足只提交原始工件的需要, 编制自动化程度很高和高质量的构建脚本变得格外重要, 如果构建过程增加了消费者的负担, 或者出现了构建失败的情况, 消费者将更倾向于直接从生产者手中拿到构建后的产品工件。理想情况下, 生产者可能在消费者开始使用前就交付了其依赖的工件, 但通常团队会采用并行开发模式,消费者必须在生产者完成交付前就开始工作,因此开发替代的桩( Stub)代码,甚至为了调试方便而专门开发摹仿(Mock )代码,成了家常便饭。根据实际需要,替代代码可以由生产者自身或消费者来开发。 针对这种状况, 在编写构建脚本时, 应提供相应的编译、链接选项,使得消费者可以自由选择将交付代码或桩( Stub)代码编译、链接到他的构造工作版本中,同时集成员还可以利用这些选项来开展增量式的迭代集成。7.2 源码目录组织原则开发目录组织结构从来就是关系到项目健康成长的关键因素。 开发 (产品) 目录提供了项目团队进行开发、管理等活动的统一共享场所,它需要满足不同涉众(角色) ,在不同的阶段, 对不同类型工件进行访问的多种场景需求。 因为项目的编码实施、 集成等活动相互间的依赖关系远比其它文档编写类活动要复杂, 协同整合更为困难, 使得合理的源码组织结构变得极为重要, 构架师和配置管理员必须投入更多精力关注开发 (产品) 目录中的源码组织部分。源码目录组织的首要原则是目录结构的统一, 项目中应当采用统一的分类方式、 同一的风格、一致的命名格式来创建所有构件的源码目录。本项目中涉及到第三方库、项目构件、子系统、 系统四类构件, 其源码目录结构采用同一的基础目录结构, 并根据各自需要做了相应的扩展。开发 (产品) 目录的组织应当尽量在同一级的目录中采用同一种分类标准。 目录分类标准 有 : 按 照 工 件 类 型 ( src/bin/lib/doc/mdl/script/web/xdoc ) , 按 照 工 件 功 能 或 用 途( build/test/interface/example ) ,按照活动组织( plan/requirement/design ) ,按照归属关系(第三方库3rd Lib/基础构件 Components/子系统Subsystem),等等。如下图所示, 本项目中, 第一级目录按照归属关系来划分, 源码构件的第二级目录按照构件设计包结构来划分,源码构件的第三级目录则按照工件类型并结合工件用途来划分。L:- iRdliuridl ClcarCd-e Euilurer - liuy_PCHL_Vl jDev (DShdted.ViewPCHL _V1 _DevPCHL_Componentslw-ocaCtonstc)二J 口因gjle Jcw G Jools Environment HelpInFr5structures 7 improve 口 lnfr&_bundle _J lost44clind Cj Mml_donijntf LibrariesE -_I 3WE Jj aht-buid boostE _J boost-buftd 农口 邙口unit Et 二| Iib_b5dte Elogcplus 方,二lost-i-found 叵二| mockppE 2J othersE _| xercescI POL.CofinporiBritsEE CJI coinrronijaal:iesE _J CDnvsrsationJntfB-LD irivgElQRSQhh回口 buid区I npcLde0 j lb由 m srcE tJ Icrit+tfaundFF 口 rwshaLsupporting 二J pratocDk_apiFT i irnnl.产Name5 lie 1 KindModfied叫 cdleei_handlw_ba5e. cpp cf| excBptian.cpp阚 exceptlon,msgp .cpp ci| executeJrameviark.qDp 项 genefaLmsa_base.cpp 史| handller_factorycpp 嗣 rgque 丈163 541HLO 27D012 M 1236907File Elemenl: Version File Element Version File Element Version Fife Eleinent Version File Element versionFile Elerment Yer5kxi File Element Version2001-01=27 2D04-Ob27 2004-01-272004-01-2720CM-01-27 ZDEM-01-27 2004-01-27HTresponse rrr3Q bdse. cpp1037Ffe flement VMflan2001-01-27 server_f acDry_ba5fi .cpp 阙 s&rerobLbase.cpp61936B0Fife Element Vers ioriFile Element Version2004-0b272004-01-27J上J Your selectionUses -JAboutne*p(jttse_rnsQ_bas cppvv Tag: hLt)g_POHLVI Dev口抬幅咄Mw Path PEH L_V1_D evPCHL_COHiponerts invacaiivicUCM Flaject- PEHL_V1KnlFile Element VersionMdW2tB4-0n-27 n iUaV&sm而俄“L_W_Dev1RiJff. PCHL_V1_D bvLAT ESIreipnnse_mfgLltse. cpp ts a ver?wed fte uncfef CteaiC5se source antiMoi1 HView: huHg PCHL Yl De*Activfcy: reFactory the System directory structureRams: 1.0* 团甯窗D*nI、曲开发(产品)目录应当面向团队协作,既要做到实施员在私有空间开发时相对独立,不受他人工作的影响,又能保证与他人的工作成果同步,并顺利地实现集成。 这将依赖软件配置管理工具的支持,方能较好地达成上述目标。开发(产品)目录本身可以看作是项目的一个工件,随着项目的进展也在不断地调整和演进,代码需要经历重构,目录结构也不例外。在项目初期就完全固定目录结构是不现实的。当前支持对目录进行版本控制,并能方便修改目录结构的配置管理工具不多,其中以ClearCase为主要代表,这也是本项目选用ClearCase的原因之一。8各类构件集成的实施方案8.1 第三方开发包的实施方案第三方开发包在使用时有如下特点:每个产品有各自不同的目录结构,组织的方式不统一,直接使用将增加
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!