注册 登录
思步网 返回首页

iamredeye的个人空间 http://www.step365.com/?40 [收藏] [复制] [分享] [RSS]

日志

Agile迭代中有关architecture的讨论

热度 1已有 2205 次阅读2009-7-3 13:26 |

[现在不支持直接从论坛导入了,所以直接手工copy过来]

前一阵我对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.

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 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 顾问式管理培训
返回顶部