架构设计策略之寻找设计的最佳平衡点
如果没有所谓的“Deadline”(最后期限),我们就不用担心架构设计的问题,因为我们有足够的时间去研究去学习找到最优的架构设计方案。然而,做梦是可以有的。那怎么寻找?相信大家都各有各的看法,基本分为这几派:
- 梭哈派,不要给我说什么架构设计、设计思维!老夫架构设计就是敲代码,边敲边设计,自然而然代码就是架构,想那么多还不如直接敲。
- 借鉴派,善于借鉴业界成熟项目的标准,都按成熟标准来就好。
- 灵活派,根据实际项目需求来做架构设计,最好看现场情况来判断。
- 文档派,都得写文档,写完整了文档,就能预防后续的问题和风险。
肯定不止上面的介绍的对于架构设计的看法,相信大家都有自己认同的看法,欢迎评论区留下“最强流派”。
那架构设计的最佳平衡点肯定会有架构大师做了研究的,下面将从专业的研究分析下。
架构设计对总工期的影响
参考Barry Boehm《Architecting: How Much and When?》书中项目工期的构成:开发、架构设计、返工(处理技术债:打补丁、改BUG、重构、重写)(见图2)。
可见,Boehm证明了随着架构设计时间的增加,开发和返工量都会减少。书中还详细地研究了系统规模影响最佳构架设计的平衡点,鉴于国内外的项目情况不同,本文就不作为参考了。但从中还是可以得出以下个人认为比较客观的结论:
- 系统越大,前期做架构设计的获益越大,反之越小。
- 一千万行代码以上的大项目在总工期上架构设计时间占3到4成较好,不超过一万行代码的小项目则不超过1成。
- 前期架构设计做得不够,后期做好返工的心理准备。
架构设计的时间决定
上节内容用系统规模来评估架构设计的工作量似乎很符合“灵活派”的做法,因为可以根据项目需求很容易确定系统的规模。相信肯定有人会问:那复杂度不要考虑吗?大型系统可能很复杂,但有“借鉴派”的成熟解决方案就不必做太多架构设计。然而,也并非所有复杂度高的系统都很庞大。
因此,评估前期架构设计的时间,不能只按标准、经验、代码量、复杂度来决定。应该是按照风险来驱动架构设计(下篇文章再详细讲解),当然这也是Boehm做的研究(见《Using Risk to Balance Agile and Plan-Driven Methods》)。
总结
无论是如何寻找架构设计的最佳平衡点,都要遵循《架构设计思维原则》和运用《架构设计思维模式》来做架构设计,因为这些设计思维原则和模式非常有助于实现风险驱动架构设计,找到架构设计的最佳平衡点。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Flutter 混合开发基础
引言 Flutter 作为 Google 开源的新一代跨平台、高性能 UI 框架,旨在帮助开发者高效地构建出跨平台的、UI 与交互体验一致的精美应用,推出后一直倍受开发者的青睐。 当需要开发一个全新的应用时,我们可以很方便地从零开始,完全使用 Flutter 进行开发。但如果是针对一个现有的应用,需要引入 Flutter 技术,显然使用 Flutter 全部重写一遍是不现实的。幸运的是,Flutter 很好地支持了以独立页面、甚至是 UI 片段的方式集成到现有的应用中,即所谓的混合开发模式。本文主要从一个 Android 开发的视角,谈谈 Android 平台下, Flutter 的混合开发与构建。 Hello Flutter 相信现在应该很少会有移动端开发者不知道 Flutter,这里不再做过多介绍。对于这门技术,使用过的应该绝大多数都会说好;没用过的推荐尝试一下,跑个 Demo 体验体验,有可能它就是你需要学习和掌握的最后一门新技术了。回过头来,Flutter 究竟有什么独特的魅力让它能从一众技术中脱颖而出呢?总结一下,主要有以下几点: 跨平台:可以做到一套代码完美适配 Andro...
- 下一篇
架构设计策略之风险驱动设计
风险驱动架构设计 风险驱动设计 风险 识别风险 描述风险 风险指导架构设计 技术选择 设定风险阈值 总结 你今日预咗风险未? 每次与项目成员沟通后,应该都会预感项目有风险吧。 大概都会遇到这些问题:进度风险、技术难点、需求变更、资源分配问题等等。 别和我说,基本没啥风险,项目很稳定。真有这样没风险的项目,那就不需要架构师了。毕竟这样的项目肯定会有成熟的“轮子”,直接借鉴就好了。 实际上,没风险的项目很少,需要开发的软件项目总有风险的,因为实际需求都是随时间变化的。 我们日常生活很多事情都是看风险来做决定的,最明显莫过于股票、基金等投资行为,在自己能接受的风险范围内进行决策。这是因为风险可以反映出真实世界的不确定性,而且是一个很好的决策指示器,它能帮助我们看清障碍,做出合理的选择。 因此,风险是可以指导我们进行优秀的架构设计,也就是说我们可以采用风险驱动模型进行架构设计。 风险驱动设计 风险驱动模型就是以风险为中心,根据合乎逻辑的理由进行决策权衡的模型。 采用风险驱动的话,必须要能回答以下这些问题: 项目的主要失败风险有哪些? 应对失败风险的技术有哪些? 何时结束和恢复架构设计? 为了解...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19