如何敏捷架构
来源:互联网 发布:车牌识别软件下载 编辑:程序博客网 时间:2024/05/16 18:11
架构和设计是对需求的回应。某位大神曾经说过,超前架构和设计(Big Design Upfront)的问题是将导致浪费很多功夫——一项行业统计:35%的需求会产生变更,且其中超过一半的变更,实际上都用不上。
在Scrum实践中,我们因需进行架构设计。那些驱动着架构设计的非功能性需求通常也有比较高的价值,绝不能从product backlog中遗漏。我们必须能在每个sprint中构建至少一个面向业务的功能,所以我们仅构建足够的架构和设计来支持那功能,又用适当的架构设计来满足非功能性需求(稳定性,安全性,响应时间等等)。然后,在后面的sprint,随着对越来越多的业务功能的回应,越来越多的设计将浮现。这样做的目的,是仅构建对真实需求、高优先级业务需要呼应的架构设计。这么做我们能满足三个需要:证明架构设计是对的;从使用者得到反馈;以及改进我们的估算。随着项目或发布的进展,架构设计的工作慢慢减少,而实现的业务功能逐渐增加。
好了,前面这些说的,都是一些理论化的东西。在实践中,我觉得比较难拿捏的是:怎么样的架构设计才是恰当的?
例如说,如果“可修改性”是一个项目的需求,架构师就需要知道架构中的哪些元素时需要支持可修改性。这就必须有一点前瞻的分析和设计了。因此,对于架构和Scrum而言,我们改如何做?一个可以尝试的办法,就是考虑,花一到两个sprint周期来捕获high priority的功能性和非功能性需求,并设计一个high level的架构,放到后面再实现。当然,这个是架构师(在Scrum开发团队中,没有这个角色;架构应该是每个开发人员的共同责任;在这里,只是稍强调了一下职责。)在一到两个sprint中逐渐考虑的事情,而非一定有一个具体的task与之相对应。等到考虑充分、达成基本共识之后,就可以转化成一些技术task,通过refactoring的方式,或者在实现某些feature的过程中,逐一实现。重要的是,一定要坚持“尽可能小且必要”的价值最大化原则。
记住,"The only thing that is constant is change.",架构也要不断地审视和积极演变。否则,不用到6个sprint,就要撞墙了,不是吗?
- 如何敏捷架构
- SOA技术架构如何支持敏捷开发方法
- 如何搭建轻量级架构-敏捷开发普及篇
- 软件敏捷架构师
- 敏捷与架构 一个都不能少
- 敏捷个人架构图
- 炫目的敏捷架构师
- 炫目的敏捷架构师
- 敏捷开发不利于架构设计?
- 敏捷开发中的架构设计
- 敏捷和架构的冲突
- 敏捷项目的主动架构
- 敏捷开发中的架构设计
- 敏捷架构: 可自适应变化
- 敏捷架构师的作用
- 如何采用敏捷方法?
- 如何理解敏捷开发
- 如何理解敏捷开发?
- OCP-1Z0-051 补充题库 第19题 限制替代变量的输入值
- [CPPHTP7 NOTES] CH8. POINTERS(3)
- bzoj1611[Usaco2008 Feb]Meteor Shower流星雨
- Swift字典
- 气象雷达地物杂波产生的原因
- 如何敏捷架构
- INFINEON(英飞凌)样片申请与经验
- poj-3744-Scout YYF I-矩阵乘法
- 如何使用 CCache 进行 Cocos2d-x 编译加速
- IO编程——文件创建
- Eclipse断点调试
- Eclipse中异常断点问题
- PHP 配置open_basedir,让各虚拟站点独立运行
- PHP 配置文件中open_basedir选项作用