Taking it back to 2001, when seventeen software developers started creating The Agile Manifesto, an open minded manual for delivering products, while corely focusing on the specified values in each part of creation process, the methodology began to spread and got adapted by developers worldwide. Going with the flow and adapting to occuring changes rather than planning religiously, at the sime time achieving improvement in an evolutional way – is what Agile software development process is about. Software development process is like a river running through sharp rocky ground, so perhaps it is better to be Agile about it and adapt to the changing environment in comparison to arranging the tide completely, which cannot be done due to the unexpected.

Agile Understanding of Values

Authors mentiond above, have stated what is most important for them in the process by contrasting parts of it:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

Even though, they see the sense in the formal side of the project and make a use of it, they put the emphasis ot the more humane factors, believing these rules will bring the best product possible. The statement sounds almost like a call to all the developers to pay great attenion to the change, making it a strong one. Paraphrasing the text: process and tools are crucial, but the real potential lays in human resources; building documentation helps keeping track of things, but the focus should be on building the software; contract being important for sides to know their resposibillities is nothing towards real contact with you – the client, and your impact and help on the process; plan works as an reminder to the objectives but the eyes have to stay opened for it cannot be including everything laying ahead of the team.

Basic Software Development Process

What this article is really about is a cycle – a software development life cycle (SDLC). There are many models for it and Agile is one of them. Each model represents the best solutions for certain projects in terms of it’s scope, cost, durability, your expectations and business requirements. Companies often mix and match methods to suit them to a project correctly. Next to SDLC you may hear about other methodologies like RAD or End-user which SDLC compares to with characteristics like vital integrity and security, many users and long time frame. For every SDLC model, 6 steps can be identified.

Essential Analysis

To build a software the team has to grow on your product idea. You have to discuss with them all aspects of your vision. Once the objectives are set, tactics thought through and costs estimated, the project starts to get in shape. During the essential analysis this is what happens:

1. Understanding the requirements for your product

2. Making a project plan – costs, schedules, human resources

3. Preventing hitting walls – optimizing risks

4. Having agreement on all sides of the project, you, the team, sponsors and any other stakeholders

Design

Every little details of what is supposed to be included in your software is documented for the developers to work on in the form of design. This includes both UX and UI designers, who work on the perfect product for you!

Development

From software architect to the developer, the vision begins to shine through. The software’s code is being written.

Implementation

Bringing pieces together – implementation – all parts built by developers get put together and integrated. Your product now has a real, working form.

Testing

To spot all the errors and bugs, to check if your expectations are met, the product is viewed by Quality Assurance Specialists, who put it into different case tests. The product will be shown to you as well.

Maintenance

Making sure your software stays relevant and working, the team will update it to newer versions to fit all recent market needs.

Agile Approach

Along with values, the Agile Manifesto team has written out 12 main principles of the Agile software development process which provide something like a framework on how to manage IT projects and the software development process. If you want to know about them in detail we recommend our post about “Agile Project Management”.

It is clear that the Agile team would depend on everyday conversation and regular tests and updates on the product. In order to follow up with such strategy it is smart to part work into sections for plans to be as precised and certain as possible, and objectives for that time clear. For that Agile combines iterative and incremental model.

Iterative model

Project plan in this model is often changed along the way and is made specific only for certain periods, leaving space for changes. The idea is to create a „complete” version of software and then add up to it and change it in next iterations. The software gets into the iteration cycle, in which one phase takes up to few weeks. Product gets developed, tested by experts and shown to you at the end of each phase. Basically it gets done over and over again until it is right. That way instead of guessing the outcome product, you meet with it face-to-face everytime to give feedback and see your vision come to life everytime better. Knowing what it lacks exactly, when you look at the „done” product, you can tell the team how to improve the product. That way you and the team are the closest to realize if you want to make any changes in the recent plan, as you can be. First iteration will build a fundamental framework and the rest will come along with the other ones.

Check our new article Agile Project Management For Dummies -> be the scrum master!

Stages of the Iterative Model:

Essential Analysis

After starting the project, the team sets its objectives and acknowledges all software requirements. The requirments are being thoroughly analyzed to realize initial costs and risks. At this stage all members know what they need to do to complete the first iteration. What is also important at this stage is establishing the team’s motivation – as they get to know your product, they understand it and get “attached” to it. And it provides for them to work harder and be more effective while creating a product for you.

Design and Development

The abstract is being realized. It involves creating UX mockups and wireframes that later on are being passed onto the UI designer who brings them to life. After you are satisfied with how the product looks the developers start to work their magic.

Testing

Performance of the product is being checked to meet your expectations. All the obstacles are detected at this stage and fixed. Quality Assurance Specialists and Testers make sure your product works perfectly.

Your Feedback

Agility of the project depends on face-to-face communication between you and team members. It is time to view the product in process and discuss pros and cons. It is important that you communicate well with your team because they need and want to know how to improve your product and themselves.

Rewind

With all the new knowledge the team will begin all the steps over again to improve the software until you are fully satisfied.

With all the iterations your product gets built step by step. It may take a few versions of the software, but that lets you carefully observe the process and improve the product each time, while experiencing it like your costumer would.

Incremental model

Same as with iterative model, incremental one divides work into segments with expectations of repeating them. Steps to completing your project are the same, but the product is implemented not as a whole, but partially for your feedback with each increment. Incremental program helps you improve the process by spotting mistakes early on. With each function created, constructed with every increment you get to see diferent details of the product, so you know if that will fit your vision.

An Example of Agile in Action: Scrum Sprints – Scrum Version of the Iterative Model

Scrum is a scheme for Agile project management. It puts out steps for Agile teams to follow for consistent and smooth software development process. The team has a Scrum Master guarding the program. Their resposibillities are helping the team members with communication and encouraging them to do their best and also helping you reach your goals and maximize your profit. The Scrum sprint technique is a fast work mode that takes up to a month, usually two weeks. First the product backlog is created. That’s where you – the Product Owner, write what you would like to see in your software. User stories, meaning what users would like to see in the software, and you agreed on is going to be kept in the Sprint Backlog. To help the creative process the Daily Scrums happen. Those are everyday 10 or 15 minute meetings of team members, in which they quickly discuss things like: what they have already done in the sprint, what are they going to do today, any problems and suggestions for improvement. An interesting method, is a role blur. Despite everyone on the team having their official titles, each member’s goal is to do anything they can to make a project successful. That checks the point of trusting people to do the job and let their talent and resourcefulness flow.

Unit Testing

The Agile process is often a test-driven development (TDD) system. With the whole of increments and iterations, every final step to each phase involves testing. It can be done manually but at most times it is automatic. The philosophy of TDD is first writing actually failing systems for units. That way when they process into working ones that pass the test, they have written out all possible versions they could have to spot code’s weaknesses and strong points. TDD is a time saver and mind bendig for developers to see many possibilities. Being able to go back to all versions, can be a vast range of options to create stronger product and show you work alternatives.

Benefits of  the Agile Software Development Process

Surpassing Quality

Product delivered by the Agile team is most likely one that will capture your vision. Because you get the chance to give your feedback with every element or sample product, you can update your requirements regularly, not just once at the beggining of the project. That is the adaptability to change that Agile offers.

Easier, Less Risky Changes

While traditional approach takes months preparing documentation for the project and planning everything to the very end, being very hard to make any changes in it, for they might bring the whole plan down – in an Agile software development process you can make quick changes between iterations or increments without worrying. Agile expects modifications and is open to them. Really certain plan and documentation is made only for one time period and you can add and substrat requirements in between phases.

Lower Costs

Focusing on creating great software, without putting unnecessary weight on documentation not only saves you time, but also money. There will probably be no documents that were created for nothing and never used, adding cost and zero value. Fast error detection thanks to frequent, detailed product viewing and testing, helps fixing problems as soon as possible and preventing them from growing, also saving you from losing money. Starting a project before spending months on complicated planning means wasting no time and bringing you to the profit faster. Overall the faster your project gets done, the bigger revenue you will have.

Delivering Working Software with Each Increment

Typical, especially for Scrum, is that when the sprint is done, your product is a working and a shippable one, as they like to call it. If the time is rushing you and you decide at some point, you are satisfied, you will have the product done, as opposed to waiting for the whole project plan created by traditional team being completed.

Customer Collaboration Over Contract Negotiation

Agile software development process relies heavly on cooperative, skilled and self-organizing teams, letting them bloom and develop a character combined of unique individuals. Emotional commitment of workers in an Agile team helps you establish better relationship between them and you, therefore resulting in a product being handled very well. Some say Agile makes any project better and others think it fits only specific ones. It is smart to gain from both traditional and newer business methodologies to be successful on the market. No doubt, it is always positive, Agile or not, if you are greatly involved in the project to help bring your vision to life.