Software development: factors, processes, stages

Software development: factors, processes, stages

Software development is a complex process influenced by many factors. Although it would take an entire book to organize and explain each element, it is important to highlight the most important parts of the process.

Contents of the article:

 

 

 

 

development usually means having a model, but that’s not the only thing you need to know. In our article we will tell you what stage software development is at and analyze the most current models programs for completing tasks

Software development concept

First, it is necessary to define the concept of software development.

Software is executable code that performs specific computational operations; A POE is a collection of elements containing executable program code, associated libraries, and documentation. We are already talking about software products (SP) when they are created to perform a specific task.

Another important concept to consider in this topic is engineering. This field is the development of a product using a specific scientific methodology.

Software engineering is another field in which software products are developed. In this case, the most specific scientific methods and principles are used. The ultimate goal is to create a high quality, useful software product.

IEEE defines software engineering as the application of a systematic, disciplined, and quantitative approach to the development and subsequent use and maintenance of results.

Structural analysis methods for software design

Structural methods constitute the discipline of systems analysis and design. Thanks to such methods, various difficulties associated with detailing large systems can be eliminated. This is achieved by dividing into components, also called black boxes, and organizing these black boxes hierarchically.

The practical advantage of differentiation is that when using purchased components there is no need to understand how they work. The user only needs to know their input and output, as well as their purpose. Simply put, they must understand what tasks this and the “black box” perform.

Software development: factors, processes, stages

Based on all this, the first step in the process of simplifying a complex system is to divide it into several “black boxes”. However, units must meet some basic criteria.

  • Each black box must have one single function;
  • The functions of these “boxes” should be easy to understand, even if they are difficult to implement in practice;
  • Relationships between system elements need to be created only if these functions are interrelated. In accounting, one of these “black boxes” is needed to determine the amount of an employee’s gross wages, and the other is needed to determine the amount of taxes. Obviously, there must be a connection between them. After all, in order to calculate the amount of tax, you need to know the amount of wages;
  • The relationships between black boxes should be as simple as possible. Thanks to this, they are independent of each other.

Another fundamental aspect in the field of structural methods is the idea of ​​hierarchy. To understand a complex system, it is necessary not only to isolate it, but also to ensure proper organization of the resulting parts. This is exactly what hierarchies are used for.

If you think about it, every complex system in our world, be it a subatomic particle or an entire galaxy, is necessarily built into a certain hierarchy. If a complex system develops on its own, he uses this natural principle in his field of activity.

For example, in every company there is a hierarchy consisting of directors, regional representatives, department heads and ordinary employees. In addition, structural methods often use visual modeling, which is necessary to easily understand complex structures.

Structural analysis is a method for studying a system. First of all, a general overview of the system is created, and then the information obtained is studied in detail. Finally, the researcher receives a hierarchical structure with many levels.

Functional decomposition is the most important way of distinguishing between levels of abstraction within structural analysis. Decomposition is the division of a whole into parts. In this case, we are talking about dividing the system into functional subsystems and subfunctions. The latter is divided into tasks, which, in turn, are divided into specific procedures.

At the same time, the system continues to integrate and all its components are interconnected. If the system is developed “from the bottom up” (from specific tasks to the entire system), then the holistic picture is lost. In addition, there are difficulties associated with describing the information interaction of individual elements.

Software development: factors, processes, stages

The structural analysis and design process uses a number of models that describe:

  • Functional structure of the system;
  • The sequence of operations that need to be performed;
  • Data transfer between functional processes;
  • Relationships between data.

Software Development Stages

The first stage of working on software is preparation

The main task solved at this stage is to formulate the concept of the future system based on customer requirements. Based on this concept, developers evaluate the requirements and feasibility of the project. If a decision is made to engage a contractor on the basis of a competition, then we are talking about the stage of preparing potential workers for this competition (including the preparation of all documentation).

It is clear that there is no point in wasting time and money on a project that is unclaimed and potentially unfeasible. In this case, ending the project is the most reasonable solution.

Iterative work with the customer may be required to adjust the design concept until a satisfactory balance between customer requirements and contractor costs is achieved or until a decision is made to complete the development.

If the project is based on an implementable concept, the requirements development phase begins. At this stage, the explicit and implicit needs of the client are determined. Often clients do not have a clear idea of ​​their needs. In some situations, their needs may not coincide with the actual competence of the developer. The client’s needs may have internal contradictions.

The requirements engineering phase is necessary to address these issues. It is necessary to determine the client’s needs as accurately as possible and identify hidden needs. In addition, at this stage, conflicts between requirements are resolved, a complete technical solution is created and its feasibility is analyzed.

To clarify requirements, it is often necessary to adjust the project concept. However, in some situations, an effective technical solution cannot be found, and the project is subsequently closed or frozen until favorable conditions arise.

If a solution is found, the contractor moves on to the stage of developing the architecture of the future system. The main task of this stage is to determine the top-level logical and physical architecture that can fully cover the customer’s needs. During the architecture development process, concepts, requirements, and preliminary technical solutions are reviewed and refined. This reduces the most significant risks.

