這些概念之間的主要區(qū)別在于:重新設(shè)計意味著你修改軟件以改變它的功能,而重構(gòu)是修改它的工作方式。
重新設(shè)計和重構(gòu)軟件有什么區(qū)別?
這些概念之間的主要區(qū)別在于:重新設(shè)計意味著你修改你的軟件來改變它的功能,而重構(gòu)是修改它的方式。
重新設(shè)計工作有多種原因。例如,由于硬件更改,軟件需要在不同的CPU上工作,或者必須處理新的外圍設(shè)備,因此需要修改或擴展代碼以解決這些物理修改并提供新功能。當(dāng)軟件需要與新的或更新的軟件接口時,也可能會發(fā)生重新設(shè)計 3RD-提供新服務(wù)的派對庫,這些服務(wù)將使您的應(yīng)用程序受益。您可能會發(fā)現(xiàn)重新設(shè)計的許多其他原因,但在大多數(shù)情況下,在此上下文中執(zhí)行的軟件更改會影響修改后的應(yīng)用程序提供的一般行為或功能。
與重新設(shè)計相反,重構(gòu)是一種優(yōu)化代碼內(nèi)部實現(xiàn)的努力,以提高其可維護性并降低其總體運營成本。和許多人一樣,我相信軟件重構(gòu)的最佳定義之一是由Martin Fowler在他的“重構(gòu)書”中寫的:
“對軟件的內(nèi)部結(jié)構(gòu)進行了更改,使其更易于理解且修改成本更低,而無需更改其可觀察的行為。
根據(jù)此定義,重構(gòu)通常由開發(fā)人員在以下情況下執(zhí)行:
需要將技術(shù)債務(wù)控制在可接受的水平,即低于從頭開始重建整個代碼似乎更經(jīng)濟的線。
降低復(fù)雜性和內(nèi)部依賴性,使軟件更模塊化,更易于擴展,更易于開發(fā)團隊中的新手閱讀和管理等。
確保隨著時間的推移,原始設(shè)計保持可理解和清晰,并保留其預(yù)期功能。..。..
鑒于我們現(xiàn)在對重新設(shè)計與重構(gòu)工作有了更清晰的理解,
哪些情況需要重新驗證您的軟件?
好吧,軟件測試的本質(zhì)是它們主要檢查代碼是否符合其目的。換句話說,它們根據(jù)應(yīng)用程序的功能要求驗證組成系統(tǒng)的每個軟件單元是否按預(yù)期運行。話雖如此,如果您嘗試重新設(shè)計代碼,則必須對其進行測試以確保根據(jù)新引入的要求驗證新功能,同時確保這些新擴展不會在現(xiàn)有的通過測試中引入回歸。
您可能會爭辯說,重構(gòu)工作只影響軟件內(nèi)部結(jié)構(gòu),因此不一定影響代碼接口和根據(jù)應(yīng)用程序要求交付的一般服務(wù)。是的,但是。..像任何其他開發(fā)活動一樣,重構(gòu)是引入新錯誤的一種非常簡單的方法,因此您必須重新測試您的軟件。維護一組完整而詳盡的通過測試將確保重構(gòu)不會導(dǎo)致代碼中的回歸錯誤未被檢測到。事實上,每當(dāng)你做一個小的改變時,你應(yīng)該重新執(zhí)行現(xiàn)有的測試作為安全網(wǎng),以檢查你沒有修改預(yù)期的行為。經(jīng)過一系列增量更改后,您將以安全的方式達到最初面向的重構(gòu)狀態(tài)。
大多數(shù)組織希望通過在源代碼更改時更新這些測試來保留以前測試投資的價值。但這可能會導(dǎo)致高昂的測試維護成本。該解決方案并不像僅確定受代碼更改影響的受影響測試的子集(有時稱為測試影響分析或基于更改的測試)那樣簡單。測試維護的昂貴部分是開發(fā)人員花費在識別依賴項和更新相應(yīng)測試以確保它們與修改后的軟件同步上的努力。
那么,適當(dāng)?shù)臏y試自動化如何降低這些測試維護成本呢?
1)通過對代碼更改和測試依賴關(guān)系的初步分析:
·了解對正在測試的代碼的更改(通過保留上次測試時的代碼信息并將其與更改的代碼進行比較)
·確定哪些測試受代碼更改的影響
·在單個視圖中識別代碼中影響測試的所有更改
·識別可能影響現(xiàn)有測試實現(xiàn)的代碼覆蓋率的代碼更改
2) 通過為開發(fā)人員提供自動測試更新的指導(dǎo)選擇,以便重新同步源代碼和測試:
? 對于每個代碼更改,建議對測試腳本和案例進行適當(dāng)?shù)母?/p>
? 自動重構(gòu)測試腳本,以便節(jié)省時間和成本效益
3)對于主要影響軟件內(nèi)部結(jié)構(gòu)的代碼更改,自動生成通過測試的安全網(wǎng)或基線,以便:
? 在回歸測試或持續(xù)集成期間查明故障
? 識別可測試性問題,例如無法訪問的代碼
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
11031瀏覽量
215957 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70241
發(fā)布評論請先 登錄
在Linux中,用新設(shè)置對CY7C65215重新編程后,如何啟用新設(shè)置?
變頻器重新設(shè)置參數(shù)應(yīng)注意什么?

秒驗:重構(gòu)APP用戶體驗與運營效率
三星電子否認1b DRAM重新設(shè)計報道
三星否認重新設(shè)計1b DRAM
HSSC MicroStar BGA停產(chǎn)并重新設(shè)計

CTS MicroStar BGA停產(chǎn)并重新設(shè)計

HarmonyOS NEXT應(yīng)用元服務(wù)開發(fā)控件位置調(diào)整場景與重新設(shè)置新焦點位置的場景
三星或重新設(shè)計1a DRAM以提升HBM質(zhì)量
中繼器如何重新設(shè)置
「重構(gòu):改善既有代碼的設(shè)計」實戰(zhàn)篇

每次調(diào)用espconn_send之前,重新設(shè)置遠程IP和端口的目的是什么?
該如何提高代碼容錯率、降低代碼耦合度?

評論