Software development by IT services is now associated with several types of delivery models. To approach them, it is essential to know the different models of software development and the ways of contracting services, since they are closely linked.
The premise “not only code lives a software project” is one of those assumptions, almost biblical, that any software buyer or implementer should be based on. This would avoid misfit expectations and contractual asphyxiations.
Often the implementation of software is done in a basic way, without following any rules and in the end the software even works. But can we say that this software meets the best quality standards? And is it appropriate from the point of view of usability and future maintenance?
Software production is an activity of enormous complexity, involving important groups of stakeholders who need solutions to solve a business need.
It is an activity where there is a high degree of uncertainty (risk) and changes in scope and delivery times may be inevitable.
Software Development Models
Since the 1970s, large software manufacturers have realized that their production would be more successful, more cost-effective and reduce risks if it used proven standard models in other industries.
From the understanding that software engineering is not just about coding, and there are other disciplines contributing decisively to software production, the first methodologies were born based on a sequential set of activities (Waterfall Model).
There are also ItativeModels, such as ibm’s Rational Unified Process (RUP) framework, which advocates asequence of predefined steps:
However, this framework allows development to occur interactively and incrementally, which reduces integration complexity, reduces costs, and increases its effectiveness.
The inefficiencies and weaknesses of classical approaches paved the way for the emergence of agile methodologies. These have shorter and, consequently, more itethan development cycles. They also allow for greater flexibility in scope management and are less document-heavy than the Waterfall Model.
Above all, they introduce a new dynamic of design and customer engagement focused entirely on value for the business. Thus is born agile software development that, as happened in classical methodologies, over time gave rise to several development processes, such as RAD, SCRUM or XP.
At the same time, it is possible to rescue older techniques and models, such as LEAN and KANBAN, that can be coupled to the agile process.
Agile methodologies bring several advantages:
- Shorter implementation cycles;
- Deliveries well defined according to the priority for the business;
- Focus on team alignment and continuous improvement.
It becomes easier for the client to identify misalignments at an embryonic stage of development and teams also have greater flexibility for changes, without compromising the final goal of each iteration.
However, the applicability of agile methodology presupposes the existence of mutual knowledge about its principles, fundamentals and rituals, as well as a significant organizational maturity.
The most widely used models Portuguese the market for contracting software development services are Fixed-Price and Time and Materials.
Better known as turnkey contracts, the amount is stipulated by the supplier, based on the scope, effort and risk of the project. In this case, the risk and cost control are the sole responsibility of the supplier.
Contratos Time and Materials Contracts
In this case, a price per hour and a time estimate of the project are defined. These models are typically used in contracting projects when the scope is not fully known. Risk and execution management are controlled by the customer.
In classical approaches, such as the Waterfall Model, a Fixed-Price contract maymakesense, but agile methodologies are, by definition, incompatible with these hiring models. Although the most appropriate is a Time and Materials contract,it poses great challenges to the customer, opening the door to agile delivery models with risk sharing.
Delivery Models for Software Development Projects
Basically, Delivery Models are the consistent combination of Software Development Models and Service Contracting types.
- When the scope of the project is well defined, there is a closed budget and a fixed duration, a Waterfall or Iteactive Development Model will be appropriated with a Fixed-PriceAgreement. This is a good solution for when the customer does not intend to take risks.
- If the scope, duration, and budget are not known at the outset and the customer is able to manage and take full risk, then an Agile Development Model supported in a Time and Materials Contract is recommended.
Risk Sharing Delivery Models
For customers, the benefits of Agile Development Models is unequivocal and recognized. However, there was a need to find a middle ground for risk sharing.
Then came models that contribute to promoting trust, flexibility and alignment of objectives between customers and implementation partners.
- People- Driven Model – Squads andautonomous teams, organized in Tribes or Guilds. This model combines Agile with Time and Materials contracts. There is a risk sharing in terms of the contracted speed and the size of the team in the project.
- Output-Driven Model – In the Output-Driven model,the customerhires a certain delivery speed and it is up to the service provider to ensure that it is fulfilled. At the end of each time interval(Sprint),the customer validates and pays for the delivered product.
A software project goes far beyond technology
There is a set of guidelines to help you find the best delivery model for software development projects. The level of risk sharing and the methodologies used should be considered.
The expression “not only code lives a software project” should now make more sense. Programming languages, databases, and operating systems are undoubtedly important, but do not determine the success of an IT project. It is reducer to circumscribe the implementation of a software project only to technology.