Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Quality focus

Sprint backlog | Burndown chart | Scrum-ban | Rapid application development | The James Martin RAD Methodology | Dynamic systems development method | Four stages of the DSDM V4.2 Project life-cycle | Unified Process | Iterative and Incremental | Extreme programming |


Читайте также:
  1. Fixed time, resources, scope and quality
  2. FOCUS ON MAKING ADVICE
  3. FOCUS ON MAKING ADVICE
  4. HOW TO BUILD QUALITY INTO YOUR TEAM
  5. LANGUAGE FOCUS
  6. LANGUAGE FOCUS
  7. LANGUAGE FOCUS

Specific tools and techniques, such as continuous integration, automated unit testing, pair programming, test-driven development, design patterns, domain-driven design, code refactoring and other techniques are often used to improve quality and enhance project agility.

Philosophy[edit]

Compared to traditional software engineering, agile development is mainly targeted at complex systems and projects with dynamic, undeterministic and non-linear characteristics, where accurate estimates, stable plans and predictions are often hard to get in early stages, and big up-front designs and arrangements will probably cause a lot of waste, i.e. are not economically sound. These basic arguments and precious industry experiences learned from years of successes and failures have helped shape Agile's favor of adaptive, iterative and evolutionary development.[14]

Adaptive vs. predictive[edit]

Development methods exist on a continuum from adaptive to predictive. [15] Agile methods lie on the adaptive side of this continuum. One key of adaptive development methods is a "Rolling Wave" approach to schedule planning, which identifies milestones but leaves flexibility in the path to reach them, and also allows for the milestones themselves to change.[16] Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future. The further away a date is, the more vague an adaptive method will be about what will happen on that date. An adaptive team cannot report exactly what tasks they will do next week, but only which features they plan for next month. When asked about a release six months from now, an adaptive team might be able to report only the mission statement for the release, or a statement of expected value vs. cost.

Predictive methods, in contrast, focus on analysing and planning the future in detail and cater for known risks. In the extremes, a predictive team can report exactly what features and tasks are planned for the entire length of the development process. Predictive methods rely on effective early phase analysis and if this goes very wrong, the project may have difficulty changing direction. Predictive teams will often institute a change control board to ensure that only the most valuable changes are considered.

Risk analysis can be used to choose between adaptive (agile or value-driven) and predictive (plan-driven) methods.[17] Barry Boehm and Richard Turner suggest that each side of the continuum has its own home ground, as follows:[18]

Home grounds of different development methods
Agile methods Plan-driven methods Formal methods
Low criticality High criticality Extreme criticality
Senior developers Junior developers(?) Senior developers
Requirements change often Requirements do not change often Limited requirements, limited features see Wirth's law
Small number of developers Large number of developers Requirements that can be modeled
Culture that responds to change Culture that demands order Extreme quality

Iterative vs. Waterfall[edit]

One of the differences between agile and waterfall is that testing of the software is conducted at different stages during the software development life-cycle. In the Waterfall model, there is always a separate testing phase near the completion of an implementation phase. However, in Agile and especially Extreme programming, testing is usually done concurrently with coding, or at least, testing jobs start in the early days of iteration.

Because the testing phase is done in every small iteration—which develops a small piece of the software—users can frequently use those new pieces of software and validate the value.

After the users know the real value of the updated piece of software, they can make better decisions about the software's future. Having a value retrospective and software re-planning session in each iteration—Scrum has a maximum of one month for iteration length—will help the team continuously adapt its plans so as to maximize the value it delivers.

This iterative practice also introduces a "product mindset" rather than Waterfall's 'project mindset'. Software can be seen as an living organism, which actively changes due to environmental change. As long as the software is being used, especially when it has competitor(s), iterations in Agile software development will drive the change.

Because of the short iteration style of Agile software development, it also has strong connections with the lean startup concept.

Code vs. documentation[edit]

In a letter to IEEE Computer, Steven Rakitin expressed cynicism about agile development, calling an article supporting agile software development "yet another attempt to undermine the discipline of software engineering" and translating "Working software over comprehensive documentation" as "We want to spend all our time coding. Remember, real programmers don't write documentation."[19]

