Agile Software Development Methodologies
(XP & SCRUM)
Overview
Agile Modeling (AM) is a chaordic, practice-based methodology for effective modeling of software-based systems. based on iterative and incremental development,The AM methodology is a collection of practices – guided by principles and values – that are meant to be applied by software professionals on a day-to-day basis. AM is not a prescriptive process, in other words it does not define detailed procedures for how to create a given type of model, instead it provides advice for how to be effective as a modeler. AM is “touchy-feely” in that it is not hard and fast – think of AM as an art, not a science.
Key Features of Agile Software Development:
- Iterative : Entire application is distributed in incremental units called as iteration. Development time of each iteration is small (couple of weeks), fixed and strictly adhered to. Every Iteration is a mini increment of the functionality and is build on top of previous iteration.
- Active Customer involvement : There is lot of client involvement and face-to-face interaction. Every iteration is tested and approved by client. The feedback obtained is implemented in subsequent iterations; thus minimizing risk and ensuring higher client satisfaction.
- Feature driven : More emphasis is on providing the required features in the application. 80/20 principle is applied to decide the 20% features which would be used 80% of the time.
- Fixed Time : Each iteration has a fixed time span in which it is delivered.
- Priority based delivery : Features are prioritized depending on customer need, development risk etc. High priority features are developed first. After every iteration, the project priorities are re-evaluated.
- Adaptive : The methodology in general is very adaptive, so that the application that is developed can cater to inflow of new requirements throughout its development. Goal is not to remove the uncertainty in the very beginning, but is to adapt to the changing needs.
- Empowered Teams : The project teams are generally small and have lot of interaction and communication. Since entire team is actively involved, team is empowered to take decisions. No separate team to manage project.
- People Centric : More emphasis is on using the adequately skilled people to do the development than on following the processes. The documentation and other non-development activities are minimized and more time is devoted to development and testing.
- Rapid development : Generally the development is done rapidly using light weight development technologies.
- More disciplined : Being rapid, everything has to be delivered correctly first time. So the process involves lot of team and self discipline Thus, it requires highly skilled and organized team members.
- Simplicity : Emphasis is on keeping things as simple as possible and being open to change.
When to (not!) use Agile?
Before going Agile; Ask
1. Is functionality split-able
2. Is customer available
3. Are requirements flexible
4. Is it really time -constrained
5. Is team skilled enough
Various Agile Software development methodologies here i will talk about tow methodologies extreme Programming (XP) and SCRUM.
Extreme programming (XP)
Extreme programming (XP) or test driven development is an agile software development methodology used for a quick delivery of new critical functionality. High-quality deliverables with this agile methodology are ensured by continuous testing (including unit testing), customer collaboration, constant close team members interaction and focus on small releases within 1 to 3 weeks.
§ The benefits of Extreme Programming are:
1. Unit testing of all code
2. Avoiding programming of capabilities until necessary
3. Programming in pairs or carrying out extensive code review
4. Clarity and simplicity in code
5. Volatile customer requirements much better understood
6. A flag management structure
7. Frequent communication between the programmers and even with the customer
1. Unit testing of all code
2. Avoiding programming of capabilities until necessary
3. Programming in pairs or carrying out extensive code review
4. Clarity and simplicity in code
5. Volatile customer requirements much better understood
6. A flag management structure
7. Frequent communication between the programmers and even with the customer
§ The drawbacks of Extreme programming are: 1. No documented compromises of user conflicts
2. Unstable requirements
3. Lack of overall design document or specification
4. Incorporates inadequate software program design
5. Necessitates meetings at recurrent intervals at huge expense to consumers
6. Can enlarge the risk of scope creep due to the lack of thorough requirements documentation
7. Requires excess of cultural change to adopt
2. Unstable requirements
3. Lack of overall design document or specification
4. Incorporates inadequate software program design
5. Necessitates meetings at recurrent intervals at huge expense to consumers
6. Can enlarge the risk of scope creep due to the lack of thorough requirements documentation
7. Requires excess of cultural change to adopt
§ Programmers don’t build frameworks and infrastructure for the features that might be coming.
§ Small Releases
Programmers build the system in small releases defined. An iteration is typically two weeks. A release is a group of iterations that provide valuable features to the users of the system.
Programmers build the system in small releases defined. An iteration is typically two weeks. A release is a group of iterations that provide valuable features to the users of the system.
§ Sustainable Pace
The team needs to stay fresh to effectively produce software. One way to make sure the team makes many mistakes is to have them work a lot of overtime.
The team needs to stay fresh to effectively produce software. One way to make sure the team makes many mistakes is to have them work a lot of overtime.
§ Test Driven Design
Programmers write software in very small verifiable steps. First, we write a small test. Then we write enough code to satisfy the test. Then another test is written, and so on.
Programmers write software in very small verifiable steps. First, we write a small test. Then we write enough code to satisfy the test. Then another test is written, and so on.
SCRUM methodology
The Scrum methodology is an incremental, iterative framework for agile software program development and project management. The word “Scrum” is not actually an acronym. Nonetheless, several firms using this methodology spell it with capital letters. Initially Scrum methodology was focused for management of software development projects, but in recent times it might be employed to run general program/project management approach or software program maintenance teams. Scrum, which contains sets of predefined roles and practices, is a process skeleton. Principal roles in this approach are:
1. Product Owner – Represents Stakeholders
2. Scrum Master – The one responsible for maintaining the processes
3. Team – cross functional group of about 6-8 folks who do actual design, testing, implementation, etc.
2. Scrum Master – The one responsible for maintaining the processes
3. Team – cross functional group of about 6-8 folks who do actual design, testing, implementation, etc.
Every single of the iteration is known as a”sprint”, typical time frame for which is generally about two to four weeks. The length of every sprint is decided by the team. The item “backlog” pushes the set of capabilities into a spring. These capabilities are prioritized set of greater level requirements for the task to be carried out. Based on this item “backlog”, the team determines how several of the items may be completed inside the next sprint. When the sprint begins, nobody is allowed to alter the sprint backlog, which means that the set of requirements are frozen. On effective completion of a sprint, the team demonstrates the usage of that particular software.
This methodology ought to be encouraged in organizations considering that the major advantage of employing the Scrum is that it enables the creation of teams that are extremely self-organizing in nature. This is achieved by encouraging verbal communication amongst the team members, co-location of all of the team members and disciplines that are involved for the project.
You want two things out of your development vendor: 1) fast results that 2) meet your needs. Mentor Mate uses an SCRUM agile methodology to make sure that's exactly what you get. You'll have pieces of production-ready code in your hand within weeks of beginning development.
The benefits of this methodology are simple:
- You've got pieces of working code in your hands every few weeks
- You can make priority changes and new features as the project progresses
- You're in constant contact with our team to make sure things are running smoothly
Differences between Scrum and Extreme Programming(XP):
1. The time span for iterative sprints is various in both approaches.
2. Adjustments aren’t allowed by the Scrum teams in the course of their sprints. Whereas Extreme Programming teams need to be much more agreeable to modifications.
3. Function is done by XP teams in strict priority order. Whereas in case of Scrum, the product owner prioritizes the set of activities.
four. XP does prescribe some engineering practices; Scrum doesn’t.
1. The time span for iterative sprints is various in both approaches.
2. Adjustments aren’t allowed by the Scrum teams in the course of their sprints. Whereas Extreme Programming teams need to be much more agreeable to modifications.
3. Function is done by XP teams in strict priority order. Whereas in case of Scrum, the product owner prioritizes the set of activities.
four. XP does prescribe some engineering practices; Scrum doesn’t.
Summary
Both XP and Scrum are approaches to product development. Oddly enough, product development teams are finding that integrating both approaches together is proving to be an excellent approach to accomplishing their ultimate goal of utilizing strong cohesive teams to develop new software products. Both Scrum and XP utilize short work periods during which work product is completed by team members, which work closely together with complementary skills and abilities.
Done By : Ahmad Osta
References:
- Agile Software Requirements, for Dean Leffingwe- The Art of Agile Development , for James Shore
Hi, probably our entry may be off topic but anyways, I have been surfing around your blog and it looks
ReplyDeletevery professional. It’s obvious you know your topic and you appear fervent about it. I’m developing a
fresh blog plus I’m struggling to make it look good, as well as offer the best quality content. I have
learned much at your web site and also I anticipate alot more articles and will be coming back soon.
Thanks you.
Project Management Training
thanks sorna
DeleteThanks for sharing, I will bookmark and be back again
ReplyDeleteAgile Software Development
Transparency is a must in scrum rules as it allows important aspects of the process to be visible to all the members who are responsible for the result. Since every team member should understand it is always advisable to use a common “terminology” so that reviews can be shared by all.
ReplyDeleteI also took my PMP Classes from PMstudy. You can have a look at their offerings.
ReplyDelete