Software Process Models

Organizations that develop large and complex systems need to define and continuously improve their product development processes. Organizations that develop poor quality products may face the risk of reputation, customer and revenue loss and even jeopardize the future of the organization, but with these models, it will be possible to work in a planned way and to realize the software project in the best way.

Code and Fix

It usually starts with a product idea that is not finalized and continues coding until the product is ready. Suitable for very small projects or short-lived prototypes. It does not need any planning. Since it does not require expertise, anyone can use this model. However, this model is generally uncontrolled. There is no resource planning and the deadline is uncertain. In addition, because of the lack of documentation, it is difficult to find faults and the maintenance is low. As a result, it is suitable for students and individual developers, but useless for teamwork.

Waterfall

Analysis, Design, Implementation, Coding, Testing, Integration… is the process of completing the steps in order. It must be done correctly to do justice to its phase so that it is not going back. This model was used quite frequently in old military software and projects.

But later it was noticed that the operation of this model is very simple, the coding process of the analysis can change and change during coding, instead, more applicable models have been sought.
The method of this was to create systems through which the phases they could return to these phases as needed could pass over again.
Of course, another factor in this was that the programs were written and processed in the past. In other words, systems that would work smoothly when they worked were very critical. For this, the analysis should be done very well from the beginning. It was not possible to develop such repetitive software for the program to be used in the Space / Satellite vehicle, the program to be used in the Military Device / Missile / Equipment, etc.

In the following process, different software development models have emerged thanks to the changing needs and pages of technology and software in our lives.

Waterfall Iterative Model

In the Waterfall Model, when we realize that the system does not work properly after all phases are completed, it is the model in which we understand where the problem is caused and return to that phase and operate one after the other. For example, if an error is made during the code development phase, return to this phase, the error in this phase is corrected and the other phases are operated. The worst case will be that the Analysis is done wrong. Going to the analysis phase and re-doing the analysis at this stage, changing the design accordingly, then coding, testing, integration will all have to change.

V Modeli

It is the addition of Verification and Validation mechanism to the Waterfall Model. In fact, when I describe the phases, it includes the Coding and Testing phases in the realization phase. And I mentioned that these test types are Unit, Integration, Regression, Smoke, Beta, System, Stress, Performance Testing. In fact, all of these tests are not realizations, but also tests that will include other phases. The goal is the development model that you move forward by making sure the system is working properly and quality by putting verification and validation mechanisms across each stage.
As a result of the analysis, V Model realized that it is a structure in which we split the system from top to bottom and then we designed it and then gathered the system during realization and put the relevant verification and confirmation mechanism in front of each stage of this recovery sequence.
* Your Codes that pass Unit Test are working successfully.
* If the Integration Test is successful, your Module and Architectural Design is correct.
* If you are passing the System Tests, your System design is correct.
* Finally, if you pass the customer acceptance tests, it means you have done the Requirement analysis correctly.

Iterative Model

Before the project, business analysts and product managers make the necessary analyzes, meetings, etc., and extract the requirements. After this is completed, the work is developed in multiple cycles / cycles according to certain priorities by the Project manager, and the product is released to the customer after all requirements are completed.
Therefore, since there is no workable product output after each cycle, the following parts can be developed first in these cycles.
* risky areas can be developed
* infrastructure studies (security, authorization, authentication, ui infrastructure, backend architecture, frontend-backend communication, CI / CD, testing)
* development of libraries that can be used jointly by all codes
Then, application capabilities can be added on these according to the requirements of the customer.

Incremental Model

As in the Iterative Model, the Business Analysts and the Product Manager prepare the requirements beforehand and you need to develop the project with certain cycles, but here is the difference that the outputs at the end of these cycles must be the employee outputs and this can be used by the customer.
It obliges the project manager to be able to divide the work into workable parts / modules. In this respect, you can develop the project that meets this requirement with the incremental model.
This will lead you to coding, testing and setting up a live environment without having to design the entire system, and will enable you to communicate with the customer in a shorter time and get feedback.
The success of this model is due to the fact that the parts divided in iterations are as separate / abstract from each other as possible and the need for integration with each other is less.
Otherwise, this model becomes more costly than the waterfall model if the designs in the next iterations affect the design in the previous iteration, that is, the parts are very interrelated.

Evolutionary Model

