/北京宇航系統工程研究所

知識管理理論與實踐起源于20世紀80年代,經過數10年的發展,多數組織已經建立了知識管理信息系統,積累了大量設計經驗知識。由于設計對象的復雜性,傳統的設計技術已不能滿足需求,需要研究如何將知識和智能化設計工具結合,使計算機可以將積累的設計知識利用起來,輔助設計人員提升設計效率,達到智能化設計的目的。
設計工具是智能化設計的具體載體。設計的智能化體現在:越來越多的設計知識,特別是傳統上只能由人的腦力勞動應用的知識,逐漸可以由計算機自動化地應用于設計過程。目前,計算機軟件工具已經在計算、仿真、邏輯判斷等很多領域替代人腦實現了設計知識的應用,隨著數據分析、人工智能等信息技術的發展,更廣泛、更復雜的設計知識將可能通過軟件實現自動應用,是智能化設計的發展方向。
通過設計工具固化并自動應用設計知識具有高效、可靠的特點,是信息時代固化設計知識的良好手段。設計工具在實現設計活動的邏輯判斷和自動執行的同時,基于同樣的業務邏輯可實現知識的推送和推理,是知識推送、推理的天然載體。
由于智能化設計的上述特點,有必要立足于設計工具和設計知識的關系,進一步深入研究面向智能化設計的知識管理方法。
設計知識一般分為經驗禁忌、故障案例、共用模型、最新發展、最佳實踐、學術論文、發明專利、科技成果、標準規范等類型。設計工具自身屬于“共用模型”范疇。
隨著設計工具的自動化、智能化程度越來越高,設計工具自身的流程與功能越來越復雜,與其它類型知識的關系越來越密切。從知識管理的角度,不能僅僅將設計工具看成一個封閉的“黑盒”模型,而必須將其作為一個“白盒”,剖析其結構和內容與各種設計知識的關系。從工具自身發展的角度,未來有生命力的設計工具必然是開放的軟件體系,面向專業社區開放軟件架構和核心源代碼,能夠持續擴展和重構,快速適應新的設計需求,體現新的設計知識。這2個方面對工具開放性的要求是相輔相成的。
對于專業自主研發設計工具,其本身就是專業、崗位設計知識的固化和表達,有必要將軟件的研制過程與相關知識的識別、采集和表達過程有機地結合起來,持續而完整地識別、采集工具中固化的知識,規范地在工具中表達和應用設計知識,形成知識和工具的良性循環、持續提升。
為了深入研究設計知識如何充分地在軟件工具中實際表達和利用,我們認識到專業設計是一個人與計算機程序緊密結合的過程,在當今的信息時代,幾乎所有的設計工作都無法脫離計算機程序完成。為適應研究設計知識和設計工具關系的需求,筆者對專業設計流程進行了再梳理,目標是全面、充分地明確整個過程中人和計算機的各種交互關系,在這些交互中涉及到哪些設計知識,以及這些知識參與人機交互的方式。
從人機交互的角度梳理一般專業設計流程,簡化表達如圖1所示。
由于不同任務的專業設計需求時常發生變化,專業設計軟件需要持續改進。因此,專業設計流程包括設計工具軟件開發或改進與設計工具軟件應用2個核心活動。
在設計工具軟件開發或改進活動中,設計師同時也是軟件工程師,以軟件開發的方式與計算機互動,互動的主要對象是設計工具軟件的源代碼。
在設計工具軟件應用活動中,設計師的身份是軟件用戶,使用設計工具提供的用戶界面(圖形化或非圖形化)與計算機互動,完成具體設計工作。
同時設計過程本身也是一個設計軟件不斷迭代和完善的過程。除了上述設計流程中包含的人機交互方式之外,還存在一種重要的人機交互方式——利用設計工具開展學習活動。一般是以“白盒”形式,參考軟件的源代碼實現,利用軟件功能進行試算和專業研究。

