Bysoft中国博客

分享我们的学识,分享我们的激情!
  • rss
  • 首页
  • 关于我们
  • 服务
  • 案例
  • 联系我们

保持可释放性。随时发布

Bysoft China | 一月 31, 2012

部署的自动化对你的代码有很重要的影响: 它可以令你的代码随时随地都做好被部署的准备。在开发周期里,你任何时候都可以调用部署脚本来做一个发布,或把代码直接送到产品服务器上去: 简单地说,就是,把你的代码发布了。

早发布,常发布

这也符合“早发布,常发布”策略:频繁地部署能够表明项目在不断演进。这些演进,并不都在一个正确的方向上:有些时候,我们的发布里带了虫子(bugs)。但是在开发阶段,这些都是正常的,而且存在的漏洞会很快地被新的一次的发布修复。正因为漏洞在开发阶段的早期被发现,修复漏洞的难度就很小,,更重要的是,漏洞也也更容易得到谅解。

并不总是已完成的

如何能做到提供总是可发布的代码?首先,在发布的版本和我们当前的代码之间,有一个被称为SCM(Software Configuration Management)的工程学:Git, svn, mercurial, fossil, CVS… 随便你怎么选择这些工具。这是你发布版本的主源。只要你还没有提交代码到SCM,你的代码就是不可发布的:原因或者是因为不能和整个应用程序的代码正常共存,或者因为不符合编码标准,或者因为代码的功能不能运行。只要没有提交,代码就不存在。而一旦提交了,这些代码就成了应用程序的一部分。并且为了保持可发布性,所提交的代码必须保证不会破坏应用程序的功能。我们首先检查的是集成编译:如果编译不通过,那么将不能被发布。

香槟式开发

埋头苦干地编码,直到它完成的方式,也被成为香槟式开发:直到你真的把香槟酒的酒塞打开,你才知道声音是怎么样的。在这个时候,你会聚集你所有朋友在你的周围,因为如果你开瓶的时候听到POP(表示成功开瓶),那么你就能装满一堆的杯子然后庆祝。然而,如果你开瓶失败了(没有POP),你周围的朋友还是会一起和你庆祝或者捉弄你(是的,朋友也会这么做。)。

这个类比可以被应用到开发上:当编码的时间拖得越长,期望值就会增加,并且会开始变得不受控制。你专注于编码,把你的用户留在黑暗里,那么他们获得信息的途径就只有一个:想象。这就是为什么你认为你完成了一个很好的项目,客户确认位远远低于期望值。

广度优先

另一种方式是尽快让代码先准备好,尽管它没有做太多的事情。可编译性在可发布性中处于第一层,而完全运行则是处于第三层。在这之间,被成为“未完成”层:它可以工作,只是不完整。

让我们来举个例子:如何着手开发一个Drupal addressbook模块,并在整个过程中让其仍然有这个功能?如果开发这个模块需要若干天的工作,那么在开始的几天它是不能完整运行的。 在这种情况下,让模块完整运行其实是不那么重要的:而我们只是需要它能够运行。想象一下,在开发这个模块的开始阶段:首先创建模块,并创建许多基于这个名字的空白Hook。这样可以通过编译,但是实际上什么也不会做。然而,这是可以被发布的:它可以被发送到新的版本上,尽管它其实没有为应用程序增加任何实际功能。

然后,在这个基础上,你可以加一些新的部分。想想一下你在开发一个外部的addressbook程序。你可以从不同的方面开始:可以从设计数据库结构并且更新hook_install,然后添加一些新的数据到数据库,接着更新hook_view,这样你就可以在视图上展现现有的数据,以及构建另外一个相似的hook_view来实现数据请求。

每一个方面的开发都会为你提供新的功能:你或者你的客户都可以运行这个程序,并看到完成的部分。当然不是全部功能,因为完成的只是部分功能,整个开发还没有完成。

这是和深度优先的最大不同之处。深度优先会解决所有它能确定的问题,例如Drupal Hooks, 数据库结构, 模板, 测试, 部署,在任何情况看来,这些方面都是开发工作,然而却没有生么不可以发布。

