軟件開發的過程有哪些步驟?
軟件是如何開發的?
第壹步是市場調研,技術和市場要結合起來才能體現最大的價值。
第二步是需求分析,需要三樣東西,用戶視圖,數據字典,用戶操作手冊。
用戶視圖是用戶(包括終端用戶和管理用戶)可以看到的頁面樣式,包含很多操作流程和條件。
數據字典是指出數據的邏輯關系並對其進行排列的東西。當數據字典完成後,數據庫的設計就完成了壹大半。
用戶操作手冊是指示操作過程的說明。
請註意,用戶操作流程和用戶視圖是由需求決定的,所以要在軟件設計之前完成,為程序研發提供約束和準則。可惜太多公司不這麽做,而且因果顛倒,順序不分,所以開發工作和實際需求往往是割裂的。
需求分析,除了以上工作,我認為作為項目設計人員,要做好項目完整的性能需求陳述,因為往往性能需求只有懂技術的人才能理解,這就需要技術專家和需求者(客戶或公司營銷部門)之間真正的溝通和理解。
第三步是總體設計,初步劃分系統的功能模塊,給出合理的R&D流程和資源需求。
作為壹種快速原型設計方法,完成輪廓設計後可以進入編碼階段。通常采用這種方法是因為所涉及的R&D任務屬於壹個新的領域,技術總監壹開始無法給出壹個明確的詳細設計規範,但這並不代表詳細設計規範不重要。實際上,快速原型法在完成原型代碼後,需要根據評估結果和經驗教訓,再次進行詳細的設計步驟。
第四步是細節設計,這是考驗技術專家設計思維的重要關口。詳細的設計說明要以最幹凈的方式(黑盒結構)向編碼人員提供具體的模塊,從而最大化系統的整體模塊化;壹個好的詳細設計規範可以最小化編碼的復雜性。其實嚴格來說,壹份詳細的設計說明書應該詳細提供每個功能的每個參數的定義。從需求分析到概要設計,再到完成詳細設計說明書,壹個軟件項目應該是完成了壹半。換句話說,壹個大型軟件系統在完成壹半的時候,實際上還沒有開始壹行代碼的工作。
那些把做軟件簡單理解為寫代碼的程序員,從根源上就犯了錯誤。
第五步是編碼。在標準化的R&D過程中,整個項目過程中的編碼工作最多不會超過1/2,通常為1/3。俗話說,設計過程完成得好,編碼效率會大大提高。編碼過程中不同模塊之間的協調合作是最重要的。也許壹個小模塊的問題可能會影響整體進度。
編碼時溝通和應急方案非常重要。對於程序員來說,bug永遠存在,妳必須時刻面對這個問題。大名鼎鼎的微軟有沒有連續三個月發不出補丁的時候?絕不!
第六步是測試。
測試有很多種:
根據測試執行者的不同,可以分為內部測試和外部測試。
按測試範圍可分為模塊測試和整體調試。
根據測試條件,可分為正常運行測試和異常情況測試。
根據測試的輸入範圍,可以分為全覆蓋測試和抽樣測試。
以上都很好理解,就不解釋了。
總之,測試也是項目研發中非常重要的壹步。對於壹個大型軟件來說,3個月到1年的外部測試是很正常的,因為總會有不可預知的問題。
在測試、驗收和最終幫助文檔完成後,整個項目將告壹段落。當然,未來還會有升級,維修等等。只要不想壹錘子買賣騙錢,就必須持續跟蹤軟件的運行狀態,持續修復升級,直到徹底淘汰軟件。
軟件開發的核心問題是什麽?
按照軟件工程鼻祖、《人月神話》作者布魯克斯的思路,在《沒有銀彈——軟件工程中的根本和次要問題》壹章中,軟件開發的核心問題是如何從概念上對壹個復雜的業務系統進行建模。這個建模的含義非常廣泛,不僅包括對象建模,還包括數據建模、算法建模等壹系列內容。總之,解決復雜問題首先要找到突破口(先搞清楚需要做什麽,再考慮怎麽做)。至於用什麽表示方法(簡單文本,UML圖,E-R圖),用什麽高級語言,有沒有必要用面向對象,用什麽開發工具,都是次要問題。
軟件開發方法
軟件開發方法是指軟件開發過程中遵循的方法和步驟。
軟件開發活動的目的是有效地得到壹些工作產品,即壹個運行的系統及其支持文檔,並滿足相關的質量要求。軟件開發是壹項非常復雜的腦力勞動,所以往往更多討論的是軟件開發方法論,軟件開發方法論是指規則、方法和工具的集成,它不僅支持開發,還支持未來的演化過程(交付後,系統會發生變化,要麽修正錯誤,要麽增加或減少功能)。
關於組成軟件開發和系統演化的活動有各種模型(參見軟件生命周期、軟件開發模型和軟件過程),但它們通常包括以下過程或活動:分析、設計、實現、確認(測試驗收)和演化(維護)。
有些軟件開發方法是特定於某個開發階段的,屬於局部軟件開發方法。
特別是軟件開發的實踐表明,開發前期多下功夫,後期的測試和維護成本會大大降低。因此,特別重視分析和設計階段的軟件開發方法。其他階段的方法從編程開發的早期就壹直是研究的重點。
已經發展的相當成熟了(見編程和維護流程)。除了階段性的局部軟件開發方法,還有覆蓋整個開發過程的全局方法,尤其是軟件開發方法論的重點。
軟件開發方法的壹般要求:當提出壹個軟件開發方法時,應該考慮許多因素,包括:
①覆蓋整個開發過程,便於階段間的過渡;
(2)便於各開發階段相關人員之間的溝通;
③支持有效的問題解決。
④支持系統設計和開發的各種方式;
⑤支持開發過程中軟件正確性的驗證和確認;
⑥便於在系統需求中包含設計、實際和性能約束;
⑦支持設計師和其他技術人員的腦力勞動;
⑧支持系統在其整個生命周期內的進化;
⑨由自動化工具支持。另外,在開發的各個階段,相關的軟件產品都應該是可見的、可控的;軟件開發方法應該是可教的、可轉移的和開放的,也就是說,它們可以容納新技術、管理方法和新工具,並適應現有的標準。
參考:/user 5/280156/Archives/2008/2090192 . shtml。