Custom software development in a company is a topic often addressed in the business world. Demands for customized products and services according to consumer preferences have increased in both the b2c and b2b domains. The market trend is to choose a product or service that meets all customer needs. And the companies in the b2b field have adapted to the market, thus creating software systems according to the client’s ideas and preferences.
When we are talking about the process of the software creation, we are talking about SDLC (Software development Life Cycle). SDLC is a set of operations that aim to create software in the shortest time, with high quality and low costs.
SDLC works by lowering the cost of software development while simultaneously improving quality and shortening production time. SDLC achieves these apparently divergent goals by following a plan that removes the ordinary “traps” of software development projects. That plan starts by evaluating existing systems for deficiencies.
Next, it defines the requirements of the new system. It then creates the software through the required stages. By anticipating costly mistakes like failing to ask the end-user or client for feedback, SLDC can eliminate redundant rework and after-the-fact fixes.
A very important part is the testing phase. As the SDLC is a repetitive methodology, you must ensure code quality at every cycle. Many organizations tend to spend few efforts on testing while a stronger focus on testing can save them a lot of rework, time, and money. A SDLC has 6 stages to follow:
- Analysis and collection of requirements
- Implementation and development
- Testing and validation
- Deployment and acceptance
Analysis and collection of requirements
At this stage of the project, the definition of what needs to be developed takes place. The goal here is to find out the needs of the customer and to define very clearly the requirements for the future software product. This stage is the most important for project managers and sales people. As many meetings as possible are organized between the project managers, the sales agents and the client in order to establish by mutual agreement these specifications that will determine what the final product will look like.
These specifications may be of the type:
- Who will use the system?
- How will they use this system?
- What kind of data will be entered into the system?
- What kind of data will come out of the system?
The answer to these questions must be found at this stage and represents the specifications of the product. After all this information is gathered, it is analyzed in detail to determine if it is valid or not and of course if it can or cannot be implemented in the system to be built.
Finally, a document is created with the product specifications that will represent the model that will be followed in the next stage of the product life cycle.
This stage aims to model the future system, seen as a solution to the problems determined in the analysis phase. If the Analysis was to determine what should be done, the design phase should show how it should be done. In this phase, the functionalities that the future system will have to have are designed.
In this stage the system and the system architecture are prepared following the model of the document with the specifications of the product made in the first stage. Also, at this stage, the hardware components and the needs of the system are established from the point of view of the system architecture. The system design specifications will be used as a starting model for the next phase.
Implementation and development
After receiving the design specifications of the system and implicitly details about its architecture, the implementation work is divided into several stages and the actual programming is started. As programming takes place at this stage, it is a stage that is the most important part for the programmer. This stage is also the longest stage in the life cycle.
Testing and validation
Once the code has been fully implemented, the product is thoroughly tested according to the specifications in the first stage to ensure that the product actually solves the problems for which it was created and works as agreed with the customer at the beginning of development. In this stage, several types of tests are performed, such as: unit testing, system acceptance, integrity test, final acceptance test.
Deployment and acceptance
After successful testing, the product is sent to the customer where it is installed for use. Acceptance is the phase in which the customer receives the software system, accepts that it meets his requirements and gives his consent to enter the maintenance phase.
After the customer starts using the product itself, then there is a risk that certain software problems will appear over time, problems that must also be solved by the initial programmer. This process in which after delivery a warranty of the product and the possibility of subsequent repair is ensured is called Maintenance. Entering the maintenance phase means stopping the inclusion of any new requirements in the system and correcting bugs (malfunctions). This phase is important because it is often an expensive phase, but too often ignored.
Agile software development
Agile software development models are also a kind of incremental life cycle model. The software is developed by methods through fast, iterative cycles. The result is small products that are made after each build and that always improve the previous product. Each product launched is rigorously tested to ensure that the quality of the software is maintained. It is mainly used for applications that need an exact time.
The advantages of agile software development model:
1) Very satisfactory for customer who can continuously receive improved software products.
2) People and interactions are highlighted as opposed to the process itself and the work tools. Customers, developers and testers need to interact constantly.
3) The soft products are delivered in very short time.
4) Face-to-face conversations are the best forms of communication.
5) Daily collaborations between developers and customers can take place.
6) You can make changes to the software no matter how advanced the product is without problems.