AGILE Methodology “SCRUM” industry most appealing software development model


Agile methodology is also called as RELEASE or DELIVERY DRIVEN APPROACH since it gives better prediction on the workable products in short duration of time.
  • AGILE Methodology are used to develop an application very FAST and adopt the changes at greater pace.
  • Agile is all about how to work together as a Single team to achieve a common goal (Quality).
  • AGILE TEAM is not only suitable for the Software Developers but also for Team Leaders, Project Managers, Product Managers, Development Managers, Testers, QA Managers, QA Engineers, Technical Writers, Web Designers or anyone involves in the delivering of software.

Winston Royce’s Waterfall Model 

“From the 1970 IEE paper “Managing the Development of Large Software Systems”
A careful reading of Royce’s paper reveals:
  • Each phase should pass iteratively to the next
  • The entire process should be exercised twice before release
  • Backtracking is not possible in waterfall after analysis phase is done.
  • No customer involvement and transparency among the team.
  • Testing phase comes once coding is complete.
  • Royce knew that a single pass will fail

Unfortunately, for the process illustrated, the design iterations are never confined to the successive steps.
What is all this stuff?
The answer is:

Agile development is not a methodology in itself. It is an umbrella term that describes several agile methodologies. At the signing of the Agile Manifesto in 2001, these methodologies included Scrum, XP, Crystal, FDD, and DSDM. Since then, Lean practices have also emerged as a valuable agile methodology and so are included under the agile development umbrella in the illustration later.

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.

Twelve Principles behind the Agile Manifesto

We follow these principles:
  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.


Many developers have lived through the nightmare of a project with no practices to guide it. The lack of effective practices leads to unpredictability, repeated error, and wasted effort. Customers are disappointed by slipping schedules, growing budgets, and poor quality. Developers are disheartened by working ever-longer hours to produce ever-poorer software.
There are many agile processes: SCRUM, Crystal, Behavior-Driven Development (BDD), Test-Driven Development (TDD), Feature-Driven Development (FDD), Adaptive Software Development (ADP), Extreme Programming (XP) and more… However, the vast majority of successful agile teams have drawn from all these processes to tune their own particular flavor of agility. These adaptations appear to be come together with the combination of SCRUM and XP, but still in which SCRUM is the mostly widely used in the industry.

SCRUM

Scrum is most often used to manage complex software and product development, using iterative and incremental practices. Scrum significantly increases productivity and reduces time to benefits relative to classic “waterfall” processes. Scrum processes enable organizations to adjust smoothly to rapidly changing requirements, and produce a product that meets evolving business goals.

An agile Scrum process benefits the organization by helping it to
  • Increase the quality of the deliverables
  • Cope better with change (and expect the changes)
  • Provide better estimates while spending less time creating them
  • Be more in control of the project schedule and state

As a result, Scrum projects achieve higher customer satisfaction rates.

Terminologies used in Scrum:
  1. User Story: Requirement in agile is called User Story.
  2. Product Backlog: Collection of User Story.
  3. Product Owner: Customer who manages the product backlog.
  4. Scrum Master: Captain of the team.
  5. Sprint Backlog: Set of requirements taken from product backlog for 1 sprint.
  6. Sprint: It is a number of days taken to develop and deliver a set of requirements.


SCRUM Meetings

There are 3 scrum meetings mainly held:


Sprint Planning meeting (held for 8 hours)
  • Scrum master explain the requirement to team
  • Identify list of tasks
  • Assign the task
Daily Stand-up Meeting (held for 10-15 mins daily
  • What we did yesterday?
  • What did we plan for today?
  • Any issues are we facing?

Sprint Retrospect Meeting (held for 1 or 2 hour after completion of 1st cycle of development)
  • Achievements
  • Mistakes
  • Good practices
  • Area of improvements
Some organization also includes one more meeting called Sprint review meeting.

Scrum Roles

There are three core roles for producing the product.
  1. Product Owner
  2. Team
  3. Scrum Master

What is Backlog?

The product backlog is an ordered list of “requirements” that is maintained for a product. It consists of features, bug fixes, non-functional requirements, etc. – whatever needs to be done in order to successfully deliver a working software system. In Scrum, it is not required to start a project with a lengthy, upfront effort to document all requirements. This agile product backlog is almost always more than enough for a first sprint. The Scrum product backlog is then allowed to grow and change as more is learned about the product and its customers

The sprint backlog is the list of work the Development Team must address during the next sprint. The list is derived by selecting stories/features from the top of the product backlog until the Development Team feels it has enough work to fill the sprint. This is done by the Development Team asking “Can we also do this?” and adding stories/features to the sprint backlog.
Conceptually, the team starts at the top of the prioritized Scrum backlog and draws a line after the lowest of the high-priority items they feel they can complete. In practice, it is not unusual to see a team select, for example, the top five items and then two items from lower on the list that are associated with the initial five.

Benefits of Scrum:
The benefits are different for different people.

Benefits to Customer
Customers find that the vendor is more responsive to development requests. High-value features are developed and delivered more quickly with short cycles, than with the longer cycles favored by classic “waterfall” processes.

Benefits to Vendors
Vendors reduce wastage by focusing development effort on high-value features, and reduce time-to-market relative to waterfall processes due to decreased overhead and increased efficiency. Improved customer satisfaction translates to better customer retention and more positive customer references.

Benefits to Development Teams
Team members enjoy development work, and like to see their work used and valued. Scrum benefits Team members by reducing non-productive work (e.g., writing specifications or other artifacts that no one uses), and giving them more time to do the work they enjoy. Team members also know their work is valued, because requirements are chosen to maximize value to customers.

Benefits to Product Managers
Product Managers, who typically fill the Product Owner role, are responsible for making customers happy by ensuring that development work is aligned with customer needs. Scrum makes this alignment easier by providing frequent opportunities to re-prioritize work, to ensure maximum delivery of value.

Benefits to Project Managers
Project Managers (and others) who fill the ScrumMaster role find that planning and tracking are easier and more concrete, compared to waterfall processes. The focus on task-level tracking, the use of Burndown Charts to display daily progress, and the Daily Scrum meetings, all together give the Project Manager tremendous awareness about the state of the project at all times. This awareness is key to monitoring the project, and to catching and addressing issues quickly.

Conclusion  

A good agile team picks and chooses the management & technical practices that best work for them. When trying to adopt Agile practices, there will be a ton of excuses as why it won’t work. Those who understand the real benefits of the approach – and genuinely want to make the transition – will likely have success. Those who are searching for reasons why it will fail – well, they will likely find them and either abandon the effort entirely or end up practicing.

credits: http://en.wikipedia.org/wiki/Agile_software_development , agilemanifesto.org , http://www.codeproject.com/Articles/616070/Agile-Methodology

Comments

Popular posts from this blog

Explain public static void main in Java

Reserve or Key Words in Java

What is Automation ?