| 编辑推荐: |
本文通过一个实例,来一起看看软件架构设计的主要内容有哪些,要怎么来设计与编写的,希望对你的学习有帮助。
本文来自于耐思时刻,由火龙果软件Alice编辑,推荐。 |
|
本文通过一个实例,来一起看看软件架构设计的主要内容有哪些,要怎么来设计与编写的。
废话不多说,开搞。
1、软件架构设计实例解析
假设系统需求如下:
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.1、静态架构图
下面是我对软件静态架构图的理解:
1) 上图即为软件架构静态图,里面 深蓝色的框框,即为上篇软件架构设计文档说的“软件组件” 。
2) 上图 浅蓝色部分 ,属于软件组件内部的设计, 在软件架构设计可以不用展开详细分析 , 在软件详细设计再展开详细设计即可 。
3) 上图 红色的箭头为模块间的接口 ,需要软件架构设计文档中展开详细描述。
4) 上图 黑色的箭头为模块内的接口 , 不需要软件架构设计文档中展开详细描述 ,在软件详细设计展开即可。
需要给每个组件做好编号,并详细解释每个组件的相关意义。具体可参考下表:
1.2、软件组件
如下表,软件架构设计书需对所有的软件组件展开详细描述。具体参考如下:
关于资源相关的使用评估,最好附上相关说明,比如“沿用”哪个项目,故参考该项目,XX模块占用XX空间。
1.3、组件间接口
如下表,所有组件之间相互的接口都需要罗列出来,不能有遗漏。具体参考如下:
1.4、动态设计图
若由多个组件共同实现某项软件需求,则需编写动态行为图以进行功能的设计说明 。具体参考下图:
1.5、RAM/Flash资源消耗分析
针对Code Flash, Data Flash, RAM等存储类资源的分析, 可按照静态架构图中的组件来分析,分别列出各组件的资源消耗 。
1.6、CPU负载分析
针对CPU负载,动态设计以及软件所有任务列表,可以协助用支持此部分设计。
这个CPU负载,分为两大部分, 一部分是任务的CPU负载,一部分是中断的CPU负载, 两部分都要进行统计。
1.7、其他
另外,软件架构中还需要说明相关的软件控制策略,例如:
1)需罗列出所有使用的软件任务,分析每个任务的用途、执行时间,调用周期,等相关信息。
2)需罗列出所有的软件中断,分析每个中断的用途、执行时间,调用周期,等相关信息。
3)需对初始化流程进行分析。
4)需对共享资源进行控制与分析。
5)需对看门狗使用策略进行分析
此部分就先不展开详细描述了,后面有需要再补充吧。
2、总结
本过程域的前3个BP,可以梳理为下图:
软件架构设计文档中,要包含如下内容:
1) 静态图
a) 包含哪些软件组件
b) 这些组件的职责描述,组件是如何实现的(如:自研/购买/开源等)、组件占用资源等。
2) 动态图
a) 软件组件间的交互和行为表现;
b) 体现形式要求采用UML等方式,如上文的UML时序图 。
3) 需要对所有 组件之间交互的接口展开详细描述 ;
4) 需要对RAM/Flash等存储性资源进行评估,一般按软件组件来进行评估分析 。
5) 需要对CPU负载进行评估,一般需对所有的任务、中断进行分析, 通过分析其运行周期,执行时间来分析其占用的CPU负载 。
6) 软件架构中还需要说明相关的软件控制策略,例如: 所有使用的软件任务,所有的软件中断, 对初始化流程进行分析,对共享资源进行分析、看门狗策略等 。
7) 一定要包含设计的结论和设计的理由。
|