一 内容概述
-
从抽象的工程设计论角度阐述了如何写好一份代码。阐述了设计模式和设计原则的底层原理。 -
解释了设计模式与设计原则适用的场景及局限性。工程设计论是在有限设计能力下对被设计对象进行的认知和进行逆运算的过程。在不符合这一条件的领域,不应当死扣设计模式与设计原则。在软件领域,一个显而易见的例子就是不要在极度追求性能的代码中死扣设计模式与设计原则。 -
解释了设计原则中的单一职责原则为何难以掌握和运用。 -
面向接口设计是软件系统设计的最终形态,对开发流程中先写单例再开发的原因做了解释。
二 理论基础
-
哲学基础:罗素《哲学问题》。 -
数学基础:矩阵理论,工程控制论。 -
工程基础:一定工程设计经验,如代码开发等。 -
设计科学基础:谢友柏老师的《设计科学与设计竞争力》,Nam Suh的《公理设计》。
三 什么是设计——设计和计算与认知之间的联系
四 工程设计的过程
-
根据对需求的相关研究,给出实现方式的弱约束,我们一般采用对系统拆分的方式来进行弱约束。在软件领域,最常见的弱约束就是对组件划分的约束,各个部件之间的依赖关系,接口的定义,数据交互方式之间的约束。(认知过程,我们一般称之为需求拆解与架构设计) -
利用第一步的弱约束,来对需求中的强约束的实现方式进行具体的分析和求解。(逆运算过程,我们一般称之为编码)
-
将J(X)=0拆分成为 -
根据的性质,找到使得的的具体值,例如;并同时研究,找到的具体形式,例如。
-
强独立:存在一个定义域为两个自变量组X构成的二元空间,值域为自变量组X的函数融合函数U;使得对于任意的 -
弱独立:对于任意的 -
不独立:存在
五 总结与局限
六 附——利用分拆来设计系统的一个例子
-
一个确定的平面杆组机构,其上任意一点的位置都是一个随时间变化的周期函数。我们可以用复数域上的函数来进行表示,即: -
由匀速电机带动的杆件(主动件),其终点的轨迹是一个圆,且这个圆的运动规律与其他杆件无关。 -
不由匀速电机带动的杆件(从动件)的轨迹,由主动件的运动轨迹和其与主动件的链接所决定。
-
最终设计的平面杆组,由主动件和一些连接组构成。这些连接组应当具备两个自由端点,且连接组上一点在运动中始终是这两个自由端点的中点,即。
-
如何通过一些圆周运动,及建立在其上的加法体系,拟合任意一个周期运动。 -
如何找到一个连接组,使得其具备上述条件。