软件架构是“体现在其组件中的系统的基本组织、它们之间的关系以及与环境的关系,以及指导其设计和发展的原则。” 软件架构识别主要系统部分并识别这些部分的输入和输出。在对架构的理解中,嵌入式开发人员要不断地修改他们的代码。尽管许多嵌入式产品正在经历越来越复杂的问题,但软件架构被严重忽视,并且在许多情况下被误解了。今天,让我们研究一些关于如何使用软件架构来改进我们的软件的基本技巧。
技巧1 - 架构是蓝图
软件架构是软件的蓝图。架构为开发人员提供了系统的边界和特征,就像建筑物的蓝图为建筑承包商提供了基础、高度和重要特征一样。在为软件设计架构之前,不应编写单行生产代码。
技巧2 - 使用 UML
统一建模语言 (UML) 是一个很好的工具,开发人员可以使用它来开发他们的软件架构。包含不同的建模图,可用于指定系统的各个方面,从顺序和状态建模到部署。对于典型的嵌入式系统,开发人员不需要使用每个图表,而是可以选择为产品提供最佳见解的模型。例如,对于一个典型的系统,开发人员可能会使用活动图、序列图、状态图和对象图。
技巧3 - 不要低估序列图
序列图通常用于显示为系统成功执行操作(例如传输数据或移动电机)而发生的事件序列。嵌入式开发人员将使用这些图表来思考涉及多个组件甚至设备的复杂事件系列。但是,序列图可能是一个非常强大的工具。不是简单地根据需要使用图表,而是可以使用它们来完全指定行为并用作系统的需求文档。
技巧4 - 保持在 15,000 英尺的视野之上
软件架构应该提供高级设计元素和部分,而不是低级细节。开发人员可能很想使用架构来定义设计的每一个细微差别。架构应该与语言无关,并识别主要的高级系统组件及其交互。定义变量名称、语言结构,甚至是精确的算法对于架构来说都是太多的细节。实施者仍然需要灵活地调整他们的软件以适应手头的问题,并且深入细节可能会受到太多限制。出于这个原因,将架构图保持在 15,000 英尺以上。
技巧5 - 运行模拟
使用 UML 开发软件架构有一个独特的好处——能够在架构模型上运行模拟。例如,开发人员可以为状态机建模,然后在状态机上运行活动模型。可以输入用户数据,例如按下按钮甚至接收消息,这会导致状态机在其不同状态中移动。然后,嵌入式开发人员可以观察行为并检查系统在不同条件下的行为,而无需编写任何代码!潜在的好处是早期发现错误、验证系统要求,以及可能节省成本和时间。