Agile Software Development

advertisement
Agile Software Development 2011
Agile Software Development
Term Paper Fall 2011
CSC 532
Max Sop
Fall 2011
Page 1
Agile Software Development 2011
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
Fall 2011
Page 2
Agile Software Development 2011
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.
Fall 2011
Page 3
Agile Software Development 2011
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 noncritical 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].
2) 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
Fall 2011
Page 4
Agile Software Development 2011
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.
3) 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].
4) 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.
Fall 2011
Page 5
Agile Software Development 2011
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.
Figure1: ASD
Fall 2011
Page 6
Agile Software Development 2011
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].
Fall 2011
Page 7
Agile Software Development 2011
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 8
Download