support Click to see our new support page.

Agile Software Methodology

Agile Software Methodology
Author

Neenu RobinSept. 23, 2019

What is Agile Methodology?

Agile is a software development methodology to build software incrementally using short iterations. That is,  the development process is aligned with the changing business needs. Meaning of ‘Agile' is moving quickly. Earlier Software development was a long term process. By the time the product got completed to be delivered to the customers, the business had moved ahead. And requirements will also be changed. So, the product developed will not be able to meet the current business needs even if it satisfies all the predefined objectives.

The software methodologies used at an earlier time was Waterfall methodologies. The waterfall model is a breakdown of project activities into linear sequential phases.

Phases Of Waterfall Model :

  1. System and software requirements.
  2. Analysis: resulting in models, schema, and business rules.
  3. Design: resulting in the software architecture.
  4. Coding: the development, proving, and integration of software.
  5. Testing: the systematic discovery and debugging of defects.
  6. Operations: the installation, migration, support, and also maintenance of complete systems.

Agile methodology

In waterfall model one should move to a phase only when its preceding phase is reviewed and verified. That is, in this model customers can view the product only after its completion.

Disadvantages of Waterfall Methodology

The disadvantage of waterfall development is that chances of revision are less. In addition, once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.

The major disadvantages of the Waterfall Model are as follows −

  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Difficulty in measuring progress within stages.
  • Less interaction with clients after the requirement gathering stage.
  • Integration is done as a "big-bang. Finally, which doesn't allow identifying any technological or business bottleneck or challenges early.
  • Detailed Documentation after each phase is a top priority and can even use for training staff and upgrade the software with another team.
  • Development and testing team works separately.
  • Developers are not involved in requirement gathering and planning process.

Evolution of Agile Software Methodology

To overcome the above mentioned disadvantages, 17 people with differing development methodologies background got together to brainstorm if there was a possible alternative solution to software development which could lead to faster development time and was less documentation heavy. They come up with the idea of a light weight Iterative model, where the iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhance the evolving versions until the complete system is implemented and ready to be deployed.

The Manifesto for Agile Software Development Methodology is based on twelve principles:

  1. Customer satisfaction by early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development.
  3. Deliver working software frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the primary measure of progress
  8. Sustainable development, also able to maintain a constant pace
  9. Continuous attention to technical excellence and also good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly

 

Types of Agile Software Methodology

1. SCRUM

2. eXtreme Programming(XP)

3. Crystal Methodologies

4. Dynamic Systems Development Method (DSDM)

5. Feature driven Development (FDD)

6. Lean

7. Kanban

 

Scrum agile software methodology

Scrum is an agile software development methodology. It maintains small teams for software development consisting of 7 to 9 members. Furthermore, the team members are a mixture of developers, database people, testers, along with a product owner and a scrum master.

Scrum Master is responsible for setting up teams, calling meetings, monitor developments and removes obstacles on progress.

Product owner is the person handling product backlogs. Product backlogs are repository where all requirements to be completed for each product release are maintained. Hence, the owner is responsible for prioritizing the requirements and distributing it to the team.

An important term in scrum methodology is Sprint. Sprint is a predefined interval or time frame in which the work has to be completed. Thus make it ready for review or ready for production deployment. This time box usually lies between 2 weeks to 1 month.

Scrum is more Project Management focused. The main features of scrum are

  1. Can be used for enhancing the existing systems.
  2. Daily team meetings to discuss progress will be there.
  3. Feature backlogging.

Scrum

Scrum Advantages and disadvantages

Advantages

  1. Large Projects will be divide into manageable sprints.
  2. Reviewing each sprints helps in conducting tests throughout the process.
  3. Continuous scrum meetings give more visibility of products to team members.
  4. Suitable for fast moving projects also.
  5. Also continuous gathering of feedback from customers and stakeholders.

Disadvantages

  1. Lack of definite end date leads to scope creeps.
  2. This methodology will be successful only if the team consists of experienced members. Continuous absence of any team member in the middle of project will create a huge impact on the project. Hence, may lead to failure of the project.
  3. Daily scrum meetings may frustrate team members.
  4. Software Quality is hard to implement, until the team goes through aggressive testing process

 

eXtreme Programming(XP)

eXtreme Programming is an agile software methodology that concentrates on producing high quality software. This method is quite helpful when there is a constant demand for change in requirements. eXtreme methodology promotes high customer involvement, pair programming, rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically every 1-3 weeks. Here, the business requirements are gathered in terms of stories and are stored in a place called parking lot.

eXtreme-Programming

This methodology involves high customer interaction. That is, this model is very useful in small projects consisting of small teams as face to face meetings are easier to achieve.

Extreme Programming Advantages and disadvantages

Advantages

  1. Cost Reduction
  2. Simplicity in code.
  3. Constant feedback helps in making any changes needed on time.
  4. Faster software development.
  5. Better risk management and employee satisfaction.

Disadvantages

  1. XP practices pair programming which may cause code duplication.
  2. XP methodology does not measure code quality assurance. That is, it may cause defects in the initial code.
  3. Not suitable if the developers are not in same location.
  4. Focus is mainly on code rather than design.

 

Crystal Methodologies

Crystal method is an agile software development method that focuses primarily on people and their interactions when working on a project rather than on processes and tools. It is actually comprised of a family of agile methodologies such as Crystal Clear, Crystal Yellow, Crystal Orange and others, whose unique characteristics are driven by several factors such as team size, system criticality, and project priorities.

Crystal-methodology