At the end of the architectural design, the design should be reviewed to ensure that the implementers can implement the concepts. During the architecture development stage, it is recommended to remove unnecessary and cumbersome functions. Such optimization often helps to select optimal project parameters.

However, significant reductions in the functional components of future systems may also be required. However, even if a situation arises where work on the project is interrupted, this is better than continuing development.

Software development: factors, processes, stages

If the results are positive and a favorable system architecture is formed, you can proceed to the implementation and delivery phase. In this case, implementation may take place in one or more stages. If we are talking about a small project, you can limit yourself to one step. However, as projects become larger in scale, the subsystems in the system being developed become more dependent.

In such cases, the implementation is divided into a certain number of stages. Moreover, this is done in such a way that at the end of each stage the developer receives ready-to-deliver results. The most important features should be developed in the early stages, and the less important ones in later stages. Thanks to this approach, the most dangerous errors for the system are eliminated first and the stability of the system infrastructure is increased.

The next stage is trial operation

The main task of this stage is to check the quality of the system in its actual state. Verification mainly consists of measuring quantitative indicators that determine product quality. First, functional quality indicators are checked, then non-functional ones. If inconsistencies are identified during the inspection, the contractor adjusts the system code.

Once the system is correctly configured, it can be put into operation. Typically, the contractor maintains the developed product for a certain period of time (at least during the warranty period). If errors are found, the system is corrected. The user and customer service personnel must be supported by timely advice.

Sooner or later the system loses its significance for the client. From this moment we can talk about the decommissioning stage. However, in the case of custom-made software, this stage may not occur. In practice, the customer relies on its exclusive rights and may not allow the contractor to further support and configure the system even before losing the association.

Software development: factors, processes, stages

The final stage of any project is completion

At this stage, the results are analyzed and the software development process is adjusted based on the experience gained. In addition, the developer knowledge base is updated with new solutions that have proven their effectiveness, as well as various warnings and new components. In the future, all this should be applied when developing other projects.

Supporting processes for software development

As part of software development, several auxiliary processes can be distinguished:

  • Documentation. The contractor creates documentation and user manuals for the created software product, both during and after development. Such documentation allows programmers to understand the structure and code even long after it was created. At the same time, documentation helps users in operating the system;
  • Configuration management. Describes the task of managing a set of created software components and versions of a software product;
  • Quality assurance. This process is necessary to ensure that the software product meets the preliminary development requirements and the standards of the contractor and the customer organization;
  • Verification. It can detect errors that occur during software development. Verification can also reveal inconsistencies between the developed software and the built architecture;
  • Certification. It is necessary to check that the obtained values ​​comply with approved standards. This means that the output must contain errors that meet all requirements and criteria;
  • Participatory assessment. This process aims to monitor and verify the status of personnel and software produced. It is carried out by the customer and the contractor throughout the project;
  • Audit. Required to independently evaluate the current status, project characteristics, documentation and various reports. This process allows you to compare the actual situation with the contract and documentation that states the requirements. Audits may be conducted by one or two parties;
  • Problem solving. Errors discovered during the monitoring and evaluation phase are eliminated.

Factors influencing software development

Factors that directly influence the result of software development are listed.

  • Class of solved problems. The semantic content of the created program is determined;
  • Methods used. They outline the organizational and technical features of the implementation of the main stages of software development;
  • Programming methods and paradigms. The coding style and architecture of the virtual machine depend on them;
  • Hardware and system software. These are virtual and physical resources that enable you to use the software.

The relationship between these factors creates various options for the development organization. Let’s highlight the main components of this process.

The main goal of software development is to create a program that can perform a specific task and comply with existing standards. The problem to be solved is described by a set of formal and informal (empirical) models. They define the process that the program must perform and the data used in that process.

A problem model is a set of special models that describe the specific nuances of the problem being solved, which are reflected in the created program.

To describe the specific parameters of the phenomenon being studied, special models are needed. This allows you to focus on specific characteristics.

The created program must perform the functions necessary to solve the problem in a specific executor (computer system). To reflect its characteristics, a performer model is used.

Software development: factors, processes, stages

An executor model is a set of specific models that describe the configuration and behavior of the computer system on which the program is running.

The developed program acts as a reflection of the model of the problem being solved in the model of the performer. The level of programming complexity depends on the number of such specialized models describing the task, as well as on the size and semantic differences with the specialized executor models.

In addition, the complexity of the development process depends on the requirements for the level of abstraction of the program being created and the parameters of the executor model, which describe the similarity with the real computer architecture.

Software development models

There are several types of software development based on different models. Listed below are the five most common ones.

Waterfall (cascade model, or “waterfall”)

In this case, development is carried out in several stages. In addition, each of the subsequent stages can only be started after the previous stage has been completed. When used correctly, the waterfall model is the fastest and easiest; it has been in use since the 1970s.

  • Easy to control. The customer always knows what the contractor is currently doing and can adjust the deadlines and budget;
  • Ability to estimate project costs at an early stage. Each nuance is determined at the stage of contract negotiations;
  • There is no need to involve very experienced testers. Specialists can rely on detailed technical documentation.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to top button