原文:What is Systems Engineering? A Beginner's Guide,作者:Tiago Monteiro

我最近在读 J. Martin 的书《Systems Engineering Guidebook – A Process for Developing Systems and Products》(《系统工程指南--开发系统和产品的过程》)[1]。 从中我了解到,系统工程可以降低 40% 的制造成本——你知道吗?

我以前也不知道。即使在上了一堂以系统工程为主题的课后,我也只有在了解其在现实生活中的应用时才明白其相关性。

但是,系统工程是否用于软件开发?

是的!

一些大名鼎鼎的公司使用系统工程来改进他们的产品。

事实上,谷歌有自己的学科,叫作工程生产力.

Facebook 也有自己的,叫作生产工程.

另外,亚马逊雇佣了一个团队 的工程师来帮助建立其云计算基础设施。

为了了解什么是系统工程以及它的重要性,我们来回答四个问题。

  1. 什么是系统?
  2. 什么是项目的生命周期?
  3. 什么是系统工程?
  4. 为什么系统工程很重要?

什么是系统?

一个系统是许多“东西”的组合,它们像一个整体一样一起工作。

比如说:

  • 太阳系统
  • 树木
  • 公司

这些例子中的每一个都有许多组件(行星、树叶、部门),它们共同构成一个整体。

这些组件也可以是子系统。例如,我们的太阳系有我们的星球。我们的地球有自己的系统,如地圈、生物圈,等等。

地质圈是地球上的一个 子系统。[2]

1*eYsdUqZxsESlo2Q31JF6oQ

有关系统的例子

在编程中,你可以把程序看作是系统。

例如,某个程序中的一个函数可以被看作是系统中的一个元素。

通过为你的程序的不同组成部分布置一个系统,你不仅会做出一个更有效的程序,而且它也会变得更容易维护和在未来添加功能。

因此,你可以把程序的系统看作是其中的一种架构。

这里有一个编程中的系统的例子:

Screenshot--305-

文件树来自 htm5up 网站模板

图片显示了一个网站模板项目的目录(或文件夹)的结构。

许多这些目录包含多个 .html、.css 和 .js 文件。

这些文件都有组件和特性,与项目内的其他文件相互作用。从本质上讲,你在这里有一个系统。

整个项目是一个系统。这个项目中的子系统是指方向。一个目录内的每个文件都有许多组件,它们构成了一个项目的整体。

通过学习如何创建一个系统,你将学会如何更好地创建和管理项目。

什么是项目的生命周期?

项目的生命周期指的是某个项目的各个阶段——从想法到项目的创建,到最终的使用和最后的制造。

通常情况下,项目的生命周期包括:

  1. 构思
  2. 创造一个想法
  3. 为实际的项目概念创造概念
  4. 使用和支持该项目
  5. 停用

下面是一个例子,解释了如何应用系统工程为一个公司开发网站。

pexels-eduardo-dutra-2115217

Photo by Eduardo Dutra from Pexels

项目生命周期实例

假设你正在经营一家软件公司,一个客户要求你为他们公司开发一个网站。

提出想法

在这里,你需要与客户进行对话,以确定项目将如何发展,并了解客户对项目的实际需求。

与客户讨论未来可能出现的问题也是一个好主意,无论是技术还是财务问题。

这是迄今为止项目整个生命周期中最重要的阶段。

不了解客户的需求,你就无法完成他们想要的项目。无论你的技术知识如何,这一点都是真实的。

创造和发展想法

下一步是在了解客户的需求后,计划所有需要的步骤,把计划变成一个真正的项目。

举例来说,你要计划出你将在哪里启动网站,在哪里部署网站,等等。

为实际的项目概念提出构想

在这个阶段,你建立客户想要的项目。这也是一个极其重要的步骤。

它允许你根据客户的要求来设计网站。

使用和支持该项目

我们现在正处于生产阶段。在这个阶段,项目将被测试,任何技术问题将被修复。

如果有技术问题,应该是小问题,而且不应该对网站的大部分内容产生不利影响。

然而,一旦项目交给客户,维护工作就应该由客户来处理。

停用

在这最后一步,网站将被停用。

它要么被另一个网站取代,要么客户结束他们的公司并关闭该网站,等等。

什么是系统工程,它为什么重要?

我们已经看到,一个系统是许多 东西 的组合,它们作为一个整体一起工作。

我们还看到,系统有生命周期。

那么,在项目开始前和执行过程中对这些生命周期进行规划的行为被称为系统工程

系统工程的技术实例

让我们想象一下,你已经知道客户想要什么。

想象一下,他们让你设计一个电子商务网站,该网站将承载来自卖家的成千上万张照片。

该网站需要一个中央服务器来托管和传递大量来自用户的图片。例如,你的网站可能以其销售的产品图片为特色。

你需要创建一个高效且易于维护的系统,在短时间内为网站请求图片。

你如何能实现这一点?

难以回答吧?毫无疑问,这是一个具有挑战性的问题。

一个需要对系统进行规划以最大限度地提高效率,并尽可能地易于维护的问题。

如果你想了解更多关于这个问题,你可以查看这篇文章

虽然这是一个大的技术问题,但还有其他更严重的问题。

例如,管理一个大型开源图书馆的增长的最佳方法是什么?

它的架构究竟如何,才能做到高效和易于使用?

这里 是对 Python 中一个流行的库架构的概述,matplotlib

当你计划一个系统时,你可以创建和管理程序的架构。

这样,开发者就不必担心功能目标的缺失、严重的缺陷,或在生产和维护上花费大大超过预期。

正是由于这个原因,谷歌、Facebook、亚马逊和其他许多公司都有专门的系统工程师团队。

通过系统工程,我们可以制定一种“计划”,以接近完美的方式实现我们的目标或公司的目标。

总结

好了,现在你明白了:

  • 什么是系统
  • 什么是项目生命周期
  • 什么是系统工程以及它在各种项目中的价值

谢谢你阅读本文!

附录

  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.