由於Java語言具有的諸多特性以及Internet和嵌入式系統的普及,對已經投入應用的使用C++語言編寫的軟件進行Java移植,在軟件活動中的比例越來越大以及這一活動過程的特殊性,針對其過程進行的管理控制與開發方法和傳統軟件活動有所不同,因此討論了針對移植的策略,並以一個移植項目---LED航顯系統移植為例,證明這些策略的有效性?
關鍵詞: 軟件工程;移植;Java;軟件方法
第1章 緒論
由於Java具有的解釋性?可移植性?平台無關性和安全性等特性,使得Java在網絡應用?嵌入式系統等對跨平台和安全性有很高要求的領域有了越來越廣泛的應用?對於企事業單位來講,對原有系統進行Java化移植,一方面可以避免系統重新開發造成的高成本?長周期?系統融合等不利因素,另一方面可以實現系統的平滑過渡,以較小的成本實現系統的升級?因此,采用軟件工程策略來指導整個系統移植的過程是非常有意義的?
第2章 移植方案
移植方案大體可分為3類:功能移植,系統結構移植和實現的完全移植?
(1)功能移植:拋棄所有邏輯和語言結構,重新使用目標語言實現源工程的功能?功能移植產生的目標工程的特性獨立於源工程,有利於產生高質量的代碼和易於維護的工程?但功能移植更像是一個全新的開發過程而不是一個移植過程?它的管理和傳統軟件過程是類似的,各種生存周期模型和面向對象的軟件方法都可以使用?
(2)系統結構移植:在類?包級別上保留源工程的大致接口和邏輯結構,對它們的具體實現進行重寫?對於一個經歷了整個生命周期的源工程,系統邏輯結構是基本滿足要求的,針對系統結構的移植能夠在保留源工程的基本結構的基礎上,使目標工程達到較高的質量?但必須對結構的功能及其之間的聯系有深刻的理解,值得注意的是,如果程序員的理解產生了偏差,結果可能是災難性且難以修復的?
(3)實現的完全移植:在保留源工程邏輯結構的基礎上盡量保留其實現的語言結構?源工程的代碼復用度高,移植工作機械簡單?程序員只需要對整體結構作一般了解,其注意力就可以完全集中於自己的工作?開發進度可以精確度量,周期短?效率高?但是,使用實現的完全移植生成的目標工程的質量不會優於源工程?如果缺乏有效的管理,就難以保證工程的質量?基於以上理由,本文主要討論實現的完全移植策略?沒有特殊說明,下文中的移植活動均指實現的完全移植?
第3章 預處理
如果僅僅移植源工程一部分功能,使用代碼界定保留需要移植的結構,可以有效地減少需要移植的代碼數量?這個過程是簡單的,只需針對源工程的所有保留功能進行結構走通並記錄調用結構,凡是沒有記錄下的均可界定在移植范圍之外?
定義1:step-代碼中去除注釋?空行後的有效代碼行數,它是系統規模的簡單度量?
LED航顯系統移植項目采用這種界定方式,工程代碼量從原來的13362steps,縮減到界定後的11069steps?有效地減少了工作量?
應當注意的是,如果有源工程的開發人員被指派為移植的程序員,這一過程的時間可以大大縮短,甚至略過這一過程?LED航顯系統移植項目中,我們使用了1人/月來進行這一階段得到了足以保證正確移植的有關知識?
第4章 任務分配和管理
定義2:如果某個語言結構A(例如類)的實現依賴於其它語言結構B的實現,則稱A在工程中的層次高於B。這種依賴既可能是被繼承,方法被調用,也可能作為成員變量或參數的數據耦合等。
在安排工作時,以類作為劃分工作的單位,按照層次由高到低的順序完成,則稱之為自頂向下的軟件構造方式;反之,則稱之為自底向上的軟件構造方式。采用自底向上的構造方式只要能保證在某個
[1] [2] [3] 下一頁