- Effective Debugging:軟件和系統(tǒng)調(diào)試的66個(gè)有效方法
- (希)迪歐米迪斯·斯賓奈里斯
- 1169字
- 2019-09-02 17:53:01
本書對(duì)軟件開發(fā)的其他方面所起的作用
本書里的所有條目都是針對(duì)故障的診斷與調(diào)試而寫的,不過其中有很多建議同樣可以用來縮減代碼中的bug數(shù)量,并且可以使你在遇到這樣的bug時(shí)能夠更為迅速地將其修復(fù)。嚴(yán)謹(jǐn)?shù)恼{(diào)試技術(shù)與優(yōu)秀的軟件開發(fā)方式之間能夠形成良性的循環(huán),因此,書中的建議對(duì)于你當(dāng)前或者將來要面對(duì)的軟件設(shè)計(jì)、軟件構(gòu)建以及軟件管理工作,是可以起到幫助作用的。
設(shè)計(jì)軟件的時(shí)候,應(yīng)該遵循下列建議:
?使用與其角色相稱的高級(jí)機(jī)制(參見第47條和第66條)。
?提供調(diào)試模式(參見第6條和第40條)。
?提供對(duì)系統(tǒng)操作進(jìn)行監(jiān)控與記錄的機(jī)制(參見第27條、第41條和第56條)。
?提供一個(gè)選項(xiàng),使得開發(fā)者可以用Unix命令行工具來編寫與組件有關(guān)的腳本(參見第22條)。
?把內(nèi)部的錯(cuò)誤暴露出來,使其表現(xiàn)為軟件故障,而不要將其隱藏起來,使其成為軟件中的不穩(wěn)定因素(參見第55條)。
?提供一種方式,使得開發(fā)者能夠在軟件發(fā)生故障之后獲得內(nèi)存轉(zhuǎn)儲(chǔ)(memory dump)信息(參見第35條和第60條)。
?從數(shù)量和范圍方面,盡量縮減軟件在執(zhí)行時(shí)的不確定因素(參見第63條)。
構(gòu)建軟件的時(shí)候,應(yīng)該遵循下列建議:
?征求同事的意見(參見第39條)。
?為你所編寫的每個(gè)例程創(chuàng)建單元測試(參見第42條)。
?用斷言來驗(yàn)證自己所做的假設(shè)是否成立,以及代碼的功能是否正確(參見第43條)。
?盡量把代碼寫得易于維護(hù),也就是要寫出易讀、穩(wěn)定且便于分析和修改的代碼(參見第46條和第48條)。
?在構(gòu)建程序時(shí)避免不確定的因素(參見第52條)。
在對(duì)軟件的開發(fā)及運(yùn)作進(jìn)行管理時(shí),應(yīng)該遵循下列建議(無論是要管理一個(gè)團(tuán)隊(duì),還是只管理自己的流程):
?用適當(dāng)?shù)氖聞?wù)追蹤系統(tǒng),把遇到的問題記錄下來(參見第1條)。
?對(duì)各種有待處理的事務(wù)進(jìn)行分類,并排定其優(yōu)先次序(參見第8條)。
?把對(duì)軟件所做的修改適當(dāng)?shù)赜涗浽谛抻喒芾硐到y(tǒng)中,并且對(duì)該系統(tǒng)進(jìn)行較好的維護(hù)(參見第26條)。
?漸進(jìn)地部署軟件,使得我們可以在新舊版本之間進(jìn)行對(duì)比(參見第5條)。
?盡量采用各種不同的工具來開發(fā),并試著把程序部署在各種環(huán)境中(參見第7條)。
?經(jīng)常對(duì)工具與程序庫進(jìn)行更新(參見第14條)。
?如果使用了第三方的程序庫,那么可以考慮購買該程序庫的源代碼(參見第15條);考慮購買一些較為完善的工具來鎖定那些不太容易找到的錯(cuò)誤(參見第51條、第59條、第62條、第64條及第65條)。
?尋找專門的工具來調(diào)試硬件接口及嵌入式系統(tǒng)(參見第16條)。
?使得開發(fā)者能夠遠(yuǎn)程調(diào)試軟件(參見第18條)。
?對(duì)于消耗資源較多的故障診斷任務(wù)來說,要留出足夠的CPU及磁盤資源(參見第19條)。
?鼓勵(lì)開發(fā)者之間通過代碼評(píng)審及編程指導(dǎo)等手段進(jìn)行協(xié)作(參見第39條)。
?鼓勵(lì)大家進(jìn)行測試驅(qū)動(dòng)開發(fā)(參見第42條)。
?在構(gòu)建軟件的時(shí)候,要做性能分析、靜態(tài)分析以及動(dòng)態(tài)分析(參見第57條、第51條及第59條),并且要打造一套迅速而高效的構(gòu)建流程與測試流程(參見第53條及第11條)。
- Learning Data Mining with Python
- Apache Spark 2 for Beginners
- oreilly精品圖書:軟件開發(fā)者路線圖叢書(共8冊)
- Mastering Swift 2
- FFmpeg入門詳解:音視頻原理及應(yīng)用
- SharePoint Development with the SharePoint Framework
- Spring Boot+Vue全棧開發(fā)實(shí)戰(zhàn)
- Maker基地嘉年華:玩轉(zhuǎn)樂動(dòng)魔盒學(xué)Scratch
- Flink技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理
- R語言實(shí)戰(zhàn)(第2版)
- 3D Printing Designs:The Sun Puzzle
- 軟件測試(慕課版)
- Android應(yīng)用程序設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)與算法詳解
- C#程序開發(fā)參考手冊