圖1 專業設計流程圖
基于上述設計流程再梳理的思路,從人機交互方式的角度對專業設計知識進行分類。
流程型。流程型知識表達的核心是計算或操作步驟的順序,這些步驟必須能夠逐級細化到可執行、可操作的程度,可能體現為人工操作的流程,也可能體現為計算機程序中的自動流程。二者沒有本質區別,在一定條件下可以相互轉化,與設計工具的智能化和自動化程度相關。
流程可以按易變程度分為2類:一類是固化流程,在一定范圍內,不隨具體型號、任務變化的流程;另一類是易變流程,隨具體型號、任務需求變化的流程。一個完整的設計流程,往往在粗粒度上是固化流程,某些具體活動細化展開后是易變流程。
固化流程本身是對專業設計知識的高度凝練,體現了專業的核心原理,將設計流程合理固化是對設計知識的一種升華。依據固化流程實現軟件工具,體現了知識對設計軟件的架構設計指導。隨著技術成熟度的提升,一些易變流程可能會逐漸演變為固化流程。
易變流程可進一步劃分為2種模式:一種是靜態流程,是根據具體需求直接固定定義的流程;另一種是動態流程,是將具體設計需求和輸入轉化為形式化的模型和數據,由模型和數據驅動動態生成的流程。
專業設計任務雖各有不同,但具有一定的內在相似性,國內外先進設計工具的實踐結果已經表明:我們能夠總結出通用的、計算機能夠解讀的模型和數據結構,表達絕大部分設計任務;我們能夠利用這種相對簡單的模型和數據,自動生成易變的、復雜的設計流程,相對于每次重新定義靜態流程降低了工作量。該種模型驅動的方法,是對知識進行提煉和固化的一種更高級的形式,借助更為智能化的軟件技術手段,將知識提煉為模型定義和基于模型的設計方法,是先進設計工具的發展方向。
總之,固化流程體現了顯見的共性知識和核心原理;靜態的易變流程體現了針對具體型號和任務的特性知識,動態易變流程自動生成方法體現了對隱性共性知識的發掘和智能化應用。盡量采用固化流程和動態生成易變流程,是提升知識復用度和軟件通用范圍的核心思路。
流程型知識與其它類型知識的關系是:流程定義了設計活動,在一次設計任務中起到提綱的作用,其它類型知識均與具體的設計活動關聯。
算法型。算法型知識是在流程中一般不繼續細分的計算活動。專業計算活動一般均由計算機程序完成,是公式、算法、數據等設計知識在軟件中的直接固化。在軟件工具中,算法型知識除體現為軟件源代碼外,一般均應同時提注釋、文檔等說明信息,幫助閱讀和學習。
約束型。約束型知識是對流程活動中相關數據的定量約束。一般對應某種設計經驗或禁忌。在軟件工具中,一般應體現為程序的自動判斷,判斷的具體判據可以通過用戶界面(或輸入數據文件)修改,與具體的輸入參數相關。
參考型。暫時不形成具體計算、不構成定量約束的知識,如歷史上的質量問題案例等。在軟件工具中,一般體現為上下文相關的幫助信息。
利用上述設計流程梳理和知識分類,可以幫助我們分類確定設計知識與軟件工具開發的具體關系,包括設計知識在軟件中的固化方式、表達方式、引用方式等,具體詳述如下。
流程型。流程是實現導航式設計的基礎。基于專業的特點,導航式設計需要同時深入設計工具軟件的開發和應用2個階段。
在設計工具軟件開發或改進活動中,流程型知識與軟件需求和架構設計密切相關。首先要基于流程梳理結果,明確自動流程和手動流程的分界面,合理劃分,盡可能提升工具的自動化、智能化水平,減少設計人員的負擔。
在設計工具的開發過程中,對于易變流程,應盡量避免在軟件中采用“硬編碼”的形式實現,降低軟件的維護難度。可以參考先進設計工具,為仿真、迭代和優化設計流程模型,用于定義易變的設計流程,也能用來存儲固化的設計流程。
通過設計流程的定義,為其它類型的設計知識與設計流程的關聯創造了條件,為形成導航式的設計工具奠定了基礎。
算法型。設計工具軟件開發或改進活動的主要內容之一是實現自動流程活動中的算法。算法型知識與設計工具的關系,主要是文本形式的原始知識和源代碼形式的軟件實現之間的對應關系。雖然軟件開發基于第三方提供的通用開發平臺和工具進行,難以將導航式的思路強制貫徹到開發過程中,但是導航式設計仍與設計工具開發有密切的關系。雖然算法在實現后一般以“黑盒”的方式調用,但并不意味著在開發完成后就不再關心軟件實現與知識關聯的問題,這是因為設計工具同時也是承擔學習功能的載體。如果在流程定義的基礎上能夠通過導航式的方式,閱讀和學習算法型知識的“白盒”軟件實現并能夠關聯的知識的來源,如相關標準等,對提高代碼質量和提高學習效率都有幫助。
因此,不需要只關注狹義的開發過程、追求在開發過程中直接干預編碼,建議轉而控制開發結果,關注代碼的復用和學習參考價值,使開發成果充分體現導航式特點,這對計算模塊的開發提出了更高的要求。在開發過程中,不能僅僅滿足于實現功能,同時還需要以結構化注釋或結構化導讀文檔的形式提供導航信息,明確代碼實現與知識的關聯。在代碼走查工作中,利用導航信息輔助提升代碼走查的效率和效果,保證開發質量。在后續復用和參考學習過程中,導航信息能大大提升代碼的可讀性,揭示軟件實現與知識的關聯。
具體的思路是:在開發源代碼的同時,要求開發人員以結構化注釋或標準結構文檔的方式,同時編寫出規范格式的導航式代碼導讀信息,將代碼實現與相應知識相關聯。可以開發輔助工具,以圖形化的方式展現知識關聯信息,進一步提升軟件代碼和導航信息的可讀性。導航信息的具體格式可不依賴于具體的開發平臺和編程語言,該方案具有高度的適應性和可操作性。
約束型。部分約束型知識可以直接固化在相關的自動流程的計算活動中。該種約束型知識和設計工具的關系與算法型知識類似。在導航式的“白盒”代碼參考學習過程中,應重點呈現此類知識與軟件實現的關聯。
參考型。如果在軟件開發和參考學習過程中,需要關聯參考型知識,可以將其以鏈接的形式加入代碼導航信息中,以供查閱。
流程型。對于先進的設計工具,能夠在不修改源代碼的前提下靈活地定義、調整和執行設計流程。如果設計工具具備此種能力,那么在設計工具應用活動中,就不僅僅是遵循軟件工具開發固化設計流程,還可以不斷地將新的流程型知識引入軟件工具。目前,設計工具大多暫時不具備類似能力,因此可以開發相對獨立的流程導航工具,輔助定義設計流程,供使用工具時參考。
算法型。在設計工具應用中,算法一般作為“黑盒”模塊調用即可。如果關心算法的具體實現,可參考關于算法型知識用于學習目的的描述。
約束型。多數約束型知識需要在設計工具的用戶接口上預留可調參數,因此在調整這些參數的過程中有必要提供約束型知識的原始來源和參數設置注意事項供設計師參考。基于導航式設計的思路,應在人工操作流程的基礎上采用上下文相關的幫助方式,自動關聯并提供當前活動相關的約束型知識。
參考型。大多數參考型知識適宜以設計工具幫助文檔的方式提供。與約束型知識類似,應基于導航式設計的思路,采用上下文相關的方式按需提供。即使設計工具沒有圖形化的界面,也應該在輸入數據文件中描述約束性、參考型知識的原始來源。
筆者闡述了設計工具與知識的關系,并從二者的關系角度,提出了流程型、算法型、約束型、參考型的設計知識分類方法,分析了4類知識在設計軟件開發和應用過程中固化和共享的模式,可供與知識管理結合的智能化設計工具建設參考。▲