精华内容
下载资源
问答
  • 浅析基于EXCEL勺辅助生产成本交互 分配法核算的探讨 摘要辅助生产费用分配是一个复 杂的过程交互分配法作为其中的一种分配 方法在辅助生产费用分配时根据各辅助 生产部门生产产品或劳务的特点以及受益 单位提供服务...
  • 【前言】 应朋友们的要求,我还是写一篇关于服务器日志进行网站分析的原理以及它的优缺点是什么。请朋友们注意,网站服务器日志并不容易进行,初学者,以 及在绝大多数情况下,进行以用户行为分析为...

    【前言】

    应朋友们的要求,我还是写一篇关于服务器日志法进行网站分析的原理以及它的优缺点是什么。请朋友们注意,网站服务器日志法并不容易进行,初学者,以 及在绝大多数情况下,进行以用户行为分析为核心的网站分析,用不到服务器日志法。不过,作为网站分析历史不可分割的一 部分以及重要的基础篇章,服务器日志法仍然值得一书。下面的这篇文章也是我要撰写的书中截取的内容(我要快马加鞭快快写了,已经辜负了太多朋友的重托,抱 歉抱歉!)。

    【正文】

    网站分析收集数据的方式其实有五、六种之多,我们最常见的有三种,分别是:服务器日志(Server Log)、页面标记(Page Tag)和客户端监测软件收集(Client End/Desktop)。我的CWA博客(http://www.chinawebanalytics.cn)中主要讲解的都是页面标记法,今天则跟大 家讲解一下服务器日志方法的原理及优缺点。

    1. 服务器日志是什么

    真正意义上的网站分析是从服务器日志开始的,而且直到今天,分析服务器(也称为server log file,或简称log file)日志仍然是网站分析的重要方法。

    这里的服务器指的是网站服务器(Web Server),而服务器日志跟飞机的黑匣子一样,是用来记录网站服务器的运行信息的,或者简单说,是用来记录服务器中的什么页面在什么时候被谁访问了。 例如,如果你访问一次我的网站:http://www.chinawebanalytics.cn, 那么一般情况下,网站服务器的日志就会记录在某时某刻来自某个IP的访问者索引了网页“/index.php”。当然,网站服务器日志还会记录其他许多内 容,这些内容能够帮助我们分析网站的流量和访问者在网站上的行为。

    下面这个图说明了网站日志是如何产生的。当用户访问一个网站的时候,事实上是访问这个网站的某一个具体的页面,我们假设这个页面叫Page 1。这时,我们的这个访问行为会请求服务器中Page 1的实际的文件,随之把这个文件下载到浏览器上。由于请求和下载行为都会引起服务器的响应和相应的行动,因此就有必要记录下服务器的这些行动。

    image

    你会问,为什么需要记录服务器的行动呢?原因很简单,因为我们不想让这个服务器变成“哈尔9000”(哈尔9000是库布里克《2001太空奥德 赛》里面有了自我意识的电脑,它直接威胁到了电影中的宇航员)啊!这当然只是开玩笑,不过目的并无差别,就是能够通过服务器日志,对服务器的运行历史进行 记录,这样当有任何异常情况发生的时候,我们都能够通过日志探寻问题发生的原因——跟记录飞机运行状态的黑匣子的作用十分类似。

    原理看起来并不复杂,不过log file实际上并不简单。为了让log file具有可读性,log file并不可以按照各个网站所有者的喜好随意记录的,而是有自己的规范。W3C组织定义了server log file的通用格式(如果你有兴趣,可以在这里看看这些格式都是如何定义的:http://www.w3.org/Daemon/User/Config/Logging.html#common_logfile_format), 而其他一些组织或者个人又根据自己的需要额外扩展了这个格式,使log file能够比较全面地记录网站服务器进行的各种活动。

    一条标准的web server log记录通常包含如下信息:

    • l 远程主机(Remote Host)的IP地址/名字
    • imagel 登录名(Log Name)
    • l 登录全名(Full Name)
    • l 请求发生的日期(Date)
    • l 请求发生的时间(Time)
    • l 和标准格林威治时间的差值(GMT Offset)
    • l 请求的方法(Request Method)
    • l 请求的文件的地址(File)
    • l 请求遵守的协议(Protocol)
    • l 请求的状态(Status)
    • l 被请求文档的长度(Length)

    下面是一条标准的log file记录:

    202.71.113.38 – – [03/Jan/2010:01:56:12 +0800] “GET /Chinawebanalytics/Sidney.htm HTTP/1.0″ 200 5122

    从左到右,202.71.113.38就是远程主机的IP;而登录名和登录全名指的是发起这个请求的用户的名字,这个一般大家当然是不想要透露的 了,所以远程主机会禁止给出这两个信息,log file当然就记录不下来了,用两个短中划线代替。然后,03/Jan/2010是请求发生的日期,01:56:12则是时间,之后的+0800是指比格 林威治时间要晚8个小时,就是我们北京时间了。再之后的GET是请求的方法,另一种方法是POST,可以简单理解为GET就是索取,POST就是提交。接 着:/Chinawebanalytics/Sidney.htm是被请求文件的地址,可以是绝对地址也可以是相对地址。HTTP/1.0是请求所遵守的 协议,这里的协议是HTTP 1.0。整个记录的结尾是两个数字,其中200表示一种请求的状态,意思是请求一切正常。有时候这个数字会显示为404,相信大家一看到这个数字就头痛, 它表示请求的文件无法找到(file not found);又有时候,这个数字会显示为301,表示页面被重新定向到了别的地址。最后的一个数字5593,表示所请求的文档的长度为5122 bytes。

    通用格式其实很简单,但是里面的这11类记录往往不足够帮助我们进行更深入的分析,因此其他的一些记录被加入进来,其中最重要的一些是:

    • l 请求来源(Referrer):指连接到被请求资源的网站的URL。如果请求时通过点击一个链接时发生,那么这个项目就会被记录;
    • l 客户端(User Agent):记录用户的浏览器或者发出请求的程序的相关信息;
    • l 所需时间(Time Taken):从请求的发出到请求的资源全部传输完毕所需花费的时间;
    • l Cookie。关于cookie的内容请大家看我的这篇文章:捍卫Cookie——没有Cookie,我们什么都没有了

    看起来,网站服务器日志所记录的内容是很有限的,比起我们动辄上万行的编程实在是九牛一毛。但是,千万别认为网站服务器日志文件会很小,对于一些大 网站,每分每秒都有很多访问者对网站服务器进行请求,所以日志文件会积少成多,成为巨型的数据文件。有时候,一个小时的记录就能超过数G。什么,你网站的 服务器日志一个月才1M?要加油啊,没有人气的网站可没有生命力。

    image 讲到这儿,该说说历史了。网站分析就是从网站服务器日志开始的,或者更准确的说,网站服务器日志自诞生之日起,就是为网站分析所用的。最早,人们可是把所 有的记录都拿出来,然后导入到数据软件中去进行分析,辛苦程度自不用说;但这个痛苦的阶段不会持续太久,哪儿有痛苦,哪儿就有生意,所以网站日志分析软件 就出现了,解决了很大的问题,以至于大小互联网服务提供商(ISP)们都为租用他们空间的用户提供一款免费的网站日志分析软件。尽管如此,分析网站日志一 直都是一个相当不容易的事情,所以,人们不得不寻找一些更便利的方法,这样便发明了网站分析的新的数据获取方法,这是后话了。

    如果你问我什么情况下选择用网站服务器日志来进行网站分析,我建议你如非必须,那么还是寻找一些更容易的方法能够事半功倍。看看后面的内容,你就能 知道我为什么这么说。

    2. 用网站服务器日志进行网站分析的优点

    尽管是个技术活,但是利用网站服务器日志进行网站分析还是有不少好处的。

    1. 网站服务器的日志是被你完全掌控的数据。

    所谓放在自己手心最放心,这些日志在你的服务器中,如果不是黑客入侵,数据不可能被你不希望的人获取。而且,只要你不删除,它们永远都在那里,在任 何时候你都可以回溯历史数据,无论这些数据有多么久远。有朝一日,你的网站大获成功,这些日志也是一份奋斗历史的见证。

    2. 能够记录机器人/自动程序对网站的访问。image

    其次,前面讲过,网站服务器的日志是记录网站服务器行为的,因此任何服务器响应的请求都会被记录下来。这些响应可能是应答用户发出的请求,也完全可 能是应答一些互联网上自动程序发出的请求。最常见的一种互联网上的自动程序是搜索引擎的机器人,例如Google的Googlebot,这意味着网站服务 器日志能够用来分析搜索引擎的访问,并帮助我们优化搜索引擎对网站的访问。讲到这里,请大家注意,并不是每一种网站分析方法都能做到这一点,我们最常用的 为网站页面加入标签的方法是不能获取搜索引擎流量的。

    3. 终端无关

    网站服务器的日志能够记录网站服务器全部响应行为的特点还延伸出另外一个优点,那就是无论是何种终端访问服务器,都能把相关数据记录下来。现在,能 够访问网站的终端越来越多了,我无聊的时候也试着用Sony的PSP上网,用手机的GPRS也能轻松的浏览网页,这些形形色色的终端的访问,服务器日志都 会忠实的记录,但页面加入标签的方法就可能完全行不通。

    4. 能够探知文件是否完全下载

    日志方法的另一个好处是能够记录文件下载的情况。如果你在网上下载一个MP3音乐,你在发出这个响应的时候,日志会记录一个状态;你在下载完全的时 候,日志照样会记录一个状态;如果你没有下载完全,日志还是会记录下来。这个,我想对那些提供下载服务的网站很有用。

    5. 数据获取不依赖于第三方

    通过日志获取数据本身不需要额外的第三方的帮助。只要你的服务器在运转,日志就会源源不断的被创建、保存。不过,请注意,这里我所指的是数据的获取 不需要额外的支持,但是数据的分析一般而言,还是需要第三方的帮助的。直接去用肉眼读日志文件中的数据进行分析是不可想象的。

    6. 不怕防火墙

    最后,日志方法不惧怕防火墙或客户端安全软件的屏蔽,因为数据都是从服务器端获取的。

    看起来似乎不错,不过凡事有利有弊,日志方法也肯定有它不能克服的不足。

    3. 用网站服务器日志方法进行网站分析的缺点

    日志方法能够起到作用的前提是服务器要响应来自客户端的请求,如果客户端的请求不通过服务器就得到了响应(这其实是经常发生的),那么服务器日志法 就无能为力了。

    1. 害怕网页缓存(Cache

    为了提高网站页面的载入速度,人们发明了网页缓存(Cache)。在台湾,Cache被翻译作“快取”,似乎兼备了音义。

    网页缓存的原理很容易理解,但却是个了不起的发明。在缓存出现之前,人们访问网站每次都需要把网页从网站的服务器传输到客户端的浏览器中,这个速度 当然会有点儿慢,尤其是网络条件不好的时候。于是善动脑筋的人们发现,每次访问的网站其实有很多内容是没有更新的,如果能够把那些不经常更新的部分放在自 己的电脑里面,每次打开网页的时候,首先搜索自己电脑里面已经有的内容,然后再去服务器去寻找那些被更新了的部分,这样服务器传输的数据量就会大大减少 了,整个网页也会被更快地显示出来。

    现在,我们大部分人的浏览器都设置了缓存。所以,有时候,你会发现,即使网络没有接通,你访问的网站似乎也能“正常”打开,只不过浏览器会显示“脱 机”状态,告诉你,这些内容不是真正从服务器传输过来的。

    除了客户端(浏览器)能够存放缓存的内容外,代理服务器(Proxy)也能够存放网页缓存,目的同样是为了提速。你可以把代理服务器的缓存想象成 CPU的“二级缓存”——当客户端没有存储某个网页的缓存的时候(“一级缓存”没有内容),浏览器就会寻找代理服务器缓存,看看有没有内容。如果还没有, 那才会再去寻找真正存放网页内容的网站服务器。image

    有了缓存,当你点击浏览器的“回退按钮”的时候,回退的上一个页面就不需要再重新从服务器中下载一次,而是立即就呈现在你的面前。你常用的网站的打 开速度也显著提升了。

    可是,对于通过服务器日志来获取网站访问数据的方法而言,这可不是一个好事情。由于缓存的存在,本来应该请求服务器的结果不需要请求了,服务器的日 志什么也不会记录下来,可是对页面的访问却又实实在在的发生了。

    所以,缓存的存在会使日志方法低估网站的实际访问量。

    2. 害怕Flash等“客户端交互”内容

    现在,为了更具冲击力的视觉效果和更丰富的网页互动,运用Flash、加入视频、设计很多互动程序在网页上已经稀疏平常。而这些元素,它们太独立 了,以至于当它们被载入到浏览器端了之后,完全可以在浏览器端运行而不再与服务器发生交互,或者只需要在必要的时候才与服务器发生交互。

    比如,你玩儿普通网页版的Flash小游戏,一旦游戏下载完毕,你在玩儿的过程中跟网站服务器就不会有什么联系了,或者你看网页上的视频,你在播放 器上进行的暂停操作,一般也不会跟服务器进行互动。还有,有一些脚本语言编写的网页程序,是在浏览器上被解释执行的,比如用JavaScript实现的网 页Tab标签切换,在页面全部载完后,无论你怎么切换Tab,服务器都感觉不到了。

    服务器感觉不到,也就不会存在什么服务器日志记录,也就不会有数据,因此用日志方法是无法准确获取“客户端交互”类型的网站访问行为的。这种情况 下,必须选择其他的数据收集方法。

    3. 不精确的访问者记录

    日志方法辨别独立访问者需要依靠客户端的IP地址,也只能依靠它。不过,IP地址显然不代表真正的访问者。上班族的整个办公室的IP地址都可能是一 个(使用代理服务器),而这个办公室可能坐着十多个人。这可能使访问者的数量被低估。

    同样,在家中,如果你购买了公共网络服务,那么你的IP地址存在动态分配的问题。你今天上网的IP地址和明天的可能就会不同,这个时候日志方法只能 判断为两个不同的访问者。这又可能使访问者的数量被高估。

    此外,前面提到过日志是能够忠实记录机器(非人为)的访问活动的,但是机器不是人,它们的活动混在真实的人的访问之中,同样会使真实访问者的数量, 或者访问数本身被高估。

    在这正反两相反方向的共同作用下,结果只能一个,那就是对于访问者数量的估算是非常模糊的。当然,我们必须要承认,无论用什么方法,网站访问者的精 确数量都无法获得,但相对而言,日志方法要更不准确些。

    4. 较弱的实时性

    没错,网站服务器日志是记录服务器运行的实时数据的,但是这些数据想要被取出分析,实时性就没有那么好了。常见的情况是,你必须首先把服务器日志文 件(log file)从服务器中取出来,而这些文件肯定不会是服务器正在运行过程中的数据,一般都是隔天的(需要验证),然 后再把这些日志文件导入到专门针对日志分析的工具中才能进行分析。这个过程的快慢依赖于你的熟练程度,但要追求实时,颇有难度。

    有技术高超的站长或者工程师通过架设内部网络、组建专门的日志分析服务器,并且编写特定的程序来解决日志分析的实时性问题http://www.phparticle.net/htmldata/36462/1/, 但是,对于普通的中小网站,这种方法难度颇大,花费不菲,所以可行性不强。因此,实时性是绝大部分通过日志方法来分析网站数据时要面对的问题。

    5. 海量的数据存储

    image 服务器日志是忠实的,所以它会如实记录下来每一分每一秒发生的每一条服务器响应。对于一些流量稍大的网站,一天的网站日志记录超过数个 G(Gigabytes)是非常正常的,而那些最大的网站,一个小时就可能产生数G的记录。我们没有詹姆斯·卡梅隆的超级团队(他的《阿凡达》特效需要处 理超过500,000G的数据),所以如果要回溯网站一个月的流量就可能变成一个相当棘手的问题,需要投入相当的时间和耐心,如果你没有相当的技术和经 验,效率就会很低。

    6. 日志文件获取繁琐

    我们不能把日志文件的获取想象的太简单,毕竟这不是在自己卧室的电脑中点开一个MP3文件那么容易。有些网站有镜像服务器,有些服务器在境外,有些 服务器是由处在多个不同地理位置的物理服务器逻辑组合而成。这些情况下,在进行日志分析之前需要集中所有的日志文件,这是一个很有些麻烦的事情,尤其是当 日志文件的体积极为庞大的时候。另外,如果是租用的ISP服务器空间,如果没有权限获取日志数据,那么实际上连进行分析的可能性都没有了。

    现在,你完全了解了日志方法收集网站分析数据的优缺点,那么,什么情况下你应该选择这种方法进行网站分析呢?

    4. 什么情况下该用日志分析方法

    如果你有如下的数据监测和分析的需要,你应该用日志分析方法:

    1. 需要了解搜索引擎机器人或者其他非人为访问流量,并且希望据此对网站进行针对性的优化,如通过分析搜索引擎的访问行为来进行SEO;

    2. 需要了解除了普通的PC客户端之外的上网设备对网站的访问情况;

    3. 需要了解网站的文件资源是否被用户完整的下载索取;

    4. 对网站流量信息具有极高的保密需要,不允许让任何第三方染指或帮忙;

    5. 对于网站服务器的安全性和可维护性有要求,以及有非常显著的反抗黑客或其他非授权访问需求的。

    如果有如下需求,你不应该用日志分 析方法:

    1. 你的网站有重要的Flash之类的“非网页类型的互动”,用户和这些内容的互动是你想要了解的内容;

    2. 不喜欢麻烦,对大数据量文件的处理不擅长,对日志文件不熟悉,没有好的日志数据处理软硬件资源;

    3. 需要更精确的了解网站被真正的人访问的情况,而不需要了解“非人”的机器对网站的访问并且不希望受到网页缓存的干扰;

    4. 需要更好的实时性、更规律更直观的数据呈现。

    现在,拿着这个清单,你可以做出容易的选择了。因为我的博客的流量很多来自搜索引擎,因此分析服务器日志并了解搜索引擎爬虫的工作其实是非常必要的一个分析工作之一。

    就我的经验而言,我们国家使用日志来分析网站仍然占有相当的比例,尤其是对于一些大型网站,他们会开发专门的软件,划拨专门的硬件资源来分析网站日 志。不过,这不仅仅是从分析访问者行为的角度来考虑,更是从网站服务器的安全性和可维护性角度来考虑的。

    不过,如果你把网站分析的重心放在对于网站真实访问者行为的追踪和分析上,那么,通过日志方法来实现相对而言难度相对比较大,操作也比较繁琐,我们 可以利用另一种方法,即页面标记法(Page Tag)来实现对网站访问数据的收集。

    展开全文
  • 前后台交互加密方式

    千次阅读 2019-04-29 18:03:36
    一、登录机制 粗略地分析, 登录机制主要分为登录验证、登录保持、登出三个部分。... 登录认保持是指客户端登录后, 服务器能够...容易想到的方案是,客户端登录成功后, 服务器为其分配sessionId, 客户端随后每次请...

    一、登录机制

    粗略地分析, 登录机制主要分为登录验证、登录保持、登出三个部分。登录验证是指客户端提供用户名和密码,向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确认。 登录认保持是指客户端登录后, 服务器能够分辨出已登录的客户端,并为其持续提供登录权限的服务器。登出是指客户端主动退出登录状态。容易想到的方案是,客户端登录成功后, 服务器为其分配sessionId, 客户端随后每次请求资源时都带上sessionId。

    simple_flow

    1.1 登录验证

    上述简易的登录验证策略存在明显的安全漏洞,需要优化。

     

    1.1.1 密码的传输

    客户端第一次发出登录请求时, 用户密码以明文的方式传输, 一旦被截获, 后果严重。因此密码需要加密,例如可采用RSA非对称加密。具体流程如下:

    • 客户端向服务器第一次发起登录请求(不传输用户名和密码)。
    • 服务器利用RSA算法产生一对公钥和私钥。并保留私钥, 将公钥发送给客户端。
    • 客户端收到公钥后, 加密用户密码, 向服务器发起第二次登录请求(传输用户名和加密后的密码)。
    • 服务器利用保留的私钥对密文进行解密,得到真正的密码。

    1.1.2 登录状态token

    再仔细核对上述登录流程, 我们发现服务器判断用户是否登录, 完全依赖于sessionId, 一旦其被截获, 黑客就能够模拟出用户的请求。于是我们需要引入token的概念: 用户登录成功后, 服务器不但为其分配了sessionId, 还分配了token, token是维持登录状态的关键秘密数据。在服务器向客户端发送的token数据,也需要加密。于是一次登录的细节再次扩展。

    • 客户端向服务器第一次发起登录请求(不传输用户名和密码)。
    • 服务器利用RSA算法产生一对公钥和私钥。并保留私钥, 将公钥发送给客户端。
    • 客户端收到公钥后, 加密用户密码,向服务器发送用户名和加密后的用户密码; 同时另外产生一对公钥和私钥,自己保留私钥, 向服务器发送公钥; 于是第二次登录请求传输了用户名和加密后的密码以及客户端生成的公钥。
    • 服务器利用保留的私钥对密文进行解密,得到真正的密码。 经过判断, 确定用户可以登录后,生成sessionId和token, 同时利用客户端发送的公钥,对token进行加密。最后将sessionId和加密后的token返还给客户端。
    • 客户端利用自己生成的私钥对token密文解密, 得到真正的token。

    login

    1.2 登录保持

    在最原始的方案中, 登录保持仅仅靠服务器生成的sessionId: 客户端的请求中带上sessionId, 如果服务器的redis中存在这个id,就认为请求来自相应的登录客户端。 但是只要sessionId被截获, 请求就可以为伪造, 存在安全隐患。

    引入token后,上述问题便可得到解决。 服务器将token和其它的一些变量, 利用散列加密算法得到签名后,连同sessionId一并发送给服务器; 服务器取出保存于服务器端的token,利用相同的法则生成校验签名, 如果客户端签名与服务器的校验签名一致, 就认为请求来自登录的客户端。keep_login

     

    1.3 TOKEN失效
    用户登录出系统

    失效原理:
    在服务器端的redis中删除相应key为session的键值对。

    二、 散列算法

    散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。

    散列算法可以用来加密token生成签名, 以便token信息不暴露在网络同时还能验证登录的有效性。

    2.1 md5

    全写: Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

    输出: 128bit

    MD5算法具有以下特点:
    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
    2、容易计算:从原数据计算出MD5值很容易。
    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
    4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
    5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

    缺陷:
    Md5一度被认为十分靠谱。
    2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。
    2009年,冯登国、谢涛二人利用差分攻击,将MD5的碰撞算法复杂度从王小云的2^42进一步降低到2^21,极端情况下甚至可以降低至2^10。仅仅2^21的复杂度意味着即便是在2008年的计算机上,也只要几秒便可以找到一对碰撞。
    Md5已老, 在安全性要求较高的场合,不建议使用。

    2.2 sha1

    全名: 安全哈希算法(Secure Hash Algorithm)
    输出: 160bit

    2.2.1 与Md5比较

    相同点:
    因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似。
    不同点:
    1. 对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
    2. 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
    3. 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。

    2.3 加盐

    所谓加盐, 就是在原本需要加密的信息基础上,糅入其它内容salt。签名的生成就是一次加盐。

    三、对称加密

    本系统使用对称加密对用户密码进行加密以及生成token字符串。

    3.1 AuthCode加密

    AuthCode是康盛科技发明的加密方式, 开源产品Discuz的密码是用这个算法进行加密。但是有点遗憾,这个函数所有权属于康盛创想,并不能自由使用的。不知使用是否有风险??

    3.2 AES加密

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    四、非对称加密

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。

    算法描述:

    (1)选择一对不同的、足够大的素数p,q。
    (2)计算n=pq。
    (3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,不让任何人知道。
    (4)找一个与f(n)互质的数e(公钥指数),且1<e<f(n)。
    (5)计算d(私钥指数),使得de≡1 mod f(n)。这个公式也可以表达为d ≡e-1 mod f(n)
    注,≡是数论中表示同余的符号。
    (6)公钥KU=(e,n),私钥KR=(d,n)。
    (7)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:
    (8)解密过程为:

    展开全文
  • 人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易使用。 人机交互的研究内容 人机交互界面的表示模型与方法 可用性分析与评价 多通道交互技术 认知与智能用户界面 群件 ...

    第八章由于懒了,没写。有几个公式需要记忆一下。

    一、概论

    交互:人与计算机之间的直接或间接的通讯。
    人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易使用。

    人机交互的研究内容

    • 人机交互界面的表示模型与方法
    • 可用性分析与评价
    • 多通道交互技术
    • 认知与智能用户界面
    • 群件
    • web设计
    • 移动界面设计

    **人机交互学:**是一门研究人、计算机以及他们之间相互联系的方式(交互)的科学。
    交互:人与计算机之间的直接或间接的通讯
    人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易使用。

    为什么学习人机交互?
    从市场角度:用户容忍度降低
    从企业角度:提高生产效率,降低成本
    从个人角度:提高可用性,获取用户主观满意度
    从人性角度:容忍用户出错

    多通道交互:一种使用多种通道与计算机通信的人机交互方式。

    通道:源于心理学的概念,涵盖了用户表达意图、执行动作或感知反馈信息的各种通信方法,如言语、眼神、脸部表情、唇动、手动、头动、肢体姿势、触觉、嗅觉或味觉等。

    (手写汉字识别、数字墨水技术、笔式交互技术、语音识别、语音合成技术)

    人机交互的发展历史

    命令行界面交互阶段、图形用户界面交互阶段、自然和谐的人机交互阶段(情感计算、多通道交互、虚拟现实、只能用户界面)

    人机交互的发展趋势

    智能化、集成化、网络化、标准化

    二、人机交互基础知识

    什么是好的交互设计?
    不存在危害的系统,高效且无差错
    日常系统,易学习,不易出错,用户满意
    最好的界面是用户感觉不到界面
    界面设计满足不同用户的身心需求

    交互框架作用:
    提供理解或定义某种事物的一种结构
    能够帮助人们结构化设计过程
    认识设计过程中的主要问题
    还有助于定义问题所涉及的领域

    2.2交互框架

    执行/评估活动周期 EEC:
    1、最有影响力的框架
    2、定义了活动的四个组成部分
    目标(Goal) ≠意图(Intention)
    执行(Execution)
    客观因素(World)
    评估(Evaluation)

    EEC模型可解释为什么有些界面的使用存在问题
    执行隔阂:用户为达目标而制定的动作与系统允许的动作之间的差别
    评估隔阂:系统状态的实际表现与用户预期之间的差别

    EEC模型不能描述人与系统通过界面进行的通信
    四个构成部分+四个步骤(翻译过程)
    系统:内核语言
    用户:任务语言
    输入:输入语言
    输出:输出语言

    2.3 交互形式

    1、命令行交互
    优点
    专家用户能够快速完成任务;
    较GUI节约系统资源;
    可动态配置可操作选项;
    键盘操作较鼠标操作更加精确;
    支持用户自定义命令

    缺点
    命令语言的掌握对用户的记忆能力提出较高要求;
    基于回忆的方式(recall memory)
    没有GUI基于识别的方式(recognition memory)容易使用
    键盘操作,出错频率较高;
    要求用户记忆指令的表示方式
    与可用性理论所强调的“不应要求用户了解计算机底层的实现细节”相违背。

    2、菜单驱动界面
    优点
    基于识别机制,对记忆的需求较低;
    具有自解释性;
    容易纠错;
    适合新手用户。若提供了较好的快捷键功能,则对于专家用户同样适用。
    缺点
    导航方式不够灵活;
    当菜单规模较大时,导航效率不高;
    占用屏幕空间,不适合小型显示设备。
    为节省空间,通常组织为下拉菜单或弹出式菜单;
    对专家用户而言使用效率不高

    3、基于表格的界面
    优点
    简化数据输入;
    只需识别无需学习;
    特别适合于日常文书处理等需要键入大量数据的工作
    缺点
    占用大量屏幕空间;
    导致业务流程较形式

    4、直接操纵
    自由阶段——指用户执行操作前的屏幕视图;
    捕获阶段——在用户动作(点击、点击拖拽等)执行过程中屏幕的显示情况;
    终止阶段——用户动作执行后屏幕的显示情况。

    优点
    将任务概念可视化,用户可以非常方便地辨别他们;
    容易学习,适合新手用户;
    基于识别,对记忆的要求不高,可减少错误发生;
    支持空间线索,鼓励用户对界面进行探索;
    可实现对用户操作的快速反馈,具有较高的用户主观满意度。
    缺点
    实现起来比较困难;
    对专家用户而言效率不高;
    不适合小屏幕显示设备;
    对图形显示性能的需求较高;
    不具备自解释性,可能误导用户

    5、问答界面
    优点
    对记忆的要求较低;
    每个界面具有自解释性;
    将任务流程以简单的线性表示;
    适合新手用户。
    缺点
    要求从用户端获得有效输入;
    要求用户熟悉界面控制;
    纠错过程可能比较乏味。

    6、隐喻界面
    优点
    直观生动
    无需学习
    局限性
    不具有可扩展性,大量实体时效率低下
    不同用户对同一事物可能产生不同的联想
    紧紧地将我们的理念和物理世界束缚在一起
    寻找恰当的隐喻可能存在困难

    7、自然语言交互
    8、3D虚拟环境导航
    9、笔交互
    10、触摸屏
    11、多通道用户界面

    2.4 理解用户

    信息处理模型:研究人对外界信息的接收、存储、集成、检索和使用,可预测人执行特定任务的效率,没有考虑到注意和记忆的重要性

    扩展的信息处理机模型

    **认知心理学:**关注人的高级心理过程,如记忆、语言、思维、感知和问题解决能力等的心理学

    格式塔心理学:研究人是如何感知一个良好组织的模式的,而不是将其视为一系列相互独立的部分。
    人类处理机模型
    包含三个交互式组件:
    感知处理器 :信息将被输出到声音存储和视觉存储区域
    认知处理器 :输入将被输出到工作记忆
    动作处理器:执行动作

    存在的问题
    把认知过程描述为一系列处理步骤
    仅关注单个人和单个任务的执行过程,忽视了复杂操作执行中人与人之间及任务与任务之间的互动
    忽视了环境和其他人可能带来的影响

    格式塔(Gestalt)心理学
    相近性原则、相似性原则、连续性原则、完整性和闭合性原则、对称性

    人的认知特性
    三个阶段
    感觉记忆
    短时记忆
    长时记忆
    三个阶段之间可以进行信息交换

    三、交互设计目标与原则

    3.2 交互设计目标

    可用性目标
    (1)易学性(最基本的可用性属性)
    (2)高效率
    (3)易记性
    易记性的影响因素
    位置:将特定对象放在固定位置
    分组:对事物按照逻辑进行恰当的分组
    惯例:尽可能使用通用的对象或符号
    冗余:使用多个感知通道对信息进行编码
    (4)少出错
    措施
    保证导致灾难性后果错误的发生频率降到最低
    保证错误发生后迅速恢复到正常状态
    (5)主观满意度
    观念的转变
    传统软件质量观
    侧重内部效率和可靠性
    如程序代码运行时的效率以及灵活性、可维护性
    人机交互软件质量观
    转向用户视角

    用户体验目标

    区别与联系

    可用性保证产品的基本功能完备且方便使用;用户体验的目的是给用户一些与众不同的使用感受。

    3.3 简易可用性工程

    可用性工程是完整的用于改善产品可用性的迭代过程。

    可用性度量
    常用方法
    选择一些能够代表目标用户群体的测试用户
    让这些用户使用系统执行一组预定的任务
    比较任务的执行情况
    针对多维属性
    取每个可用性属性的平均值
    查看整体分布情况
    (1)易学性度量
    可用性属性中最容易度量的属性
    找一些从未使用过系统的用户
    能够代表系统的目标用户
    区分没有任何计算机使用经验的新手用户和具有一般计算机使用经验的用户
    统计他们学习使用系统直至达到某种熟练程度的时间
    (2)使用效率度量
    (3)易记性度量
    (4)错误率度量
    (5)主观满意度度量
    不论采用什么样的评价尺度,都应当在大规模测试前进行小规模试点测试

    可用性工程:以提高产品的可用性为目标的先进的产品开发方法论

    完整的可用性工程过程
    了解用户
    竞争性分析
    设定可用性目标
    用户参与的设计
    迭代设计
    产品发布后的工作
    简化
    用户和任务观察
    场景(scenario)
    简化的边做边说(thinking aloud)
    启发式评估

    3.4 交互设计原则

    基本规则
    可学习性
    新用户能用它开始有效的交互并能获得最大的性能
    灵活性
    用户和系统能以多种方式交换信息
    健壮性
    在决定成就和目标评估方面对用户提供的支持程度

    八条黄金规则

    尽可能保证一致
    符合普遍可用性

    提供信息丰富的反馈
    设计说明对话框以生成结束信息

    预防并处理错误
    让操作容易撤销

    支持内部控制点
    减轻短时记忆负担

    七项原理

    应用现实世界和头脑中的知识

    简化任务结构

    使事情变得明显

    获得正确的映射

    利用自然和人为的限制力量

    容错设计

    当所有都不成功时进行标准化

    十项启发式规则
    系统状态的可见度
    系统和现实世界的吻合
    用户享有控制权和自主权
    一致性和标准化
    避免出错
    依赖识别而非记忆
    使用的灵活性和高效性
    审美感和最小化设计
    帮助用户识别、诊断和恢复错误
    帮助和文档

    四、交互设计过程

    4.2 交互设计过程

    基本活动
    (1)标识用户需要并建立需求
    了解谁是目标用户,交互式产品应提供哪些支持
    这个活动是最基本的
    (2)开发满足需求的候选设计方案
    交互设计的核心活动
    可进一步划分为概念设计和物理设计
    (3)构建设计的交互式版本
    不必是可运行的软件
    (4)评估设计
    评估设计的可用性和可接受性
    用到各种评估标准
    三个关键特征
    以用户为中心
    以用户为中心是交互设计的核心观点
    提供让用户参与评估和提出反馈的机会
    稳定的可用性标准
    项目之初就必须标识特定的可用性和用户体验目标
    迭代
    用户和设计人员都参与设计和讨论需求
    各个活动相互启发,并重复进行

    4.3 设计过程

    1、选取用户
    2、明确需求
    3、提出候选设计方案
    4、选择设计方案
    决策分为两类:
    第一类:关于可见、可测量的外部特征,例:检索数据库网页的响应时间
    第二类:关于不可见、不可测量的内部特征,例:数据库内部存取机制
    注意力集中在可见、可测量的外部行为上

    4.4 交互系统生命周期

    一个交互式系统的所有需求在开始时是无法确定的。
    传统的生命周期模型不适用
    1、星型生命周期模型
    以“评估”为核心
    没有活动次序
    任何两个活动可以相互切换
    可以从任一活动开始

    2、可用性工程生命周期模型
    三个基本任务:
    需求分析
    设计/测试/开发
    安装
    交互设计过程管理
    LUCID(合理的以用户为中心的交互设计)
    六个阶段:
    预想
    发现
    设计基础
    设计细节
    构建
    发布

    五、交互式系统的需求

    用户是不同的
    产品是不同的
    人物角色的构建
    场景剧本的构造
    需求获取和分析
    层次化任务分析
    原型

    需求:关于目标产品的一种陈述,它指定了产品应做什么,或者应如何工作

    需求获取是项目设计的第一个阶段

    需求活动
    搜集数据、解释数据、提取需求

    产品特性
    功能不同、物理条件不同、使用环境不同

    5.4 用户特性

    用户差异
    (1)体验水平差异
    设计目标
    让新手快速和无痛苦地成为中间用户
    避免为想成为专家的用户设置障碍
    让中间用户感到愉快
    因为他们的技能将稳定地处于中间层
    a.新手用户
    特点
    敏感,且很容易在开始有挫折感
    设计要求
    不能将新手状态视为目标
    让学习过程快速且富有针对性
    确保程序充分反映了用户关于任务的心智模型
    无论什么样的帮助,都不应该在界面中固定
    具有向导功能的对话框帮助较好
    不要使用在线帮助作为学习指导
    使用单个的指南工具(一般显示在对话框中)
    菜单项应该是解释性的
    b.专家用户
    特点
    对缺少经验的用户有着异乎寻常的影响
    “专家说不好就不好”
    欣赏更新的且更强大功能
    不会受到复杂性增加的干扰
    设计要求
    对经常使用的工具集,要能快速访问
    c.中间用户
    特点
    需要工具,但不需要解释,而需要提示
    知道如何使用参考资料,在线帮助
    能够区分经常使用和很少使用的功能
    高级功能的存在让永久的中间用户放心
    设计要求
    工具提示(Tooltip)是适合中间用户最好的习惯用法
    在线帮助是永久中间用户的极佳工具
    常用功能中的工具放在用户界面的前端和中心位置
    提供一些额外的高级特性

     (2)年龄差异
     (3)文化差异
     (4)健康差异
    

    5.5 用户建模

    人物角色
    作用:
    确定产品应该做什么及应有的行为
    与利益相关者、开发者和其他设计者交流
    在设计中达成意见一致和承诺
    衡量设计的效率
    促进产品其他方面的相关工作,如市场推广和营销计划。
    解决产品开发过程中出现的3个设计问题 :
    弹性用户
    自参考设计
    边缘情况统计

    建模过程:
    拼凑:采用头脑风暴的方法,产生一些零碎概念或模型的片段,先不去考虑他们的细节。
    组织:将这些片段按照所构造模型的需要进行分组和分类,归并或删除那些冗余重叠的东西
    细节:建立和完善相应细节,补充遗漏的数据
    求精:对模型进行推敲,以便改进和完善
    以上过程循环反复

    5.6 需求获取、分析和验证

    观察:
    直接观察
    间接观察
    场景:
    场景是表示任务和工作结构的“非正式的叙述性描述“
    场景的来源:场景说明通常来自专题讨论或者访谈,目的是解释或讨论有关用户目标的一些问题
    任务分析
    层次化任务分析(HTA)是应用最广的任务分析技术

    需求定义阶段的步骤:

    1)创建问题和前景综述

    2)头脑风暴

    3)确定人物角色的期望

    4)构建情景剧本

    5)确定需求(数据需求、功能需求、其他)

    任务分析的用途:
    手册和教学(现有系统)
    需求获取和系统设计(新系统)
    任务分析本身不是需求获取,但有助于需求的完整表达
    详细的接口设计(新系统)
    应用于菜单设计
    需求验证:
    一般的需求验证技术:
    需求评审、测试用例
    交互系统的验证技术:
    原型
    原型分类:
    低保真原型(丢弃型)
    与最终产品不太相似的原型
    使用与最终产品不同的材料,如纸张、纸板
    如PalmPilot掌上电脑的木雕原型
    优点是简单、便宜、易于制作和修改
    高保真原型(进化型)
    与最终产品更为接近,使用相同的材料
    如使用Visual Basic开发的软件系统原型
    风险
    用户会认为原型就是系统
    开发人员可能认为已找到了一个用户满意的设计

    六、交互式系统的设计

    过早地把重点放在小细节、小部件和精细的交互上会妨碍产品的设计

    6.2 设计框架

    定义高层次上的屏幕布局
    定义产品的工作流、行为和组织
    步骤:
    1、定义外形因素和输入方法
    2、定义功能和数据元素
    3、决定功能组合层次
    4、勾画大致的设计框架
    5、构建关键情景场景剧本
    6、通过验证性的场景剧本来检查设计

    三种验证性的场景剧本

    1、关键线路的变种场景剧本

    2、必须使用的场景剧本

    3、边缘情形使用的场景剧本

    6.3 简化设计的四种策略:

    转移(略)
    删除
    方法:功能融合、删除视觉混乱、删减文字、不要删减过多
    组织
    隐藏:把不是最重要的组件和信息以某种方式隐藏起来,避免分散用户的注意力。

    删除不必要的
    组织要提供的
    隐藏非核心的

    6.4 设计中的折中

    个性化和配置
    本地化和国际化
    审美学与实用性

    6.5 软件设计的细节

    设计体贴的软件

    加快系统的响应时间

    减轻用户的记忆负担

    减少用户的等待感
    以某种形式的反馈让用户了解操作进行的进度和状态
    如进度对话框
    以渐进方式向用户呈现处理结果
    分成多个连续的部分来顺序地把结果提供给用户
    先传输全局概括,再传输细节
    给用户分配任务,分散用户的注意力(安装软件)
    减低用户的期望值(本次安装大约需要3分钟)

    设计好的出错信息
    四个简单原则
    使用清晰的语言来表达,而不要使用难懂的代码
    使用的语言应当精炼准确,而不是空泛而模糊的
    对用户解决问题提供建设性的帮助
    出错信息应当友好,不要威胁或责备用户

    6.6 交互设计模式

    模式在HCI中的应用还处于起步阶段
    定位模式、结构模式、行为模式
    模式不是拿来即用的商品,每一次模式的运用都有所不同

    物理结构:
    三种不同的物理结构:
    多窗口
    当用户想要自定义屏幕布局的复杂应用时
    缺点:窗口太多,用户找不到想要的窗口
    单一窗口分页
    简单Web应用最适合
    优点:有效组织空间,是小型手持设备和手机的首选
    平铺窗口
    优点:可看到许多内容而不必管理窗口
    缺点:占据大量屏幕空间
    如何选择:用户是关键

    七、可视化设计

    7.2 窗口和菜单

    1、窗口
    (1)状态:
    最大化
    最小化
    还原
    平铺(Tile)窗口:允许拖放操作
    重叠(Overlapping)窗口:有效利用屏幕空间
    层叠(Cascade )窗口:可视化组织各窗口
    (2)窗口界面类型
    多文档界面
    优点
    节省系统资源
    最小的可视集
    协同工作区
    多文档同时可视化
    缺点
    菜单随活动文档窗口状态变化,导致不一致性
    文档窗口必须在主窗口内部,减弱多文档显示优势
    屏幕显示复杂:子窗口可能在父窗口中被最小化

     单文档界面
       优点
         从用户角度出发,以文档为中心
         界面的视觉复杂性小
       缺点
         不能管理分散但相关的文档窗口
         相关文档不能从相同类型的其他文档中分离
         文档打开过多时,任务栏可能被占满
     标签文档界面
       窗口菜单:包含了当前打开窗口的列表
       
       优点:让用户看到哪些窗口是打开的
       缺点:不允许用户看到两个及以上的窗口内容
    

    2、菜单
    访问系统功能的工具,已经成为窗口环境的标准特征
    必不可少的组成部分
    菜单标题
    菜单选项
    最重要的特性:描述性、一致性
    注意事项:
    菜单应该按语义及任务结构来组织
    合理组织菜单接口的结构与层次
    菜单及菜单项的名字应符合日常命名习惯
    菜单选项列表即可以是有序的也可以是无序的
    为菜单项提供多种的选择途径
    增加菜单系统的可浏览性和可预期性
    对菜单选择和点取设定反馈标记

    7.3 对话框

    ​ 典型的辅助性窗口
    ​ 分类:
    ​ 模态对话框、非模态对话框
    ​ 按用途分类:
    ​ 属性对话框、功能对话框、进度对话框(耗费的时间的进度)、公告对话框(阻塞型对话框(错误、警告、确认)、临时对话框)、标签对话框、扩展对话框、级联对话框
    ​ 消除错误信息
    ​ 用更健壮的软件取代错误消息
    ​ 消除用户犯错误的可能性
    ​ 为所有的数据输入使用有界控件
    ​ 为用户提供正面反馈
    ​ 软件的负面反馈对用户而言是一种侮辱
    ​ 最后一招:改进错误消息框
    ​ 保证始终有礼貌、具有启发性、还要助人为乐
    ​ 澄清问题的范围
    ​ 可选择的方法
    ​ 默认情况程序会做什么
    ​ 丢失了哪些信息
    ​ 消除确认对话框
    ​ 原则1:做,不要问
    ​ 设计软件时,勇往直前给它确信的力量
    ​ 原则2:让所有操作都可以撤销
    ​ 删除或覆盖文件时可将文件移动到暂时目录,待一段时间或物理删除后再删除
    ​ 原则3:提供非模态反馈帮助用户避免犯错误
    ​ 如文档页面应显示真实可打印区域的向导,以避免打印文档超出可用的打印区域


    ​ 对话框设计原则
    ​ (1)把主要的交互操作放在主窗口中
    ​ 对话框适合主交互流之外的功能
    ​ (2)视觉上区分模态与非模态对话框
    ​ 为非模态对话框提供一致的终止命令
    ​ (3)不要用临时对话框作为错误信息框或确认信息框
    ​ 保证用户能够阅读
    ​ (4)不要堆叠标签

    7.4 控件

    (1)命令控件
    (2)选择控件(复选框、列表框、下拉列表)
    (3)显示控件
    滚动条
    适合用于窗口内容和文本导航器
    包含的信息
    当前可见文档的百分比
    总共有多少页
    拖动滑块时,显示页数
    拖动滑块时,显示每一页的第一个句子
    跳到文档开始和末尾的按钮
    (4)输入控件(有界)

    7.5 工具栏

    工具栏上的图标与文本
    不同时显示,因为屏幕空间宝贵,
    工具提示

    图标的4种表示方法
    相似、示例、象征、任意

    7.6 屏幕复杂性度量

    布局复杂度

    布局统一度
    以“视觉上无序的排列有碍于可用性”这一原理为基础

    用户界面设计原理

    结构原理
    简单性原理
    可见性原理
    反馈原理
    成功的反馈就是以能被对方注意到、读到和正确理解的方式来提供信息
    好的出错信息
    以一个能让用户马上知道问题何在的题头开始
    有针对性和简洁地解释问题究竟是什么
    建议解决问题的方法或操作步骤

    宽容原理
    重用原理

    八、交互设计模型与理论

    8.2 预测模型

    GOMS:是关于人类如何执行认知—动作型任务以及如何与系统交互的理论模型

    Goal-目标:用户要达到什么目的

    Operator-操作

    任务执行的底层行为,不能分解

    为达到目标而使用的认知过程和物理行为

    如点击鼠标

    Method-方法

    如何完成目标的过程,即对应目标的子目标序列和所需操作

    如移动鼠标,输入关键字,点击Go按钮

    Selection-选择规则

    确定当有多种方法时选择和方法

    GOMS认为方法的选择不是随机的

    KLM计算

    Filts定律

    大目标、小距离具有优势

    ​ 对选择任务而言,其移动时间随到目标距离的增加而增加,随目标的大小减小而增加

    屏幕元素应该尽可能多的占据屏幕空间

    最好的像素是光标所处的像素

    屏幕元素应尽可能利用屏幕边缘的优势

    ​ 大菜单,如饼型菜单,比其他类型的菜单使用简单

    策略一:缩短当前位置到目标区域的距离;如右键菜单技术

    策略二:增大目标大小以缩短定位时间

    8.3 动态特性建模

    状态转移网

    三态模型

    8.4 语言模型

    BNF

    8.5 系统模型

    Z标记法

    九、以用户为中心的设计

    9.2 设计思想

    4个重要原则

    及早以用户为中心

    综合设计

    及早并持续性地进行测试

    迭代设计

    用户参与

    焦点小组、问卷调查、民族志观察、走查、专家评估、可用性测试

    9.3 用户参与设计

    重要性、形式、参与式设计

    参与形式

    作为设计组成员、以专题讨论或类似会议的形式参与开发过程、存在大量的用户时的折衷方案

    9.4 理解用户工作

    了解用户

    上下文询问法

    观察并与用户交流会比仅仅观察的效果要好

    强调到用户工作的地方,在用户工作时观察,并和用户讨论他的工作

    也被翻译成“情景调查”

    基于“学徒模型”

    用户是师傅,研究人员是学徒

    与观察法的区别

    用户知道研究人员的存在

    也知道他们是研究的一部分

    4个原则

    上下文环境、伙伴关系、解释、焦点

    十、评估的基础知识

    评估:系统化的数据搜集过程

    10.2 评估目标和原则

    目标:评估系统功能的范围和可达性;评估交互中用户的体验;确定系统的某些特定问题。

    原则:依赖于产品的用户;与设计结合进行;在用户的实际工作任务和操作环境下进行;要选择有广泛代表性的用户

    10.3 评估范性和技术

    范型和技术的区别

    范型:快速评估、可用性测试、实地研究、预测性评估

    技术:观察用户、询问用户意见、询问专家意见、测试用户的执行情况、基于模型和理论。预测界面的有效性

    10.4 评估方法的选择

    哪些影响因素

    10.5 评估步骤

    DECIDE评估框架

    决定评估需要完成的总体目标

    发掘需要回答的具体问题

    选择用于回答具体问题的评估范型和技术

    标识必须解决的实际问题,如测试用户的选择

    决定如何处理有关道德的问题

    评估解释并表示数据

    10.6 小规模试验

    十一、评估之观察用户

    真实环境中的观察和受控环境中的观察

    直接观察

    实验室观察和现场观察

    Robson框架:空间、行为者、活动、物体、举止、事件、目标、感觉

    间接观察

    日志和交互记录

    数据记录

    纸笔、音视频、日志和交互记录

    数据分析

    定性分析、定量分析

    十二、评估之询问用户和专家

    访谈、问卷调查、认知走查、启发式评估

    访谈(开放式、结构化、半结构化、集体)有目的的对话过程。

    指导原则

    避免过长的问题

    避免使用复合句

    避免使用可能让用户感觉尴尬的术语或他们无法理解的语言

    避免使用有诱导性的问题

    尽可能保证问题是中性的

    访谈步骤

    开始、热身、主要访谈、冷却、结束

    问卷调查

    用于搜集统计数据和用户意见的常用方法

    认知走查

    启发式评估

    七项启发式原则

    内容一致性、对话简单性、快捷链接、尽可能减轻用户的记忆负担、预防错误、提示信息、内部控制

    十三、评估之用户测试

    定义目标和问题

    选择参与者

    设计测试任务

    测试步骤

    参与者抵达后使用、协议书、就坐后,解释目的和步骤、执行任务前说明、若参与者忘记说出想法或不知所措时提示用、所有任务完成后,询问参与者对某些问题的看法

    数据搜集与分析

    简答题

    10.简要论述界面设计的一般原则。

    1.一致性:整个界面的控制中要使用一致的机制。

    2.兼容性:新的设计应该基于用户以前的经验,使用用户熟悉的表达。

    3.适应性:用户应该处于控制的地位,界面要适应用户的工作速度、个人特征和技术水平等。

    4.经济性: 尽可能减少用户的工作(包括减少用户记忆),设计操作时尽量以最少的步骤来实现,如提供快捷方式等,以达到高效。

    5.结构性:按照逻辑意义将信息分组,在屏幕上有规律的分布。

    6.指导性而不是控制用户:通过提供状态信息、反馈信息出错信息和帮助来指导用户。

    用户的区别

    偶然型用户:既没有计算机应用领域的专业知识,也缺少计算机系统基本知识的用户。

    生疏型用户:经常使用计算机,对计算机性能及操作使用有一定程度的理解和经验。

    熟练型用户:一般是专业技术人员

    专家型用户:对需要计算机完成的工作任务和计算机系统都很精通的通常是计算机专业用户。

    名词解释

    **人机交互学:**是一门研究人、计算机以及他们之间相互联系的方式(交互)的科学。

    GOMS:是关于人类如何执行认知—动作型任务以及如何与系统交互的理论模型。

    多通道交互:一种使用多种通道与计算机通信的人机交互方式。

    **认知心理学:**关注人的高级心理过程,如记忆、语言、思维、感知和问题解决能力等的心理学。

    格式塔心理学:研究人是如何感知一个良好组织的模式的,而不是将其视为一系列相互独立的部分。

    执行隔阂:用户为达目标而制定的动作与系统允许的动作之间的差别。
    评估隔阂:系统状态的实际表现与用户预期之间的差别。

    可用性工程:以提高产品的可用性为目标的先进的产品开发方法论。

    需求:关于目标产品的一种陈述,它指定了产品应做什么,或者应如何工作。

    隐藏:把不是最重要的组件和信息以某种方式隐藏起来,避免分散用户的注意力。

    评估:系统化的数据搜集过程。

    展开全文
  • 人机交互学:是一门研究人、计算机以及他们之间相互联系的方式(交互)的科学。 交互:人与计算机之间的直接或间接的通讯 人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易...

    欢迎访问我的个人博客shawnluo.com  !

    一、人机交互基础知识
    人机交互学:是一门研究人、计算机以及他们之间相互联系的方式(交互)的科学。
    交互:人与计算机之间的直接或间接的通讯
    人机交互的目的:从尊重用户的角度来改善用户和计算机之间的交互,从而使计算机系统更加容易使用。

    为什么学习人机交互?
    从市场角度:用户容忍度降低
    从企业角度:提高生产效率,降低成本
    从个人角度:提高可用性,获取用户主观满意度
    从人性角度:容忍用户出错

    什么是好的交互设计?
    不存在危害的系统,高效且无差错
    日常系统,易学习,不易出错,用户满意
    最好的界面是用户感觉不到界面
    界面设计满足不同用户的身心需求

    交互框架作用:
    提供理解或定义某种事物的一种结构
    能够帮助人们结构化设计过程
    认识设计过程中的主要问题
    还有助于定义问题所涉及的领域 

    执行/评估活动周期 EEC:
    1、最有影响力的框架
    2、定义了活动的四个组成部分
        目标(Goal) ≠意图(Intention)
        执行(Execution) 
        客观因素(World) 
        评估(Evaluation) 

    EEC模型可解释为什么有些界面的使用存在问题
    执行隔阂:用户为达目标而制定的动作与系统允许的动作之间的差别
    评估隔阂:系统状态的实际表现与用户预期之间的差别


    EEC模型不能描述人与系统通过界面进行的通信 
    四个构成部分+四个步骤(翻译过程)
    系统:内核语言
    用户:任务语言
    输入:输入语言
    输出:输出语言

    1、命令行交互
    优点
    专家用户能够快速完成任务;
    较GUI节约系统资源;
    可动态配置可操作选项;
    键盘操作较鼠标操作更加精确;
    支持用户自定义命令 

    缺点
    命令语言的掌握对用户的记忆能力提出较高要求;
    基于回忆的方式(recall memory)
        没有GUI基于识别的方式(recognition memory)容易使用
    键盘操作,出错频率较高;
    要求用户记忆指令的表示方式 
        与可用性理论所强调的“不应要求用户了解计算机底层的实现细节”相违背。

    2、菜单驱动界面
    优点
    基于识别机制,对记忆的需求较低;
    具有自解释性;
    容易纠错;
    适合新手用户。若提供了较好的快捷键功能,则对于专家用户同样适用。
    缺点
    导航方式不够灵活;
    当菜单规模较大时,导航效率不高;
    占用屏幕空间,不适合小型显示设备。
        为节省空间,通常组织为下拉菜单或弹出式菜单;
    对专家用户而言使用效率不高

    3、基于表格的界面
    优点
    简化数据输入;
    只需识别无需学习;
    特别适合于日常文书处理等需要键入大量数据的工作 
    缺点
    占用大量屏幕空间;
    导致业务流程较形式

    4、直接操纵
    自由阶段——指用户执行操作前的屏幕视图;
    捕获阶段——在用户动作(点击、点击拖拽等)执行过程中屏幕的显示情况;
    终止阶段——用户动作执行后屏幕的显示情况。 

    优点
    将任务概念可视化,用户可以非常方便地辨别他们;
    容易学习,适合新手用户;
    基于识别,对记忆的要求不高,可减少错误发生;
    支持空间线索,鼓励用户对界面进行探索;
    可实现对用户操作的快速反馈,具有较高的用户主观满意度。
    缺点
    实现起来比较困难;
    对专家用户而言效率不高;
    不适合小屏幕显示设备;
    对图形显示性能的需求较高;
    不具备自解释性,可能误导用户 

    5、问答界面
    优点
    对记忆的要求较低;
    每个界面具有自解释性;
    将任务流程以简单的线性表示;
    适合新手用户。
    缺点
    要求从用户端获得有效输入;
    要求用户熟悉界面控制;
    纠错过程可能比较乏味。

    6、隐喻界面
    优点
    直观生动
    无需学习 
    局限性
    不具有可扩展性,大量实体时效率低下
    不同用户对同一事物可能产生不同的联想
    紧紧地将我们的理念和物理世界束缚在一起
    寻找恰当的隐喻可能存在困难

    7、自然语言交互
    8、3D虚拟环境导航
    9、笔交互
    10、触摸屏
    11、多通道用户界面

    信息处理模型

    作用:研究人对外界信息的接收、存储、集成、检索和使用,可预测人执行特定任务的效率,
    没有考虑到注意和记忆的重要性 

    扩展的信息处理机模型 


    人类处理机模型
    包含三个交互式组件:
    感知处理器 :信息将被输出到声音存储和视觉存储区域 
    认知处理器 :输入将被输出到工作记忆 
    动作处理器:执行动作

    存在的问题
    把认知过程描述为一系列处理步骤 
    仅关注单个人和单个任务的执行过程,忽视了复杂操作执行中人与人之间及任务与任务之间的互动 
    忽视了环境和其他人可能带来的影响

    格式塔(Gestalt)心理学 
    相近性原则、相似性原则、连续性原则、完整性和闭合性原则 

    人的认知特性
    三个阶段
        感觉记忆
        短时记忆
        长时记忆
    三个阶段之间可以进行信息交换 

    二、交互设计目标与原则  
    设计目标
        可用性目标
        用户体验目标
    简易可用性工程
        可用性属性的度量
        四项关键技术
    设计原则
        一般原则
        黄金规则
        启发式规则


    可用性目标
        (1)易学性(最基本的可用性属性)
        (2)高效率
        (3)易记性
            易记性的影响因素
            位置:将特定对象放在固定位置 
            分组:对事物按照逻辑进行恰当的分组 
            惯例:尽可能使用通用的对象或符号 
            冗余:使用多个感知通道对信息进行编码 
        (4)少出错
            措施
            保证导致灾难性后果错误的发生频率降到最低 
            保证错误发生后迅速恢复到正常状态 
        (5)主观满意度
            观念的转变
                传统软件质量观
                    侧重内部效率和可靠性
                    如程序代码运行时的效率以及灵活性、可维护性 
                人机交互软件质量观
                    转向用户视角

    可用性度量
        常用方法
            选择一些能够代表目标用户群体的测试用户
            让这些用户使用系统执行一组预定的任务
            比较任务的执行情况
            针对多维属性
                取每个可用性属性的平均值
                查看整体分布情况 
        (1)易学性度量
            可用性属性中最容易度量的属性
            找一些从未使用过系统的用户
                能够代表系统的目标用户 
                区分没有任何计算机使用经验的新手用户和具有一般计算机使用经验的用户  
            统计他们学习使用系统直至达到某种熟练程度的时间
        (2)使用效率度量
        (3)易记性度量
        (4)错误率度量
        (5)满意度度量
            不论采用什么样的评价尺度,都应当在大规模测试前进行小规模试点测试  
            
    可用性工程
        以提高产品的可用性为目标的先进的产品开发方法论
        
        完整的可用性工程过程
            了解用户
            竞争性分析
            设定可用性目标
            用户参与的设计
            迭代设计
            产品发布后的工作
        简化
            用户和任务观察
            场景(scenario)
            简化的边做边说(thinking aloud)
            启发式评估 

    交互设计原则
        基本规则
            可学习性
            新用户能用它开始有效的交互并能获得最大的性能
            灵活性
            用户和系统能以多种方式交换信息
            健壮性
            在决定成就和目标评估方面对用户提供的支持程度  

    八条黄金规则
            1. 尽可能保证一致
            2. 符合普遍可用性
            3. 提供信息丰富的反馈
            4. 设计说明对话框以生成结束信息
            5. 预防并处理错误
            6. 让操作容易撤销
            7. 支持内部控制点
            8. 减轻短时记忆负担
            
    十项启发式规则
            系统状态的可见度
            系统和现实世界的吻合
            用户享有控制权和自主权
            一致性和标准化
            避免出错
            依赖识别而非记忆
            使用的灵活性和高效性
            审美感和最小化设计
            帮助用户识别、诊断和恢复错误
            帮助和文档


    三、交互设计过程
    交互设计的基本活动
        标识用户需要并建立需求
        开发满足需求的候选设计方案
        构建设计的交互式版本
        评估设计
    三个关键特征
        以用户为中心
        稳定的可用性标准
        迭代
    设计过程中的问题
        如何选取用户
        如何明确需求
        如何提出候选方案
        如何在候选方案中进行选择
    交互设计生命周期
        星型模型
        可用性工程模型
    交互设计过程管理
        LUCID

    基本活动
    (1)标识用户需要并建立需求
        了解谁是目标用户,交互式产品应提供哪些支持
        这个活动是最基本的
    (2)开发满足需求的候选设计方案
        交互设计的核心活动
            可进一步划分为概念设计和物理设计
    (3)构建设计的交互式版本
        不必是可运行的软件
    (4)评估设计
        评估设计的可用性和可接受性
            用到各种评估标准


    三个关键特征
    以用户为中心
        以用户为中心是交互设计的核心观点
        提供让用户参与评估和提出反馈的机会
    稳定的可用性标准
        项目之初就必须标识特定的可用性和用户体验目标
    迭代
        用户和设计人员都参与设计和讨论需求
        各个活动相互启发,并重复进行
        
    设计过程
    1、选取用户
    2、明确需求
    3、提出候选设计方案
    4、选择设计方案
        决策分为两类:
            第一类:关于可见、可测量的外部特征,例:检索数据库网页的响应时间
            第二类:关于不可见、不可测量的内部特征,例:数据库内部存取机制
        注意力集中在可见、可测量的外部行为上

    交互系统生命周期
    一个交互式系统的所有需求在开始时是无法确定的。
    传统的生命周期模型不适用
    1、星型生命周期模型
        以“评估”为核心
        没有活动次序
        任何两个活动可以相互切换
        可以从任一活动开始

    2、可用性工程生命周期模型
    三个基本任务:
        需求分析
        设计/测试/开发
        安装
        
    交互设计过程管理
        LUCID(合理的以用户为中心的交互设计)
        六个阶段:
            预想
            发现
            设计基础
            设计细节
            构建
            发布
            

    四、交互需求定义

    用户是不同的
    产品是不同的
    人物角色的构建
    场景剧本的构造
    需求获取和分析
        层次化任务分析
    原型

    需求获取是项目设计的第一个阶段

    需求活动
        搜集数据
        解释数据
        提取需求

    产品特性
        功能不同
        物理条件不同
        使用环境不同

    用户特性
        用户差异
            (1)体验水平差异
            设计目标
                让新手快速和无痛苦地成为中间用户
                避免为想成为专家的用户设置障碍
                让中间用户感到愉快
                    因为他们的技能将稳定地处于中间层 
                
            
            (1)新手用户
            特点
                敏感,且很容易在开始有挫折感 
            设计要求
                不能将新手状态视为目标
                让学习过程快速且富有针对性 
                确保程序充分反映了用户关于任务的心智模型 
                无论什么样的帮助,都不应该在界面中固定
                具有向导功能的对话框帮助较好
                    不要使用在线帮助作为学习指导
                    使用单个的指南工具(一般显示在对话框中)
                菜单项应该是解释性的
            
            (2)专家用户
            特点
                对缺少经验的用户有着异乎寻常的影响
                    “专家说不好就不好”
                欣赏更新的且更强大功能 
                不会受到复杂性增加的干扰
            设计要求
                对经常使用的工具集,要能快速访问 
            
            (3)中间用户
            特点
                需要工具,但不需要解释,而需要提示
                知道如何使用参考资料,在线帮助 
                能够区分经常使用和很少使用的功能 
                高级功能的存在让永久的中间用户放心 
            设计要求
                工具提示(Tooltip)是适合中间用户最好的习惯用法 
                在线帮助是永久中间用户的极佳工具 
                常用功能中的工具放在用户界面的前端和中心位置 
                提供一些额外的高级特性 
            
            (2)年龄差异
            (3)文化差异
            (4)健康差异
            
    用户建模
        人物角色
        作用:
        确定产品应该做什么及应有的行为
        与利益相关者、开发者和其他设计者交流
        在设计中达成意见一致和承诺
        衡量设计的效率
        促进产品其他方面的相关工作,如市场推广和营销计划。
        解决产品开发过程中出现的3个设计问题 :
        弹性用户
        自参考设计
        边缘情况统计
        
        建模过程:
        拼凑:采用头脑风暴的方法,产生一些零碎概念或模型的片段,先不去考虑他们的细节。
        组织:将这些片段按照所构造模型的需要进行分组和分类,归并或删除那些冗余重叠的东西
        细节:建立和完善相应细节,补充遗漏的数据
        求精:对模型进行推敲,以便改进和完善
        以上过程循环反复

    需求获取:
        观察:
            直接观察
            间接观察
        场景:
            场景是表示任务和工作结构的“非正式的叙述性描述“
            场景的来源:场景说明通常来自专题讨论或者访谈,目的是解释或讨论有关用户目标的一些问题
        
        
        任务分析
            层次化任务分析(HTA)是应用最广的任务分析技术 
            
            
            
            
            任务分析的用途:
            手册和教学(现有系统)
            需求获取和系统设计(新系统)
                任务分析本身不是需求获取,但有助于需求的完整表达
            详细的接口设计(新系统)
                应用于菜单设计
            
    需求验证:
    一般的需求验证技术:
        需求评审
        测试用例
    交互系统的验证技术:
        原型
            原型分类:
            低保真原型(丢弃型)
                与最终产品不太相似的原型 
                使用与最终产品不同的材料,如纸张、纸板 
                    如PalmPilot掌上电脑的木雕原型 
                优点是简单、便宜、易于制作和修改
            高保真原型(进化型) 
                与最终产品更为接近,使用相同的材料 
                    如使用Visual Basic开发的软件系统原型
                风险
                    用户会认为原型就是系统 
                    开发人员可能认为已找到了一个用户满意的设计 
        

    五、交互式系统的设计
    过早地把重点放在小细节、小部件和精细的交互上会妨碍产品的设计

    设计框架
        定义高层次上的屏幕布局
        定义产品的工作流、行为和组织 
        
        步骤:
        1、定义外形因素和输入方法
        2、定义功能和数据元素
        3、决定功能组合层次
        4、勾画大致的设计框架
        5、构建关键情景场景剧本
        6、通过验证性的场景剧本来检查设计

    简化设计的四种策略:
        转移
        删除
            方法:功能融合、删除视觉混乱、删减文字、不要删减过多
        组织
        隐藏

        删除不必要的
        组织要提供的
        隐藏非核心的

    设计中的折衷
        个性化和配置
        本地化和国际化
        审美学与实用性
        
    软件设计的细节
        加快系统的响应时间
        减轻用户的记忆负担
        减少用户的等待感
            以某种形式的反馈让用户了解操作进行的进度和状态 
                如进度对话框
            以渐进方式向用户呈现处理结果 
                分成多个连续的部分来顺序地把结果提供给用户 
                先传输全局概括,再传输细节
            给用户分配任务,分散用户的注意力(安装软件) 
            减低用户的期望值(本次安装大约需要3分钟) 
        设计好的出错信息
            四个简单原则 
                使用清晰的语言来表达,而不要使用难懂的代码 
                使用的语言应当精炼准确,而不是空泛而模糊的 
                对用户解决问题提供建设性的帮助 
                出错信息应当友好,不要威胁或责备用户 

    交互设计模式
    模式在HCI中的应用还处于起步阶段 
    定位模式、结构模式、行为模式
    模式不是拿来即用的商品,每一次模式的运用都有所不同

    物理结构:
        三种不同的物理结构:
            多窗口
                当用户想要自定义屏幕布局的复杂应用时
                缺点:窗口太多,用户找不到想要的窗口
            单一窗口分页
                简单Web应用最适合
                优点:有效组织空间,是小型手持设备和手机的首选
            平铺窗口
                优点:可看到许多内容而不必管理窗口
                缺点:占据大量屏幕空间
        如何选择:用户是关键
        

    六、可视化设计

    窗口和菜单 
    对话框 
    常用控件 
    工具栏 
    屏幕复杂性度量 
    用户界面设计原理 

    1、窗口
        (1)状态:
            最大化
            最小化
            还原
                平铺(Tile)窗口:允许拖放操作
                重叠(Overlapping)窗口:有效利用屏幕空间
                层叠(Cascade )窗口:可视化组织各窗口
        (2)窗口界面类型
            多文档界面
                优点
                    节省系统资源
                    最小的可视集
                    协同工作区
                    多文档同时可视化
                缺点
                    菜单随活动文档窗口状态变化,导致不一致性
                    文档窗口必须在主窗口内部,减弱多文档显示优势
                    屏幕显示复杂:子窗口可能在父窗口中被最小化
                
            单文档界面
                优点
                    从用户角度出发,以文档为中心
                    界面的视觉复杂性小
                缺点
                    不能管理分散但相关的文档窗口
                    相关文档不能从相同类型的其他文档中分离
                    文档打开过多时,任务栏可能被占满
            标签文档界面
                窗口菜单:包含了当前打开窗口的列表
                
                优点:让用户看到哪些窗口是打开的
                缺点:不允许用户看到两个及以上的窗口内容
            
    2、菜单
        访问系统功能的工具,已经成为窗口环境的标准特征
        必不可少的组成部分
            菜单标题
            菜单选项
            最重要的特性:描述性、一致性
        注意事项:
            菜单应该按语义及任务结构来组织 
            合理组织菜单接口的结构与层次 
            菜单及菜单项的名字应符合日常命名习惯
            菜单选项列表即可以是有序的也可以是无序的 
            为菜单项提供多种的选择途径 
            增加菜单系统的可浏览性和可预期性
            对菜单选择和点取设定反馈标记 
            
    3、对话框
            典型的辅助性窗口
            
            分类:
                模态对话框、非模态对话框
            按用途分类:
                属性对话框、功能对话框、进度对话框(耗费的时间的进度)、公告对话框(阻塞型对话框(错误、警告、确认)、临时对话框)、标签对话框、扩展对话框、级联对话框
            
            
            消除错误信息
                用更健壮的软件取代错误消息
                    消除用户犯错误的可能性
                    为所有的数据输入使用有界控件
                为用户提供正面反馈
                    软件的负面反馈对用户而言是一种侮辱
                最后一招:改进错误消息框
                    保证始终有礼貌、具有启发性、还要助人为乐
                    澄清问题的范围
                    可选择的方法
                    默认情况程序会做什么
                    丢失了哪些信息
            消除确认对话框
                原则1:做,不要问
                    设计软件时,勇往直前给它确信的力量
                原则2:让所有操作都可以撤销
                    删除或覆盖文件时可将文件移动到暂时目录,待一段时间或物理删除后再删除
                原则3:提供非模态反馈帮助用户避免犯错误
                    如文档页面应显示真实可打印区域的向导,以避免打印文档超出可用的打印区域
                    
            
            对话框设计原则
                (1)把主要的交互操作放在主窗口中
                    对话框适合主交互流之外的功能
                (2)视觉上区分模态与非模态对话框
                    为非模态对话框提供一致的终止命令
                (3)不要用临时对话框作为错误信息框或确认信息框
                    保证用户能够阅读
                (4)不要堆叠标签
                
                
    4、控件
        (1)命令控件
        (2)选择控件(复选框、列表框、下拉列表)
        (3)显示控件
            滚动条
                适合用于窗口内容和文本导航器
                包含的信息
                    当前可见文档的百分比
                    总共有多少页
                    拖动滑块时,显示页数
                    拖动滑块时,显示每一页的第一个句子
                    跳到文档开始和末尾的按钮
        (4)输入控件(有界)

    5、工具栏
        工具栏上的图标与文本
        不同时显示,因为屏幕空间宝贵,
        工具提示
        
        
        图标的4种表示方法
            相似、示例、象征、任意

    6、屏幕复杂性度量
        布局复杂度
        
        
        布局统一度
            以“视觉上无序的排列有碍于可用性”这一原理为基础 
            
            
            
    7、用户界面设计原理
        结构原理
        简单性原理
        可见性原理
        反馈原理
            成功的反馈就是以能被对方注意到、读到和正确理解的方式来提供信息  
            
            好的出错信息 
                以一个能让用户马上知道问题何在的题头开始 
                有针对性和简洁地解释问题究竟是什么 
                建议解决问题的方法或操作步骤 
        
        宽容原理
        重用原理
        
    七、交互设计模型与理论
    预测模型
        GOMS
            KLM
        Fitts
    动态特性建模
        状态转移网
        三态模型
    语言模型
        BNF
    系统模型
        Z标记法


    计算用户完成任务的时间:KLM
    描述交互过程中系统状态的变化:动态转移网
    探讨任务的执行方法等:GOMS

    1、预测模型
        能够预测用户的执行情况,但不需要对用户做实际测试
        (1)GMOS
            采用“分而治之”的思想,将一个任务进行多层次的细化
            把每个操作的时间相加就可以得到一项任务的时间 

            ①Goal-目标
                用户要达到什么目的
            ②Operator-操作(Operator:是任务分析到最低层时的行为,是用户为了完成任务所必须执行的基本动作)
                任务执行的底层行为,不能分解
                    为达到目标而使用的认知过程和物理行为
                
                操作种类
                    外部操作
                        用户与系统之间可观测的物理操作
                    心理操作
                        用户内部行为
                        不可观测
                        如假想、猜测等
                操作时间是上下文无关的
                
            ③Method-方法 
                如何完成目标的过程,即对应目标的子目标序列和所需操作
                如移动鼠标,输入关键字,点击Go按钮
            ④Selection-选择规则
                确定当有多种方法时选择和方法
                GOMS认为方法的选择不是随机的
            
            
        
            
        
            
        (2)击键层次模型
            对用户执行情况进行量化预测
                仅涉及任务性能的一个方面:时间
            用途
                预测无错误情况下专家用户在下列输入前提下完成任务的时间
                便于比较不同系统
                确定何种方案能最有效地支持特定任务
            
        
            
        
            
        (3)Fitts定律

            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
        
    2、动态特性建模
        (1)状态转移网
            状态转移图
                最常用的状态转移网的形式
                有向图 
                图中的结点表示系统的各种状态
                图中的边表示状态之间可能的转移 
                
                
                
            
        (2)三态模型
            
            
            
            
            
            
            

            
    3、语言模型
            
            
            
    4、系统模型

    欢迎访问我的个人博客shawnluo.com  !

    展开全文
  • 深入理解Java虚拟机-垃圾回收器与内存分配策略

    万次阅读 多人点赞 2020-01-04 13:08:32
    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来。 文章目录概述对象已死吗引用计数可达性分析算法再谈引用生存还是死亡回收方法区垃圾收集算法标记-清除...
  • 人的感知:通过人体器官和组织进行人与外部世界的信息的交流和传递,人机交互主要通过人的感知来完成,主要包括视觉感知(80%)、听觉感知和触觉感知。 1.视觉(第二版 P10) (1)视觉是人类最重要的感觉通道,...
  • HR:说说你最大的优缺点?

    千次阅读 2019-06-25 17:31:00
    可以这样回答:每个人的优缺点不一,但是别人厉害的地方我都会学习,取长补短.毕竟每个人的优势不一样.我的优点在于我的沟通和学习能力.我刚刚工作的时候,其实还是比较腼腆,但是几年的公司,让我的沟通和学习能力...
  • 交互图 (顺序图、通信图、鲁棒图、定时图) •交互交互交互的概念 •一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为 消息 UML中的4种交互...
  • 1. 什么是语音交互? 语音交互(VUI)指的是人类与设备通过自然语音进行信息的传递。一次完整的语音交互需要经历ASR→NLP→Skill→TTS的流程: (1)ASR 用于将声学语音进行分析,并得到对应的文字或拼音信息。...
  • C#语言基础原理及优缺点

    万次阅读 2014-11-08 17:01:01
    C#是专门为.net程序框架而创造的语言。 .net框架有ms的.netFramework, Mono的.NetFramework。 net程序编译和执行过程中的流程图: 优点: 缺点: 总结:
  • 调度算法的介绍及优缺点

    万次阅读 多人点赞 2017-03-11 16:55:14
    调度算法是根据系统的资源分配策略所规定的资源分配算法。有的调度算法适用于作业调度,有的适用于进程调度,有的两者都适用。 先了解几个术语 到达时间、服务时间、开始时间 完成时间、等待时间 周转时间:完成...
  • 一、登录机制 粗略地分析, 登录机制主要分为登录验证、登录保持、登出三个部分。... 登录认保持是指客户端登录后, 服务器能够分辨出...容易想到的方案是,客户端登录成功后, 服务器为其分配sessionId, 客户端随后每
  • 设计模式总结——优缺点

    千次阅读 2018-03-27 11:09:38
    通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 外观模式中,一个子系统的外部与其内部的通信通过一个统一的...
  • 优缺点 开放散列(open hashing)/ 拉链(针对桶链结构) 封闭散列(closed hashing)/ 开放定址 通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个...
  • 两个空间整合的特点主要体现在两个方面,一是特征层面的交互,另一个是概率层面的集成。实验结果证明了GIL方法的有效性和可解释性。未来在伪黎曼流形和混合曲率方面,还有很大的空间可以继续深入研究。 参考文献 e ...
  • 多无人机(UAV)协同任务分配

    万次阅读 多人点赞 2019-03-22 13:33:53
    多无人机协同任务规划即是根据一组特定条件的约束,以实现某个准则函数的最优或次为目标,将某项作战任务分解成一些子任务并分配给多无人机系统中的各个无人机分别去完成的过程。 通常多无人机任务规划可以分成两...
  • 面试官:说说你最大的优缺点? (25题汇总版)

    万次阅读 多人点赞 2019-06-12 21:20:52
    原文地址: 面试官:说说你最大的优缺点? (25题汇总版) 首先这个问题是一个骨灰级问题,面试必问,很有必要认真探讨一下这个问题的答案。个人觉得可以从三方面来考虑回答(寻找新平台提升自己和表现出忠诚度和...
  • JVM:自动内存管理-垃圾收集器与内存分配策略

    千次阅读 多人点赞 2021-01-12 12:27:38
    1、引用计数、引用计数器的缺陷 2、可达性分析算法 3、再谈引用 三、垃圾收集算法 分代收集理论、标记-清除算法、标记-复制算法、Appel式回收、标记-整理算法 四、HotSpot的算法细节实现 五、经典垃圾收集器 六、...
  •  在 Linux 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了netlink,著名的内核包过滤框架Netfilter在与用户...
  • 1 AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果...
  • Java 垃圾收集器与内存分配策略

    千次阅读 2020-02-22 19:15:39
    垃圾收集器与内存分配策略     Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈...
  • Nginx玩 — 负载均衡

    千次阅读 2021-02-25 17:29:16
    首先我们需要弄清楚负载均衡的含义,负载均衡是通过算法实现平均分配的策略,将数据交互平均分担到集群中的各个服务中,从而提高整体对外服务的可用性,健壮性和性能等。 负载均衡是Nginx中较为重要的功能,常用于...
  • 操作系统处理器调度(CPU调度)相关知识的学习 批处理系统中采用的调度算法 交互式系统中采用的调度算法
  • 3.2 对象已死吗引用计数 给一个对象添加一个引用计数器,每当一个地方引用它时,计数器值加一;当引用失效时,计数器值就减一;当为0的时候对象就是不可能再被使用的。但是,在java虚拟机中没有
  • 3.哈希表相对于其他数据结构的优缺点 1)优点: 记录数据量很大的时候,处理记录的速度很快,平均操作时间是一个不太大的常数 2)缺点: ①好的哈希函数(good hash function)的计算成本有可能会显著高于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,755
精华内容 11,102
关键字:

交互分配法的特点