软件工程中的子系统和系统组件

时间:2015-11-20 11:46:12

标签: architecture components system

如何在软件工程中轻松区分子系统和系统组件?

为每个人提供详细的定义..

为了让我更清楚,我们可以考虑系统是StackOverflow站点,它的组件和子系统是什么?

1 个答案:

答案 0 :(得分:1)

我在回答这个问题时非常谨慎,因为根据具体情况我们可以有很多定义。

例如,您可以在UML文献中搜索系统和组件的定义,并发现它与操作系统书籍不同。

那说这些是我对组件和子系统的简单定义。我并不是说这是完全正确的。

这只是我发现在投影应用程序时组织事物的一种方式。

我们首先定义“The System”。注意我称之为“The”而不是“a”系统。因为这里的系统是我们的世界。

系统是我们工作的项目。作为软件工程师/架构师/开发人员,您的使命是将其变为现实,维护并使其蓬勃发展。

我对“系统”的定义并不简单,因为不同的项目有不同的上下文。

由于内部文化的原因,即使是不同商店的类似项目也会有不同的语言。

恕我直言的定义依赖于语言,语言依赖于文化,文化也是从语境中演化而来。

但我离题了。简历中,您的定义取决于您的背景。

例如,在DDD中,有必要定义UbiquitousLanguage 确保每个人都在同一页面。

让我们称之为“蓝图”作为用于抽象项目的图表,无论它是否在UML,Bizagi等等。

子系统的通用定义可以是:

从系统的角度来看,它是顶部蓝色打印件上的黑盒子。一般来说,子系统本身都有蓝图,从它的角度看它是系统。

子系统可以独立生存,并且在系统上具有明确的目的和意义。

示例:

他们是厨房,卧室,房子的地下室。

对于SO,你可以说有一个pontuation子系统,负责管理用户如何赚取和丢失积分。

请注意,SE网站的每个实例都可以拥有此类子系统,甚至可以进行通信以跟踪您在许多SE网站中的积分。

其他示例可以是用于持久化和获取相关数据的持久性子系统。

组件的通用定义可以是:

他们很少出现在The System Blue Prints上,很少自己打印蓝图。

通常,组件在系统外没有意义。它们可以被系统和子系统使用,但它的目的是通用的。

在一所房子里,他们是墙壁和家具。在一个偏僻的中间的椅子听起来不对,会议室的椅子有用,但不是子系统。 对于SO,组件可以是用于编写/编辑答案和问题的在线文本编辑器。

值得一提的是第三方组件

它们本身可以是系统,甚至是非常复杂的系统,如DBMS或jQuery javascript库。

一般来说,在任何蓝图中绘制它们都是错误的。它们可以在世界范围内使用并且是优秀的工具,但它们是具有通用目的的黑盒子。 对于SO,它们可以是SQL DBMS和javascript库

正如我所说,这只是恕我直言。