软件工程中的子系统和系统组件
The subsystem and the components of the system in software engineering
在软件工程中如何轻松区分子系统和系统的组件?
请给出每一个的详细定义..
为了让我更清楚,让我们假设系统是一个 Whosebug 站点,它的组件和子系统是什么?
我之所以谨慎回答这个问题,部分原因是根据上下文我们可以有很多定义。
例如,您可以在 UML 文献中搜索系统和组件的定义,发现它与操作系统书籍不同。
也就是说,这些是我对组件和子系统的粗略定义。我并不是说那是完全正确的。
这只是我在设计应用程序时发现的一种组织方式。
让我们先定义“The System”。请注意,我称其为“The”而不是“a”系统。因为这里系统是我们的背景我们的世界。
系统是我们从事的项目。作为软件工程师/架构师/开发人员,您的使命是实现它、维护它并使其蓬勃发展。
我没有简单的“系统”定义,因为不同的项目有不同的上下文。
即使是在不同商店的类似项目,由于内部文化的不同,语言也略有不同。
恕我直言,定义依赖于语言,语言依赖于文化,文化从上下文中演变而来。
但我离题了。在简历中,您的定义取决于您的上下文。
例如在 DDD 中,有必要定义一个 UbiquitousLanguage
以确保每个人都在同一页面上。
我们称“蓝图”为您用来抽象项目的图表,无论它是否在 UML、Bizagi 等格式中。
子系统的通用定义可以是:
从系统的角度来看,它是您的顶级蓝图上的 black-box。一般来说,子系统本身就有蓝图,从它的角度来看,它就是系统。
子系统可以独立存在,并且在系统上有明确的目的和意义。
示例:
它们是厨房、卧室、地下室。
对于 SO 你可以说有一个标点符号子系统,负责管理用户如何获得和失去积分。
注意每个 SE 站点实例都可以有这样的子系统,甚至它们可以通信以跟踪您在许多 SE 站点中的点数。
其他示例可以是用于保存和获取相关数据的持久性子系统。
组件 的通用定义可以是:
他们很少出现在系统蓝图上,也很少自己得到蓝图。
一般来说,一个组件在系统之外是没有意义的。它们可以被系统和子系统使用,但它的用途是通用的。
在房子里,它们是墙壁和家具。偏僻的椅子听起来不对,会议室里的椅子有用但不是子系统。
对于 SO,组件可以是用于 write/edit 答案和问题的在线文本编辑器。
值得一提第三方组件:
它们本身可以是系统,甚至是非常复杂的系统,例如 DBMS 或 jQuery JavaScript图书馆。
一般来说,以任何蓝图绘制它们都是错误的。它们可以在全球范围内使用并且是出色的工具,但它们是具有通用目的的黑匣子。
对于 SO,它们可以是 SQL DBMS 和 JavaScript 库
总结:
一个子系统可以在没有其 parent 系统的情况下存在。
组件不能单独使用,必须是系统的一部分才能存在。
打个比方:
汽车是sub-system的出行基础设施。
车轮是汽车的一个组成部分。
正如我所说,这只是恕我直言。
在软件工程中如何轻松区分子系统和系统的组件?
请给出每一个的详细定义..
为了让我更清楚,让我们假设系统是一个 Whosebug 站点,它的组件和子系统是什么?
我之所以谨慎回答这个问题,部分原因是根据上下文我们可以有很多定义。
例如,您可以在 UML 文献中搜索系统和组件的定义,发现它与操作系统书籍不同。
也就是说,这些是我对组件和子系统的粗略定义。我并不是说那是完全正确的。
这只是我在设计应用程序时发现的一种组织方式。
让我们先定义“The System”。请注意,我称其为“The”而不是“a”系统。因为这里系统是我们的背景我们的世界。
系统是我们从事的项目。作为软件工程师/架构师/开发人员,您的使命是实现它、维护它并使其蓬勃发展。
我没有简单的“系统”定义,因为不同的项目有不同的上下文。
即使是在不同商店的类似项目,由于内部文化的不同,语言也略有不同。
恕我直言,定义依赖于语言,语言依赖于文化,文化从上下文中演变而来。
但我离题了。在简历中,您的定义取决于您的上下文。
例如在 DDD 中,有必要定义一个 UbiquitousLanguage 以确保每个人都在同一页面上。
我们称“蓝图”为您用来抽象项目的图表,无论它是否在 UML、Bizagi 等格式中。
子系统的通用定义可以是:
从系统的角度来看,它是您的顶级蓝图上的 black-box。一般来说,子系统本身就有蓝图,从它的角度来看,它就是系统。
子系统可以独立存在,并且在系统上有明确的目的和意义。
示例:
它们是厨房、卧室、地下室。
对于 SO 你可以说有一个标点符号子系统,负责管理用户如何获得和失去积分。
注意每个 SE 站点实例都可以有这样的子系统,甚至它们可以通信以跟踪您在许多 SE 站点中的点数。
其他示例可以是用于保存和获取相关数据的持久性子系统。
组件 的通用定义可以是:
他们很少出现在系统蓝图上,也很少自己得到蓝图。
一般来说,一个组件在系统之外是没有意义的。它们可以被系统和子系统使用,但它的用途是通用的。
在房子里,它们是墙壁和家具。偏僻的椅子听起来不对,会议室里的椅子有用但不是子系统。 对于 SO,组件可以是用于 write/edit 答案和问题的在线文本编辑器。
值得一提第三方组件:
它们本身可以是系统,甚至是非常复杂的系统,例如 DBMS 或 jQuery JavaScript图书馆。
一般来说,以任何蓝图绘制它们都是错误的。它们可以在全球范围内使用并且是出色的工具,但它们是具有通用目的的黑匣子。 对于 SO,它们可以是 SQL DBMS 和 JavaScript 库
总结:
一个子系统可以在没有其 parent 系统的情况下存在。
组件不能单独使用,必须是系统的一部分才能存在。
打个比方:
汽车是sub-system的出行基础设施。
车轮是汽车的一个组成部分。
正如我所说,这只是恕我直言。