How Systems Engineering and Software Development Are Better Together

We often think of systems engineers and software developers as two separate roles. However, a relationship between the two is key. As the Systems Engineering Body of Knowledge says, “Software engineering and systems engineering are not merely related disciplines; they are intimately intertwined.” Good software requires synergy between the systems engineering team and the software development team. Let’s look at the lifecycle of software and how the teams can work together to improve the overall management of software from beginning to end.

The Lifecycle of Software

Think of a software’s lifecycle in the shape of a “V”. On the left side, the lifecycle starts with defining the project, followed by implementation at the base. The software developers test the new software here and provide feedback to the systems engineers for verification and validation (on the right side).

 

 

V Lifecycle of a System
V Lifecycle of a System

 

There are several ways you can tackle the “V”. You can either take a top-down, bottom-up, or middle-out approach.

Middle-Out Systems Engineering
Middle-Out Systems Engineering

 

Project Definition Phase

Requirements Management is a crucial step for both systems engineers and software developers. The functional, physical, operational and verification requirements need to be defined early in the lifecycle. Software developers and system engineers will need to work together to define the project. To help ensure that they are well-defined and usable, Innoslate has a requirements quality checker built from Natural Language Processing.

Requirements can be directly developed in Innoslate, then traced to the corresponding verification requirements, or they can be traced to the test plans during the testing phase of the lifecycle.

You can automatically generate a functional diagram from functional requirements. You can then verify this diagram in a simulation. If the simulation finds any logical errors, Innoslate will direct you to fixing them.

Alternatively, you can use the middle-out approach, which starts at with the functional analysis. If you develop the functional analysis first through the model, you can auto-generate its concurrent functional requirements document.

The bottom-up approach is best used for reverse-engineering. Here, you would start with the existing software and develop the functional/physical requirements from there.

 

Project Test and Integration Phase

During this phase, both software developers and systems engineers need to work together in verifying and testing the software. The software developers need to be in a constant feedback loop with the systems engineers, who can develop the test cases and test plans directly in Innoslate.

Systems engineers can be notified of success or errors via the GitHub integration. The GitHub integration is a way to help manage software development more effectively. With it, you can read an overview of activities and current issues, as well as the Kanban board that shows status and progress.  You can also update test plans, verify and validate requirements to the test cases, and push issues from Innoslate into GitHub, all while the systems engineer makes sure that requirements are being met as the software development occurs.

 

Systems engineers can aid in the overall development of software. Systems engineers are experts at developing requirements and testing. They can also add additional assistance with bringing functional modeling to the process, which helps improve efficiency and reduce risks. If you want to talk to a systems engineer about integrating MBSE into your next software development project, contact us.