1. 程式人生 > >Agile的感悟--迭代完成最終目標

Agile的感悟--迭代完成最終目標

     前天,偶然的機會聽了一場IBM軟體工程師的講座,也偶然的接觸了一種思想---agile.講師是賈迎,參與過Lotus Notes/Domin的開發,如今是IBM的顧問軟體工程師。

   Agile這種思想和現在的敏捷開發有著相同的角度考慮問題。以人為核心,循序漸進的開發方式。

   回來再學習,看了幾篇文章,總結一下:

------------------------------------------------------

    敏捷軟體開發是一個概念意義上的框架,用來取代軟體工程專案的概念;它強調在專案的整個生命週期中擁抱並促進由於軟體進化式的發展所帶來的變化
      請注意其中的三個關鍵詞:
  在專案的整個生命週期中

:這就涉及到了【敏捷專案管理】、【敏捷需求獲取】、狹義的【敏捷軟體開發】三個主要的領域和過程。要注意的是,上述三個過程並不是互相分開的,而是你中有我,我中有你。
  擁抱並促進變化:世界上唯一不變的是變化。不論在任何領域,漠視、甚至否認、抗拒變化,都不是一個理性,嚴肅的人所應有的態度。學會如何識別變化的大勢,並在可能的時候,促使變化向好的方向發展。這才是面對變化的正確應對之法。
  軟體進化式的發展:雖然上面提到促進變化的發展,但是軟體的演化過程,我相信是有其自身內在邏輯的,存在一些根本規律和指導方針;並不是完全以人的主觀意識為主導。
  瞭解了這三個方面,下面引入大名鼎鼎、如雷貫耳、耳朵都要磨出糨子來的
敏捷宣言(Manifesto for Agile Software Development)

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
over contract negotiation
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,需要什麼就加什麼。

      就像我們爬山的時候,為了尋找最短的路徑可能會走下山的路。

------------------------------------------------------------------

                                                  這些只是個人學習上一些理解。

                                                  歡迎指正。