agile software development_an approach to light weight from heavy weight

Upload: damith-s-ekanayake

Post on 06-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    1/7

    AGILE SOFTWARE DEVELOPMENT-

    AN APPROACH TO LIGHT WEIGHT

    FROM HEAVY WEIGHTAMBILY O. A. *

    Research Scholar, Karpagam University, Coimbatore

    & Lecturer, KVM College of Engineering & I.T.

    Dr. T. JUDETH MALLIGA

    Professor,

    Jansons Institute of Technology, Coimbatore.

    Abstract :

    Today the world is evolving with technological advancements. Similarly information technology

    does not enjoy solidity. For instance, we see processors getting faster, hard disks becoming compact,

    bandwidth increasing, operating systems & programming tools evolving and security is increasing as

    well. These technical changes and deliberate efforts of people swiftly change the expectations of clients.

    New software development ideas were presented in the form of Agile Manifesto as a counteraction to that

    of traditional rigorous methods and paradigms. Agile Manifesto consists of four values and twelve

    principles. Agile means the quality of being agile or dexterity in motion. Agile software development is a

    highly collaborative and evolutionary approach for system development. Agile methods are a group of

    development approaches to software development. This paper deals with the applicability of light weight

    development methods in the field of software engineering and industry.

    Keywords: Agile Manifesto; Scrum; Extreme Programming; Sprint.

    1. IntroductionWhen we step into the software development process, we can see different process models. In the case of

    waterfall model, it is a traditional approach to software development, needs long time and a sequence of

    activities. Here comes the importance of lightweight development methods. Agile software development is oneof those kinds.

    The agile methods have generated a lot of interest in IT industry. Agile methods stress two concepts: the

    intolerant honesty of working code and the effectiveness of people working together with goodwill. Working

    code tells the developers and sponsors what they really have in front of them. Using people effectively achieves

    quality, speed, and cost savings. A collaborative environment can produce a better design than each could

    produce alone. The quality of the team and the caliber of its members are more important than the efficiency of

    its processes.

    Traditional project management lies on the traditional management theory, which assumes that:

    Rigid procedures are needed to regulate a change. Hierarchical organizational structures are means of establishing order. Increased control results in increased order. Organizations must be rigid, static hierarchies. Problems are solved primarily through task breakdown and allocation. Projects and risk are adequately predictable to be managed through complex up-front planning.

    2. Agile Software Development (ASD)In software application development, agile software development (ASD) is a methodology for the creative

    process that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished

    product. Agile software development focuses on keeping code simple, testing often, and delivering functional

    bits of the application as soon as they're ready.

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 399

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    2/7

    Agile Software Development is a movement within the Software Development community, away from

    traditional process-heavy methodologies and toward "relatively light weight, effective, human-powered

    software-development techniques".

    The basis for agile software development is tiny teams of self-motivated and self-organized code writers and

    managers, usually 7-10 people, who huddle together, plan, code, execute and deliver work products to their

    clients on the basis of Agile Manifesto and its principles.

    3. History of ASDFew years ago small projects were more successful than large projects. When agile methods came into the

    picture, the situation is changed. The modern definition of agile software development evolved in the mid-1990s

    as part of a reaction against "heavyweight" methods like waterfall model.

    The Agile Alliance was formed in 2001 to promote the concepts of agile software development, and help

    organizations adopt them. Agile Alliance is an organization that promotes agile software development

    methodologies, which includes Scrum, XP and others. However, the concepts themselves were being refined

    and shaped throughout the 1990s.

    4. Principles behind agile methodsIn 2001, 17 prominent figures in the field of agile development came together at the Snowbird ski resort in

    Utah to discuss ways of creating software in a lighter, faster, more people-centric way. They created the Agile

    Manifesto, widely regarded as the canonical definition of agile development and accompanying agile principles.

    The Agile Manifesto states:

    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.

    Some of the principles behind the Agile Manifestoare:

    Customer satisfaction by rapid, continuous delivery of useful software Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Even late changes in requirements are welcomed Close, daily cooperation between business people and developers Face-to-face conversation is the best form of communication (Co-location) Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity

    Self-organizing teams Regular adaptation to changing circumstances

    The manifesto spawned a movement in the software industry known as agile software development.

    5. Methodologies Under Agile Software FrameworkAgile software development is an abstract framework for undertaking software engineering projects. There

    are several methodologies under the agile software framework. Two of the most popular are Scrum and Extreme

    Programming (XP).

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 400

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    3/7

    5.1.ScrumAn agile software development methodology developed by Ken Schwaber and Jeff Sutherland in the mid-

    1990s. Scrum is an Agile process that can be used to manage and control complex software and product

    development using iterative, incremental practices. Scrum has been used from simple projects to changing the

    way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits

    while facilitating adaptive, empirical systems development.

    5.2.Extreme Programming (XP)A discipline for developing software that emphasizes on customer collaboration and teamwork. Developed

    by Kent Beck, Ward Cunningham and Ron Jeffries, and it is based on a formal set of rules about how one

    develops functionality such as defining a test before writing the code and never designing more than is needed

    to support the code that is written.

    XP is designed to guide the project correctly rather than concentrating on meeting target dates, which are

    often impractical in this business. Some of the core practices are simple design, pair programming and

    delivering small releases frequently. Main advantage of XP is highly satisfied customers.

    6. Integrating Scrum with Extreme ProgrammingScrum projects support the use of any software engineering discipline. However, since XP and Scrum share

    many core practices, Scrum and XP integrate well together.

    6.1.Scrum with Pair ProgrammingScrum mainly focused on managing the software projects where as pair programming is a very good

    programming practice. Scrum projects support the use of any software engineering discipline. So we can blend

    managing nature of scrum with pair programming and thus improve the scrum.

    6.2. Traditional Scrum Process

    An agile software development methodology developed by Ken Schwaber and Jeff Sutherland in the mid-

    1990s. Scrum is an agile process that can be used to manage and control complex software and product

    development using iterative, incremental practices. Scrum has been used from simple projects to changing the

    way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits

    while facilitating adaptive, empirical systems development.

    In Scrum, projects progress via a series of iterations called sprints. Each sprint is typically one to four weekslong. Scrum is ideally suited for projects with rapidly changing or evolving requirements.

    6.3. Scrum Roles

    Scrum has three roles:

    Product OwnerScrum MasterTeam.

    The Product Owner has the following responsibilities.

    Define the features of the product. Decide on release date and content. Prioritize features according to market value. Adjust features and priority every 30 days as needed. Accept or reject work results.

    The Scrum Masteris a facilitative team leader working together with the Product Owner. He must:

    Ensure that the team is fully functional and productive. Enable close cooperation across all roles and functions. Remove barriers.

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 401

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    4/7

    Shield the team from external interferences. Ensure that the process is followed, including issuing invitations to Daily Scrum, Sprint Review and

    Sprint Planning meetings.

    The scrum teamusually with seven (plus/minus two) members have the right to:

    Select the Sprint goal and specifies work results. Has the right to do everything within the boundaries of the project guidelines to reach the Sprint

    goal.

    Organize itself and its work. Present work results to the Product Owner.

    Users - The users are considered the people or places that will utilize the projects outcome or product.

    6.4. Components of SCRUM process

    Sprint a series of iteration of work that results in an increment and production of work product.

    Daily Scrum a meeting to analyze the status.

    In the meeting three key questions are asked and answered by all members

    How many objectives are achieved since the last team meeting? What kinds of constraints are faced? What do you plan to accomplish by the next team meeting?

    These daily meetings lead to Knowledge socialization and thus by promote a self organizing team

    structure.

    Product Backlog a to do list of user requirements that originated in the product definition.

    Sprint Planning Meeting - where each Sprint is planned.

    Sprint Review Meeting - where the results of the Sprint are examined.

    Sprint Backlog a list of tasks that the team completes to turn product backlog into a product increment

    during a Sprint.

    Stakeholder - anyone with an interest in the product or system being constructed.

    Product Owner - the person who is responsible for the quality of the product for customers, users and

    stakeholders.

    Development Team - one or more small teams that develop the system or product.

    Scrum Master - the coach of the teams who is responsible for the Scrum process and the productivity of the

    teams

    Increment - an increment of potentially shippable product functionality that a team builds every Sprint.

    6.5. Steps in SCRUM Process

    a. In the initial stage, product owner collect various inputs from various sources such as end users,customers and stakeholders.

    b. Prepare a product backlog based on the SRS.c. Product owner presents the initial estimations to higher management. If the project proposal seems good

    and project gets a "go" decision.

    d. Team selection and sprint planning meeting.e. Create a sprint backlog.f. Sprint backlog items are implemented via sprints.g. Work product generated by the sprint is reviewed by team members along with stakeholders.

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 402

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    5/7

    h. Collect feedback from the customer or stakeholder and plan the next sprint

    Fig. 1. Scrum Process

    6.6. Pair programming

    Pair programming is simply 2 in 1 that is two programmers work together at one workstation. One types the

    code while the other reviews each line of code. The person who is typing is called the driver. Driver has the

    right to edit the code. The person reviewing the code is called the observer or navigator. In pair programming

    two programmers switch roles frequently.

    Pair programming provides a mechanism for real time problem solving and real time quality assurance.

    While reviewing, the observer also considers the strategic direction of the work, coming up with ideas for

    improvements and likely future problems to address. This frees the driver to focus all of his or her attention on

    the "tactical" aspects of completing the current task, using the observer as a safety net and guide.

    6.7. Advantages of Scrum with Pair programming

    By integrating scrum with pair programming we can achieve the benefits of both.

    Increased work satisfaction. Enhanced quality of work products. Reduced management risk. Increased productivity. Eliminates communication gap between team members. Effective knowledge sharing.

    7. Agile System Development Life CycleASDLC contains the following phases.

    a. Project Selection and Planning.b. Project Initiation.c. Construction Iterations.d. Release Iterations.e. Production.f. Retirement.

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 403

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    6/7

    Fig. 2. Agile system Development Life cycle

    8. Advantages of Agile Projects over Traditional ProjectsNow organizations are focusing on develop software in short-period with less cost and effort. A light weight

    development method meets these requirements through the following features.

    Fig. 3. Comparison between heavy weight and Light weight Methods

    9. Conclusion

    From this study it can be concluded that the software industry go away from the heavy weight methods,

    many IT deals are outdated in that they are still planed on the basis of the waterfall method, and not light weight

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 404

  • 8/3/2019 Agile Software Development_An Approach to Light Weight From Heavy Weight

    7/7

    method. But there is no doubt that the Agile approach has entered the mainstream. In a recent survey, more than

    50% of the respondents said that at least half their organizations software projects used an Agile methodology.

    Now many large companies using Agile methods for their software development rather than heavy weight

    methods.

    References

    [1] Adrian Bridgwater, Agile Is Not A Religion, February 2009.[2] Agile Alliance, Manifesto for Agile Software Development, 2001.[3] Alistair Cockburn, Learning From Agile Software Development - Part One. Crosstalk October 2002 and Alistair Cockburn, Learning

    From Agile Software Development - Part Two. Crosstalk November 2002.

    [4] Augustine Sanjiv, Woodcock Susan. Agile Project Management: Emergent Order through Visionary Leadership. 2003.[5] Beck X, Extreme Programming Explained: Embrace Change, Addison-Wesley Pub Co, 1999.[6] Beedle M, Scrum : An Extension Pattern Language for hyperproductive software development.[7] Boehm Harry, Turner Richer, Management Challenges to Implementing Agile Processes in Traditional Development Organizations.

    Special Issue.

    [8] Craig Larman and Victor R. Basili, Iterative and Incremental Development: A Brief History. Computer , June 2003.[9] Hass Kathleen B. The blending of traditional and Agile Project Management. PM World Today. May, 2007.[10] James T, Stepping back from lean [lean vs agile manufacturing. IEEE software, Volume 84, Issue 1, Feb-March 2005.[11] Jonna Kalermo and Jenni Rissanen : Agile Software Development in Theory and Practice.[12] Pekka Abrahamsson, Outi Salo, Jussi Ronkainen and Juhani Warsta : Agile Software Development Methods - Review and Analysis.[13] Payne Bob, Sencindiver Fred, Woodcock Susan, Augustine Sanjiv. Agile project management: steering from the edges.[14] http://www.agilemanifesto.org[15] http://www.agilesoftwaredevelopment.com[16] http://www.ambysoft.com[17] http://www.ccpace.com/Resources/documents/AgileProjectManagement.pdf[18] http://en.wikipedia.org/wiki/Scrum_(development)[19] http://en.wikipedia.org/wiki/Test-driven_development[20] http://www.pcmag.com

    Ambily O.A et al. / International Journal of Engineering Science and Technology (IJEST)

    ISSN: 0975-5462 Vol. 3 No. 1 Jan 2011 405