Agile Software Development

Agile Software Development

What is Agility?

It means an effective response to change, effective communication among all the stakeholders, and organizing a team so that it is in control of the work to be done which leads to a Rapid delivery of good quality software.

Agile Principles

There are 12 principles of the agile development style :

1. Customer satisfaction by rapid delivery of useful software

By applying this concept, we can increase the process's agility and respond to changes in a reasonable time. Also, the customers will be happier because we will get the value he/she is paying for more frequently.

2. Welcome changing requirements, even late in the project

Teams should aim to know that even a late change can still bear a lot of value to the end customer.

3. Working software is delivered frequently

By applying this concept, we will reduce the time for which we are planning and spend more time working on the projects.

4. Daily cooperation between business people and developers

The goal is to create a synchronization between the people who create value and those who sell it.

5. Building Projects around motivated people, who should be trusted

The idea is that by empowering motivated team members, projects will be completed faster and with better quality.

6. The Most Effective Way of Communication is Face-to-face

By communicating in person, we reduce the time between asking a question and receiving the answer.

7. Working software is the principal measure of progress

As if the result of the work is not the way the customer expects, there will be a big problem.

8. Maintaining a Sustainable Working Pace

The goal is to avoid overburden and optimise the way we work so we can frequently deliver to the market and respond to change without requiring too many extra efforts from the team.

9. Continuous Excellence Enhances Agility

As a result, changes to the code will be less likely to impact bugs.

10. Simplicity is Essential

The idea is if we can do something in a simple way, why should we waste time making it more complex?

11. Self-organizing Teams Generate Most Value

The best architectures, requirements, and designs emerge from self-organizing teams.

12. Regular adaptation to changing circumstances

By doing this, we will be able to improve the performance continuously. So, If things don't go as we have planned, we can discuss what went wrong and adjust to get back on track.

Agile Iteration Workflow

Agile iterations are usually between two and four weeks long.

The workflow of an agile iteration will typically consist of six steps :

1. Requirements gathering

We should explain business opportunities and plan the time and effort needed to build the project.

2. Design Requirements

We can use the user flow diagram or the high-level UML diagram to show the work of new features.

3. Develop TheProduct

The developers start working on their project. They aime to deploy the working product within the estimated time.

4. Test The Product

The Quality Assurance team examine the product's performance and searches for any bug.

5. Deliver The Product

The team issues a product for the user's work environment.

6. Incorporate Feedback

The team receives feedback about the software and works through the feedback.

Agile Development Techniques

Agile has many techniques and these are some of the most popular ones :

1. Scrum

It is a light-in-weight project management framework, this is an excellent tool for managing and controlling iterative and incremental projects. Scrum has been able to win a huge clientele in the market.

2. Extreme Programming (XP)

It is a disciplined way to deliver high-quality software products, XP advances high client association, rapid feedback loops, testing, nonstop planning, and close collaboration to deliver software products frequently. The first XP formula depends on four basic principles that include simplicity, communication, criticism, and mettle.

3. Lean software development

It is an iterative software development methodology that owes a lot of its standards and practices to the Lean Enterprise development, and other organizations.

4. Crystal family Methods (Crystal Clear, Crystal Orange)

It standouts among the most lightweight, versatile ways of software development.
Comprising a number of agile methodologies like Crystal Clear, Crystal Yellow, Crystal Orange and others.
Its exceptional qualities are driven by various factors like group estimate. It focuses on early product delivery, high client association, versatility, and removal of distractions.

5. Dynamic Systems Development Method (DSDM)

It has advanced to a level of developing into a tool that can act as a foundation for planning, managing, and scaling agile process and iterative software development projects. It depends on nine key rules that include business needs, and dynamic client association. The major focus of DSDM before delivering the final product is to ensure that a product is fit to meet the business needs.

6. Feature Driven Development (FDD)

It is a client-centric and pragmatic software process. Features such as use cases are used in the rational unified process.

Agile Project Management

Despite the frameworks being used, Every project management only has the usual 5 phases which are :

  1. Envision in this phase, the project manager, and the product owner should determine based on the stakeholders’ requirements the product vision.

  2. Speculate In this phase, the team members should focus on obtaining the preliminary broad requirements for the product Determining the amount of workload.

  3. Explore In this phase, the team explores the alternatives to implement the requirements of the project.

  1. Adapt In this phase, we analyze the results for various perspectives ranging from customers to technical staff.

  2. Close In this phase, we conclude the project in an ordered manner and capture the project’s key lessons.

Problems With Agile Methods

  • They are designed for small co-located teams and currently much software development now involves worldwide distributed teams.

  • They are most appropriate for new software development rather than software maintenance. Currently, the majority of software costs in large companies come from maintaining their existing old software systems.

  • There are greater demands on developers and clients must go through training to aid in product development.

  • As the requirements for software are clarified just in time for development, documentation is less detailed.

Thank you, and goodbye!