軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)的過程。它是一項包括需求捕捉、需求分析、設(shè)計、實現(xiàn)和測試的系統(tǒng)工程。詳細(xì)的步驟可包括如市場調(diào)查,需求分析,可行性分析,初步設(shè)計,詳細(xì)設(shè)計,形成文檔,建立初步模型,編寫詳細(xì)代碼,測試修改,發(fā)布等。
軟件是怎么樣開發(fā)出來的
第一個步驟是市場調(diào)研,技術(shù)和市場要結(jié)合才能體現(xiàn)最大價值。
第二個步驟是需求分析,這個階段需要出三樣?xùn)|西,用戶視圖,數(shù)據(jù)詞典和用戶操作手 冊。
用戶視圖 是該軟件用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這里面包含了 很多操作方面的流程和條件。
數(shù)據(jù)詞典 是指明數(shù)據(jù)邏輯關(guān)系并加以整理的東東,完成了數(shù)據(jù)詞典,數(shù)據(jù)庫的設(shè)計就完成了一半多。
用戶操作手冊是指明了操作流程的說明書。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應(yīng)該在軟件設(shè)計之前完成,完成這些,就為程序研發(fā)提供了約束和準(zhǔn)繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發(fā)工作和實際需求往往因此產(chǎn)生隔閡脫節(jié)的現(xiàn)象。
需求分析,除了以上工作,筆者以為作為項目設(shè)計者應(yīng)當(dāng)完整的做出項目的性能需求說明 書,因為往往性能需求只有懂技術(shù)的人才可能理解,這就需要技術(shù)專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設(shè)計,將系統(tǒng)功能模塊初步劃分,并給出合理的研發(fā)流程和資源要求。
作為快速原型設(shè)計方法,完成概要長沙軟件開發(fā)就可以進(jìn)入編碼階段了,通常采用這種方法是因為涉及的研發(fā)任務(wù)屬于新領(lǐng)域,技術(shù)主管人員一上來無法給出明確的詳細(xì)設(shè)計說明書,但是 并不是說詳細(xì)設(shè)計說明書不重要,事實上快速原型法在完成原型代碼后,根據(jù)評測結(jié)果和 經(jīng)驗教訓(xùn)的總結(jié),還要重新進(jìn)行詳細(xì)設(shè)計的步驟。
第四個步驟是詳細(xì)設(shè)計,這是考驗技術(shù)專家設(shè)計思維的重要關(guān)卡,詳細(xì)設(shè)計說明書應(yīng)當(dāng)把 具體的模塊以最’干凈’的方式(黑箱結(jié)構(gòu))提供給編碼者,使得系統(tǒng)整體模塊化達(dá)到最 大;一份好的詳細(xì)設(shè)計說明書,可以使編碼的復(fù)雜性減低到最低,實際上,嚴(yán)格的講詳細(xì) 設(shè)計說明書應(yīng)當(dāng)把每個函數(shù)的每個參數(shù)的定義都精精細(xì)細(xì)的提供出來,從需求分析到概要 設(shè)計到完成詳細(xì)設(shè)計說明書,一個軟件項目就應(yīng)當(dāng)說完成了一半了。換言之,一個大型軟件系統(tǒng)在完成了一半的時候,其實還沒有開始一行代碼工作。
那些把作軟件的程序員簡單理解為寫代碼的,就從根子上犯了錯誤了。
第五個步驟是編碼,在規(guī)范化的長沙軟件定制研發(fā)流程中,編碼工作在整個項目流程里最多不會超過1/ 2,通常在1/3的時間,所謂磨刀不誤砍柴功,設(shè)計過程完成的好,編碼效率就會極大提 高,編碼時不同模塊之間的進(jìn)度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個小模塊的問題就可能影響了整體進(jìn)度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發(fā)過程中都 出現(xiàn)過。
編碼時的相互溝通和應(yīng)急的解決手段都是相當(dāng)重要的,對于程序員而言,bug永遠(yuǎn)存在,你必須永遠(yuǎn)面對這個問題,大名鼎鼎的微軟,可曾有連續(xù)三個月不發(fā)補丁的時候 嗎?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執(zhí)行方,可以分為內(nèi)部測試和外部測試
按照測試范圍,可以分為模塊測試和整體聯(lián)調(diào)
按照測試條件,可以分為正常操作情況測試和異常情況測試
按照測試的輸入范圍,可以分為全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。
總之,測試同樣是項目研發(fā)中一個相當(dāng)重要的步驟,對于一個大型軟件,3個月到1年的外部測試都是正常的,因為永遠(yuǎn)都會又不可預(yù)料的問題存在。
完成測試后,完成驗收并完成最后的一些幫助文檔,整體項目才算告一段落,當(dāng)然日后少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟件的運營狀況并持續(xù)修補升級,直到這個軟件被徹底淘汰為止。
什么是軟件開發(fā)的核心問題
按照軟件工程鼻祖,《人月神話》作者 Brooks 在“沒有銀彈——軟件工程中的根本和次要問題”一章中闡述的思想,軟件開發(fā)的核心問題就是如何從概念上對一個復(fù)雜的業(yè)務(wù)系統(tǒng)進(jìn)行建模。這個建模是含義廣泛的,不僅僅包括對象建模,還包括數(shù)據(jù)建模、算法建模等等一系列的內(nèi)容??偠灾且日业浇鉀Q復(fù)雜問題的突破口(先要搞明白需要做什么,然后再考慮如何做)。至于長沙軟件公司采用什么表示方法(簡單文本、UML 圖、E-R 圖)、采用什么高級語言、是否一定要用面向?qū)ο蟆⑹褂檬裁撮_發(fā)工具都是次要的問題。
軟件開發(fā)方法
軟件開發(fā)方法(Software Development Method)是指軟件開發(fā)過程所遵循的辦法和步驟。
長沙軟件開發(fā)活動的目的是有效地得到一些工作產(chǎn)物,也就是一個運行的系統(tǒng)及其支持文檔,并且滿足有關(guān)的質(zhì)量要求。軟件開發(fā)是一種非常復(fù)雜的腦力勞動,所以經(jīng)常更多討論的是軟件開發(fā)方法學(xué),指的是規(guī)則、方法和工具的集成,既支持開發(fā),也支持以后的演變過程(交付運行后,系統(tǒng)還會變化,或是為了改錯,或是為了功能的增減)。
關(guān)于組成軟件開發(fā)和系統(tǒng)演化的活動有著各種模型(參見軟件生存周期,軟件開發(fā)模型,軟件過程),但是典型地都包含了以下的過程或活動:分析、設(shè)計、實現(xiàn)、確認(rèn)(測試驗收)、演化(維護(hù))。