最优的设计策略不是追求让架构设计达到完美的状态,应该清楚这是不可能,因为在现实开发中会有时间、资金成本、技术、知识、业务变化等限制导致架构设计不可能做到完美。
因此,我们的目标是找到一个够用的设计,这个架构设计能适应当前企业环境(满足利益相关方的需求等)和灵活应对业务变化。
寻找够用的架构设计,可以参考如下策略:
以上策略可能理解起来有点难度,下面就个人理解再次一一说明下。
要想能快速验证解决方案,必须要建立一套快速验证解决方案的机制。虽然架构师不是什么技术先知,但可以运用以下机制来快速验证解决方案:可以先“纸上谈兵”(头脑风暴、参考过去经验、决策矩阵等)来快速确定待验证的解决方案,再以“胜兵先胜后求战”的思想来优先验证最可能有效的解决方案,最后再运用各种实验的方法去验证解决方案。
这里要引用下工程学历史学家Henry Petroski的话:
失败的概念是设计过程的核心,正所谓“失败乃成功之母”,通过消除失败,可达致成功之设计。
做架构设计是一定要设法消除失败的风险,但如今“巨人的肩膀”(各种消除风险的设计技术)实在太多了,很容易陷入了选择困难的泥沼里。
因此,这里的“设法降低风险”应该是根据风险驱动的,即思考风险大小和解决的优先级、选择合适的技术去行动、评估降低风险的程度再决定下一步设计,这里其实就是运用思维沉淀循环的思考、行动、检查步骤。
简化问题不单单是为了应对日益增长的复杂性和规模,还有开发成本和维护成本等问题。如果把问题想得过于复杂也是不行的,那就可能过度设计了。为什么会这样?往往是因为我们对问题理解的不够深入,这时候应该运用思维沉淀循环去理解问题,积累知识,再运用循环去把问题抽象或者分而治之。
快速迭代学习,这也是敏捷开发的原则。如果一次迭代学习的时间过长,首先很可能满足不了业务的时效性,其次时间长无法灵活应对变化,最后可能会导致维护的代价很高。因为一般周期长的迭代,实现的功能多,依赖多,复杂度高,一旦出现问题,纠正问题的成本和代价就很高了。因此,架构设计必须快速迭代学习,保证灵活性和不断进化的特性。
问题的解法是很多的,越成熟的技术,越多成熟的解决方案,但并不是都合适的。因为每个项目和技术团队是有差异的,并不能“一招鲜,吃遍天”,还需要根据自身的拥有的条件去证明某个解决方案确实是最优的。这是非常契合思维沉淀循环的,因为思考了问题行动后肯定是需要进行检查的。
虽然理想的架构设计是不可能的,但是也不能没有实际适用追求的。寻找够用的设计其实是强调架构设计的度,要运用高效设计策略去寻找恰如其分的架构设计。因为过度或者过简的架构设计是不行的,过度必然浪费资源,过简必然无法规避风险。
Softpedia 报道称,Mac 上的 Microsoft Defender for Endpoint 安全软件,刚刚迎...
本文实例讲述了Ajax对缓存的处理方法。分享给大家供大家参考,具体如下: 缓存 ...
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XWebSecurity-XSSmoreX XXXXXXXXXXXXXXXXXXXXXX...
Office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件。...
HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。 以下是...
虽然小程序中有大把的自定义 sticky 组件可用,原理无非是监听页面滚动改变 posi...
1.当你失去一切时,你就会发现什么是你唯一需要的。 2.你来,信你不会走;你走...
复制代码 代码如下: objectclassid="clsid:D27CDB6E-AE6D-11cf-96B8-44455354000...
复制代码 代码如下: private function askQuestion(event:MouseEvent):void { va...
ueditor是百度编辑器,在本地的iis环境是可以上传图片了,但放在服务器的iis环境...