工程设计论——如何写好工程代码
一 内容概述
从抽象的工程设计论角度阐述了如何写好一份代码。阐述了设计模式和设计原则的底层原理。 解释了设计模式与设计原则适用的场景及局限性。工程设计论是在有限设计能力下对被设计对象进行的认知和进行逆运算的过程。在不符合这一条件的领域,不应当死扣设计模式与设计原则。在软件领域,一个显而易见的例子就是不要在极度追求性能的代码中死扣设计模式与设计原则。 解释了设计原则中的单一职责原则为何难以掌握和运用。 面向接口设计是软件系统设计的最终形态,对开发流程中先写单例再开发的原因做了解释。
二 理论基础
哲学基础:罗素《哲学问题》。 数学基础:矩阵理论,工程控制论。 工程基础:一定工程设计经验,如代码开发等。 设计科学基础:谢友柏老师的《设计科学与设计竞争力》,Nam Suh的《公理设计》。
三 什么是设计——设计和计算与认知之间的联系
四 工程设计的过程
根据对需求的相关研究,给出实现方式的弱约束,我们一般采用对系统拆分的方式来进行弱约束。在软件领域,最常见的弱约束就是对组件划分的约束,各个部件之间的依赖关系,接口的定义,数据交互方式之间的约束。(认知过程,我们一般称之为需求拆解与架构设计) 利用第一步的弱约束,来对需求中的强约束的实现方式进行具体的分析和求解。(逆运算过程,我们一般称之为编码)
的设计问题,我们将这个问题分为两步:
将J(X)=0拆分成为 根据 的性质,找到使得的的具体值,例如;并同时研究,找到的具体形式,例如。
所需要取得的值是多少。如果我们最终研究得到
强独立:存在一个定义域为两个自变量组X构成的二元空间,值域为自变量组X的函数融合函数U;使得对于任意的 弱独立:对于任意的 不独立:存在
,使得部分函数f,g的值取到了我们想要的结果m,n;那我们可以根据
找到一个综合的解
使得部分函数f,g同时取到我们想要的值。比如说对于:
。那么对于任意一个我们要求的f,g的取值,我们都可以将其用
,
来保证
。
。对于任意的m,n,我们都是能找到
来满足我们的需求的(注意这里一般是由研究组合函数J的同学,来提出对部分函数f,g详细取值要求m,n)。由于对函数g进行研究和设计的人,事先可能不知道
,他们完全可能设计出来
的方式。因此这种情况,需要后期的合作与调试,才能完成整个设计。
。研究组合函数J的同学最终得到的答案可能是
,这显然是无解的。因此这个拆分可以认为是失败的。
五 总结与局限
六 附——利用分拆来设计系统的一个例子
一个确定的平面杆组机构,其上任意一点的位置都是一个随时间变化的周期函数。我们可以用复数域上的函数来进行表示,即: 由匀速电机带动的杆件(主动件),其终点的轨迹是一个圆,且这个圆的运动规律与其他杆件无关。 不由匀速电机带动的杆件(从动件)的轨迹,由主动件的运动轨迹和其与主动件的链接所决定。
最终设计的平面杆组,由主动件和一些连接组构成。这些连接组应当具备两个自由端点,且连接组上一点在运动中始终是这两个自由端点的中点,即 。
如何通过一些圆周运动,及建立在其上的加法体系,拟合任意一个周期运动。 如何找到一个连接组,使得其具备上述条件。
搜索与推荐技术实战训练营
点击阅读原文查看详情
阅读原文 最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。