增加 Chapter10_嵌入式软件架构与设计思想.

Signed-off-by: lion.chan <cy187lion@sina.com>
This commit is contained in:
lion.chan 2023-06-08 16:38:44 +08:00
parent c8d730462f
commit df30013cb0
7 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,34 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.1 嵌入式软件开发的实际需求
---
## 10.1.1. 需求层级
以一个简单的系统为例,软件如不进行设计,仅平铺直叙的实现各种功能需求,这个系统依然可以很好的工作。
![抬枪](./imgs/10.1_嵌入式软件开发的实际需求/001.jpg)
然而,当系统变得越来越复杂,缺少良好设计的系统,各组成部分之间的耦合将会变得越来越紧密,每增加一个模块,其均有可能与之前的所有模块耦合,因此系统的复杂度将会呈偶数级增加,直到系统变得不可控,产生不稳定性,开发人员将忙于四处打补丁。
可以想见正如人类从基本的温饱需求到面朝大海春暖花开的物质需求6一样软件设计的需求也是随着现实情况而不断提高的。
## 10.1.2. 代码的可读性与软件设计
如果开发人员进行过代码交接,那你或多或少看过缺少设计的代码,此时心头飞过无数某种类马的四脚动物,心说:“这个代码太烂了,它缺少设计”。确实,在一些情况下,良好设计的软件具有更高的可读性,但更多时候,妨碍阅读代码的并不是缺少设计,甚至有些时候良好的设计会增加代码的可读性——接收代码的人要先了解设计思想才能够读懂代码。
举个例子,像 Linux 内核这种良好的模块化和面向对象设计的系统,往往大量的使用了函数指针,此时就很难利用代码编辑器的函数跳转功能,因为没人直到函数指针是在何时被赋予什么样的值,函数指针的赋值是一个动态过程,代码编辑器无法通过静态分析准确的判断应该跳转到那里去。但是当阅读代码的人了解了 Linux 内核设计的“套路”后,这一切将会变得简单起来。
在具体的项目中,对代码可读性影响较大的因素还有实际的项目需求和开发设计。代码是需求和设计的具体体现,是明确的,是精密的数学算法与逻辑算法的组合。然而实际项目中是有许多没有明说的“隐含”需求的,甚至有的项目没有明确的需求说明。而阅读代码的人如果没有参透这一层,就很难理解为何代码要这么写。其结果必然是往往只改了一行自认为不会产生负面影响的代码后,系统就变得不正常了。
## 10.1.2. 需求的提升
如果程序设计对代码的可读性影响相对有限,甚至还有可能起到反面作用,那为什么还需要对程序进行设计呢?
良好设计的程序,除了可以降低复杂系统的耦合度外,还可以带来以下好处:可复用性、高健壮性、良好的稳定性、团队协作的便利性。
软件最大的价值在于可复用,如果代码写了一遍不再被使用,那它的意义不大。实际上,好多地方都可以使用相同的代码,比如串口通信。如果一个功能模块被很好的设计,那么在其他系统中使用它的概率也大大提高,其设计的越成熟,使用起来也就越容易。
随着模块被不断的反复使用,其软件 Bug 将被梗多的发现和解决,其健壮性和稳定性均可以得到大幅提升。反之,如果每次都重写一套相同功能的代码,只要代码写的不同,那么每次都有极大的可能出现不同的问题。前者是将一块粗铁不断打磨成锋利的宝剑,后者则每次都使用不同的粗铁重新打造。其过程的难易程度和输出结果不言而喻。
在团队共同开发时,每个人需要完成各自的软件模块,如果这些模块及模块间接口没有被很好的设计,将会产生一些理解上的错误,最终导致模块集成时出现问题。如果设计良好,接口明确,将极大的减少这些错误发生的可能性。

View File

@ -0,0 +1,4 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.2 模块化设计
---

View File

@ -0,0 +1,4 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.3 分层设计
---

View File

@ -0,0 +1,4 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.4 面向对象设计
---

View File

@ -0,0 +1,4 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.5 状态机模型
---

View File

@ -0,0 +1,4 @@
---
modified: 2023-06-08T07:34:42.886Z
title: 10.6 综合实例
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB