系统结构设计关注理解一个软件系统应当如何组织,以及设计该系统的整体结构。系统结构设计是设计和需求工程之间的关键性衔接环节,是软件设计过程的第一个阶段,它会确定组成一个系统的主要结构构件以及它们之间的关系。系统结构设计过程的输出是一个系统结构模型,该模型描述系统如何被组织成一组相互通信的构件。
在敏捷过程中,早期阶段应当关注设计一个整体的系统体系结构。体系结构的增量开发通常都不会成功。根据变化重构构件通常比较容易。然而重构体系结构通常比较昂贵,因为可能需要修改大部分系统构件以使它们能够适应体系结构的变化。
在实践中,需求工程过程和体系结构设计过程之间存在明显的重叠。理想情况下,系统规格说明不应当包含任何设计信息。然而,这个设想是不现实的,除非面向的是非常小的系统。
小体系结构关注单个程序的体系结构,如何分解为构件。大体系结构关注包括其他系统、程序和程序构件的复杂企业系统体系结构。
明确设计并描述软件体系结构有三个好处: 一是聚焦利益相关者的交流,二是分析系统是否能满足性能、可靠性、可维护性等关键需求,三是复用具有相似需求的系统。
系统体系结构经常使用简单的框图进行非正式的建模。图中每个方框表示一个构件。方框中的方框表示该构件被分解为子构件。箭头表示数据和控制信号按照箭头的方向从一个构件传到另一个构件。框图呈现一个系统结构的高层样貌,来自不同领域从事系统开发的人员都可以很容易地理解这种图。
体系结构有两种不同的使用方式: 作为一种鼓励对系统结构设计进行讨论的方式,或作为一种文档化已设计好的系统结构的形式。
在体系结构设计过程中,系统结构师必须做出一系列深刻影响系统及其开发过程的结构决策。比如: 是否存在一个通用的体系结构、系统如何分布到硬件或处理器上、可以使用什么体系结构模式、用什么策略控制体系结构中的构件的运行、系统的体系结构如何文档化、什么样的体系结构是实现系统非功能需求(性能、信息安全、安全性、可用性、可维护性)的最佳选择、构件如何分解为子构件、用来组织系统的基本方法是什么?
系统体系结构包含四个视图。逻辑视图将系统中的关键抽象显示为对象或对象类。进程视图显示系统在运行时如何通过相互交互的进程来构成。开发视图显示软件如何面向开发任务进行分解。物理视图显式系统硬件以及软件构件如何分布在系统的处理器上。
体系结构模式是一种复用关于通用系统体系结构的知识的手段。它们描述了体系结构,解释应该何时使用,还指出它的优点和缺点。一种广为人知的体系结构模式是模型-视图控制器模式。其他体系结构包括分层体系结构、知识库体系结构、客户-服务器体系结构、管道和过滤器体系结构。
常见的应用体系结构包括事务处理系统、信息系统、语言处理系统等。