The Guide Content
Chapter 1. What is Software Outsourcing and Why It’s Now Not Only about the Price
Chapter 2. How to Сhoose the Сountry, Outsourcing Partner and Business Model
Chapter 3. Let’s Start a New Project: the Set-up Process
Chapter 4. Step 1. Business Analysis and Design Are Key
Chapter 5. Step 2. Software Development: Quality Is a Must
Chapter 6. Step 3. Testing and Support for the Result
Chapter 7. FAQ about Outsourcing Software Development
In order to deliver the highest quality in the shortest period of time, the team chooses the most suitable software development methodology that will be used during the whole development process.
Software development methodology is a plan of action with defined phases that sets the norms for the team members for how they are going to work and in which way they should pass information to each other.
Such methods are used to manage the development workflow more efficiently.
Here is a list of the most frequently utilized software development methodologies:
Agile
The Agile approach represents iteration and flexibility. Continuous collaboration is key to the Agile development process.
The team has an opportunity to assess the stakeholder’s demands and implement quick modifications, as both parties continuously discuss the details during scheduled meetings, called sprints. Mostly, sprints last from one to four weeks. The customer can calculate the estimated costs before each sprint to better understand the approximate costs of each feature. This approach offers more decision-making opportunities.
By using Agile methods, the team can continually reprioritize and refine the product backlog. It creates opportunities to evaluate a project’s direction during the development cycle.
The main Agile principles:
o A working product is a major measure of progress
o Collaboration with the stakeholder is the priority, not the contract negotiation
o It is not obligatory to follow the predetermined plan; changes can be made
o Deliver the product within the shortest timescale
o Teams should cooperate on a daily basis to be more effective
We can also add to the Agile principles that the customer gets small pieces of functionality on a regular basis
Scrum
Scrum is another flexible project management method from the Agile family. This model was designed for projects that require quick solutions combined with tolerance to modifications.
The main structure of the Scrum process involves sprint planning, daily briefs, sprint results, and retrospectives.
Scrum splits the project into parts that can be used by the customer to obtain backlogs. Sprints last from two to four weeks. During this time, the duration of the meetings is minimized, but their frequency increases. Control over execution becomes more flexible, and developers respond more quickly to emerging problems.
This approach is suitable for situations where not all team members have sufficient experience in the field in which the project is being implemented. Constant communication between team members who can share their knowledge can compensate for lack of experience or qualifications. .
The Scrum Master is responsible for monitoring the team’s work and making sure project participants understand the principles and norms of Scrum practice. He/she is a mediator between the customer and the team. The team is responsible for ensuring at the end of each sprint that all the necessary tasks have been completed. The Product Owner is the person who represents the interests of end users.
Scrum Artefacts
The Product Backlog is a list of functional requirements that are arranged in order of importance.
The Sprint Backlog is functionality chosen by the Product Owner from the Product Backlog.
A Planning Meeting is held at the beginning of the iteration with the aim to determine the amount of work required.
A Daily Meeting (Stand-Up) is a short daily meeting during which each team member answers three questions:
- What work has been done between the previous meeting and the current one?
- What work will have been done between the current meeting and the next one?
- What problems hinder the achievement of sprint goals?
Kanban
Kanban is an Agile system based on visualizing the process of fulfilling team tasks. The main idea in this system is to reduce the number of tasks that are currently being performed.
This approach is less strict than the Scrum approach. It does not limit the time of sprints, and no roles are given to team members, except for the Product Owner. Kanban allows a team member to run several tasks at once, which is not practiced in Scrum. Moreover, there are no strictly regulated meetings about a project’s status. It is better to use the Kanban model when there are no specific deadlines. Each task is given individually. It goes through all the stages on the board and once it has been completed it can be shown to the client.
Accurate calculation of the workload, the correct placement of restrictions and the focus on continuous improvement allow saving of resources and fitting in with deadlines and budget restrictions. And all this is combined with Kanban’s flexibility.
The Waterfall
The Waterfall model is a linear sequential approach with several phases. It was the first process model to be introduced. A typical sequence of events looks like this: requirements analysis – software design – implementation – testing – maintenance.
Tight control is imposed during the development process with a large amount of written documentation, approval and sign-off by the client, and formal reviews. A strict approach discourages revisiting and revising any prior phase once it is complete. However, there is a stage-gate between each phase, as the requirements must be reviewed and approved by the customer before the design process starts.
It is better to use the Waterfall model for relatively small projects when the requirements are clearly set, and there are available programmers with the required qualifications.