Software development: factors, processes, stages

Software development is a complex process, which is influenced by various factors. It would take a whole book to systematize and describe each element, but it is important to highlight the most significant parts of this process.

Usually, development means a model, but this is not the only thing you need to know. In our article, we will tell you what software development is, what stages it goes through, and analyze the most relevant models of this process.

Concept of software development

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

Software (SW) is an executable code that performs certain computational operations. Software is a collection of elements that includes executable code, associated libraries, and documentation. If it is created in order to perform specific tasks, then we are talking about a software product (PP).

Concept of software development

Another important concept that needs to be considered within this topic is engineering. This area is the development of products using a specific scientific methodology.

Software engineering is a separate field of activity within which software products are developed. At the same time, the most specific scientific methods and principles are used. The ultimate goal is to create a high quality and useful software product.

According to the IEEE definition, software development is the application of a systematic, disciplined, quantitative approach to development, as well as the further use and maintenance of the result.

Structural analysis methods for software design

Structural methods constitute the discipline of systems analysis and design. Thanks to such methods, it becomes possible to eliminate various difficulties associated with the specifics of large systems. This is achieved due to their differentiation into constituent parts, which are also called “black boxes”, as well as the hierarchical organization of such “black boxes”.

The practical benefit of differentiation is that when using the resulting parts, it is not necessary to understand how they work. The user only needs to know their inputs and outputs, as well as their purpose. Simply put, it is necessary to understand exactly what tasks this or that “black box” should perform.

Based on all this, it follows that at the first stage of the process of simplifying a complex system, it is divided into several “black boxes”. However, the division must meet several basic criteria:

Each “black box” should have one single function.

The functions of these “boxes” should be easy to understand, even if they are difficult to implement in practice.

The relationship between the elements of the system should be created only if their functions are interconnected. For example, in the accounting department, one of these “black boxes” is needed to determine the size of the total salary of an employee, and the other is needed to determine the amount of taxes. Obviously, there must be a connection between them. After all, to calculate the amount of taxes, you need to know the size of the salary.

Any relationships between black boxes should be as simple as possible. As a result, they become independent of each other.

Another fundamental aspect in the field of structural methods is the idea of ​​hierarchy. In order to understand a complex system, it is necessary not only to differentiate it, but also to ensure the competent organization of the resulting parts. It is for this purpose that hierarchical structures are used.

If you think about it, then any complex system in our world, whether it be an elementary particle or a whole galaxy, is necessarily arranged in a certain hierarchy. If a complex system is developed by a person himself, then he uses this natural principle in his field of activity.

For example, each company has a director, deputies for areas, a hierarchy of 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 way of studying a system. First of all, its general overview is made, and then the detailing of the received information is carried out. Ultimately, researchers get a hierarchical structure with a large number of levels.

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

At the same time, the system will still be integral, and all its components will be interconnected. If the system is developed “from the bottom up” (from specific tasks to the overall system), then its holistic view is lost. In addition, there are difficulties associated with the description of the information interaction of individual elements.

Structural analysis methods for software design

  • In the process of structural analysis and design, many models are used that describe:
  • functional structure of the system;
  • the sequence of operations performed;
  • data transfer between functional processes;
  • relationships between data.

Let’s highlight some of the most common models from the first three categories:

functional model SADT (Structured Analysis and Design Technique);

IDEF3 model;

DFD (Data Flow Diagrams) – data flow diagrams. An Entity-Relationship Model (ERM) that describes relationships between data. Commonly used in structural analysis and design. At the same time, it is a subset of the object model of the subject area.

Stages of software development

The first stage of work on software is preparation

The main task to be performed at this stage is to form the concept of the future system based on the requirements of the customer. Focusing on this concept, the developers assess how much the project is in demand and feasible. If the decision to attract a contractor is made on the basis of a competition, then we are talking about the stage of preparing a potential employee for this competition (including the formation of all documents).

It is quite obvious that there is no point in spending time and money on a project that is potentially unclaimed and unrealizable. In this case, the completion of the project is the most rational solution.

There are situations in which some iterative work with the customer is necessary to adjust the concept of the project until the moment when a sufficient ratio of customer requirements and contractor costs is reached, or when a decision is made to complete the development.

If the project is based on an implementable concept, then the requirements development stage begins. This stage involves determining the explicit and implicit needs of the customer. Often, customers do not have a clear understanding of their needs. In some situations, their needs do not correlate with the real capabilities of developers. Sometimes the needs of customers have internal contradictions.

Leave a Reply

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