利用四象限原理分析项目构成

一、简要说明四象限原理

   经常时期,任务很多,所以应分清主次。四象限原理帮助使用者在构建模型以及完成任务过程中区分出事情的主次。

   根据四象限原理,可以根据两种方式,将任务功能划分为两类【1】。

   根据功能的完备程度,划分为:①杀手功能②外围功能

    根据需求的有限程度,划分为:①必要需求②辅助需求

      综上总结,即为:

1.杀手功能:开发组织所独有的优势功能。

   2. 外围功能:普遍性的功能。

3. 必要需求:用户需要优先级为最高的需求

   4. 辅助需求:锦上添花的需求,而非必要的需求

    图1-1 四象限原理功能分析图

    应对策略:

象限

策略

第1象限

利用“差异化”的策略应对

第2象限

用“抵消”策略与大众同

用“优化”策略与大众异

第3象限

用“维持”法,最低代价维持功能

第4象限

用“维持”法或者现在“不做”法等待时机

    其中,

    ①维持——致力于利用最低成本进行维持

    ②抵消——快速达到“足够好”、“和竞争对手差不多”

    ③优化——优先级最高

    ④差异化——优势功能

    ⑤不做——剪除非主干功能

二、结合项目

   2.1概述

图2-1 整体结构图

      本系统从整体上分成3个部分:

      ①CAN总线 :与公交车相连,可以检测Bus上的信息并接收

      ②Can Tool装置:接收、发送信息与Can总线进行交互

      ③CanTool上位机:与CanTool工具进行交互的设备,主要从3方面出发。

  1. Windows 程序(MFC/JFC)
  2. IOS 程序
  3. Android App程序

图2-2 整体功能模块图

    从功能出发,主要可以划分为:

    ①收发模块:主要用来接收和传递信息,与Cantool装置进行交互

    ②处理模块:用来对接收到的数据进行解析以及加密功能

    ③设置模块:对数据参数进行设置

    ④显示模块:对数据的物理信息进行显示

    ⑤贮藏模块:对相应的数据进行持久化操作

    ⑥同步信息模块:将部分信息同步到硬件或者管理系统的网站上。

  2.2详述

    2.2.1第1象限:差异化

      A.数据的接收的算法设计

图2-2-1 -1 数据的接收功能结构图

图2-2-1-2 数据的接收功能原理图

        目前,设计主要是和硬件设备进行交互,但是为了以后的功能扩展,在程序实现方面设计扩展的接口以便可以和硬件设备进行交互。

        对于接收器以及发送器,使用Socket编程,需要确认出服务器端以及客户端。在本系统中,需要明确二者的所处位置。

        接收器相当于服务端,发送器相当于客户端,作为App需要同时具备两种角色功能,因此就需要设计软件的收发管理模块。从而对二者进行管理。

      B.数据的解析的算法设计

图2-2-1-3 数据的解析功能的类图

  由于硬件设备和App之间的数据传输方式,最快捷以及最简单的方法是字符串传输,所以在App中需要编辑相应的功能模块从而对数据的格式以及数据信息进行相应的截取和处理。

  此处,为了适应软件工程中所提出的“高内聚、低耦合”的特点,选用的设计模式为Template Method的委托的概念,利用MVC设计模式的整体结构,将视图、对象、控制进行分离,从而更加有利于管理。

 

      C.数据的解码的算法设计

      

图2-2-1-4 数据的解码的ER图

    此方法涉及到参照表的选择,其中对于数据的读取,使用数据库比较方便,因为SQL语句属于结构化查询语句,会比在文件或者其他存储方式进行数据的匹配更加的快速和便利。

      2.2.2第2象限

        抵消:

  1. 数据的接收的基本功能
  2. 模拟CanTool发包的工具
  3. 模拟CanTool接包的工具

        优化:

  1. CanTool Android App的接收蓝牙传输信息的工具
  2. CanTool Android App 的网络数据解析的算法、功能模块的设计、模式使用
  3. CanTool Android App 的数据解密的算法、功能模块设计、模式使用

      2.2.3第3象限(维持)

        整体功能的业务流程的进行

图2-2-3-1 整体的功能运行原理图

图2-2-3-2 整体运行的数据流图

        其中,在原型程序中,需要整体功能的完整性,即可以运行即可。对于如何进行优化需要在第二版中进行产品的更新以及版本的迭代性的编程。

      2.2.4第4象限(维持、不做)

        

图2-6 扩展功能原理图

        对于利用蓝牙进行整体流程的模拟,CanTool可以通过PC蓝牙接口与手机App进行沟通。单点对单点以及单点对多点进行相应的数据的传输以及交互。

分享github地址:https://github.com/LeeYuxuan1104/HelloWorld/blob/master/4room_request_statement.docx

参考文献

【1】邹欣 《现代软件工程-构建之法(第三版)》 2017.03 人民邮电出版社

