Iteratiivne mudel Inkrementaalne mudel (inglise keeles) - kirillsats/FirstAppBuketov GitHub Wiki
Iterative development model is a process in which software products are created step-by-step through multiple cycles (iterations). Each iteration improves or adds new parts to the system, and based on the received feedback, changes and corrections are made in the next cycle. The main goal is continuous system development, delivering working versions of the product after each iteration.
Repeated Development – Development occurs through repeated cycles, where each new cycle builds on and improves the previous one. Cyclic Feedback – After each development cycle, feedback is collected from users or the development team, which helps guide further work.
Flexibility to Changes – By dividing the work into smaller parts, it's easier to make changes to the system when new requirements or issues arise.
Prototyping– The first version may be a prototype that is gradually improved and brought to a final version.
Sustainability – Each cycle helps improve the system, reducing project errors and risks.
1. Technical development
In engineering, the creation of new features or the fixing of bugs often takes place over several cycles. Developers can create different versions of features or solutions, test them, gather feedback, and choose the most effective versions for further refinement. This is exactly the iterative approach: create, test, analyze, improve.
-
Product development
Launching products can also be an iterative process. Manufacturers may release several versions of the same device, improving its functionality and design based on user feedback. For example, mobile phones or headphones are regularly updated and improved based on what worked and what didn’t in the previous version. This is also an iterative model, where each new product builds on the previous one.
-
Sales activities
In sales departments, the iterative approach can be applied, for example, in mass mailing, where different subject line variations are tested. Testing multiple versions helps determine which one attracts more attention or generates more clicks. By analyzing the results and adjusting based on that analysis, sales emails become more effective. This is also an iterative process.
-
Marketing
Marketing often involves iterative processes, especially when testing advertising materials or strategies. For example, conducting A/B tests is a classic example of the iterative approach. Marketers create several ad or text versions, test them, analyze the results, and make changes to improve audience response. The repeated execution of these processes and making data-driven improvements is the iterative model.
Product development Launching products can also be an iterative process. Manufacturers may release several versions of the same device, improving its functionality and design based on user feedback. For example, mobile phones or headphones are regularly updated and improved based on what worked and what didn’t in the previous version. This is also an iterative model, where each new product builds on the previous one.
Sales activities In sales departments, the iterative approach can be applied, for example, in mass mailing, where different subject line variations are tested. Testing multiple versions helps determine which one attracts more attention or generates more clicks. By analyzing the results and adjusting based on that analysis, sales emails become more effective. This is also an iterative process.
Marketing Marketing often involves iterative processes, especially when testing advertising materials or strategies. For example, conducting A/B tests is a classic example of the iterative approach. Marketers create several ad or text versions, test them, analyze the results, and make changes to improve audience response. The repeated execution of these processes and making data-driven improvements is the iterative model." tabindex="0" role="button" style="box-sizing: border-box; position: relative; display: inline-block; padding: 0px !important; font-size: 14px; font-weight: var(--base-text-weight-medium, 500); line-height: 20px; white-space: nowrap; vertical-align: middle; cursor: pointer; -webkit-user-select: none; border-width: 1px; border-style: solid; border-color: var(--button-default-borderColor-rest, var(--color-btn-border)); border-image: none; border-radius: 6px; appearance: none; color: var(--button-default-fgColor-rest, var(--color-btn-text)); background-color: var(--button-default-bgColor-rest, var(--color-btn-bg)); box-shadow: var(--button-default-shadow-resting, var(--color-btn-shadow)),var(--button-default-shadow-inset, var(--color-btn-inset-shadow)); transition: color 80ms cubic-bezier(0.33, 1, 0.68, 1), background-color, box-shadow, border-color; margin: var(--base-size-8, 8px) !important;">
For example, in the early stages of software development, a basic user interface is created. In the next iteration, database support is added, and in following iterations, new features and improvements are implemented based on user feedback.
In all of these examples, the cycle is repeated along with improvements and optimizations, which is the core principle of the iterative model.
Get the first version quickly - you can get the first working version up and running fairly quickly, giving you an idea of how the system works.
Feedback integration - developers can quickly get feedback from users and other stakeholders to make the necessary changes.
Reducing risks - Because each cycle is small and independent, it helps to quickly detect and correct errors, minimising risks.
Repeated work - Some changes or additions may require work to be repeated several times, which can slow down the development process.
Time and resource costs - Each cycle may require additional time and resources as a new version needs testing and refinement.
The incremental model is an approach in which a software product is created step-by-step by adding new features (increments) to the system. Each increment represents a completed but partial version of the system, which is gradually added to the final version. In the early stages, core functionalities are developed, and additional features are added later.
Requirement definition – In the initial phase, the main system requirements are identified, which will be implemented in different stages.
Design – A detailed design is created, covering the entire system while taking into account the addition of new features at each stage.
Development – The first step is developed, including the core functionalities.
Testing – The first step is tested to ensure it works correctly.
Enhancements and corrections – With each subsequent step, new features are added and the system is improved.
Deployment – At the end, the system is ready for use once all increments have been developed and tested.
In the development process of user registration software, only registration and login functionalities are implemented in the first phase. In the second step, a password recovery feature is added, and in the third step, integration with a social network is added to allow registration via a third-party account. With each step, new functionality is added to the system.
A quick start - the first step is to quickly set up a working system that expands over time.
Gradual addition of functionality - Each new increment adds new functionality, allowing users to gradually get used to the new features.
Low upfront costs - initial deployments do not require significant resources as they only provide basic functionality.
Easy upgrades - If bugs are found in the system, they can be easily fixed in the next deployment.
Not always full functionality - at an early stage, the system may not be sufficiently functional and parts may not be fully developed or tested.
Management complexity - Managing multiple tiers can be complex, as the addition of new features and their integration into the system needs to be coordinated.
Aspect | Iterative | Incremental |
---|---|---|
Definition | Repeating cycles to refine and improve the system | Building the system piece by piece |
Focus | Refinement of features | Addition of new features |
Development Approach | Full system is built in rough form first, then improved in cycles | Functional parts are developed one at a time and added to the product |
User Feedback | Incorporated after each iteration | Incorporated after each increment |
Goal per Cycle | Improve existing functionality | Add new functionality |
End Product | Achieved gradually by refinement | Achieved gradually by growth |
Testing | Frequent testing and evaluation of the entire system | Testing of each added component or increment |
Example | Prototyping a UI and refining it over time | Adding modules like login → dashboard → settings |