嵌入式软件架构设计

嵌入式软件架构设计摘要在开发中一直觉得好的软件架构可以做到事半功倍 而且可以做到代码复用和移植 但是如果没有架构或者说架构很差 那么移植将是很痛苦的事 特别是对不熟悉改功能的人来讲还不如自己写呢 移植不对那将是很头疼的事 所以随着开发越来越多 渐渐的发现我们考虑问题应该从广度和深度来考虑 做新项目的时候 更应该考虑到以后出现的可能性 比如说需求变更 底层变更 所以这个时候软件的架构和程序模块化就很重要

摘要

在开发中一直觉得好的软件架构可以做到事半功倍,而且可以做到代码复用和移植。

但是如果没有架构或者说架构很差,那么移植将是很痛苦的事,特别是对不熟悉改功能的人来讲还不如自己写呢,移植不对那将是很头疼的事。

所以随着开发越来越多,渐渐的发现我们考虑问题应该从广度和深度来考虑,做新项目的时候,更应该考虑到以后出现的可能性,比如说需求变更,底层变更,所以这个时候软件的架构和程序模块化就很重要。

我们不能做牵一发而动全身的事,所以提出了软件架构的一些想法。

基本框架图

(1)架构设计的目的

1、应用的代码逻辑清晰,且避免重复的造轮子。

2、如果没有好的架构,移植将会是一件很痛苦的事情,因此一个好的架构设计,方便软件的移植。

3、最大限度的复用。

4、高耦合低内聚。 

 

(2)设计思路

如何把硬件的驱动和一个功能封装成一个个的模块,然后可以像小朋友搭积木一个,一个个模块可以快速的拼接起来,组成一个个不同的模型。

我们的嵌入式架构思路也是来源于此,即功能模块化设计、分层设计。

模块化设计:将收集到的需求,进行归类,总结和分析,将这些需求概括为一个个单独的功能,每一个功能,做成一个单独的功能模块。

分层设计一句话不好直接表达,其主要体现在一下几方面:

1、功能模块对外调用的模块封装成一个个API,将底层驱动做个API以供功能模块调用。(各个功能模块可以独立编译(如通信模块纯ANSI C,可在任意平台复用),或者调用驱动层接口(日志库模块调用了驱动读写Flash),总而言之,言而总之,封装出各个功能独立的可复用的功能模块。)

2、API分为驱动层API和应用层API,而不是所有程序都调用驱动层API。(整个应用中都调用驱动层API会导致应用中驱动调用随处可见,无法移植和最大限度的复用)

 

总体分 硬件驱动层–>功能模块层–>应用层接口–>业务逻辑层–>应用层

总体结构示意框图:

嵌入式软件架构设计

 

说明:

1.层与层之间不能跨层调用。

2.模块与模块各自独立,无依赖关系。

3.模块提供统一的接口供上层调用,模块的内外接口分明。

 

(3)模块层次说明

硬件驱动层

硬件驱动层包含板载硬件资源正常运行所需的所有驱动程序并提供API给功能模块调用。

功能模块层

功能模块层包括实现具体功能的函数,通过调用驱动层API实现相应功能,同时提供可调用的API给业务逻辑层。

应用层

应用层对业务层提供使用到的接口。一般可以和功能模块层划归一层

业务逻辑层

业务逻辑层包括产品整体功能的各个业务流程,通过调用功能模块层的API实现。

应用层

应用层将各个业务逻辑进行整合调用,完成整个产品的功能。

 

(4)优势

如果驱动变动了,或者换不同平台,只需更改驱动层,应用层不受影响。

如果功能模块变动了,只需升级相应的功能模块,其他的模块不受影响,应用层也不受影响。

按照这种逻辑设计好之后,主要的工作就是在业务逻辑层。应用层则为程序的总体流程和框架,主要调用业务逻辑层实现不同的功能。

开发心得

除了软件架构,良好的编程习惯就显得很重要,特别是做到归类,对于用不到的代码应该及时清理,对于一些变量和数据结构的定义等应该集中,还有就是代码的注释,代码的简洁,尽量做到不写效率低下的代码。总之,每个人都有自己的习惯和对编程的认识,只要能在过程中提升就是进步。加油 老铁们!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 应用程序已被 JAVA 安全阻止的解决办法

    应用程序已被 JAVA 安全阻止的解决办法当运行程序的时候有这样的弹窗出现时    到控制面板中的程序里面选择Java    在弹窗的安全中进行设置,把安全级别调到高或者中,或者在编辑站点列表中添加url也可以,点击应用和确认后设置生效    …

    2022年7月8日
    19
  • 微微一笑很倾城(2)「建议收藏」

    微微一笑很倾城(2)「建议收藏」微微一笑很倾城正文第30章  组队前,雷神妮妮想死。  组队后,看到队伍里那一排ID,雷神妮妮瞬间回光返照HP全满了。  就像老话说的那样,一个妮妮被雷劈了,千万个妮妮在电闪雷鸣中站起来了!一切为了八卦!握拳!  电脑前的雷神妮妮死死的盯着屏幕,小眼放出百万瓦特的邪光,左手牢牢的按着截图键,心里不停的默念:来吧!来点火花吧!  可惜,时间一分一秒过去了,她期待的火花却一直没有…

    2022年5月5日
    134
  • Sqlserver2005日志文件太大,使其减小的方法

    Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行dbName为数据库名: backuplogdbNamewithNO_LOG backup

    2021年12月26日
    36
  • 友盟多渠道获取渠道名,后台显示市场标识

    友盟多渠道获取渠道名,后台显示市场标识

    2021年10月1日
    46
  • poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别

    poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别POE交换机与普通交换机区别的话,POE交换机就是除了能提供普通交换机所具有的传输功能,还能给网线的另一端设备提供供电功能。普通的交换机主要是交换数据的功能,并没有具备供电的功能。接下来我们就一起来详细看看POE交换机和普通交换机的区别具体有哪些?POE交换机和普通交换机具有以下几点区别:1.可靠性不同:POE交换机就是支持对网线供电的交换机,和普通交换机相比就是受电终端(比如AP、数字摄像头等)不用再进行电源布线,对整个网络而言可靠性更高。2.功能不同:POE交换机就是除了能提供普通交换机所

    2022年10月5日
    3
  • 百度识图解析_蒙眼识字是什么原理

    百度识图解析_蒙眼识字是什么原理百度识图原理分析推测其发展方向    2010年12月13日,百度推出相似图片搜索功能—百度识图(shitu.baidu.com),常规的图片搜索,是通过输入关键词的形式搜索到互联网上相关的图片资源,而百度识图则能实现用户通过上传图片或输入图片的url地址,从而搜索到互联网上与这张图片相似的其他图片资源,同时也能找到这张图片相关的信息。     百度的相似图片搜索识图

    2025年10月24日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号