在对系统的体系结构进行形式化时,重要的是,不仅要了解体系结构将带来的价值,而且要理解和理解它应该是什么。
软件或技术体系结构的主要目标是确定将驱动系统体系结构的质量属性实现的非功能性需求。
关于非功能需求:
非功能需求是指指定可用于判断系统运行的标准的需求,而不是特定行为。它们与定义特定行为或功能的功能需求形成对比。系统设计中详细说明了实现功能需求的计划。系统体系结构中详细介绍了用于实现非功能性需求的计划。
广义上,功能需求定义了系统应该做什么,而非功能需求定义了系统应该如何运作。非功能性需求通常被称为系统的“质量属性”。非功能需求的其他术语是“质量”,“质量目标”,“服务质量需求”,“约束”和“非行为需求”
当然,在新建项目中确定对体系结构具有重要意义的需求是有意义的,但是,在使用现有软件时,最好尽可能地加以约束。您不会希望您的软件体系结构受到现有系统的影响。
权威的软件架构实际上需要三件事。
陈述式
这是文档的一部分,在其中声明“不是什么”,但声明应该如何。我们通过使用系统的各种体系结构视图来做到这一点。我们定义了应该使用的组件,它们如何交互,然后有选择地深入每个组件以获得更详细的视图,这些视图声明了系统的设计方式。
这是一个重要的区别。系统设计应受系统体系结构的约束,它们实际上是独立的但相关的事物。
基本原理
您的软件体系结构的基本原理是为所做出的体系结构决策提供合法性和权威性。也许决定通过MQ上的Pub / Sub事件侦听器来触发批处理作业,然后您将其绘制出来?
为什么做出这个决定?我们在“原理”部分中解释原因,并将我们的解释链接回非功能性需求,质量属性目标或体系结构上重要的需求。(例如,作业必须是异步且可重复的,作为质量属性的可维护性促使在批处理作业失败的情况下可以通过MQ消息重新启动作业,系统必须通过异步通信将消息丢失为零,等等。 ..)
风险性
既然您已经声明了架构的方式并通过基本原理对其进行了证明,那么您现在可以确定系统当前状态中不遵守的风险。
(例如,服务器端验证是在客户端Javascript代码上重复的。这违反了DRY原则,这与可维护性的质量属性背道而驰。在该领域,围绕性能没有定义非功能性要求,因此是当前系统行为的基本原理)
您的风险还可以显示当前状态当前偏离体系结构的位置。开发团队现在可以通过他们的项目计划或将其添加到待办事项中来解决这些风险。