破解软件设计的复杂性

                          破解软件设计的复杂性

       在很多人眼里,设计可能会显得很神秘。其实设计和解题是一回事,只要把其中的规律弄清楚了,就能顺应规律的指引自然而然的得出结论。只不过任何事情都是由前提条件的,设计的前提就是方法论的指导加上广泛的领域知识(不是指业务领域,对软件设计来说就是软件解决方案)。生活中要做各种各样的选择,设计也是。

与软件相关的设计,不管是架构方面、GUI设计还是最终代码,都是在和复杂性抗争。人类大脑毕竟能同时处理的事件并不多,所以要借助于一些科学的工具来帮组我们理清复杂的关系,各种各样的设计方法学也就应运而生了。

1、分而治之。这是算法学上的重要议题,它的核心思想是化解。依据一个总体标准,把复杂的事物化解为小的概念的集合。这些小的概念之间可能也会有各种各样的关系存在,这个关系就是分解标准的一个体现。

2、层次结构。很多事物都呈现出层次结构,这正好适合我们的思维习惯。它和分而治之有相似的地方,都是化整为零的思维方法。我们在分析复杂事物的时候多是结合分而治之和层次划分,这样慢慢的把一个复杂的整体描画出来。实际的过程多半是一种递归的模式,因为实际的复杂性也会在某种层面上呈现出递归的特性。

3、自顶向下/自底向上。这两种方法给出的是一种思维的方向,也就是说,我们对一些系统可以采用分解的办法(自顶向下),对另一些系统可能会采用整合的办法(自底向上)。自顶向下的核心思想是分解,自底向上的核心的聚合。

有了这些大的思维方向,再结合一些实用工具(各种各样的图和符号),就能在复杂性面前不至于惧怕了。科学的东西,总是要用科学的方法。设计就是先把问题弄复杂,再把问题弄简单。第一个阶段是模型的建立,一个越来越丰满的原模型就预示着越来越复杂的问题被搞定。第二个阶段是映射,把复杂的模型映射到解空间。当每个细节都被映射过去的时候,问题已经简单化了。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值