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