This is disputed by proponents of Agile software development, who state that developers should write documentation if that's the best way to achieve the relevant goals, but that there are often better ways to achieve those goals than writing static documentation.[20] Scott Ambler states that documentation should be "Just Barely Good Enough" (JBGE),[21] that too much or comprehensive documentation would usually cause waste, and developers rarely trust detailed documentation because it's usually out of sync with codes,[20] while too little documentation may also cause problems for maintenance, communication, learning and knowledge sharing. Alistair Cockburn wrote of the Crystal method:

Crystal considers development to be a series of co-operative games, and the provision of documentation is intended to be enough to help the next win at the next game. The work products for Crystal include use cases, risk list, iteration plan, core domain models, and design notes to inform on choices...however there are no templates for these documents and descriptions are necessarily vague, but the objective is clear, just enough documentation for the next game. I always tend to characterize this to my team as: what would you want to know if you joined the team tomorrow.[22]

—Alistair Cockburn[ attribution verification needed ]

Agile methods[edit]

Well-known agile software development methods and/or process frameworks include:

· Adaptive Software Development (ASD)

· Agile Modeling

· Agile Unified Process (AUP)

· Crystal Methods (Crystal Clear)

· Disciplined Agile Delivery

· Dynamic Systems Development Method (DSDM)

· Extreme Programming (XP)

· Feature Driven Development (FDD)

· Lean software development

· Kanban (development)

· Scrum

· Scrum-ban

The agile methods are focused on different aspects of the Software development life cycle. Some focus on the practices (e.g. XP, Pragmatic Programming, Agile Modeling), while others focus on managing the software projects (e.g. Scrum). Yet, there are approaches providing full coverage over the development life cycle (e.g. DSDM, IBM RUP), while most of them are suitable from the requirements specification phase on (FDD, for example). Thus, there is a clear difference between the various agile methods in this regard.[23]

Agile practices[edit]

Agile development is supported by a bundle of concrete practices suggested by the agile methods, covering areas like requirements, design, modeling, coding, testing, project management, process, quality, etc. Some notable agile practices include:

· Acceptance test-driven development (ATDD)

· Agile Modeling

· Backlogs (Product and Sprint)

· Behavior-driven development (BDD)

· Cross-functional team

· Continuous integration (CI)

· Domain-driven design (DDD)

· Information radiators (Scrum board, Task board, Burndown chart)

· Iterative and incremental development (IID)

· Pair programming

· Planning poker

· Refactoring

· Scrum meetings (Sprint planning, Daily scrum, Sprint review and retrospective)

· Test-driven development (TDD)

· Agile testing

· Timeboxing

· Use case

· User story

· Story-driven modeling

· Velocity tracking

The Agile Alliance has provided a comprehensive online collection with a map guide to the applying agile practices.[24]

Method tailoring[edit]

In the literature, different terms refer to the notion of method adaptation, including 'method tailoring', 'method fragment adaptation' and 'situational method engineering'. Method tailoring is defined as:

A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments.[25]

Potentially, almost all agile methods are suitable for method tailoring. Even the DSDM method is being used for this purpose and has been successfully tailored in a CMM context.[26] Situation-appropriateness can be considered as a distinguishing characteristic between agile methods and traditional software development methods, with the latter being relatively much more rigid and prescriptive. The practical implication is that agile methods allow project teams to adapt working practices according to the needs of individual projects. Practices are concrete activities and products that are part of a method framework. At a more extreme level, the philosophy behind the method, consisting of a number of principles, could be adapted (Aydin, 2004).[25]

Extreme Programming (XP) makes the need for method adaptation explicit. One of the fundamental ideas of XP is that no one process fits every project, but rather that practices should be tailored to the needs of individual projects. Partial adoption of XP practices, as suggested by Beck, has been reported on several occasions.[23] Mehdi Mirakhorli proposes a tailoring practice that provides a sufficient road-map and guidelines for adapting all the practices. RDP Practice is designed for customizing XP. This practice, first proposed as a long research paper in the APSO workshop at the ICSE 2008 conference, is currently the only proposed and applicable method for customizing XP. Although it is specifically a solution for XP, this practice has the capability of extending to other methodologies. At first glance, this practice seems to be in the category of static method adaptation but experiences with RDP Practice says that it can be treated like dynamic method adaptation. The distinction between static method adaptation and dynamic method adaptation is subtle.[27]


Дата добавления: 2015-08-27; просмотров: 143 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Agile software development| Comparison with other methods

mybiblioteka.su - 2015-2024 год. (0.011 сек.)