Have you ever had a situation when you have a project in mind: it may be a detailed product or just a simple idea (although the more details the better!). Then, you start looking for a dev team to fulfill your plan. And everything goes according to a schedule until the development phase, when you are suddenly in the dark and do not know what exactly happens with your creation? Don’t worry, we are here to explain how the development process is organized and what to expect from it.
Software development lifecycle is a process of software building, which usually includes from 6 to 8 stages: Planning, Requirements, Design, Build, Document, Test, Deploy and Maintain. The end goal of each development model is to produce the result at the lowest cost possible at the shortest time possible while maintaining the best level of quality.
When choosing the right software process model for a project, several parameters are to be taken into consideration:
There are dozens of software development models you may consider for your project. Here, however, we will stop on the top 6 models which are the most widely used in product creation.
1. Waterfall model
The development stages in this model remind of the waterfall structure. Each software development phase flows into another development phase, having strict deliverables and documentation. Next step cannot start until the previous one is complete. Unlike, however, the real-life waterfall, this structure is characterized by its rigidity: no changes or backtracking are allowed during the development, and if they are, it will take additional time and budget to fulfill. Customer’s presence here is not necessary, thus this model is ideal for those who want to give a task and without active participation receive the result in the end.
Projects eligible for such model:
2. V-model
V-model (or Verification and Validation model) is thought to be an extension of the Waterfall model. Each phase is accompanied by a subsequent testing phase. This development model focuses on achieving the best quality possible, eliminating potential errors and giving the client the perfectly working product in the end. At the same time, the model is considered to be one of the most expensive and time-consuming compared to others.
Projects eligible for such model:
3. Spiral model
Spiral software processes model combines both iterations (small development phases) and risk assessment. The development of a product goes in loops, where the team presents a prototype, which is later evaluated by experts for risk identification and elimination. This model supports changes during the prototyping phase (not engineering!) and is characterized by flexibility. Customers are also encouraged to participate in the process to give feedback and control the product creation for it to correspond to final expectations.
The main trait of all Agile Software Development models is their…agility. These software models base their principles on adaptability, flexibility and communication. The latter is extremely important: communication is encouraged both between the teammates and between the team and the customer. Frequent releases are also common for agile models. Changes and fixes are acceptable, so the customer can consult the team on the updates they want. However, among the downsides there is a lack of final deadline, difficulty in formulating budget and high dependence on the self-organization and responsibility of a team.
Nowadays, there are three main agile software development models, which are widely used in software development: Scrum, Kanban and Extreme Programming (XP).
Projects eligible for Agile:
4. Scrum
The Scrum Model is closely associated with iterations. Each interaction (or “sprint”) is a full development cycle but on a smaller scale. It starts with planning, then designing, developing, testing and finally deploying. Unlike the more structured models like Waterfall or V-model, each iteration lasts 1-2 weeks, and the team is developing only a part of the whole product. The team, which normally consists of developers, a few testers, a business analyst and a PM, meets or has a call every day (or every other day) to discuss the latest developments, bugs and fixes to be made. The customer can also visit these meetings.
5. Kanban
Unlike Scrum, Kanban doesn’t have iterations, and if it does, they are very short. The characteristic feature of Kanban is the “Kanban board”, which is subdivided into several categories (”backlog”, “to do”, etc.) with tasks in them. The notes on the board help the team to track the progress of each task and never lose it out of sight. The model is also aimed at close cooperation with the customer. On the other hand Kanban is not recommended for long projects as there are no precise timeframes.
6. XP (Extreme programming)
Extreme programming is based on iterations, which last 1-2 weeks. Compared to other agile models, this one allows changes even after the competition of the iteration. Subsequently, XP is recommended for projects with constantly changing requirements and small teams with 2-10 programmers. However it’s not suitable for projects, where it’s expensive to change something in the process or safety critical systems, where every change should be implemented very carefully.
At Invento Labs we consider ourselves agile enthusiasts and in our projects we primarily practice Agile software development models. We believe that communication with a customer is key and value close collaboration between teammates. To know more about how the process of software development is conducted in our company click here.