CSC/ECE 517 Fall 2011/ch5 6d ny: Difference between revisions
Line 98: | Line 98: | ||
Scrum is a process skeleton that contains sets of practices and predefined roles. The main roles in Scrum are: | Scrum is a process skeleton that contains sets of practices and predefined roles. The main roles in Scrum are: | ||
1.the “ScrumMaster”, who maintains the processes (typically in lieu of a project manager | 1.the “ScrumMaster”, who maintains the processes (typically in lieu of a project manager. | ||
2.the “Product Owner”, who represents the stakeholders and the business | |||
2.the “Product Owner”, who represents the stakeholders and the business. | |||
3.the “Team”, a cross-functional group who do the actual analysis, design, implementation, testing, etc. | 3.the “Team”, a cross-functional group who do the actual analysis, design, implementation, testing, etc. | ||
Revision as of 07:54, 15 November 2011
Agile Landscape
Introduction
Agile- denoting “the quality of being agile; readiness for motion; nimbleness, activity, dexterity in motion ” is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It is a framework or frame of mind. A practitioner of Agile can use different methodologies within the framework to “do or be” Agile. Agile is our guiding principles that lay the foundation for building better software. In layman language, Agile methodology means cutting down the big picture into puzzle size bits, fitting them together when the time is right e.g. design, coding and testing bits. So, while there are reasons to support both the waterfall and agile methods, reasons such as better adaption of change, launchable product at the end of each cycle, usage of object oriented paradigms, emphasis on user requirements followed by the latter clarifies why many software and web design firms make the more appropriate choice of employing Agile methodology.
The term “Agile Software Development” was introduced in 2001 by Agile Software Development Manifesto published by a group of software practitioners and consultants. The important aspects of this Manifesto are,
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaborations over contract negotiation.
- Responding to change over following plan.
Flowchart
Agile Software development processes are based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.Agile processes use feedback, rather than planning, as their primary control mechanism. The feedback is driven by regular tests and releases of the evolving software.
Process
Agile development involves the following steps:
Project Initiation:Set up and justify the project. Determine initial high level requirements.
Project Plan: Plan out the project, everything after Project Initiation, including whether you're going to have the optional phases.
Elaborate Requirements (optional): Very high level requirements are gathered during Project Initiation. These can optionally be expanded during an phase to Elaborate Requirements. Even is the requirements are "elaborated" they are still high level.
Architecture (optional): The Agile approach is generally design for today and refactor tomorrow (at least in XP)..
Release:A Release is a piece of development where the customer gets some new software. Releases can be from 2 weeks to 6 months, but are usually 3 months long. Release have one or more timeboxes.
Time box:A Timebox is 1 – 6 weeks long, but usually 3 – 4 weeks. The most important thing about a timebox is that the delivery date is fixed.
Various kinds of agile techniques
- Extreme Programming(XP)
- Scrum
- Crystal family of Methodologies
- Feature Driven Development
- Rational Unified Process
- Dynamic Systems Development
- Adaptive Software Development
- Open Source Software Development
- Agile Modelling
- Pragmatic Programming
Different Methodologies
Extreme Programming
ExtremeProgramming is one of many AgileProcesses. It is also known as XP. XP is a disciplined approach to delivering high-quality software quickly and continuously.Extreme Programming(XP) has evolved from the problems caused by long development cycles of traditional development models; it appears to be based on trial and error programming!. It is first started as ‘simply an opportunity to get the job done’ with practices that had been found effective in software development process.
Life cycle
The Extreme Programming life cycle consists of the following phases,
- Exploration Phase: In this phase the team performs an architectural spike, during which they experiment with the features to envision the initial architecture.
- Planning Phase: This phase focuses primarily on identifying the most critical user stories and estimating the time required to implement it. A release will have one to many iterations, which are typically 2-to-4 weeks .
- Iteration phase: During this phase; development iteration phase involves iterative testing of the latest versions and eliminating the bugs based on the customer feedback.
- Productionizing Phase: During this phase the code is certified for releases based on the customer approval.
Values
Extreme Programming improves a software project in five essential ways;
- Communication: Extreme Programmers constantly communicate with their customers and fellow programmers
- Simplicity: They keep their design simple and clean.Thereby Teams perform the minimum work needed to meet requirements.
- Feedback: They get feedback by testing their software starting on day one.
- Respect: They deliver the system to the customers as early as possible and implement changes as suggested
- Courage: Every small success deepens their respect for the unique contributions of each and every team member. With this foundation Extreme Programmers are able to courageously respond to changing requirements and technology.
Advantages:
- It is more Customer-focused (it’s all about user stories)
- It ensures Quality via frequent testing
- Constant focus on identifying and delivering the critical user stories
- It results in High visibility on project status
- It provides great support for volatile requirements
Disadvantages:
Although XP methodology can result in an improved process which is more efficient more predictable more flexible ,it also has weaknesses such as:
- Difficulty coordinating larger teams
- Can result in a never-ending project if not managed properly
- Tendency to not document thoroughly
- Predicting the precise features to be accomplished in a fixed time/budget
Scrum
Development is a lightweight management framework with broad applicability for managing and controlling iterative and incremental projects of all types. Ken Schwaber, Mike Beedle, Jeff Sutherland and others have contributed significantly to the evolution of Scrum over the last decade. Over the last couple of years in particular, Scrum has garnered increasing popularity in the software community due to its simplicity, proven productivity, and ability to act as a wrapper for various engineering practices promoted by other agile methodologies.
LifeCycle:
Characteristics:
Scrum is a process skeleton that contains sets of practices and predefined roles. The main roles in Scrum are:
1.the “ScrumMaster”, who maintains the processes (typically in lieu of a project manager.
2.the “Product Owner”, who represents the stakeholders and the business.
3.the “Team”, a cross-functional group who do the actual analysis, design, implementation, testing, etc.
Advantages:
- It helps in saving time and money.
- Fast moving, cutting edge developments can be quickly coded and tested as the bugs can be easily fixed.
- Short sprints and constant feedbacks results in easier way to cope with the changes.
- Daily meeting helps in evaluating individual productivity. Thereby enhances the productivity of each of the team members.
- It is easier to deliver a quality product in a scheduled time.
Disadvantages:
- Decision-making is entirely in the hands of the teams. And if the team members are not committed, the project will either never complete or fail.
- It is good for small, fast moving projects as it works well only with small team.
- Absence of any of the team member during development can have huge inverse effect on the project development.
Crystal family of Methodologies
Crystal methods are considered and described as “lightweight methodologies”. The Crystal family of methodologies views software development as a "cooperative game of invention and communication, with a primary goal of delivering working useful software and a secondary goal of setting up the next game".
Crystal Family
Crystal is actually comprised of a family of methodologies,whose unique characteristics are driven by several factors such as team size, system criticality, and project priorities. And they are,
- Crystal Clear
- Crystal Yellow
- Crystal Orange
- Crystal Orange Web
- Crystal Red
- Crystal Maroon
- Crystal Diamond
- Crystal Sapphire
Crystal Clear is the lightest methodology in the family, suitable for co-located teams of up to 10 people. It is a lower-discipline methodology than XP (1st edition) but also requires some documentation.This Crystal family addresses the realization that each project may require a slightly tailored set of policies, practices, and processes in order to meet the project’s unique
Characteristics
Crystal has seven core properties:
- Frequent Delivery
- Reflective Improvement
- Osmotic Communication
- Personal Safety
- Focus
- Expert Users
- Automated Tests
- Configuration Management
- Frequent Integration.
Feature Driven Development
Definition Origin FlowChart Usage
Adaptive Software Development
Definition Origin FlowChart Usage
Dynamic Systems Development
Definition Origin FlowChart Usage
Other Methodologies
Rational Unified Process
Definition Origin FlowChart Usage
Open Source Software Development
Definition Origin FlowChart Usage
Agile Modelling
Definition Origin FlowChart Usage
Pragmatic Programming
Definition Origin FlowChart Usage
Comparision
How widely these methodologies are used
Agile project management has entered the mainstream – incremental delivery is now common and (should be) expected for any new software development project. But,it still is in its naive stages in terms of the acceptance of the evolution in ideology that it demands.
For small scale projects, averages of 58% of agile techniques are used when developing software. So for example if the respondent was using XP on a small scale project, 7 out of 12 XP techniques would be followed while the other 5 would either be changed or ignored to fit the project constraints and needs. Fewer respondents are following agile techniques for medium and large scale projects, as trends show that weighted average of 34% and 22% respectively of the techniques were implemented in the projects. As the development of software increases, there is a corresponding decrease in the number of agile techniques used. Furthermore, respondents tend to use heavyweight methods when the increase of project size, complexity, team, architecture, scope, and risks occur.
Forrester’s Business Technographics® September 2006 North American And European Enterprise Software Survey indicates that 17% of North American and European enterprises currently use Agile processes and that another 29% are aware of them.Forrester believes that Agile adoption is actually higher than reported in this study. Based on the interactions with enterprise IT organizations, Forrester estimates that very few large enterprises use Agile for most of their projects.
A recent survey conducted by Dr. Dobb’s Journal shows 41 percent of development projects have now adopted agile methodology, and agile techniques are being used on 65 percent of such projects.
In retrospect,when is agile method not adopted? It primarily comes down to the people. If the people involved aren't interested in the kind of intense collaboration that agile working requires, then it's going to be a big struggle to get them to work with it. Thus, agile cannot be imposed onto people.
Evidence to support the effectiveness of Agile Development
Adopting and then tailoring a software process to meet your team’s needs is an important and difficult decision, one that is critical to your project’s success. There are a myriad of choices. So it is important to determine whether an agile development methodology works effectively within your environment. There is growing survey evidence that agile works better than traditional. The DDJ 2007 Project Success Survey showed that when people define success in their own terms that Agile projects had a 72% success rate, compared with 63% for traditional and 43% for offshoring. These figures are summarized in Figure 2.
Craig Larman,in his book Agile and Iterative Development: A Manager's Guide makes a very good argument that proof exists that shows that many of the common practices within agile software development do in fact work, practices such as incremental delivery and iterative approaches which embrace change. He also cites evidence which shows that serial approaches to development, larger projects, and longer release cycles lead to greater incidences project failure.
Effectiveness of agile methodology can be proved with feedback cycle which indicated the time in which response is obtained. Agile techniques are found to have very short feedback cycles, often on the order of minutes or hours whereas traditional techniques, such as reviews, inspections, and big requirements up front (BRUF) have feedback cycles on the order of weeks or months, making them riskier and on average more expensive.
From the surveys and the present organizational scenario, people's experience with agile software development can be observed to be very positive, and that adopting agile strategies appears to be very low-risk in practice.
Conclusion
To conclude, agile software development stresses rapid iterations, small and frequent releases, and evolving requirements facilitated by direct user involvement in the development process. This development isn’t managerial free-for-all. It requires discipline and adherence to processes, even when those processes are not burdensome. When it comes to methodologies, each project is differentand and there is no one-size-fits-all solution. Agile development is being adopted in the enterprise world widely and it is not long before agile would be part of the thinking process rather than a strategy.