軟件開(kāi)發可以分(fēn)爲下(xià)面6個流程:
1計劃
對所要解決的問題進行總體(tǐ)定義,包括了解用戶的要求及現實環境,從技術、經濟和社會因素等3個方面研究并論證本軟件項目的可行性,編寫可行性研究報告,探讨解決問題的方案,并對可供使用的資(zī)源(如計算機硬件、系統軟件、人力等)成本,可取得的效益和開(kāi)發進度作出估計,制訂完成開(kāi)發任務的實施計劃。
2分(fēn)析
軟件需求分(fēn)析就是對開(kāi)發什麽樣的軟件的一(yī)個系統的分(fēn)析與設想。它是一(yī)個對用戶的需求進行去(qù)粗取精、去(qù)僞存真、正确理解,然後把它用軟件工(gōng)程開(kāi)發語言(形式功能規約,即需求規格說明書(shū))表達出來的過程。本階段的基本任務是和用戶一(yī)起确定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書(shū)文檔并最終得到用戶的認可。需求分(fēn)析的主要方法有結構化分(fēn)析方法、數據流程圖和數據字典等方法。本階段的工(gōng)作是根據需求說明書(shū)的要求,設計建立相應的軟件系統的體(tǐ)系結構,并将整個系統分(fēn)解成若幹個子系統或模塊,定義子系統或模塊間的接口關系,對各子系統進行具體(tǐ)設計定義,編寫軟件概要設計和詳細設計說明書(shū),數據庫或數據結構設計說明書(shū),組裝測試計劃。在任何軟件或系統開(kāi)發的初始階段必須先完全掌握用戶需求,以期能将緊随的系統開(kāi)發過程中(zhōng)哪些功能應該落實、采取何種規格以及設定哪些限制優先加以定位。系統工(gōng)程師最終将據此完成設計方案,在此基礎上對随後的程序開(kāi)發、系統功能和性能的描述及限制作出定義。
3設計
軟件設計可以分(fēn)爲概要設計和詳細設計兩個階段。實際上軟件設計的主要任務就是将軟件分(fēn)解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元。可以是一(yī)個函數、過程、子程序、一(yī)段帶有程序說明的獨立的程序和數據,也可以是可組合、可分(fēn)解和可更換的功能單元。模塊,然後進行模塊設計。概要設計就是結構設計,其主要目标就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法。
4編碼
軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一(yī)程序設計語言表示的“源程序清單”。充分(fēn)了解軟件開(kāi)發語言、工(gōng)具的特性和編程風格,有助于開(kāi)發工(gōng)具的選擇以及保證軟件産品的開(kāi)發質量。
當前軟件開(kāi)發中(zhōng)除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開(kāi)發語言。而且面向對象的開(kāi)發語言和開(kāi)發環境大(dà)都合爲一(yī)體(tǐ),大(dà)大(dà)提高了開(kāi)發的速度。
5測試
軟件測試的目的是以較小(xiǎo)的代價發現盡可能多的錯誤。要實現這個目标的關鍵在于設計一(yī)套出色的測試用例(測試數據與功能和預期的輸出結果組成了測試用例)。如何才能設計出一(yī)套出色的測試用例,關鍵在于理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白(bái)盒法測試對象是源程序,依據的是程序内部的的邏輯結構來發現軟件的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能多的内部程序邏輯結果。白(bái)盒法和黑盒法依據的是軟件的功能或軟件行爲描述,發現軟件的接口、功能和結構錯誤。其中(zhōng)接口錯誤包括内部/外(wài)部接口、資(zī)源管理、集成化以及系統錯誤。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。
6維護
維護是指在已完成對軟件的研制(分(fēn)析、設計、編碼和測試)工(gōng)作并交付使用以後,對軟件産品所進行的一(yī)些軟件工(gōng)程的活動。即根據軟件運行的情況,對軟件進行适當修改,以适應新的要求,以及糾正運行中(zhōng)發現的錯誤。編寫軟件問題報告、軟件修改報告。
一(yī)個中(zhōng)等規模的軟件,如果研制階段需要一(yī)年至二年的時間,在它投入使用以後,其運行或工(gōng)作時間可能持續五年至十年。那麽它的維護階段也是運行的這五年至十年期間。在這段時間,人們幾乎需要着手解決研制階段所遇到的各種問題,同時還要解決某些維護工(gōng)作本身特有的問題。做好軟件維護工(gōng)作,不僅能排除障礙,使軟件能正常工(gōng)作,而且還可以使它擴展功能,提高性能,爲用戶帶來明顯的經濟效益。然而遺憾的是,對軟件維護工(gōng)作的重視往往遠不如對軟件研制工(gōng)作的重視。而事實上,和軟件研制工(gōng)作相比,軟件維護的工(gōng)作量和成本都要大(dà)得多。
在實際開(kāi)發過程中(zhōng),軟件開(kāi)發并不是從第一(yī)步進行到最後一(yī)步,而是在任何階段,在進入下(xià)一(yī)階段前一(yī)般都有一(yī)步或幾步的回溯。在測試過程中(zhōng)的問題可能要求修改設計,用戶可能會提出一(yī)些需要來修改需求說明書(shū)等。
軟件開(kāi)發是指一(yī)個軟件項目的開(kāi)發,如市場調查,需求分(fēn)析,可行性分(fēn)析,初步設計,詳細設計,形成文檔,建立初步模型,編寫詳細代碼,測試修改,發布等。
軟件是怎麽樣開(kāi)發出來的
第一(yī)個步驟是市場調研,技術和市場要結合才能體(tǐ)現最大(dà)價值。
第二個步驟是需求分(fēn)析,這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手冊。
用戶視圖是該軟件用戶(包括終端用戶和管理用戶)所能看到的頁面樣式,這裏面包含了很多操作方面的流程和條件。
數據詞典是指明數據邏輯關系并加以整理的東東,完成了數據詞典,數據庫的設計就完成了一(yī)半多。
用戶操作手冊是指明了操作流程的說明書(shū)。
請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟件設計之前完成,完成這些,就爲程序研發提供了約束和準繩,很遺憾太多公司都不是這樣做的,因果颠倒,順序不分(fēn),開(kāi)發工(gōng)作和實際需求往往因此産生(shēng)隔閡脫節的現象。
需求分(fēn)析,除了以上工(gōng)作,筆者以爲作爲項目設計者應當完整的做出項目的性能需求說明書(shū),因爲往往性能需求隻有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。
第三個步驟是概要設計,将系統功能模塊初步劃分(fēn),并給出合理的研發流程和資(zī)源要求。
作爲快速原型設計方法,完成概要設計就可以進入編碼階段了,通常采用這種方法是因爲涉及的研發任務屬于新領域,技術主管人員(yuán)一(yī)上來無法給出明确的詳細設計說明書(shū),但是并不是說詳細設計說明書(shū)不重要,事實上快速原型法在完成原型代碼後,根據評測結果和經驗教訓的總結,還要重新進行詳細設計的步驟。
第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書(shū)應當把具體(tǐ)的模塊以最’幹淨’的方式(黑箱結構)提供給編碼者,使得系統整體(tǐ)模塊化達到最大(dà);一(yī)份好的詳細設計說明書(shū),可以使編碼的複雜(zá)性減低到最低,實際上,嚴格的講詳細設計說明書(shū)應當把每個函數的每個參數的定義都精精細細的提供出來,從需求分(fēn)析到概要設計到完成詳細設計說明書(shū),一(yī)個軟件項目就應當說完成了一(yī)半了。換言之,一(yī)個大(dà)型軟件系統在完成了一(yī)半的時候,其實還沒有開(kāi)始一(yī)行代碼工(gōng)作。
那些把作軟件的程序員(yuán)簡單理解爲寫代碼的,就從根子上犯了錯誤了。
第五個步驟是編碼,在規範化的研發流程中(zhōng),編碼工(gōng)作在整個項目流程裏最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大(dà)提高,編碼時不同模塊之間的進度協調和協作是最需要小(xiǎo)心的,也許一(yī)個小(xiǎo)模塊的問題就可能影響了整體(tǐ)進度,讓很多程序員(yuán)因此被迫停下(xià)工(gōng)作等待,這種問題在很多研發過程中(zhōng)都出現過。
編碼時的相互溝通和應急的解決手段都是相當重要的,對于程序員(yuán)而言,bug永遠存在,你必須永遠面對這個問題,大(dà)名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎(ma)?從來沒有!
第六個步驟是測試
測試有很多種:
按照測試執行方,可以分(fēn)爲内部測試和外(wài)部測試
按照測試範圍,可以分(fēn)爲模塊測試和整體(tǐ)聯調
按照測試條件,可以分(fēn)爲正常操作情況測試和異常情況測試
按照測試的輸入範圍,可以分(fēn)爲全覆蓋測試和抽樣測試
以上都很好理解,不再解釋。
總之,測試同樣是項目研發中(zhōng)一(yī)個相當重要的步驟,對于一(yī)個大(dà)型軟件,3個月到1年的外(wài)部測試都是正常的,因爲永遠都會又(yòu)不可預料的問題存在。
完成測試後,完成驗收并完成最後的一(yī)些幫助文檔,整體(tǐ)項目才算告一(yī)段落,當然日後少不了升級,修補等等工(gōng)作,隻要不是想通過一(yī)錘子買賣騙錢,就要不停的跟蹤軟件的運營狀況并持續修補升級,直到這個軟件被徹底淘汰爲止。
什麽是軟件開(kāi)發的核心問題
按照軟件工(gōng)程鼻祖,《人月神話(huà)》作者brooks在“沒有銀彈——軟件工(gōng)程中(zhōng)的根本和次要問題”一(yī)章中(zhōng)闡述的思想,軟件開(kāi)發的核心問題就是如何從概念上對一(yī)個複雜(zá)的業務系統進行建模。這個建模是含義廣泛的,不僅僅包括對象建模,還包括數據建模、算法建模等等一(yī)系列的内容。總而言之是要先找到解決複雜(zá)問題的突破口(先要搞明白(bái)需要做什麽,然後再考慮如何做)。至于采用什麽表示方法(簡單文本、uml圖、e-r圖)、采用什麽高級語言、是否一(yī)定要用面向對象、使用什麽開(kāi)發工(gōng)具都是次要的問題。
軟件開(kāi)發方法
軟件開(kāi)發方法(softwaredevelopmentmethod)是指軟件開(kāi)發過程所遵循的辦法和步驟。
軟件開(kāi)發活動的目的是有效地得到一(yī)些工(gōng)作産物(wù),也就是一(yī)個運行的系統及其支持文檔,并且滿足有關的質量要求。軟件開(kāi)發是一(yī)種非常複雜(zá)的腦力勞動,所以經常更多讨論的是軟件開(kāi)發方法學,指的是規則、方法和工(gōng)具的集成,既支持開(kāi)發,也支持以後的演變過程(交付運行後,系統還會變化,或是爲了改錯,或是爲了功能的增減)。
關于組成軟件開(kāi)發和系統演化的活動有着各種模型(參見軟件生(shēng)存周期,軟件開(kāi)發模型,軟件過程),但是典型地都包含了以下(xià)的過程或活動:分(fēn)析、設計、實現、确認(測試驗收)、演化(維護)。
有些軟件開(kāi)發方法是專門針對某一(yī)開(kāi)發階段的,屬于局部性的軟件開(kāi)發方法。
特别是軟件開(kāi)發的實踐表明,在開(kāi)發的早期階段多做努力,在後來的測試和維護階段就會使費(fèi)用較大(dà)地得以縮減。因此,針對分(fēn)析和設計階段的軟件開(kāi)發方法特别受到重視。其它階段的方法,從程序設計發展的初期起就是研究的重點,
已經發展得比較成熟(參見程序設計,維護過程)。除了分(fēn)階段的局部性軟件開(kāi)發方法之外(wài),還有覆蓋開(kāi)發全過程的全局性方法,尤爲軟件開(kāi)發方法學注意的重點。
對軟件開(kāi)發方法的一(yī)般要求:當提出一(yī)種軟件開(kāi)發方法時,應該考慮許多因素,包括:
①覆蓋開(kāi)發全過程,并且便于在各階段間的過渡;
②便于在開(kāi)發各階段中(zhōng)有關人員(yuán)之間的通信;
③支持有效的解決問題的
④支持系統設計和開(kāi)發的各種不同途徑;
⑤在開(kāi)發過程中(zhōng)支持軟件正确性的校驗和驗證;
⑥便于在系統需求中(zhōng)列入設計、實際和性能的約束;
⑦支持設計師和其他技術人員(yuán)的智力勞動;
⑧在系統的整個生(shēng)存周期都支持它的演化;
⑨受自動化工(gōng)具的支持。此外(wài),在開(kāi)發的所有階段,有關的軟件産物(wù)都應該是可見和可控的;軟件開(kāi)發方法應該可教學、可轉移,還應該是開(kāi)放(fàng)的,即可以容納新的技術、管理方法和新工(gōng)具,并且與已有的标準相适應。軟件設計基本步驟:
第一(yī)步:明确總體(tǐ)需求,你要做的是一(yī)個什麽軟件,用一(yī)句話(huà)表述之.
第二步:需求分(fēn)析,需求捕捉,撰寫需求文檔,不斷細化,确認需求.
第三步:總體(tǐ)設計.
能否開(kāi)發出一(yī)個好的軟件,關鍵是看軟件開(kāi)發前期所做的工(gōng)作,重點是這個軟件有沒有一(yī)個好的 軟件開(kāi)發流程,因爲一(yī)個好的軟件開(kāi)發流程關系到到這個軟件的成敗和最後能達到一(yī)個什麽的效果;下(xià)面我(wǒ)們就來說一(yī)下(xià)一(yī)個好的軟件需要有哪些軟件開(kāi)發流程,也可以說軟件開(kāi)發流程分(fēn)爲哪幾個階段:
第一(yī)個階段是市場調研:技術和市場要結合才能體(tǐ)現最大(dà)價值。
第二個階段是需求分(fēn)析:這個階段需要出三樣東西,用戶視圖,數據詞典和用戶操作手冊。用戶視圖是該軟件用戶(包括終端用戶和管理用戶)所能看到的頁面樣 式,這裏面包含了很多操作方面的流程和條件。數據詞典是指明數據邏輯關系并加以整理的東東,完成了數據詞典,數據庫的設計就完成了一(yī)半多。用戶操作手冊是 指明了操作流程的說明書(shū)。請注意,用戶操作流程和用戶視圖是由需求決定的,因此應該在軟件設計之前完成,完成這些,就爲程序研發提供了約束和準繩,很遺憾 太多公司都不是這樣做的,因果颠倒,順序不分(fēn),開(kāi)發工(gōng)作和實際需求往往因此産生(shēng)隔閡脫節的現象。需求分(fēn)析,除了以上工(gōng)作,筆者以爲作爲項目設計者應當完整 的做出項目的性能需求說明書(shū),因爲往往性能需求隻有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。
第三個階段是概要設計:将系統功能模塊初步劃分(fēn),并給出合理的研發流程和資(zī)源要求。作爲快速原型設計方法,完成概要設計就可以進入編碼階段了,通常采用這 種方法是因爲涉及的研發任務屬于新領域,技術主管人員(yuán)一(yī)上來無法給出明确的詳細設計說明書(shū),但是并不是說詳細設計說明書(shū)不重要,事實上快速原型法在完成原 型代碼後,根據評測結果和經驗教訓的總結,還要重新進行詳細設計的步驟。
第四個階段是詳細設計:這是考驗技術專家設計思維的重要關卡,詳細設計說明書(shū)應當把具體(tǐ)的模塊以最‘幹淨’的方式(黑箱結構)提供給編碼者,使得系統整體(tǐ) 模塊化達到最大(dà);一(yī)份好的詳細設計說明書(shū),可以使編碼的複雜(zá)性減低到最低,實際上,嚴格的講詳細設計說明書(shū)應當把每個函數的每個參數的定義都精精細細的提 供出來,從需求分(fēn)析到概要設計到完成詳細設計說明書(shū),一(yī)個軟件項目就應當說完成了一(yī)半了。換言之,一(yī)個大(dà)型軟件系統在完成了一(yī)半的時候,其實還沒有開(kāi)始一(yī) 行代碼工(gōng)作。那些把作軟件的程序員(yuán)簡單理解爲寫代碼的,就從根子上犯了錯誤了。
第五個階段是編碼:在規範化的研發流程中(zhōng),編碼工(gōng)作在整個項目流程裏最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編 碼效率就會極大(dà)提高,編碼時不同模塊之間的進度協調和協作是最需要小(xiǎo)心的,也許一(yī)個小(xiǎo)模塊的問題就可能影響了整體(tǐ)進度,讓很多程序員(yuán)因此被迫停下(xià)工(gōng)作等 待,這種問題在很多研發過程中(zhōng)都出現過。我(wǒ)們在編碼的時候一(yī)定要軟件開(kāi)發的 代碼規範編碼時的相互溝通和應急的解決手段都是相當重要的,對于程序員(yuán)而言,bug永遠存在,你必須永遠面對這個問題,大(dà) 名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎(ma)?從來沒有!
第六個階段是軟件測試有很多種:按照測試執行方,可以分(fēn)爲内部測試和外(wài)部測試;按照測試範圍,可以分(fēn)爲模塊測試和整體(tǐ)聯調;按照測試條件,可以分(fēn)爲正常操 作情況測試和異常情況測試;按照測試的輸入範圍,可以分(fēn)爲全覆蓋測試和抽樣測試。以上都很好理解,不再解釋。總之,測試同樣是項目研發中(zhōng)一(yī)個相當重要的步 驟,對于一(yī)個大(dà)型軟件,3個月到1年的外(wài)部測試都是正常的,因爲永遠都會又(yòu)不可預料的問題存在。完成測試後,完成驗收并完成最後的一(yī)些幫助文檔,整體(tǐ)項目 才算告一(yī)段落,當然日後少不了升級,修補等等工(gōng)作,隻要不是想通過一(yī)錘子買賣騙錢,就要不停的跟蹤軟件的運營狀況并持續修補升級,直到這個軟件被徹底淘汰 爲止。
總結,前四個階段在軟件開(kāi)發過程中(zhōng)占的比重比較大(dà),真正編碼的時間是非常短的,隻有市場調研做好,能有一(yī)個明确的方案,設計出詳細合理的開(kāi)發步驟;我(wǒ)們在 進行編碼的時候才能很順利,開(kāi)發出來的軟件才有價值。有的軟件在沒有開(kāi)發出來,還沒有上線就注定不行了,所以說軟件開(kāi)發流程對于能否開(kāi)發出一(yī)個好的軟件是 非常重要的。
希望對您有所幫助!~