摘要:隨著我國經(jīng)濟和社會的發(fā)展,我國核電產(chǎn)業(yè)已進入繁榮發(fā)展時期,但現(xiàn)有核電軟件已不能滿足我國現(xiàn)階段核電發(fā)展需求。為了對我國現(xiàn)有核電軟件進行升級改造,在原有核電軟件基礎(chǔ)之上進行軟件重用或再工程成為一個迫切的需求,這就會涉及到核電程序理解的問題。由于核電領(lǐng)域的專業(yè)性和復雜性,在核電軟件分析的實踐基礎(chǔ)上,通過引入一般性程序理解采用的技術(shù)、模型,引出了核電軟件理解需要的技術(shù)、模型、步驟。以Copernic程序為例,重點介紹了核電軟件理解的過程以及物理模型的建立過程,總結(jié)出了一套對核電軟件程序理解切實可行的方案,這對我國核電的發(fā)展具有十分現(xiàn)實的意義。
關(guān)鍵詞:核電國產(chǎn)化;程序理解;核電程序理解技術(shù);模型
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2013)04-0893-04
Based on the Integrated Model of the Nuclear Power Program Un-Derstanding
FU Shi-min
( School of Computer Science and Technology, University of South China, Hengyang 421001, China)
Abstract: With China's economic and social development, China's nuclear power industry has entered the prosperity and development period, but the existing nuclear power software already can’t satisfy our country present stage of nuclear power development needs. In order to China's current nuclear power software upgrading, in the original nuclear power for software reuse based on software engineering or to become a urgent demand, this will be involved in nuclear power software program understanding. Because in the field of nuclear power professional and complexity, in nuclear power software analysis based on practice, by introducing the general procedure to understand the technology, model, leads to a nuclear power software understand need technology, model, steps. To Copernic program as an example, this paper introduces the process of nuclear power software understanding and physical model of the process, summed up a set of software for nuclear power program understanding feasible scheme, this to our country the development of nuclear power has very realistic significance.
Key words: nuclear power localization; program understanding; nuclear power program understanding technology; model
1 概述
由于核電軟件常常涉及到知識產(chǎn)權(quán)、商業(yè)機密,甚至是國家秘密。出于對自我知識產(chǎn)權(quán)的保護,在被引進的核電軟件中,能給出核電軟件自身的完整設(shè)計文檔的例子是少之又少。然而,隨著時間的推移,我國核電已進入繁榮發(fā)展的時期。過去那種出于安全性和經(jīng)濟性考慮而引進的國外核電軟件已不能滿足現(xiàn)時代我國核電發(fā)展的需求。因此,為了對我國現(xiàn)有核電軟件進行升級,滿足現(xiàn)階段的核電發(fā)展需求,在原有核電軟件基礎(chǔ)之上進行軟件重用或再工程成為一個迫切的需求,這就會涉及到核電程序理解的問題。因此,對核電程序理解的研究對我國核電產(chǎn)業(yè)發(fā)展具有十分重要的現(xiàn)實意義。
2 一般性程序理解的模型、技術(shù)
2.1程序理解的定義
程序理解是一個從計算機程序中獲得該程序知識信息的過程,它是軟件工程學中日益引起人們興趣的一個領(lǐng)域,是指分析目標系統(tǒng),標識目標系統(tǒng)組件及其相互關(guān)系,創(chuàng)建不同形式或更高抽象層次的系統(tǒng)表示的過程。其目標是理解軟件系統(tǒng)以促進性能提高、糾錯、建檔、再設(shè)計或使用另外一種語言重新編程。
2.2程序理解模型
程序理解中,采用一種有效的理解模型是非常重要的,因為程序理解過程中信息前后數(shù)據(jù)不一致或信息丟失這些情況經(jīng)常發(fā)生,這些都給程序理解帶來了很大的困難。因此,為了程序理解的完整性和正確性,采用一定的程序理解模型是很有必要的。常用的程序理解模型有:
1) 基于自頂向下的模型:該模型應(yīng)用于代碼或代碼類型已知的情況,采用擁有知識公式化假設(shè),把系統(tǒng)分解成各個能在代碼中實現(xiàn)子系統(tǒng),再分解每一子系統(tǒng)直到取得實現(xiàn)既定功能的代碼塊。
2) 基于自底向上的模型:該模型理解每行程序代碼,發(fā)現(xiàn)相似的模式及其集合,則抽象出能用于識別更高抽象層的新模式。
3)基于知識庫模型
此模型由三個部分組成:①知識庫:包含了程序員經(jīng)驗、問題域知識、論述規(guī)則、計劃和目的。②思維模型:分為三層:由規(guī)格說明層、實現(xiàn)層和注解層組成。規(guī)格說明層是程序抽象的最高層次,完整地描述了程序的意圖;實現(xiàn)層包括了數(shù)據(jù)結(jié)構(gòu)和功能在內(nèi)的最低級抽象;注解層連接規(guī)格說明層中的每個目標到它在實現(xiàn)層里的具體實現(xiàn)。這些連接可以是不完全的。③消化吸收過程:描述思維模型如何根據(jù)程序員的經(jīng)驗和程序信息進行理解。吸收過程既有自底向上又有自頂向下方式。具體按照哪種方式進行完全依賴程序員。其過程中關(guān)鍵部分是查詢階段。在這個階段,程序員針對目標進行詢問,猜測結(jié)果,最后經(jīng)過搜查代碼和文檔來證實或推翻已有的假設(shè)。
4) 綜合模型
包括三個主要部分:自頂向下模型、自底向上模型和知識庫模型。該模型是將自頂向下模型、自底向上模型和知識庫模型三個方法集成為一個思維模型。
2.3程序理解技術(shù)
從大的方面來說,程序分析可以分為靜態(tài)程序分析和動態(tài)程序分析。靜態(tài)程序分析是在不執(zhí)行程序的前提下,根據(jù)程序的模型推斷出程序本質(zhì)結(jié)果的過程,而動態(tài)程序分析是一個分析程序運行時的依賴關(guān)系的過程。常用的靜態(tài)分析技術(shù)包括:有詞法分析、語法分析、控制和數(shù)據(jù)流分析、類型檢查和推理、交叉引用、復雜度度量和結(jié)構(gòu)化分析等,而動態(tài)分析技術(shù)包括對象實例依賴、方法調(diào)用圖、動態(tài)鏈接和多態(tài)性、路徑覆蓋測試、登記和回調(diào)函數(shù)、內(nèi)存管理、分支、并發(fā)、功能瓶頸等。不同的程序理解技術(shù)之間考慮的側(cè)重點不同,將各種程序理解技術(shù)適當搭配,勢必可以提高程序理解的效率。
3 核電程序理解的模型、技術(shù)及過程
由于核電軟件涉及的專業(yè)知識性強,代碼數(shù)量龐大,功能比較復雜,因此,針對這個特殊的軟件應(yīng)用領(lǐng)域,采用何種有效的程序分析模型、在眾多的程序分析技術(shù)中選取何種對核電程序理解有效的分析技術(shù),這些將關(guān)系到核電程序理解的效率,甚至是核電程序理解成功與否的關(guān)鍵。
3.1核電程序理解模型
由于核電領(lǐng)域是個專業(yè)性很強的領(lǐng)域,其中可能會涉及到復雜的公式以及計算不同的參數(shù)可能會采用不同的計算模型。這就要求核電理解人員不僅具備相應(yīng)的計算機專業(yè)知識,而且要求理解人員對核電領(lǐng)域的基礎(chǔ)知識、物理變量、物理模型等熟悉理解,這就需要程序理解人員有相應(yīng)的知識庫。同時,當對代碼熟悉時,理解人員通常采用自頂向下模型進行理解;而當對代碼完全不熟悉時,采用自底向上模型進行理解。一般來說,最初通過自頂向下的方式推進理解過程,這期間應(yīng)該會遇到不熟悉的代碼部分,于是需要轉(zhuǎn)回去進行自底向上的理解?;诖耍瑢穗娷浖绦蚶斫膺^程中采用綜合模型是比較恰當?shù)摹?/p>
3.2核電程序理解技術(shù)
核電領(lǐng)域是典型的安全關(guān)鍵領(lǐng)域,它的安全性事關(guān)重大。應(yīng)用在該領(lǐng)域的軟件系統(tǒng)一旦發(fā)生故障,將來會產(chǎn)生巨大的經(jīng)濟損失、危及人的生命甚至會造成生態(tài)災(zāi)難,因此這就對核電站生產(chǎn)用軟件的質(zhì)量提出了很高的要求。而這些被分析、理解的核電軟件一般是在經(jīng)過了嚴格的測試并被核電站實際安全運行了很多年的軟件,可以被認為是安全的?;诎踩缘目紤],即使對于核電軟件在某些突發(fā)情況下也很少執(zhí)行的情況我們也要進行分析,而不能僅僅分析核電軟件中的關(guān)鍵信息。這就要求我們在對核電軟件分析理解的過程中,要全面地展示出核電軟件的具體內(nèi)部信息。為了能夠更全面地反應(yīng)核電軟件的信息,保證核電軟件運行過程中所有可能的執(zhí)行路徑得到挖掘,在核電軟件的理解分析中用到更多的是靜態(tài)分析技術(shù)。根據(jù)實戰(zhàn)經(jīng)驗,核電軟件分析常用的靜態(tài)分析技術(shù)有:詞法分析、語法分析、結(jié)構(gòu)分析、控制流分析、符號執(zhí)行等。
3.3核電程序理解過程
在核電軟件理解采用的模型、技術(shù)都確定之后,接下來我們就要考慮采用何種步驟實現(xiàn)對核電軟件的逐步理解。根據(jù)項目實戰(zhàn)經(jīng)驗,現(xiàn)總結(jié)出核電程序理解采用的以下幾個步驟:
1)從應(yīng)用領(lǐng)域的角度整體把握該核電軟件在其領(lǐng)域中的作用;
由于核電軟件的保密性和特殊性,被分析的核電軟件一般都嚴重缺乏軟件說明、注釋等對軟件理解至關(guān)重要的信息,如果此時對其直接分析源代碼或是逆向工程,此時無疑像大海撈針,沒有方向。但如果此時能確定該軟件的應(yīng)用領(lǐng)域,(如:我們要分析的Copernic程序是反應(yīng)堆控制程序的子程序,因此,我們可以明白我們要處理的程序是用來的反應(yīng)堆進行控制的),然后再從實際的應(yīng)用領(lǐng)域中去考察該應(yīng)用領(lǐng)域大體上應(yīng)該包含有哪些功能實體,這顯然有助于程序的理解。此時我們可以利用知識庫模型,用語義網(wǎng)絡(luò)將該實體的具體知識信息和知識點描述出來,并加入知識庫中以備后續(xù)的使用,如下圖1所示:
圖1
該圖粗略描述了堆芯的組成,這對我們發(fā)現(xiàn)堆芯的各功能實體更為有助,而軟件是對現(xiàn)實世界的模擬,這對我們推測要分析的軟件大體上應(yīng)分為那些功能模塊是有幫助的,如:根據(jù)上圖的語義網(wǎng)絡(luò),我們可以大膽猜測,反應(yīng)堆控制程序可能包含燃料棒的受力、中子通量計算等模塊,這樣就使我們在分析反應(yīng)堆控制程序之前做到大體上心中有數(shù)。當然我們可以將語義網(wǎng)絡(luò)進一步細化,如:燃料棒涉及哪些物理變量、物理過程,這些物理變量、物理過程之間的關(guān)系又是如何的等等,這些都加入知識庫中以有助于核電程序的理解。
2)利用程序理解工具將核電軟件分割成各功能模塊并與上步分析出的實際功能嘗試匹配;
面對核電軟件,如果僅從代碼本身去發(fā)現(xiàn)問題領(lǐng)域是怎么被模擬的,勢必是困難的,也會顯得很盲從。而軟件是對現(xiàn)實世界的模擬,很多具體應(yīng)用領(lǐng)域的實際功能會在軟件的模塊功能中有所體現(xiàn)。根據(jù)自頂向下模型,利用程序理解工具將待分析的核電軟件分割成相對獨立的模塊(由于保密的要求,該文的圖形均以非具體核電軟件為例) 如圖2所示:
圖2
這就將一個待解決的大問題劃分為具體小問題。此時,根據(jù)自頂向下模型的創(chuàng)建假設(shè)、證實假設(shè)、改善假設(shè)的思維將各軟件模塊與上一步分析出的實體功能進行嘗試匹配。結(jié)合反應(yīng)堆中含有的功能實體,確定各模塊的“宏觀”功能。在確定各子模塊的“宏觀”功能時我們可以同過看參考文檔、看命名模塊的英文的漢語語義、看軟件的注釋、通過模塊內(nèi)部變量的物理意義推測模塊的功能、運用排除法等手段來證實。剩余一些確實難以匹配的模塊,讓其處于待定狀態(tài),等待以后分析。如:通過閱讀源代碼中的部分注釋(如:注釋中含有“rod”,“cladding”,“ posson ratior”,“elastic constants”等)并結(jié)合有限的文檔參考資料,我們可以確定Copernic子程序的“宏觀”功能是對燃料棒的受力進行分析。
3)針對被為分割好的核電軟件各功能模塊進行數(shù)學建模;
經(jīng)過模塊匹配之后,盡管有的核電軟件模塊宏觀功能明確,但是其中可能會涉及復雜的物理過程。對宏觀功能明確但物理過程又比較復雜的模塊進行直接分析有時會顯得難以下手,此時,若對有物理過程的模塊進行數(shù)學建模,將其物理過程以公式的形勢表現(xiàn)出來,并在物理模型的“宏觀指導下”,理解人員再去理解程序,這無疑有利于程序的理解。同時在建模過程中,會驅(qū)動理解人員去思考,該物理模塊包含哪些物理變量、其某個物理過程是如何的等,這無形中也會加深理解人員對程序的認識。由匹配結(jié)果可知,Copernic模塊是處理燃料棒受力的。由于Copernic模塊物理過程較為直觀,我們以它為例來說明建模過程。既然要建模就要在建模前要做好充足的準備工作:
一是:對物理過程涉及的領(lǐng)域知識進行補充,并加入知識庫中。由于涉及到力學分析,在建模之前我們要先了解基本的力學基礎(chǔ)知識(如:彈性力學,塑性力學等),對一些物理變量等做好充分的理解(如:彈性模量,泊松比,應(yīng)力,應(yīng)變,屈服條件等)。
二是:了解物理過程。燃料棒處于包殼中,在反應(yīng)堆運行過程中會發(fā)熱、腫脹、伸長、產(chǎn)生氣體,因此,它會受到徑向、切向、軸向的應(yīng)力。因此,只要我們求出這三個應(yīng)力并以此為突破口,就能弄清楚軟件模塊時怎么對燃料棒受力進行處理的。
建模:結(jié)合燃料棒的具體實際,并運用數(shù)學知識進行建模。由于燃料棒是圓柱形的,它關(guān)于軸向?qū)ΨQ,因此采用極坐標進行建模比較方便、簡潔。根據(jù)彈性力學知識,與圓柱體密切相關(guān)的方程有:幾何方程,本構(gòu)方程,平衡方程。將幾何方程代入本構(gòu)方程就得出了三個應(yīng)力的關(guān)于位移的微分形勢,再將三個應(yīng)力代入平衡方程,得到一個控制方程,控制方程是一個關(guān)于位移的偏微分方程,對偏微分方程求解,就得到了關(guān)于位移的的解。將所得的位移的解代入幾何方程,便得到了三個方向形變的解,將形變的解代入本構(gòu)方程便得到了三個方向力的解。此時,粗略模型就建立起來了,為了保證模型的基本正確性,要進行多次驗證計算,為以后分析程序做好指導和鋪墊。
4)選取一個軟件功能模塊進行分析;
在有物理過程的核電軟件模塊被建立數(shù)學模型以后,接下來就考慮選取一個合適的模塊進行分析。可以依據(jù)如下選取策略來選取模塊:一是:選取代碼規(guī)模盡量小的模塊;二是:選取物理模型盡量簡單的模塊;三是:選取程序注釋盡量多的模塊;四是:選取提供了較多參考文檔的模塊。
由于Copernic模塊受力過程較為直觀且我們已為其建立了數(shù)學模型,其代碼規(guī)模也較為合適,我們決定首先選取該模塊來分析。而對于物理過程不明確或者看不出有什么物理過程的模塊的選擇,可以依據(jù)如下選取策略來選取模塊:一是:選取提供較多參考文檔的模塊;二是:選取程序注釋盡量多的模塊;三是:選取代碼規(guī)模盡量少的模塊。
經(jīng)過以上幾個步驟,我們就能選取出一個較為合適的軟件模塊了。
5)分析選取的軟件模塊;
對選取的Copernic模塊進行分析時,根據(jù)自頂向上模型,利用程序理解工具將該模塊劃分為若干子模塊。由于核電環(huán)境的復雜性,有的大的軟件模塊除了含有一個物理模型之外,大模塊包含的子模塊有時也會含有各自的物理模型。對于含有物理模型的子模塊要為其建立相應(yīng)的數(shù)學模型。如:在第三步求解徑向、切向、軸向三個應(yīng)力時,出現(xiàn)了常數(shù)C,只有將C值求出來,我們所求出的力的表達式才有意義,因此,我們就要懷疑在Copernic模塊的子模塊中可能會含有對常數(shù)C計算的模塊。 根據(jù)分析,我們得知:在將燃料棒劃分為很多小環(huán)的過程中,每一環(huán)都有各自的常數(shù)C,因此我們必須求出常數(shù)每一環(huán)的常數(shù)C,這時就要根據(jù)各小環(huán)受力平衡為其建模。將各環(huán)的受力方程組成一個方程組,并對其求解,便得出了每一環(huán)的常數(shù)C的表達式。
由于核電程序的復雜性,有時在大模塊的物理模型中涉及的變量并不能通過數(shù)值直接量化,而是需要在其包含的小模塊中采用擬合、迭代等方式得出,實現(xiàn)對該變量的計算。這就會使我們求出的大的模塊的物理模型的數(shù)學表達式的變量會被散落在不同的子模塊中進行計算。因此,此時我們可以利用知識庫模型,將各子模塊的可能的功能嘗試與我們從物理模型導出的數(shù)學表達式的變量進行模式匹配,在匹配過程中,可以采用諸如:查看子模塊的參考文檔、子模塊源代碼的注釋、子模塊含有的變量的意義等手段來確定子模塊可能的功能。
對于其余的小模塊,經(jīng)過參考有限的文檔及觀察上一步的建模得出的表達式,暫時看不出涉及物理模型的,可暫時不用考慮建模。對于確實含有物理模型但暫時還看不出含有物理模型的模塊,可在稍后分析過程中去逐漸建立(如:有的模塊的邏輯很難理解,此時就要考慮它可能會涉及到物理模型)。
在大模塊的各小子模塊的數(shù)學模型或者子模塊的宏觀功能被大體確立之后,接下來應(yīng)考慮選擇一個子模塊分析。在選取哪個子模塊先入手分析時,可以按照有數(shù)學模型的優(yōu)先、“宏觀”功能相對明確的其次、功能模型都不清楚的最后的原則進行選擇分析。由于計算常數(shù)C的模塊含有物理模型且其“宏觀”功能相對明確,我們首先選擇計算常數(shù)C的這個子模塊來分析。
6)分析選取的子模塊的子程序;
首先,根據(jù)自頂向下模型,將待分析的子模塊的包含的所有子程序分割出來。同樣,在我們選取子模塊的哪個子程序分析時,最好先考慮子程序可能的“宏觀”功能。此時,我們可以查看已數(shù)學形式化的計算常數(shù)C的物理模型中含有哪些物理變量,然后再去考慮子程序的“宏觀”功能。根據(jù)知識庫模型,將公式中含有的變量與子程序的“宏觀”功能進行模式匹配,使公式的變量的物理含義與子程序的“宏觀”功能對應(yīng)。既然要選取子模塊的子程序進行分析,我們要選取一個子程序,選取子程序的策略依次如下:
一是:該子程序有參考文檔;二是:子程序的的宏觀功能盡可能明確;三是:子程序中含有的注釋盡量多;四是:子程序的規(guī)模盡量小。
組成一個程序的元素有:常量、變量、函數(shù)、表達式、類等諸多要素,其中以變量的物理含義、函數(shù)的功能最為重要。程序的功能是由變量組成的若干表達式及函數(shù)實現(xiàn)的,因此先弄清楚程序中變量的物理含義是十分必要的。
依據(jù)知識庫模型,根據(jù)命名恢復規(guī)則將程序變量與知識庫中的知識點進行模式匹配來確定程序變量的物理意義,對于不能匹配的程序變量,可以通過查看參考文檔、程序代碼注釋、參閱推導出的數(shù)學表達式等方式來確定程序變量可能的物理意義,如果這樣還不能確定變量的物理意義,甚至還可以大膽推測其可能的物理意義,在稍后的分析中通過搜索代碼或文檔等方式逐漸對其修正。然后,根據(jù)關(guān)系恢復規(guī)則將程序塊中的順序過程調(diào)用、單過程調(diào)用和構(gòu)造定義等與知識庫中的知識關(guān)系進行模式匹配。由于此時有些變量的物理意義我們已匹配出來,因此,對于不能匹配的順序過程調(diào)用、單過程調(diào)用等可以參照控制流圖來讀取其源代碼以推測出其可能的功能,其實這是一個逐漸聚合的過程,這也是自底向上模型所強調(diào)的,如:對于代碼pcboards=pcboards-sold,自底向上模型的狀況模型將其描述為“通過出售PC主板減少庫存量”,這樣經(jīng)過若干步,低級的涉及知識可以組織成更高級的涉及知識。
據(jù)此,結(jié)合該模塊的數(shù)學模型推導出的公式或表達式,我們就可以推出表達式的物理意義、函數(shù)的功能等子程序隱含的信息,進而推出該子程序的功能。
7)將理解出的程序信息加入知識庫,并在后續(xù)理解過程中對知識庫逐漸更新、修正;
對一個子程序完成理解之后,將其變量的物理意義、其含有的函數(shù)的功能、整個子程序的功能、子程序的控制流圖、理解過程中對子程序語句添加的注釋等信息整理成文檔保存,并將諸如變量的物理意義、其含有的函數(shù)的功能等加入知識庫,為后續(xù)其它子程序或子模塊的理解做好鋪墊和準備。經(jīng)過以上步驟的多次執(zhí)行以后,該子模塊包含的所有子程序都會被逐個分析出來。
由于在起初程序理解過程中,我們對很多變量的物理意義、函數(shù)功能等信息庫信息在認識上難免會存在不足,有時甚至是錯誤的認識,這就需要我們在后續(xù)的理解過程中對知識庫不斷進行修正和更新,最終形成一個準確的信息庫。因此,待子模塊的所有子程序都理解出了以后,將各子程序的信息加入知識庫的同時,我們還要采用自底向上的模型,統(tǒng)籌各個子程序的功能來考慮整個子模塊的功能。對于含有物理模型的子模塊,在結(jié)合各子程序的功能時,還要對照推導出的該模塊物理模型的數(shù)學形式對子模塊進行理解,這樣既便于子模塊的快速理解,也有利于對該模塊物理模型的數(shù)學形式的修正,因為我們開始建立的該物理模型的數(shù)學形式是粗略的、不準確的,程序才是精確的,我們要以程序推出的公式為準。這樣經(jīng)過若干步,整個程序都會被漸漸理解出來,也就實現(xiàn)了程序理解的目的。
4 總結(jié)
本文通過對一般性程序理解涉及的技術(shù)、模型的介紹,引出了對核電軟件這個特殊的軟件應(yīng)用領(lǐng)域程序的理解。由于核電軟件的復雜性,其可能會涉及到很多復雜的物理公式、甚至是物理模型,該文根據(jù)本人對核電軟件的實戰(zhàn)經(jīng)驗,總結(jié)出了核電軟件理解過程中需要用到的技術(shù)、模型,并以Copernic子程序為例,介紹了核電程序的理解過程。由于物理模型事關(guān)程序理解的效率及準確性,在介紹核電程序理解過程的同時,Copernic子程序為例,重點介紹了在核電程序的分析過程中數(shù)學模型的建立過程,這些理論和實踐經(jīng)驗,對今后核電軟件的理解具有十分重要的現(xiàn)實意義。
參考文獻:
[1] 李瑩,張琴燕.程序理解[J].計算機應(yīng)用研究,2001(6).
[2] 郭穎,錢淵.逆向工程的應(yīng)用研究和發(fā)展[J].信息與電子工程,2004(2).
[3] 謝仲生,尹邦華.核反應(yīng)堆物理分析[M].北京:原子能出版社,1996.
[4] 馬靈春.程序理解中靜態(tài)分析與抽取技術(shù)的研究及實現(xiàn)[D].杭州:浙江工業(yè)大學,2007.
[5] 梅宏,王千祥,張路,等.軟件分析技術(shù)進展[J].計算機學報,2009(9).