In the Iterative model, we have reduced the risks of engineering problems / errors that may occur in this region by turning the stages (design, coding, testing) more than once.
When engineers design everything according to all project requirements and then switch to coding, it is very difficult to use this design exactly. The designer team needs to be very experienced and know how to create the code.
The same is true when coding, it is very difficult to say that we have finished coding and we will not make serious code changes that will not cause any errors anymore.
In the incremental model, it is very important for the customer to test and give feedback after all of the product is completed, to include the customer in the process quite late and to get the confirmation that the works are going correctly with intermediate outputs instead of saying that the customer is not what I want. The most important thing of this model is to involve the customer in development.
The fact that the Evolutionary model analysis phase is ready for the developer team sometimes negatively affects product quality. Analyzing with the development team as part of these processes, better understanding of the requirements by the developer team
It provides the emergence of more grounded needs instead of requirements that would be very difficult to develop. (The goal here is not to avoid making requirements. It is the joint participation of the product owner, developer and business analyst in the analysis)

Spiral Model

It is very difficult for you to be able to properly plan and analyze the needs in large projects, because there may be many risks you do not know.
The spiral model has developed a model based on these risks. Its purpose is to reduce the risk level by level and ensure the successful completion of the project.
Risk Analysis and Management was not handled and examined in such detail in the Waterfall models I mentioned earlier. But let’s say;
the specs of the project are not very clear.
When the requirements have not been fully revealed, the systems to be integrated are newly developed or there are many uncertain issues etc. Phases here
Determination of Goals and Finding Alternative Solutions: At this stage, targets are determined as a result of the needs obtained from the customer and solution proposals are produced according to these targets.
Solution Way is Chosen and Risk is Eliminated: At this stage, solutions are evaluated and the best solution is determined and a prototype is developed.
Development is Made for the Next Stage of the Product: At this stage, development and tests are made according to this solution and the product is prepared for the next stage.
The Next Phase is Planned: At this stage, the next phase is planned. Such as operational planning, development planning, integration and test planning.

You can see the Spiral Modeling product as a development system that gradually grows like a snail shell.
Risk Analysis → Prototype1 → Operation Scope → RQTS Plan → Risk Analysis → Prototype2 → Emulations → Software RQTS → Requirements Verification → Development Plan → Risk Analysis → Prototype3 → Model Structure Creation → Design → Design Verification and Verification → Integration and Test Plan → Risk Analysis → Operational Prototype → Benchmarks. → Detailed Design → Code → Unit Test → Integration Test → Acceptance Test → ..

Rational Unified Process

Developed by Rational Software, this process structure is based on the Iterative Development model.
The phases in this model are different from the phases we talked about; The phases over the time intervals over the advancing time are indicated.
Inception I1: It is the revealing of the most business model and determination of the requirements at the beginning of the project. At this stage, no dealing with Analysis & Design and other Coding, Testing and Deploy jobs.
Eloboration (Elaboration) E1, E2: It is the time period in which you detail your current business model, analysis and design. At this stage, coding starts with a little bit, other works are emphasized very little.
Construction C1, C2, C3 and C4: It is the part where coding, test and deploy processes increase the most in the product. Revisions can be made by going back to design and analysis in parts where things go wrong, even if a little.
Transition T1, T2: It is the stage of transferring the product to the customer. With Beta Tesleri, it is tested whether the system complies with the wishes of the customer. It also includes training for user and maintenance teams.

Agile Model

What I understand from agility is to bring the product to the customer as soon as possible, to solve it in the shortest time when there is a need for a change in the product or when an error occurs.
What is required for this?
Evolutionary, one of the methods we mentioned above, is suitable for this structure. Because the participation of a team such as customer, business expert, product owner, and developer in the analysis study collectively allows to describe the requirements as required without applying.
Standup meetings: It provides the opportunity to check every day that the team is in the best synchronization, whether there are any waiting or problematic parts.
The concept of iteration: It is very important to divide the product into parts and to present these parts to the customer, at this stage iteration planning, reviewing and evaluating the functioning (restospective). The ability to run these jobs quickly one after another
Continuous Integration and Ability to Send to Live: It is the ability to continuously build / compile the developed product parts, to run and integrate unit tests, to run integration tests, and then to present them to the customer quickly.
Kanban Board: The board where you can follow the stage of the work.
Refactoring, Pair Programming, Unit Test, Code Analyzer: In order to improve the quality of your code, you can make refactoring work on the parts you see badly. With Pair programming, you can control the code while writing the code in another person’s eyes, and test whether the code is doing the right thing with unit test and code analysis.
Source code management and version management: If you can perform source code distribution and version management correctly, you can develop parallel code with each other on the same code structure, debugging through separate branches or perform new feature feature development.

Leave a Reply

Your email address will not be published.

You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*