2.2.1 必须熟悉业务
软件是为业务服务的,业务才是“目的”,软件系统是为了达成业务系统目标的手段和方法。适应当前的业务需求是基础,充分考虑和预测未来的业务扩展,根据业务的扩展性来设计软件的扩展性。如果可预见未来没有扩展重大新业务的需求,那么相应的软件架构就没有必要采用高扩展的软件架构。比如嵌入式的传感器数据采集小设备,就没有必要把云计算等,业务范围不沾边的技术点放到其中。软件架构必须以服务业务为核心思想,不熟悉当前软件业务、和未来业务的扩展的架构师是很难设计出好的软件架构。
2.2.1 借鉴业内成熟的架构
不照搬,并不意味着不要借鉴。借鉴业内成熟的软、硬件架构是相对稳妥、高效的做法。以业内的架构为基础,根据自身业务的特点,进行适配、裁剪和增加新的功能。熟悉业内常规的、成熟的、最新的软件架构是架构师的一项基本功。但熟悉并不是意味着必须立即在目标系统中实施这些软件架构。
2.2.3 采用设计模块
设计模式(Design pattern)代表了最佳实践,设计模式是软件开发人员在开发过程中对一般问题的解决方案;是一套被反复使用的、多数人知晓的代码设计经验的总结,经过相当长的一段时间的试验和错误总结出来的。
使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性,合理地运用设计模式可以完美地解决很多问题。每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。
用设计模式构建一个新的软件模块时,短期会让人感觉有多此一举的味道;但中长期来看,设计模式能够克服“坏”架构的特征。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。尽管设计模块通常被有经验的面向对象的软件开发人员所采用,但是嵌入式软件C语言也可以借鉴,参考《嵌入式软件的设计模式(上)》,《嵌入式软件的设计模式(下)》。
2.2.4 合理的横向和纵向切分
横向切分 :从硬件、驱动、组件到业务层,软件分层隔离。如数据通信:PHY/MAC/IP/TCP/应用层
纵向切分 :根据业务处理流程的环节纵向切分,不同的环节为不同的模块,不同的业务功能为不同的模块,如socket网络、GNSS卫星定位。
2.2.5 按树形结构组织
按照树形结构的方式组织软件系统,不同的大功能拆分为小功能,文件夹内套文件夹的实现形式,命名上统一,方便按功能快速找到对应的源码。
2.2.6 降低模块之间的耦合度
耦合性是一种软件度量,是指一程序中模块及模块之间信息或参数依赖的程度;内聚性是一个和耦合性相对的概念,一般而言低耦合性代表高内聚性,反之亦然。
2.2.7 降低模块与模块之间通信
一个软件内模块与模块之间的通信,构成了一个内部的通信网,避免内部模块的通信采用网状结构,这种解决方案是设计模式中的中介者模式。
-
嵌入式
+关注
关注
5076文章
19045浏览量
303853 -
C语言
+关注
关注
180文章
7602浏览量
136357 -
嵌入式软件
+关注
关注
4文章
240浏览量
26625 -
架构
+关注
关注
1文章
511浏览量
25457
发布评论请先 登录
相关推荐
评论