在《構(gòu)建之法》的第一章就有醒目的黑體字寫著軟件=程序+軟件工程。作為一名程序員,不能僅僅會(huì)寫代碼,深入了解一個(gè)軟件是通過怎么樣的層層工序制作出來,也是我們應(yīng)當(dāng)重點(diǎn)掌握的。
文中通過生活實(shí)例,啟發(fā)我對(duì)什么是程序,什么是軟件,什么是軟件工程,沒有使用到算法需不需要學(xué)習(xí)、掌握。軟件和算法,數(shù)據(jù)結(jié)構(gòu)有無關(guān)聯(lián)等問題的思考。仔細(xì)想想發(fā)現(xiàn)自己對(duì)這些概念很模糊。通過繼續(xù)往下看,我才漸漸的明白了能滿足各種功能的是應(yīng)用軟件,能保證維修的是軟件服務(wù)…..也了解到了一個(gè)軟件不是簡簡單單就能說寫就寫的,還需要考慮各種因素,如人們的需求,功能的可行性。當(dāng)軟件團(tuán)隊(duì)通過通力合作,克服重重困難寫出軟件后,需要考慮軟件應(yīng)用問題,是免費(fèi)提供他人使用,還是收費(fèi),還是設(shè)有不同的版本再進(jìn)行收費(fèi),這時(shí)候我不僅僅要了解什么是軟件,還需要知道軟件企業(yè)的商業(yè)模式,要好好的遵循軟件行業(yè)的職業(yè)道德規(guī)范。
通過介紹航空的發(fā)展階段,我明白了軟件的發(fā)展和其差不多,一樣需要從有想法到動(dòng)手實(shí)現(xiàn),再到不斷探索,改進(jìn),擴(kuò)大,形成一個(gè)成熟的體系。通過商業(yè)軟件和愛好者程序,明白開發(fā)軟件不能隨心而行,要多從客戶的角度出發(fā),考慮問題,只有充分考慮全面,才能快速解決突發(fā)情況,減少用戶損失。只有自己能善于發(fā)現(xiàn)問題,解決問題時(shí),才能使得自己更進(jìn)一步。
接著給軟件工程下定義,介紹軟件工程的特殊性,講述了軟件工程與計(jì)算機(jī)科學(xué)的關(guān)系,軟件工程的知識(shí)領(lǐng)域,強(qiáng)調(diào)了軟件工程的目標(biāo)——?jiǎng)?chuàng)建“足夠好”的軟件等等,告訴我軟件開發(fā)中應(yīng)用工程化原則的重要性;軟件工程的魅力;不僅僅要學(xué)習(xí)好軟件工程的知識(shí)還要將它和其他學(xué)科聯(lián)合起來學(xué)習(xí)思考,還要多看書,多多了解軟件工程的知識(shí)領(lǐng)域,使自己強(qiáng)大起來;在開發(fā)軟件時(shí),結(jié)合時(shí)間,客戶需求,爭取在最適合的時(shí)刻開發(fā)出“好”的軟件。
VSTS——Visual Studio Team System,是由微軟開發(fā)的一套具有高生產(chǎn)力、高集成性、可擴(kuò)展的生命周期開發(fā)工具。
單元測試是什么?
單元測試是為了讓各個(gè)模塊的質(zhì)量能得到穩(wěn)定的,量化的保證的一種有效解決方案。
好的單元測試的標(biāo)準(zhǔn)是什么?
1.單元測試應(yīng)該在最基本的功能/參數(shù)上驗(yàn)證程序的正確性
2.單元測試必須由最熟悉代碼的人(程序的作者)來寫
3.單元測試過后,機(jī)器狀態(tài)保持不變
4.單元測試要快
5.單元測試應(yīng)該產(chǎn)生可重復(fù),一致的結(jié)果。
6.獨(dú)立性——單元測試的運(yùn)行/通過/失敗不依賴于別的測試,可以人為構(gòu)造數(shù)據(jù),以保持單元測試的獨(dú)立性。
7.單元測試應(yīng)該覆蓋所有代碼路徑。
8.單元測試應(yīng)該集成到自動(dòng)測試的框架中。
9.單元測試必須和產(chǎn)品代碼一起保存和維護(hù)。
回歸測試的目的是什么?
1.驗(yàn)證新的代碼的確改正了缺陷
2.同時(shí)要驗(yàn)證新的代碼有沒有破壞模塊的現(xiàn)有功能,有沒有Regression。
效能分析工具是什么?
兩種分析方法:
1.抽樣:程序運(yùn)行時(shí),VISUAL STUDIO時(shí)不時(shí)看一看這個(gè)程序運(yùn)行在哪一個(gè)函數(shù)內(nèi),記錄下來,最終得到一個(gè)關(guān)于程序運(yùn)行時(shí)間分布的大致印象。
優(yōu)點(diǎn):不需要改動(dòng)程序,運(yùn)行較快,可以很快找到瓶頸。
缺點(diǎn):不能得出精確地?cái)?shù)據(jù),不能準(zhǔn)確表示代碼中的調(diào)用關(guān)系樹。
2.代碼注入:將檢測的代碼加入到每一個(gè)函數(shù)中,這樣程序的一舉一動(dòng)都被記錄在案,程序的各個(gè)效能數(shù)據(jù)都可以被精確地測量。
缺點(diǎn):運(yùn)行時(shí)間大大加長,產(chǎn)生很大的數(shù)據(jù)文件。
一般的做法是先用抽樣的方法找到效能瓶頸所在,然后對(duì)特定的模塊用代碼注入的方法進(jìn)行詳細(xì)分析。
個(gè)人開發(fā)流程(PSP)是什么?
PSP有以下特點(diǎn):
1.不局限于某一種軟件技術(shù),而是著眼于軟件開發(fā)的流程。
2.不依賴于考試,而是靠工程師自己收集數(shù)據(jù),然后分析,提高。
3.PSP依賴于數(shù)據(jù)。
4.PSP的目的是記錄工程書如何實(shí)現(xiàn)需求的效率,而不是記錄顧客對(duì)產(chǎn)品的滿意度。
總結(jié):個(gè)人開發(fā)流程要著眼的是整個(gè)軟件開發(fā)的流程,輸出高質(zhì)量的產(chǎn)品,需要從個(gè)人開發(fā)流程上去找bug,然后不斷修正,工程師才會(huì)成長,產(chǎn)品質(zhì)量才會(huì)不斷提高。