持续集成及CruiseControl技术交流(IBM)

合集下载

持续集成 也需要重构 持续集成实践在Cruise

持续集成 也需要重构  持续集成实践在Cruise

持续集成也需要重构持续集成实践在Cruise阅读:87评论:0作者:iTech发表于2010-05-28 16:04原文链接转自:1前言持续集成是极限编程十二实践之一(1999年Kent Beck编写的《解析极限编程》),最初被使用极限编程方法的开发人员所推捧,并在过去的几年中得到广泛应用,成为业界广为人知的软件开发实践。

该实践用于解决软件开发过程中一个具体且重要的问题,即"确保当某个开发人员完成新的功能或修改代码后,整个软件仍旧能正常工作。

"然而,持续集成并非像大多数人想像的那样,首次部署好持续集成环境后就大功告成,一劳永逸了。

恰恰相反,它与你项目中的其它产品代码一样,需要改进与重构,否则,就会使你进入一种"持续闹心"的状态,甚至可能让你觉得这件事根本不应该做,如何解决这一问题呢?对"持续集成"应用"Retrospective"和"重构"。

本文将结合Cruise团队一年多的实际历程,讲述持续集成实践在软件开发过程中的演进。

友情提示:请读者在阅读本文时,注重文中所述的思考过程与"持续集成"的重构方式,而非产品本身。

2基本持续集成--万里长征第一步实际问题:我们需要一个持续集成环境为什么要做持续集成不在本文讨论之内。

理论基础持续集成基于这样一个假设:如果两次代码集成的间隔时间越长,最终集成时痛苦的经历就会越多。

而其目标有两个:一是"频繁集成",二是"反映代码质量"。

为了做到"频繁集成",就要求任何开发人员在每次向中央代码库提交代码时,就将所有代码进行编译,打包,部署,以确保能够产生交付物。

然而,"频繁集成"仅仅证明了每次提交是否可以得到交付物,而我们真正需要知道的是"这个交付物的质量如何"。

力控IBMS系统解决方案

力控IBMS系统解决方案

力控IBMS系统解决方案导语:智能建筑管理系统(简称IBMS)是智能大厦的一个重要的组成部分。

以当今先进的网络技术、计算机技术、通信技术、控制技术和数据处理技术等多项技术为基础的,通过网络将各个子系统连接起来,共同完成集中操作、管理和分散控制功能。

1 方案概述智能建筑管理系统(简称IBMS)是智能大厦的一个重要的组成部分。

以当今先进的网络技术、计算机技术、通信技术、控制技术和数据处理技术等多项技术为基础的,通过网络将各个子系统连接起来,共同完成集中操作、管理和分散控制功能。

力控IBMS解决方案将建筑自动化系统(BAS)、消防系统(FAS)、安防系统等各子系统进行集中管理。

主要是对楼宇中的空调系统、冷热源系统、给排水系统、电力、灯光照明、电梯、消防及保安系统等众多分散设备的运行、安全状况统一进行集中监视、管理和分散控制。

2 系统需求●通过智能建筑管理系统全面掌握建筑内的设备的实时状态、报警和故障;●通过智能建筑管理系统连通不同通讯协议的智能化设备,实现不同系统之间的信息共享和协同工作,例如:消防报警时,通过联动功能实现视频现场的自动显示,动力设备的断电检测,门禁的开启控制等;●辅助楼宇能耗管理系统做能耗分析,针对设备运行情况进行设备分析设备维护等3 系统架构4系统功能4.1、数据采集力控采集服务器将建筑管理过程中所涉及的各种控制,监测,计量,检测无线的感知设备数据采集到上层云平台中。

系统支持采集LON、BACnet、CAN、SNMP、OPC、DDE、ODBC、DLT645等协议的核心设备运行状况、主要能耗管网状态,环境介质质量监测等数据。

将全楼宇的智能控制系统的实时状态采集进入系统,供数据监视、存储、报警、分析、计算、统计平衡等使用。

4.2、各子系统联动●火灾报警与楼宇自控系统的联动●火灾报警与门禁系统的联动●火灾报警系统与综合保安系统的联动●门禁系统与综合保安系统的联动4.3、信息管理将IBMS系统集成的各种机电设备和设备实际运行数据自动联系在一起,使用户可在大楼任一地点可通过浏览器进行设备的运行统一管理。

Java 程序员必备的10款开源工具

