版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章
軟件開發(fā)概述第1章軟件開發(fā)概述從不同方面深入理解程序及其開發(fā)。首先,認識程序和軟件的區(qū)別,了解不同的軟件分類。其次,理解小程序的編寫與大型軟件的開發(fā)。最后,深入理解軟件構(gòu)造,從編輯-編譯-運行的程序編寫,到設(shè)計-實現(xiàn)-調(diào)試-測試的軟件構(gòu)造。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院2第1章軟件開發(fā)概述1.1程序與軟件1.2軟件生存周期1.3軟件開發(fā)過程1.4敏捷開發(fā)1.5軟件構(gòu)造1.6為什么不直接編寫軟件1.7案例導(dǎo)讀1.8思考與練習(xí)題2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院31.1程序與軟件1.1.1從程序到軟件1.1.2軟件類型1.1.3程序設(shè)計與軟件開發(fā)2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院41.1.1從程序到軟件計算機程序(簡稱程序)是為了解決某個特定問題而用程序設(shè)計語言描述的適合計算機處理的語句序列。軟件是能夠完成預(yù)定功能和性能的可執(zhí)行的程序和使程序正常執(zhí)行所需要的數(shù)據(jù),加上描述軟件開發(fā)過程及其管理、程序的操作和使用的有關(guān)文檔,即“軟件=程序+數(shù)據(jù)+文檔”。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院51.1.1從程序到軟件教學(xué)管理軟件,它通過一組獨立而又交互的程序提供各種教與學(xué)的服務(wù)功能。該教學(xué)管理軟件數(shù)據(jù)有相對穩(wěn)定的學(xué)生、教師、課程、教室等信息;有變動性強的授課信息;以及不斷變化的授課教師發(fā)布的授課/參考材料、作業(yè)及批改、試題及分數(shù)、學(xué)生提交的作業(yè)、師生的答疑等。該軟件還需要各種文檔,如安裝說明書、操作說明書和技術(shù)說明書等。所有這些程序、數(shù)據(jù)和文檔,共同構(gòu)成了這個教學(xué)管理軟件。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院61.1.2軟件類型功能系統(tǒng)軟件、支撐軟件和應(yīng)用軟件。工作方式實時處理軟件、分時軟件、交互式軟件和批處理軟件。服務(wù)對象的范圍項目軟件(定制開發(fā))和產(chǎn)品軟件(或通用軟件)。其他商業(yè)軟件、開源軟件、共享軟件。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院71.1.2軟件類型軟件規(guī)模2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院81.1.2軟件類型隨著軟件變得越來越大、越來越復(fù)雜,軟件開發(fā)的關(guān)注點也發(fā)生了變化。相對于小規(guī)模的程序設(shè)計(ProgrammingintheSmall),提出了大規(guī)模的程序設(shè)計(ProgrammingintheLarge),即軟件開發(fā)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院91.1.3程序設(shè)計與軟件開發(fā)程序設(shè)計是解決特定問題而編寫程序的過程,是軟件生產(chǎn)活動中的重要組成部分。程序設(shè)計以某種程序設(shè)計語言為工具,編寫源程序,然后由編譯系統(tǒng)完成可執(zhí)行代碼的轉(zhuǎn)換。程序設(shè)計的活動包括分析、設(shè)計、編碼、測試、排錯等不同階段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院101.1.3程序設(shè)計與軟件開發(fā)圖靈獎獲得者沃斯(NiclausWirth)提出的“程序=算法+數(shù)據(jù)結(jié)構(gòu)”是程序設(shè)計的精辟觀點。數(shù)據(jù)結(jié)構(gòu)指的是程序處理或應(yīng)用的數(shù)據(jù)與數(shù)據(jù)之間的邏輯關(guān)系。算法指的是解決特定問題的步驟和方法。程序設(shè)計的核心就是選擇和設(shè)計適合特定問題的數(shù)據(jù)結(jié)構(gòu)與算法,用編程語言編制為程序。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院111.1.3程序設(shè)計與軟件開發(fā)在計算機技術(shù)發(fā)展的早期,軟件開發(fā)的主要活動就是程序設(shè)計。隨著程序向軟件的演變,軟件開發(fā)不再只是純粹的程序的功能設(shè)計,還包括數(shù)據(jù)庫設(shè)計、用戶界面設(shè)計、軟件接口設(shè)計、通信協(xié)議設(shè)計和復(fù)雜的系統(tǒng)配置。軟件變得越來越大、越來越復(fù)雜。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院121.1.3程序設(shè)計與軟件開發(fā)軟件變得越來越大、越來越復(fù)雜。圖1.1示意了Linux操作系統(tǒng)的內(nèi)核在10年里從240萬行擴大到接近1600萬行。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院131.1.3程序設(shè)計與軟件開發(fā)程序設(shè)計活動走向軟件工程。軟件工程把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來,以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件。軟件工程是應(yīng)用計算機科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程學(xué)科和活動。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院141.2軟件生存周期一個軟件產(chǎn)品或軟件系統(tǒng)也要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生存周期(軟件生命周期)。軟件的生產(chǎn)者和使用者對軟件生存周期的階段和活動具有不同的理解和劃分。1.2.1使用角度的軟件生存周期1.2.2開發(fā)角度的軟件生存周期2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院151.2.1使用角度的軟件生存周期提出需求。用戶根據(jù)需要,提出要解決的問題和需要的軟件。獲取軟件。主要是對獲取軟件的最佳途徑做出決策并選擇最佳的供應(yīng)商。購買軟件定制或開發(fā)軟件租賃軟件或租賃服務(wù)使用軟件。一旦獲得軟件之后,用戶將操作軟件使之為其服務(wù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院161.2.2開發(fā)角度的軟件生存周期從軟件開發(fā)者的角度,一般把軟件生存周期分為定義軟件、開發(fā)軟件和維護軟件三個階段。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院171.3軟件開發(fā)過程把軟件開發(fā)工作分成若干都有特定結(jié)果的步驟或活動,按照一定的方式開展軟件活動,從而形成了軟件過程。簡單而言,軟件開發(fā)過程是用來生產(chǎn)軟件產(chǎn)品的流程及一系列工具、方法和實踐的集合。軟件過程模型是從一個特殊的視角對軟件開發(fā)過程的簡化描述。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院181.3軟件開發(fā)過程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院191.3軟件開發(fā)過程1.3.1瀑布式開發(fā)過程1.3.2增量開發(fā)模型1.3.3個體軟件過程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院201.3.1瀑布式開發(fā)過程瀑布式開發(fā)過程,也叫軟件生存期模型。按照軟件生命周期,開發(fā)分為制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運行維護等6個基本活動。各項活動嚴格按照線性方式進行,自上而下、相互銜接。每項活動的結(jié)果需要驗證通過后,才能繼續(xù)進行下一項活動。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院211.3.1瀑布式開發(fā)過程核心思想是按工序?qū)栴}化簡,將功能的實現(xiàn)與設(shè)計分開,即采用結(jié)構(gòu)化的分析與設(shè)計方法將邏輯實現(xiàn)與物理實現(xiàn)分開。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院221.3.1瀑布式開發(fā)過程主要問題在于:階段劃分僵硬,每個階段不能缺省,而且產(chǎn)生大量文檔,增加了工作量;開發(fā)是線性的,只有等到整個過程的末期才能見到開發(fā)成果——可運行軟件,不利于快速響應(yīng)變化的需求;早期的錯誤要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),可能帶來嚴重的后果,增加了開發(fā)的風(fēng)險。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院231.3.2增量開發(fā)模型把軟件分成一系列增量,完成一部分就交付一部分。本質(zhì)上是迭代開發(fā)的,即不是一次性執(zhí)行軟件開發(fā)的全部活動,而是有計劃地反復(fù)執(zhí)行“分析-設(shè)計-編碼-測試”的過程。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院241.3.2增量開發(fā)模型增量開發(fā)模型的特點是引進了增量包的概念,無須等到所有需求,只要某個需求明確了,就可進行開發(fā)。增量的類型及其開發(fā)不止一種??尚械姆绞绞鞘紫葘崿F(xiàn)那些明確的、核心的需求;也可以對需求按優(yōu)先級排序,或者按照用戶的要求實現(xiàn)增量。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院251.3.2增量開發(fā)模型增量開發(fā)模型的基本思想是讓開發(fā)者能夠從早期的開發(fā)、系統(tǒng)的增量、交付的版本中學(xué)到經(jīng)驗。過程中的關(guān)鍵是從系統(tǒng)需求的簡單子集實現(xiàn)開始,通過迭代增強和進化后續(xù)的版本,直到系統(tǒng)被實現(xiàn)。每次迭代中,對設(shè)計進行修改,并增加新的功能要求。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院261.3.2增量開發(fā)模型增量開發(fā)模型的優(yōu)點如下:在短時間內(nèi)向用戶提交一個可運行軟件,能夠提供解決用戶急用的一些功能。由于每次只提交部分功能,用戶有較充分的時間學(xué)習(xí)和適應(yīng)新的產(chǎn)品。在開發(fā)過程中,需求的變化是不可避免的。增量開發(fā)模型的靈活性可以使軟件適應(yīng)需求變化。有利于系統(tǒng)維護,因為整個系統(tǒng)是由一個個增量(部件)集成在一起的,當需求變更時,只變更部分部件,而不必影響整個系統(tǒng)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院271.3.2增量開發(fā)模型增量模型存在以下風(fēng)險:由于各個部件是逐漸并入已有軟件的,必須確保每次增加的部件不破壞已構(gòu)造好的系統(tǒng),這需要軟件具備開放式的體系結(jié)構(gòu),否則系統(tǒng)將失去穩(wěn)定的結(jié)構(gòu)。逐步增加部件的方式,很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。在一個軟件開發(fā)中如何一致地定義“增量”?如何界定它的工作量、需求范圍、功能或特性?2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院281.3.2增量開發(fā)模型實踐中,增量開發(fā)模型往往要求在分析了軟件需求以后,在軟件設(shè)計開發(fā)時進行增量。增量開發(fā)最好是在架構(gòu)設(shè)計完成后再開始進行增量,這樣可以更好地保證系統(tǒng)的健壯性和可擴展性。每次迭代過程仍然要遵循“分析→設(shè)計→實現(xiàn)”的微型瀑布過程。迭代周期的長度跟軟件的開發(fā)周期和規(guī)模有關(guān)系。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院291.3.3個體軟件過程美國卡內(nèi)基梅隆大學(xué)軟件工程研究院的漢弗萊(Humphrey)主持開發(fā)了個體軟件過程(PersonalSoftwareProcess,PSP)和團隊軟件過程(TeamSoftwareProcess,TSP)。TSP是為開發(fā)軟件產(chǎn)品的開發(fā)團隊提供的指導(dǎo),在于幫助開發(fā)團隊改善其質(zhì)量和生產(chǎn)率,更好地滿足成本及進度的目標。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院301.3.3個體軟件過程PSP是一種可用于控制、管理和改進個人工作方式的自我持續(xù)改進過程。它是一個包括軟件開發(fā)表格、指南和規(guī)程的結(jié)構(gòu)化框架。PSP與具體的技術(shù)(程序設(shè)計語言、工具或設(shè)計方法)相對獨立,其原則能夠應(yīng)用到任何軟件工程任務(wù)之中。PSP能夠說明個體軟件過程的原則;幫助軟件工程師做出準確的計劃;確定軟件工程師為改善產(chǎn)品質(zhì)量要采取的步驟;建立度量個體軟件過程改善的基準;確定過程的改變對軟件工程師能力的影響。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院311.3.3個體軟件過程PSP為個體的能力也提供了一個階梯式的進化框架,每一級別都包含了更低一級別中的所有元素,并增加了新的元素。借助這個框架,個體可以循序漸進地改進開發(fā)過程。它賦予軟件人員度量和分析工具,使其清楚地認識到自己的表現(xiàn)和潛力,從而可以提高自己的技能和水平。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院321.3.3個體軟件過程PSP0的目的是建立個體過程基線,學(xué)會使用PSP的各種表格采集過程的有關(guān)數(shù)據(jù),執(zhí)行的軟件過程包括計劃、設(shè)計、編碼、編譯和測試。按照選定的缺陷類型標準、度量引入的缺陷個數(shù)和排除的缺陷個數(shù)等,用在測量PSP過程的改進。PSP0.1增加了編碼標準、程序規(guī)模度量和過程改善建議三個關(guān)鍵過程域。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院331.3.3個體軟件過程PSP1的重點是個體計劃,用自己的歷史數(shù)據(jù)來預(yù)測新程序的大小和需要的開發(fā)時間,并使用線性回歸方法計算估計參數(shù),確定置信區(qū)間以評價預(yù)測的可信程度。PSP1.1增加了對任務(wù)和進度的規(guī)劃。在PSP1階段應(yīng)該學(xué)會編制項目開發(fā)計劃,這不僅對承擔大型軟件的開發(fā)十分重要,即使是開發(fā)小型軟件,也必不可少。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院341.3.3個體軟件過程PSP2的重點是個體質(zhì)量管理,根據(jù)程序的缺陷建立檢測表,按照檢測表進行設(shè)計復(fù)查和代碼復(fù)查(也稱“代碼走查”),以便及早發(fā)現(xiàn)缺陷,使修復(fù)缺陷的代價最小。PSP2.1則論述設(shè)計過程和設(shè)計模板,但并不強調(diào)選用什么設(shè)計方法,而強調(diào)設(shè)計完備性準則和設(shè)計驗證技術(shù)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院351.3.3個體軟件過程PSP3的目標是把個體開發(fā)小程序所能達到的生產(chǎn)效率和生產(chǎn)質(zhì)量延伸到大型程序;其方法是采用迭代增量式開發(fā)方法,首先把大型程序分解成小的模塊,然后對每個模塊按照PSP2.1所描述的過程進行開發(fā),最后把這些模塊逐步集成為完整的軟件產(chǎn)品。在新一輪開發(fā)循環(huán)中,可以采用回歸測試。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院361.4敏捷開發(fā)敏捷開發(fā)是從20世紀90年代開始逐漸引起廣泛關(guān)注的一組新型的軟件開發(fā)方法,更強調(diào)程序員團隊與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應(yīng)需求變化的代碼編寫和團隊組織方法,更注重軟件開發(fā)中人的作用。1.4.1概述1.4.2Scrum方法2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院371.4.1概述敏捷開發(fā)是應(yīng)對快速變化的需求的一種軟件開發(fā)能力。以用戶需求進化為核心,采用迭代、循序漸進的方法進行軟件開發(fā)。敏捷開發(fā)采用了更加人性化、個性化的溝通表達方式,特別是使用隱喻而非常規(guī)術(shù)語或形式化技術(shù)。例如,表示和處理需求的用戶故事(UserStory)。再如,sprint指增量開發(fā)的迭代周期,長度通常是一至六周。一個用戶故事的大小和復(fù)雜度應(yīng)該以能在一個sprint中完成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院381.4.1概述敏捷開發(fā)通過宣言表示了它的4個核心價值觀。(1)個體和互動勝過流程和工具。(2)工作的軟件勝過詳盡的文檔。(3)客戶合作勝過合同談判。(4)響應(yīng)變化勝過遵循計劃。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院391.4.1概述所有敏捷開發(fā)方法都遵循下面12條原則。(1)最優(yōu)先要做的是通過盡早地、持續(xù)地交付有價值的軟件滿足客戶需要。(2)即使在開發(fā)后期也歡迎需求的變化,敏捷過程利用變化為客戶創(chuàng)造競爭優(yōu)勢。(3)經(jīng)常交付可以工作的軟件,從幾星期到幾個月,時間越短越好。(4)業(yè)務(wù)人員和開發(fā)人員應(yīng)該在整個項目過程中始終朝夕在一起工作。(5)要善于激勵項目人員,給他們以所需要的環(huán)境和支持,并相信他們能夠完成任務(wù)。(6)在開發(fā)小組中最有效率、也最有效果的信息傳達方式是面對面的交談。(7)工作的軟件是進度的主要度量標準。(8)責任人、開發(fā)者和用戶應(yīng)該維持長期、恒等的開發(fā)節(jié)奏。(9)對卓越技術(shù)與良好設(shè)計的不斷追求將有助于提高敏捷性。(10)簡單——盡可能減少工作量的藝術(shù)——至關(guān)重要。(11)最好的架構(gòu)、需求和設(shè)計都源于自組織的團隊。(12)每隔一定時間,團隊都要總結(jié)、反省工作效率,然后相應(yīng)地調(diào)整自己的行為。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院401.4.1概述基本技術(shù)敏捷方法可以視為一些最佳實踐的集合,包括經(jīng)典的軟件開發(fā)技術(shù)和管理,也包括敏捷開發(fā)首創(chuàng)的技術(shù)和方法。敏捷開發(fā)遵循軟件開發(fā)的基本原則,同時也總結(jié)出了11條面向?qū)ο笤O(shè)計的原則,如單一職責原則(模塊內(nèi)聚的體現(xiàn))、(采納的)Liskov替換原則等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院411.4.1概述基本技術(shù)敏捷開發(fā)主要采用了面向?qū)ο蟮拈_發(fā)技術(shù),使用CRC卡(Class-Responsibility-Collaborator,類-責任-協(xié)作)、用戶用例、設(shè)計模式及UML(UnifiedModellingLanguage,統(tǒng)一建模語言)。但是,敏捷開發(fā)使用UML的符號主要是類圖和時序圖,因為這兩種符號有助于直接編寫出代碼。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院421.4.1概述意圖導(dǎo)向編程意圖導(dǎo)向編程指的是,先假設(shè)當前這個對象中已經(jīng)有了一個理想方法,它可以準確無誤地完成想做的事情,而不是直接盯著每一點要求來編寫代碼。在這個實例中,需要創(chuàng)建一個服務(wù)程序,它接收一個業(yè)務(wù)交易,然后提交。先簡單創(chuàng)建一個對象,它只包含一個公共方法來完成這件事。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院431.4.1概述具體需求如下交易信息開始于一串標準ASCII字符串。信息字符串必須轉(zhuǎn)換成一個字符串的數(shù)組,其值是此次交易用到的領(lǐng)域語言中所包含的詞匯元素(token)。每個詞匯元素必須標準化:第一個字母大寫,其余字母小寫,空格和非字母數(shù)字的符號都要刪掉。超過150個詞匯元素的交易應(yīng)該采用與小型交易不同的方式(不同的算法)來提交,以提高效率。如果提交成功,返回true;否則返回false。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院441.4.1概述2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院451.4.1概述采用“意圖導(dǎo)向編程”的編碼方式,在編程開始時,假設(shè)這些“輔助方法”都已經(jīng)存在,只需先考慮這些“輔助方法”要實現(xiàn)的功能和它們的輸入和輸出,然后按程序要求寫出程序的主框架。最后才是“輔助方法”的編程。這樣的編碼方式使得程序員在整個編程中思路清晰,可以把精力集中在如何分解最終目標,以及那些全局性的問題上。實現(xiàn)的代碼功能單一,易讀易理解。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院461.4.1概述敏捷技術(shù)敏捷開發(fā)也創(chuàng)造了一些新的技術(shù)或?qū)嵺`。如測試驅(qū)動開發(fā)、結(jié)對編程、代碼重構(gòu)和持續(xù)集成。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院471.4.1概述測試驅(qū)動開發(fā)在一個微循環(huán)開發(fā)中,首先確認并自動化進行一個失敗的測試,然后編寫足夠的代碼通過測試,在下一輪前以必要的方式清理代碼。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院481.4.1概述結(jié)對編程兩個程序員在一個計算機上共同工作。一個人輸入代碼,而另一個人審查他輸入的每一行代碼。兩個程序員經(jīng)?;Q角色。代碼重構(gòu)指的是改變程序結(jié)構(gòu)而不改變其行為,以便提高代碼的可讀性、易修改性等。例如,給變量重新命名,把一段代碼提升為函數(shù),把公共的屬性和行為抽象成基類。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院491.4.1概述持續(xù)集成微軟等公司的軟件開發(fā)方法包括每日構(gòu)造產(chǎn)品,持續(xù)集成比它更進一步,只要可能,就把新代碼或變更的代碼合并到應(yīng)用程序,然后測試,確保一切都正常。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院501.4.1概述敏捷開發(fā)是一個統(tǒng)稱,很多軟件開發(fā)方法都認為自己是敏捷的。典型的敏捷開發(fā)方法包括極限編程(ExtremeProgramming,XP)、Scrum、水晶方法(Crystal)、特性驅(qū)動開發(fā)(FeatureDrivenDevelopment,F(xiàn)DD)、動態(tài)系統(tǒng)開發(fā)方法(DynamicSystemsDevelopmentMethod,DSDM)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院511.4.2Scrum方法Scrum是一個用于開發(fā)和維持復(fù)雜軟件產(chǎn)品的框架,是一個增量的、迭代的開發(fā)過程。整個開發(fā)過程由若干短的迭代周期(沖刺Sprint)組成。Scrum使用產(chǎn)品積壓工作(ProductBacklog)來管理產(chǎn)品需求,它是一個按照商業(yè)價值排序的需求列表,列表條目的體現(xiàn)形式為用戶故事。Scrum團隊總是先開發(fā)對客戶具有較高價值的需求。在沖刺中,團隊從產(chǎn)品積壓工作中挑選最高優(yōu)先級的需求進行開發(fā)。挑選的需求在沖刺計劃會議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表,稱為沖刺清單(SprintBacklog)。每個迭代結(jié)束時,團隊將遞交潛在可交付的產(chǎn)品增量。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院521.4.2Scrum方法Scrum框架可以簡化成3個角色、3個工件、5個活動和5個價值。Scrum框架的3個角色是:產(chǎn)品負責人、產(chǎn)品經(jīng)理(ScrumMaster)及團隊。3個工件是產(chǎn)品積壓工作、沖刺清單和燃盡圖(Burn-downChart)。5個活動包括:沖刺計劃會議、每日站會、沖刺評審會議、沖刺回顧會議和產(chǎn)品積壓工作梳理會議。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院531.4.2Scrum方法Scrum的5個價值是:①承諾:愿意對目標做出承諾;②專注:把心思和能力都用到承諾的工作上去;③開放:Scrum把項目中的一切開放給每個人看;④尊重:每個人都有其獨特的背景和經(jīng)驗;⑤勇氣:有勇氣做出承諾、履行承諾、接受別人的尊重。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院541.4.2Scrum方法Scrum的工作流程2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院551.5軟件構(gòu)造1.5.1有關(guān)概念1.5.2構(gòu)造與開發(fā)過程1.5.3主要內(nèi)容1.5.4軟件構(gòu)造的重要性2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院561.5.1有關(guān)概念I(lǐng)EEE計算機學(xué)會于2013年正式發(fā)布了最新的軟件工程知識體系(SWEBOK3.0)指南,提出了構(gòu)成軟件工程學(xué)科的11個實踐知識域,每個知識域分解為子域,子域含若干主題。這11個軟件工程實踐知識域是:軟件需求、軟件設(shè)計、軟件構(gòu)造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程模型與方法、軟件質(zhì)量、軟件工程專業(yè)實踐。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院571.5.1有關(guān)概念“軟件構(gòu)造”指的是通過編碼、驗證、單元測試、集成測試和調(diào)試的組合,詳細地創(chuàng)建可工作的、有意義的軟件。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院581.5.2構(gòu)造與開發(fā)過程構(gòu)造在不同軟件開發(fā)流程或模型中的地位也不一樣。有些流程更加重視構(gòu)造。從構(gòu)造角度看,有些模型側(cè)重于線性化過程——比如瀑布模型、階段交付的生命周期模型。線性化開發(fā)方式更加重視構(gòu)造之前的活動(需求和設(shè)計),并且在這些活動之間建立明確的任務(wù)劃分。在這些模型中,構(gòu)造工作主要就是編碼。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院591.5.2構(gòu)造與開發(fā)過程有些模型是迭代的——如Scrum、極限編程、進化式原型法。這些方式傾向于把構(gòu)造視為與其他軟件開發(fā)(包括需求、設(shè)計和計劃)同時發(fā)生或重疊的活動。這些方式混合設(shè)計、編碼和測試活動,把構(gòu)造當成這些活動的集合體。所以,如何考慮構(gòu)造,在某種程度上依賴于采用的生存周期模型。一般地說,軟件構(gòu)造最主要是編碼和調(diào)試,但也可以包含工作計劃、詳細設(shè)計、單元測試、集成測試,以及其他活動。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院601.5.3主要內(nèi)容軟件構(gòu)造的知識域分為5個子域,每個子域包含了數(shù)量不等的主題。軟件構(gòu)造基礎(chǔ)。管理構(gòu)造。實際考慮。構(gòu)造技術(shù)。軟件構(gòu)造工具。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院611.5.3主要內(nèi)容本書使用的“軟件構(gòu)造”指的是運用軟件最佳實踐,通過設(shè)計、編碼和測試的迭代過程,增量地建造出可運行軟件。本書涵蓋了指南中5個知識子域的大部分主題。通過增量迭代地構(gòu)造一個可運行軟件,用具體的技術(shù)實踐講解了軟件構(gòu)造域的知識主題。此外,本書討論了軟件模塊的構(gòu)造、用戶交互的構(gòu)造及數(shù)據(jù)處理的構(gòu)造。有關(guān)軟件測試、敏捷開發(fā)的技術(shù)、設(shè)計模式包含了比指南更多的內(nèi)容。在開發(fā)階段方面,增加了軟件交付。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院621.5.3主要內(nèi)容本書沒有涵蓋指南的部分主題:管理構(gòu)造子域中的構(gòu)造計劃和構(gòu)造度量;構(gòu)造技術(shù)子域中的可執(zhí)行模型、并發(fā)原語、性能分析與調(diào)優(yōu),也沒有特別處理實時、分布式和異構(gòu)軟件;軟件構(gòu)造工具子域中的性能優(yōu)化、分析、切片工具。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院631.5.3主要內(nèi)容總體而言,本書面向個體,涉及團隊少;以技術(shù)、方法和工具的最佳實踐為主,通過代碼實現(xiàn)學(xué)習(xí)抽象的原則和技術(shù)方法,不涉及管理;采用增量迭代的構(gòu)造方式,不采用任何明確定義的流程或模型;涉及少量的需求和分析,不包含交付之后的活動。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院641.5.4軟件構(gòu)造的重要性構(gòu)造占據(jù)了軟件開發(fā)的大部分工作。研究表明,構(gòu)造占軟件開發(fā)30%~80%的工作時間。而任何占據(jù)項目大量時間的工作一定會深刻地影響項目的成功。構(gòu)造是軟件開發(fā)的中心活動。把重心放在構(gòu)造,能顯著提升個體程序員的生產(chǎn)率。構(gòu)造的產(chǎn)品——源程序代碼,常常是唯一準確的軟件描述。構(gòu)造是確保唯一要完成的活動。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院651.6為什么不直接編寫軟件相對于編程,軟件具有了工程特征。軟件開發(fā)是要跨越分析、設(shè)計、實現(xiàn)、安裝和維護活動的一個可以反復(fù)遵循的、復(fù)雜的過程(工作流程);軟件需要依靠一個團隊的分工合作,需要過程的組織和管理(人員組織與管理);軟件開發(fā)還要運用各種技術(shù)和工具生產(chǎn)出來的產(chǎn)品(工具和自動化)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院661.6為什么不直接編寫軟件1.6.1軟件開發(fā)語言1.6.2編程工具與集成化開發(fā)環(huán)境1.6.3軟件運行環(huán)境1.6.4軟件開發(fā)的最佳實踐1.6.5開發(fā)過程與管理2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院671.6.1軟件開發(fā)語言計算機軟件的編程語言基本被劃分成機器語言/匯編語言的低級語言和與計算機的硬件結(jié)構(gòu)及指令系統(tǒng)無關(guān)的高級(程序)語言。面向?qū)ο笳Z言是目前使用最多的一種語言。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院681.6.1軟件開發(fā)語言按計算模型的劃分聲明式:告訴計算機做什么。函數(shù)式語言邏輯式語言數(shù)據(jù)流語言命令式:告訴計算機應(yīng)該如何做。馮·諾依曼式語言腳本語言面向?qū)ο笳Z言2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院691.6.1軟件開發(fā)語言高級程序語言的一個發(fā)展趨勢是融合各種類型語言的特性。大多數(shù)面向?qū)ο笳Z言都具有馮·諾依曼式語言的結(jié)構(gòu),有些也融合了函數(shù)式編程范式的思想,如Java和C#引入了λ算子等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院701.6.1軟件開發(fā)語言例題1.1:使用歐幾里得算法,編寫計算兩個整數(shù)a和b的最大公因數(shù)的程序gcd。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院711.6.1軟件開發(fā)語言按執(zhí)行模式的劃分高級語言程序不能直接在計算機上運行,必須轉(zhuǎn)換成低級語言的指令后才能運行。按照語言的轉(zhuǎn)換和執(zhí)行方式,高級語言分為編譯型語言和解釋型語言。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院721.6.2編程工具與集成化開發(fā)環(huán)境使用任何語言編程都需要基本的編程工具——軟件開發(fā)工具包(SoftwareDevelopmentKit,SDK),它通常包括編譯程序或解釋程序、調(diào)試程序、連接程序等,如Java的JDK、Android的ADK。編寫程序的工具是普通的文本編輯器,它可以是傳統(tǒng)的正文行編輯器,也可以是面向全屏的圖形編輯器。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院731.6.2編程工具與集成化開發(fā)環(huán)境編寫程序的工具是普通的文本編輯器,它可以是傳統(tǒng)的正文行編輯器,也可以是面向全屏的圖形編輯器。編輯器可以是通用的、與程序語言無關(guān),也可以是具備源程序語言知識的語法制導(dǎo)編輯器或結(jié)構(gòu)化編輯器(如emacs、notepad++)。語法制導(dǎo)編輯工具運用程序語言的語法知識,在用戶編寫程序時按照詞法和語法分析的信息提供若干智能化幫助,包括自動地提供關(guān)鍵字及其匹配的關(guān)鍵字、左右括號的配對、對象的屬性和操作,等等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院741.6.2編程工具與集成化開發(fā)環(huán)境軟件開發(fā)還需要管理各種代碼文件、檢查程序質(zhì)量、測試工具、管理bugs、軟件打包工具等。這些基礎(chǔ)開發(fā)工具通常是行式命令,直接在操作系統(tǒng)中輸入相應(yīng)的命令,如編譯Java程序的編譯命令javac,解釋執(zhí)行Java程序的命令java。也有一些語言直接提供可視化開發(fā)工具。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院751.6.2編程工具與集成化開發(fā)環(huán)境可視化集成開發(fā)環(huán)境IDE,用圖形用戶界面(GraphicalUserInterface,GUI)集成了代碼編寫、靜態(tài)分析、編譯、調(diào)試、連接、打包等功能的一體化軟件開發(fā)套件。如Delphi、VisualStudio、Eclipse和Netbeans,它們以GUI形式提供支持多種語言進行編程,還提供代碼管理、代碼分析、軟件維護、軟件測試及軟件部署和交付等工具,同時支持多種形態(tài)應(yīng)用軟件(通用應(yīng)用程序、Web應(yīng)用、數(shù)據(jù)庫應(yīng)用、移動應(yīng)用)的開發(fā)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院761.6.3軟件運行環(huán)境軟件運行環(huán)境,廣義上說,是一個軟件運行所要求的各種條件,包括軟件環(huán)境和硬件環(huán)境。許多應(yīng)用軟件不僅僅要求特定的硬件條件,還對軟件提出明確的支撐條件。操作系統(tǒng)將計算機的硬件細節(jié)屏蔽,將計算機抽象成虛擬資源。通常把計算機硬件和操作系統(tǒng)稱為平臺。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院771.6.3軟件運行環(huán)境為了能夠使同一種編程語言的程序獨立于操作系統(tǒng),實現(xiàn)程序運行的獨立性,即“一次編寫程序、到處運行”,在操作系統(tǒng)層面提出并出現(xiàn)了語言虛擬機或運行容器。它為程序的運行提供所需的運行時資源,包括把程序翻譯成計算機指令、分配內(nèi)存、通過操作系統(tǒng)調(diào)用計算資源等。例如,Java虛擬機(JavaVirtualMachine,JVM)可以理解成一臺運行Java程序的抽象的計算機。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院781.6.3軟件運行環(huán)境除了計算機硬件和操作系統(tǒng)構(gòu)成的運行平臺,運行軟件還需要支撐環(huán)境,包括使用的數(shù)據(jù)庫管理系統(tǒng)(如Oracle、MySQL、SQLServer)、Web服務(wù)器(如Apache服務(wù)器、微軟的Internet信息服務(wù)器)、應(yīng)用框架(如.NETFramework、Java程序的SSH框架、Web應(yīng)用框架RubyonRails)及使用的第三方庫函數(shù)、類庫、APIs等。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院791.6.4軟件開發(fā)的最佳實踐合適的技術(shù)和方法能提高軟件開發(fā)的效率和產(chǎn)品質(zhì)量。軟件開發(fā)一直缺乏堅實的理論基礎(chǔ)。軟件行業(yè)借用了管理學(xué)的最佳實踐(BestPractice)的概念來概括到達用戶滿意的、可以反復(fù)使用的軟件開發(fā)的一切手段。最佳實踐認為存在某種技術(shù)、方法、過程、活動或機制,可以使生產(chǎn)或管理實踐的結(jié)果達到最優(yōu),并減少出錯的可能性。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院801.6.4軟件開發(fā)的最佳實踐原則是一個已經(jīng)接受或?qū)I(yè)化的指導(dǎo)行動的最高準則或標準。人們總結(jié)、使用了軟件開發(fā)的基本原則、面向?qū)ο笤瓌t等。原則必須通過某種途徑體現(xiàn)出來,才具有指導(dǎo)作用。機制指的是有機體的構(gòu)造、功能及其相互關(guān)系、工作原理,如可視化編程的事件響應(yīng)機制、類型的多態(tài)機制。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院811.6.4軟件開發(fā)的最佳實踐技術(shù)是科學(xué)原理的應(yīng)用,是具有技能特點的特殊的步驟或途徑。軟件開發(fā)技術(shù)是運用了計算機科學(xué)、數(shù)學(xué)、系統(tǒng)科學(xué)、管理科學(xué)的基本原理,進行軟件開發(fā)的方式方法。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院821.6.4軟件開發(fā)的最佳實踐方法是獲得一個客體(對象)的步驟或過程。作為一個系統(tǒng)的步驟、技術(shù)活動被特定的專業(yè)或藝術(shù)采納,是技能或技術(shù)的全部。研究方法及其知識的活動稱為方法學(xué),如面向?qū)ο蠓椒▽W(xué)、軟件方法學(xué)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院831.6.4軟件開發(fā)的最佳實踐工具指的是執(zhí)行操作的器具,引申為為達到、完成或促進某一事物的手段。我們使用更加廣泛的含義,軟件工具指的是從編輯器、編譯器、自動化測試框架到IDE的實用程序。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院841.6.4軟件開發(fā)的最佳實踐軟件開發(fā)的技術(shù)實踐十分豐富,按照開發(fā)活動劃分有用戶需求、軟件設(shè)計、軟件構(gòu)造、軟件測試、軟件交付技術(shù)和方法。每個方面又可以細分,如軟件設(shè)計技術(shù)包括軟件架構(gòu)設(shè)計、構(gòu)件設(shè)計、算法設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計或功能設(shè)計、用戶交互設(shè)計、數(shù)據(jù)庫設(shè)計。這些技術(shù)方法只適合某一個開發(fā)階段或某個軟件組成,也有一些成套的包含技術(shù)、方法和工具,主要是公司內(nèi)部研制和使用(如微軟開發(fā)方法與最佳實踐MSF)。2016秋數(shù)據(jù)科學(xué)與軟件工程學(xué)院851.6.4軟件開發(fā)的最佳實踐按照軟件開發(fā)范式有結(jié)構(gòu)化開發(fā)、面向?qū)ο箝_發(fā)和新興的面向服務(wù)開發(fā)等,側(cè)重在軟件工程活動的前期、以軟件分析和設(shè)計或軟件建模為主。結(jié)構(gòu)化開發(fā)方法是用系統(tǒng)工程的思想和工程化的方法,按用戶至上的原則,結(jié)構(gòu)化、模塊化、自頂向下地對系統(tǒng)進行分析和設(shè)計的方法。2016秋數(shù)據(jù)科學(xué)與軟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)模擬考核試卷含答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)考前沖刺試卷A卷含答案
- 二年級數(shù)學(xué)計算題專項練習(xí)集錦
- (中職組)2019年全國職業(yè)院校技能大賽電子電路裝調(diào)與應(yīng)用
- 2024供應(yīng)商長期合作協(xié)議參考格式
- ICP資質(zhì)申請咨詢與服務(wù)協(xié)議
- 2024安全禽蛋買賣協(xié)議范本
- 2024年磚瓦行業(yè)材料買賣協(xié)議范本
- 2024礦石運輸承包具體協(xié)議樣式
- 房產(chǎn)中介2024居間協(xié)議樣式
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來
- 小學(xué)三年級上冊綜合實踐-6.1昆蟲的美食-(14張)ppt
- 起重機設(shè)計手冊
- 女性生殖系統(tǒng)解剖完整版
- 定量裝車控制系統(tǒng)方案書
- 到貨驗收單(共1頁)
- 吉林市基準地價(2009年)
- 人教版八年級物理上冊全知識點大全
- 破產(chǎn)管理人報酬計算器
- 國家生態(tài)環(huán)境建設(shè)項目管理辦法
- 秦腔傳統(tǒng)劇《草坡面理》
評論
0/150
提交評論