TRIZ在軟體設計中的思考

天行健精益生產發表於2021-05-11

TRIZ是在創新領域應用非常廣泛的方法,特別是硬體設計領域的創新發揮很大作用。其中:基於39個工程引數的39*39矛盾矩陣,是專門針對硬體領域的總結。透過查表可以查到對應的40個發明原則。

在軟體領域也有類似的總結,其中阿奇舒勒的弟子們研究出來的軟體矛盾矩陣運用比較廣泛,梳理出的24個工程引數矛盾矩陣有一定的應用範圍。但面對產品,大家更多的是喜歡39個工程引數。

因為39個工程引數首先不是專門針對硬體來組織的,其實是從產品本身的工程維度的思考。而且基於裝置硬體的總結覆蓋了成千上萬的專利案例,是期初TRIZ的思考提煉,具有一定的權威性。

其實,硬體、軟體我們都可以將其看成一種設計技術,透過抽象的工程引數,即使是所謂硬體領域的39*39,也有很多可以應用到軟體領域。

本文就針對39個工程引數(所謂硬體領域),思考軟體領域的應用。

我們先從39*39工程引數的親和分類來入手,詳見下表:

TRIZ在軟體設計中的思考

39個工程引數進行分類,從幾何、物理、系統、功率、技術、測量、損失七個方面歸類,可以發現,系統、技術、測量、損失這四類是不太區分軟硬體屬性的。而幾何、物理、功率三個類別是有比較強的硬體屬性。

我們先從不區分軟硬體的四類屬性逐一分析:

系統類

作用於物體的有害因素、物體產生的有害因素。軟體對有害因素也存在同樣的作用。

30、物體影響有害因素

軟體類可以影響的有害因素是什麼呢?包括,適應性、控制的複雜性、系統複雜性、硬體成本、容易使用、彈性、時間損失、可維護性、記憶體使用量、效能、服務品質、可靠性、安全性、吞吐量、使用者容量等24類,舉個例子:軟體執行期間可能產生記憶體碎片。可以透過最佳化對系統的記憶體碎片(有害因素)產生影響。透過軟體最佳化完全可以使得系統這個有害因素減少。

31、物體產生的有害因素

當然,如果用的不好也可能惡化該指標,這就對物體產生有害因素的增加。例如:過分最佳化效能可能導致系統複雜性提升、可維護性降低。過分最佳化記憶體減少使用,可能導致吞吐量、使用者容量下降。過分彈性提升,可能導致記憶體使用量的上升。

我們再看一下其他的如:

技術類

操作時間、可靠性、強度、適用性和通用性、可製造性/可操作性/可維護性、製造精度、複雜性、自動化、生產率、穩定性(物件)。

基本上都是軟體的可服務等屬性設計(DFx)需要考慮的範疇。這裡我們可舉幾個例子。操作時間,這個引數在軟體系統上也可理解為處理業務的時間效率。

比如:業務轉發效率,通訊協議報文的傳輸效率等。軟體最佳化在轉發效率(吞吐量、傳輸時間)、傳輸可靠性等方面發揮巨大作用。

系統的強度?可以理解為處理高峰業務的彈效能力,以及受到攻擊時的韌性,使得系統仍然能持續工作。

測量類

測量必要性、測量精度。軟體的監控系統、系統執行效率的檢測系統就是這類,還包括TCP的診斷工具snoop等。軟體最佳化可以增強或減弱測量必要、測量精度。

損失類

能量損失、物質損失、資訊損失、時間損失。能量、物質損失初一看似乎與軟體沒什麼關係。

其實從軟體作用物件與業務量看,軟體最佳化可以提升單位業務的計算量也就降低了能量損耗(使得CPU利用率提升,耗用的能量自然減少)。

物質損失類也一樣看上去像硬體的,但從軟體使能角度可以看成軟體最佳化佔用記憶體、硬碟減少,反過來思考實際就是減少了儲存資源的損失。

資訊可以類比成:報文傳輸、頻寬容量。時間可以類比為處理效率、頻率等。

剛才從四類軟體很可能相關的引數進行了闡述。即使是物理引數類似這種一看就是

硬體領域的引數,實際上也很可能與軟體有一定的相關性。我們來看看:

物理引數:重量、速度、力、應力/壓強、溫度、光照度。速度這個引數,我們可以理解為軟體處理速度,作業處理效率。

其他引數不逐一分析,總之抽象到一定程度多少能與軟體有點相關性,並不是之前的似乎與軟體沒什麼關係的感覺。

下面我們一起再看看40個發明原則:

TRIZ在軟體設計中的思考

其中很多有與物理先關的,如:14球面化。與機械相關的28更換機械系統等於軟體相差甚遠。但也有不少僅反映邏輯方面的,如:1分割、23回饋、24中介物、26複製這些都與軟體深度應用。

例如1分割:虛擬或實際地將系統分割成幾個部分的程式,以隔離或整合某種有害或有用的系統性質。

這是TRIZ的定義,其中,軟體的故障隔離設計,軟體架構的微服務,都屬於分割隔離的思想。

當然,微服務“分割”指的是元件化架構的拆分,僅體現出他的實現思想,其中還要更多的細節需要軟體專家去思考。

如:微服務是否需拆分解耦,重點考慮:是否需要獨立開發、驗證的要求;與其他服務靈活組合編排的要求;執行時期有效隔離要求;業務波峰波谷明顯,需要彈性伸縮、獨立演進升級、灰度分佈要求等。

邏輯抽象的發明原則當然沒有區分軟體硬體,這個好理解。其實軟體類有不少不僅需考慮軟體,很多是軟硬結合的系統思維。所以即使硬體類的發明原則,物理、化學類的,也可以嘗試從軟體的角度思考,是否可以應用。我們舉個例子。

例如12等位性:在系統內部建立相關性,使系統可以支援等位能狀態。初看似乎屬於存在物理位置的方法。但細想其實我們可以抽象成:最少能量原則,集中同一區域一次把事情處理好---等位-位置不變,自己搞定。本地更新也有這個意思。

例如:磁碟刪除,如果馬上刪除檔案,然後回收磁碟空間。不少作業系統實現成首先僅刪除檔案頭的幾個位元組資訊,邏輯上表示檔案被刪除了,但介質上檔案內容還在。新檔案寫的時候就可以直接在這個區域覆蓋內容。

如果一段時間舊檔案(被刪除檔案頭位元組的)沒有被覆蓋,刪除的檔案還是可以恢復回來的。相對等位性的抽象,就是我(刪除的時候)不動位置(不刪除遠處位置的內容),讓系統自動行動。思想上借鑑了這個發明原則。

還例如:28.更換機械系統,以物理場取代機械式的互動作用,此原理實際與改變或取代操作原理有關。軟體思考為:把硬的變軟,用軟體方式替代掉專有硬體。例如:軟解壓取代硬體解壓卡。透過電磁能源取代了機械系統。

好了,總體上感覺TRIZ雖然來自裝置的創新抽象總結,在硬體設計領域應用廣泛。實際上仔細思考,軟體設計領域也有很多可以應用,特別是邏輯層面的引數和發明原則可以直接使用。

即使物理、化學領域的看上去“純硬體”的引數與發明原則,在抽象層面也有時候可以在軟體領域得到應用。多思考、多實踐,學問要融會貫通,就能學習到實質的東西,才能將方法論發揚光大。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995298/viewspace-2771802/,如需轉載,請註明出處,否則將追究法律責任。

相關文章