Java 程序员必备的10款开源工具

Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer 等。

如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。

在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。

1. JIRAAtlassian的JIRA是当前敏捷开发领域最重要的工具之一。

它用于错误跟踪,问题跟踪和项目管理。

如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。

它允许您创建Spring循环并跟踪软件开发的进度。

JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。

2. GitGit是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。

Git易于学习,占用空间小,具有超强的性能。

最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。

3. SeleniumSelenium是Web应用程序最好的软件测试框架之一。

它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。

Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。

它还为Web浏览器自动化提供了各种工具和库。

Selenium 现在存在2个版本,一个叫selenium-core 一个叫selenium-rc 。

4.JenkinsJenkins是一个用Java编写的开源自动化服务器。

它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。

智能化系统集成(IBMS)技术解决方案

智能化系统集成(IBMS)技术解决方案

智能化系统集成(IBMS)技术解决方案近年来,随着我国智慧城市建设的发展,3D可视化系统集成概念逐渐走进人们身边。

目前正在建设的一些智慧城市大数据可视化平台能够实现将城市运行核心系统的集成和各项关键数据进行呈现,从而对包括应急指挥、城市管理、公共安全、环境保护、基础设施等领域进行管理决策支持,进而提升城市综合管理水平。

运用BIM技术与IBMS系统相结合,利用物联网技术、云计算技术打造全新的运维平台,3D运维系统集成平台。

对建筑的空间,设备资产进行科学管理,对可能发生的灾害进行预防,使建筑的运维工作提升到智慧建筑的全新高度。

可以广泛应用于大型建筑,轨道交通,多建筑网点运维等行业。

智能化集成系统(IBMS)是一个在技术上、品质管理上、施工管理上都有很高要求的项目,我方特别为这个项目的设计拟定了本系统设计规范说明,以便参与本项目的工作人员能对大楼智能楼宇管理系统的功能、设计及要求有所理解,并确定了系统设计的标准。

我方设计根据某综合楼的性质、用途特点,采用先进、成熟的技术对整个大楼的弱电子系统,包括建筑设备管理系统(BAS)、消防自动报警系统(FAS)、公共安全系统(报警、监控系统、门禁系统、停车场管理系统)智能卡应用系统(门禁系统、停车场管理系统),信息引导及发布系统、设备与工程档案管理系统进行统一集成,形成一个统一的、相互关联的、相互协调联动的、在同一平台上运行的综合管理系统,实现楼宇信息的高度共享。

目前整个BIM技术的应用都集中在前期的设计、施工阶段,使BIM在建筑完工交付后却被闲置。

BIM 3D运维是未来的趋势也是现在必须解决的问题。

随着科技的进步,我国的信息化、智能化也发展起来,这为BIM运维提供了良好的信息化基础。

IBMS主要包括楼宇自控系统(BAS)、消防系统、视频监控系统(CCTV)、停车库系统、门禁系统等子系统。

针对IBMS中的子系统的运行方式,可以对建筑竣工的BIM模型进行进一步挖掘其在运维上的应用。

智能化系统集成(IBMS)技术解决方案

智能化系统集成(IBMS)技术解决方案

智能化系统集成(IBMS)技术解决方案IBMS技术解决方案在智慧城市建设中扮演着重要角色。

通过3D可视化系统集成,城市运行核心系统和各项关键数据可以进行呈现,从而提升城市综合管理水平。

利用BIM技术和物联网技术,可以打造全新的运维平台,实现对建筑的空间和设备资产的科学管理,预防可能发生的灾害,提升建筑的运维工作水平。

IBMS包括多个子系统,如楼宇自控系统、消防系统、视频监控系统、停车库系统和门禁系统等。

通过BIM 与物联网的结合,可以实现资产可视化和监控可视化,提高资产信息的掌控力和运维效率。

该系统支持与资产配置管理系统(CMDB)集成,自动读取设备的端口和链路数据,并在3D场景中生成和删除设备。

同时,用户可以通过点击设备端口来查看其占用和配置信息,实现与资产配置管理系统的自动同步。

此外,该系统还支持数据的导入和集成对接,提供可视化的分级信息浏览和高级信息搜索功能,以提高管线查找管理的使用性和使用效率。

通过集成远程控制系统,该系统可以在可视化环境中对设备进行直观的观察和分析,并实现对设备的远程控制可视化,从而使运维更加简单快捷。

