`
wen742538485
  • 浏览: 237653 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

敏捷开发一千零一问系列之十:总体架构什么时机进行?(下)

阅读更多
这是敏捷开发一千零一问系列的第十篇。(之一,之二,之三,问题总目录)

问题
总体架构设计在什么时机进行?是每个迭代做还是先做完再迭代?

方案
之前提到了在时间的角度上,从技术和商业层面上的架构设计,下面看看横向的架构设计。

方案1:开发人员全体参与架构设计

敏捷开发整体上是一个崇尚“跨职能”的管理方法,开发和测试融合(所以才有很多类似自动化测试、单元测试、持续集成这些需要开发人员强参与的测试活动),开发与产品融合(开发人员要参与客户价值分析)等等,所以在架构设计与编码这两块,也不会分得很开,不能有人专门做架构,另外一些人专门编写代码。

一方面,“架构设计”一旦变成一个文档,就要被写,被读,效率不说,中间难保不发生歧义,因此做架构的人和写代码的人在一定程度上融合一下,能大量减少不必要的架构设计,尤其是某些细节。

二方面,文档或设计本身不是工作产品,在上面投入太多的工作量,极有可能是浪费而非保障。

当然问题是:哪些人有能力做架构?

这个问题如果换成:哪些人可以开一家新的世界500强企业?答案是“大学在校生”(IT界最近的世界500强多数都是在大学里边成立的)。所以同样是这些人,一样能做架构,只是看怎么做了。

方案2:用师徒团队搭建全民架构团队

如果没有专门的架构人员和编码人员,那么最好的结构就是师傅们做架构,同组的徒弟们将其实现为编码。

“这不也是分工吗?”是的,但是由于师傅们与大家密切合作,所以他很快就会把架构能力传递到徒弟手中,也会逐渐找到一些帮助自己做架构的徒弟,从而让自己能腾出手来做更大范围或更高层次的架构。

由于师傅要为全组的成败负责,所以这种传授过程是由衷的,中间没有什么可以扯皮的。(关于这种机制如何运作如果有疑问,请参考“松结对编程系列”)

方案3:商务人员参与架构

一个产品中有三样东西是核心:商业模式,业务架构,技术架构。

其中业务架构是核心,商业模式是从外界观察到的业务架构,而技术架构是从技术角度看到的业务架构。怎么讲呢?请看案例。

案例
比如360这个软件,它的技术架构到底是什么?

刚开始,看上去是个单机版的杀毒软件;后来呢,变成了一个云查杀;再往后,出现了浏览器;又弄了一些五花八门的网络功能,甚至包括聊天……

如果单独从技术的角度看,很难把一个单机版的杀毒软件重构成聊天软件,除非在早期就有人想到这个软件日后要用来聊天。谁会在早期知道呢?业务人员。

业务人员能“预知”未来,所以就不要让开发人员蒙在鼓里,而是提前做好技术准备和储备,架构的变迁就顺理成章。

分析
实际上无论质量、进度、成本、架构、客户价值、赚钱……这些,都应该是“全民”的,至少是尽量全民的。

否则,自然就会有人沉迷于自己负责的那一部分,而将其他的置于自己可以抱怨、对抗的另外一个部门,很难把整个事情做好(有我)。

有一家企业在面试等待区会故意放置一个扔在中间的扫把,看哪个面试者在进入的时候会将其扶起来。很难说我们是否会需要一个有心把扫把扶起来的程序员,但是我们的确需要一个能帮助开发组做好架构的业务人员,也需要一个能帮助架构师写好架构的程序员,还需要能帮助程序员把架构实现出来的架构师……

分享到:
评论

相关推荐

    幼儿园中班音乐公开课教案:一千零一个喷嚏.pdf

    这篇文档介绍的是一个幼儿园中班的音乐公开课教案——《一千零一个喷嚏》,这是一次结合故事和节奏乐的教学活动,旨在通过趣味性的故事激发孩子们对音乐节奏的兴趣,培养他们的音乐感知能力、合作意识以及爱护乐器的...

    中班音乐教案:一千零一个喷嚏.doc

    这篇文档是一个针对中班儿童设计的音乐教案,主要教授节奏乐知识,以有趣的故事《一千零一个喷嚏》为载体,让孩子们在游戏中学习音乐节奏。教案的核心知识点包括: 1. **节奏乐教学方法**:传统的节奏乐教学通常...

    幼儿园教案2021-中班音乐教案:一千零一个喷嚏.doc

    这篇文档是一个幼儿园中班的音乐教案,名为"一千零一个喷嚏",旨在通过故事与节奏乐的结合,激发孩子们对音乐的兴趣,提高他们的音乐感知能力和团队协作能力。教案主要包含以下几个关键知识点: 1. **节奏乐教学法*...

    初中语文文摘文苑一千零一面镜子

    【标题】"初中语文文摘文苑一千零一面镜子"所蕴含的知识点主要涉及文学欣赏、诗词解析以及情感表达。 【描述】中的内容简洁,直接引用了诗句“一千零一面镜子”,这暗示我们要探讨的是一种文学表现手法和深层含义。...

    java面试宝典

    有什么办法主动通知虚拟机进行垃圾回收? 12 39、String s=new String(“xyz”);创建了几个String Object? 12 40、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?...

    最新Java面试宝典pdf版

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、...

    java面试题大全(2012版)

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、...

    Java面试宝典-经典

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、...

    Java面试宝典2012版

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 ...

    java面试宝典2012

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 36 49. 下面两个方法同步吗?(自己发明) 36 50、多线程有几种实现方法?同步有几种实现方法? 36 51、启动一个线程是用run()还是start()? . 37 52、...

    Java面试宝典2012新版

    48、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、...

    中班音乐活动教案《一千零一个喷嚏》润新教育.txt

    中班音乐活动教案《一千零一个喷嚏》润新教育.txt

    工控安全的一千零一种姿势.pdf

    这种情况下,安全团队可能需要设计新的防护措施,或者使用其他手段来降低风险。 综上所述,工控安全是一个复杂且多面的领域,它需要技术人员具备广泛的知识和技能,以及与其他领域专家的合作。随着技术的发展和工业...

    java面试题

    76.4. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 86 76.5. 在weblogic中发布ejb需涉及到哪些配置文件 87 76.6. 如何在weblogic中...

    “一千零一种”权限维持方法.pdf

    诱导用户点击后门程序的技巧在于创建看起来无害的快捷方式,如将恶意程序绑定到常用应用程序(如谷歌浏览器)的快捷方式上,使用户在不知情的情况下触发恶意代码执行。 总之,权限维持是黑客活动中至关重要的一步,...

    Java机试相关题目34题

    1. MVC三层架构模式:在Java Web开发中,MVC模式是一种常见的设计模式,其中M代表Model(模型)、V代表View(视图)、C代表Controller(控制器)。使用MVC模式可以将数据和业务逻辑分离,使得系统更易于维护和扩展。...

    股票买卖最佳时机leetcode-1000_and_1_project_ideas:商业创意/初创公司的集合,其中包含一些关于其实现的概念

    股票买卖最佳时机leetcode 一千零一...项目创意 生物/医疗技术 1. 急救箱和药物追踪器(手机) 地理 茹 标签 移动的 功能: 列出套件中的所有物品 到期日通知 药丸提醒 额外的货币化: (*) 搜索和比较药品价格 通知...

    Wordlistone.doc

    11到19的序数词与基数词类似,但会有所不同,例如:eleventh(第十一)、twelfth(第十二)、thirteenth(第十三)、fourteenth(第十四)、fifteenth(第十五)、sixteenth(第十六)、seventeenth(第十七)、...

Global site tag (gtag.js) - Google Analytics