陳利平,徐洪珍
(東華理工大學(xué) 信息工程學(xué)院,江西 南昌 330013)
隨著軟件用戶需求的越發(fā)的多樣性和不斷變化,以及軟件應(yīng)用環(huán)境和科學(xué)技術(shù)的不斷變化等因素,從而使得要求人們的軟件必須做出相應(yīng)的變化來適應(yīng)這些變化。但是由于這些引起軟件發(fā)生演化的因素本身就很復(fù)雜,從而使得軟件演化愈發(fā)的難以理解和控制。因此,為了使軟件能夠不斷適應(yīng)變化環(huán)境以提供更好的服務(wù),那么人們必需研究軟件的演化行為,以此更好地理解和控制軟件演化。
目前對軟件演化行為描述研究,和對演化行為控制進行建模的主要研究有幾下幾種:使用形式化方法描述軟件演化或者對其建模,針對具體系統(tǒng),給出軟件演化的很好的描述如基于超圖文法的軟件體系結(jié)構(gòu)動態(tài)演化和以體系結(jié)構(gòu)為中心的構(gòu)件模型的形式化語義。采用統(tǒng)一建模語言UML及其擴展模型建模軟件演化,具有圖形化,易理解等特點。使用ADL(architecture description language,體系結(jié)構(gòu)描述語言)建模和分析軟件體系結(jié)構(gòu)演化,能精確刻畫軟件演化的特性。
由上述綜述可知,當(dāng)前對軟件演化的研究不論是對行為的描述還是建模,都忽視了軟件自身的有序性以及便于計算機計算處理的便捷性。因此文章從體系結(jié)構(gòu)考慮軟件演化,并且認為體系結(jié)構(gòu)是有序的,同時為了計算機處理的便捷性,在文章中用矩陣描述體系結(jié)構(gòu)的這種有序性,并且為基于矩陣的軟件演化建立了一個模型。在模型中通過輸入從軟件體系結(jié)構(gòu)層面對軟件演化進行描述的矩陣,然后經(jīng)過矩陣的演算得到演化后的軟件體系結(jié)構(gòu)信息,根據(jù)新的軟件體系結(jié)構(gòu)信息構(gòu)成新的軟性系統(tǒng)。該模型可支持一定程度上的自演化。
基于矩陣的軟件演化模型(M-BMOSE Matrix-Based Model Of Software Evolution),在M-BMOSE模型中總共包含三層:表示層、演化支撐層和數(shù)據(jù)層。表示層:用來和用戶進行信息交互;演化支撐層:用來支撐和實現(xiàn)動態(tài)演化,如收集構(gòu)件信息和實現(xiàn)演化意圖;數(shù)據(jù)層:用來記錄構(gòu)件信息和應(yīng)用軟件的體系結(jié)構(gòu)信息,應(yīng)用系統(tǒng)通過訪問構(gòu)件信息和體系結(jié)構(gòu)信息構(gòu)造自己的應(yīng)用框架,具體通過應(yīng)用系統(tǒng)的菜單架構(gòu)體現(xiàn)。具體M-BMOSE支撐平臺如圖1所示。
圖 1M-BMOSE支撐平臺
由圖1可知,M-BMOSE支撐平臺,主要是由構(gòu)件管理模塊和軟件體系結(jié)構(gòu)演化模塊組成,構(gòu)件管理模塊主要是提供對構(gòu)件信息的維護功能,如構(gòu)件添加、刪除、替換和查詢等;軟件體系結(jié)構(gòu)演化模塊主要是用來完成對應(yīng)系統(tǒng)的軟件體系結(jié)構(gòu)演化,軟件體系結(jié)構(gòu)演化引擎根據(jù)軟件體系結(jié)構(gòu)演化UI輸入的具體應(yīng)用系統(tǒng)名稱、構(gòu)件矩陣關(guān)系對應(yīng)表和體系結(jié)構(gòu)層級描述矩陣,通過矩陣自演算體系結(jié)構(gòu)描述矩陣,根據(jù)體系結(jié)構(gòu)描述矩陣結(jié)果實現(xiàn)新的軟件體系結(jié)構(gòu),并且將新的軟件體系結(jié)構(gòu)信息存入軟件體系結(jié)構(gòu)信息庫。
圖2 實現(xiàn)體系結(jié)構(gòu)演化流程圖
利用M-BMOSE支撐平臺實現(xiàn)軟件演化,在M-BMOSE支撐平臺中輸入對于軟件的體系結(jié)構(gòu)層級關(guān)系描述矩陣,M-BMOSE支撐平臺會通過矩陣演算獲取體系結(jié)構(gòu)描述矩陣,并且根據(jù)此矩陣實現(xiàn)新的軟件體系結(jié)構(gòu),同時將新的軟件體系結(jié)構(gòu)信息存入軟件體系結(jié)構(gòu)信息庫。M-BMOSE支撐平臺實現(xiàn)體系結(jié)構(gòu)演化流程圖如圖2所示。
文章提出了一個基于矩陣的軟件演化模型,在該模型中,對軟件的演化是從體系結(jié)構(gòu)的層面來考慮的。在模型中通過輸入從軟件體系結(jié)構(gòu)層面對軟件演化進行描述的矩陣,然后經(jīng)過矩陣的演算得到演化后的軟件體系結(jié)構(gòu)信息,根據(jù)新的軟件體系結(jié)構(gòu)信息構(gòu)成新的軟性系統(tǒng)。該模型可支持一定程度上的自演化。下一步的工作就是針對該模型進行進一步的豐富,以期望能夠融入軟件演化性的更多的子特征,能夠從多層面來考慮軟件的演化性。
[1]徐洪珍,曾國荃.基于超圖文法的軟件體系結(jié)構(gòu)動態(tài)演化[J].同濟大學(xué)學(xué)報(自然科學(xué)版),2011,5(39):745-750.
[2]徐洪珍,曾國蓀,陳波.軟件體系結(jié)構(gòu)動態(tài)演化的條件超圖文法及分析[J].軟件學(xué)報,2011,22(6):1210-1223.
[3]楚旺,錢德沛.以體系結(jié)構(gòu)為中心的構(gòu)件模型的形式化語義[J].軟件學(xué)報,2006,17(6):1287-1297.