该系统采用GoogleEarth的地球立体全景的方式(或GIS),对各建筑进行分级浏览展示,以直观互动的3D场景浏览技术,层次化递进地实现全球级浏览、国家级浏览、省区级浏览和城市级浏览。

用户可以通过悬浮方式显示鼠标选中的建筑的相应示意图,并以点击方式进入各个建筑的3D场景。

这使得多建筑的查看变得非常便捷和灵活,有利于日常的管理。

该系统的部署架构非常简洁,只需要在建筑管理端部署PC Server做为系统服务器使用,通过局域网络与现有的建筑其他管理系统XXX并进行数据交换。

该系统支持B/S架构,远端的桌面用户或大屏显示终端只需要通过IE浏览器登录到可视化系统服务器,即可访问和浏览可视化系统,无需安装独立客户端。

此外,该系统还支持部署多台服务器以实现可靠性要求。

十项互联网新技术

十项互联网新技术

十项互联网新技术:影响未来十年最近InfoWorld网站公布了可能影响未来十年的十项新技术。

虽然每个人的观点会有不同,但是我们相信,这十项新技术足以代表大部分的观点,同时也可以确信在未来几年这十项技术能给我们生活带来翻天覆地的变化。

1.私有云技术IT经理可以借由公共云提供商首创的技术和架构,并把它们应用到自己的数据中心。

私有云,往往有许多移动部件,包括虚拟化管理,计量和扣款系统,自动配置,自我服务供应。

但一些人在过去一年中取得了令人惊讶的势头。

已知开源项目OpenStack,它提供了一个云业务流程服务的核心设置:虚拟机管理,对象存储和图像服务。

OpenStack账单作为自己的“云操作系统”,最初是由Rackspace和美国宇航局研制,但是在计划分拆该项目后作为一个单独的基础进行。

OpenStack最有名的竞争对手是桉树,这基本上是一个Amazon Web服务的私有云实施。

也许有人很容易认为技术集群应用“云”一词总是虚无缥缈的。

但大规模的虚拟化和其他计划的好处是可见的,如网络融合,更大的规模效益,集中资源。

这些变化为新的工作方式和新兴的云编排软件收集提供了手段。

2.软件定义的网络像古代珊瑚礁一样,数据中心网络发展缓慢并且随着时间的推移和钙化。

虽然我们从软件抽象支持动态管理中受过益,但是服务器和存储网络一直保持静态的硬件绑定。

凭借几乎几十年来他们对变革的抵制,目前已经成为云计算的道路上的主要障碍。

SDN串联一个软件层的交换机和路由器的硬件,作为一个集中管理的控制平面和创新的平台。

SDN是不是网络虚拟化,网络虚拟化虽然肯定会是它的副产品之一。

相反,SDN是一种“网络编程”,也就是说,它可以让云服务提供商和独立软件开发商建立新的网络功能,其余我们可以借鉴。

SDN的今天领先的例子是OpenFlow。

随着互联网的发展,如何修改互联网以满足新业务的需求,出现了改良派和改革派两种不同的做法。

改良派认为可以在原有的基础设施上添加新的协议来解决问题,改革派则认为必须推倒一切重来。

敏捷开发背景介绍

SCRUM:。 Crystal:。 FDD(Feature Driven Development):Java Modeling In Color With UML: Enterprise Components and Process, 1999。 ADP(Adaptive Software Development) : [Highsmith2000]。 XP(eXtreme Programming):[Beck 1999], [Newkirk2001]。 在北美,以XP(9%)为首的敏捷方法已经拥有了 15.9%的市场份额.
持续集成
– 持续集成介绍 – 持续集成活动 – 持续集成工具
持续集成
♦ 持续集成是一种软件开发实践,即团队开
发成员经常集成它们的工作,通常每个成 员每天至少集成一次,也就意味着每天可 能会发生多次集成。每次集成都通过自动 化的构建(包括编译,发布,自动化测试) 来验证,从而尽快地发现集成错误。许多 团队发现这个过程可以大大减少集成的问 题,让团队能够更快的开发内聚的软件。
极限编程
– 极限编程介绍 – 极限编程12个最佳实践
极限编程
极限编程(eXtreme Programming,简称XP) 是敏捷方法中最著名的一个。它由一系列 简单却互相依赖的实践组成。这些实践结 简单却互相依赖的实践 合在一起形成了一个敏捷开发过程。 迭代:一次又一次循环逼近的过程
极限编程的12个最佳实践
பைடு நூலகம்
极限编程的12个最佳实践
♦ 7 ♦ ♦ ♦ ♦ ♦
结对编程—所有的生产代码都是由两个程序员在通一 台机器上编写的。 8 集体所有权—任何人在任何时候都可以在系统中的任 何位置更改任何代码。 9 持续集成—每天多次集成和生成系统,每次都完成 一项任务。 10 每周工作40小时—一般情况下,一周工作不超过40小 时。不要连续两个星期都加班。 11 现场客户—在团队中加入一位真正的、起作用的用户, 他将全职负责回答问题。 12 编码标准—程序员依照强调通过代码沟通的规则来编 写所有代码。[1]

