软件设计中安全性与易用性的考虑(一)
- 格式:docx
- 大小:13.99 KB
- 文档页数:2
如何进行软件设计评估在软件开发过程中,评估软件的设计是否合理、可行,并对其中存在的问题进行识别和解决,是非常必要的。
软件设计评估可以帮助开发人员更好地理解问题,并保证所设计的系统能够满足用户需求和预期。
那么,如何进行软件设计评估呢?一、确定评估的目标在进行软件设计评估之前,第一步就是要明确评估的目标。
要确保评估的目标清晰明确,以便更好地针对性地去评估。
评估目标可以涉及软件的易用性、安全性、效率、可扩展性等方面。
例如,要评估一款新的社交应用,可以考虑以下目标:1.应用的界面是否友好、易用?2.应用的数据传输是否安全?3.应用的响应速度是否够快?4.应用能否满足日益增长的用户规模?二、选择评估方法在确定了评估目标之后,需要选择合适的评估方法。
不同的评估目标需要不同的评估方法去评估。
软件设计评估方法包括可用性测试、功能测试、性能测试、安全测试等。
1.可用性测试:主要评估软件的界面是否符合用户的期望和习惯,是否容易被理解和使用。
评估方法可以包括问卷调查、用户观察、用户实验等。
2.功能测试:主要评估软件是否满足预期的功能需求,并发现功能缺陷、死链等问题。
评估方法可以包括黑盒测试、白盒测试、灰盒测试等。
3.性能测试:主要评估软件的性能,检测响应速度、负载能力等。
评估方法可以包括压力测试、稳定性测试、负载测试等。
4.安全测试:主要评估软件的安全性能,发现潜在的安全漏洞。
评估方法可以包括渗透测试、代码审查等。
三、执行评估和分析数据在选择了适当的评估方法之后,需要执行评估并分析数据。
在执行评估期间,需要使用标准的测试计划和测试用例,以便全面地评估软件设计的质量。
分析数据过程主要是对测试数据进行分析,并找出其中的问题和不足之处。
四、提出改善建议和优化方案根据评估结果,需要找出其中存在的问题和不足之处,并提出针对性的改善建议和优化方案。
这些建议和方案应该能够解决软件设计中的问题、提高软件品质或者增加软件的价值。
五、反馈结果最后一步,需要将评估结果反馈给程序员、测试人员、管理人员或客户等相关人员。
软件项目验收标准一、功能需求满足度1.软件必须实现合同、用户需求说明书或相关文档所约定的全部功能。
2.对各项功能进行全面测试,确保在实际使用场景中能正常运行。
3.软件提供的功能必须满足易用性要求,方便用户进行操作和管理。
二、性能指标达标1.软件响应时间、吞吐量、并发用户数等性能指标必须符合事先设定的要求。
2.通过负载测试和性能测试,确保软件在正常运行条件下具备良好的性能表现。
3.软件资源占用(如内存、CPU)必须合理,不影响系统整体运行效率。
三、安全性与稳定性1.软件必须具备足够的安全性,包括但不限于数据加密、权限控制、防攻击等能力。
2.软件在长时间运行和大量数据操作下应保持稳定,不出现崩溃、死循环等问题。
3.软件必须通过严格的安全漏洞测试和稳定性测试,确保无重大安全隐患。
四、用户界面友好性1.软件界面设计应符合用户操作习惯,布局合理,操作简便。
2.界面元素应清晰明了,文字说明准确,易于理解。
3.软件应提供适当的用户帮助和提示信息,方便用户快速上手。
五、文档完备性1.软件项目应提供完整的用户手册、技术文档、安装说明等。
2.文档内容应详细准确,能够指导用户正确安装、使用和维护软件。
3.文档更新应及时,反映软件最新功能和变更情况。
六、可维护性与扩展性1.软件结构应清晰,模块划分合理,便于后期维护和升级。
2.软件应提供必要的接口和工具,支持功能扩展和定制开发。
3.软件设计应考虑到未来技术的发展趋势,具有一定的前瞻性。
七、兼容性测试1.软件应兼容合同约定的操作系统、数据库、浏览器等环境。
2.在不同硬件平台和软件环境下进行兼容性测试,确保软件能够正常运行。
3.软件应能够处理不同分辨率和配置的设备,保证用户体验的一致性。
八、错误处理与恢复1.软件应能够识别并处理各类输入错误和异常情况。
2.对于可能导致的系统崩溃或数据丢失的错误,软件应提供有效的恢复机制。
3.软件应记录错误日志,方便后期分析和问题定位。
以上是软件项目验收标准的详细描述,涵盖了功能需求满足度、性能指标达标、安全性与稳定性、用户界面友好性、文档完备性、可维护性与扩展性、兼容性测试以及错误处理与恢复等方面。
软件设计中的易用性摘要:这篇文章介绍了软件设计中“易用性”的概念并解释了为什么它在软件设计项目中应该是一个重要的部分。
介绍应用“易用性”到软件开发中“易用性Usability(又被译为可用性)”这个词在软件开发中表现为这样一种方式,即把用户而非系统置于开发过程的中心。
这种被称为“以用户为中心进行设计”的概念,是指从设计过程的开端便把用户所关注的东西包含于其中,并规定用户应该是任何设计决定中最重要的因素。
这种“以用户为中心进行设计”的方式最显著的方面便是易用性测试。
在易用性测试中,用户对产品界面进行交互式的测试,并与开发、设计人员交流他们的观点和所关注的问题。
这篇文章讨论了“易用性”的概念及为什么它应该是软件设计项目中重要的组成部分。
第一部分解释了在软件开发中“易用性”意味着什么,它跟产品价值的其他衡量标准如何相关。
第二部分阐明了“易用性”的重要性及怎样把“以用户为中心进行设计”的原则包含于开发过程中等常见问题。
这篇文章的末尾提供了一份有关的书籍、文章、组织名单,这份名单可以帮助你更多地了解易用性及如何把之应用于你的项目。
这篇文章中的大部分原则都适用于零售软件(retail software)的开发和内部应用软件(internal software)的开发。
当你深入阅读时,请注意象“用户”和“产品”这样的词,思考它们和你自己的项目之间的关系,思考那些产品最终用户的需求。
定义易用性容易使用“易用性”是一个衡量标准,用来衡量使用一个产品完成指定任务的难易程度。
这跟“功能性(utility)”、“喜欢(likeability)”这些相关的概念是不一样的。
易用性Vs 功能性(Usability vs. Utility)决定一个产品能否被用户接纳的关键是它是否有用,即实际使用它能否完成设计人员原本期望用户去完成的目标。
“有用(Usefulness)”这个概念可以进一步分为“易用性(utility)”和“功能性(utility)”。
产品设计中的人因工程原则在产品设计中,考虑用户体验和人因工程原则是至关重要的。
人因工程原则是指以人为中心,设计出符合人体工程学和人类认知特点的产品。
本文将探讨几个在产品设计中应用的人因工程原则。
1. 人机界面设计人机界面设计是指产品与用户之间的互动界面。
良好的人机界面设计能提高用户的满意度和使用效率。
首先,界面应简洁明了,排版整齐美观,避免过多的复杂图形和信息。
其次,要考虑用户的点击和滑动手势,确保用户能够轻松地操作。
另外,字体的大小和颜色要符合人类视觉习惯,保证用户能够清楚地看到信息。
总之,人机界面设计应该简单易用,符合人们的认知习惯。
2. 力学和人体工程学力学和人体工程学是人因工程原则的重要组成部分。
产品的形状、大小、重量等要考虑到用户的手部力量和力学特征。
比如,手机的尺寸应该能够适应人们的手掌大小,并且重量不宜过重,以便单手操作。
此外,产品的各个按钮和开关应该切合人的手指大小和灵活度,让用户方便快捷地操作。
借助人体工程学的原理,产品设计可以更好地适应人体结构与功能。
3. 可视性和可读性产品设计要保证信息的可视性和可读性,确保用户能够清晰地看到所需的信息。
设计师可以采用合适的字号、字距和行距,使得文字易于阅读。
此外,对于图标和按钮,也要注意其图形的清晰度和易识别性。
颜色的选择也十分重要,要避免高反差和刺眼的颜色组合,以免给用户造成不适。
4. 安全性和易用性在产品设计中,安全性和易用性是不可忽视的因素。
设计师需要考虑用户在使用产品时的安全问题,并尽可能地避免潜在的危险。
例如,在电器设计中,存在触电风险,必须采取相应的安全措施,如接地线和防电击装置。
此外,产品的易用性也应该得到重视,避免用户在使用过程中出现困惑和错误操作。
5. 用户参与和反馈在产品设计中,给用户提供参与和反馈的机会可以提高产品的质量和用户满意度。
设计师可以通过用户调研、问卷调查和用户测试等方式获取用户的需求和反馈意见。
这样可以更好地理解用户的真实需求,并在产品设计阶段作出相应的改进和调整。
软件设计的目标_软件工程_在当今数字化的时代,软件无处不在,从我们日常使用的手机应用到复杂的企业级系统,软件已经成为我们生活和工作中不可或缺的一部分。
而软件设计作为软件工程中的关键环节,其目标的明确和实现对于软件的质量、可维护性、可扩展性以及用户满意度都有着至关重要的影响。
软件设计的首要目标是满足用户需求。
用户是软件的最终使用者,他们对软件的功能、性能、易用性等方面有着具体的期望。
因此,软件设计师必须深入了解用户的业务流程、工作习惯和需求痛点,通过与用户的沟通、调研和分析,将这些需求转化为具体的软件功能和特性。
例如,一个在线购物软件,用户希望能够轻松浏览商品、快速搜索、安全支付以及及时跟踪订单状态。
软件设计就需要围绕这些需求,提供简洁直观的界面设计、高效的搜索算法、安全的支付通道以及实时的订单跟踪系统。
软件的可靠性和稳定性也是设计的重要目标。
一个可靠的软件应该能够在各种预期和非预期的情况下正常运行,不会出现频繁的崩溃、错误或数据丢失。
这就要求在设计过程中充分考虑各种异常情况,进行错误处理和恢复机制的设计。
例如,在网络连接不稳定的情况下,软件应该能够缓存数据并在网络恢复后自动同步,而不是直接报错或丢失用户的操作数据。
同时,软件还需要经过严格的测试,包括单元测试、集成测试、系统测试等,以确保其在各种条件下的可靠性。
可维护性和可扩展性是软件设计需要长期考虑的目标。
随着业务的发展和用户需求的变化,软件需要不断进行功能的更新和扩展。
如果软件的设计结构不合理,代码混乱,那么后续的维护和扩展将会变得异常困难,成本也会大幅增加。
因此,在设计阶段就应该采用良好的架构模式,如分层架构、微服务架构等,将软件的不同功能模块进行清晰的划分和封装,使得代码易于理解、修改和扩展。
同时,还应该遵循代码规范和设计原则,提高代码的可读性和可复用性。
性能优化是软件设计中不可忽视的目标。
在处理大量数据或高并发请求时,软件的性能表现直接影响用户体验。
软件设计师知识点在当今数字化的时代,软件设计成为了至关重要的领域。
作为软件设计师,需要掌握一系列的知识和技能,以确保能够开发出高质量、高效能的软件产品。
接下来,让我们一起深入了解一些关键的软件设计师知识点。
首先,数据结构和算法是软件设计师的基本功。
数据结构就像是存放数据的“容器”,不同的结构有不同的特点和适用场景。
比如数组,它可以快速地随机访问元素,但插入和删除操作可能比较耗时;链表则在插入和删除方面表现出色,但随机访问就相对较慢。
算法则是解决问题的步骤和方法,比如排序算法,像冒泡排序、快速排序等,它们各有优劣,需要根据具体情况选择。
操作系统的知识也不可或缺。
了解进程和线程的概念非常重要。
进程是程序的一次执行过程,而线程是进程中的执行单元。
在多线程编程中,要处理好线程同步和互斥的问题,以避免出现数据不一致或者死锁等情况。
还有内存管理,包括虚拟内存、分页和分段等技术,这有助于提高内存的使用效率和程序的性能。
数据库设计也是软件设计中的重要一环。
关系型数据库如MySQL、Oracle 等,需要掌握表结构的设计、索引的使用、SQL 语句的编写等。
要考虑数据的完整性、一致性和冗余度,设计出合理的数据库架构,以满足系统的存储和查询需求。
面向对象编程是现代软件设计的主流思想。
理解类、对象、封装、继承和多态这些概念是基础。
通过封装,将数据和操作数据的方法封装在一个类中,提高代码的安全性和可维护性。
继承可以实现代码的复用,而多态则增加了程序的灵活性。
软件设计模式是前人总结的一些优秀的设计经验。
例如单例模式,确保一个类只有一个实例存在;工厂模式,用于创建对象,将对象的创建和使用分离;观察者模式,实现对象之间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。
在软件开发过程中,软件测试也是不能忽视的环节。
软件设计师需要了解不同类型的测试,如单元测试、集成测试、系统测试和验收测试等。
知道如何编写测试用例,以及如何评估测试的覆盖度,以确保软件的质量。
软件设计流程与注意事项软件设计是一项由各种因素所组成的复杂过程,在此过程中很容易出现失败或错误,而这也会导致整个软件项目失败。
因此,在设计软件的过程中需要严格遵守软件设计流程,并且注意各种细节,以确保软件系统最终能够获得良好的绩效。
软件设计流程1.需求调研:用户需求是软件设计的第一步,通过深入了解用户的需求及喜好,可以帮助设计者更好地理解他们的目标和期望。
2.确定需求:确定用户需求后,设计者需要进一步阐明和细化这些需求,以确保各方都对软件的目标和功能有清楚的描述和理解。
3.设计原型:软件原型是理念和设计思路的模拟版本。
它能够使设想从概念变为具体的实现,并帮助设计人员了解其快速发展设计的潜在问题。
4.编写代码:在确定和测试有关部分的需求之后,设计者可以开始编写代码。
在此阶段,需要注意代码的可维护性和可扩展性,同时确保系统可以高效且正确地执行。
5.测试与修正:在编写完代码后,需要进行测试以确保软件系统的稳定性和可靠性。
如果出现问题,需要及时修复和调整以优化系统功能。
注意事项1.应避免以下错误:代码冗余、缺乏文档、不考虑设备兼容性、在运行时使用硬编码、在代码中使用注释的数量过多等。
2.交互设计是关键:好的交互设计方案意味着提高软件系统的易用性、可操作性,从而使用户更加信赖并使用它。
交互设计应该始终考虑用户的期望,以确保系统的易用性和用户体验。
3.测试是至关重要的:通过测试和修正,软件设计人员可以发现和解决代码中的错误和问题。
这样,设计者能够更好地了解软件系统的潜在风险和缺陷,并优化系统功能。
4.应考虑安全性:应考虑系统的安全性,例如,使用密码保护敏感数据、防止SQL注入攻击、避免常见安全漏洞等。
总之,只有严格遵守软件设计流程,并密切关注各种细节和注意事项,才能够开发出高质量的软件系统。
要记住,好的软件设计方案不仅意味着可靠性和高效性,也意味着使客户满意并增加市场份额。
系统设计的基本原则和方法系统设计是一个非常重要的领域,它涉及到软件、硬件、网络、数据库、人机交互等多个方面。
一般来说,系统设计需要遵循一些基本原则,同时采用一些方法来实现设计目标。
本文将探讨系统设计的基本原则和方法。
一、系统设计的基本原则1. 安全性原则:系统设计应保证系统的安全性,防止非法入侵、信息泄漏、系统崩溃等问题的发生。
安全性原则是系统设计的基本原则之一,必须得到严格的执行。
2. 可靠性原则:系统设计应保证系统的可靠性,要求系统在各种情况下都能正常运行,不会出现故障和错误。
这个原则的核心在于对系统的整体性能进行评估,其中包括对系统组成部分的单独评估和整个系统的运行时评估。
3. 可维护性原则:系统设计应保证系统的可维护性,将用户的需求与系统的实际情况进行结合,同时方便系统的维护与升级。
这个原则的核心在于对系统的构建架构进行考虑,并在设计阶段将维护性需要考虑进去。
4. 易用性原则:系统设计应保证系统的易用性,使用户能够方便快捷地获取所需的信息并执行想要的操作,以确保用户对系统的满意程度。
这个原则的核心在于对用户的需求进行理解,了解用户需要什么,所需信息如何掌握,以及如何在系统中进行引导。
二、系统设计的基本方法1. 需求分析:需求分析是系统设计的第一步,系统设计师需要收集客户需求和系统设计要求,将其转换为系统功能的需求,进而为系统设计提供明确的目标。
在需求分析阶段,需要贯彻客户至上的原则,同时结合实际情况进行合理的权衡。
2. 架构设计:架构设计是系统设计的关键环节,需要考虑到系统的整体架构、用户的功能需求、系统的技术能力以及用户界面等方面。
在架构设计阶段,需要将需求分析所得到的信息综合考虑,对系统设计进行初步的方案设计。
3. 设计评估:设计评估是系统设计的验证环节,通过评估进行系统的设计验证,保证系统的各项设计都能够达到设计要求和需求。
评估方法通常采用模拟、试验等方法,对系统在特定情景下的运行情况进行测试,以评估系统设计的有效性。
如何进行软件架构设计和技术选型软件架构设计和技术选型是软件开发流程中非常重要的环节,它关乎整个项目的成功与否。
本文将介绍如何进行软件架构设计和技术选型,并提供一些实用的建议。
一、软件架构设计软件架构是指对整个软件系统进行组织、划分和布局,确定各个模块之间的关系与交互方式。
一个好的软件架构设计可以提高系统的可维护性、可扩展性和性能等方面的指标。
1.深入了解业务需求和用户需求:在进行软件架构设计之前,首先要对业务需求和用户需求进行深入了解,明确软件系统要解决的问题和用户的期望。
只有清楚了解需求,才能设计出符合用户期望的软件架构。
2.选择合适的架构风格:根据业务需求和系统规模,选择合适的架构风格。
常见的架构风格有分层架构、微服务架构、面向服务架构等。
根据实际情况选择最适合的架构风格,可以提高系统的可维护性和可扩展性。
3.划分模块和定义接口:将整个软件系统划分为多个模块,为每个模块定义清晰的接口。
模块之间的接口设计要尽量简单、清晰,减少模块之间的依赖关系,提高系统的灵活性。
4.考虑性能和安全性:在软件架构设计中要考虑系统的性能和安全性。
合理设计系统的数据流、并发处理和缓存策略,可以提高系统的性能。
同时,要考虑系统的安全性,采取相应的安全措施,防止潜在的安全威胁。
5.迭代优化和演进:软件架构设计并非一蹴而就,要进行迭代优化和不断演进。
随着业务的发展和用户需求的变化,软件架构也需要相应地调整和优化,以保证系统始终能够适应新需求。
二、技术选型技术选型是指选择适合项目需求的技术框架、工具和语言等。
合理的技术选型可以提高开发效率、降低开发成本。
1.明确项目需求:在进行技术选型之前,要明确项目的需求和目标。
确定项目的规模、开发周期、技术难度等因素,以便选择合适的技术栈。
2.调研和评估:在进行技术选型时,要进行充分的调研和评估。
查阅相关文档、案例和用户评价,了解各种技术的特点和优劣势,选择最适合的技术。
3.综合考虑因素:在进行技术选型时,需综合考虑多方面因素,如技术的成熟度、社区支持度、易用性、性能、扩展性、安全性等。
软件测试中的可用性与易用性在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。
从手机上的各种应用程序,到企业使用的复杂业务系统,软件的质量和用户体验直接影响着我们的效率和满意度。
而在评估软件质量的众多指标中,可用性和易用性是两个至关重要的方面。
可用性,简单来说,就是指软件是否能够正常工作,是否能够满足用户的基本需求。
一个可用的软件应该是稳定的、可靠的,不会频繁出现崩溃、错误或数据丢失等问题。
想象一下,你正在使用一款在线购物软件,当你即将完成支付时,软件突然死机,所有的操作都前功尽弃,这会是多么糟糕的体验。
可用性还包括软件的性能,例如响应速度。
如果一个网页加载需要很长时间,用户很可能会失去耐心并转向其他竞争对手的产品。
易用性则更侧重于用户在使用软件过程中的感受,即软件是否易于学习、易于操作和易于记忆。
一个易用的软件应该具有清晰的界面布局、简洁明了的操作流程和直观的交互方式。
以一款新的智能手机为例,如果用户需要花费大量时间去研究如何设置闹钟、发送短信等基本功能,那么这款手机的软件在易用性方面就存在很大的问题。
在软件测试中,如何评估可用性和易用性呢?对于可用性的测试,通常会包括压力测试、负载测试和稳定性测试等。
压力测试是通过模拟大量用户同时访问软件,来检验软件在高并发情况下的性能表现;负载测试则是逐步增加软件的负载,观察其在不同负载水平下的响应时间和资源利用率;稳定性测试则是长时间运行软件,以发现可能存在的内存泄漏、死锁等问题。
易用性的测试方法则更加多样化。
可以通过用户观察,直接观察用户在使用软件时的行为和反应,了解他们遇到的问题和困惑;也可以进行用户调查,收集用户对软件易用性的主观评价和建议;还可以进行专家评估,邀请具有相关经验的专家对软件的界面设计、操作流程等进行评估。
然而,在实际的软件测试工作中,要实现良好的可用性和易用性并非易事。
开发团队可能会面临时间和成本的压力,导致在软件的设计和开发过程中忽略了用户体验。
软件设计中安全性与易用性的考虑(一)
计算机安全界曾经有个笑话:“实现计算机系统安全很容易,把计算机的电源关掉,锁在保险箱里,然后把钥匙扔掉。
”实际上,这个笑话一定程度上揭示了计算机的安全性与易用性之间的关系。
一、易用性和安全性之间的关系
在计算机的安全性和易用性设计之间存在权衡,一台不设口令的计算机非常方便使用,但是不安全;但是如果一台计算机每5分钟要求你做一次身份确认,输入口令甚至做血样检验,这样的计算机是安全的,但是不会有人愿意使用。
一般说来,安全软件产品的操作要比其他软件产品的操作困难,因为实现机制复杂了,需要配置的参数也多了。
安全性和易用性在设计上有共同点:
(1)都需要从软件的整体考虑;
(2)需要对系统结构、开发团队和市场份额等方面统筹考虑;
(3)都要在系统设计的开始阶段考虑,在系统开发临近结束时无法临时增加;但是由于易用性和安全性是不同的技术,所以建立一个既有安全性又有易用性的系统比较昂贵。
(4)易用性方面出现问题可能会妨碍安全性的效果。
目前安全性和易用性之间的接口成为计算机安全界研究的对象,被称作人机交互和安全性(HCI-SEC)。
在2003年ACM人机交互大会召开了HCI-SEC研讨会,随后HCI-SEC的有关问题逐步提了出来。
2004年计算机界把易用安全性列为信息安全研究者的“重大挑战”,有下面两个问题:问题1口令问题。
每个人都面临口令问题,安全的口令都是难猜测的,但是难猜测的口令都是难记忆的。
同时口令策略一般要求用户口令是唯一的并且要及时更新,如果一个人的帐户比较多,很难想象一个人可以完全凭借记忆牢记十多个不同的口令,并且不断地分别更新。
问题2身份确认问题。
当认识到传统的口令字不够安全后,用户需要新的身份确认手段。
研究表明,人记忆图像的能力比字符强,因此图像口令字被作为字符口令字的替代方案,研究还发现,用户对图像口令字的选择与种族和性别高度关联。
生物测量和硬件令牌也属于用户身份确认的方法,但是现在还缺乏对这些身份确认手段的统一评价和比较方法。
二、易用安全性的实现途径
HCI-SEC的研究课题之一就是如何在某些特定的应用系统中实现易用的安全性,主要有三种类型的方法:
(1)构造不需要用户干预就可以执行相关的安全和私有功能的系统。
这种方法的问题是当用户不了解某些方面的安全问题时,他们的操作可能会无意中减弱到位的安全保护。
(2)开发一种安全和私有相关的隐喻模型,让用户自发地正确使用安全和私有软件。
目前的钥匙和锁的隐喻模型显然是不完全和不准确的,但是目前也没有出现更具有广泛接受性的其他隐喻模型。
(3)教给用户有效使用私有和安全工具所需要的知识。
但是以什么形式把这些信息教给用户,让用户少花时间去学习掌握,还是没有解决好的问题。
很容易想到利用一种基于上述方法混合的方法,但实际上这更困难,因为上述方法的思路和实现根本上就是不同的。
现在有人开始用HCI-SEC的方法对安全系统进行评估,测试结果发现用户在安全决策理解方面存在障碍,从而导致安全配置失误遭受危险,用户往往为了使用方便,而关闭某些安全防护。
JeromeSaltzer和MichaelSchroeder于1975年就在讨论易用性是否是安全系统必要的成分,他们提出了信息保护的8条原则1],最后一条就是对信息保护系统的“心理可接受性”,但是有些安全系统对这些思想不够重视。
此后30年来,HCI技术也有了很大的发展,在技术市场上,开始有人应用HCI设计和评价技术对安全系统进行评价,他们发现最终用户在理解所面临的安全设计和决定方面非常困难,所以非常容易出现误配置的情况,而导致安全风险。
很多时候用户为了工作方便停止或者忽略安全功能,例如取消口
令或者共享口令,都会把系统置于高安全风险之下。
很多用户习惯将系统安全决策的权利交给系统管理员负责,但是当用户离开自己的工作场所,脱离了所在机构的防火墙保护,在家里或者在路上使用移动设备的时候,就必须根据自己的知识和经验做出安全决定,而不能依靠机构的安全管理员了。
因此,需要开发把安全决策权放在用户手中的技术。
1983年,DonNorman指出许多引起数据损失的错误是由于糟糕的界面设计,虽然相关的操作需要用户确认,但是有时候用户确认只是出于习惯的机械点击,因此把系统操作动作设计成可见的和可以取消的并不能完全解决问题。
这里有一个说明问题的例子。
在美国PARC研究中心建立无线局域网时,采用了基于PKI的方案,需要给200个用户X.509证书,使用802.1x传输层安全认证协议EAP-TLS进行认证。
统计表明许多人觉得PKI不容易理解,技术复杂和不易用。
由于PARC中心对于PKI技术熟悉,他们认为有信心成功克服使用困难,但是他们错了。
在无线局域网的第一个版本里,每个用户都必须从内部认证中心申请和安装一个X.509证书,然后配置操作系统提供的802.1x客户软件来使用EAP-TLS认证协议。
为了提交证书申请,用户必须决定和提供无线网卡的MAC地址和安装内部认证中心的CA根证书。
在建立系统过程中,技术管理团队的大量时间花费在管理CA软件和钥匙上。
利用MicrosoftWindowsXP提供的GUI802.1x的无线配置软件,用户需要总共完成38步才能完成注册过程,每一步都强迫用户做出决定或者采取行动。
为了帮助用户完成这个过程,系统管理员编写了一个详细的注册指南,但是用户很容易脱离这个指南自行其事,最后用户甚至不知道对计算机做了什么操作,如果出错,他们就会不知所措。
尽管PKI提供了安全保护,但是降低了用户配置自己机器的能力。
三、易用安全软件的设计考虑
安全敏感的应用软件的设计要求在易用性和安全性之间是平衡的,如果修改现有的系统设计,提高易用性就可能降低安全性,而增强安全性,就有可能让软件难以使用或者难以理解。
在设计一个软件系统时,安全性和易用性两者都不能忽略,这两方面的缺陷都可能导致产品无法使用。
1、安全性和易用性统筹考虑
在软件产品的设计过程中要注意将安全性和易用性统筹考虑:
(1)安全和易用的元素不能撒胡椒面,应该把这两个元素合并在一起,贯穿整个设计过程。
无论是安全性还是易用性都不能作为附加设计的内容。
(2)设计者要牢记安全性和易用性都是用户需求的一个方面,最后的取舍还是要根据用户的需要,系统的安全状态要和用户头脑中的模型相符合,并且两者都是随时间变化的。