先做一个过期的广告,前些日子有幸参加了世界可用性日(WUD)北京站的活动,这是世界可用性日的第一年,活动在多个国家同时举行,今年北京站的活动是一
次半讲座形式的聚会,来讲的除了主办方UIGarden的人外还有一些可用性行业里的著名人士。Windy没来是个遗憾,IBM的赵晨博士来了是个惊喜。
有些不足的是在下面聆听的很多人是学生,因此一互动起来,整个活动的基调就略微有些稚气了。
会上一个问题引发了很热烈的讨论,问题是这样的:
我们现在所能接触的多数ATM机,都是采用先吐钱后吐卡的工作流程(取款业务流程的后半部分),但是现在,全世界的ATM机正在经历一场变革,把这个顺序改为“先吐卡后吐钱”,理由是占信用卡丢失原因排行榜和丢失危害排行榜双第一的是“取款时忘了取卡”!
问题抛了出来,两方面的声音也同时响了起来。支持变革的一方把这个问题归结为国内多数ATM机的可用性问题太差,尤其是一些海龟们,认为这是不可理喻的事
情——全世界都在改为什么中国没有改。很多人认为“危害大”是一个很重要的原因,因为在后面排队的人可以不费吹灰之力取道前面那个人卡上的所有钱,如果不
幸的事发生的话。另一个理由是“拿到现金”应该标志着此类交易的完成,因此它应该是最后一个环节,在此之后应该没什么事轮到用户做了。
反对变革的人认为,为什么不会有人在取卡后忘了拿走现金呢,那样危害不也是很大吗?况且很多人已经习惯了这个顺序,如果突然发生改变,肯定会有人出错。这
些人通常认为,只要ATM机在吐钱后给出类似“请不要忘记信用卡”的视觉和听觉的双重提示就可以了,没必要为此而变化交易流程,后者对全社会的成本远远高
出了丢卡人的成本。
我个人在下面坐的时候,比较同意后者的观点,尤其同意“记得卡却忘了现金”的那种说法,但我有自己的原因。<<事务处理>>这门
学科不仅仅是为软件从业人员准备的,这门学科里有这么个概念就是“事务的原子性”问题,在用户的潜意识里,ATM机吐出现金和从信用卡上划走相同数量的金
额是同一件事情,同一个事务,因此应该是同时发生的事,吐钱了卡没划和划卡了没吐钱都是不可以被接受的事情。。。(阿,等等,前者好像可以被接受)。。。
先吐出卡往往给人的心理暗示是已经把钱划走了,接下来用户们担心的就是如果ATM机坏了不吐钱怎么办?!要知道机械设备的可信度要远远低于电子设备。
当然,我这么想并非不支持变化。作为软件从业人员,我相信变革以后的流程事实上比之前的流程安全性要高了很多。因为这给了ATM的软件以更多处理安全性的
机会,比如先通过卡号和密码获得本次交易的“凭证”,吐卡,然后凭该凭证向服务器端申请划走卡上的金额,这时,问题已经变为原来的交易流程了,ATM机只
要保证该凭证在服务器端的生效和ATM的吐钱在同一个事务内就ok了。
可用性泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])
分享到:
相关推荐
ATM机项目ATM机项目ATM机项目ATM机项目ATM机项目ATM机项目ATM机项目
基于C++的ATM机模拟程序系统源码。基于C++基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。...
ATM机,全称为Automated Teller Machine,是银行自动柜员机的简称,它是一种电子设备,允许用户在无需银行工作人员协助的情况下进行各种金融交易,如存取款、转账、查询余额等。ATM机数据库则是存储这些交易数据的...
ATM机的工作流程涉及到多个系统和安全机制,下面我们将深入探讨其核心流程及其实现。 一、用户交互流程 1. 插卡:用户将银行卡插入ATM机的读卡口,设备读取卡片上的磁条或芯片信息。 2. 验证身份:ATM机通过与银行...
ATM机因其网点多,无需过多维护,服务成本低,而成为最佳的服务终端。本ATM机系统就是本着拥有原系统功能基础之上拥有更多个性服务而设计。从而满足人们日渐增长的服务需求,最终提升本金融单位的行业竞争力。
atm机的c语言代码
综上所述,通过绘制ATM机的数据流图和原型图,不仅可以帮助我们更深入地理解ATM机的工作原理和操作流程,还能够锻炼我们的逻辑思维能力和设计技巧。这不仅是一次技术实践的机会,也是一次提升自我能力的过程。
ATM机系统是一种常见的金融自助服务设备,模拟ATM机系统的开发可以帮助我们深入理解银行交易流程、网络通信以及多线程编程。在这个C++实现的项目中,我们重点关注以下几个核心知识点: 1. **C++ 编程语言**:C++是...
在本文中,我们将深入探讨如何使用Java编程语言来模拟一个ATM(自动取款机)系统,实现其基本功能,包括存款、取款以及利息计算。ATM机小程序的开发是一个典型的面向对象编程实践,它涉及到类的设计、对象的交互以及...
ATM机项目是一个非常经典的信息技术(IT)案例,它涉及到计算机科学(CS)中的多个重要知识点。在这个项目中,开发者通常会模拟真实的银行自助服务终端,实现取款、存款和转账等基本功能。以下是对这些核心知识点的...
ATM机模拟界面设计 类似于生活中我们用ATM机取钱是所遇到的这种操作,通过c++语言实现
本课程设计是模拟ATM机进行软件开发 利用SQL Server创建数据库,C++语言利用DB-Libary函数连接数据库 其中包括三个.C 文件 两个.H文件 即主函数 界面设计文件 连接数据库文件 各项服务文件 以及利用WINDOWS编程制作...
ATM机系统UML图是软件工程中用于设计和建模自动取款机(ATM)系统的工具集合,它利用统一建模语言(Unified Modeling Language)来清晰地描绘出系统的各个层面。UML是一种标准化的建模方法,可以帮助开发者、分析师...
Java ATM机模拟程序是一个非常适合初学者的项目,它可以帮助学习者深入理解面向对象编程、类的设计以及实际应用中的控制流程。这个程序在NetBeans IDE 8.0环境下编写,提供了从基础到进阶的五个不同示例,逐步引导...
在这个Java实现的ATM机程序中,我们可以深入探讨以下几个关键知识点: 1. **面向对象编程(OOP)**:ATM机程序的核心在于其面向对象的设计。程序可能包括如`User`(用户)、`Account`(账户)、`Bank`(银行)等类...
ATM机管理系统需求规格说明书ATM机管理系统需求规格说明书ATM机管理系统需求规格说明书
简单的ATM机模仿
ATM(Automated Teller Machine)自动取款机是银行服务的重要组成部分,它为用户提供24小时的自助金融服务,如存取款、转账、查询余额等。模拟银行ATM机的操作流程涉及到了许多IT领域的技术知识,包括软件工程、...