文章目录
软件构建中的设计
1、软件设计的特征与挑战
软件的设计是一个“险恶”的问题,所谓“险恶”就是你必须首先把这个问题"解决"一遍以便能够明确地定义它,然后才能再次真正地解决该问题,这是软件设计的一大挑战。
同时,软件设计无法判断设计到何种程度才是“足够好”了。而且,软件设计存在着诸多限制,比如资源等。你需要在这些限制中做出选择与平衡,所以没有好的设计或不好的设计,只有适合的设计。
合适的设计不是一蹴而就的,是不确定的、演进式的,不断探索、演练、推到、总结而形成的。
满足同一个需求,不同的人会设计出完全不同的设计,所以,设计又具有不确定性。
2、管理复杂度
人的大脑处理能力有限,无法同时关注太多东西,关注东西太多将会导致某些遗漏和混乱。比如,同时让你忙的太多东西,你肯定会丢三落四!虽然你忙的焦头烂额的,但结果却是不尽人意。
就像是玩杂耍:抛在空中的球两个是比较容易控制,增加复杂度两个以上球难度会增大很多很多。在代码设计过程中也是如此,如果关注的太多,将会越复杂,越复杂手忙脑乱势必会造成遗漏导致错误发生。需要同时关注的事情或者逻辑太多是不可取的,但是该软件中存在诸多逻辑和复杂的事情是不可避免的。为了保证代码的各方面性能,应该降低管理复杂度!
如何降低管理复杂度:
- 减少在同一时间所关注的本质复杂度的量
- 避免生成不必要的偶然复杂度
3、好的设计所具有的特征
这些目标之间有时会相互抵触,所以需要在这些目标中做出一套最好的折中方案,这正是设计的挑战与魅力。
-
最小的复杂度(Minimal complexity)
- 在设计时应该只专注于程序的某一部分,安心