先寫一段廢話好了。作為一只又懶又菜的...zhu,果然在第一篇寫完以后,繼續(xù)放任自由了4個半月,終于想起來要干點什么,寫些什么了。
為什么會從《軟件工程》開始呢?雖然求職的時候隨大流一股腦兒地扎進了碼農(nóng)的巨坑,但說起來自己對軟件這個行業(yè)并沒有很系統(tǒng),更不要說深入的了解了,就目前的認知,也僅停留在“開發(fā)就是寫幾行代碼”的階段,這就導(dǎo)致一個很尷尬的問題,跟同樣從事軟件相關(guān)行業(yè),做測試或開發(fā)的小伙伴在一起的時候,每次想要和他們更深入地探討問題時,竟然滿腦子迷茫卻不知如何表達&并不是很明白他們在說什么而且他們好像也不知道我在說什么...為了能制定出更加明確的職業(yè)規(guī)劃,然后更高效、更歡快地抱大腿,痛定思痛的我決定先系統(tǒng)地了解一下整個行業(yè)或者說生產(chǎn)流程。
chapter 1 軟件工程與軟件過程
通過翻看前三章,我覺得作為(測試)菜鳥,先了解一些概念就好。
(1)軟件并不僅僅是程序,而是程序、數(shù)據(jù)及相關(guān)文檔的完整集合;
其中,數(shù)據(jù)是指計算機上運行數(shù)據(jù)時所必需的數(shù)據(jù)
相關(guān)文檔則聯(lián)想到系統(tǒng)測試中,不僅僅要測功能,對功能清單,研制規(guī)范都要進行測試,如果需求中描述不正確、不全面、缺少相關(guān)指標數(shù)據(jù),都是文檔類bug
(2)軟件工程:指導(dǎo)計算機軟件開發(fā)和維護的工程科學(xué)(這是一門專業(yè)!);
軟件工程主要通過回答兩個問題來解決軟件危機:
①如何開發(fā)軟件,滿足日益增長的需求
②如何維護數(shù)量不斷膨脹的已有軟件
(3)軟件生命周期
①問題定義:確定解決什么問題
輸出:系統(tǒng)分析員提出關(guān)于問題性質(zhì)、工程目標和工程規(guī)模的書面報告,并需要得到客戶的確認。
②可行性研究:用最小的代價在最短的時間內(nèi)確定①中確定的問題是否能解決;
包括經(jīng)濟、技術(shù)、社會因素(如法律)等方面的可行性。
③需求分析:與客戶溝通,對目標系統(tǒng)提出完整、準確、具體要求(并不涉及怎樣實現(xiàn)系統(tǒng));
④概要設(shè)計:怎樣設(shè)計系統(tǒng)?提出幾種可能方案,確定解決策略及目標系統(tǒng)中應(yīng)包含的程序(只是概要,不涉及具體實現(xiàn)方法);
⑤詳細設(shè)計:怎樣具體實現(xiàn)這個系統(tǒng),確定實現(xiàn)模塊功能所需算法、數(shù)據(jù)結(jié)構(gòu);
⑥編碼、單元測試
單元測試就是對單個模塊進行測試,一般由開發(fā)自己測
⑦綜合測試:集成測試,驗收測試
自己的一些理解如下
集成測試:軟件設(shè)計角度,關(guān)心功能是否實現(xiàn)
驗收測試(即系統(tǒng)測試?):發(fā)布前的最后一道測試,是站在用戶角度,關(guān)心需求有沒有實現(xiàn)
另外還有交付測試,不是很理解它所處的位置?
⑧軟件維護
軟件產(chǎn)品開發(fā)模式
(1)瀑布型:按照上述8個步驟線性完成,一下子完成所有需求,提交用戶;
(2)快速原型:做好,提交用戶,用戶提出意見,修改,再提交用戶,以此循環(huán)直到用戶完全認可;
(3)增量模型:完成一個需求,提交用戶,再增加第二個需求,提交用戶...;
(4)螺旋模型:可看做在每個階段之前都增加了風(fēng)險分析的快速原型模型;
(5)噴泉模型:迭代
迭代開發(fā)允許在每次迭代過程中需求發(fā)生變化,這種開發(fā)方法通過一系列需求細化來加深對問題的理解,因此能更容易地容納需求變更。
(6)Rational統(tǒng)一過程
(7)敏捷開發(fā):人人都在搞敏捷,不展開了
(8)能力成熟度模型
chapter 2 傳統(tǒng)方法學(xué)
一、結(jié)構(gòu)化分析:用于完成用戶需求分析工作。
這里為了敘述簡潔,把軟件生命周期中的前三項(問題確定、可行性分析、需求分析)合并到需求分析中。因此,需求分析是指發(fā)現(xiàn)、求精、建模、規(guī)格說明和復(fù)審的過程。需求分析第一步是了解用戶所處情況,發(fā)現(xiàn)用戶面臨問題。接下來應(yīng)該通過與用戶交流、對用戶基本需求反復(fù)細化,以得出對目標系統(tǒng)的完整、準確和具體的需求。
(1)詳盡了解并正確理解用戶需求:訪談;
面向團隊的需求收集法:“簡易的應(yīng)用規(guī)格說明技術(shù)”;
快速建立軟件原型是最準確、最有效和最強大的需求分析技術(shù),必須有適當?shù)能浖ぞ咧С挚焖僭图夹g(shù);
(2)為了更好地理解問題,常采用建立模型方法。通常建立數(shù)據(jù)模型、功能模型和行為模型。
這里提到了幾種圖形化技術(shù)
①實體——關(guān)系圖:一般用來建立數(shù)據(jù)模型
②數(shù)據(jù)流圖:描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換,建立目標系統(tǒng)的功能模型
③狀態(tài)轉(zhuǎn)換圖:通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,表示系統(tǒng)的行為,從而提供了行為建模的機制
④數(shù)據(jù)字典:描述在數(shù)據(jù)模型、功能模型和行為模型中出現(xiàn)的數(shù)據(jù)對象和控制信息的特性,給出這些對象的精確定義。
(3)寫出“軟件需求規(guī)格說明”,認真評審后得到用戶認可,這也是這階段最終成果;
看理論類的書籍難免枯燥,出于了解的心態(tài),只是貼了一堆概念在這里,目的是為了以后需要查找某個似曾相識的名詞時能快速明白,不用到浩瀚厚重的工具書中去摸索。
對,說白了就是懶...