我的工程实践选题为ESP32低功耗的实现,本项目基于ESP32嵌入式开发平台.

以此题为例,在理解项目需求的基础上进行用例建模,抽取Abstract use case,画出用例图,并确定每一个用例的范围High level use case,对关键用例进一步进行Expanded use case分析。

一、用例建模简介
从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,也就是被开发出来的系统将是如何被使用的,这就用例方法的基本思想。
1、用例模型主要由以下模型元素构成:
(1)参与者(Actor)
参与者是指存在于被定义系统外部并与该系统发生交互的人或其他系统,他们代表的是系统的使用者或使用环境。
(2)用例(Use Case)
用例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。
(3)通讯关联(Communication Association)
通讯关联用于表示参与者和用例之间的对应关系,它表示参与者使用了系统中的哪些服务(用例),或者说系统所提供的服务(用例)是被哪些参与者所使用的。
 
这三种元素在UML中的表述如下所示:

2、用例建模的主要步骤:

  • 确定系统边界
  • 确定参与者
  • 找出所有的用例
  • 确定每个用例的级别
  • 撰写用例的文字描述
  • 画出以整个系统为对象的顺序图

二、抽取Abstract use case

 ESP32 拥有 18 个 RTC IO 和 10 个 TouchPad, 每一个 RTC IO 和 TouchPad 经过配置都可以将芯片从 deep_sleep 模式中唤醒, 从而可以实现低功耗方案.

资源包括:RTC外设、ULP协处理器、RTC快速内存、RTC慢速内存

Deep-sleep 模式下支持的唤醒源包括:

  • 定时器
  • touchpad
  • Ext(0):RTC IO 中某个指定 GPIO 满足指定电平即唤醒
  • Ext(1):RTC IO 中某些指定 GPIO 同时满足指定电平即唤醒
  • ULP 协处理器

当 ESP32 进入 Deep-sleep 模式时,所有由 APB_CLK 驱动的外设、CPU 和 RAM 将掉电;RTC_CLK 继续工作;RTC 控制器、RTC 外设、ULP 协处理器、RTC 快速内存和 RTC 慢速内存可以不掉电,具体取决于 App 中的唤醒源设置。

三、用例图

四、High level use case

主要为Deep-Sleep模式下唤醒源的选择,在不同低功耗场景下,唤醒源的选择和唤醒方式都将导致功耗的不同。要根据不同场景的特点,设置最优的唤醒方式。

五、Expanded use case

  1. 若不是从 Deep-sleep 模式唤醒(例如重新上电或者复位),设备启动后会首先进入 Deep-sleep 模式,后续唤醒方式取决于 Wake up type 中的设置:

    • 若配置为 GPIO 唤醒,则需要按下 WakeUp 按键进行唤醒。唤醒后,主 CPU 使用 I2C 接口读取传感器数据;
    • 若配置为 Timer 唤醒,则等设定时间后自动唤醒。唤醒后,主 CPU 使用 I2C 接口读取传感器数据;
    • 若配置为 ULP 唤醒,则等 ULP 完成指定次数的数据读取后唤醒。唤醒后,主 CPU 从 ULP 中读取数据。
  2. 唤醒后,设备会自动连接上之前配置过的路由。
  3. 使用 sensor_server.py 脚本启动服务器
  4. 低功耗软件框架主要包含以下几部分:

    • 网络配置与连接
    • 睡眠与唤醒功能
    • 读取传感器数据
    • 上传数据至服务器
    • 数据传输完成处理

