软件架构设计

最近从零到一开在发新的项目,项目不大但是愈发觉得软件架构的重要性。好的架构非常读起来就非常优雅,逻辑通顺。之前看了太多屎山,毕竟在屎山上修修改改不是什么好的体验。

1. 软件架构

Q: 什么是软件架构?
A: 如何定义?各说纷纭,架构这种东西每个开发者都知道,但是却又说不清楚,更多的是一种感觉。从本质上来看,软件架构是属于一种系统草图,用于指导软件开发人员编写代码,也是一种约束。

Q: 软件架构有什么好处?
A: 良好的软件架构本质上是用前期设计的确定性应对后期变化的不确定性,在软件开发前期,可以将一些可能出现的问题考虑进来,以减少开发过程中出现问题的试错成本。 其次软件架构通常将软件模块化处理,这样做的好处可以方便代码的移植和复用,以及多开发者之间的协同开发。

所以整理代码结构,最主要想实现的就是:高内聚,低耦合。 高内聚意味着模块和模块之间彼此紧密联系,模块要保持单一功能原则 低耦合意味着模块之间依赖关系简单、清晰。单个模块的改动不会影响其他模块。

好的架构大同小异。在网络上也可以看到各路大神归纳总结的软件架构模式。对于嵌入式系统来说,最常用的架构模式不过就是分层设计模式啦。当然还有其他的架构模式,其他的都没怎么实践过,博主个人也不过是个菜鸡,现学现卖罢了。

综上我所理解的架构其实就是分层,分模块。

2. 分层设计

分层设计是一种将系统分解为多个层次或级别的软件架构方法,每个层次提供特定的功能,是构建复杂系统的基础方法之一。

2.1. 分层设计原则

  • 分离关注点:每一层专注于特定的功能
  • 抽象:上层不需要了解下层的实现细节
  • 松耦合:层与层之间通过明确定义的接口通信
  • 层次独立性:可以独立修改或替换某一层而不影响其他层
  • 接口上下级调用,减少跨层调用,同层级之间避免相互调用

2.2. 常见应用开发层级划分

  1. 表示层(Presentation Layer):用户界面
  2. 业务逻辑层(Business Logic Layer):核心业务规则处理
  3. 数据访问层(Data Access Layer):与数据库交互

3. 软件架构图设计

设计好了架构肯定是需要宣贯的,让参与的开发者指导每个人应该要负责的内容。所以有必要设计架构图,供大家评审讨论。

个人常用绘制工具是 draw.io,这是一款开源的路程图绘制工具,有网页版本非常友好。

results matching ""

    No results matching ""