转载于:https://www.cnblogs.com/LiYuxuan1104/p/LeeYuxuan1104_04.html

02组_现代软件工程_第04次作业——利用4象限原理分析自身CanTool项目的构成相关推荐

  1. c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析

    分享老师:学而思网校 郭雨田 一.map的结构与设计原理 golang中map是一个kv对集合.底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起 ...

  2. opencv opencl加速_回放 | OpenCV Webinar 3:OpenCV深度学习应用与原理分析

    OpenCV DNN模块提供了深度学习的推理,支持Caffe.Tensoflow.Torch.Darknet.ONNX等格式的模型,无需用户安装对应的深度学习框架,也无需进行模型格式转换,直接调用DN ...

  3. java web开源项目源码_超赞!推荐一个专注于Java后端源码分析的Github项目!

    大家好,最近有小伙伴们建议我把源码分析文章及源码分析项目(带注释版)放到github上,这样小伙伴们就可以把带中文注释的源码项目下载到自己本地电脑,结合源码分析文章自己本地调试,总之对于学习开源项目源 ...

  4. 带哨兵节点的链_限流降级神器-哨兵(sentinel)的资源调用链原理分析

    点击上方 Yoon丶徒手摘星 ,选择 置顶或者星标技术干货每日送达! 我们已经知道了sentinel实现限流降级的原理,其核心就是一堆Slot组成的调用链. 这里大概的介绍下每种Slot的功能职责:N ...

  5. 软件工程_东师站_第六周作业

    1. PSP Date Type Job Start Int(min) End Total(min) 20160407 编码 抢答器重构 19:00 30 20:50 80   站立会议 " ...

  6. 9003软件工程_期末_李振宏老师

    1.题型 软件工程: 选择题(25题,每题1分), 填空题(20分,每空2分), 简答题(5题,每题5分), 综合题(3题,共30分) 2.知识点 知识点: 1.软件设计对模块间的耦合与模块的内聚有何 ...

  7. 怎么评价两组数据是否接近_接近组数据(组间)

    怎么评价两组数据是否接近 接近组数据(组间) (Approaching group data (between-group)) A typical situation regarding solvin ...

  8. 软件工程_绘制系统业务流程图

    软件工程_绘制系统业务流程图 实验目的: 1.掌握结构化分析方法 2.掌握业务流程分析方法和业务流程图的绘制 实验内容: 案例一:总务办公管理系统 案例二:火车票预订系统 实验过程与结果: 案例一:总 ...

  9. 现代软件工程_团队项目_阿尔法阶段_前端知识共享_2017.11.21

    现代软件工程_团队项目_阿尔法阶段_前端知识分享 更加舒适浏览格式 http://blog.csdn.net/bowean HTML基础(一) 本文参考了[http://www.w3school.co ...

最新文章

  1. RecyclerView android:layout_width=match_parent无效
  2. 0408~送给小伙伴的汉堡包
  3. python项目管理器 宝塔面板 django 404_宝塔面板成功部署Django项目流程(图文)
  4. 复习----使用链表实现队列(先进先出)及迭代
  5. 在Python当中如何打印输出当前时间(代码)
  6. 3d激光雷达开发(法向量预测)
  7. 求解偏微分方程开源有限元软件deal.II学习--Step 4
  8. 获取dm数据库基本信息
  9. oracle计算距离,根据坐标点的经纬度计算距离
  10. 试卷代号:4988 2021年春季学期期末统一考试电子政务概论 试题(开卷)
  11. JAVA程序把大写转换小写_Java程序将字符串转换为小写和大写。
  12. 【i学堂】PPT美化
  13. Note For Linux By Jes(16)-软件安装:原始码与 Tarball
  14. JS一维数组排序(冒泡法)
  15. 重识MySQL -《MySQL是怎样运行的》
  16. 漏洞修复:Web Server Misconfiguration: SSL Certificate Hostname Discrepancy
  17. 2006年4月度国际标准化组织C++会议纪要[原文发表时间:2006年5月3日]
  18. 2020年,最全4k , 8k的高清壁纸网站分享
  19. python编程语言教程-Python基础教程 - 全文
  20. suse linux kvm安装包,在CentOS 7/Ubuntu 16.04/Debian 9/SLES 12上安装KVM的方法

热门文章

  1. 微信小程序之拓展篇——weui-wxss
  2. 细思恐极,插上U盘就开始执行Python代码
  3. HTML我帮您打造微信小程序web可视化开发者工具
  4. KEIL5 中 .PACK文件的制作
  5. [学习笔记]每天1小时学会数据分析、挖掘、清洗、可视化从入门到项目实战
  6. 关于Android 设置Button 属性background失效问题
  7. linux etc cron.deny,Linux crontab定时任务配置方法(详解)
  8. 基于Turf 的along函数实现车辆动态轨迹点加密
  9. 免费中文分词系统与资源收集
  10. 【MySQL】MySQL触发器原理与实战(MySQL专栏启动)