Software Engineering — Software Process Activities (Part 3)

A brief discussion about the four basic process activities.

OMAR ELGABRY
Mar 18, 2017 · 6 min read
The process activities

Requirements Engineering

Software specification or requirements engineering is the process of understanding and defining what services are required and identifying the constraints on these services.

Requirements engineering processes ensures your software will meet the user expectations, and ending up with a high quality software.

It’s a critical stage of the software process as errors at this stage will reflect later on the next stages, which definitely will cause you a higher costs.

At the end of this stage, a requirements document that specifies the requirements will be produced and validated with the stockholders.

There are four main activities (or sub-activities) of requirements engineering:

The requirements engineering process.

Of course, the activities in the requirements process are not simply executed in a strict sequence, but, they are interleaved. For example, analysis activity continues during the specification as new requirements come to light.

In agile methods, requirements are developed incrementally according to user priorities and the elicitation of requirements comes from users who are part of the development team.

Software Design And Implementation

The implementation phase is the process of converting a system specification into an executable system. If an incremental approach is used, it may also involve refinement of the software specification.

A software design is a description of the structure of the software to be implemented, data models, interfaces between system components, and maybe the algorithms used.

The software designers develop the software design iteratively; they add formality and detail and correct the design as they develop their design.

Here’s an abstract model of the design process showing the inputs, activities, and the documents to be produced as output.

The software design process

The diagram suggests that the stages of the design process are sequential. In fact, they are interleaved. A feedback from one stage to another and rework can’t be avoided in any design process.

These activities can vary depending on the type of the system needs to be developed. We’ve showed four main activities that may be part of the design process for information systems, and they are:

These activities lead to a set of design outputs. The detail and representation vary based on the system being developed.

For example, in critical systems, detailed design documents giving a precise and accurate description of the system must be produced.

These outputs may be graphical models of the system, and in many cases, automatically generating code from these models.

Software Verification And Validation

Software validation or, more generally, verification and validation (V&V) is intended to show that a system both conforms to its specification and that it meets the expectations of the customer.

Validation may also involve checking processes, such as inspections or reviews at each stage of the software process, from defining the requirements till the software development.

Testing, where the system is executed using simulated test data, is an important validation technique.

The stages of testing

Testing has three main stages:

Components may be simple entities such as functions or object classes, or may be coherent groupings of these entities. Test automation tools, such as JUnit are commonly used to run component tests.

Normally, component development and testing process are interleaved. Programmers tend o make up their own test data and incrementally test the code as it’s developed.

In some other cases, tests are developed along with the requirements before the development starts. This helps the testers and developers to understand the requirements and reveals requirements problems.

When a plan-driven software process is used, testing is driven by a set of test plans, which created from the system specification and design.

How the test plans are the link between each phase of the development life cycle and its associated phase of testing can be demonstrated by a software process model called “V-model”.

Testing phases in a plan-driven software process

Software Maintenance

Requirements are always changing, even after the system has been put into its operating environment. The flexibility of software systems is one of the main reasons why software is being used in large, complex systems.

Historically, there has always been a split between the process of software development and the process of software evolution (software maintenance).

However, this distinction is increasingly irrelevant, and it makes much more sense to see development and maintenance as a continuum.

Rather than two separate processes, it is more realistic to think of software engineering as an evolutionary process where software is continually changed over its lifetime in response to changing requirements and customer needs.

OmarElGabry's Blog

This is my freedom area. Don't underestimate it. The devil is in the detail.

OMAR ELGABRY

Written by

Software Engineer. Going to the moon 🌑. When I die, turn my blog into a story.

OmarElGabry's Blog

This is my freedom area. Don't underestimate it. The devil is in the detail.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade