明升体育

嵌入式软件架构设计

嵌入式软件架构设计

开课时间:2019/8/16 8:30:00 地点:深圳

课程大纲

课程背景

培训收益

课程对象

软件架构工程师、系统工程师、SE工程师


课程特色

要求:学员携带笔记本电脑和U盘来参加培训,借助大量实例研习推进培训,让学员在课堂上真正掌握所学。本课认为“当堂夯实的技能,可用于实际工作”。也欢迎学员带着实际问题前来参训!


课程大纲

【模块一】人人掌握——嵌入式需求

  理大局——嵌入式软件需求分析的过程【步骤明确,经验干货】

  步骤一:系统边界分析——上下文图and硬件结构图

  步骤二:功能需求分析——功能树or用例图

  步骤三:用户接口分析——菜单树and界面流

  步骤四:软硬接口分析——和外部软硬件的接口规约

  步骤五:功能步骤分析——输入-处理-输出or用例规约

  步骤六:质量需求分析——本课关注步骤级实时、步骤级可靠

  一组案例……

  划重点——关键点的讲与练

  输入-处理-输出定义功能需求……顽疾是需求项又多又散?分析、解决。

  与外部软、硬件的接口需求……顶层数据流图、上下文图、硬件结构图

  高性能和可靠性等质量需求……质量需求如何定义?以某控制器为案例

  一组案例……

  特复杂的功能逻辑如何搞定?=主控流程+可能事件与分支流程+步骤规则

  拷资料——文档模板+案例资料【外企模板,独家分享】

  《需求规格》模板

  《需求规格》实例

  一组案例……例如,质量90%可以用“功能的步骤级规则”来定义


【模块二】始于需求——自顶向下设计运行控制结构

  理大局——运行控制结构的设计过程【步骤明确,经验干货】

  步骤一:分析需求(功能范围+硬件结构)

  步骤二:识别核心模块

  步骤三:确定控制流,设计控制模式

  步骤四:对关键功能,跑通控制过程

  案例分析……上面四步,都有实际案例,并讲解自顶向下思维运用

  划重点——三种嵌入式“运行控制结构”模式

  结构一:多任务结构(OS-based Multi-task)

  结构二:前后台结构(死循环+中断)

  结构三:时间片轮询(Time-slice Polling)

  一组案例……

  划重点——前后台与时间片架构的几个细节

  【大局】采集-分析-控制模式

  【局部1】转delay为中断

  【局部2】占空比与中断

  【局部3】函数的可重入设计

  【局部4】核心代码性能

  高事件率架构案例:多任务vs.时间片轮转

  划重点——统一回答几个“大的疑问”

  问:我们公司系统比较复杂,性能要求也比较多,总感觉理不清?

  问:我们公司好像没人会画多线程协作图。请问,怎么画?

  问:我们公司嵌入式分层架构太泛,没把代码块、线程、中断等说清楚!


【模块三】深入详尽——嵌入式分层实战技巧

  理大局——嵌入式代码架构,就这么设计【步骤明确,经验干货】

  步骤一:借助模式,按“五横一纵”组织模块层次

  步骤二:自底向上,先把硬件接口代码模块设计好

  步骤三:接口抽象,为多种硬件提供统一接口

  步骤四:服务抽象,提炼可复用的显示/通信/存储服务

  步骤五:设计功能层模块,确定它对下层模块的调用

  步骤六:设计初始化模块,确定它对下层模块的创建和设置

  案例分析……上面六步都有实际案例。重点步骤,有代码案例。

  划重点——关键点的讲与练【有代码,有真货】

  Module对Task/Thread的封装

  ===Module设计的最低要求:没有隐藏就没有简化

  ===模块封装task——Message和Task的架构级应用

  Module的可扩展&可配置&可插拔

  ===模块的可配置式设计——Config Array的架构级应用

  Interface对多个差异模块的统一抽象

  ===函数指针结构体的架构级应用

  上层对下层的“封装”与“组装”

  ===模块封装模块——Layer思想的代码实现

  ===main()如何优雅地“启动”各模块

  拷资料——上述技能,分别对应的代码案例

  代码案例…

  代码案例…

  思想的飞跃——架构之道【学员反馈:“大彻大悟的感觉真爽!”】

  自顶向下——分解思维。架构早期。立足业务,根据需求分解出粗粒度架构

  自底向上——封装思维。架构后期。立足实现,隐藏细节,统一接口,提炼服务

  抽象vs.具体——抽象是结果,抽象思维的过程从研究多个“具体”开始

  分解vs.封装——粗粒度架构来自自顶向下分解,细粒度架构来自自底向上封装

  接口vs.实现——接口定义“做什么”,实现定义“怎么做”

  统一接口——下层有多种“怎么做”时,不要直接调用,要通过统一接口调用

  通用服务——提炼可复用的显示/通信/存储服务,“功能代码”就简洁易修改了

  ……悟道练习,一起画脑图


【模块四】隔离变化——设计好内部接口、对外接口

  我们常设计这两种接口

  1.远程及板间接口或协议

  2.模块级接口或消息

  远程及板间接口或协议——如何设计

  步骤一:接口交互过程设计

  步骤二:接口实现技术选择

  步骤三:接口参数格式定义

  案例:分析著名接口规范……

  模块级接口——技术风格

  Call(调用)

  Message(消息)

  Callback(回调)

  远程及板间接口或协议——API二次封装

  底层协议:负责通用性、跨平台

  提供API:负责屏蔽细节、方便开发

  案例分析……

  模块级接口——二次封装

  核心接口vs.便捷接口(对核心接口的包装)

  可配置性

  拷资料——对应的资料分享

  接口规范…

    接口案例…

  API案例…


【模块五】职业生涯——从单板架构师,到方案架构师

  谈行业趋势,聊职业发展

  1.IT行业的人才模型

  2.电子企业的常见发展路径

  3.我们个人的发展方略

  方案架构师设计自控方案时,工作内容有哪些?

  1.逻辑设计=分层设计+功能子系统划分

  2.物理设计=硬件拓扑+软组件分布设计

  3.技术选型=开发技术+运行环境选型

  4.接口设计=接口技术选择+接口协议定义

  自控方案中的上位机软件设计

  1.五横一纵——上位机软件的模块分层模式

  2.模块划分——覆盖接口需求

  3.模块划分——覆盖功能需求

  拷资料——对应的资料分享

  《GB设计书》文档模板解读、实际范例分析


客户评价

  与温昱先生初识于一次部门内训,金融机构应用信息技术日久,但业务发展之快仍需信息技术部门不断如何提供有力的技术支持,当时系统设计人员思路难成一致,故邀请先生来讲述所得,先生讲座生动有趣,案例均为实践中心得,有助于一线设计人员在低头干事之余,能够抬头看路,从架构高度理解和看待日常工作。


  在厦门,曾和温老师有过4天晚上的坐而论道,从技术到业界、从数据模型到软件重构、从职业观到心理学,彼此颇多启发。



选择罗兰格,选择专业

关注公众号
查看更多分享内容