![]() 上篇文章解析了软件架构设计的理论方面知识《【ASPICE4.0】--SWE.2软件架构设计解析》,可能有些抽象。 本文通过一个实例,来一起看看软件架构设计的主要内容有哪些,要怎么来设计与编写的。 废话不多说,开搞。 假设系统需求如下: 1) SYSReq_001:ECU需要采集外部设备A输入的电压信息 2) SYSReq_002:当电压持续超过16V时(持续时间1000ms),判断为过压。 3) SYSReq_003:当发生过压情况时,切断电源; 假设系统架构设计图如下: ![]() 假设软件需求如下: 1) SWReq_001:软件间隔10ms,从MCU的哪个PIN脚,进行电压ADC采样; 2) SWReq_002:当电压持续超过16V时(持续时间1000ms),判断为过压。 3) SWReq_003:当发生过压情况时,通过MCU有哪个PIN脚,切断外部ECU2的电源供电; 本文主要讲解软件架构设计的这些要素:静态架构图、动态行为图、接口、资源等几个部分。下面一个个示例展开描述: ![]() 下面是我对软件静态架构图的理解: 1) 上图即为软件架构静态图,里面深蓝色的框框,即为上篇软件架构设计文档说的“软件组件”。 2) 上图浅蓝色部分,属于软件组件内部的设计,在软件架构设计可以不用展开详细分析,在软件详细设计再展开详细设计即可。 3) 上图红色的箭头为模块间的接口,需要软件架构设计文档中展开详细描述。 4) 上图黑色的箭头为模块内的接口,不需要软件架构设计文档中展开详细描述,在软件详细设计展开即可。 需要给每个组件做好编号,并详细解释每个组件的相关意义。具体可参考下表: 如下表,软件架构设计书需对所有的软件组件展开详细描述。具体参考如下: ![]() 关于资源相关的使用评估,最好附上相关说明,比如“沿用”哪个项目,故参考该项目,XX模块占用XX空间。 如下表,所有组件之间相互的接口都需要罗列出来,不能有遗漏。具体参考如下: ![]() 若由多个组件共同实现某项软件需求,则需编写动态行为图以进行功能的设计说明。具体参考下图: ![]() 针对Code Flash, Data Flash, RAM等存储类资源的分析,可按照静态架构图中的组件来分析,分别列出各组件的资源消耗。 ![]() 针对CPU负载,动态设计以及软件所有任务列表,可以协助用支持此部分设计。 这个CPU负载,分为两大部分,一部分是任务的CPU负载,一部分是中断的CPU负载,两部分都要进行统计。 ![]() 另外,软件架构中还需要说明相关的软件控制策略,例如: 1)需罗列出所有使用的软件任务,分析每个任务的用途、执行时间,调用周期,等相关信息。 2)需罗列出所有的软件中断,分析每个中断的用途、执行时间,调用周期,等相关信息。 3)需对初始化流程进行分析。 4)需对共享资源进行控制与分析。 5)需对看门狗使用策略进行分析 此部分就先不展开详细描述了,后面有需要再补充吧。 本过程域的前3个BP,可以梳理为下图: ![]() 软件架构设计文档中,要包含如下内容: 1) 静态图 a) 包含哪些软件组件 b) 这些组件的职责描述,组件是如何实现的(如:自研/购买/开源等)、组件占用资源等。 2) 动态图 a) 软件组件间的交互和行为表现; b) 体现形式要求采用UML等方式,如上文的UML时序图。 3) 需要对所有组件之间交互的接口展开详细描述; 4) 需要对RAM/Flash等存储性资源进行评估,一般按软件组件来进行评估分析。 5) 需要对CPU负载进行评估,一般需对所有的任务、中断进行分析,通过分析其运行周期,执行时间来分析其占用的CPU负载。 6) 软件架构中还需要说明相关的软件控制策略,例如:所有使用的软件任务,所有的软件中断, 对初始化流程进行分析,对共享资源进行分析、看门狗策略等。 7) 一定要包含设计的结论和设计的理由。 若有需要ASPICE4.0相关标准学习文档的朋友,可以扫码如下微信二维码,然后发送“ASPICE”。 |
|