TRIZ在软件设计中的思考
TRIZ是在创新领域应用非常广泛的方法,特别是硬件设计领域的创新发挥很大作用。其中:基于39个工程参数的39*39矛盾矩阵,是专门针对硬件领域的总结。通过查表可以查到对应的40个发明原则。
在软件领域也有类似的总结,其中阿奇舒勒的弟子们研究出来的软件矛盾矩阵运用比较广泛,梳理出的24个工程参数矛盾矩阵有一定的应用范围。但面对产品,大家更多的是喜欢39个工程参数。
因为39个工程参数首先不是专门针对硬件来组织的,其实是从产品本身的工程维度的思考。而且基于设备硬件的总结覆盖了成千上万的专利案例,是期初TRIZ的思考提炼,具有一定的权威性。
其实,硬件、软件我们都可以将其看成一种设计技术,通过抽象的工程参数,即使是所谓硬件领域的39*39,也有很多可以应用到软件领域。
本文就针对39个工程参数(所谓硬件领域),思考软件领域的应用。
我们先从39*39工程参数的亲和分类来入手,详见下表:
39个工程参数进行分类,从几何、物理、系统、功率、技术、测量、损失七个方面归类,可以发现,系统、技术、测量、损失这四类是不太区分软硬件属性的。而几何、物理、功率三个类别是有比较强的硬件属性。
我们先从不区分软硬件的四类属性逐一分析:
系统类
作用于物体的有害因素、物体产生的有害因素。软件对有害因素也存在同样的作用。
30、物体影响有害因素
软件类可以影响的有害因素是什么呢?包括,适应性、控制的复杂性、系统复杂性、硬体成本、容易使用、弹性、时间损失、可维护性、内存使用量、效能、服务品质、可靠性、安全性、吞吐量、用户容量等24类,举个例子:软件运行期间可能产生内存碎片。可以通过优化对系统的内存碎片(有害因素)产生影响。通过软件优化完全可以使得系统这个有害因素减少。
31、物体产生的有害因素
当然,如果用的不好也可能恶化该指标,这就对物体产生有害因素的增加。例如:过分优化性能可能导致系统复杂性提升、可维护性降低。过分优化内存减少使用,可能导致吞吐量、用户容量下降。过分弹性提升,可能导致内存使用量的上升。
我们再看一下其他的如:
技术类
操作时间、可靠性、强度、适用性和通用性、可制造性/可操作性/可维护性、制造精度、复杂性、自动化、生产率、稳定性(对象)。
基本上都是软件的可服务等属性设计(DFx)需要考虑的范畴。这里我们可举几个例子。操作时间,这个参数在软件系统上也可理解为处理业务的时间效率。
比如:业务转发效率,通讯协议报文的传输效率等。软件优化在转发效率(吞吐量、传输时间)、传输可靠性等方面发挥巨大作用。
系统的强度?可以理解为处理高峰业务的弹性能力,以及受到攻击时的韧性,使得系统仍然能持续工作。
测量类
测量必要性、测量精度。软件的监控系统、系统运行效率的检测系统就是这类,还包括TCP的诊断工具snoop等。软件优化可以增强或减弱测量必要、测量精度。
损失类
能量损失、物质损失、信息损失、时间损失。能量、物质损失初一看似乎与软件没什么关系。
其实从软件作用对象与业务量看,软件优化可以提升单位业务的计算量也就降低了能量损耗(使得CPU利用率提升,耗用的能量自然减少)。
物质损失类也一样看上去像硬件的,但从软件使能角度可以看成软件优化占用内存、硬盘减少,反过来思考实际就是减少了存储资源的损失。
信息可以类比成:报文传输、带宽容量。时间可以类比为处理效率、频率等。
刚才从四类软件很可能相关的参数进行了阐述。即使是物理参数类似这种一看就是
硬件领域的参数,实际上也很可能与软件有一定的相关性。我们来看看:
物理参数:重量、速度、力、应力/压强、温度、光照度。速度这个参数,我们可以理解为软件处理速度,作业处理效率。
其他参数不逐一分析,总之抽象到一定程度多少能与软件有点相关性,并不是之前的似乎与软件没什么关系的感觉。
下面我们一起再看看40个发明原则:
其中很多有与物理先关的,如:14球面化。与机械相关的28更换机械系统等于软件相差甚远。但也有不少仅反映逻辑方面的,如:1分割、23回馈、24中介物、26复制这些都与软件深度应用。
例如1分割:虚拟或实际地将系统分割成几个部分的程序,以隔离或整合某种有害或有用的系统性质。
这是TRIZ的定义,其中,软件的故障隔离设计,软件架构的微服务,都属于分割隔离的思想。
当然,微服务“分割”指的是组件化架构的拆分,仅体现出他的实现思想,其中还要更多的细节需要软件专家去思考。
如:微服务是否需拆分解耦,重点考虑:是否需要独立开发、验证的要求;与其他服务灵活组合编排的要求;运行时期有效隔离要求;业务波峰波谷明显,需要弹性伸缩、独立演进升级、灰度分布要求等。
逻辑抽象的发明原则当然没有区分软件硬件,这个好理解。其实软件类有不少不仅需考虑软件,很多是软硬结合的系统思维。所以即使硬件类的发明原则,物理、化学类的,也可以尝试从软件的角度思考,是否可以应用。我们举个例子。
例如12等位性:在系统内部建立相关性,使系统可以支持等位能状态。初看似乎属于存在物理位置的方法。但细想其实我们可以抽象成:最少能量原则,集中同一区域一次把事情处理好---等位-位置不变,自己搞定。本地更新也有这个意思。
例如:磁盘删除,如果马上删除文件,然后回收磁盘空间。不少操作系统实现成首先仅删除文件头的几个字节信息,逻辑上表示文件被删除了,但介质上文件内容还在。新文件写的时候就可以直接在这个区域覆盖内容。
如果一段时间旧文件(被删除文件头字节的)没有被覆盖,删除的文件还是可以恢复回来的。相对等位性的抽象,就是我(删除的时候)不动位置(不删除远处位置的内容),让系统自动行动。思想上借鉴了这个发明原则。
还例如:28.更换机械系统,以物理场取代机械式的交互作用,此原理实际与改变或取代操作原理有关。软件思考为:把硬的变软,用软件方式替代掉专有硬件。例如:软解压取代硬件解压卡。通过电磁能源取代了机械系统。
好了,总体上感觉TRIZ虽然来自设备的创新抽象总结,在硬件设计领域应用广泛。实际上仔细思考,软件设计领域也有很多可以应用,特别是逻辑层面的参数和发明原则可以直接使用。
即使物理、化学领域的看上去“纯硬件”的参数与发明原则,在抽象层面也有时候可以在软件领域得到应用。多思考、多实践,学问要融会贯通,就能学习到实质的东西,才能将方法论发扬光大。