Agile的感悟--迭代完成最終目標
前天,偶然的機會聽了一場IBM軟體工程師的講座,也偶然的接觸了一種思想---agile.講師是賈迎,參與過Lotus Notes/Domin的開發,如今是IBM的顧問軟體工程師。
Agile這種思想和現在的敏捷開發有著相同的角度考慮問題。以人為核心,循序漸進的開發方式。
回來再學習,看了幾篇文章,總結一下:
------------------------------------------------------
敏捷軟體開發是一個概念意義上的框架,用來取代軟體工程專案的概念;它強調在專案的整個生命週期中,擁抱並促進由於軟體進化式的發展所帶來的變化。
請注意其中的三個關鍵詞:
在專案的整個生命週期中
擁抱並促進變化:世界上唯一不變的是變化。不論在任何領域,漠視、甚至否認、抗拒變化,都不是一個理性,嚴肅的人所應有的態度。學會如何識別變化的大勢,並在可能的時候,促使變化向好的方向發展。這才是面對變化的正確應對之法。
軟體進化式的發展:雖然上面提到促進變化的發展,但是軟體的演化過程,我相信是有其自身內在邏輯的,存在一些根本規律和指導方針;並不是完全以人的主觀意識為主導。
瞭解了這三個方面,下面引入大名鼎鼎、如雷貫耳、耳朵都要磨出糨子來的
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
☆ Individuals and interactions over processes and tools
☆ Working software over comprehensive documentation
☆ Customer collaboration
☆ Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
在敏捷宣言的背後,有其遵循的12條原則:
Principles behind the Agile Manifesto
We follow these principles:
☆ Our highest priority is to satisfy the customer through early and continuous delivery of vaphp?name=lua" onclick="tagshow(event)" class="t_tag">luable software.
☆ Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
☆ Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
☆ Business people and developers must work together daily throughout the project.
☆ Build projects around motivated individuals. Give them the environment and support they need,
and trust them to get the job done.
☆ The most efficient and effective method of conveying information to and within a development
team is face-to-face conversation.
☆ Working software is the primary measure of progress.
☆ Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
☆ Continuous attention to technical excellence and good design enhances agility.
☆ Simplicity--the art of maximizing the amount of work not done--is essential.
☆ The best architectures, requirements, and designs emerge from self-organizing teams.
☆ At regular intervals, the team reflects on how to become more effective, then tunes and adjusts
its behavior accordingly.
------------------------------------------------------------------
想想我們聽說過的一些AOP的開發方法,有哪些和這種思想是一致的?
很多,不斷的迭代和不斷的簡單化來完成目標就是這樣的呀!
《輕快的java》鼓勵人們使用SSH的方法來開發軟體,因為他們不用考慮EJB帶來的過度耦合,因為他們使程式碼簡單,透明。
吃什麼就像什麼,使用大量的Bean而沒有容器,就使Servlet很難管理,Spring的IoC的依賴注入完美的解決了問題。
------------------------------------------------------------------
而日常的生活中,又有那些問題可以被Agile解決呢?
我發現eclipse的流行就可以用這種思想來說明,開始我們的需求就是像記事本一樣的做程式碼。然後執行的時候要控制檯,那就整合控制檯,需要除錯的時候,就整合Ant,需要什麼就加什麼。
就像我們爬山的時候,為了尋找最短的路徑可能會走下山的路。
------------------------------------------------------------------
這些只是個人學習上一些理解。
歡迎指正。