信息管理行業(yè)案例:15秒查找500000+行代碼中的指針錯(cuò)誤
這是一個(gè)故事,講述了如何在15秒的分析過(guò)程中發(fā)現(xiàn)導(dǎo)致崩潰的錯(cuò)誤,從而避免了40小時(shí)的人工檢查。
BITTT Enterprises專注于業(yè)務(wù)流程,并為信息管理提供戰(zhàn)略性業(yè)務(wù)解決方案。 BITTT幫助他們的客戶改善內(nèi)部技術(shù)系統(tǒng),提高效率和生產(chǎn)率,以實(shí)現(xiàn)更健康的利潤(rùn)。
合伙人Timothy W. Okrey負(fù)責(zé)BITTT的開(kāi)發(fā)。實(shí)際上,他是BITTT編寫(xiě)的代碼背后的策劃者。最近,Okrey正在繼續(xù)開(kāi)發(fā)正在進(jìn)行中的項(xiàng)目,該項(xiàng)目已經(jīng)進(jìn)行了兩年。該程序突然開(kāi)始崩潰時(shí),它處于虛擬生產(chǎn)環(huán)境。這種情況使Okrey完全傻眼了。
在嘗試自己解決問(wèn)題并向各個(gè)方向撞墻之后,Okrey找到了Parasoft的C/C++運(yùn)行時(shí)分析和錯(cuò)誤檢測(cè)解決方案。Parasoft Insure++不僅幫助Okrey解決了眼前的問(wèn)題,而且使他能夠同時(shí)有效地增強(qiáng)多個(gè)獨(dú)立項(xiàng)目。
臨界指針錯(cuò)誤的出現(xiàn)
Okrey正在開(kāi)發(fā)的產(chǎn)品穩(wěn)定并且可以在虛擬生產(chǎn)模式下運(yùn)行。但是,該程序在經(jīng)過(guò)最近的構(gòu)建以解決客戶要求的許多增強(qiáng)功能后開(kāi)始失敗。
BITTT已在該產(chǎn)品上投資了兩年,這是一種與薪資相關(guān)的解決方案,旨在幫助客戶減少每周投資的60至70個(gè)工時(shí),以手動(dòng)完成14個(gè)州的1000名員工的薪資。由于BITTT的工作,現(xiàn)在客戶的工資單已實(shí)現(xiàn)自動(dòng)化,使他們每周花費(fèi)不到12個(gè)工時(shí)。不幸的是,最新版本出現(xiàn)的停止顯示錯(cuò)誤導(dǎo)致BITTT的客戶恢復(fù)到人工工資核算流程。
基于20多年的開(kāi)發(fā)經(jīng)驗(yàn),Okrey知道,如果已經(jīng)碰壁了,那就是時(shí)候以不同的方式重做整個(gè)項(xiàng)目了。不幸的是,在這種情況下,這甚至都不可行,因?yàn)?/span>“沒(méi)有決定性的證據(jù),甚至沒(méi)有可追溯的錯(cuò)誤。”O(jiān)krey進(jìn)一步解釋說(shuō):“這不是新的發(fā)展。我們也沒(méi)有嘗試將部分代碼組合在一起以使其正常工作。這個(gè)特定程序是使用工具箱作為細(xì)節(jié)從頭開(kāi)始編寫(xiě)的?!?
該工具包是Okrey于1993年開(kāi)始創(chuàng)建的工具包。它允許他將工作功能提取到原始源代碼中,或用作任何項(xiàng)目的庫(kù)。該工具包為他的所有項(xiàng)目提供了穩(wěn)定的基礎(chǔ),并減輕了反復(fù)重寫(xiě)代碼的需要。該工具包已經(jīng)發(fā)展到超過(guò)500000行代碼,這些代碼都是經(jīng)過(guò)最大程度的努力而編寫(xiě)的。Okrey嚴(yán)格遵循結(jié)構(gòu)化編程的規(guī)則,因此在保持代碼清潔方面很明智。他從未使用過(guò)第三方工具來(lái)分析他的代碼,也從未需要過(guò)。
減少下游開(kāi)發(fā)流程的時(shí)間和成本
在一個(gè)多星期的時(shí)間里,Okrey試圖重新設(shè)計(jì)引起麻煩的樣式的不同部分。
但是他為解決問(wèn)題所做的嘗試僅導(dǎo)致更改了一些內(nèi)部零件,從而使故障點(diǎn)發(fā)生在其他位置。“像平時(shí)一樣,我用細(xì)齒梳和放大鏡花了40多個(gè)小時(shí)來(lái)瀏覽我的所有代碼。我無(wú)法找到問(wèn)題所在。我可以看到發(fā)生了什么事。我只是不知道為什么會(huì)這樣,” Okrey說(shuō)。
從那時(shí)開(kāi)始,他開(kāi)始尋求幫助。他只發(fā)現(xiàn)了少數(shù)能夠完成他想要的工具。在少數(shù)幾個(gè)產(chǎn)品中,大多數(shù)產(chǎn)品僅允許靜態(tài)檢查代碼。Parasoft是唯一還執(zhí)行動(dòng)態(tài)分析的產(chǎn)品。Okrey說(shuō):“Parasoft使我能夠在運(yùn)行環(huán)境中分析我的內(nèi)容,而不僅僅是看紙上的代碼。”
設(shè)置并運(yùn)行后,Parasoft經(jīng)歷了Okrey源代碼的第一版——全部500000行。在啟動(dòng)后的15秒內(nèi),Parasoft發(fā)現(xiàn)了一個(gè)過(guò)時(shí)的指針錯(cuò)誤。Okrey談到快速的投資回報(bào)時(shí)說(shuō):“如果我找不到Parasoft,那將導(dǎo)致客戶提出非常苛刻的要求?!彼a(bǔ)充說(shuō):“僅僅由于升級(jí),從程序的正常運(yùn)行版本變?yōu)榉钦_\(yùn)行版本,將導(dǎo)致進(jìn)度逆轉(zhuǎn),我甚至不愿考慮采取強(qiáng)制性的財(cái)政讓步。這是一個(gè)很麻煩的情況。”
提高代碼質(zhì)量、穩(wěn)定性和合規(guī)性
Parasoft使Okrey能夠完全修改工具包的源代碼。特別是改善字符串處理。改進(jìn)已擴(kuò)展到其他項(xiàng)目。Okrey還為使用相同后端工具包的各種客戶提供了許多其他程序,因此所有這些程序都能從中受益。Okrey指出:“我甚至無(wú)法開(kāi)始告訴您所有依賴于后端工具包的程序。由于進(jìn)行了改進(jìn),Parasoft使我能夠進(jìn)行改進(jìn),使它們更加穩(wěn)定和合規(guī)?!?
Okrey說(shuō),Parasoft解決方案使他能夠?qū)嵤┖蛨?zhí)行他的高編碼標(biāo)準(zhǔn)。Okrey說(shuō):“Parasoft迫使您驗(yàn)證所使用的標(biāo)準(zhǔn)和做法絕對(duì)原始。”“作為項(xiàng)目負(fù)責(zé)人或像我這樣的管理合伙人,面臨的挑戰(zhàn)之一是確認(rèn)您的團(tuán)隊(duì)正在編寫(xiě)符合高標(biāo)準(zhǔn)的代碼。Parasoft可以幫助我驗(yàn)證我的團(tuán)隊(duì)正在編寫(xiě)符合我的標(biāo)準(zhǔn)的代碼,并允許我保證結(jié)果。我為此感到非常興奮。”
從Parasoft的解決方案中獲取價(jià)值
Okrey對(duì)Parasoft迅速融入其應(yīng)用程序開(kāi)發(fā)過(guò)程的質(zhì)量感到滿意。他不僅能夠?yàn)樽鹳F的客戶糾正問(wèn)題,而且還能夠?yàn)槠渌蛻籼岣邤?shù)十種程序的質(zhì)量。
Okrey說(shuō):“對(duì)于我選擇認(rèn)可的產(chǎn)品,我非常嚴(yán)格。出于各種原因,世界上編寫(xiě)的大多數(shù)軟件都無(wú)法正常運(yùn)行。也許它的設(shè)計(jì)不正確,以至于運(yùn)行緩慢,或者系統(tǒng)要求不切實(shí)際。清單繼續(xù)。
“不過(guò),我確實(shí)很喜歡一些產(chǎn)品。其中之一是我一直依賴的系統(tǒng)軟件產(chǎn)品。我從未經(jīng)歷過(guò)GPF。決不!當(dāng)我得知該產(chǎn)品的提供商是Parasoft客戶時(shí),就是這樣。這就是讓我決定嘗試Parasoft的原因,對(duì)此我感到非常高興?!?
獲取Parasoft資料或申請(qǐng)?jiān)囉每杉観Q:2867205852