Software Engineering Process Using Agile
Software Engineering Process Using Agile
Keywords
"Agile software development",
"Continuous Integration",
"Test driven development"
Abstract
Agile software development practices offer compelling advantages like
streamlined processes, less “paper work”, high quality, creativity in work,
shorter delivery cycles, and above all customer satisfaction. Proper adoption and
implementation of agile processes is a challenge in itself. Automated tools and
practices like Continuous Integration, Test Driven Development, etc can largely
simplify agile adoption.
http://itnow.blogspot.com 1
Software Engineering Process using Agile Methodology
http://itnow.blogspot.com 2
Software Engineering Process using Agile Methodology
Advantages of Agile
- Shortened development cycle
- Higher stability of work-loads
- Higher utilization of work-load, that is, developing large-scale, software
systems with a fixed number of developers,
- Higher flexibility to change of Management & development plans
- Higher quality by earlier feedback from the customers.
- Customer satisfaction by rapid, continuous delivery of useful software
- Working software is delivered frequently (weeks rather than months)
- Even late changes in requirements are welcomed
- Simplicity
Agile in a nutshell
- Develop project in small iterations. Iteration length should be fixed early on
(based on the practice, example XP, RUP, etc).
- Each iteration (often called as time-box) is a mini project in itself. Every
iteration will have its own planning, requirements analysis, design, coding,
testing, and documentation phase
- Do not stick to a pre defined process. Process should be tailored based on
project need and various other parameters like people skills, requirements, etc.
http://itnow.blogspot.com 3
Software Engineering Process using Agile Methodology
- Aim for fluid long term plans and concrete short term plan.
- Reevaluate project priorities and process at the end of each iteration.
- A usable though minimal system can go in production at the end of every
iteration.
- Questions to ask in the meeting at the end of every iteration
o What did we do well?
o What have we learned?
o What can we do better?
o What puzzles us?
- Good team communication and collaboration is very important. Prefer face to
face, oral communication over written documentation. Use collaboration tool
to share ideas and easily disseminate information.
- If possible, physically locate the team together. Modern communication
methods like frequent telephone/video conferencing should be used if the
project team is geographically distributed (e.g. onsite-offshore model).
- Prefer developed software (or the features completed) over documents or task
list as a primary measure to track progress.
- Developers should have access to good quality business expertise.
- Welcome changes; be adaptive rather then predictive; people oriented, rather
than process oriented.
- Control an unpredictable process through iterations.
- Define a good feedback system that will tell us where we are at the end of
every iteration.
o Example: Customer himself can provide excellent feedback.
- Primary concern should be "business value", did the customer get what he
asked for?
http://itnow.blogspot.com 4
Software Engineering Process using Agile Methodology
http://itnow.blogspot.com 5
Software Engineering Process using Agile Methodology
http://itnow.blogspot.com 6
Software Engineering Process using Agile Methodology
Deliverables
- Traditional approach for project deliverables
o Requirement collection is often the first (and only) phase in project life
cycle. Requirements provided by the user often form the scope
baseline which is verified against the final deliverable.
o Lot of customer interaction is done early on to properly "capture the
requirement" and to deliver the same.
o This approach attempts to deliver the entire software at once, based on
the requirements captured in early stage of the project.
o Projects often have milestone or end of phase deliverables. But these
deliverables are in form of documents. Documents can differ from the
actual development and fail to give a clear picture of the developed
software.
- Agile approach for project deliverables
o Final deliverables are not "completely" planned early on.
o Deliverables are planned only for the next iteration.
o Entire application is delivered in "production ready" quality at the end
of each iteration (with more features in each delivery).
o Customer can get early access to a striped down version of the
software.
o Customer expectations are satisfied and re evaluated at the completion
of every iteration.
o Difference in understanding between the customer and development
team reduces with every iteration.
o No surprises in the final delivery!
o Delivery in form of working system instead of documents.
Documentation
- Documentation is a form of communication.
- Documentation can also be used for information archival or historic purposes.
- Traditional approach
o Traditional process will typically have lot of documentation in every
phase of software dev. Note: “Code-and-fix” style software
development might have no documentation but it often leads to chaos.
o Documentation create in such projects will generally hide the system
flaws and concentrate on what works.
o While documentation might make a system look "complete", in reality
it might not capture or correctly communicate the real essence of its
existence.
o Documentation is done either in early phase or later in the
development process, leading to documents that are either not
http://itnow.blogspot.com 7
Software Engineering Process using Agile Methodology
Communication
- Good communication is one of the keys to successful agile projects. Bad
communication can very easily drive agile projects to failure.
- Every team member should be aware of the advantages of communicating and
the disadvantages of not doing so.
- Project management should provide an environment where good
communication can take place.
- People availability (especially business analyst or domain expert) is an
important factor.
- Face to face communication should be done where ever possible.
- Oral communication should be preferred over written.
- Special measures should be taken if the team is distributed (example offshore)
or working remotely (work from home).
http://itnow.blogspot.com 8
Software Engineering Process using Agile Methodology
People
o Requires very efficient team of developers.
o People should work together and communicate frequently and openly.
o Agile recognize people for there skills, expertise, creativity and
uniqueness. Every team member is important and responsible for
his/her part of the project. Loss of such team members often create a
void space which is not easily filled by a new replacement.
o Agile projects succeed fast, but if not handled properly, they can also
fail fast!
o "Self-Organizing Teams" often require micro management which is
not always welcomed.
o People must be trusted
o Organizations must live with the decisions developers make
Other Challenges
- Getting started and coming up to speed might be the most difficult part.
- Flawed implementation of agile could be very dangerous for the project
health.
- Loss of privacy. It takes time for people to get used to working together.
- Communication and management can be challenging with offshore teams.
- The culture of the organization must be supportive of negotiation
http://itnow.blogspot.com 9
Software Engineering Process using Agile Methodology
Agile Methods
Numerous agile methods have been proposed and used over the last decade. Listed below
are some of the most popular methods, often adopted in agile projects. Explaining each
method is not in scope of this document. It is recommended to select a method that fits
individual project and team requirement. Once the approach is finalized, it should be
properly understood by all the team members (project manager, developers, testing team,
business analysts, etc).
http://itnow.blogspot.com 10
Software Engineering Process using Agile Methodology
http://itnow.blogspot.com 11
Software Engineering Process using Agile Methodology
http://itnow.blogspot.com 12
Software Engineering Process using Agile Methodology
- Characteristics:
- Iterative and Incremental
- Use Case Driven(use cases are used to capture the functional
requirements and to define the contents of the iterations)
- Architecture Centric
- Risk Focused
- Project Lifecycle: Inception Phase, Elaboration Phase, Construction Phase,
Transition Phase.
- AUP is a simplified version of RUP
http://itnow.blogspot.com 13
Software Engineering Process using Agile Methodology
SCRUM
- SCRUM is a management, enhancement and maintenance methodology
for an existing system. SCRUM will address new or re-engineered
systems development efforts at a later date.
- Software product releases are planned based on the following variables :
o Customer requirements - how the current system needs enhancing.
o Time pressure - what time frame is required to gain a competitive
advantage.
o Competition - what is the competition up to, and what is required to
best them.
o Quality - What is the required quality, given the above variables.
o Vision - what changes are required at this stage to fulfill the system
vision.
o Resource - what staff and funding are available.
These variables form the initial plan for a software enhancement project.
However, these variables also change during the project. A successful
development methodology must take these variables and their evolutionary nature
into account.
http://itnow.blogspot.com 14
Software Engineering Process using Agile Methodology
- CI tools can interact with other software development life cycle tools like bug
tracking system and eclipse IDE to provide valuable development time
information.
Commercial CI servers
- AnthillPro - a commercial tool from Urbancode. Along with
CruiseControl, Anthill is one of the original tools in this category; it
remains a market and technology leader constantly adding new
features such as dependency mangement, workflow automation, etc.
- Bamboo - Commercial continuous integration server from Atlassian
- Build Forge - IBM Rational's adaptive framework to standardize and
automate build and release processes.
- Electric Commander - a continuous integration server by Electric
Cloud, John Ousterhout of Tcl fame's company.
- TeamCity - a commercial tool by JetBrains. Web-based with IDE
(IntelliJ IDEA, Eclipse, Microsoft Visual Studio) support. Includes
many innovative features.
- QuickBuildPro - by PMEase
http://itnow.blogspot.com 15
Software Engineering Process using Agile Methodology
Issue/Bug/Defect Tracker
- JIRA(commercial) - Java based issue tracking system
- Trac – A Wiki-based issue tracking system
- Mylin(old name Mylar) - to manage tasks in Eclipse
Build system
- Ant
- Maven2
- Krysalis Centipede
http://itnow.blogspot.com 16
Software Engineering Process using Agile Methodology
Final words:
Agile methodology has been criticized in some areas that parallel or cross management
practices. However, if implemented properly and thoughtfully, agile practices can make
the best use of people to deliver very high quality software that meets or exceeds
customer expectations. TDD, CI and collaboration tools can help simplify the agile
process.
External References
Agile Documentation
http://www.agilemodeling.com/essays/agileDocumentation.htm
http://www.ddj.com/184415786
Agile Challenges
http://www.agileadvice.com/archives/2006/09/agile_challenge.html
http://itnow.blogspot.com 17
Software Engineering Process using Agile Methodology
http://en.wikipedia.org/wiki/Comparison_of_wiki_software
http://itnow.blogspot.com 18