架构设计

什么是架构设计

1、 有别于硬件技术的高速发展,软件的架构设计乃至程序开发,在过去50年内并没有质的变化。

2、 架构设计的核心,是追求软件的可维护性、可扩展性,以便使软件在未来能较为方便地升级改造,以适应未来业务的发展变化,使得软件整个生命周期的总成本(TCO)最小。

3、 需求分析和架构设计的差异在于,需求分析关注系统的功能性需求,即系统对外提供的功能;架构设计关注系统的非功能性需求,即可维护性、可扩展性、灵活性等内在的、长期性的特性。

4、 对于大部分软件系统而言,可维护性比可复用性重要得多。如果在软件开发时片面追求可复用性、代码简洁优雅,而不把那些代码逻辑接近、变化情形不同的功能提炼成同一个组件,将来在软件功能扩展升级方面可能会遇到很多麻烦。

5、 架构设计和核心代码开发是密不可分的。架构师必须要做一线程序员,亲自编写核心代码。架构师如果不亲身承受因设计不佳而带来的痛苦,就很容易因为不了解一线情况而瞎指挥,从而难以得到一个良好的软件架构。

6、 架构设计涉及到大量技术方案的取舍和权衡,需要由IT专业人员基于TCO最小化的角度来做出决策。需求部门作为系统用户,通常只关注系统建设的当期结果,无法认识到糟糕的设计在系统上线后的沉重代价(也即未来需要偿还的技术债),从而难以在架构设计方面做出正确的技术决策。因此由需求部门来主导系统建设,从短期来看能加快系统上线的速度,从长期来看是存在负面作用的。

       迄今为止出现的三种编程范式(结构化编程、面向对象编程、函数式编程),未来也不太可能出现新的编程范式了。结构化编程的本质,是禁止了goto语句,从而对程序控制权的直接转移进行了限制。面向对象编程的本质,是禁止了函数指针,从而对程序控制权的间接转移进行了限制。函数式编程的本质,是基本禁止了变量赋值语句,只允许在非常严格的限制条件下,才允许更改某个变量的值。

       所有这些编程范式,核心都是对程序员的权力加以限制。计算机程序实际上是人类思维的载体,如果不对其加以限制和规范,任凭思维的野马自由驰骋,那么随着软件规模的上升,其结果必然是局面失控。例如基金定投(限制自由申购)或设置基金封闭期(限制自由赎回),用“他律”来解决人们不能“自律”的问题。反映了一个道理,即在人类文明发展史上,秩序比自由重要得多。

 

posted @   niuziyuan  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示