The style of Software development that focus on customer satisfaction through continuous delivery of functional software, named as Agile software development. Literary word “AGILE” means “Characterized by quickness, lightness, and ease of movement”. That indicates Agile software development is all about fast delivery of software with more ease of development.
Agile was developed in 2001 by a group of software development writers who got together to find common ground to promote better ways of developing software. There are various Agile Software development methodologies. Few of them can be listed as following:
- Extreme Programming
- Scrum
- Agile Modeling
- Adaptive Software Development (ASD)
- Crystal Clear and other Crystal methodologies
- Dynamic Systems Development Methods (DSDM)
- Feature Driven Development (FDD)
- Lean software development
- Agile Unified Process (AUP)
The four core values of the agile software development teams
· Individuals and Interactions over processes and tools
· Working software over complete documentation
· Customer collaboration over contract negotiation
· Responding to change over following a plan
12 principles of Agile Manifesto are as follows:
- Highest priority of Agile Manifesto is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even ate in development. Agile processes harness changes 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.
- Built projects around motivated individuals. Give them the environment and support they needs, 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.
- Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity. The art of maximizing the amount of work not done is essential.
- The best architectures, requirements and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjust its behavior accordingly.
Common/key features of all agile software development methods
Iterative
Application is distributed in incremental units called as iteration. In another words, repeating a process of unit/module with the aim of approaching a development of the application (Software). Each repetition of the process is also called an "iteration", and the results of one iteration are used as the starting point for the next iteration.
Active customer involvement
In each iteration QA engineers or developers are testing the software and getting approve by client. So customer involvement in agile is very higher than other development methods. With the benefit of customer involvement, developers/system analysts getting customer feedback to each iteration. So it will help to minimizing risk and ensuring higher client satisfaction during the development.
Feature driven
Providing the required features in the application.
Fixed time
Every iteration have fixed time period to deliver.
Priority based delivery
By customer needs, the development team able to divide application features in to parts/modules and prioritize them. Then high priority features are developed first and deliver. This helps to maximize productivity.
Adaptive
Empowered teams
The project teams are generally small and have lot of interaction and communication. Development team must include all the necessary team members to make decisions, and make them on a necessary time. They must establish and clarify the requirements together, prioritize them together, according to the tasks, necessary to deliver together and estimate effort involved together.
People centric
Project team must filled with sufficiently 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. Rapid release of code improvements on a short time-scale.
More disciplined
When delivering application it must be accurate, perfect and correct at first time. To do that it requires highly skilled, self-discipline and organized team members.
Simplicity
Focus on keeping things as simple as possible and being open to change.
Life cycle of agile software development can be describe in a single figure like this
Comparing agile methodology with traditional software development methodology with some parameters of software development.
Describing two of agile processes
Dynamic systems development model
The Dynamic Systems Development Method (DSDM) is a public domain Rapid Application Development method which has been developed through capturing the experience of a large consortium of vendor and user organizations.
DSDM clearly represent itself as the most mature agile development method.
DSDM is a,
DSDM principals
There are 9 principles which are essential to any DSDM implementation, ignoring one of them will break with the frameworks philosophy and significantly increase project risks.- Active user involvement – Imperative.
- Teams must be empowered to make decisions.
- On frequent delivery.
- Criterion for accepted deliverable (Fitness for Business).
- Iterative and incremental development – Mandatory.
- All changes during development must be reversible.
- Requirements are base lined at high level.
- Testing is integrated throughout the life cycle.
- Collaborative and co-operative approach.
- Active user involvement – Imperative.
- Teams must be empowered to make decisions.
- On frequent delivery.
- Criterion for accepted deliverable (Fitness for Business).
- Iterative and incremental development – Mandatory.
- All changes during development must be reversible.
- Requirements are base lined at high level.
- Testing is integrated throughout the life cycle.
- Collaborative and co-operative approach.
Main focus of DSDM
- The key to DSDM is to deliver what business needs when it needs it.
- Achieved by using the various techniques in the framework and flexing requirements.
- The aim is always to address the current and imminent needs of the business rather than to attack all the perceived possibilities.
- A fundamental assumption of DSDM is that nothing is built perfectly first time, but that a usable and useful 80% of the proposed system can be produced in 20% of the time it would take to produce the total solution.
- The key to DSDM is to deliver what business needs when it needs it.
- Achieved by using the various techniques in the framework and flexing requirements.
- The aim is always to address the current and imminent needs of the business rather than to attack all the perceived possibilities.
- A fundamental assumption of DSDM is that nothing is built perfectly first time, but that a usable and useful 80% of the proposed system can be produced in 20% of the time it would take to produce the total solution.
DSDM processes illustrated below
Core Techniques Used in DSDM
Time boxing
Traditional Project Management uses milestones where as DSDM uses time boxing technique. Is an interval, usually no longer than 2, 4 or 6 weeks, where a given set of tasks should be achieved.
Time box- Can contain several tasks.
- At the end need to deliver a product.
- Are subject to change since tasks are defined, not what to be delivered.
- Can change the tasks during time box iteration which allows for rapid response to business needs.
DSDM drops functionality in flavor of delivering in time.
- Can contain several tasks.
- At the end need to deliver a product.
- Are subject to change since tasks are defined, not what to be delivered.
- Can change the tasks during time box iteration which allows for rapid response to business needs.
MoSCoW Rules
DSDM projects are concerned to be in time and on budget and users are heavily involved in the development process. So it is mandatory to keep on watch on what users need the most.User requirements may change (during the process);- Aware of new technical possibilities
- User work environment changes
The DSDM techniques to weight the importance of requirements are the MosCow rules. And the rules are as follows,- Must have : All features classified in this group must be implemented and if they are not delivered, the system would simply not work
- Should have : Features of this priority is important to the system but can be omitted if time constraints endanger.
- Could have : These features enhance the system with functional items which can easily be reassigned to a later time box.
- Want to have : These features only serve a limited group of users and are of little value.
- Aware of new technical possibilities
- User work environment changes
- Must have : All features classified in this group must be implemented and if they are not delivered, the system would simply not work
- Should have : Features of this priority is important to the system but can be omitted if time constraints endanger.
- Could have : These features enhance the system with functional items which can easily be reassigned to a later time box.
- Want to have : These features only serve a limited group of users and are of little value.
Prototyping
Evolutionary prototyping in DSDM projects satisfy 2 principles, - Frequent Delivery
- Incremental development
Implements critical functionality first so can discover difficulties early in the development process and allow having early deliverable to get user feedback.The necessary feedback-loop is provided by a workshop which is the last important technique in a DSDM project.DSDM differentiates on the following for types of prototypes,- Business Prototype : Allow assessment of the evolving system
- Usability Prototype : Check the user interface
- Performance Prototype : Ensure solution will deliver performance or handle volume
- Capability Prototype : Evaluate possible options
- Frequent Delivery
- Incremental development
- Business Prototype : Allow assessment of the evolving system
- Usability Prototype : Check the user interface
- Performance Prototype : Ensure solution will deliver performance or handle volume
- Capability Prototype : Evaluate possible options
Success factors in DSDM
- acceptance of DSDM philosophy before starting work
- the decision making powers of the users and developers in the development team
- commitment of senior user management to provide significant end-user involvement
- incremental delivery
- easy access by developers to end-users
- the stability of the team
- development team skills
- in tools and business knowledge
- size of the development team
- supportive commercial relationship
- development technology
- acceptance of DSDM philosophy before starting work
- the decision making powers of the users and developers in the development team
- commitment of senior user management to provide significant end-user involvement
- incremental delivery
- easy access by developers to end-users
- the stability of the team
- development team skills
- in tools and business knowledge
- size of the development team
- supportive commercial relationship
- development technology
Weakness of DSDM
- Licensing cost
- Relatively high barrier to entry
- Cultural shift in organization
- Licensing cost
- Relatively high barrier to entry
- Cultural shift in organization
Benefits of using DSDM
- Using an iterative process based on prototyping, DSDM involves the users throughout the project life cycle
- Gives the benefits of:
- early implementation to business problems
- users more likely to accept ownership of the computer system
- risk of building the wrong computer system is reduced
- the final system is more likely to meet the users’ real business requirements
- IT professionals and end users become partners
- the users will be better trained, since their representatives will define and co-ordinate the training required
- implementation is more likely to go smoothly, because of the co-operation of all parties concerned in development
- empowerment
- Using an iterative process based on prototyping, DSDM involves the users throughout the project life cycle
- Gives the benefits of:
- early implementation to business problems
- users more likely to accept ownership of the computer system
- risk of building the wrong computer system is reduced
- the final system is more likely to meet the users’ real business requirements
- IT professionals and end users become partners
- the users will be better trained, since their representatives will define and co-ordinate the training required
- implementation is more likely to go smoothly, because of the co-operation of all parties concerned in development
- empowerment
Feature Driven Development (FDD)
It is an iterative software development methodology intended for use by large teams working on a project using object-oriented technology. The main purpose of FDD is to deliver tangible, working software repeatedly in a timely manner.There are five main activities in FDD that are performed iteratively.- Develop an Overall Model, the initial result being a high-level object model and notes. At the start of a project your goal is to identify and understand the fundamentals of the domain that your system is addressing, and throughout the project you will flesh this model out to reflect what you're building.
- Build a Features List, grouping them into related sets and subject areas.
- Plan by Feature, the end result being a development and the identification of class owners, and the identification of feature set owners.
- Design by Feature and Build by Feature. These two activities are exactly what you'd expect, they include tasks such as detailed modeling, programming, testing, and packaging of the system.
- Repeat step 4 until no more features exist.
Following figure will help to understand more about main activities in FDD.
There are six primary roles on an FDD project- Project Manager
- Chief Architect
- Development Manager
- Chief Programmer
- Class Owner
- Domain Expert.
And also defines a collection of supporting roles, including - Domain Manager
- Release Manager
- Language Guru
- Build Engineer
- Tool smith
- System Administrator
- Tester
- Deployer
- Technical Writer
FDD is useful because it demonstrates that you can focus on domain modeling on an iterative and incremental project, and because it demonstrates that agile-like methodologies can scale. FDD shows that teams can spend a short amount of time at the beginning of the project to establish a clear understanding of the domain in which they are working and use that understanding to formulate a rough plan without getting stuck in analysis and design paralysis.
- Develop an Overall Model, the initial result being a high-level object model and notes. At the start of a project your goal is to identify and understand the fundamentals of the domain that your system is addressing, and throughout the project you will flesh this model out to reflect what you're building.
- Build a Features List, grouping them into related sets and subject areas.
- Plan by Feature, the end result being a development and the identification of class owners, and the identification of feature set owners.
- Design by Feature and Build by Feature. These two activities are exactly what you'd expect, they include tasks such as detailed modeling, programming, testing, and packaging of the system.
- Repeat step 4 until no more features exist.
- Project Manager
- Chief Architect
- Development Manager
- Chief Programmer
- Class Owner
- Domain Expert.
- Domain Manager
- Release Manager
- Language Guru
- Build Engineer
- Tool smith
- System Administrator
- Tester
- Deployer
- Technical Writer








0 Comments
Post a Comment