从企鹅客户端团队的架构演变谈项目的架构持续敏捷性 - 敏捷天地会 - KM平台

从企鹅客户端团队的架构演变谈项目的架构持续敏捷性

复制链接

企鹅客户端团队经历过3代架构:

第一代,2006年以前企鹅的老客户端:客户端采用com技术,一个类达到3w行代码,为什么会有3w行代码的类,因为com结构易学难精,而且使用极其不友好,在系统内部模块之间采用这套架构维护和实现成本都很高,而项目的需求和团队的惰性双方面的结果就是臭虫越来越多。最后不可控制,不可维护,到了2008年不得不重构。

第二代,2007年猪猪的架构,引入factory模式,实现接口在dll上的物理分离,采用表现层,逻辑层,网络层简单架构划分。因为未做系统解耦方面的设计,我可以推测,我们继续3个月出一个版本,估计在1年后,系统可维护性就告急了。

第三代,2008年企鹅的架构,在factory模式基础上引入插件化架构,并且对底层服务进行了良好的解耦设计,设计的系统是以变化的和稳定的部分进行系统划分。

因为本系统进行了插件化设计和基础模块的解耦,模块内部有臭虫,可以实现内部重构,而不影响整个系统,系统提供了比较好的重构条件,当然可维护性也大大提高。

不过这个系统也有一个缺陷就是插件的创建和节点的创建不友好,这样,在惰性作用下,在产品的需求压迫下,我们逐渐写入一些臭虫的代码,而且随便把这些臭虫代码放到现有的插件中。

第四代,这一代架构还在实施中,先保密,其目标也是提高客户端团队的敏捷性,提高产品的可运营性。具体实现后续介绍。

我想一个在架构上具有持续敏捷性的项目应该具有如下几个特点:

1)一个简单易于使用的,易于扩展的原始架构。

敏捷思想中提到架构是不断的开发过程中重构出来,这一点要我们这样的环境下,技术层次下实施几乎是不现实的。架构固然需要演化,进化,但是要在小规模的不断重构优化一个原始难用的架构,使其敏捷,对我们的团队水平几乎是不可完成的。而进行完美的架构设计也同样在成本,以及架构对未来的实用方面都有极大的不确定性。

所以我个人倾向于选择一个易于使用的,易于扩展的架构,而不是完善的,全系统的设计架构,因为我们的产品是运营出来的。

2)团队leader重视重构,具有系统设计思想

能够正确的决策支持重构,支持系统设计,最好是leader自己具有极强的系统抽象能力。

3)团队重视架构和程序结构。

团队时刻的重视系统设计,重视维护和重构代码,要做到这一点很难,需要长期的团队建设。

4)项目pm和pd在风险可控范围内,鼓励重构和技术创新。

在项目需求的过程中,PD设计产品时,有重心,在评估系统实现时,考虑开发团队的意见,对系统结构有破坏性的需求,性价比不高的需求适当调整和妥协。

PD在产品规划的过程中,如果有一个较为长期的系统规划,这有利于团队架构设计的前瞻性,和技术预先的准备。

在开发过程中,适当考虑系统的重用性,和重用性系统开发应给予给多的资源,风险可控范围内,适当鼓励重用性设计。

其实总结起来,只有一句话,原始架构和维护这个架构的团队,呵呵,说了等于没有说:)

从企鹅客户端团队的架构演变谈项目的架构持续敏捷性

复制链接

企鹅客户端团队经历过3代架构:

第一代,2006年以前企鹅的老客户端:客户端采用com技术,一个类达到3w行代码,为什么会有3w行代码的类,因为com结构易学难精,而且使用极其不友好,在系统内部模块之间采用这套架构维护和实现成本都很高,而项目的需求和团队的惰性双方面的结果就是臭虫越来越多。最后不可控制,不可维护,到了2008年不得不重构。

第二代,2007年猪猪的架构,引入factory模式,实现接口在dll上的物理分离,采用表现层,逻辑层,网络层简单架构划分。因为未做系统解耦方面的设计,我可以推测,我们继续3个月出一个版本,估计在1年后,系统可维护性就告急了。

第三代,2008年企鹅的架构,在factory模式基础上引入插件化架构,并且对底层服务进行了良好的解耦设计,设计的系统是以变化的和稳定的部分进行系统划分。

因为本系统进行了插件化设计和基础模块的解耦,模块内部有臭虫,可以实现内部重构,而不影响整个系统,系统提供了比较好的重构条件,当然可维护性也大大提高。

不过这个系统也有一个缺陷就是插件的创建和节点的创建不友好,这样,在惰性作用下,在产品的需求压迫下,我们逐渐写入一些臭虫的代码,而且随便把这些臭虫代码放到现有的插件中。

第四代,这一代架构还在实施中,先保密,其目标也是提高客户端团队的敏捷性,提高产品的可运营性。具体实现后续介绍。

我想一个在架构上具有持续敏捷性的项目应该具有如下几个特点:

1)一个简单易于使用的,易于扩展的原始架构。