基于Docker的容器化DevOps平台设计与实现

电子技术与软件工程Electronic Technology&Software Engineering软件开发与应用Software Development And Application基于Docker的容器化DevOps平台设计与实现邢如意(江苏联合职业技术学院徐州财经分院江苏省徐州市221008)摘要:本文以DevOps思想为基础,以Docker作为基础设施环境,通过整合Harbor、Gitlab、Sonar、Jenkins、JIRA软件,设计和实现了基于Docker的容器化DevOps平台。

通过实践证明,文中所述方案可行且运行可靠,为DevOps平台建设提供了新思路。

关键词:DevOps;Docker容器;持续集成DevOps是开发(Development)与运维(Operations)两者的组合,其思想是通过软件开发人员和IT运维人员紧密协同工作、使用自动化工具完成软件系统的构建、测试和发布,从而提高软件发布的频率和质量⑴。

在DevOps过程中,持续集成(CI)和持续部署(CD)是基础,开发、测试和运维是三大工作内容。

持续集成是自动化开发和运维的第一步。

开发人员将代码提交到代码仓库后,DevOps平台自动从仓库拉取最新代码,然后自动执行构建(编译)和测试,并且能够将构建和测试结果及时反馈给开发人员。

持续集成伴随着持续测试,能够更快更早地发现代码中的错误并及时修正,使得软件可以快速迭代,从而保证软件质量。

实现持续集成需要用到版本控制软件(SVN、Git)、构建工具(Ant、Maven、Gradle)和CI软件(Jenkins、CruiseControl)。

持续交付是在持续集成完成后,将软件发布到预生产环境或测试环境中,以便于客户进行评审,在评审通过后再部署到生产环境中,完成系统上线。

如果部署到生产环境也是自动化的,也可称为这一环节为持续部署。

持续部署可视为持续交付的下一环节,是指在系统在完成预生产环境评审测试后自动部署到生产环境的过程,例如App更新升级c图1展示了持续集成到持续部署的整个流程。

软件工程专业的发展前景及趋势

软件工程专业的发展前景及趋势作者:蔚梦柯来源:《中国科技博览》2013年第25期[摘要]软件产业的发展已经关系到一个国家的政治和未来,软件产业将成为21世纪拥有最大产业规模和最广阔前景的新兴产业之一。

软件领域是一个包括系统软件,中间软件,嵌入式软件,数据库软件,财务和企业管理软件,教育软件,游戏软件等。

[关键词]软件工程发展前景体系结构软件项目管理趋势中图分类号:O245 文献标识码:O 文章编号:1009―914X(2013)25―0583―01软件行业中软件外包和软件产品化是投资的两大主线,未来中国的外包市场规模将不断增长,同时行业集中度将逐步提升,而领先的企业获得的增长速度将高于行业的平均增长速度。

目前中国的系统集成类上市公司软件产品化比例非常低,造成了企业盈利状况不明显。

产品化成都高的公司主要集中在管理软件,金融行业软件,及聚焦于某个行业的软件公司。

软件产业属于第三产业的服务业,具有高智力投入,高成长,低成本投入,服务性强,全球性强,与国民经济关系密切等特点,一个高质量的软件会给企业和社会带来很大的便利。

所以软件行业是一个发展前景很好的第三产业。

一、软件行业的发展前景软件领域是一个包括系统软件,中间软件,嵌入式软件,数据库软件,财务和企业管理软件,教育软件,游戏软件等。

软件产业的发展已经关系到一个国家的政治和未来,软件产业将成为21世纪拥有最大产业规模和最广阔前景的新兴产业之一。

