I was recently reading J. Martin's book Systems Engineering Guidebook – A Process for Developing Systems and Products. From it, I learned that systems engineering reduces manufacturing costs by 40% – did you know that?

Neither did I. Even after taking a class where one of the topics was systems engineering, I only understood its relevance when I understood its applications in real life.

But, is systems engineering used in software development?

Yes!

Some big-name companies use systems engineering to improve their products.

In fact, Google has its own discipline called engineering productivity.

Facebook also has its own, called production engineering.

Also, Amazon employs a team of engineers to help build up its cloud computing infrastructure.

To understand what system engineering is and how important it is, let's answer four questions:

  1. What is a system?
  2. What is the life cycle of a project?
  3. What is systems engineering?
  4. Why does systems engineering matter?

What is a system?

A system is a combination of many “things” that work together as if they were a whole.

For example,

  • The solar system
  • trees
  • Corporations

Each one of these examples has many components (planets, leaves, departments) that together make a whole.

These components can also be sub-systems. For example, our solar system has our planet. Our planet Earth has its own systems, such as the geosphere, biosphere, and so on.

The geosphere is a sub-system of the planet Earth. [2]

1*eYsdUqZxsESlo2Q31JF6oQ
Example of a system

In programming, you can see programs as systems.

For example, a function in a given program could be seen as an element in the system.

By laying out a system of the different components of your program, not only will you make a more effective program, but also it will become easier to maintain and to add to in the future.

You can then see the system of a program as kind of the architecture in it.

Here's an example of a system in programming:

Screenshot--305-
File tree from htm5up website template

The image displays the structure of a directory (or folder) for a website template project.

Many of these directories contain multiple .html, .css, and .js files.

These files all have components and characteristics that interact with other files inside of the projects. In essence, you have a system here.

The whole project is one system. The sub-systems within this project are the directions. Each file within a directory has many components, which make up a project as a whole.

By learning how to create a system, you will learn how to create and manage projects better.

What is the lifecycle of a project?

The lifecycle of a project refers to the stages of a certain project – from the idea to the project's creation to eventual use and its fabrication in the end.

Usually, a project lifecycle consists of:

  1. Idea
  2. Creation of an idea
  3. Creation of concepts for the actual project concept
  4. Utilizing and supporting the project
  5. Deactivation

Below is an example that explains how you can apply systems engineering to develop a website for a company.

pexels-eduardo-dutra-2115217
Photo by Eduardo Dutra from Pexels

Project lifecycle example

Let's say you are running a software company and a client has asked you to develop a website for their company.

Come up with the Idea

Here, you need to have a conversation with the client to determine how the project will be developed, and to learn what the client actually wants from the project.

It is also a good idea to discuss with the client potential future problems that may arise, whether technical or financial.

This is by far the most important phase of the entire lifecycle of the project.

Without understanding the client's needs, you cannot accomplish the projects they want. This is true regardless of your technical knowledge.

Create and develop the Idea

The next step is to plan all the steps needed to turn the plan into a real project after understanding the needs of your client.

As an example, you will plan out where you will launch the site, where you will deploy it, and so on.

Come up with the concepts for the actual project concept

In this phase, you build the projects the client wants. It is also a critically important step.

It allows you to design the website according to what the client wants.

Use and support the project

We are now in the production phase. During this phase, the project will be tested and any technical issues will be fixed.

If there are technical problems, they should be minor, and should not adversely affect the majority of the website.

However, once the project is given to the client, the maintenance should be handled by the client.

Deactivation

The website will be deactivated in this final step.

It is either replaced by another site, the client ends their company and takes the site down, and so on.

What is systems engineering and why does it matter?

We have seen that a system is a combination of many “things” that work together as a whole.

We have also seen that systems have lifecycles.

The act then of planning these lifecycles before starting the project and during its execution is called systems engineering.

Technical example of systems engineering

Let's imagine that you already know what the client wants.

Imagine they've asked you to design an e-commerce site that will host thousands of photos from sellers.

The site needs a central server to host and deliver a lot of images from users. Your site, for instance, may feature images of products it sells.

You need to create an efficient and easy to maintain system that requests images for the website in a short time.

How can you achieve this?

Difficult to answer right? Without a doubt, this is a challenging problem.

One that requires the planning of a system to maximise efficiency and to be as easy as possible to maintain.

If you want to know more about this problem, you can check out this article.

Although this is a big technical problem, there are other problems even more serious.

What are the best ways to manage the growth of a large open source library, for example?

How exactly will its architecture be structured, so it is efficient and easy to use?

Here is an overview of a popular library architecture in Python, matplotlib.

You can create and manage the structure of the program when you plan a system.

Thus, the developer won't have to worry about missing functionality goals, serious defects, or spending significantly more than expected on production and maintenance.

It is for this reason that Google, Facebook, Amazon, and many others have dedicated teams of systems engineers.

Through systems engineering, we can develop a kind of "plan" that achieves our goals or the company's goals with near perfection.

Wrapping up

Well, now you understand:

  • What a system is
  • What a project lifecycle is
  • What systems engineering is and its value in all kinds of projects

Thanks for reading!

References

  1. J. Martin, Systems Engineering Guidebook A Process for Developing Systems and Products. London: CRC Press, pp. 5–6.
  2. National Geographic Society, “Earth’s Systems,” National Geographic Society, Oct. 29, 2019. https://www.nationalgeographic.org/article/earths-systems/
  3. “The Architecture of Open Source Applications (Volume 2): Scalable Web Architecture and Distributed Systems,” www.aosabook.org. https://www.aosabook.org/en/distsys.html
  4. B. Douglass, in Real-time design patterns: Robust Scalable Architecture for real-time systems, Boston: Addison-Wesley, 2003, pp. 96–97.