本质上来说,有两种不同的方法来保持可释放性。

  • 有机地进行代码编写:一开始先把所有必须的代码布局好。然后在这些代码上增加新功能。同时,我称呼这种方式为“在骨架上面增加肉”。基于这个骨架,你可能会留下很多空白或者常数函数,这些空白和常数函数是为将来加入更多复杂的代码而做准备的占位符。而考虑到这些占位符是你进步的标志。
  • 保持可见性: 这种方法更加以客户为中心。只做一些能被看见的事情。例如,有120个字段的表单,从一开始只有2个表单,然后会显示3个,然后4,然后12个,然后30个,以此类推。每一次,都会加入一些新的功能。再如,有一个分12步的支付流程,那么一开始应该从一步支付,接着两步支付,以此类推。。。要记住一点,客户会根据他们能看到的东西来跟进你的进度,而不是根据你所提供的代码量。

如果你计划让你的代码具有可发布性。你必须能够回答下面一个简单的问题:我现在可以简单地发布我的代码吗?这样可以让你应对任何突发情况,例如:安全问题、为了展示而急于发布、客户计划突然变更、或者甚至是开发人员的变更。下个开发人员仍然能从这样的代码中获益,清楚地知道将不会被困在一系列部分完成工作之中。

Damien Seguy  戴明

分类
新闻
订阅 RSS 回复
订阅 RSS 回复
Trackback
Trackback

« X.Commerce,国际电子商务之新机遇

27 Responses to “保持可释放性。随时发布”

  1. 工业加湿器 说:
    二月 25, 2012于18:04

    博主牛叉,文章牛叉!

  2. 韩国时尚起义 说:
    三月 2, 2012于13:50

    uk6qg6明天你还会更新的吧 明天我在来

  3. 水星家纺价格 说:
    三月 2, 2012于17:41

    3nd3jz公司的入伙饭到现在还没能吃上

  4. 淘宝网夏装新款 说:
    三月 2, 2012于18:59

    不错啊s6yo6v,是原创的吗

  5. 林氏木业 说:
    三月 3, 2012于12:55

    u0aq0w这么好的文章没人顶?

  6. 香袭人 说:
    三月 3, 2012于13:37

    哈哈0eu0aq为啥自己留言看不见0wm0si

  7. 真皮沙发十大品牌 说:
    三月 3, 2012于14:47

    j3pf3l明天你还会更新的吧 明天我在来

  8. 汽车坐垫哪种好 说:
    三月 3, 2012于15:52

    别来无恙啊,俺常来看看,就算长点人气也不错:>!

  9. 安吉旅游景点 说:
    三月 3, 2012于17:21

    eu6aq6能不能重温那画面

  10. 电脑椅 说:
    三月 4, 2012于12:52

    dt3zx1还问我为何相爱的人不能在一起

  11. 喜梦宝儿童家具 说:
    三月 4, 2012于14:27

    m2tj3p我在说给自己听

  12. 十月妈咪官方网站 说:
    三月 4, 2012于16:11

    e4ka4g明天你还会更新的吧 明天我在来

  13. 大汉七十二峰 说:
    三月 4, 2012于18:54

    无语 壬辰年(龙)二月十二 2012-3-4 果断进驻前eu2aq2路过。。

  14. 研磨机 说:
    三月 5, 2012于10:51

    分享了,博主!观点同感。

  15. 香袭人2代 说:
    三月 5, 2012于11:56

    j1qg2m因为我已经明白那全是为了爱

  16. 谜尚官网 说:
    三月 5, 2012于13:35

    f7lb7h明天你还会更新的吧 明天我在来

  17. 水星家纺价格 说:
    三月 5, 2012于14:46

    a8gw8c公司的入伙饭到现在还没能吃上

  18. 优尚美家 说:
    三月 6, 2012于15:52

    y6eu6a明天你还会更新的吧 明天我在来

  19. 达芙妮官方购物网 说:
    三月 6, 2012于17:57

    ka0gw0明天你还会更新的吧 明天我在来

  20. 竹海荷花山 说:
    三月 6, 2012于18:59

    为什么l7rh7n评论还要审核啊 壬辰年(龙)二月十四 2012-3-6

  21. 海龟牌制氧机 说:
    三月 7, 2012于11:57

    7tj5xn可惜不是你 不让我留言

  22. 爱慕内衣官网 说:
    三月 7, 2012于13:16

    uka8gw明天你还会更新的吧 明天我在来

  23. 婴儿理发器 说:
    三月 7, 2012于15:22

    p1vt9z2012不会世界末日,博客也要经常更新哦

  24. 卡宾官方旗舰店 说:
    三月 7, 2012于16:41

    0si0oe跟我的差不多。。。

  25. led tube 说:
    五月 9, 2012于08:44

    zen card 好用吗 比magento快不?

  26. led tube 说:
    五月 9, 2012于08:46

    嗯 不错 好文章

  27. 添香官网 说:
    五月 18, 2012于20:55

    1hx1dt明天你还会更新的吧 明天我在来

