软件工程——认识方法、模型、工具和技术
做任何事情都要講究一個(gè)方法,好的方法可以起到事半功倍的效果,提高我們的做事效率。在我們身邊,有的人做事效率很高,處理事情井井有條;有的人做事效率就比較低下,處理事情拖拖拉拉。做事效率低下的人不代表他們的工作能力就差,而是沒(méi)有一個(gè)好的做事方法,來(lái)指導(dǎo)他們?nèi)绾稳ヌ幚砀黝愂虑椤?/p>
在20世紀(jì)初,伯利恒鋼鐵公司的創(chuàng)始人查爾斯·施瓦布為了提高團(tuán)隊(duì)的工作效率,約見(jiàn)了當(dāng)時(shí)頗有名望的工作效率顧問(wèn)艾維·李,謀求提高團(tuán)隊(duì)工作效率的方法。艾維·李經(jīng)過(guò)細(xì)致調(diào)研后,給出了提高團(tuán)隊(duì)工作效率的方法:
1、每天列出一張數(shù)目不超過(guò)六項(xiàng)的待辦事項(xiàng)清單;
2、給清單上的待辦事項(xiàng)按照重要程度排序;
3、按照排序依次處理清單上的待辦事項(xiàng);
4、清單上的待辦事項(xiàng)如果當(dāng)天沒(méi)有完成,沒(méi)完成的事項(xiàng)放入第二天的待辦事項(xiàng)清單,待辦事項(xiàng)數(shù)目依然不能超過(guò)六項(xiàng);
5、每天重復(fù)上述過(guò)程。
施瓦布和他的團(tuán)隊(duì)在工作中使用這個(gè)方法后,取得了非常好的效果,工作效率得到很大提升,這就是方法的作用。
?
什么是系統(tǒng)開(kāi)發(fā)方法?
開(kāi)發(fā)軟件項(xiàng)目是一個(gè)非常復(fù)雜的過(guò)程,涉及到開(kāi)發(fā)團(tuán)隊(duì)(研發(fā)人員)、用戶(最終使用軟件的人)、軟件功能、硬件(運(yùn)行軟件的計(jì)算機(jī)、服務(wù)器、手機(jī)等)、數(shù)據(jù)(數(shù)據(jù)庫(kù)、音視頻、圖片、文檔等)、網(wǎng)絡(luò)(網(wǎng)絡(luò)協(xié)議、互聯(lián)網(wǎng))等眾多相關(guān)資源。
大多數(shù)開(kāi)發(fā)者最初拿到的僅僅是招標(biāo)書(shū)、合同、項(xiàng)目基本需求等文檔,這些文檔對(duì)軟件功能和資源的需求描述都是對(duì)現(xiàn)實(shí)問(wèn)題域的描述,不能直接映射到在計(jì)算機(jī)中可運(yùn)行的軟件結(jié)構(gòu),而且現(xiàn)實(shí)問(wèn)題域的內(nèi)容在團(tuán)隊(duì)溝通中也會(huì)出現(xiàn)大問(wèn)題,團(tuán)隊(duì)成員對(duì)問(wèn)題域的理解可能不盡相同,導(dǎo)致開(kāi)發(fā)出的軟件功能,與招標(biāo)書(shū)、合同規(guī)定的軟件要求會(huì)有較大差異。
最好的方法是細(xì)化招標(biāo)書(shū)、合同、項(xiàng)目基本需求等文檔提出的軟件功能和資源需求,并通過(guò)模型、工具和技術(shù)將文檔中實(shí)現(xiàn)的問(wèn)題域,映射為可以被編程語(yǔ)言識(shí)別的軟件結(jié)構(gòu),這個(gè)映射過(guò)程就是項(xiàng)目的開(kāi)發(fā)方法,也稱為系統(tǒng)開(kāi)發(fā)方法。
系統(tǒng)開(kāi)發(fā)方法提供完成系統(tǒng)開(kāi)發(fā)生命周期每一步的詳細(xì)指導(dǎo),包括具體的模型、工具、技術(shù)。系統(tǒng)開(kāi)發(fā)方法呈現(xiàn)出來(lái)就是一些文檔,這些文檔規(guī)定了在項(xiàng)目開(kāi)發(fā)過(guò)程中具體要做的工作。例如,項(xiàng)目開(kāi)發(fā)遵循的過(guò)程、如何建立需求和設(shè)計(jì)模型,如何書(shū)寫(xiě)文檔等等。
?
什么是模型?
模型是現(xiàn)實(shí)世界中事務(wù)的表示和抽象。一些模型在外觀上類似于真實(shí)產(chǎn)品,如飛機(jī)模型、汽車(chē)模型等等;一些模型使用繪圖進(jìn)行描述,如圖紙、AutoCAD建筑模型等;一些模型則是抽象的數(shù)學(xué)符號(hào),如數(shù)學(xué)公式等。在建筑設(shè)計(jì)中,建筑工程師使用AutoCAD繪制大量不同的建筑模型,因此要成為一名建筑工程師需要學(xué)會(huì)創(chuàng)建和使用各種模型。
對(duì)于軟件開(kāi)發(fā)來(lái)說(shuō),建立軟件模型也非常重要。軟件模型雖然不像飛機(jī)模型和建筑模型那樣標(biāo)準(zhǔn)或精確,但也需要通過(guò)模型能夠明確表達(dá)出軟件的功能、過(guò)程、系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、輸入與輸出等內(nèi)容。大多數(shù)的軟件模型是圖形模型,包括使用公認(rèn)的符號(hào)和慣例畫(huà)表示圖,這些模型統(tǒng)稱為圖表,流程圖也是一種軟件模型,用流程圖可以表示軟件程序模塊的邏輯結(jié)構(gòu)。
常用的軟件模型有流程圖、數(shù)據(jù)流圖(DFD)、實(shí)體-聯(lián)系圖(ER)、結(jié)構(gòu)圖、用例圖、類圖、順序圖、部署圖。用于管理軟件開(kāi)發(fā)過(guò)程的一些模型有PERT圖、甘特圖、組織層次圖等。
?
什么是工具?
軟件模型需要借助工具來(lái)繪制和生成,就像建筑模型需要用AutoCAD來(lái)繪制一樣。工具也許是創(chuàng)建圖表的簡(jiǎn)單繪圖程序,也許包括一些存儲(chǔ)關(guān)于項(xiàng)目信息的數(shù)據(jù)庫(kù)應(yīng)用程序,例如Visio繪圖程序、Microsoft Project項(xiàng)目管理程序等等。有些工具是為軟件開(kāi)發(fā)而專門(mén)設(shè)計(jì)的,如程序員比較熟悉的Eclipse、Microsoft Visual Studio等集成開(kāi)發(fā)環(huán)境(IDE),集成開(kāi)發(fā)環(huán)境提供了許多工具幫助程序員進(jìn)行編程,例如代碼編輯器、上下文相關(guān)幫助和調(diào)試工具。
?
什么是技術(shù)?
技術(shù)是一組方法的組合,這組方法可以幫助開(kāi)發(fā)者完成軟件開(kāi)發(fā)活動(dòng)或任務(wù)。例如軟件測(cè)試技術(shù)貫穿整個(gè)軟件開(kāi)發(fā)生命周期、對(duì)軟件產(chǎn)品進(jìn)行驗(yàn)證和確認(rèn)。軟件測(cè)試技術(shù)包括回歸測(cè)試法、壓力測(cè)試法、性能測(cè)試法等多種測(cè)試方法的組合。
?
小結(jié)
1、方法如何把模型、工具和技術(shù)組合在一起呢?方法包括一組用來(lái)完成軟件開(kāi)發(fā)每一階段活動(dòng)的技術(shù)。這些活動(dòng)包括完成各種模型以及其它文檔和交付資料。開(kāi)發(fā)者使用軟件工具來(lái)幫助他們完成這些活動(dòng)。下圖給出了方法、模型、工具和技術(shù)之間的關(guān)系。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
2、技術(shù)和方法的關(guān)系。技術(shù)和方法的關(guān)系是我中有你,你中有我。在開(kāi)發(fā)方法中包含了多個(gè)技術(shù),在每個(gè)技術(shù)中又包含了多個(gè)方法。易學(xué)中的陰陽(yáng)圖給出了很好的解釋,圖中陰陽(yáng)雙魚(yú)象征陰陽(yáng)之間本為一體,然相互對(duì)立,互動(dòng)消長(zhǎng),你中有我,我中有你。
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的软件工程——认识方法、模型、工具和技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么Docker容器将占领世界
- 下一篇: 使用redis批量生成主键(订单)Id