如何敏捷架构

架构和设计是对需求的回应。某位大神曾经说过,超前架构和设计(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,就要撞墙了,不是吗?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值