Wednesday, January 26, 2022

Custom software development process

 Custom software development process


If a balance has been found, and an acceptable system architecture has been created, the contractor can move on to the implementation and delivery of the system. Implementation may take place in one or more stages. For small projects, one-stage delivery of all system functionality can be quite acceptable. However, the larger the project, the higher the dependencies of subsystems within the system being created. Under these conditions, the implementation should be divided into several stages so that at the end of each stage the development team has a product ready for delivery. At the same time, the most important, fundamental functionality should be developed at an early stage, and add-ons that work on top of these core components should be implemented later. In this case, the most dangerous errors for the system will be corrected in the first stages, and the risk that the application functionality of the system will be based on an unstable basis will be significantly reduced.

After the delivery of a fully completed system, a custom software project usually moves on to the beta phase. The purpose of this stage is to check the quality of the developed system in real operating conditions. As a rule, at this stage, the performer, together with the customer, measures quantitative metrics that make it possible to determine the quality of the created system. First of all, the functional characteristics of the quality are checked, then the non-functional ones. If there are discrepancies, the performer corrects the system code.


A fully debugged and tuned system is put into commercial operation. As a rule, the contractor must accompany the system, at least during the warranty period. Identified inconsistencies should be corrected. Users and customer service personnel should receive prompt advisory support.

Preparation for the development of custom software

Preparation for the development of custom software


Let's start the review of the development process with the most common case - the development of custom software.


Work on the project begins with the preparatory stage. The purpose of the stage is to create a concept of the future system based on the customer's proposals and, based on this concept, to assess the relevance and feasibility of the project. If the decision to attract the contractor is made by the customer on a competitive basis, then the preliminary stage is actually the stage of preparing a potential contractor for the tender, including the formation of the necessary documentation.


No need to waste time and resources on a project whose concept is recognized as unclaimed or unrealizable. This project must be completed. In some cases, some iterative work with the customer is required to correct the concept of the project, until either an acceptable balance of customer requirements and contractor costs is reached, or a decision is made to curtail work.


A project whose concept looks acceptable for implementation enters the requirements development stage. At this stage, the contractor must form a list of all explicit and hidden needs of the customer. It often turns out that the customer either has not decided on his needs, or his needs are in conflict with each other, with the capabilities of the customer or with the capabilities of the contractor. The objectives of the stage are to identify all hidden needs, resolve conflicts of requirements, form a holistic technical solution and analyze the feasibility of the prepared solution.


Sometimes clarification of requirements leads to a revision of the project concept. If, after clarifying all the requirements, it is not possible to find an acceptable technical solution, the project has to be curtailed or postponed for some time in anticipation of more acceptable circumstances.


If a technical solution is found, the performer proceeds to develop the architecture of the future system. The purpose of the stage is to define the top-level logical and physical architecture that fully covers all customer requirements. When developing the architecture, the concept, requirements and preliminary technical solution are reviewed and refined, which makes it possible to prevent the most dangerous risks.