敏捷思想中提到架构是不断的开发过程中重构出来,这一点要我们这样的环境下,技术层次下实施几乎是不现实的。架构固然需要演化,进化,但是要在小规模的不断重构优化一个原始难用的架构,使其敏捷,对我们的团队水平几乎是不可完成的。而进行完美的架构设计也同样在成本,以及架构对未来的实用方面都有极大的不确定性。

所以我个人倾向于选择一个易于使用的,易于扩展的架构,而不是完善的,全系统的设计架构,因为我们的产品是运营出来的。

2)团队leader重视重构,具有系统设计思想

能够正确的决策支持重构,支持系统设计,最好是leader自己具有极强的系统抽象能力。

3)团队重视架构和程序结构。

团队时刻的重视系统设计,重视维护和重构代码,要做到这一点很难,需要长期的团队建设。

4)项目pm和pd在风险可控范围内,鼓励重构和技术创新。

在项目需求的过程中,PD设计产品时,有重心,在评估系统实现时,考虑开发团队的意见,对系统结构有破坏性的需求,性价比不高的需求适当调整和妥协。

PD在产品规划的过程中,如果有一个较为长期的系统规划,这有利于团队架构设计的前瞻性,和技术预先的准备。

在开发过程中,适当考虑系统的重用性,和重用性系统开发应给予给多的资源,风险可控范围内,适当鼓励重用性设计。

其实总结起来,只有一句话,原始架构和维护这个架构的团队,呵呵,说了等于没有说:)


相关内容

  • 软件工程未来发展趋势
  • 本文的意图是讨论软件工程的未来发展趋势,但是软件工程的发展不可能是孤立的,所以我们首先需要思考一下计算模型和软件开发本身的变化和趋势,再由此推测软件工程的发展趋势. 从计算模型而言,应该来讲,传统的冯.诺依曼仍然被沿用:但从计算能力上来将,我们注意到了三个变化: ●CPU的运算能力按摩尔定律快速提升 ...

  • 软件开发过程文档
  • 密 级:内部公开 文档编号:1005 版 本 号:V3.0 测测(基于安卓平台的测评软件) 软件开发过程文档 中国石油大学(华东) 计算机与通信工程学院 天师团开发团队 目录 1. 2. 3. 4. 5. 6. 7. 8. 文档目的.................................. ...

  • 系统架构师学习笔记
  • 第一章 1.1.1 系统架构师的概念 现代信息系统"架构"三要素:构件.模式.规划:规划是架构的基石,也是这三个贡献中最重要的. 架构本质上存在两个层次:概念层,物理层. 1.2.1 系统架构师的定义 负责 理解.管理 并最终确认和评估 非功能性系统需求,给出开发规范,搭建系统实 ...

  • 去中心化与产品化运作 ThoughtWorks助力企业落地数字化平台战略
  • 至顶网服务器频道 06月05日 新闻消息(文/李祥敬):一场数字革命正在世界市场全面推开.从世界范围来看,经济的新形势,加上受到新兴技术公司的冲击,传统企业向数字化转型升级的趋势愈发成为共识.数字化转型不是选择,而是唯一出路.数字化转型的概念代表了革命和机遇,尤其在竞争加剧的今天,为了生存,传统企业 ...

  • 高级软件需求分析师培训
  • 中科院计算所职业培训中心 文 件 中计培[2011]061号 关于举办"高级软件需求分析师培训"的通知 各有关单位: 中国科学院计算技术研究所是国家专门的计算技术研究机构,同时也是中国信息化建设的重要支撑单位,中科院计算所培训中心是致力于高端IT类人才培养及企业内训的专业培训机构 ...

  • 软件开发方法与过程
  • (1)软件开发过程是什么?  软件开发过程是按照软件工业化的标准定义的 在软件开发中必须具有的一系列过程规范:  软件开发过程是定义在软件中的软件需求.软件 设计.软件编码.软件测试.软件部署的实现目标和规范化的管理方法论:  软件开发过程是保证软件工业化生产的法典:  软件开发过程做的是: ...

  • 华为任职资格管理分析
  • 华为任职资格管理体系分析 1 任职资格管理简介 任职资格是指从事某类职位某一级别任职者所必须具备的知识.经验成果.技能与素质的总和. 任职资格管理体系是有三部分共同组成:任职资格标准.任职资格评估和任职资格应用. 任职资格标准体系是指通过将岗位的工作性质进行系统分类.分层,同时在对公司未来发展战略的 ...

  • 敏捷开发测试规范V0.1
  • 敏捷开发测试规范(试行) 2012年9月 目录 1 概述.......................................................................................................................... ...

  • it项目管理心得
  • 项目开发方面 项目应以需求为核心.一个项目是否能够成功,对需求的准确把握在成功因素中要占上60%的比例.不管系统的架构设计.团队管理有多么的成功,如果需求出现偏差,仍然是南辕北辙.由于eas项目的特殊性,项目开发过程中能够与客户建立有效快速的沟通渠道,是项目成功的关键. 需求必须获得客户的确认.通过 ...