2009-12-05 13:34 41人阅读 评论(0) 收藏 举报
前天,偶然的机会听了一场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,需要什么就加什么。
就像我们爬山的时候,为了寻找最短的路径可能会走下山的路。
------------------------------------------------------------------
这些只是个人学习上一些理解。
欢迎指正。