软件架构设计培训我学到了什么?

新的思想永远是我们要追求的,可谓朝闻道,夕死可矣

培训主要内容:

  • 架构设计思路
  • 模块化、分层的设计思想
  • 架构设计文档
  • 自动化测试

工作的改进:

模块化分层设计

模块设计

模块化设计的目的就是提高移植性、复用性、可扩展……所以模块内部遵循高内聚原则,模块之间遵循低耦合原则。 模块设计就是要对其他模块高度隐藏内部数据和细节,即满足最少知道原则(尽少的实体之间的信息交互)。模块内用到的头文件写在private中,模块外需要的写在public中;

设计优良的模块接口需要进行合理层次的抽象,并放在合理位置;通过ID参数留可扩展余量。

少用全局变量,因为全局变量的使用让代码阅读难度加大,增加耦合性,可以通过static、指针、结构体、Get()、Set()、限制使用范围(Private)等方式避免全局变量的使用。

分层设计

优良的嵌入式软件分层设计是上层严格依赖底层,并消灭循环依赖。

工作改进

我们自己5116目前的模块化分层设计有些地方还可以改进。比如card 驱动的文件组织可谓严重的重复设计,cardbase和norbase,慢速驱动、快速驱动文件混杂在了一起,应提取公共部分再放合理位置;上层任意调用寄存器及影响了可阅读性,也不负责低耦合的要求;key驱动功能过于复杂,不符合一个包只做一类事情的原则,需要进行合理拆分;

设计文档

开发视图和逻辑视图

架构设计中最重要的是开发视图和逻辑视图,这让开发人员很快的熟悉架构与数据流,同时也较容易检查我们的架构设计是否存在循环依赖,这两个视图需要补充

设计合理的文档

能用代码直接表达的不写在文档中,不能过度设计,否则文档更新起来会很吃力

高度同步的文档

保持代码和文档的一致,设计文档需要主人,保证文档一直有负责人,没有负责人的文档很难保证及时更新,会误导研发人员,浪费人力。

标准化

标准的接口

许多接口在业界都已经有了标准化的实现,命名,传参,返回值,例如C标准库,而且这些标准都是经验的精华,已经经过反复验证的优良接口;并且有利于提高可读性和复用性

标准的错误码

标准的错误码、错误等级划分、debug输出有利于开发人员、维护人员迅速的定位问题,减少后期维护成本,提高现场可维护性;而且让代码复用性、兼容性得到良好的保障;不能因为代码空间限制屏蔽必要的错误输出,这会增加问题定位的难度,浪费人力成本

标准的设计文档

流程图,数据流的设计也要符合已定制的标准,优良的设计文档应该是符合标准的、高度可读的

自动化测试

必要的白盒测试

首先自己的写得模块,要写好经过设计测试代码,并尽量做到不污染源码;其次对于测试代码要求尽量高的覆盖率。再有就是文件位置划分合理,不能打包到发布代码中。

负责的测试代码

在没有专职的白盒测试人员之前,这个测试任务是属于研发人员的,所以测试代码也是要根据模块的设计优化持续的跟进优化

工具优化

行业中不时会出现一些优良的测试工具,需要时常关注,优良的测试工具能让我们事半功倍

持续优化

架构设计责任

架构设计不是架构师一个人的责任,架构师不可能涉及到设计的细枝末节,这就需要研发人员自己对相关模块设计负责,要靠自己的能力设计好,这样才能做好一个优良的项目架构。同时模块设计应遵循一定的规范,不能根据自己的意愿想当然的设计

持续优化

没有完美的代码,也没有完美的架构,我们需要根据当前的需求持续的进行优化,同时保证设计文档的持续更新(高度一致性)

干净的代码

应该先让自己的代码变得干净,再去进行持续的优化

总体补充

优秀的软件工程师

要成为一名优秀的软件工程师,必须保证持续的学习,比如阅读优秀的开源代码、优秀的业界书籍;能力和眼界的提升永远值得花大气力去追求;能够进行优良的设计需要大量的理论和实践,比如进行高度抽象的设计,比如进行合理的模型设计(张云龙老师提到的仓库搬运设备的高度可扩展模型设计)

优良的思想

比学习具体的答案更加聪明和智慧的是学习思路,参悟思想。所以张云龙老师多次提到UCOS II的设计思想对其的深远影响。比如王金平提到的面向对象的编程思想对其工作的影响

良好的态度

如同巴普洛夫在《致青年们的一封信》中说到的,青年科学工作者应该具有的态度:
循序渐进->谦虚->热情

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章