用例建模Use Case Modeling的更多相关文章

  1. 针对工程实践项目的用例建模Use Case Modeling

    一.什么是用例建模(Use Case Modeling) 1.用例(Use Case) (1)概念:用例是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术. ...

  2. 用例建模 Use Case Modeling

    用例建模 以您的工程实践项目为例,在理解项目需求的基础上进行用例建模,抽取Abstract use case,画出用例图,并确定每一个用例的范围High level use case,对关键用例进一步 ...

  3. 用例建模Use Case Modeling——传感器智能分析引擎

    系统用例分析 我的工程实践小组做的课题主要是实现传感器数据采集平台的设计与开发.该搜索引擎完成对传感器数据的采集和发布,企业可以在平台上上传自己的传感器数据信息,同时也能够浏览市面上其他传感器信息,以 ...

  4. Uml学习-用例建模简介

    用例建模简介  用例建模是UML建模的一部分,它也是UML里最基础的部分.用例建模的最主要功能就是用来表达系统的功能性需求或行为.用例图重点描述用户需求. 它描述需求.用户和主要组件之间的关系. 它不 ...

  5. 再学UML-UML用例建模解析(一)

    UML(统一建模语言)是当前软件开发中使用最为广泛的建模技术之一,通过使用UML可以构造软件系统的需求模型(用例模型).静态模型.动态模型和架构模型.UML通过图形和文字符号来描述一个系统,它是绘制软 ...

  6. UML用例建模解析(一)----------用例概述

    UML(统一建模语言): 1. 绘制用例图 用例图是UML中比较简单的一种图形,它包含两个主要组成元素,分别是执行者(Actor)和用例(Use Case).执行者又称为参与者或角色,用例又称为用况或 ...

  7. 用例视图 Use Case View(rose)

    找开Rose工具,选择用例视图  Use Case View 先看看这个视图下面都有哪些工具,都能做一些什么: 下面详细说一下: 用例视图下面有工具: 一:选择工具 二:文本框Text Box 三:注 ...

  8. UML 用例建模

    用例建模      用例建模的主要功能是表达系统的功能性需求或行为.主要包含用例图和用例描述,其中用例图由参与者.用例.系统边界和箭头组成,用例描述以文本文档的形式详细的描述了用例图中的每个用例.   ...

  9. 再学UML-UML用例建模解析(三)

    2. 编写用例文档 绘制用例图只是完成了用例建模最基本也是最简单的一步,用例建模的核心在于编写用例文档,用例文档又称为用例规约或用例描述.顾名思义,用例文档是用于描述用例的文档,每一个用例对应于一个用 ...

随机推荐

  1. fullpage.js报如下错的解决办法

    控制台报错:fullPage: Fullpage.js version 3 has changed its license to GPLv3 and it requires a `licenseKey ...

  2. ASP.NET WebApi+Vue前后端分离之允许启用跨域请求

    前言: 这段时间接手了一个新需求,将一个ASP.NET MVC项目改成前后端分离项目.前端使用Vue,后端则是使用ASP.NET WebApi.在搭建完成前后端框架后,进行接口测试时发现了一个前后端分 ...

  3. 互联网基础协议 - HTTP

    HTTP的简介 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准. HTTP是一个基于TCP/ ...

  4. WebApi HttpUtils

    public class HttpUtils { private static final String TAG = "uploadFile"; * ;//超时时间 /** * 通 ...

  5. CET4

    Directions: For this part, you are allowed 30 minutes to write a short essay on the challenges of st ...

  6. Maven optional关键字透彻图解

    写在前面 本来想写一篇「如何自定义Spring Boot Starter」,但是为了更好理解 Starter 的一些设计理念和其中的关键点,所以提前将一些细节内容单独提取出来讲解说明 在 Maven ...

  7. egg-middleware 中间件

    Middleware 中间件 Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型.每次我们编写一个中间件,就相当于在洋葱外面包了一层. 编写中间件 写法 我们先来通过编写一个简单 ...

  8. Java匹马行天下之一顿操作猛如虎,框架作用知多少?

    流行框架: 框架就是开发人员定义好的一套模板,程序员只需要往模板中添加响应的代码即可,填完代码,项目就完成了.所以框架存在的意义以及我们学习框架的目的就是想办法能够让程序员快速的完成整个项目的开发.理 ...

  9. Flask:第一个Flask项目

    在上一篇文章:Flask:项目的准备工作中,我写了flask项目的准备工作,不清楚创建flask项目需要做哪些准备的朋友可以点击链接看看 1.最简单的Flask项目 代码: from flask im ...

  10. AtCoder Grand Contest 036D - Negative Cycle

    神仙题?反正我是完全想不到哇QAQ 这场AGC真的很难咧\(\times 10086\) \(\bf Description\) 一张 \(n\) 个点的图,\(i\) 到 \(i+1\) 有连边. ...