你所不知道的軟件開發流程?
電話咨詢
15503299979
微信咨詢

長沙你所不知道的軟件開發流程?

發布時間:2019-11-27 16:52:26作者:總管理員

一、軟件的定義



軟件是指是一系列按照特定順序組織的計算機數據和指令的集合。



一般來說軟件被劃分為系統軟件、應用軟件和介于這兩者之間的中間件。



軟件并不只是包括可以在計算機(這里的計算機是指廣義的計算機)上運行的電腦程序,與這些電腦程序相關的文檔一般也被認為是軟件的一部分。



簡單的說軟件就是程序加文檔的集合體。



二、軟件的特點



1、無形的,沒有物理形態,只能通過運行狀況來了解功能、特性、和質量



2、軟件滲透了大量的腦力勞動,人的邏輯思維、智能活動和技術水平是軟件產品的關鍵



3、軟件不會像硬件一樣老化磨損,但存在缺陷維護和技術更新



4、軟件的開發和運行必須依賴于特定的計算機系統環境,對于硬件有依賴性,為了減少依賴,開發中提出了軟件的可移植性



5、軟件具有可復用性,軟件開發出來很容易被復制,從而形成多個副本



三、軟件開發流程



軟件開發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。



軟件開發是一項包括需求捕捉,需求分析,設計,實現和測試的系統工程。



軟件一般是用某種程序設計語言來實現的。通常采用軟件開發工具可以進行開發。



3.1可行性分析和項目開發計劃



軟件可行性研究的目的就是用最小的代價在盡可能短的時間內確定該軟件項目是否夠開發,是否值得去開發。



(1)技術可行性即確定現有資源(軟件、硬件、技術人員)條件下,項目是否能實現。



(2)經濟可行性即進行開發成本的估算以及了解取得經濟效益的評估,確定要開發的項目是否值得投資去開發。



(3)社會可行性即要開發的項目是否存在任何侵犯、妨礙等責任問題,要開發項目的運行方式在用戶組內是否行得通,現有管理制度、人員素質、操作方式是否可行。



確定了可行性分析之后就要開始編寫文檔:《可行性研究報告》和《項目開發計劃》,《項目開發計劃》是一個管理性文檔,說明項目的各項主要工作,雙方承擔的責任,項目完成期限及其他條件限制的文檔。



3.2需求分析



需求分析是指:開發人員準確理解用戶的要求,進行細致的調查分析;



將用戶非形式的需求陳述轉化為完整的需求定義,再由需求定義轉化到相應形式的功能規約(需求規格說明書)的過程。



3.2.1問題識別



(1)功能需求:所開發的軟件必須具備怎樣的功能。



(2)性能需求:待開發的軟件的技術性能指標。



(3)環境需求:軟件運行時所需的軟硬件的要求。



(4)用戶界面需求:人機交互方式等。



(5)分析與綜合,導出軟件的邏輯模型,在分析與綜合中,逐步細化軟件功能,劃分各個子功能,用圖文結合的形式,建立系統的邏輯模型。



(6)編寫文檔《需求規格說明書》:把雙方共同的理解與分析結果用規范的方式描述出來,作為今后各項工作的基礎。



《初步用戶使用手冊》 :著重反應被開發軟件的用戶功能界面和用戶使用的具體要求。



《確認測試計劃》 : 對原計劃進行適當修整。



3.2.2需求分析方法:結構化分析方法,簡稱SA,是面向數據流進行分析的方法。



該方法使用簡單易讀的符號,根據軟件內數據傳遞、變換的關系,自頂向下逐層分解,描繪出滿足功能要求的軟件模型。



描述工具:數據流圖(DFD):以圖形方式描繪數據在系統中流動和處理的工程



數據字典(DD):為分析人員查找數據流圖中有關名字的詳細定義而服務。



3.3概要設計



概要設計是要軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,把軟件需求轉換為軟件表示,描述軟件的總的體系結構。



3.3.1概要設計任務



(1)設計軟件系統結構



采用某種設計方法,將一個復雜的系統按功能劃分為模塊



●確定每個模塊的功能



●確定模塊之間的調用關系



●確定模塊之間的接口



●數據結構及數據庫設計



對于大型數據處理的軟件系統,除了控制結構的模塊設計外,數據結構與數據庫設計也比較重要。



(2)編寫概要設計文檔《概要設計說明書》、《數據庫設計說明書》



3.3.2軟件結構設計優化準則:



(1)劃分模塊時,盡量做到高內聚,低耦合,保持模塊相對獨立性,可將功能過于簡單而又有聯系的模塊進行合并,合并時消除重復功能。



(2)有判定功能的模塊應與受其影響的模塊在層次上盡量靠近。



●軟件結構的深度、寬度、扇入、扇出應適當。



●模塊的大小要適中。



●模塊的接口要簡單、清晰、含義明確、便于理解、易于實現、測試與維護。



3.4詳細設計



3.4.1詳細設計任務:



●為每個模塊進行詳細的算法設計概要設計,將每個模塊的處理過程的詳細算法描述出來。



●為模塊內的數據結構進行設計,對于需求分析,概要設計確定的概念性的數據類型進行確切的定義。



●對數據庫進行物理設計



●編寫詳細設計說明書



3.5編碼



編碼即“編程序”,它是在前一階段詳細設計的基礎上進行的。



它是詳細設計得到的處理過程的描述轉換為基于某種計算機語言的程序。



3.5.1程序設計語言的選擇:



(1)項目的應用領域



(2)軟件開發的方法



(3)軟件執行的環境



(4)軟件開發人員的知識



3.5.2程序設計風格



(1)源程序文檔化(編碼規范)



(2)數據說明(注釋)



(3)語句構造



(4)輸入輸出(結束標志)



(5)效率



3.6測試



測試階段的基本任務是根據軟件開發的各階段的文檔資料和程序內部結構,精心設計一組測試用例,找出軟件潛在的各種錯誤和缺陷。



3.6.1軟件測試原則:



(1)測試用例應有輸入數據和預期的輸出數據兩部分組成。



(2)測試用例不僅要選擇合理的輸入數據,還要選擇不合理的輸入數據



(3)除了檢查程序是否做了它應該做的事,還要檢查程序是否做了它不應該做的事。



(4)長期保留測試用例。



(5)程序員避免測試自己的程序。



3.6.2測試方法:



(1)靜態測試:不在機器上運行,采用人工檢測和計算機輔助分析的手段對程序進行檢測。



(2)動態測試:



●黑盒測試:測試人員不考慮程序的內部結構和處理過程,只在軟件接口進行測試,依據需求規格說明書,檢查程序是否滿足功能需求。



●白盒測試:測試人員須了解程序的內部結構和處理過程,以檢查處理過程的細節為基礎,對程序中盡可能多的邏輯路徑進行測試;



檢查內部控制結構和數據結構是否有錯,實際的運行狀態與預期的狀態是否一致。



3.6.3測試過程:



(1)單元測試:對源程序中每一個程序單元進行測試,檢查各個模塊是否正確實現規定的功能,從而發現模塊在編碼中或算法中的錯誤。



(2)集成測試:檢查與設計相關的軟件體系結構的有關問題。



(3)確認測試:主要檢查已實現的軟件是否滿足需求規格說明書中確定了的各種需求。



(4)系統測試:把已確認的軟件與其他系統元素(其他支出軟件、硬件等)結合在一起測試。



3.6.4版本發布:分為a、b、c三個階段



(1)a 階段也就是一開始測試的階段,它是由該公司內部人員完成,稱為:alpha測試,alpha測試主要看有沒有功能上的缺失或系統錯誤什么的。



(2)b 階段發布到公網上或以其他途徑發給普通用戶測試,稱為:beta測試。



主要看客戶對軟件外觀,使用方便性等的反應。



(3)c 階段稱為:RC測試,該版本已經完成全部功能并清除大部分bug,到這個階段只會去除一小的bug,不會對軟件做任何大的更改。



最后正式版發布,測試階段結束同時會在正式版的軟件名稱加上--final



3.7軟件維護



軟件投入使用后就進行軟件維護階段,是軟件生存周期中時間最長的一個階段。



軟件維護內容:



(1)校正性維護:軟件交付使用后,由于軟件開發過程中產生的錯誤并沒有完全徹底的在程序中發現,這些隱含的錯誤在某些特定的使用環境下會暴露出來。



(2)適應性維護:隨著計算機的發展,計算機軟硬件都在不斷變化,數據環境也在發生變化,為了使應用軟件適應這種變化的過程,稱為適應性維護。



(3)完善性維護:由于用戶對軟件提出新的功能和性能要求而對軟件進行的維護稱為完善性維護。



(4)預防性維護:為提高軟件的可維護性和可靠性而對軟件進行的修改稱為預防性維護。

六给彩平码是什么意思