In this article, we will talk about the software development process. In particular, we will see what a software development process is, what the structural activities of a software development process are and which the secondary ones are (umbrella activities). Let's study all of these steps in detail to know how the software is developed.
Software engineering and Software Development
The term software engineering refers to as “the discipline that deals with the production processes and development methodologies aimed at the development of software systems."
Software engineering, therefore, proposes a series of objectives linked to the evolution of software development (understood as an industrial activity) both from a technological point of view (for example through the definition of new programming languages) and methodology (for example, the improvement of software life cycle models).
The IEEE (Institute of Electrical and Electronics Engineers) with the term software engineering means "the application of a systematic, disciplined and measurable strategy to the development, operation, and maintenance of the software."
Software engineering: a stratified technology
The basis of any engineering strategy, including that of the software development process, is the attention to quality. The "total quality" or "Six Sigma" strategies fuel the culture of progressive product improvement, which in turn allows the development of increasingly mature strategies for software engineering. The other layers of software engineering are based on the company's commitment to quality.
The process layer holds the technological levels together and allows the rational and timely development of the software. This layer is the basis of software project management control. It represents the basis in which the technical methods are applied, in which intermediate products are created (models, documents, etc.), milestones are established, and product quality is guaranteed. The methods of software engineering provide technical methods for software construction. The methods include various activities such as requirements analysis, design, program construction, testing, and support. Finally, the tools provide automated or semi-automated support for the process and methods. The tools are integrated so that info is created by one instrument that can be used by others.
What is Software developmental process?
The Software developmental process is the process by which the user’s needs are translated into a software product. It involves translating user needs into software requirements, transforming the software requirements into design, implementing the design in code, testing the code, and sometimes, installing and checking out the software for operational use. These activities may overlap or be performed iteratively”.
The process and its structure
Software development processes are a set of activities that aim to produce quality software. The process defines a structure for a set of key process areas (Key Process Areas) that must be established for an effective release of the product and the way in which the project will be developed.
The structure of a process establishes the basis of a software development process, identifying a small number of structural activities applicable to all software projects, regardless of their size or complexity. The typical structural activities common to all process models are:
- Communications: It concerns communications and collaboration with the client/stakeholder, and includes the collection of requirements and other related activities.
- Planning: establishes a plan for subsequent software engineering work. Describes the operations to be performed, the risks of the project, the necessary resources, and the products to be made, and work planning.
- Modeling: It is all about the creation of models that allow the developer and the client to understand the software and design requirements better. It is divided into two sub-activities:
- Analysis of requirements: Collection, processing, negotiation, specification, and validation of the requirements that lead to the creation of the analytical model and/or the specification of the requirements.
- Design: It includes data design, architecture design, interface design, component design. A project model and/or a project specification are created.
- Construction: This activity can be divided into:
- Code generation (code drawing): The actual development of the code.
- Testing: the test activities aimed at identifying and correcting errors.
- Deployment: the software is delivered to the customer, who evaluates the product.
There are also umbrella activities, which are the secondary activities, but they are not strictly related to the production phase of the process which helps to achieve the objective. Every action of software engineering is represented by some sets of activities, products, quality assessment points, and project deadlines.
Typical umbrella activities are:
1. Project tracking and control: It is a dual process, which allows the development team to monitor progress for planning and to take any action necessary to return to the scheduled times.
2. Use of formal techniques: They evaluate the products processed by software engineering in an attempt to eliminate errors before they propagate to the next action or activity.
3. Software quality: Defines and conducts the activities necessary to guarantee the quality of the product.
4. Software configuration management: It is a tracking and control activity of the effects of changes through a software development process.
5. Preparation of documents and production of the product: It includes all the activities necessary to create products such as models, documents, registers, forms, and lists.
6. Reuse management: It defines the criteria for the reuse of the product produced (including the software components) and establishes the mechanisms for the creation of reusable elements.
7. Measurements: It includes all the measurements of each aspect of the software project.
8. Risk analysis: It examines the risks that can influence the project result and/or product quality.
The process models used in recent decades have focused on the definition, identification, and detailed application of the activities and tasks of the process. The goal is to improve product quality, make project management simpler, help teams better perform their activities. However, these tools do not always help to reach the goal rather; they often burden the project by introducing more organization.
For this reason, methodologies have arisen which focus on the agility of the project and use principles that render the approach less formal, without losing effectiveness.
Dec 17, 2019