The 4+1 view model
* 超市老板希望通过软件来"提高收银效率"。
* 那么,你可能需要为收银员提供一系列功能来促成这个目的,比如供收银员使用的"任意商品项可单独取消"功能有利于提供收银效率(笔者曾在超市有过被迫整单取消然后一车商品重新扫描收费的痛苦经历)。
* 而具体到这个超市系统,系统分析员可能会决定要提供的具体功能为:通过收银终端的按键组合,可以使收银过程从"逐项录入状态"进入"选择取消状态",从而取消某项商品。
* 约束。要开发出用户满意的软件并不是件容易的事,而全面理解要设计的软件系统所面临的约束可以使你向成功迈进一步。约束性需求既包括企业级的商业考虑(例如"项目预算有限"),也包括最终用户级的实际情况(例如"用户的平均电脑操作水平偏低");既可能包括具体技术的明确要求(例如"要求能在Linux上运行"),又可能需要考虑开发团队的真实状况(例如"开发人员分散在不同地点")。这些约束性需求当然对架构设计影响很大,比如受到"项目预算有限"的限制,架构师就不应选择昂贵的技术或中间件等,而考虑到开发人员分散在不同地点",就更应注重软件模块职责划分的合理性、松耦合性等等。
* 运行期质量属性。这类需求主要指软件系统在运行期间表现出的质量水平。运行期质量属性非常关键,因为它们直接影响着客户对软件系统的满意度,大多数客户也不会接受运行期质量属性拙劣的软件系统。常见的运行期质量属性包括软件系统的易用性、性能、可伸缩性、持续可用性、鲁棒性、安全性等。在我们的超市系统的案例中,用户对高性能提出了具体要求(真正的性能需求应该量化,我们的表1没体现),他们不能容忍金额合计超过 2秒的延时。
* 开发期质量属性。这类非功能需求中的某些项人们倒是念念不忘,可惜很多人并没有意识到"开发期质量属性"和" 运行期质量属性"对架构设计的影响到底有何不同。开发期质量属性是开发人员最为关心的,要达到怎样的目标应根据项目的具体情况而定,而过度设计(overengineering)会花费额外的代价。
* 逻辑视图:当采用面向对象的设计方法时,逻辑视图即对象模型。
* 开发视图:描述软件在开发环境下的静态组织。
* 处理视图:描述系统的并发和同步方面的设计。
* 物理视图:描述软件如何映射到硬件,反映系统在分布方面的设计。
* 应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令。
* 应用层使用通讯层和嵌入层进行交互,但应用层不知道通讯的细节。
* 通讯层负责在RS232协议之上实现一套专用的"应用协议"。
* 当应用层发送来包含调试指令的协议包,由通讯层负责按RS232协议将之传递给嵌入层。
* 当嵌入层发送来原始数据,由通讯层将之解释成应用协议包发送给应用层。
* 嵌入层负责对调试设备的具体控制,以及高频度地从数据采集器读取设备状态数据。
* 设备控制指令的物理规格被封装在嵌入层内部,读取数采器的具体细节也被封装在嵌入层内部。
图5 设备调试系统架构的逻辑视图
* 应用层中的线程代表主程序的运行,它直接利用了MFC的主窗口线程。无论是用户交互,还是串口的数据到达,均采取异步事件的方式处理,杜绝了任何"忙等待"无谓的耗时,也缩短了系统响应时间。
* 通讯层有独立的线程控制着"上上下下"的数据,并设置了数据缓冲区,使数据的接收和数据的处理相对独立,从而数据接收不会因暂时的处理忙碌而停滞,增加了系统吞吐量。
* 嵌入层的设计中,分别通过时钟中断和RS232口中断来激发相应的处理逻辑,达到轮询和收发数据的目的。
本文出自 51CTO.COM技术博客
转载于:https://www.cnblogs.com/Fancyboy2004/archive/2009/03/14/1411992.html
The 4+1 view model相关推荐
- MVC3 在提交表单以后 return View(model) 页面不会根据model的内容更新表单
因为这个问题折腾了一下午,最后Google到: 后返回View(model)前 调用一下ModelState.Clear()即可 因为ModelState只有在接收Post的时候被更新 渲染View的 ...
- (四) View/Model 全解(mvc)
转自:http://www.cnblogs.com/zhangziqiu/archive/2009/03/18/Aspnet-MVC-4.html 一.摘要 本文讲解在Action中向View传递Mo ...
- DSF view Model
View Model是指理想的用户可呈现的数据结构,这与data Model形成了对比,data Model指的是自然的数据结构,尽管两者最终往往是相同的,用户表示的需求经常会发生变化,因此view ...
- 谈谈对MVC的理解(View+Model+Controller)
1) 什么是MVC? MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分. V(View视图):负责与用户交互.将数据展现,或者是接收数据 M(Model模型):负责业务处理.业务模型, ...
- C# WPF MVVM开发框架Caliburn.Micro View / View Model 命名⑨
01 - 约定 在收到Caliburn Micro中有关视图和ViewModel解析的反馈后,我们添加了新功能,以简化类型解析,同时保持驱动它的健壮的基于正则表达式的名称转换机制.为了更好地了解这些新 ...
- 【django轻量级框架】View与Model交互(模块的交互关系)
文章目录 1 总体结构 2 各个模块的交互关系 3 Model 4 View 5 ORM语句 1 总体结构 Django是MTV结构,即:Model, Template, View Model:定义数 ...
- Model/View模型视图
catalog version model 函数 遍历 视图 当前项.选中项 Select SelectionMode SelectionBahavior QItemSelectionModel QT ...
- [转] asp.net core Introducing View Components
本文转自:http://www.c-sharpcorner.com/uploadfile/8c19e8/asp-net-5-getting-started-with-asp-net-mvc-6/ In ...
- 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
索引: 目录索引 Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Ch ...
最新文章
- LeetCode 141. Linked List Cycle--面试编程题--C++,Python解法
- Gluster 常用命令
- java 静态初始化 调用_java JVM-类加载静态初始化块调用顺序
- UVA 12034 Race
- python awk 读文件_测试python awk sed 读取文件指定位置时的性能
- 【机器学习基础】理解关联规则算法
- (译文)Flash,Silverlight,Win32:2011三大垂死平台
- 约束理论学习随笔(1)
- App Shortcuts 快捷方式 Android7 1 的3D Touch
- 信使广告终结者 绿色
- 怎么做视频伪原创 快手视频修改md5
- TMS320DM642调试出现#10247-D creating output section .capChaACrSpace without a SECTIONS 解决办法...
- [转]仙剑4破解方法详解(免激活刻盘法)--仙剑爱好者看看[图]
- 百度鹰眼服务平台部署教程
- matlab二项式,动态规划 – 计算二项式系统 —MATLAB代码 – 算法网
- python加密excel
- 关于主从复制的超详细解析(全)
- froyo 新的多媒体框架 stagefright与opencore对比
- 【SS524 平替 HI3521DV200性能对比表】
- 除了搜索,Google还能做什么?(转)