Agile Software Development



Download 20.32 Kb.
Date02.02.2017
Size20.32 Kb.
#15309

Agile Software Development

Term Paper Fall 2011

CSC 532

Max Sop

Introduction

Software development is an expensive, and often a difficult process. It is well documented that software projects are typically over schedule, over budget and often do not meet user requirements. The main problems are all associated with people related issues. In order to address this problem, the Agile philosophy was introduced in the early 90’s with an associated portfolio of Agile methods. These methods are specifically designed to improve software project team management. Agility in short means to strip away as much of the heaviness, commonly associated with traditional software development methodologies, as possible, in order to promote quick response to changing environments, changes in user requirements, accelerate project deadlines, and so on [1].

Philosophy

Agile is a framework of principles that employs a range of different software methods - referred to as Agile methods. The Agile philosophy is primarily informal with minimal documentation. Hence the emphasis is on verbal and social communication within the development team. Significantly Agile based methods have been gaining widespread acceptance amongst practitioners.

The principles behind the Agile philosophy recommends that change should be welcomed at every stage of the software development cycle; that working software should be delivered frequently; and that conveying information via face-to-face conversation is more efficient than through written documentation.

Perhaps the biggest problem with software development is changing requirements. Agile processes accept the reality of change versus the hunt for complete, rigid specifications. There are domains where requirements can't change, but most projects have changing requirements. For most projects readily accepting changes can actually cost less than ensuring requirements will never change [2][1].

Agile also means a fundamental change in how projects are managed. If working software is what you will deliver then, measure your progress by how much you have right now. Management style must be based on getting working software done a little at a time. The documents used to create project milestones may still be useful, but just not as a measure of progress [4]. Figure1 shows a graphical overview of what goes into Agile methods of software development.

Success of the Agile Development Approach

Agile methods are based on five main principles defined to lower the cost of change during the development and increase the users’ involvement:



  1. Customer’s involvement. Close involvement of customers in the development process is required in order to provide and prioritize system requirements, and evaluate system’s iterations.

  2. Incremental development. System should be developed in increments that should be delivered to the customers who define the requirements that should be provided by each increment.

  3. People not process. The development of software systems depends on the development team’s skills instead of following defined processes.

  4. Embrace change. The system should be expected to change, and development should accommodate these changes.

  5. Simplicity. Simplicity should be considered in both the developed software, and used development process.

Types of Agile Development Approach/Methodology

  1. Extreme Programming (XP)

XP is a package of several practices and ideas, most of which are not new. Extreme Programming was in fact targeted especially at small co-located teams developing non-critical products. XP provides a list of simple, specific, and seemingly naïve principles and values that guide the software development process throughout the main four phases of software development: planning, coding, designing, and testing. The main purpose is to deliver what the customer needs, at the time it is needed. In addition to this, one of the main reasons of its success is its ability to accept changes at anytime during the development. XP also emphasizes teamwork; experiences from all stakeholders are employed to meet the specific goals, and within the given constraints [6].

  1. SCRUM

SCRUM comprises or adds project management as part of its practices to the XP approach. These practices guide the development team to find out the tasks at each development iteration. For the team of SCRUM, three main roles are defined. The first role is the product owner, who mainly would be the voice of business. The second role is the SCRUM team which comprises developers, testers, and other roles. This team would make initial contact with customer and identify the need for a new product. SCRUM master, which is the third role, is responsible for keeping the team focused on the specific goals, and help the team members to solve problems when they appear.

  1. Feature-Driven Development

Feature-driven development (FDD) is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all driven from a client-valued functionality (feature) perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner [7].

  1. Agile Modeling (AM)

AM enables software developers to think about complex issues before addressing them in programming. It is a collection of values, principles, and practices for modeling software that can be applied on a software development project in an effective and light-weight manner [2]. Agile Modeling was built to be adapted to, and used with existing methodologies, as XP and RUP, aiming to allow a developer to build a software system that truly meets the customer’s needs [7].

Limitation of the Agile Software Processes

Agile development aims to support early and quick development of working code that meets the needs of the customer. Agile supporters claim that code is the only deliverable that matters, whereas, agile opponents found that emphasis on code will lead to memory loss, because the amount of documentation and modeling done is not enough.

There are some limitations to apply Agile methodologies. First of all, Agile methodologies are not suitable for green-field engineering and they are not suitable for maintenance, since there will be not much documentation for the systems.

The second limitation is that agile methodologies depend heavily on the user involvement, and thus, the success of the project will depend on the cooperation and communication of the user.

Another limitation is that agile methodologies concentrate work quality on the skills and behaviors of the developers, as the design of the modules and sub-modules are created mainly by single developer. When developing software to be reusable, Agile methodologies will not provide the best way. This is because the focus is on building systems that solve specific problems, and not the general ones [6].

Agile methodologies work best for teams with relatively small number of members, and hence, they will not work well for teams with large number of members.

one dozen agile words: iterative planning, honest plans, project heartbeat, working software, team empowerment, and daily communication.

Figure1: ASD

Conclusion

The most important thing to know about Agile methods or processes is that there is no such thing. There are only Agile teams. The processes we describe as Agile are environments for a team to learn how to be Agile [4]. Always deliver working software at the end of each and every iteration. Conduct a demonstration of new features every iteration. End every iteration with a retrospective on what could be done better next time. Start every iteration with a planning meeting. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Working software is the primary measure of progress [5]. To get the advantages of applying agile methodologies in the development, there is a set of assumptions that are assumed to be true: cooperation and face-to-face relation between the customers and the development team; evolving and changing requirements of the project; developers having good individual skills and experiences; in addition to many more. If these assumptions do not apply to a software development project, then it is better to look for other methodologies to apply for the development process, in order to get better results [6].

References

[1] AlAli, A, & Issa, A 2011, 'Towards Well Documented and Designed Agile Software Development', World Academy of Science, Engineering & Technology, 73, pp. 126-131, Academic Search Complete, EBSCOhost, viewed 19 October 2011.

[2] Green, R, Mazzuchi, T, & Sarkani, S 2010, 'Communication and Quality in Distributed Agile Development: An Empirical Case Study', World Academy of Science, Engineering & Technology, 61, pp. 322-328, Academic Search Complete, EBSCOhost, viewed 19 October 2011

[3]http://en.wikipedia.org/wiki/Agile_software_development#The_Four_Phases_of_Traditional_Software_Development

[4] http://www.agile-process.org/heartbeat.html

[5] http://agilemanifesto.org/principles.html

[6] http://www.arpapress.com/Volumes/Vol1/IJRRAS_1_01.pdf

[7] http://en.wikipedia.org/wiki/Feature-driven_development



Fall 2011 Page



Download 20.32 Kb.

Share with your friends:




The database is protected by copyright ©ininet.org 2024
send message

    Main page