快速應用程式開發

快速應用程式開發（原名：Rapid Application Development、縮寫：RAD）是指一種以最小幅度的規劃並迅速地將原形完成的軟體發展方法論。採用RAD進行軟體開發的規劃是和撰寫軟體本身交錯同時進行的。通常能在沒有大量預先規劃的情況下，讓軟體更快寫完、更容易變更需求。 有時也作為採用此種方法論的工具的代稱，此類工具大多支援所見即所得的介面設計畫面、顯示相關原始碼及說明文件，以及事件及例外處理的快速設定等等輔助使用者迅速完成所需功能的便捷機制。 快速應用程式開發是一種涉及類似迭代式開發與軟體原型（Software prototyping）技術的程序设计方法学。根據Jeffrey L. Whitten於2004年所下的定義，這是一種採用數種結構化分析與設計技術（特別是資料驅動（data-driven）型的資訊工程相關技術）與原型製作技術來加速軟體系統開發的整合技術。 在快速應用程式開發中，結構化與原型製作的技術被用來定義使用者的需求並設計開發出最終執行的系統。開發的過程會以結構化技術開發初步的資料模型及企業流程模型（business process model）作為起步，下一個階段會透過製作原型來驗證需求並改善資料及流程模型。迭代式地重複這些階段直到獲得"足以建構新系統且包含商務需求以及技術設計的報告"為止。 快速應用程式開發的方法可能需要在功能與效能間取得一個平衡點，藉此來加速應用程式的開發，並減少之後所需的維護成本。 快速應用程式開發這個名詞原先是用於描述一種由James Martin於1991年所提出的软件开发过程。這個方法涉及迭代式開發與建製原型的技術。最近這個詞以及縮寫則被泛指一般包含多樣目標在加速應用程式開發的技術，像是網絡應用框架與其他類型的軟體框架。 快速應用程式開發是對應到1970至80年代間的非敏捷流程開發，例如說結構化系統分析與設計方法以及其他像是瀑布模型等。之前的方法論有一個問題是應用程式需要花費相當長的時間去建製，系統需求常在系統完成前就改變，導致作出不適用甚至是不能用的系統。另一個問題則是假設可以用一個有條理的需求分析階段便能鑑別出所有重大的需求。根據過往的經驗能充分的証明即使有各層面具備豐富經驗的專業人士在專案中協助，能透過一個分析階段就能鑑別需求的實例仍就非常的稀少。 由Brian Gallagher、Alex Balchin、Barry Boehm、Scott Shultz，以及James Martin等人於1980年代在IBM產生了設計出能達成快速應用程式開發這種方法的構想。並且於1991年將這些構思集結成書加以出版，書名為《快速應用程式開發》（Rapid Application Development）。 從傳統基於交談（session-based）的客戶/伺服器發展轉移到開放性無交談（open session-less）及合作開發（像是Web 2.0）的過程上也增加了加快軟體開發流程階段迭代的需求。採用率持續成長中的開放原始碼框架與核心商業化發展產品的結合對於許多開發人員來說，重振了找出快速應用程式開發方法論的銀彈的興趣。 儘管多數的快速應用程式開發方法論促進了代碼復用、小組結構以及分散式系統開發，多數的快速應用程式開發實踐者察覺到最終還是沒有一個"快速"的方法論可以提供超越其他開發方法論的数量级改進。 各式各樣的快速應用程式開發方法都有潛力提供一個良好的框架用讓改進的程式品質加快產品開發的速度。但實作是否成功或有多大效益則通常取決於產品類型、排程、軟件出版週期，以及企业文化。有趣的是，一些大型軟體廠商如Microsoft以及IBM並不會廣泛的採用快速應用程式開發在其核心產品大部分的開發上，主要還是依賴傳統的瀑布方法論撘配一定程度的螺旋模型來進行開發。 下表列出了一些主要的快速應用程式開發方法以及他們的優劣。 由於快速應用程式開發是一種迭代式的過程，可能會讓原型反覆延續，而無法以令人滿意的成品作結。這樣的失誤可以藉由穩固、彈性，且正確使用的應用程式開發工具加以避免。這樣的情況也被像是80/20法則或其他後敏捷的衍生方法所強調。 當組織採用快速開發方法時，必須要注意避免角色與權責混淆以及開發團隊內部或是團隊與客戶之間溝通不良。此外，特別是在客戶缺席或是不能參與發展過程中的驗證時，系統分析員應該以客戶的角度參與驗證，來藉此確保能夠適當的關注非功能性需求。此外，任何系統的改進都應該要完成詳細且正式紀錄的設計階段。 原文："it is a merger of various structured techniques, especially data-driven Information Engineering, with prototyping techniques to accelerate software systems development."Whitten, Jeffrey L.; Lonnie D. Bentley, Kevin C. Dittman. (2004). Systems Analysis and Design Methods. 6th edition. ISBN 025619906X. 原文："a combined business requirements and technical design statement to be used for constructing new systems." Maurer and S. Martel. (2002). "Extreme Programming: Rapid Development for Web-Based Applications". IEEE Internet Computing, 6(1) pp 86-91 January/February 2002. Andrew Begel, Nachiappan Nagappan. Usage and Perceptions of Agile Software Development in an Industrial Context: An Exploratory Study, Microsoft Research (PDF). [2008-11-15]. （原始内容 (PDF)存档于2008-12-03）.  E. M. Maximilien and L. Williams. (2003). "Assessing Test-driven Development at IBM". Proceedings of International Conference of Software Engineering, Portland, OR, pp. 564-569, 2003. M. Stephens, Rosenberg, D. (2003). "Extreme Programming Refactored: The Case Against XP:". Apress, 2003. Gerber, Aurona; Van der Merwe, Alta; Alberts, Ronell; (2007), Implications of Rapid Development Methodologies, CSITEd 2007, Mauritius, November 2007 [1] （页面存档备份，存于互联网档案馆） James M. Kerr and Richard Hunter (1993). Inside RAD: How to Build a Fully-Functional System in 90 Days or Less, McGraw-Hill, ISBN 0070342237 Steve McConnell (1996). Rapid Development: Taming Wild Software Schedules, Microsoft Press Books, ISBN 978-1556159008 Ken Schwaber (1996). Agile Project Management with Scrum, Microsoft Press Books, ISBN 978-0735619937 [2] （页面存档备份，存于互联网档案馆） Steve McConnell (2003). Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers, Microsoft Press Books, ISBN 978-0321193674 Dean Leffingwell (2007). Scaling Software Agility: Best Practices for Large Enterprises, Addison-Wesley Professional, ISBN 978-0321458193