軟體開發是指一個軟體專案的開發,如市場調查,需求分析,可行性分析,初步設計,詳細設計,形成文件,建立初步模型,編寫詳細程式碼,測試修改,釋出等。軟體是怎麼樣開發出來的第一個步驟是市場調研,技術和市場要結合才能體現最大價值。第二個步驟是需求分析,這個階段需要出三樣東西,使用者檢視,資料詞典和使用者操作手冊。使用者檢視是該軟體使用者(包括終端使用者和管理使用者)所能看到的頁面樣式,這裡麵包含了很多操作方面的流程和條件。資料詞典是指明資料邏輯關係並加以整理的東東,完成了資料詞典,資料庫的設計就完成了一半多。使用者操作手冊是指明瞭操作流程的說明書。請注意,使用者操作流程和使用者檢視是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程式研發提供了約束和準繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。需求分析,除了以上工作,筆者以為作為專案設計者應當完整的做出專案的效能需求說明書,因為往往效能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。第三個步驟是概要設計,將系統功能模組初步劃分,並給出合理的研發流程和資源要求。作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是並不是說詳細設計說明書不重要,事實上快速原型法在完成原型程式碼後,根據評測結果和經驗教訓的總結,還要重新進行詳細設計的步驟。第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把具體的模組以最’乾淨’的方式(黑箱結構)提供給編碼者,使得系統整體模組化達到最大;一份好的詳細設計說明書,可以使編碼的複雜性減低到最低,實際上,嚴格的講詳細設計說明書應當把每個函式的每個引數的定義都精精細細的提供出來,從需求分析到概要設計到完成詳細設計說明書,一個軟體專案就應當說完成了一半了。換言之,一個大型軟體系統在完成了一半的時候,其實還沒有開始一行程式碼工作。那些把作軟體的程式設計師簡單理解為寫程式碼的,就從根子上犯了錯誤了。第五個步驟是編碼,在規範化的研發流程中,編碼工作在整個專案流程裡最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模組之間的進度協調和協作是最需要小心的,也許一個小模組的問題就可能影響了整體進度,讓很多程式設計師因此被迫停下工作等待,這種問題在很多研發過程中都出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程式設計師而言,bug永遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎?從來沒有!第六個步驟是測試測試有很多種:按照測試執行方,可以分為內部測試和外部測試按照測試範圍,可以分為模組測試和整體聯調按照測試條件,可以分為正常操作情況測試和異常情況測試按照測試的輸入範圍,可以分為全覆蓋測試和抽樣測試以上都很好理解,不再解釋。總之,測試同樣是專案研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。完成測試後,完成驗收並完成最後的一些幫助文件,整體專案才算告一段落,當然日後少不了升級,修補等等工作,只要不是想透過一錘子買賣騙錢,就要不停的跟蹤軟體的運營狀況並持續修補升級,直到這個軟體被徹底淘汰為止。什麼是軟體開發的核心問題按照軟體工程鼻祖,《人月神話》作者Brooks在“沒有銀彈——軟體工程中的根本和次要問題”一章中闡述的思想,軟體開發的核心問題就是如何從概念上對一個複雜的業務系統進行建模。這個建模是含義廣泛的,不僅僅包括物件建模,還包括資料建模、演算法建模等等一系列的內容。總而言之是要先找到解決複雜問題的突破口(先要搞明白需要做什麼,然後再考慮如何做)。至於採用什麼表示方法(簡單文字、UML圖、E-R圖)、採用什麼高階語言、是否一定要用面向物件、使用什麼開發工具都是次要的問題。軟體開發方法軟體開發方法(SoftwareDevelopmentMethod)是指軟體開發過程所遵循的辦法和步驟。軟體開發活動的目的是有效地得到一些工作產物,也就是一個執行的系統及其支援文件,並且滿足有關的質量要求。軟體開發是一種非常複雜的腦力勞動,所以經常更多討論的是軟體開發方法學,指的是規則、方法和工具的整合,既支援開發,也支援以後的演變過程(交付執行後,系統還會變化,或是為了改錯,或是為了功能的增減)。關於組成軟體開發和系統演化的活動有著各種模型(參見軟體生存週期,軟體開發模型,軟體過程),但是典型地都包含了以下的過程或活動:分析、設計、實現、確認(測試驗收)、演化(維護)。有些軟體開發方法是專門針對某一開發階段的,屬於區域性性的軟體開發方法。特別是軟體開發的實踐表明,在開發的早期階段多做努力,在後來的測試和維護階段就會使費用較大地得以縮減。因此,針對分析和設計階段的軟體開發方法特別受到重視。其它階段的方法,從程式設計發展的初期起就是研究的重點,已經發展得比較成熟(參見程式設計,維護過程)。除了分階段的區域性性軟體開發方法之外,還有覆蓋開發全過程的全域性性方法,尤為軟體開發方法學注意的重點。對軟體開發方法的一般要求:當提出一種軟體開發方法時,應該考慮許多因素,包括:①覆蓋開發全過程,並且便於在各階段間的過渡;②便於在開發各階段中有關人員之間的通訊;③支援有效的解決問題的④支援系統設計和開發的各種不同途徑;⑤在開發過程中支援軟體正確性的校驗和驗證;⑥便於在系統需求中列入設計、實際和效能的約束;⑦支援設計師和其他技術人員的智力勞動;⑧在系統的整個生存週期都支援它的演化;⑨受自動化工具的支援。此外,在開發的所有階段,有關的軟體產物都應該是可見和可控的;軟體開發方法應該可教學、可轉移,還應該是開放的,即可以容納新的技術、管理方法和新工具,並且與已有的標準相適應。
軟體開發是指一個軟體專案的開發,如市場調查,需求分析,可行性分析,初步設計,詳細設計,形成文件,建立初步模型,編寫詳細程式碼,測試修改,釋出等。軟體是怎麼樣開發出來的第一個步驟是市場調研,技術和市場要結合才能體現最大價值。第二個步驟是需求分析,這個階段需要出三樣東西,使用者檢視,資料詞典和使用者操作手冊。使用者檢視是該軟體使用者(包括終端使用者和管理使用者)所能看到的頁面樣式,這裡麵包含了很多操作方面的流程和條件。資料詞典是指明資料邏輯關係並加以整理的東東,完成了資料詞典,資料庫的設計就完成了一半多。使用者操作手冊是指明瞭操作流程的說明書。請注意,使用者操作流程和使用者檢視是由需求決定的,因此應該在軟體設計之前完成,完成這些,就為程式研發提供了約束和準繩,很遺憾太多公司都不是這樣做的,因果顛倒,順序不分,開發工作和實際需求往往因此產生隔閡脫節的現象。需求分析,除了以上工作,筆者以為作為專案設計者應當完整的做出專案的效能需求說明書,因為往往效能需求只有懂技術的人才可能理解,這就需要技術專家和需求方(客戶或公司市場部門)能夠有真正的溝通和了解。第三個步驟是概要設計,將系統功能模組初步劃分,並給出合理的研發流程和資源要求。作為快速原型設計方法,完成概要設計就可以進入編碼階段了,通常採用這種方法是因為涉及的研發任務屬於新領域,技術主管人員一上來無法給出明確的詳細設計說明書,但是並不是說詳細設計說明書不重要,事實上快速原型法在完成原型程式碼後,根據評測結果和經驗教訓的總結,還要重新進行詳細設計的步驟。第四個步驟是詳細設計,這是考驗技術專家設計思維的重要關卡,詳細設計說明書應當把具體的模組以最’乾淨’的方式(黑箱結構)提供給編碼者,使得系統整體模組化達到最大;一份好的詳細設計說明書,可以使編碼的複雜性減低到最低,實際上,嚴格的講詳細設計說明書應當把每個函式的每個引數的定義都精精細細的提供出來,從需求分析到概要設計到完成詳細設計說明書,一個軟體專案就應當說完成了一半了。換言之,一個大型軟體系統在完成了一半的時候,其實還沒有開始一行程式碼工作。那些把作軟體的程式設計師簡單理解為寫程式碼的,就從根子上犯了錯誤了。第五個步驟是編碼,在規範化的研發流程中,編碼工作在整個專案流程裡最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模組之間的進度協調和協作是最需要小心的,也許一個小模組的問題就可能影響了整體進度,讓很多程式設計師因此被迫停下工作等待,這種問題在很多研發過程中都出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程式設計師而言,bug永遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎?從來沒有!第六個步驟是測試測試有很多種:按照測試執行方,可以分為內部測試和外部測試按照測試範圍,可以分為模組測試和整體聯調按照測試條件,可以分為正常操作情況測試和異常情況測試按照測試的輸入範圍,可以分為全覆蓋測試和抽樣測試以上都很好理解,不再解釋。總之,測試同樣是專案研發中一個相當重要的步驟,對於一個大型軟體,3個月到1年的外部測試都是正常的,因為永遠都會又不可預料的問題存在。完成測試後,完成驗收並完成最後的一些幫助文件,整體專案才算告一段落,當然日後少不了升級,修補等等工作,只要不是想透過一錘子買賣騙錢,就要不停的跟蹤軟體的運營狀況並持續修補升級,直到這個軟體被徹底淘汰為止。什麼是軟體開發的核心問題按照軟體工程鼻祖,《人月神話》作者Brooks在“沒有銀彈——軟體工程中的根本和次要問題”一章中闡述的思想,軟體開發的核心問題就是如何從概念上對一個複雜的業務系統進行建模。這個建模是含義廣泛的,不僅僅包括物件建模,還包括資料建模、演算法建模等等一系列的內容。總而言之是要先找到解決複雜問題的突破口(先要搞明白需要做什麼,然後再考慮如何做)。至於採用什麼表示方法(簡單文字、UML圖、E-R圖)、採用什麼高階語言、是否一定要用面向物件、使用什麼開發工具都是次要的問題。軟體開發方法軟體開發方法(SoftwareDevelopmentMethod)是指軟體開發過程所遵循的辦法和步驟。軟體開發活動的目的是有效地得到一些工作產物,也就是一個執行的系統及其支援文件,並且滿足有關的質量要求。軟體開發是一種非常複雜的腦力勞動,所以經常更多討論的是軟體開發方法學,指的是規則、方法和工具的整合,既支援開發,也支援以後的演變過程(交付執行後,系統還會變化,或是為了改錯,或是為了功能的增減)。關於組成軟體開發和系統演化的活動有著各種模型(參見軟體生存週期,軟體開發模型,軟體過程),但是典型地都包含了以下的過程或活動:分析、設計、實現、確認(測試驗收)、演化(維護)。有些軟體開發方法是專門針對某一開發階段的,屬於區域性性的軟體開發方法。特別是軟體開發的實踐表明,在開發的早期階段多做努力,在後來的測試和維護階段就會使費用較大地得以縮減。因此,針對分析和設計階段的軟體開發方法特別受到重視。其它階段的方法,從程式設計發展的初期起就是研究的重點,已經發展得比較成熟(參見程式設計,維護過程)。除了分階段的區域性性軟體開發方法之外,還有覆蓋開發全過程的全域性性方法,尤為軟體開發方法學注意的重點。對軟體開發方法的一般要求:當提出一種軟體開發方法時,應該考慮許多因素,包括:①覆蓋開發全過程,並且便於在各階段間的過渡;②便於在開發各階段中有關人員之間的通訊;③支援有效的解決問題的④支援系統設計和開發的各種不同途徑;⑤在開發過程中支援軟體正確性的校驗和驗證;⑥便於在系統需求中列入設計、實際和效能的約束;⑦支援設計師和其他技術人員的智力勞動;⑧在系統的整個生存週期都支援它的演化;⑨受自動化工具的支援。此外,在開發的所有階段,有關的軟體產物都應該是可見和可控的;軟體開發方法應該可教學、可轉移,還應該是開放的,即可以容納新的技術、管理方法和新工具,並且與已有的標準相適應。