美文网首页
嵌入式软件的模块化设计,架构设计及扩展性

嵌入式软件的模块化设计,架构设计及扩展性

作者: Franck2020 | 来源:发表于2020-06-20 18:13 被阅读0次

吉德林法则,把难题清清楚楚地写出来,便已经解决了一半。

因此,在谈嵌入式软件设计之前,我们需要先提几个问题。

\bullet 什么样的软件是才能价值最大化?

\bullet 如何看待软件在实际开发中和架构设计初衷的背离?(施工和图纸不一样)

\bullet 开发人员与流程的关系是什么?

什么样的软件是才能价值最大化?

一次开发,尽量多的复用。拷贝数越多,成本越低,价值最大。

但是由于每个项目的差异性,因此需要将整个软件模块化,在不同项目中仅搭积木,以增加复用数。

模块化的核心,就是分层与模块间解耦,模块间解耦的核心是模块间接口标准化(比如,文件接口,消息接口)。

如何看待软件在实际开发中和架构设计初衷的背离?

背离是正常的。因此需要实时纠偏。代码检视需要在项目的每轮迭代都要进行,并且每轮迭代又要留有架构优化的工作量。

检视分为:人工的代码检视,工具的代码检视(PC_Lint, Coverity, Fortify, Findbug, Infusion等)。

开发人员与流程的关系是什么?

开发人员的水平,决定了软件的上限;流程管理的水平,决定了软件的下限。

流程管理影响组织氛围,组织氛围影响技术水平提升。

一个产品为导向的公司,技术能力很难成为第一。比如:Apple,腾讯。

一个技术为导向的公司,产品体验很难成为第一。比如:Google,华为。

下图为一个较为通用的消费电子类产品的模块化设计:

通过分层和模块接口隔离,解决解耦问题。

当解决了耦合问题后,就可以用编译配置或者动态加载的方式,让一套代码支持多款产品的目的,即保证了模块化,又保证了扩展性。

当然,主流的还有其它的技术策略,比如虚拟机技术(JS,Java),Web化等。但是往往对硬件有一定的要求,如果我们硬件的内存足够多,当然没有问题,毕竟用Java写代码,代码稳定性会容易的多。

搞定了软件架构的问题,后面就是工作效率提升的工具链开发,下图为一个示例:

解决了开发测试部署的工具链,实现每年上千个定制版本不是梦。

相关文章

  • 嵌入式软件的模块化设计,架构设计及扩展性

    吉德林法则,把难题清清楚楚地写出来,便已经解决了一半。 因此,在谈嵌入式软件设计之前,我们需要先提几个问题。 什么...

  • 软件架构学习笔记

    软件架构指软件系统的顶层结构。 架构设计的主要目的是为了解决软件系统复杂度带来的问题。 设计具备良好可扩展性的系统...

  • 如何实现可扩展性的大型网站架构

    如何实现可扩展性的大型网站架构 网站的可扩展性架构设计,能够在对现有系统影响最小的情况下,系统功能可以可持续扩展及...

  • 第三章 大型网站核心架构要素

    软件架构需要关注性能、可用性、伸缩性、扩展性、安全性这5个架构要素。 一、性能 任何软件架构设计方案必须考虑可能会...

  • 服务架构比较

    服务架构演进方向: 模块化编程->面向事件设计->面向接口设计(单体)->SOA架构->微服务架构->Servic...

  • 2019备考[嵌入式系统设计师]之操作系统

    一、引言 我觉得,嵌入式系统设计主要包含系统设计、硬件设计和软件设计。其中大部分工作是嵌入式软件方面,包括操作系统...

  • 2.Spring5源码分析-从架构设计到依赖图谱

    软件系统的架构将系统描述为计算组件及组件之间的交互。 软件架构是从上而下设计的,先划分边界,然后设计组件,最后做具...

  • 架构师软件设计目录

    UML建模 设计模式 架构模式 功能性设计 性能设计 可用性设计 可靠性(容错性)设计 可维护性设计 可扩展性设计...

  • 代码重构

    目标: 改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 为什么要重构 为满足需...

  • iOS组件化及架构设计

    iOS组件化及架构设计 iOS组件化及架构设计

网友评论

      本文标题:嵌入式软件的模块化设计,架构设计及扩展性

      本文链接:https://www.haomeiwen.com/subject/oirgxktx.html