<ruby id="zu2jb"><table id="zu2jb"></table></ruby>

          <progress id="zu2jb"></progress>
        1. <strong id="zu2jb"><pre id="zu2jb"></pre></strong>

          火鷹視角

          關(guān)注互聯(lián)網(wǎng),關(guān)注技術(shù)開(kāi)發(fā),透析與分享移動(dòng)互聯(lián)網(wǎng)行業(yè)最新動(dòng)態(tài)
          當前位置: 網(wǎng)站首頁(yè) > > 軟件開(kāi)發(fā)到底是在做什么?

          軟件開(kāi)發(fā)到底是在做什么?

          時(shí)間:時(shí)間: 2021-12-06 17:42:47   閱讀: 次 分類(lèi):APP開(kāi)發(fā)
          軟件開(kāi)發(fā)是根據用戶(hù)要求建造出軟件系統或者系統中軟件部分的一個(gè)產(chǎn)品開(kāi)發(fā)的過(guò)程。軟件開(kāi)發(fā)是一項包括需求獲取、開(kāi)發(fā)規劃、需求分析和設計、編程實(shí)現、軟件測試、版本控制的系統工程。換句話(huà)說(shuō),軟件開(kāi)發(fā)就是一系列最終構建出軟件產(chǎn)品的活動(dòng)。

          一、基本定義

          軟件開(kāi)發(fā)是根據用戶(hù)要求建造出軟件系統或者系統中軟件部分的一個(gè)產(chǎn)品開(kāi)發(fā)的過(guò)程。軟件開(kāi)發(fā)是一項包括需求獲取、開(kāi)發(fā)規劃、需求分析和設計、編程實(shí)現、軟件測試、版本控制的系統工程。換句話(huà)說(shuō),軟件開(kāi)發(fā)就是一系列最終構建出軟件產(chǎn)品的活動(dòng)。

          二、階段劃分

          1、計劃

          對所要解決的問(wèn)題進(jìn)行總體定義,包括了解用戶(hù)的要求及現實(shí)環(huán)境,從技術(shù)、經(jīng)濟和社會(huì )因素等3個(gè)方面研究并論證本軟件項目的可行性,編寫(xiě)可行性研究報告,探討解決問(wèn)題的方案,并對可供使用的資源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開(kāi)發(fā)進(jìn)度作出估計,制訂完成開(kāi)發(fā)任務(wù)的實(shí)施計劃。

          2、分析

          軟件需求分析就是對開(kāi)發(fā)什么樣的軟件的一個(gè)系統的分析與設想。它是一個(gè)對用戶(hù)的需求進(jìn)行去粗取精、去偽存真、正確理解,然后把它用軟件工程開(kāi)發(fā)語(yǔ)言(形式功能規約,即需求規格說(shuō)明書(shū))表達出來(lái)的過(guò)程。本階段的基本任務(wù)是和用戶(hù)一起確定要解決的問(wèn)題,建立軟件的邏輯模型,編寫(xiě)需求規格說(shuō)明書(shū)文檔并最終得到用戶(hù)的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說(shuō)明書(shū)的要求,設計建立相應的軟件系統的體系結構,并將整個(gè)系統分解成若干個(gè)子系統或模塊,定義子系統或模塊間的接口關(guān)系,對各子系統進(jìn)行具體設計定義,編寫(xiě)軟件概要設計和詳細設計說(shuō)明書(shū),數據庫或數據結構設計說(shuō)明書(shū),組裝測試計劃。在任何軟件或系統開(kāi)發(fā)的初始階段必須先完全掌握用戶(hù)需求,以期能將緊隨的系統開(kāi)發(fā)過(guò)程中哪些功能應該落實(shí)、采取何種規格以及設定哪些限制優(yōu)先加以定位。系統工程師最終將據此完成設計方案,在此基礎上對隨后的程序開(kāi)發(fā)、系統功能和性能的描述及限制作出定義。

          3、設計

          軟件設計可以分為概要設計和詳細設計兩個(gè)階段。實(shí)際上軟件設計的主要任務(wù)就是將軟件分解成模塊,然后進(jìn)行模塊設計。模塊是指能實(shí)現某個(gè)功能的數據和程序說(shuō)明、可執行程序的程序單元??梢允且粋€(gè)函數、過(guò)程、子程序、一段帶有程序說(shuō)明的獨立的程序和數據,也可以是可組合、可分解和可更換的功能單元。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務(wù)就是設計模塊的程序流程、算法和數據結構,次要任務(wù)就是設計數據庫,常用方法還是結構化程序設計方法。

          4、編碼

          軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫(xiě)成以某一程序設計語(yǔ)言表示的“源程序清單”。充分了解軟件開(kāi)發(fā)語(yǔ)言、工具的特性和編程風(fēng)格,有助于開(kāi)發(fā)工具的選擇以及保證軟件產(chǎn)品的開(kāi)發(fā)質(zhì)量。

          5、測試

          軟件測試的目的是以較小的代價(jià)發(fā)現盡可能多的錯誤。要實(shí)現這個(gè)目標的關(guān)鍵在于設計一套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。如何才能設計出一套出色的測試用例,關(guān)鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法分別是白盒法和黑盒法,白盒法測試對象是源程序,依據的是程序內部的邏輯結構來(lái)發(fā)現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。白盒法用例設計的關(guān)鍵是以較少的用例覆蓋盡可能多的內部程序邏輯結果。黑盒法依據的是軟件的功能或軟件行為描述,發(fā)現軟件的接口、功能和結構錯誤。其中接口錯誤包括內部/外部接口、資源管理、集成化以及系統錯誤。黑盒法用例設計的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。

          6、維護

          維護是指在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以后,對軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。即根據軟件運行的情況,對軟件進(jìn)行適當修改,以適應新的要求,以及糾正運行中發(fā)現的錯誤。編寫(xiě)軟件問(wèn)題報告、軟件修改報告。

          三、典型的軟件開(kāi)發(fā)模型


          軟件開(kāi)發(fā)模型是指軟件開(kāi)發(fā)全部過(guò)程、活動(dòng)和任務(wù)的結構框架。它能清晰、直觀(guān)地表達軟件開(kāi)發(fā)全過(guò)程,明確規定要完成的主要活動(dòng)和任務(wù),用來(lái)作為軟件項目工作的基礎。

          1、邊做邊改模型(Build-and-Fix Model)

          在這個(gè)模型中,開(kāi)發(fā)人員拿到項目立即根據需求編寫(xiě)程序,調試通過(guò)后生成軟件的第一個(gè)版本。在提供給用戶(hù)使用后,如果程序出現錯誤,或者用戶(hù)提出新的要求,開(kāi)發(fā)人員就重新修改代碼,直到用戶(hù)滿(mǎn)意為止。

          這種開(kāi)發(fā)方式對編寫(xiě)幾百行的小程序來(lái)說(shuō)還不錯,但對任何規模的開(kāi)發(fā)來(lái)說(shuō)都不能令人滿(mǎn)意,主要問(wèn)題在于:

          ⑴、缺少規劃和設計環(huán)節,軟件的結構隨著(zhù)不斷的修改越來(lái)越糟,導致無(wú)法繼續修改;

          ⑵、忽略需求環(huán)節,給軟件開(kāi)發(fā)帶來(lái)很大的風(fēng)險;

          ⑶、沒(méi)有考慮測試和程序的可維護性,也沒(méi)有任何文檔,軟件的維護十分困難。

          2、瀑布模型(Waterfall Model)

          1970年溫斯頓·羅伊斯提出了著(zhù)名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開(kāi)發(fā)模型。

          瀑布模型將軟件生命周期劃分為制定計劃、需求分析、軟件設計、程序編寫(xiě)、軟件測試和運行維護等六個(gè)基本活動(dòng),并且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。

          在瀑布模型中,軟件開(kāi)發(fā)的各項活動(dòng)嚴格按照線(xiàn)性方式進(jìn)行,當前活動(dòng)接受上一項活動(dòng)的工作結果,實(shí)施完成所需的工作內容。當前活動(dòng)的工作結果需要進(jìn)行驗證,如果驗證通過(guò),則該結果作為下一項活動(dòng)的輸入,繼續進(jìn)行下一項活動(dòng),否則返回修改。

          瀑布模型強調文檔的作用,并要求每個(gè)階段都要仔細驗證。但是,這種模型的線(xiàn)性過(guò)程太理想化,已不再適合現代的軟件開(kāi)發(fā)模式,幾乎被業(yè)界拋棄,其主要問(wèn)題在于:

          ⑴、各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量;

          ⑵、由于開(kāi)發(fā)模型是線(xiàn)性的,用戶(hù)只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而增加了開(kāi)發(fā)的風(fēng)險;

          ⑶、早期的錯誤可能要等到開(kāi)發(fā)后期的測試階段才能發(fā)現,進(jìn)而帶來(lái)嚴重的后果。

          3、快速原型模型(Rapid Prototype Model)

          快速原型模型的第一步是建造一個(gè)快速原型,實(shí)現客戶(hù)或未來(lái)的用戶(hù)與系統的交互,用戶(hù)或客戶(hù)對原型進(jìn)行評價(jià),進(jìn)一步細化待開(kāi)發(fā)軟件的需求。通過(guò)逐步調整原型使其滿(mǎn)足客戶(hù)的要求,開(kāi)發(fā)人員可以確定客戶(hù)的真正需求是什么;第二步則在第一步的基礎上開(kāi)發(fā)客戶(hù)滿(mǎn)意的軟件產(chǎn)品。 顯然,快速原型方法可以克服瀑布模型的缺點(diǎn),減少由于軟件需求不明確帶來(lái)的開(kāi)發(fā)風(fēng)險,具有顯著(zhù)的效果。 快速原型的關(guān)鍵在于盡可能快速地建造出軟件原型,一旦確定了客戶(hù)的真正需求,所建造的原型將被丟棄。因此,原型系統的內部結構并不重要,重要的是必須迅速建立原型,隨之迅速修改原型,以反映客戶(hù)的需求。

          4、增量模型(Incremental Model)

          與建造大廈相同,軟件也是一步一步建造起來(lái)的。在增量模型中,軟件被作為一系列的增量構件來(lái)設計、實(shí)現、集成和測試,每一個(gè)構件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構成。

          增量模型在各個(gè)階段并不交付一個(gè)可運行的完整產(chǎn)品,而是交付滿(mǎn)足客戶(hù)需求的一個(gè)子集的可運行產(chǎn)品。整個(gè)產(chǎn)品被分解成若干個(gè)構件,開(kāi)發(fā)人員逐個(gè)構件地交付產(chǎn)品,這樣做的好處是軟件開(kāi)發(fā)可以較好地適應變化,客戶(hù)可以不斷地看到所開(kāi)發(fā)的軟件,從而降低開(kāi)發(fā)風(fēng)險。但是,增量模型也存在以下缺陷:


          ⑴、由于各個(gè)構件是逐漸并入已有的軟件體系結構中的,所以加入構件必須不破壞已構造好的系統部分,這需要軟件具備開(kāi)放式的體系結構。

          ⑵、在開(kāi)發(fā)過(guò)程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而使軟件過(guò)程的控制失去整體性。

          5、螺旋模型(Spiral Model)

          1988年,巴利·玻姆Barry Boehm正式發(fā)表了軟件系統開(kāi)發(fā)的“螺旋模型”,它將瀑布模型和快速原型模型結合起來(lái),強調了其他模型所忽視的風(fēng)險分析,特別適合于大型復雜的系統。

          螺旋模型由風(fēng)險驅動(dòng),強調可選方案和約束條件從而支持軟件的重用,有助于將軟件質(zhì)量作為特殊目標融入產(chǎn)品開(kāi)發(fā)之中。但是,螺旋模型也有一定的限制條件,具體如下:

          ⑴、螺旋模型強調風(fēng)險分析,但要求許多客戶(hù)接受和相信這種分析,并做出相關(guān)反應是不容易的,因此,這種模型往往適應于內部的大規模軟件開(kāi)發(fā)。

          ⑵、如果執行風(fēng)險分析將大大影響項目的利潤,那么進(jìn)行風(fēng)險分析毫無(wú)意義,因此,螺旋模型只適合于大規模軟件項目。

          ⑶、軟件開(kāi)發(fā)人員應該擅長(cháng)尋找可能的風(fēng)險,準確地分析風(fēng)險,否則將會(huì )帶來(lái)更大的風(fēng)險。

          6、演化模型(evolutionary model)

          主要針對事先不能完整定義需求的軟件開(kāi)發(fā)。用戶(hù)可以給出待開(kāi)發(fā)系統的核心需求,并且當看到核心需求實(shí)現后,能夠有效地提出反饋,以支持系統的最終設計和實(shí)現。軟件開(kāi)發(fā)人員根據用戶(hù)的需求,首先開(kāi)發(fā)核心系統。當該核心系統投入運行后,用戶(hù)試用之,完成他們的工作,并提出精化系統、增強系統能力的需求。軟件開(kāi)發(fā)人員根據用戶(hù)的反饋,實(shí)施開(kāi)發(fā)的迭代過(guò)程。第一迭代過(guò)程均由需求、設計、編碼、測試、集成等階段組成,為整個(gè)系統增加一個(gè)可定義的、可管理的子集。 在開(kāi)發(fā)模式上采取分批循環(huán)開(kāi)發(fā)的辦法,每循環(huán)開(kāi)發(fā)一部分的功能,它們成為這個(gè)產(chǎn)品的原型的新增功能。于是,設計就不斷地演化出新的系統。 實(shí)際上,這個(gè)模型可看作是重復執行的多個(gè)“瀑布模型”。

          7、噴泉模型(fountain model, (面向對象的生存期模型, 面向對象(Object Oriented,OO)模型))


          噴泉模型與傳統的結構化生存期比較,具有更多的增量和迭代性質(zhì),生存期的各個(gè)階段可以相互重疊和多次反復,而且在項目的整個(gè)生存期中還可以嵌入子生存期。就像水噴上去又可以落下來(lái),可以落在中間,也可以落在最底部。

          8、智能模型(四代技術(shù)(4GL))

          智能模型擁有一組工具(如數據查詢(xún)、報表生成、數據處理、屏幕定義、代碼生成、高層圖形功能及電子表格等),每個(gè)工具都能使開(kāi)發(fā)人員在高層次上定義軟件的某些特性,并把開(kāi)發(fā)人員定義的這些軟件自動(dòng)地生成為源代碼。這種方法需要四代語(yǔ)言(4GL)的支持。4GL不同于三代語(yǔ)言,其主要特征是用戶(hù)界面極端友好,即使沒(méi)有受過(guò)訓練的非專(zhuān)業(yè)程序員,也能用它編寫(xiě)程序;它是一種聲明式、交互式和非過(guò)程性編程語(yǔ)言。4GL還具有高效的程序代碼、智能缺省假設、完備的數據庫和應用程序生成器。目前市場(chǎng)上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事務(wù)信息系統的中、小型應用程序的開(kāi)發(fā)。

          9、混合模型(hybrid model)

          過(guò)程開(kāi)發(fā)模型又叫混合模型(hybrid model),或元模型(meta-model),把幾種不同模型組合成一種混合模型,它允許一個(gè)項目能沿著(zhù)最有效的路徑發(fā)展,這就是過(guò)程開(kāi)發(fā)模型(或混合模型)。實(shí)際上,一些軟件開(kāi)發(fā)單位都是使用幾種不同的開(kāi)發(fā)方法組成他們自己的混合模型。


          火鷹科技-移動(dòng)應用開(kāi)發(fā)/app開(kāi)發(fā)/小程序開(kāi)發(fā)
          客服咨詢(xún)
          立即報價(jià)
          熱線(xiàn)電話(huà)
          掃描二維碼
          返回頂部
          精品永久免费视频_日韩AV一级毛片无码_国产人成午夜免费看_亚洲∧V久久久无码精品
            <ruby id="zu2jb"><table id="zu2jb"></table></ruby>

                  <progress id="zu2jb"></progress>
                1. <strong id="zu2jb"><pre id="zu2jb"></pre></strong>