The crystal methodologies gives a realization that each project may require a slightly tailored set of policies, practices, and processes in order to meet the project 's unique characteristics. Several of the key points of Crystal include teamwork, communication, and simplicity, as well as reflection to frequently adjust and improve the process. Like other agile process methodologies, Crystal promotes early, frequent delivery of working software. It also promotes high user involvement, adaptability, and the removal of bureaucracy or distractions.

Advantages and Disadvantages of Crystal Methodologies

Advantages

  1. Methodology can be adjust based on project type and team size.
  2. Effective team communication.
  3. Supports learning among team members.

Disadvantages

  1. Planning and development are not requirement based.
  2. Migration from one crystal flavor to another may not work in the middle of the project.

 

DSDM - Dynamic Software Development Method

DSDM is an agile software development methodology that concentrates on software full development life cycle. It’s success is due to the philosophy “that any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business.”

The eight Principles of DSDM:

  1. Focus on the business need Deliver on time
  2. Collaborate
  3. Never compromise quality
  4. Build incrementally from firm foundations
  5. Develop iteratively
  6. Communicate continuously and also clearly
  7. Demonstrate control

The DSDM project consists of 7 phases

  1. Pre-project
  2. Feasibility Study
  3. Business Study
  4. Functional Model Iteration
  5. Design and build Iteration
  6. Implementation
  7. Post-project

DSDM has been developed to face some common problems faced by projects. That is, late delivery, cost overruns or the final deliverable not being completely fit for purpose. Thus, creates an agile environment which is collaborative and flexible, yet remaining focused on hitting deadlines and maintaining the appropriate level of quality. It involves business representatives throughout an iterative and incremental life cycle. All personnel involved in a project are given clear roles and responsibilities and work together in time boxes to ensure the project is kept on schedule.

DSDM

Advantages and Disadvantages of DSDM

Advantages

  1. Allow high involvement of users in the system.
  2. Basic functionality will be deliver quickly and also more functionalities will be add on the go.
  3. Quick delivery of projects within a short time period and specific budget is also an advantage.

Disadvantages

  1. Costly to implement.
  2. Not suitable for small organizations or one time projects.
  3. It require both developers and users to train to employ it effectively.

 

Feature Driven Development(FDD)

Feature Driven Methodology will be customer driven and also architecture-centric software process. It mainly concentrates on different features of the product. The five main activities in FDD are

  1. Development of an overall model.
  2. Build a features List.
  3. Plan by features.
  4. Design by feature
  5. Build by feature

The team work for the development of the product. That is, they must need an idea of the fundamentals of the domain they are addressing. An overall model will be prepared based on fundamentals and throughout the project you will flesh this model out to reflect what you're building. Second step is building features list. That is, which will be group based on related sets and also subject areas. That is, developers work together in feature teams. Inspections are an important aspect of FDD. FDD also promotes a best practice called reporting/visibility of results.

Agile software methodology-FDD

FDD Advantages and Disadvantages

Advantages

  1. Suitable for large scale projects which requires continuous updation.
  2. Good Documentation.

Disadvantages

  1. Not suitable for smaller projects with strict deadlines.
  2. Requires the monitoring of highly skilled team throughout the project cycle.

 

Lean Software Development Method

Lean development is based on a simple concept. That is, build a simple solution, put it in front of customers, enhance incrementally based on customer feedback. This is important in software, because speed to market is an incredible competitive advantage. The Seven principles of lean software development methods are

  1. Eliminate waste
  2. Amplify learning
  3. Decide as late as possible
  4. Deliver as fast as possible
  5. Empower the team
  6. Build integrity in
  7. Optimize the whole

One of the key elements of practicing Lean methodology is to eliminate anything that does not add value to the customer. Lean product development team should focus on learning and also decide on software product features as late as possible. That is, to eliminate the need to redo work as the market changes. At the same time, there is equal pressure to deliver as fast as possible.

Lean Software Development Method advantages and disadvantages

Advantages

  1. Elimination of many unnecessary activities, hence saving time and money.
  2. Empowers development team with decision making process.
  3. Focus more on customer value.

Disadvantages

  1. Highly team dependent
  2. Requires good documentation. Hence, poorly document area is develop incorrectly.
  3. While highly motivated to deliver a polished product, the developers might  lose focus on the initial objectives. So,  team lead or analyst need to monitor the decisions made by the developers.

 

Kanban agile software Methodology

Kanban is an agile software methodology that is not necessarily iterative. So, Kanban method is mainly concentrate on continual product delivery while reducing overburdening the development team. They didn’t fix any particular development period. Hence, Kanban method focus on small amount of work at a time. It is only when the task is complete new task is add onto the cycle.

The entire teams focus is on getting to done for the tasks in progress. That is to say, they aim at delivering features fast in a shorter cycle times. Moreover, reducing waste and removing activities don’t add value to the team. Hence, Kanban methodology is ideal for areas where the priorities change frequently.

Agile software methodology-Kanban Method

Kanban Method advantages and disadvantages

Advantages

  1. Designed for maximum efficiency of resources.
  2. Less dependent on single team members.
  3. Faster delivery of products.
  4. Visualize the process of what you are working on.

Disadvantages

  1. Lack of a structured framework found in Kanban can also lead to poorer productivity.
  2. Not focused on cross functional team and also it doesn’t use sprints.

 

"Hope you understood the Agile Software Methodology explained by Technaureus Info Solutions Pvt Ltd, which is a software development company in Kerala. We also believe that it will be really helpful to you."

 

odoo_erp_services

 

 

LinkedIn LinkedIn

Leave a Comment