软件架构是一系列有层次性的决策

本文探讨了软件架构作为一系列重要决策的过程,强调这些决策是分层次进行的。以一个硬件设备调试系统为例,说明了如何从全局目标出发,逐步分解系统为桌面应用和嵌入式应用,通过RS232协议进行通信,并详细阐述了各部分的职责。此外,还强调了架构决策的层次性,先做技术无关决策,再做技术相关决策,以此指导软件架构设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件架构属于设计范畴,但并不是所有设计都属于软件架构设计之列。

  正如前面软件架构的“决策派”概念所揭示的,软件架构可以视为一系列重要决策的集合。不仅如此,架构决策还是分层次依次展开的。

  首先,伴随着对软件系统的依次分解,软件架构师应当不断做出决策,例如需要划分成哪些模块、每个模块的 职责 为何、每个模块的接口如何定义、模块间采用何种交互机制、如何满足约束和质量属性需求、如何适应可能发生的变化等等。

  以一个硬件设备调试系统为例。软件架构师通过理解需求,对该设备调试系统应完成的主要目标有了全局地把握:作为设备调试系统,其主要功能是实时显示设备状态、以及支持用户发送调试命令;另外,由于是为硬件产品配套的软件系统,所以它必须容易被测试,否则是硬件故障还是软件故障将很难区分;再就是必须具有很高的性能,具体性能指标为“每秒钟能够刷新5次设备状态的显示,并同时支持一个完整命令字的发送”。如图1-3所示。

   
                
           图1-3    CRC卡:设备调试系统应完成的主要目标

  之后,软件架构师必须规划整个系统的具体组成。通常,对于一个独立的软件系统而言,它常常被划分为不同的子系统或分系统,每个部分承担相对独立的功能,各部分之间通过特定的交互机制进行协作。而此例中的设备调试系统则不同,它有两个相对独立的应用组成:一个桌面应用、以及一个嵌入式应用。那么,它们如何通讯呢?最终决定,将它们通过串口连接,采用RS232协议进行通讯。再接下来,架构师必须决定这两个应用分别担负哪些职责,最终的设计决策是(如图1-4中的CRC卡所示):桌面应用部分负责提供模拟控制台和状态显示;而嵌入式应用部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值