1 . Introduction
Software Developing is very important and main part of the Software Engineering. When we think about Software Developing, we can’t forget the Software Developing Methodology. As I know many Software Developing Methodologies are available. The Agile is one of Software Developing Methodology.
In this document I would like to discuss about what is Agile and behaviour of the Agile Software Developing Methodology and how use that methodology in practically. Also I will discuss about other available Software Developing Methodologies and compare with Agile. Then the experience with Agile and advantage and disadvantage of the Agile compare to other Software Developing Methodology.
In Practical Project subject we suppose to do “Pharmacy System”. We use the Agile methodology. Still I don’t have more experience with Agile. We have done project with other Software Developing Methodology like Waterfall model. But in this project we will get good experience with Agile and learn how it can apply to a project to produce high quality System to the client.
2. Background
2 .1.What is Agile methodology..?
Agile is a software development methodology base on iterative development which gives best solutions in quickly to a given requirement with in a fixed time and process adaptability throughout the life-cycle of the project.
The Agile works like this, First project group must gather the requirements from client by having interviews. Then they should analyse what are the main requirements that client wants. Then they make a minimal plane for the project. After that they priorities the requirements according to the client want. Then they decide the fixed time for the project. Then they start the project. When they start project first they start with high priority requirement. While developing first step, they meet clients continually and ask for any changes, If there are any changes they apply and develop the system. After finish first step they show the system that they have develop. Then get feedback from clients, if any changes they change them and deliver to customer, then start next part, like that step by step they develop the system until the project is finish. The Agile uses planning, prioritization, iteration and collaboration. Below Diagram 1 shows the process of the Agile.
2.2. Some Principal of Agile
a . Satisfy the customer – In agile continuously developer should deliver some part of product to the customer. Then customer gets some pieces of software and they satisfy with what they have got.
b . Welcome change requirements – Even the requirements are late the Agile method welcome the changes. Because in Agile the project develop step by step. Therefore it easy to change requirements event it late.
c . Deliver working software frequently – When the one part is finish it deliver to customer by a couple of week rather than couple of month.
d . Cooperation between business people and developers – Business people and developers must work together daily through the project.
e . Face-to-face conversion – In Agile has good communication with the customer. The developer always talks to client.
2.3.Common Agile methods
2.3.1. Scrum
Scrum is one of agile software development method which use iterative and incremental for project. Scrum has main two category group of roles. Those are “Pigs” and “Chickens”. The all main roles fall into this two group. Like below,
(i).“Pigs” roles
a. Scrum Master (or Facilitator)
This is responsible for maintains the process, most time this part take by project manager.
b. Product Owner
This party represent stockholders and the business.
c. Team
This represent by the people who do the project. Their task are analysis, design, implement testing, etc.
(ii). “Chickens” roles
a. Stakeholders
In this party represent customer and vendors.
b. Manager
Manager is the person built the environment for product development.
2.3.2. Extreme programming
This also one of Agile software development method where it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
In Extreme programming has a goal. It always try to reduce the cost of project by having multiple development cycle rather than having long term one.
Extreme programming has four activities to the performed software development process. Those are coding, testing, listening, and designing.
Also Extreme programming recognizes four values. Those are communication, simplicity, feedback and courage.
2.4. Other Software development methods.
2.4.1. Waterfall model
This is a sequence of process of software developments. This mean in this method the project is done by step after step. When first step is finish then go to the next then finish that step, like that go through all the process one by one. The below phases are followed in order,
Requirement specification
Design
Implementation
Verification
Maintenance
2.4.2. Iterative waterfall model
This method is like the waterfall model but in this model the process can be iterative at any time. The basic idea is develop a project through repeated cycle(iterative)
2.4.3. Prototyping method
Before starting development of the actual system, a prototype will be built. It may be impossible to get system right first time, so build one throw away.
1. Carry out a quick requirements analysis.
2. Carry out a quick design.
3. Build a prototype using short-cuts (Here not error checking or exception handling.)
4. Submit the working prototype to the customer for evaluation.
5. Use customer feedback to refine the requirements, and hence the prototype.
Prince has many activities like Starting up a project, Initiating a project, Directing a project, Controlling a stage, Managing stage boundaries, Managing product delivery and Closing a project.
3. Literature
3.1. Some Survey results
3.2.What do the experts say
“The barrier to change is not too little caring; it is too much complexity”
Bill Gates
(Inventor of DOS and Windows)
(Inventor of DOS and Windows)
"Agile methods derive much of their agility by relying on the tacit knowledge embodied in the team, rather than writing the knowledge down in plans."
Barry Boehm
“Agile consultants: pricey, but not enter pricey”
Mads Buus Westmark
(Capgemini Ruby on Rails pioneer)
(Capgemini Ruby on Rails pioneer)
“A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little nor too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity. “
Geoffrey James
Geoffrey James
(From The Tao of Programming)
“An agile manager must: manage & deal w/ risk, be results oriented, have high energy, be a team player, have multi-tasking ability, be improvement oriented, listen first and speak second”
“Agile != following steps, Agile != tools training
Agile = individuals & interactions, Agile = Collaboration & Teamwork
Agile = Environment Matters! Agile = learning from experience
Agile=reflection, Agile is an adjective not a noun!”
Rachel Davies (Agile 2007)
Agile = individuals & interactions, Agile = Collaboration & Teamwork
Agile = Environment Matters! Agile = learning from experience
Agile=reflection, Agile is an adjective not a noun!”
Rachel Davies (Agile 2007)
“Agile is:
- A project management process that encourages frequent inspection and adaptation
- A leadership philosophy that encourages team work, self-organization and accountability
- A set of engineering best practices that allow for rapid delivery of high-quality software
- A business approach that aligns development with customer needs and company goals”
Mike Cottmeyer / Jon Strickler
- A project management process that encourages frequent inspection and adaptation
- A leadership philosophy that encourages team work, self-organization and accountability
- A set of engineering best practices that allow for rapid delivery of high-quality software
- A business approach that aligns development with customer needs and company goals”
Mike Cottmeyer / Jon Strickler
“Deliver Frequent Releases, Empower Teamwork, Inspect and Adapt, Build Quality In”
4. Assessment
4.1. Why Agile is use..?
a. Business needs had changed – When the large system is developing for a business if business wants to change, in traditional methods it’s very difficult to change the plane. But in agile even the requirement is change while developing the system it is possible to change. Therefore Agile is very useful.
b. The project did not deliver as promised – Some time projects not deliver on tome as they promised. But in Agile always provide the some working part of the system to client. Also it’s very easy to deliver project on tome.
c. Technology change – If the project is more longer, it takes long time to develop. In traditional methods it takes more time to develop the system. During this time the technology will change. The customer gets all technology for their system. But in Agile it is possible to change during they develop the system.
d. Project exceeded the budget – When using traditional methods if client wants to change their requirements it may exceeded the budget. But in Agile during the developing to change idea is not difficult.
4.2. Benefits and weaknesses of Agile method
4.2.1. Benefits to clients and Developers.
To Clients
· Customer is more actively involved to the project, In beginning and During.
· Clients gets frequent status of the project and have meeting with client frequent, therefore clients are more involved with project.
· Customers receive some functionality system in small time period.
· Testing is done during developing, therefore customer gets quality software.
To Developer
· Less time to gather requirement
· Agile is adaptive rather than predictive, therefore minimal documentation more attention on developing.
· In Agile developing is incremental, therefore at any given time developer cat focus on the special requirement.
· In Agile they have regular meeting, therefore they have good communication and developer may easy for to do their task.
4.2.2. Weakness of Agile.
· It requires think and acting in new ways – In here it always leads to new way. In very beginning Agile not planning everything. During the project is running they plane the project. Therefore they have to thing in new way.
· Roles and responsibilities will change – When the developing the if it’s wants to add new feature the developer or manager or client may change according to the requirement. In such a situation when roles are change it’s difficult to handle
· Process will change. – During the project running if customer wants to change requirements the process will change.
· Frequent delivery – The customer needs to be ready and available for get the software and testing of feature for entire duration of the project. This may time wasting of customer.
4.3. How is Agile different..?
Topic
|
Traditional
|
Agile
|
Driver
|
Plan-Driver
|
Value-Driver
|
Resources
|
Partial allocation
|
Dedicated
|
Sponsor Involvement
|
Ad Hoc
|
Daily
|
Change
|
Difficult to change
|
Easy to change
|
Leadership
|
Command and control, Telling directive
|
Servant leadership,
|
Lifecycle
|
Phased approach, serial, sequential
|
Short iterative development cycles, incremental delivery
|
Communication
|
Status meeting, communications plan, stockholder meeting
|
Daily meeting, collaboration, in room/table dialog
|
Deadlines
|
Identify risk, compute additional resources needed to make the date
|
Deliver in time-box, estimate completion range base on team.
|
Requirements change
|
Submit change request, re-work schedule
|
Dedicated product owner involved with the team on a daily basis.
|
Testing
|
After Code
|
Integrated
|
Customer involvement
|
Before, After
|
During
|
Negotiable
|
Estimate
|
Schedule
|
Feedback
|
After
|
During
|
5. Conclusions
I am new to Agile way of developing software. Before I use some other software development methods like waterfall, prototype methods. But in Practical project subject I have learn about the Agile. When I go through the Agile I can see the difference of other traditional methods and Agile and I can see lot of weaknesses of the structured approach than the Agile.
In the Structured approach the development occurs in finally. But in Agile development coding and implementation are in begging. The aim of the Agile is to deliver a workable software solution to the client as possible. If we use a traditional method of development, then we would only see the client before and after the development. Before the development starts we meet the client and get the requirements. Develop the solution which will take some time, then give the client the finished product. But during the time of developing the solution, client requirements might change. So the finished product does not address the client needs.
But in Agile developers meet clients every couple of week which is the time period of one sprint. Sprint is a short time period of development where development is focused on a small development task or couple of task. Then the software showed to the client and If the clients requirement have changed even by them, client can indicate to developers and developer could change the existing code and make it to what the client wants. I think this is one best part of the agile. When we do a project to client, we should be able to give good solution to them and it should be very suitable to them. If we use traditional method the client wait long time and when they get the software if anything they want to change they must have to spent lot of time and money. I think in Agile that issue will be cover.
Next point is, Agile is Adaptive rather than predictive. In Agile we divide our system into sub systems and implement each by each. And also we get the requirements of the customer constantly. So that if the requirements of the customer changes we can easily adopt that to our system. But in traditional methods we only meet the client at the beginning and at the end of the implementation. So if the requirements of the customer changes during the implementation there is no way to develop our system to the new requirements. So that the end of the project the requirements of the customer may be outdated. I think this is very important to the both client and developers. Because both of them can save their time.
In Agile method not going to do big documentation. When the project is start it’s start implementation. But in traditional methods first they have big documentation and then they start the implementation. In here they have to extra time. I think in Agile very nicely handle documentation. In Agile also has documentation but it’s minimal. In a project most of the time clients expect from us a good, quality software rather than the documentation.
I think if we use Agile in correct way and efficiently this may best software development methodology compare to other traditional methods.
6. Reference
Wikipedia. (2001). Agile software development. Available: http://en.wikipedia.org/wiki/Agile_software_development#Experience_reports.
Last accessed 25 Jul 2010.
Wikipedia. (2001). PRINCE2. Available:
Last accessed 25 Jul 2010.
Wikipedia. (2001). Waterfall module. Available:
Last accessed 25 Jul 2010.
Wikipedia. (2001). Extreme programming. Available: http://en.wikipedia.org/wiki/Extreme_Programming#Values.
Last accessed 25 Jul 2010.
Jesper Rønn-Jensen. (Anonymous ). Great Quotes For The Agile Project Wall. Available: http://justaddwater.dk/2008/02/24/great-quotes-for-the-agile-project-wall/.
Last accessed 26 Jul 2010.
3terra. (1997 ). Tag: Agile. Available:
Last accessed 26 Jul 2010.
Kevin E. Schlabach. (2006). Quote Series Part 1 - Agile. Available:
Last accessed 26 Jul 2010.
Scott W. Ambler. (2006). Currently Active Surveys. Available:
Last accessed 26 Jul 2010.
Mike. (2007). LAgile Interfaces - PMO Integration. Available: http://leadinganswers.typepad.com/leading_answers/2007/06/index.html.
Last accessed 25 Jul 2010.
Credera. (2009). Scrum Development Methodology . Available: http://www.credera.com/WHATWEDO/JAVASOLUTIONS/ScrumDevelopmentMethodology.html. Last accessed 25 Jul 2010.
J. Donovan Wells. (Anonymous ). Agile Software Development. Available:
Last accessed 25 Jul 2010.
Peter. (2005). Software Life-cycles. Available:
Last accessed 25 Jul 2010.
No comments:
Post a Comment