第 28 課。估算 C/C++ 應(yīng)用程序的 64 位遷移成本
2013 年 8 月 19 日
開始計(jì)劃將您的項(xiàng)目移植到 64 位系統(tǒng),您必須能夠估計(jì)工作量和材料成本。讓我們考慮構(gòu)成創(chuàng)建 64 位軟件產(chǎn)品總成本的那些組件。 如果您覺得很難估算遷移到 64 位系統(tǒng)的成本,您可以聯(lián)系我們公司 OOO 'Program Verification Systems' 的專家尋求建議。我們公司還可以為您的項(xiàng)目適應(yīng) 64 位系統(tǒng)的部分或全部工作。 購(gòu)買 64 位硬件和軟件如今,您幾乎找不到擁有一臺(tái)配備 32 位微處理器的計(jì)算機(jī)的開發(fā)人員。但是您仍然應(yīng)該記住,您必須擁有一臺(tái) 64 位計(jì)算機(jī),它可以讓您管理所有必須解決的任務(wù)。似乎最真實(shí)的情況是 64 位硬件架構(gòu)仍然可以在 32 位操作系統(tǒng)下工作。您應(yīng)該考慮購(gòu)買和安裝 64 位版本操作系統(tǒng)的費(fèi)用。還要考慮與更改操作系統(tǒng)版本相關(guān)的額外費(fèi)用,例如重新安裝各種軟件。 購(gòu)買編譯器來(lái)構(gòu)建 64 位應(yīng)用程序將購(gòu)買和掌握能夠創(chuàng)建 64 位代碼的新編譯器的價(jià)格加到總價(jià)格中。 購(gòu)買 64 位版本的庫(kù)您可能需要購(gòu)買 64 位版本的庫(kù)和其他組件。事先了解那些在您的項(xiàng)目中使用其組件的公司的定價(jià)政策。有時(shí) 32 位和 64 位版本的組件單獨(dú)出售。如果您使用還沒有 64 位配置的開源庫(kù),請(qǐng)準(zhǔn)備好花大量時(shí)間手動(dòng)修改它們。 員工培訓(xùn)和購(gòu)買額外工具考慮您的員工學(xué)習(xí)有關(guān) 64 位系統(tǒng)開發(fā)的所有必要信息所需的時(shí)間。您可能還需要購(gòu)買一些額外的工具,例如PVS-Studio。 代碼修改正如您在前面的課程中已經(jīng)知道的那樣,編譯 64 位配置僅僅是開始。在大多數(shù)情況下,您需要找出并糾正在 64 位代碼中出現(xiàn)的許多缺陷。這可能是最費(fèi)力但最難估計(jì)的部分工作。但是,我們可以根據(jù) PVS-Studio 靜態(tài)分析器為您提供以下建議。 好吧,您有好幾(幾十、幾百)兆字節(jié)的源代碼可供遷移。目前還沒有代碼的 64 位配置。因此,也沒有要在 64 位模式下編譯的文件。 PVS-Studio 為您提供了檢測(cè) 64 位代碼問(wèn)題的能力,即使在 32 位項(xiàng)目中也是如此。正是這種能力讓您在創(chuàng)建項(xiàng)目的 64 位配置之前估計(jì)遷移的難度。 我希望讀者注意代碼的檢查是如何在 32 位模式下執(zhí)行的。您應(yīng)該了解,此檢查不能被認(rèn)為是完整的,即使您糾正了檢測(cè)到的所有錯(cuò)誤,您也不能絕對(duì)確定代碼將在 64 位模式下工作。任何嚴(yán)肅的應(yīng)用程序的代碼都有這樣的片段: #ifdef WIN64
...
#endif 當(dāng)然,在 32 位模式下測(cè)試代碼時(shí)會(huì)跳過(guò)這個(gè)片段。或者,更準(zhǔn)確地說(shuō),雖然還沒有 64 位配置,但應(yīng)用程序代碼可能沒有這樣的片段。 這是另一件重要的事情:數(shù)據(jù)類型自然會(huì)根據(jù)項(xiàng)目配置而有所不同。這就是為什么在 32 位和 64 位模式下的檢查幾乎總是會(huì)導(dǎo)致不同的結(jié)果。 但是它們會(huì)有多大不同呢?根據(jù)我們公司進(jìn)行的實(shí)驗(yàn)結(jié)果,我們有以下幾點(diǎn):PVS-Studio分析儀在32位和64位模式下測(cè)試項(xiàng)目時(shí)產(chǎn)生的診斷警告列表符合95-97%。這意味著不超過(guò) 5% 的診斷消息不同。 這些結(jié)果是通過(guò)以下方式獲得的。我們?nèi)×苏鎸?shí)項(xiàng)目的代碼,在 32 位模式下檢查并保存了診斷警告列表。然后我們?cè)?64 位模式下檢查了相同項(xiàng)目的代碼,還保存了診斷警告列表。之后,我們比較了這些列表并估計(jì)了有多少百分比的診斷消息是一致的。由于整個(gè)過(guò)程是在自動(dòng)模式下執(zhí)行的,因此分析的項(xiàng)目數(shù)量已經(jīng)足夠(超過(guò) 20 個(gè)項(xiàng)目,每個(gè)項(xiàng)目的代碼大小為幾 Mbytes)。所以我們可以得出結(jié)論,這些數(shù)字(5% 的差異)是可信的。 當(dāng)然,您不應(yīng)該急于修復(fù)在您的項(xiàng)目的 32 位配置中檢測(cè)到的所有潛在錯(cuò)誤 - 最好等待 64 位配置。但是您可以輕松估計(jì)檢查代碼分析器生成的所有警告需要多長(zhǎng)時(shí)間。 我們建議您執(zhí)行以下操作:
必須先編寫程序顯示您的錯(cuò)誤,然后才能確定正確的檢測(cè)程序并預(yù)計(jì)它被修改為不同的時(shí)間。估計(jì),您必須進(jìn)行所有必要的更正。 多種代碼估計(jì)移植過(guò)程的算法——在分析消息的同時(shí)修改技能會(huì)在開發(fā)之內(nèi)有處理的消息,因此我們建議您在選擇處理者時(shí),及時(shí)處理一個(gè)程序,在一天之內(nèi)非常小心和謹(jǐn)慎。 下面是有關(guān)如何選擇此類人員的一些建議:
遵循這些說(shuō)法,您可以充分估計(jì) 64 位軟件遷移的成本和期限。 調(diào)整測(cè)試系統(tǒng)如果您的系統(tǒng)程序需要大量處理數(shù)據(jù),則需要在超過(guò) 4 個(gè)數(shù)據(jù)量的測(cè)試中進(jìn)行測(cè)試。并行化的任務(wù)。在這種情況下您可能需要購(gòu)買額外的工具。 保護(hù)軟件單元如果您使用軟件破解或保護(hù)系統(tǒng)的軟件復(fù)制和保護(hù),您應(yīng)該在總成本中加上為您的 64 位代碼,如果您當(dāng)前使用的系統(tǒng)不支持 64 位代碼,您可能掌握的保護(hù)系統(tǒng)。你可能會(huì)有一些其他的問(wèn)題,所以請(qǐng)確保你有一些麻煩。 分配套件適配您將自己創(chuàng)建一個(gè)新的分發(fā)套件 - th是在上一課中考慮過(guò)的。
|
|