敏捷軟體開發之什麼是敏捷設計

2021-09-24 19:24:24 字數 1340 閱讀 7032

實際上滿足工程設計標準的唯一軟體文件,就是源**清單 ---- jack reeves

僵化性(rigidity)

僵化性是指難以對軟體進行改動。如果單一的改動會導致有依賴關係的模組中的連鎖改動,那麼設計就是僵化的。很難對系統進行改動,因為每個改動都會迫使許多對系統其他部分的其它改動

脆弱性(fragility)

脆弱性是指對系統的改動會導致系統中和改動的地方在概念上無關的許多地方出現問題。也就是說,出現新問題的地方與改動的地方並沒有概念上的關聯。

牢固性(immobility)

設計中包含了對其他系統有用的部分,但是要把這些部分從系統中分離出來所需要的努力和風險是巨大的。很難解開系統的糾結,使之成為一些可在其他系統中重用的元件

粘滯性(viscosity)

粘滯性有兩種表現形式:軟體的粘滯性和環境的粘滯性。無論哪種粘滯性,都很難保持專案中的軟體設計。我們希望建立易於保持設計的系統和專案環境

不必要的複雜性(needless complexity)

指的是設計中包含有不具任何直接好處的基礎結構。如果設計中包含有當前沒用的組成部分,它就含有不必要的複雜性。換句話說你為未來預留功能實現的**都是沒有必要的

不必要的重複(needless repetition)

設計中包含有重複的結構,而該重複的結構本可以使用單一的抽象進行統一

晦澀性(opacity)

模組很難閱讀、理解,沒有很好地表現出意圖。

在非敏捷環境中,由於需求沒有按照初始設計預見的方式進行變化,從而導致了設計的退化。通常,改動都很急迫,並且進行改動的開發人員對於原始的設計思路並不熟悉,因此,雖然對設計的改動可以工作,但是它卻以某種方式違反了原始的設計。然後,我們不能把這種退化歸罪於需求的變化,而是設法找到一種方法,使得設計對於這種變化具有彈性。

敏捷團隊依靠變化來獲取活力。團隊幾乎不進行預先設計,因此不需要乙個成熟的初始設計。他們更願意保持系統盡可能的乾淨、簡單,並使用許多單元測試和驗收測試作為支援。這保持了設計的靈活性、易於理解性。團隊利用這種靈活性,持續地改進設計,以便於每次迭代結束所生成的系統都具有最適合於那次迭代中需求的設計

敏捷開發人員致力於保持設計盡可能地適當、乾淨。這不是乙個隨便的或者暫時性的承諾。敏捷開發人員不是每幾周才清潔他們的設計,而是每天,每小時、甚至每分鐘都要保持軟體盡可能地乾淨、簡單並富有表現力。他們人來不說「稍後我們會回來修正它」。

敏捷開發人員對待軟體設計的態度和外科醫生對待消毒過程的態度是一樣的。消毒過程使外科手術成為可能。沒有它,被感染的風險之高是難以忍受的。敏捷開發人員對於他們的設計有同樣的感覺。

敏捷設計是乙個過程一,不是乙個事件。它是乙個持續的應用原則、模式以及實踐來改進軟體的結構和可讀性的過程。它致力於保持系統設計在任何時間都盡可能的簡單、乾淨以及富有表現力。

敏捷軟體開發之敏捷實踐

good 勝過normal 個體和互動 過程和工具 可以工作的軟體 面面俱到的文件 客戶合作 合同談判 響應變化 遵循計畫 個體和互動勝過過程和工具 人是獲得成功的最為重要的因素。團隊的構建要比環境的構建重要得多。許多團隊和管理者就犯了先構建環境,然後期望團隊自動凝聚在一起的錯誤。相反,應該首先致力...

敏捷軟體開發 敏捷開發原則

編寫單元測試是一種驗證行為,更是一種設計行為。測試時乙個無價的文件。如果你想知道如何呼叫乙個函式或者建立乙個物件,會有乙個測試展示給你看。什麼是設計?不應該認為設計就是一組和 分離的uml圖。一組uml圖也許描繪了設計的一些部分,但是它不是設計。還是要 化 僵化性是指難以對軟體進行改動,即使是簡單的...

敏捷軟體開發

敏捷軟體開發 英語 agile software development 又稱敏捷開發,是一種從1990年代開始逐漸引起廣泛關注的一些新型軟體開發方法,是一種應對快速變化的需求的一種軟體開發能力。它們的具體名稱 理念 過程 術語都不盡相同,相對於 非敏捷 更強調程式設計師團隊與業務專家之間的緊密協作...