软件行业中软件外包和软件产品化是投资的两大主线,未来中国的外包市场规模将不断增长,同时行业集中度将逐步提升,而领先的企业获得的增长速度将高于行业的平均增长速度。

各个企业将集中受益于软件外包的行业趋势,利用其充分提升企业的业绩。

目前中国的系统集成类上市公司软件产品化比例非常低,造成了企业盈利状况不明显。

产品化成都高的公司主要集中在管理软件,金融行业软件,及聚焦于某个行业的软件公司。

提升软件的产品化程度将非常有益于中国软件企业竞争力的提高。

软件工程的研究热点及现状

软件工程的研究热点及现状摘要:软件工程的热点问题伴着软件技术的发展而随之变化的。

即使在软件工程的内部领域,研究的热点区域也处在变动之中。

软件工程的建设队伍将由两部分构成,部分人是做软件评估,另而另一部分人做的是软件集成,主要是对软构件进行集成。

关键词:软件工程;发展历程;现状;一、软件工程的发展历程计算机硬件技术在二十世纪末得到了广泛的应用发展,为微电子计算机的推广打下了坚实的基础,而计算机软件技术也应运而生。

那时生产的软件有着作坊式、个体化的特征,单一的开发平台,落后的开发工具,具备较差的程序设计语言功能。

特别是在软件维护工作方面,损耗巨额的物力、人力与计算机资源,不少程序具有编写者的个性化特征,使其难以得到维护与修改。

有的甚至放弃原来的计算机系统,对新软件重新编写。

此外,各类软件的结构及规模差异性大,很难对软件进行全面的维护,提高了软件开发的成本。

这种滞后的软件开发工具、开发技术与生产方式落后的条件和飞速普及的电脑应用及对软件与日俱增的需求导致了不可调和的矛盾,导致形成了“软件危机”。

二、软件工程的研究热点及现状近年来软构件的应用也慢慢兴起。

在一些公共的应用方面,比如说软件的初始化界面,通用软构件的应用较为广泛。

但是,在各行各业的专业领域应用方面,软构件的研发及推广在我国仍属于空白。

这一工作的推行,首先是表明了各行各业对该专业领域中的知识形态予以分析归类,并通过最新软件的形式进行描述。

假如这个全面展开这个工作,将会是一个浩大规模的系统工程,亟需各行各业的软件专家与领域专家全力协作方可完成。

在开发软件的过程中研发者开始应用与研发软件工具,以便对软件项目管理与技术生产进行辅助,研发者还把软件各阶段的生命周期使用的软件工具机动性地整合为一个团体,构成可以持续性地支持软件维护和研发整个过程的集成化软件环境支援,以便从技术与管理两个维度解决软件危机的问题。

