思步网

查看: 13115|回复: 27
打印 上一主题 下一主题

Agile迭代中有关architecture的讨论

[复制链接]
前一阵我对Agile迭代中architecture的相关话题有些疑惑。Architecture是Scrum和XP都没有非常直接讨论到的东西。我感觉脑子里有些东西还需要澄清一下。正巧在看《硝烟中的Scrum和XP》(Scrum and XP from the Trenches),这本书也没涉及到这个话题,就写信给作者Henrik Kniberg把我的疑惑提出来。我感觉他的回答还是印证了我的之前的想法和猜测。也许有人对这个也有兴趣,不妨随便看看,希望有帮助。

下面是我写给Henrik的信:
Thanks for writing Scrum and XP from the Trenches! I’ve read it twice and I love it!
However I didn’t find the answer that I’ve been looking for for a long time… Let me brief the question that puzzles me first.

Although Agile doesn’t say “it’s forbidden to have a stable architecture design as early as possible”, it doesn’t provide any practice about architecture. Actually it encourages simple design – focus on the current iteration. It seems that with Agile, the architecture is result from continuous refactoring. For example at the very beginning, if we don’t look at the whole product backlog, but only the first sprint backlog, the architecture can be very simple but totally different from the architecture of the 8th sprint. Of course theoretically you can always get the architectural design “updated” by refactoring, but is that cost-effective? Is it wise to look at the whole picture, i.e. product backlog, not just the 1st sprint backlog, to get a different but more reasonable solution? I mean, there’re too much energy wasted in the refactoring – I didn’t say refactoring is not necessary. Maybe it should be a trade-off – somewhere between the “big picture” and the current sprint. But where is it? If architecture is required at early stage, then there’s no big difference between RUP and Agile - let’s neglect the collocation, TDD and etc.
Can you pls help me understand the Agile way of doing this?
Moreover, back to your book. In chapter 15, you introduced the approaches to “break down a product backlog for 2 teams”. If you don’t have architecture in advance or at early stage, how can you make sure all teams will finally work out the same architecture (or compatible architectures)? No matter what approaches you adopt (one product owner, one product backlog; two owners, two backlogs…), the synchronization between the two teams is difficult!
下面是Henrik的回信:
In agile & iterative development youbasically have to balance between BUFD (big up front design) and NUFD (no upfront design). Some people misunderstand Agile and think that agile means NUFD,but what you actual need in most contexts is a compromise. RUFD (rough up frontdesign). That means you are still delivering running, tested features everysprint. But the first sprint you spend a little more time with architecture anda little less time with features. The exact proportions is of course extremelycontext dependent.
Another difference is that thearchitecture in an agile process is primarily expressed as code. Diagrams canof course be created, but we try to keep them at a high level only. Anotherdifference is that, even though there may be some kind of architectural vision(we will have X layers and using language Y and platform Z and protocol P) wetry to implement as little architecture as possible to support only thefeatures being built now. That allows to learn and improve the architecture insmall steps instead of making a really big and complex architecture that solvesthe wrong problem.
You said it pretty well yourself:
"Maybe it should be a trade-off somewhere between the “big picture” and the current sprint."
As soon as you have multiple teamsworking on the same system you need to have communication between them, or thearchitecture will tend to break down. For big systems you might start with onlyone team until they find a fairly stable way to partition the system, thenimplement the appropriate interfaces so that multiple teams can be spawnedafterwards and work independently on different subsystems. But even in thatscenario the teams will need to communicate because sometimes the"stable" architecture will need to be updated as the teams learn moreabout the problem they are solving.
That is why agile is all about keepingthe architecture simple and changable rather than trying to create an advanced,generic architecture that solves all problems and never has to be changed. Ifthe architecture is simple and changable then multiple teams can work togetheron it and improve it when necessary.
It is quite common for architectureteams to form, basically a virtual team like scrum of scrums. One guy from eachteam meets once per week to talk about architectural decisions and tradeoffsand synchronize between the teams.



上一篇:大家来讨论下敏捷和CMMI
下一篇:敏捷讨论
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对1
回复 论坛版权

使用道具 举报

本帖最后由 step365he 于 2009-3-9 14:04 编辑

(floer(floer
大家可以到下面地址下载楼主提到的硝烟中的Scrum和XP这本书
http://www.infoq.com/cn/minibooks/scrum-xp-from-the-trenches
终于找到敏捷的相关资料了,谢谢楼主分享!
看不懂,但谢谢分享
前排支持下了哦~
这么强,支持楼主,佩服
支持,赞一个
我是个凑数的。。。
前排支持下了哦~
看了LZ的帖子,我只想说一句很好很强大!
向楼主学习
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
我是个凑数的。。。
很有借鉴意义,先收藏了,谢谢楼主。
学习下我只是路过,不发表意见……
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部