系统架构
系统架构是定义系统的结构、行为及其他视图(view)的概念模型[1]。架构叙述(architecture description)是有关系统的正式描述以及呈现,以有助于了解系统结构和行为的方式来组织。
系统架构可以包括系统中的组件以及子系统,这些元件以及子系统共同工作来实现整个系统。有许多人设法将描述系统架构的语言形式化,这些语言称为架构描述语言(ADL)[2][3]。
简介
编辑许多组织用不同的方式在定义系统架构,以下是一些例子:
- 系统的基本组织,由其组件、组件之间的关系以及组件和环境的关系、主导其设计以及演进的原则所组成[4]。
- 一个系统的呈现,包括从机能到硬体组件和软体组件的映射、从软件架构到硬体架构的映射,以及这些介面和人的互动[5]。
- 实体元件的分配安排,针对消费产品或是产品生命周期提供其设计方案,目的是要满足机能架构的需求,以及需求的基线(baseline)[6]。
- 包括最重要、普遍、顶层、策略性发明、决策的架构,以及这些和整体架构之间的基本原理(即其基本要素和关系),以及其相关的特征以及行为[7]。
- 有关电子计算机设计以及内容的叙述。若有文件,可能会包括目前硬体、软体以及网路能力的细节清单,有关长期计划以及后续优先购买项目的叙述,以及升级或更换过期设备或软体的计划[8]
- 系统的正式叙述,或是在组件层级的系统详细计划,目的是为了做为实作的指引[9]。
- 产品设计架构的组成,以及其生命周期过程[10]
- 组件的结构,组件之间的关系,主导其设计以及演进的定律及指引[9]。
系统架构可以视为是一组已有系统(或是未来系统)呈现方式的组合。其呈现一开始会说明一般性,高阶的机能组织,渐渐会到更细节,更具体的叙述。
系统架构承载了组成系统元素的资讯、元素之间的关系、主导这些关系的原则。系统架构可能包括硬体、软体、文件、设备、人工程序或是由组织或是人员所扮演的角色。
系统架构一般会专注在系统组件或是子系统的介面,以及系统和外部环境(特别是用户)之间的介面。系统和使用者之间的界面会称为用户界面或人机交互。
系统架构可以和系统架构工程(system architecture engineering、SAE)对比,系统架构工程是有效实现系统架构的方法以及原则[11]:
- 系统架构工程是一种方式,因为其中有提到许多步骤,在许多条件的约束下,产生系统架构或是更改系统架构。
- 系统架构工程是一种原则,因为使用了知识体系来告知实作者,在许多条件的约束下,最有效设计系统的方式是什么。
和其他领域的关系
编辑系统架构和许多领域中长时间发展的技术和实务紧密相关,其中最重要的领域应该是土木架构。
在数位电脑发明之前,在电子学以及其他领域都已使用“系统”一词,其意义也和现代的意义相近。不过随著数位电脑的出现,软体工程也发展成独立的学科,因此开始需要区分工程制作的硬体工件、软体工件,以及合并硬体和软体的工件。可程式化的硬体工件(电脑的硬体)若没是没有软体,无法发挥其作用,而软体工件若是没有可以执行其程序的硬体,也无法发挥作用。而硬体和软体配合,就可以进行非常多的工作。因此,在电脑及软体领域(也包括其他工程领域,例如通讯)中,常会用“系统”来表示有所有基本元件(一般来说,会包括硬体和软体),可以执行特定工作的工件。
在上述的领域中,系统多半是指可程式的硬体以及其中的软体,系统工程师会关注整体的设备(包括硬体和软体),特别关注其中各单元之间的介面,也包括软体和硬体的介面,以及设备和人之间的界面(人机介面)。硬体工程师会负责硬体元件的开发,软体工程师会负责软体的开发,而系统工程师的工作是确认软体可以在硬体上正常执行,以及使用者是否可以正常使用此一设备,执行预期的功能。
系统架构会用到硬体元件和软体元件,用这些元件来设计整体的系统。好的系统架构可以视为是分割方案,将系统现有(或是预期会有)的功能分割到一组可以清楚划分的有界子系统中,没有任何遗漏。分割的主要目的是安排各个子系统中的元件,使元件之间的相互相依性降到最低。不论是软体或是硬体,好的子系统多半本身就是一个有意义的“物件”。而且,好的系统可以将使用者的需求以及对应的测试相对应。理想上,每一个元件也都会有对应的需求以及测试。
种类
编辑此章节需要扩充。 (2022年1月) |
相关条目
编辑参考资料
编辑- ^ Hannu Jaakkola and Bernhard Thalheim. (2011) "Architecture-driven modelling methodologies." In: Proceedings of the 2011 conference on Information Modelling and Knowledge Bases XXII. Anneli Heimbürger et al. (eds). IOS Press. p. 98
- ^ Paul C. Clements (1996) "A survey of architecture description languages (页面存档备份,存于互联网档案馆)." Proceedings of the 8th international workshop on software specification and design. IEEE Computer Society, 1996.
- ^ Nenad Medvidovic and Richard N. Taylor (2000). "A classification and comparison framework for software architecture description languages. (页面存档备份,存于互联网档案馆)" Software Engineering, IEEE Transactions on 26.1 (2000): 70-93.
- ^ 来自美国国家标准协会/电气电子工程师学会 IEEE 1471
- ^ From the Carnegie Mellon University (页面存档备份,存于互联网档案馆)'s Software Engineering Institute (页面存档备份,存于互联网档案馆).
- ^ From The Human Engineering Home Page's Glossary. 互联网档案馆的存档,存档日期2015-02-13.
- ^ From OPEN Process Framework (OPF) Repository 互联网档案馆的存档,存档日期2006-03-05..
- ^ From The National Center for Education Statistics glossary (页面存档备份,存于互联网档案馆).
- ^ 9.0 9.1 开放组体系结构框架
- ^ From 电气电子工程师学会 1220-1998 as found at their glossary 互联网档案馆的存档,存档日期2006-05-17..
- ^ The Method Framework for Engineering System Architectures, Donald Firesmith et al., 2008
- ^ The fundamental principles of Systems Architecture (页面存档备份,存于互联网档案馆), by Boris Golden
- ^ The Art of Systems Architecture, Mark Maier and Eberhardt Rechtin, 2nd ed 2002
- ^ Choosing A Strategic Systems Architecture, by Brad Day