Agile Encounters Unpredictability

SDLC
SDLC @Image courtesy of Stuart Miles/ FreeDigitalPhotos.net

Agile Encounters Unpredictability

Welcome to CodeSpread!

What is Agile?

Wikipedia says “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.”

To understand this, we have to learn SDLC phases available here.

Aim of SDLC is to receive a complete project or product at the end of SDLC and Agile provides an improvement over traditional approaches to achieve the same result by adapting[It is an adaptive technique] to a flexible environment. We always face an unknown factor in our daily development life which we  call as ‘unpredictability’. Agile is something which has been designed to encounter ‘unpredictability’.

To achieve this,agile process divides the full project into partial deliverables and follows the software development life cycle which includes requirements gathering, analysis, design , coding , testing and  for each of partially implemented deliverables.After each iteration, deliverable is shared with the client and their feedback is recorded. In the next iteration, second planned deliverable is created by following the software development life cycle again and client feedback is incorporated. Same process follows till the end product is ready and customer is satisfied. We can see that Agile is a customer based approach and requires involvement from all the teams .

Why Agile?

Agile became important because today’s environment shouts one word ‘CHANGE’. The moment requirements gets freeze, clients comes back with changes so freeze never actually happens.

Agile methodology is described as “iterative” and “incremental”. In agile, at each point, client assesses the product and provides feedback. It is like giving wings to clients so they fly and introduce anything new at any point of the SDLC. It can be best described as ‘CHANGE’ with the ‘CHANGING’ world. The biggest drawback of Agile is that there is no limit of satisfaction which can be successfully achieved.

It can easily be interpreted as an assessment tool that is introduced in regular SDLC model and can be used to decide the direction of the project.It reduces risk by removing uncertainty and creates a healthy long-term relationship with client.

Agile focuses on

  • Be ready for Change
  • Regular Communication and Interaction
  • Finished Product with minimum documentation
  • Collaboration

Characteristics of Agile?

  • Modularity
    As always ,we believe in dividing the project into modules. Where each module can represent a working piece of software and can be shared with the customer for feedback. Once all modules are ready or integrated then it can be represented as our final product.
  • Iterative
    On each cycle of development, working piece of software is shared with the client for feedback and if some new requirement or change is introduced, same cycle is repeated again.
  • Time Bound
    As agile process is iterative in nature, it requires the time limits on each module with respective cycle.We set time limits between one and six weeks on each iteration and schedule them accordingly.
  • Parsimony
    In Agile, we follow a tight schedule so there is always a risk of low quality and less involvement of developers so by minimizing the number of activities, these kind of risks can be avoided.
  • Incremental
    As the agile process is iterative in nature, so building Rome will take some time and happen in an incremental manner.
  • Adaptive
    We have already discussed the adaptive nature of Agile. This is important in case of flexibility desired from Agile.
  • Convergent
    All the risks associated with each increment are convergent in agile process by using iterative and incremental approach.
  • Collaborative
    No Project can be a success without proper communication and in case of Agile where RAD[Rapid Action Development] is expected so communication becomes really important all levels.
  • People Oriented
    Agile processes favor people over process and technology,plus customer satisfaction is the first priority.
reference: www.enggjournals.com/ijcse/doc/IJCSE12-04-05-186.pdf

What are the Agile Methodologies available?

  • Scrum
  • Lean / Kanban
  • Extreme Programming (XP)
  • Feature-Driven development (FDD)
  • Dynamic Systems Development Method (DSDM)
  • Crystal

The most widely used methodologies based on the agile philosophy are XP and Scrum

Extreme Programming (XP) :

Wikipedia says “As a type of agile software development, it advocates frequent “releases” in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.”

It divides the entire software development life cycle into several number of short development cycles. It welcomes and incorporates changes or requirements from the customers at any phase of the development life cycle.

There are four core values in XP ,four core values: communication, simplicity, feedback, and courage .Keeping this four values in mind,In his book Extreme Programming Explained, Kent Beck defines the 12 practices,

The Planning Game
Quickly determine the scope of the next release by combining business priorities and technical estimates. As reality overtakes the plan, update the plan.

Small releases
Put a simple system into production quickly, then release new versions on a very short cycle.

Metaphor
Guide all development with a simple shared story of how the whole system works.

Simple design
The system should be designed as simply as possible at any given moment. Extra complexity is removed as soon as it is discovered.

Testing
Programmers continually write unit tests, which must run flawlessly for development to continue. Customers write tests demonstrating the features are finished.

Refactoring
Programmers restructure the system without changing its behavior to remove duplication, improve communication, simplify, or add flexibility.

Pair programming
All production code is written with two programmers at one machine.

Collective ownership
Anyone can change any code anywhere in the system at any time.

Continuous integration
Integrate and build the system many times a day, every time a task is completed.

40-hour week
Work no more than 40 hours a week as a rule. Never work overtime a second week in a row.

On-site customer
Include a real, live user on the team, available full-time to answer questions.

Coding standards
Programmers write all code in accordance with rules emphasizing communication through the code.

These practices can not be considered as the end of XP but there are many more concepts which got evolved from these practices.

Scrum:

Wait for the next article!!

Author: hershey

A passion for knowledge drives me to do programming, A passion for programming drives me to create something different, A passion for creation drives me to spread the knowledge.

Share This Post On

0 Comments

  1. nice superb explaination

    Post a Reply
  2. thanks for the tutorial
    I am having a problem.
    The feature “Create SQL server database” isn’t available , I can’t select it.
    Can you help, please ?

    Post a Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

More from CodeSpread:

  • Scrum is AgileScrum is AgileIn our last article,Agile Part 1, we have explained basics of Agile and now we are sharing an article on SCRUM What is SCRUM? Wikipedia says “Scrum is an iterative and incremental agile software ...
  • Interview Question Series: 1st AnswerInterview Question Series: 1st AnswerWe shared our first comic on interview question two days back and today we are sharing our answer for the question. This is one of our attempt to learn the basics in a unique way. Interview Ques...
  • Interview Question SeriesInterview Question SeriesWe have shared our experiences with our readers from quite sometime. Today, when one of our readers asked us to write some interview questions then we realized that we should take an initiative and...
  • SDLC: Importance of Requirement Analysis.SDLC: Importance of Requirement Analysis.What is SDLC? SDLC is the acronym for Software Development Life Cycle or System Development Life Cycle.It is a conceptual model that describes the stages involved in development of a software or a...
  • Few lines about Static code analysisFew lines about Static code analysisStatic code analysis We divide the term into two parts: Static+code analysis. Static in programming can be referred to as non-running/non-dynamic and code analysis is a process where the code is...
  • Risk Management in IT: Another step for QualityRisk Management in IT: Another step for QualityWhat is Risk? Risk is an uncertainty. Here, this pertains to a situation where It is difficult to decide that whether a particular event will occur or not. But if it occurs then what impact it wil...
  • Lean in ITLean in ITWikipedia says ‘Lean IT is the extension of lean manufacturing and lean services principles to the development and management of information technology (IT) products and services.’ What are these ...
  • User Interface DesignUser Interface DesignWhat is a User Interface? Webopedia says “Abbreviated UI, the junction between a user and a computer program. An interface is a set of commands or menus through which a user communicates with a pr...