三、软件工程的发展趋势(一)需求工程渐成热点需求工程将成为软件工程发展的热点,当前业务创新日益复杂,同时分工更加专业化,区域组织的全球化以及互联网级的交付速度,这些均对获取需求的准确性及有效性提出了进一步的要求,其中Use Case技术(用例分析,也就是尝试通过分析类来在理想状态下完成用例)将会被大大的推广应用,而有关工具的研究也会变成热点(如IBM Rational Requirements Composer,,Ravenflow 等)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
既然如此,软件研发团队应该让计算机的价值最大化! 可回归性
即尽可能将重复劳动交给计算机去完成,也就是说研发人员(软件从业 人员,包括CI集成人员)需要最大化计算机的价值。自从人类发明计算 机以来,它们最擅长的,就是完成重复劳动,而且毫无怨言地工作。与 此同时,我们要善于将软件研发期间涉及到的各种重复劳动提炼出来, 并将这类劳动托付给计算机完成,进而使得我们能够尽可能地把宝贵的 时间投身于智力劳动上。这也体现了现阶段计算机与人类间社会分工的 差异性
CruiseControl介绍
基于/dashboard控制台的构建网格:
18
CruiseControl介绍
分布式集成构建架构图:
19
CruiseControl介绍
config.xml配置文件示例:
20
CruiseControl介绍
内置插件集合:
21
案例研究
petclinic:一典型的示例应用
6
提炼重复任务-实现可回归性的重要前提
在软件研发的整个生命周期中,不同阶段的大量工作在经过一定的分析后, 其中的很大一部分工作内容都可以抽取为重复任务,具体如下: 对于数据库相关任务而言,DBA(数据库管理员或设计师)可能要经常 重建数据库,并初始化数据库。如果把用于数据库重建的DDL脚本外在 化管理,并作为配置管理系统(Software Configuration Management, SCM)的配置项,则数据库的重建工作将不再是只有DBA才能够完成的 工作。同理,用于初始化数据库的相关DML脚本也可以单独整理出来, 并存放到SCM中,比如ClearCase、VSS、CVS、Subversion。此后, 这类DDL和DML脚本的执行便可丢给计算机完成,继而DBA能够把自身 宝贵的时间和精力投身于数据库本身的设计、优化上,而不用再去浪费 时间重复执行它们
10
何谓持续集成
下图展示了持续集成:
11
持续……
持续数据库集成:定期基于SCM中的最新SQL脚本(包括DDL和DML语句)完成数据 库的重建和数据初始化工作。比如,借助Apache Ant内置的<sql/>支持
持续单元及集成测试:从SCM中检出最新的Java代码,并自动执行其中的单元及集成 测试代码,最后给出相应的测试结果。如有需要,还可以自动给出代码覆盖度分析结果, 比如Clover、Cobertura、EclEmma、TPTP、Coverlipse
CruiseControl持续集成服务器历史悠久,可谓是现有各种CI服务器的鼻祖, 其产品的成熟特质、使用面广、得到一流的开发团队支持 (ThoughtWorks)。最重要的是,这是一款开源产品,其内置的持续集成 特性非常丰富,而且可扩展性很强
16
CruiseControl介绍
架构图:
17
22
总结
在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持 续集成起到重要作用
持续集成能够解决研发工作中的80%任务(日常) ,而剩下的20%任务 (非日常)需要研发团队智力劳动的付出
CI需要整个团队的配合,我们不能够把CI看成是单纯的技术实践。更多地, 它是一种研发模式的转变
针对不同客户、产品、项目,不同研发团队可能会采用不同配置管理工具 (Subversion、ClearCase、CVS、VSS)。传统的SCM工作,仅仅包含常 用的基线管理、配置状态报告、配置审计报告、变更管理等。至于配置库中 的工件是否有问题,上述工作内容并不能告知,比如代码是否能够正常编译、 产品文档是否能够正常打开。敏捷配置管理(Agile CM,ACM)克服了这些 缺陷。ACM,不仅存储静态工件(黑盒),还动态地、集成地将配置库中工 件本身(白盒)存在的问题不定期暴露出来
9
敏捷性-奔向成功的致胜法宝
敏捷性: 即在保证目标任务完成质量的前提下,以最快的速度交付出工作成果。 这实际上体现了效率与质量的并重。借用现有成熟的技术或工具提炼重 复任务,这就是一种敏捷性的体现。值得注意的是,软件研发期间,除 重复任务的提炼外,那些不能够作为重复任务的工作的完成也可以用敏 捷性来衡量。比如,软件项目的架构设计本身,这项工作是需要经过富 有经验的业务和技术架构师的深思熟虑。即使如此,在很多场合,架构 设计工作实际上也可以交给一些成熟的开源框架,比如Spring Framework,这类框架已经几乎把目标应用的架构设计确定下来了 可回归性和敏捷性相辅相成,可回归性是基础,没有可回归性就没有敏 捷性;敏捷性是提升可回归能力的重要法宝。为了使得团队和软件研发 项目的可回归性、敏捷性达到最优,必须实施持续集成。借助于持续集 成(Continuous Integration,CI),重复任务的执行能够变得更加敏捷
最近几年,参与到银行信息化建设工作当中 出版过10本技术书籍。近期已出版《敏捷持续集成
(CruiseControl版)-高效研发之道》一书
© 2004-2008Fra bibliotek 交流内容 各方的苦恼 区别计算机与人类智慧 何谓持续集成 CruiseControl介绍 案例研究 总结 回答问题
持续评审:基于SCM中的最新代码进行各方面的自动评审工作,比如代码风格和规范 评审、架构设计评审、详细设计(JavaDoc)评审。比如,基于Checkstyle、PMD、 JDepend、JavaNCSS、Fortify、javadoc.exe等自动进行
持续部署:将构建工作的产出物持续部署到目标测试环境,比如借助Apache Ant、 SmartFrog
7
提炼重复任务-实现可回归性的重要前提(续)
接上: 对于开发人员而言,他们可能要经常手工运行自身写好的单元和集成测 试代码。而且,随着项目的往前推进,这类测试代码的数量往往是惊人 的,如果要开发人员或项目组派专职人员来手工运行它们,则效果可能 而知。这类测试代码的运行完全有理由托付给计算机去自动完成 对于架构设计师而言,他们要经常检查开发人员完成的开发工作是否符 合设计初衷,比如JavaDoc注释是否符合要求、各个Java包是否遵循了 设计约定、Java包间的使用是否符合设计规范、等。这些工作都应该属 于重复任务的范畴,比如借助JDK内置的javadoc.exe命令行工具能够自 动生成JavaDoc文档、通过JDepend评估静态代码的设计和开发质量。类 似的工具还非常多,比如商业软件Fortify,开源的Checkstyle、PMD、 FindBugs、等等
4
各方的烦恼
软件研发中存在的角色:DBA、开发经理、架构师、部署工程师、功能及负 载测试人员、……
DBA: 开发经理: 架构师: 部署工程师: 功能及负载测试人员:
5
区别计算机与人类智慧
划清重复(体力)劳动与智力劳动间的界线 智力劳动,人类智慧(软件研发团队)不可用计算机替代 重复劳动,应该让计算机去完成,因为它会真正任劳任怨地工作
持续功能及负载测试:比如,对刚部署到测试环境的目标应用进行自动化功能测试及 负载测试。借助Selenium RC、Apache JMeter等技术可以自动完成这类工作
持续反馈:通过各种渠道将上述各种持续性工作的具体结果分发出去。比如,邮件服 务器、RSS、FTP服务器、HTTP服务器、Socket、等等
14
驱动CI的引擎-CI服务器
引入的CI服务器将持续完成各种重复任务,比如持续数据库集成、持续单元 及集成测试、持续评审、持续部署、持续功能及负载测试、持续反馈
一旦项目实施持续集成后,被研发产品的集成工作便经常发生,而且随时都 能够构建出最新的可供部署和测试的产出物(或JAR或WAR或EAR包,甚至 是单独的可执行文件)。由于上述各项工作都将持续发生,各种潜在的问题 将被持续地暴露和跟进,进而能够逐渐改善软件产品的质量,并有效地降低 项目风险
12
敏捷配置管理
很明显,SCM工具在实施持续集成期间扮演了非常重要的角色。如果整个研 发团队中的各个成员没有将各自的工件(代码、脚本、DDL语句、等等)提 交到SCM配置库中,则持续集成服务器将没有办法进行构建工作。即使是产 品研发(包括项目研发)不实施持续集成,SCM工具也是不可或缺的
13
衍生于CI
15
CI服务器介绍
迄今为止,如果算上各种商业和开源的CI服务器,则一共有20~30款产品。 可见,持续集成已经深入到各个角落,包括对Java、.NET(C#)、Ruby、 Perl、Python等语言和平台的支持。比如,CruiseControl、Hudson、 、Anthill、Apache Continuum、Luntbuild、等等。不同 CI产品存在的差异还是较大的,但它们都是以解决持续集成问题为出发点 的
8
提炼重复任务-实现可回归性的重要前提(续)
接上: 对于部署工程师而言,完成目标应用的打包和发布工作往往是他们的重 要工作内容之一。Apache Ant和Maven内置了一流的JAR/WAR/EAR打包 支持,何不把应用的打包工作丢给它们呢 对于功能及负载测试工程师而言,他们可以借助于OpenQA Selenium、 Apache Jakarta JMeter等自动化工具完成功能及负载测试工作。就工作 性质而言,功能测试及负载测试是较为乏味的工作内容,而且许多软件 研发团队的这类测试工作局限于手工层面,因此我们急需改进现有的功 能及负载测试工作方式 最头疼的问题是,如何快速地将上述各种重复工作的执行结果反馈到项 目涉及人员手里,比如借助电子邮件(E_mail)、聚合内容(RSS)、 FTP、Socket、HTTP等途径 等等,这里还没有列举出来的。各位可以举一反三、再不断补充
持续集成及CruiseControl 技术交流
罗时飞 宇信易诚广州研究所
© 2004-2008
适合群体
具有一定的软件研发经验 熟悉研发工作生命周期中的各个阶段 对持续集成感兴趣的人士
相关文档
最新文档