APP開發(fā)
在介紹軟件的特點,開發(fā)流程之前,先來介紹一下軟件的概念。軟件是指是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。一般來說軟件被劃分為系統(tǒng)軟件、應用軟件和介于這兩者之間的中間件。
軟件并不只是包括可以在計算機(這里的計算機是指廣義的計算機)上運行的電腦程序,與這些電腦程序相關的文檔一般也被認為是軟件的一部分。簡單的說軟件就是程序加文檔的集合體。
代理免費咨詢:18715034835 (微信同號)
(項目申報、知識產(chǎn)權代理、軟件開發(fā)、商業(yè)計劃書、工商注冊財稅規(guī)劃、可行性研究報告、體系認證等)
一、軟件的特點
1、無形的,沒有物理形態(tài),只能通過運行狀況來了解功能、特性、和質量
2、軟件滲透了大量的腦力勞動,人的邏輯思維、智能活動和技術水平是軟件產(chǎn)品的關鍵
3、軟件不會像硬件一樣老化磨損,但存在缺陷維護和技術更新
4、軟件的開發(fā)和運行必須依賴于特定的計算機系統(tǒng)環(huán)境,對于硬件有依賴性,為了減少依賴,開發(fā)中提出了軟件的可移植性
5、軟件具有可復用性,軟件開發(fā)出來很容易被復制,從而形成多個副本
二、軟件開發(fā)流程
軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項包括需求捕捉,需求分析,設計,實現(xiàn)和測試的系統(tǒng)工程。軟件一般是用某種程序設計語言來實現(xiàn)的。通常采用軟件開發(fā)工具可以進行開發(fā)。
3.1可行性分析和項目開發(fā)計劃
軟件可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否夠開發(fā),是否值得去開發(fā)。
(1)技術可行性即確定現(xiàn)有資源(軟件、硬件、技術人員)條件下,項目是否能實現(xiàn)。
(2)經(jīng)濟可行性即進行開發(fā)成本的估算以及了解取得經(jīng)濟效益的評估,確定要開發(fā)的項目是否值得投資去開發(fā)。
(3)社會可行性即要開發(fā)的項目是否存在任何侵犯、妨礙等責任問題,要開發(fā)項目的運行方式在用戶組內(nèi)是否行得通,現(xiàn)有管理制度、人員素質、操作方式是否可行。
確定了可行性分析之后就要開始編寫文檔:《可行性研究報告》和《項目開發(fā)計劃》,《項目開發(fā)計劃》是一個管理性文檔,說明項目的各項主要工作,雙方承擔的責任,項目完成期限及其他條件限制的文檔。
3.2需求分析
需求分析是指:開發(fā)人員準確理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳述轉化為完整的需求定義,再由需求定義轉化到相應形式的功能規(guī)約(需求規(guī)格說明書)的過程。
需求分析的任務:
3.2.1問題識別
(1)功能需求:所開發(fā)的軟件必須具備怎樣的功能。
(2)性能需求:待開發(fā)的軟件的技術性能指標。
(3)環(huán)境需求:軟件運行時所需的軟硬件的要求。
(4)用戶界面需求:人機交互方式等。
(5)分析與綜合,導出軟件的邏輯模型,在分析與綜合中,逐步細化軟件功能,劃分各個子功能,用圖文結合的形式,建立系統(tǒng)的邏輯模型。
(6)編寫文檔《需求規(guī)格說明書》:把雙方共同的理解與分析結果用規(guī)范的方式描述出來,作為今后各項工作的基礎。
《初步用戶使用手冊》 :著重反應被開發(fā)軟件的用戶功能界面和用戶使用的具體要求。
《確認測試計劃》 :對原計劃進行適當修整。
3.2.2需求分析方法:結構化分析方法,簡稱SA,是面向數(shù)據(jù)流進行分析的方法。該方法使用簡單易讀的符號,根據(jù)軟件內(nèi)數(shù)據(jù)傳遞、變換的關系,自頂向下逐層分解,描繪出滿足功能要求的軟件模型。
描述工具:數(shù)據(jù)流圖(DFD):以圖形方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的工程。
數(shù)據(jù)字典(DD):為分析人員查找數(shù)據(jù)流圖中有關名字的詳細定義而服務。
3.3概要設計
概要設計是要軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,把軟件需求轉換為軟件表示,描述軟件的總的體系結構。
3.3.1概要設計任務
(1)設計軟件系統(tǒng)結構
采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分為模塊
確定每個模塊的功能
確定模塊之間的調(diào)用關系
確定模塊之間的接口
數(shù)據(jù)結構及數(shù)據(jù)庫設計
對于大型數(shù)據(jù)處理的軟件系統(tǒng),除了控制結構的模塊設計外,數(shù)據(jù)結構與數(shù)據(jù)庫設計也比較重要。
(2)編寫概要設計文檔《概要設計說明書》、《數(shù)據(jù)庫設計說明書》
3.3.2軟件結構設計優(yōu)化準則:
(1)劃分模塊時,盡量做到高內(nèi)聚,低耦合,保持模塊相對獨立性,可將功能過于簡單而又有聯(lián)系的模塊進行合并,合并時消除重復功能。
(2)有判定功能的模塊應與受其影響的模塊在層次上盡量靠近。
軟件結構的深度、寬度、扇入、扇出應適當。
模塊的大小要適中。
模塊的接口要簡單、清晰、含義明確、便于理解、易于實現(xiàn)、測試與維護。
3.4詳細設計
3.4.1詳細設計任務:
為每個模塊進行詳細的算法設計概要設計,將每個模塊的處理過程的詳細算法描述出來。
為模塊內(nèi)的數(shù)據(jù)結構進行設計,對于需求分析,概要設計確定的概念性的數(shù)據(jù)類型進行確切的定義。
對數(shù)據(jù)庫進行物理設計
編寫詳細設計說明書
3.5編碼
編碼即“編程序”,它是在前一階段詳細設計的基礎上進行的。它是詳細設計得到的處理過程的描述轉換為基于某種計算機語言的程序。
3.5.1程序設計語言的選擇:
(1)項目的應用領域
(2)軟件開發(fā)的方法
(3)軟件執(zhí)行的環(huán)境
(4)軟件開發(fā)人員的知識
3.5.2程序設計風格
(1)源程序文檔化(編碼規(guī)范)
(2)數(shù)據(jù)說明(注釋)
(3)語句構造
(4)輸入輸出(結束標志)
(5)效率
3.6測試
測試階段的基本任務是根據(jù)軟件開發(fā)的各階段的文檔資料和程序內(nèi)部結構,精心設計一組測試用例,找出軟件潛在的各種錯誤和缺陷。
3.6.1軟件測試原則:
(1)測試用例應有輸入數(shù)據(jù)和預期的輸出數(shù)據(jù)兩部分組成。
(2)測試用例不僅要選擇合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)
(3)除了檢查程序是否做了它應該做的事,還要檢查程序是否做了它不應該做的事。
(4)長期保留測試用例。
(5)程序員避免測試自己的程序。
3.6.2測試方法:
(1)靜態(tài)測試:不在機器上運行,采用人工檢測和計算機輔助分析的手段對程序進行檢測。
(2)動態(tài)測試:
黑盒測試:測試人員不考慮程序的內(nèi)部結構和處理過程,只在軟件接口進行測試,依據(jù)需求規(guī)格說明書,檢查程序是否滿足功能需求。
白盒測試:測試人員須了解程序的內(nèi)部結構和處理過程,以檢查處理過程的細節(jié)為基礎,對程序中盡可能多的邏輯路徑進行測試,檢查內(nèi)部控制結構和數(shù)據(jù)結構是否有錯,實際的運行狀態(tài)與預期的狀態(tài)是否一致。
3.6.3測試過程:
(1)單元測試:對源程序中每一個程序單元進行測試,檢查各個模塊是否正確實現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯誤。
(2)集成測試:檢查與設計相關的軟件體系結構的有關問題。
(3)確認測試:主要檢查已實現(xiàn)的軟件是否滿足需求規(guī)格說明書中確定了的各種需求。
(4)系統(tǒng)測試:把已確認的軟件與其他系統(tǒng)元素(其他支出軟件、硬件等)結合在一起測試。
3.6.4版本發(fā)布:
分為a、b、c三個階段
(1)a 階段也就是一開始測試的階段,它是由該公司內(nèi)部人員完成,稱為:alpha測試,alpha測試主要看有沒有功能上的缺失或系統(tǒng)錯誤什么的。
(2)b 階段發(fā)布到公網(wǎng)上或以其他途徑發(fā)給普通用戶測試,稱為:beta測試。主要看客戶對軟件外觀,使用方便性等的反應。
(3)c 階段稱為:RC測試,該版本已經(jīng)完成全部功能并清除大部分bug,到這個階段只會去除一小的bug,不會對軟件做任何大的更改。最后正式版發(fā)布,測試階段結束同時會在正式版的軟件名稱加上--final
3.7軟件維護
軟件投入使用后就進行軟件維護階段,是軟件生存周期中時間最長的一個階段。
軟件維護內(nèi)容:
(1)校正性維護:軟件交付使用后,由于軟件開發(fā)過程中產(chǎn)生的錯誤并沒有完全徹底的在程序中發(fā)現(xiàn),這些隱含的錯誤在某些特定的使用環(huán)境下會暴露出來。
(2)適應性維護:隨著計算機的發(fā)展,計算機軟硬件都在不斷變化,數(shù)據(jù)環(huán)境也在發(fā)生變化,為了使應用軟件適應這種變化的過程,稱為適應性維護。
(3)完善性維護:由于用戶對軟件提出新的功能和性能要求而對軟件進行的維護稱為完善性維護。
(4)預防性維護:為提高軟件的可維護性和可靠性而對軟件進行的修改稱為預防性維護。