Leave a Reply

点击这里取消回复

最近文章

  • 保持可释放性。随时发布
  • X.Commerce,国际电子商务之新机遇
  • 艾格中国(Etam)精品案例
  • Newsletter生成器:一个“Made In Bysoft”的Magento模块
  • 在Magento上测试Varnish缓存页面加速器
  • BysoftChina正式成为Oracle 合作伙伴!
  • Google Analytics与百度统计之比较
  • PHP语言在网站建设中的需求正在加大
  • Rio薄荷糖精品案例
  • BysoftChina搬新家啦!

分类目录

  • magento
  • PHP
  • web开发
  • web技术
  • Web设计
  • 互联网
  • 内容管理系统(CMS)
  • 搜索引擎优化(SEO)
  • 搜索引擎营销(SEM)
  • 新闻
  • 电子商务
  • 网络营销

标签

Baidu Bysoft ebay eZ Publish flex Google Google Adsense joomla joomla更新 joomla!1.6 magento PHP PHP5认证 SEO Zend Framework Zend PHP Zend php5考试 上海 中国 中国电子商务 中小企业 企业 信息化 发布 国庆节 域名 广告 应用 建网站 搜索引擎优化 支付宝 放假通知 新年祝福 淘宝 电子商务 电子商务,开源解决方案,开源技术 窍门 网店 网站 网站建设 网络市场 网络营销 设计 选择技巧 通知

最近评论

  • 添香官网 在 保持可释放性。随时发布 上的评论
  • cokeetect 在 BysoftChina成为Zend中国区唯一合作伙伴 上的评论
  • college board 在 Google将调整广告首位排名规则 上的评论
  • DREDASUETTY 在 BysoftChina成为Zend中国区唯一合作伙伴 上的评论
  • Leapin’ Leprechaun 在 Bysoft又一Joomla!新作成功发布在线 上的评论

页面

  • 关于我们

文章索引

  • 2012年一月
  • 2011年十月
  • 2011年九月
  • 2011年七月
  • 2011年四月
  • 2011年三月
  • 2011年二月
  • 2011年一月
  • 2010年十一月
  • 2010年十月
  • 2010年九月
  • 2010年八月
  • 2010年七月
  • 2010年六月
  • 2010年五月
  • 2010年四月
  • 2009年六月
  • 2009年五月
  • 2009年四月
  • 2009年二月
  • 2009年一月
  • 2008年十月
  • 2008年九月
  • 2008年六月
  • 2008年四月
  • 2008年三月
  • 2008年二月
  • 2008年一月
  • 2007年十二月
  • 2007年十一月
  • 2007年十月
  • 2007年九月
  • 2007年八月
  • 2007年七月
  • 2007年六月
  • 2007年五月
  • 2007年四月
  • 2007年三月

Bysoft China

  • Joomla
  • Magento
  • 内容管理
  • 咨询
  • 电子商务
  • 网站编程
  • 营销网站
  • 页面设计
rss 订阅 RSS 回复 valid xhtml 1.1 design by jide powered by Wordpress get firefox