官术网_书友最值得收藏!

Agile (in general)

By the early 1990s, a sea change was under way in how development processes were viewed. The Waterfall process, despite widespread adoption, even in government contractor policies in the US, started to show more and more of the flaws inherent to its application to large and complex systems. Other, non-Waterfall methodologies that were in use were also starting to show signs of wear from being too heavy, too prone to counter-productive micro-management, and a variety of other complaints and concerns.

As a result, a lot of thought around development processes started focusing on lightweight, iterative, and less management-intensive approaches, that eventually coalesced around the Agile Manifesto and the twelve principles that underlie it:

  • 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. We follow these principles:

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable 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 for 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. 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.
You may refer to The Agile Manifesto at  http://Agilemanifesto.org/ for more details.

In an application, these principles lead to a few common characteristics across different methodologies. There may be exceptions in other methodologies that are still considered Agile, but for our purposes, and with respect to the specific methodologies discussed here, those common traits are as follows:

  • Development happens in a sequence of iterations, each of which has one to many goals
  • Each goal is a subset of the final system
  • At the conclusion of each iteration, the system is deployable and operational (perhaps only for a given value of operational)
  • Requirements are defined in detail in small chunks, and may not be defined at all until just before the iteration that they're going to be worked on

Scrum is claimed to be the most popular, or at least most widely used, Agile development methodology (the 12th Annual State of Agile Report puts it at 56% of Agile methods in use), and as such is probably worth some more detailed attention. Kanban is another Agile methodology that bears some examination, if only because it's closer to how the main system project in this book is going to be presented.

There are a few other Agile methodologies that also bear at least a quick look-over for some of the specific focus they can bring to a development effort, either on their own, or as a hybrid or mix-in with other methodologies.

Businesses are also exploring additions and modifications to  textbook Agile processes to improve them and address needs that weren't encompassed by the original concept. One such process is the Scaled Agile Framework, which is used to improve the use of Agile processes at larger scales.
主站蜘蛛池模板: 新巴尔虎右旗| 饶阳县| 旬阳县| 分宜县| 镇远县| 祁连县| 张家口市| 和林格尔县| 青州市| 湖南省| 清丰县| 白城市| 本溪市| 临漳县| 山西省| 扎赉特旗| 永年县| 凯里市| 洞口县| 时尚| 建水县| 蒲江县| 宁城县| 叶城县| 沙坪坝区| 明溪县| 广河县| 泌阳县| 兰考县| 靖州| 邵武市| 蓝田县| 盘锦市| 佛山市| 文水县| 漳浦县| 柯坪县| 福鼎市| 察雅县| 临汾市| 嘉荫县|