agile development model

Upload: akhan10200

Post on 14-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Agile Development Model

    1/5

    IntroductionThis article presents Agile Software development - an alternative approach to software project

    management that is quite different from the traditional models. It promises to bring agility to

    your software development processes and promotes a new, evolutionary change in how software

    projects are managed. The article aims at providing its readers a broad level overview on thislatest methodology.

    What is Agile Software Development?Agile is basically an alternative approach to the software project management that is quite

    different from the traditional waterfall model that is mostly practiced by software farms globally.

    We are now coming across various hot methods like Crystal, Extreme Programming (XP),

    Scrum, Adaptive Software Development, etc. All of these team up to form the agile software

    development. Agility is important not only for the software development methodologies, but also

    concerning any organization. Agility is the keyword for survival of the organizations in the near

    future.

    Agile methods are based on real time communication between the programming team and its

    customers. The customers normally include project managers, analysts, and actual customers. All

    of them communicate face-to-face without putting much emphasis on written documentations.

    This is a key emphasis area for Agile Development and is a point of criticism. The team resides

    in an arrangement or enclosure wherein they can freely communicate with each other. The

    enclosure also may contain Quality Assurance Engineers, Graphics Designers and respective

    managers.

    Most of the agile software development methods call for minimizing the risk by developing

    software in short modular boxes called iterations. Each of these iterations is by itself a mini

    software project and follows all the standard phases of the software project life cycle, such as

    project planning, requirement analysis, system design, code generation, testing anddocumentation. Completion of any iteration is followed by review of the project priorities by the

    project team.

    Looking back in timeAgile development is an effect of the negative reaction against the commonly practiced software

    development models of the olden days, namely the waterfall model. It started becoming a

    popular and practical mode of development approach since the mid 1990's. Agile development

    came into existence due to the fact that theoretical approach of the waterfall model came out to

    be quite different from the practical methodologies followed by the developers to successfully

    design and develop any software solution. During initial days of programming, agile

    development methods have been referred to as light weight methods. In the year 2001 the agilecommunity adopted the name agile methods. In the past there have been several agile

    development methods available to the software industry and each of these are having its own

    significance and importance to its followers and the community is consistently working towards

    effective utilization of these methods by the software development world.

    The Agile Development StandardsAgile development is based on some standards outlined in this section.

  • 7/30/2019 Agile Development Model

    2/5

    Continuous involvement of customer - The need for involvement of an end user throughout the

    project lifecycle in agile development is very important. An end user has to be made available

    throughout the project development lifecycle and interact with the developers and help them

    achieve their project goals. They also need to verbally communicate on a regular basis to make

    the project lively and free of any bugs arising from misconceptions.

    Team members should take important decisions - The project development team should possessenough power to take important decisions in collaboration with the end user (customer). The

    team members need not always wait for their higher authorities to take important decisions for

    taking the project ahead. This can be done when absolutely needed and can be avoided in

    general. The team members can very well take proper decisions in collaboration with the

    customer contacts that are in collaboration. They should, however, know to manage the

    customers expectations optimally.

    Requirement analysis, a continuous process - In traditional models, the requirements are

    normally analyzed and fixed at the very initial level of the project lifecycle. Whatever the case

    may be, the emphasis is given to capture as much requirements as possible and to streamline the

    project scope. Any future changes are normally taken care of as a separate activity under change

    request management. Agile development works on a philosophy that is very much differentfrom traditional software development methodologies.

    Agile development methodology can address the evolving requirements over time. How? The

    time period for any project is kept fixed and the requirements are allowed to come in during the

    project lifecycle. Therefore, the project team and also the end user (the customer) need to include

    or remove any requirement keeping in mind the fixed time period. As a result, they may need to

    adjust this new work with some other comparable work within the project to put up this change.

    Project requirements are visual and adequately drawn - Agile project requirements are drawn

    mostly at high level and are optimal and visual in nature. These requirements are mostly drawn

    bit by bit and help to develop the software for any specific feature or module. The visual

    representation of the requirements helps the agile developers to develop the solution closest toaccuracy against its actual requirements. The requirements are sufficient in volume so as to

    provide that much input that is required for developing and testing the feature or module. This

    also enables reasonable efficiency. The objective behind this approach is to minimize the time

    taken for secondary activities in the project lifecycle that are always required to take ahead the

    project, but are certainly not a part of the end product or the solution.

    Development produces small, incremental releases with iterations - In traditional software

    development methodologies the requirements for the whole software are collected at the very

    beginning, analyzed and then the software is developed with all its components and finally

    testing is done for the entire solution followed by its release. Agile software development

    approach supports a different cycle in terms of analysis, development and testing. The agile

    development projects are produced in separate pieces with small, incremental releases. Each ofthe features in the whole solution is separately treated and each of these features has its own

    three phases or steps (analysis, development, and testing). Once this feature is developed, the

    next feature is developed in succession following similar phases. Hence, the methodology

    enables doing each of these steps for each feature, with one feature at a time.

  • 7/30/2019 Agile Development Model

    3/5

    Recurrent product delivery Agile development methodology supports recurrent delivery of any

    software product. It enables the breakup of the product into several modular features and delivers

    each feature incrementally on a regular basis.

    Fullest completion of each feature Agile development ensures fullest completion of each of its

    isolated features in terms of analysis, development, testing and release. Only then is the next

    feature or module in succession taken up. Care is taken to fully complete the functionalitieswithin each feature (a mini project by itself) and then proceed on to the next feature that is

    another mini project and is in succession.

    The 80/20 Rule The law of distribution and the similarity in distribution curve amongst many

    things are defined in the Paretos law which is also known as the 80/20 rule. The law defines that

    20% of the efforts put in can bring out 80% of results. The percentages may vary in various

    situations, but overall it means that the optimum amount of very important efforts can be

    identified and put in to bring out the bulk of the desired results. Hence, agile development

    emphasizes smart development wherein the team focuses on identifying the most important

    20% efforts to bring out the greater part of the results.

    Continuous testing Agile development encourages regular testing throughout the projectlifecycle. It does not normally encourage a separate all new testing phase as such. The team does

    the unit testing exercise while developing the feature in phases. This not only ensures developing

    software of great quality, but also helps in the iterative, incremental releases of the software. The

    automated repeatable unit tests ensure that all the modular features are working as per

    expectations each time while creating a build. Regular builds are created and integration is also

    done as the development progresses. The primary objective for this approach is to ensure the

    software to be available in release condition at all times throughout the development cycle.

    Collaborative and cooperative development approach Agile development is strongly based on

    effective collaboration and cooperation amongst all its team members and also the end users

    (clients). Agile development focuses on keeping sleek but effective requirements and

    documentation that needs great collaboration at all times. Requirements need to be clarified inthe right time. The team members and the end users should always be updated equally

    throughout the development to understand and appreciate the status of work in progress and the

    goals to be attained.

    The Agile Development MethodsThere are several agile methods currently available out of which few have gained greater

    importance in real-time practice. We will elaborate on a few of the popular agile methods, such

    as Scrum, Extreme Programming (XP), Crystal Clear, and DSDM (Dynamic Systems

    Development Methods). The other methods available are Agile Unified Process (AUP), Agile

    Modeling, Adaptive Software Development, FDD (Feature Driven Development), and Lean

    Software Development.

    Let us take a look into a few commonly practiced agile methods in the following sections.

    Scrum

    Scrum development has its inception during 1986 and had the objective to present a highly

    iterative development methodology. The popular developers behind its successful initiation are

    Jeff Sutherland, Ken Schwaber, and Mike Beedle.

  • 7/30/2019 Agile Development Model

    4/5

    Scrum has its primary focus on the management part of the software development, dividing the

    whole development period into small iterations (of thirty days) called "sprints." This helps in

    administering the process better and also to control the development with daily team meetings.

    The engineering practices are less important in scrum development. The users, however, can

    merge the engineering practices of other popular agile methods with the project management

    aspects of scrum.There is a Scrum Master who acts as a facilitator in scrum development and removes the

    obstacles that the team faces while attaining its sprint goals. The scrum development team is

    generally located in the same place, very well organized and encourages in extensive

    communication amongst each other regarding the project development aspects. These help in

    effective error-free progress and help them to attain the sprint goals. Scrum development takes

    its credit in addressing the fundamentally empirical challenges by appreciating the fact that any

    software problem is not defined fully during its inception and by maximizing the teams efforts

    in rapid delivery and faster response to up-and-coming requirements.

    Extreme Programming (XP)

    Extreme Programming is said to be the most popular and important of the various agiledevelopment methodologies available to date. Extreme Programming owes its inception to the

    Smalltalk community during the late 1980's. The popular developers behind its successful

    initiation are Kent Beck and Ward Cunningham who also took up the task of enhancing the XP

    practices to provide a software development methodology that is people-centric and highly

    adaptive. Kent Beck authored the popular book on this methodology called "Extreme

    Programming Explained" which came out in the market during October 1999. The book still

    provides good references to the followers of this software development practice.

    Extreme Programming recommends a set of daily practices for its team members. These

    practices can be seen as traditional software development practices taken to its highest

    productivity level. This effort helps in providing greater and faster response to the customers

    which is in contrast to the traditional methods. It also helps produce software solution of betterquality. XP in line with other agile development methods also believes that requirements can

    come up during any time throughout the project lifecycle (instead of getting defined at the very

    beginning), and the team has to be highly adaptive to these up-and-coming requirements and

    make effective this realistic approach through energetic response.

    Crystal Clear

    One of the great exponents of agile community Alistair Cockburn developed the crystal family of

    software development approaches meant for teams of different sizes. All of these methods have

    similar features and properties. Important properties are Frequent Delivery, Reflective

    Improvement, and Close Communication. Crystal requires lesser discipline as compared to XP

    and has reduced chance of failure.Crystal Clear is an important variant of crystal methodologies that is ideal for a team of about 6

    to 8 developers located in the same venue and working on light weight systems. It has its

    emphasis on people and not on processes. Important properties of crystal clear are as follows.

    Usable Code should be regularly delivered to the users

    Improvements are insightful

    Regular effective verbal communication between co-located team members

  • 7/30/2019 Agile Development Model

    5/5

    Ease of accessibility to the expert users

    Dynamic Systems Development Methods (DSDM)

    DSDM is a RAD (Rapid Application Development) based framework that follows a user driven,

    incremental approach in an iterative development for designing and developing software on time,

    satisfying all its business needs and strict budget. This agile methodology has its inception at the

    United Kingdom during the 1990's by DSDM Consortium (a non-profit organization). DSDM is

    an extension of RAD and it emphasizes information systems projects that are having steep

    deadlines and strict budgets. DSDM can be integrated to other agile methods in typical cases.

    So, should we go agile?Agile development and its usage belong to a specific group of people who clearly understand its

    significance. Agile development has its own set of drawbacks and may not be suitable for any

    type and size of software project, but can be successfully used for reasonably sized projects with

    a maximum team size of around 100 developers. However, agile development should be taken up

    by any organization in steps and can be started with a small project that can fall in line with the

    agile methods. Agile development is also a boon in providing customers who are so collaborative

    and act as stakeholders in a project development all through, along with the developers. Agile

    methods are still very young to draw the boundary conditions effectively for a software project.

    The decision for choosing agile methods should ideally go to the people primarily who are the

    best ones to decide whether they can suffice to the excellent collaborative project development.

    If not, it is better not to follow any agile methods as lack of the desire for adapting this

    development may ruin the project. However, with all its pros and cons, agile development is

    gaining immense popularity amongst organizations across the globe that believe in simplicity in

    designing and developing software with great and effective collaboration between the project

    stakeholders.

    ReferencesAgile Architect

    www.agilearchitect.org