经过不断的摸索和调整,渐渐总结了一些对软件设计的标准,提供给大家参考!
(一)易用性设计
(1) 系统需针对常用操作提供快捷键。
(2) 用户功能菜单简单易懂,逻辑清晰,菜单一般不超过三级。
(3) 在操作界面上给出使用说明。系统操作界面上对菜单、选项、输入框等作出相关使用说明,用户初次使用时,参考界面上的使用说明可较容易的指导使用系统。
(4) 错误操作及时显示提示信息,且提示信息易于理解。
(5) 首页提供技术支持热线电话。
(6) 首页提供常见问题解答。
(7) 系统提供“关于”说明,即对本系统的系统名称、版本号、版本上线日期等基本信息进行说明。
(8) 系统登录不成功或不允许登录时给出明确提示。
(9) 用户打开系统登录界面后,鼠标立刻定位到用户名输入框,且应记录最近登录的用户名。
(10) 避免窗口缩放对系统的影响,特别是B/S结构的系统,窗口缩放或者系统分辨率改变后,系统控件及按钮仍然可以方便的显示和使用。
(11) 破坏性功能按钮的位置与常用的其他功能按钮分离,减少操作失误。
(12) 系统在用户进行不可逆转的操作前提醒用户,告知此操作将引起的结果。例如用户的操作(如删除)将会引发严重的后果或者操作无法逆转,系统提示用户,并且等待用户确认,等待确认的时候焦点停留在取消按钮上,防止用户连续敲回车产生误操作。
(13) 系统提供方法将常用格式(如Excel)的数据导入系统或者从系统中导出数据为常用格式(如Excel,PDF),为进一步分析或处理业务数据提供便捷。
(二)应用安全设计
应用系统需要利用身份认证、数据加密、IP控制、系统日志、权限控制等方式实现应用安全防护。主要设计如下:
1.安全认证与鉴权机制
(1) 数据库中将系统用户身份标识作为主键,防止身份标识重复,实现系统用户身份标识具有唯一性。
(2) 密码强度:对用户设置密码进行检测,输入至少6位字符,其中要包含大写字母、小写字母、数字和特殊字符中的至少两种。
(3) 密码修改周期:系统每隔三个月提示用户进行密码修改。
(4) 有条件的情况下,PC端采用CA、移动介质扫描二维码的安全认证机制。
(5) 当系统用户登录连续失败3次以上,则限制用户1小时内无法登录,防止非法登录。
(6) 当用户连续半个小时对系统无任何操作时,系统自动退出系统。
(7) 对错误输入提供预警提示。对联系登录失败3次以上的用户告知其等待间隔。
(8) 当用户退出和超时时,清除用户的认证信息。
2.访问控制
(1) 通过网管软件的访问策略,限制异常IP访问。
(2) 系统提供基于个人、单位、部门、群组、角色、岗位、级别的多维度权限控制。系统提供子系统、菜单、功能各层级的管理,可以针对以上属性进行灵活的权限设定,实现用户使用功能的控制,以确保信息安全的可定义性和可执行性。 在系统登录阶段、关键流程审核步骤、统一用户管理、权限管理等,将集成CA数字证书开发套件,验证并提取用户CA身份信息,实现用户利用CA证书进行安全身份验证。
(3) 将系统管理员、安全员和审计员的权限分离,系统管理员、安全管理员等不能对审计日志进行管理,安全审计员不能管理审计功能的开启、关闭、删除等重要事件的审计日志等。
(4) 系统用户需登录系统后,根据各自权限查询、操作权限范围内的事务、文件等。
3.安全审计
(1) 记录所有对保护数据的访问信息,审计所有用户对关键数据的访问行为,防止外部黑客入侵访问和内部人员非法获取敏感信息。
(2) 审计和查询所有被保护数据的变更记录,防止外部和内部人员非法篡改重要的业务数据。
(3) 用户直接发出的所有命令;所有的识别和认证尝试;
(4) 统计和查询所有用户的登录成功记录和登录失败尝试记录,记录所有用户的访问操作和用户配置信息及其权限变更情况,用于事故和故障的追踪和诊断。
(5) 对审计日志的查询,只能由获得安全审计证书的安全审计员才可进行。在系统界面,不通过修改、删除操作。
(6) 审计记录信息包括事件发生的日期与时间、触发事件的主体与客体、事件的类型、事件成功或失败、身份鉴别事件中请求的来源(如末端标识符)、事件的结果等内容。
(7) 每天定期备份安全审计的数据,备份在分部署存储中,避免日志丢失。
4.剩余信息保护
对用户的鉴别信息所在的存储空间,被释放或再分配给其他用户前得到完全清除;
确保系统内的文件、目录和数据库记录等资源所在的存储空间,被释放或重新分配给其他用户前得到完全清除。
5.软件容错
(1) 系统对所有的输入字段进行数据类型与长度验证,并进行有效提示。
(2) 信息编辑、文档编辑、流程审批等环节提供系统用户可撤销操作。
(3) 系统采取分布式集群部署,当单台服务出现故障,不会影响整个系统使用。
(4) 部署服务器监控系统,自动监控服务器、应用、进程的运行状态,可通过邮件报警。
(5) 利用MQ、Redis的持久化技术,对消息队列信息、缓存信息进行保存。解决系统发生故障时,在途重要数据无法恢复的风险。
6.资源控制
(1)对应用系统的最大并发会话连接数进行限制。
(2)禁止同一用户账号在同一时间内并发登录。
7.代码安全
严格按照应用程序代码编写规范进行代码编写,技术负责人每周至少一次代码走查。
(三)扩展性设计
要充分考虑系统拓展能力,未来可通过灵活的方式按需将相关系统接入。必须充分考虑以简便的方法、较低的投资,实现软件系统的扩展。需支持硬件设备以及部署方式的扩展。
可以采用基于SOA(面向服务的体系结构)的低耦合、分布式的开放性基础架构以及基于JAVA技术和RIA技术的B/S架构,保证了系统具有强大的可扩展性,在系统容量、通信能力、处理能力等方面具有强大的可扩充性,可以方便地进行产品升级、换代及功能扩充。而且具有较高的综合性能价格比。
当用户需要增加新系统或需要更换旧系统时,新的系统只需遵循定义的接口和数据封装标准,即可实现新系统的介入,而不会对现有系统和业务产生任何影响。
系统架构,采用低耦合全模块化实现,并且采用服务驱动的机制(即面向服务构架),因此极其易于扩展。在增加新系统时,只需定义新增加服务,客户端只需实现符合XML格式封装的接口,即可实现功能的扩展;已有的功能模块如需更新或替换,只需停止该模块的功能,启动新的功能模块即可,不会对现有系统和业务产生任何冲击。
(四)兼容性设计
系统客户端能够支持目前通用的各类操作系统环境,包括win7、win8、win10及以上等主流操作系统。
对浏览器的使用要求能够支持目前各类主流浏览器(例如支持IE8、IE9、IE10、IE11、Firefox、Chrome、Safari和360等主流浏览器。
(一)易用性设计
(1) 系统需针对常用操作提供快捷键。
(2) 用户功能菜单简单易懂,逻辑清晰,菜单一般不超过三级。
(3) 在操作界面上给出使用说明。系统操作界面上对菜单、选项、输入框等作出相关使用说明,用户初次使用时,参考界面上的使用说明可较容易的指导使用系统。
(4) 错误操作及时显示提示信息,且提示信息易于理解。
(5) 首页提供技术支持热线电话。
(6) 首页提供常见问题解答。
(7) 系统提供“关于”说明,即对本系统的系统名称、版本号、版本上线日期等基本信息进行说明。
(8) 系统登录不成功或不允许登录时给出明确提示。
(9) 用户打开系统登录界面后,鼠标立刻定位到用户名输入框,且应记录最近登录的用户名。
(10) 避免窗口缩放对系统的影响,特别是B/S结构的系统,窗口缩放或者系统分辨率改变后,系统控件及按钮仍然可以方便的显示和使用。
(11) 破坏性功能按钮的位置与常用的其他功能按钮分离,减少操作失误。
(12) 系统在用户进行不可逆转的操作前提醒用户,告知此操作将引起的结果。例如用户的操作(如删除)将会引发严重的后果或者操作无法逆转,系统提示用户,并且等待用户确认,等待确认的时候焦点停留在取消按钮上,防止用户连续敲回车产生误操作。
(13) 系统提供方法将常用格式(如Excel)的数据导入系统或者从系统中导出数据为常用格式(如Excel,PDF),为进一步分析或处理业务数据提供便捷。
(二)应用安全设计
应用系统需要利用身份认证、数据加密、IP控制、系统日志、权限控制等方式实现应用安全防护。主要设计如下:
1.安全认证与鉴权机制
(1) 数据库中将系统用户身份标识作为主键,防止身份标识重复,实现系统用户身份标识具有唯一性。
(2) 密码强度:对用户设置密码进行检测,输入至少6位字符,其中要包含大写字母、小写字母、数字和特殊字符中的至少两种。
(3) 密码修改周期:系统每隔三个月提示用户进行密码修改。
(4) 有条件的情况下,PC端采用CA、移动介质扫描二维码的安全认证机制。
(5) 当系统用户登录连续失败3次以上,则限制用户1小时内无法登录,防止非法登录。
(6) 当用户连续半个小时对系统无任何操作时,系统自动退出系统。
(7) 对错误输入提供预警提示。对联系登录失败3次以上的用户告知其等待间隔。
(8) 当用户退出和超时时,清除用户的认证信息。
2.访问控制
(1) 通过网管软件的访问策略,限制异常IP访问。
(2) 系统提供基于个人、单位、部门、群组、角色、岗位、级别的多维度权限控制。系统提供子系统、菜单、功能各层级的管理,可以针对以上属性进行灵活的权限设定,实现用户使用功能的控制,以确保信息安全的可定义性和可执行性。 在系统登录阶段、关键流程审核步骤、统一用户管理、权限管理等,将集成CA数字证书开发套件,验证并提取用户CA身份信息,实现用户利用CA证书进行安全身份验证。
(3) 将系统管理员、安全员和审计员的权限分离,系统管理员、安全管理员等不能对审计日志进行管理,安全审计员不能管理审计功能的开启、关闭、删除等重要事件的审计日志等。
(4) 系统用户需登录系统后,根据各自权限查询、操作权限范围内的事务、文件等。
3.安全审计
(1) 记录所有对保护数据的访问信息,审计所有用户对关键数据的访问行为,防止外部黑客入侵访问和内部人员非法获取敏感信息。
(2) 审计和查询所有被保护数据的变更记录,防止外部和内部人员非法篡改重要的业务数据。
(3) 用户直接发出的所有命令;所有的识别和认证尝试;
(4) 统计和查询所有用户的登录成功记录和登录失败尝试记录,记录所有用户的访问操作和用户配置信息及其权限变更情况,用于事故和故障的追踪和诊断。
(5) 对审计日志的查询,只能由获得安全审计证书的安全审计员才可进行。在系统界面,不通过修改、删除操作。
(6) 审计记录信息包括事件发生的日期与时间、触发事件的主体与客体、事件的类型、事件成功或失败、身份鉴别事件中请求的来源(如末端标识符)、事件的结果等内容。
(7) 每天定期备份安全审计的数据,备份在分部署存储中,避免日志丢失。
4.剩余信息保护
对用户的鉴别信息所在的存储空间,被释放或再分配给其他用户前得到完全清除;
确保系统内的文件、目录和数据库记录等资源所在的存储空间,被释放或重新分配给其他用户前得到完全清除。
5.软件容错
(1) 系统对所有的输入字段进行数据类型与长度验证,并进行有效提示。
(2) 信息编辑、文档编辑、流程审批等环节提供系统用户可撤销操作。
(3) 系统采取分布式集群部署,当单台服务出现故障,不会影响整个系统使用。
(4) 部署服务器监控系统,自动监控服务器、应用、进程的运行状态,可通过邮件报警。
(5) 利用MQ、Redis的持久化技术,对消息队列信息、缓存信息进行保存。解决系统发生故障时,在途重要数据无法恢复的风险。
6.资源控制
(1)对应用系统的最大并发会话连接数进行限制。
(2)禁止同一用户账号在同一时间内并发登录。
7.代码安全
严格按照应用程序代码编写规范进行代码编写,技术负责人每周至少一次代码走查。
(三)扩展性设计
要充分考虑系统拓展能力,未来可通过灵活的方式按需将相关系统接入。必须充分考虑以简便的方法、较低的投资,实现软件系统的扩展。需支持硬件设备以及部署方式的扩展。
可以采用基于SOA(面向服务的体系结构)的低耦合、分布式的开放性基础架构以及基于JAVA技术和RIA技术的B/S架构,保证了系统具有强大的可扩展性,在系统容量、通信能力、处理能力等方面具有强大的可扩充性,可以方便地进行产品升级、换代及功能扩充。而且具有较高的综合性能价格比。
当用户需要增加新系统或需要更换旧系统时,新的系统只需遵循定义的接口和数据封装标准,即可实现新系统的介入,而不会对现有系统和业务产生任何影响。
系统架构,采用低耦合全模块化实现,并且采用服务驱动的机制(即面向服务构架),因此极其易于扩展。在增加新系统时,只需定义新增加服务,客户端只需实现符合XML格式封装的接口,即可实现功能的扩展;已有的功能模块如需更新或替换,只需停止该模块的功能,启动新的功能模块即可,不会对现有系统和业务产生任何冲击。
(四)兼容性设计
系统客户端能够支持目前通用的各类操作系统环境,包括win7、win8、win10及以上等主流操作系统。
对浏览器的使用要求能够支持目前各类主流浏览器(例如支持IE8、IE9、IE10、IE11、Firefox、Chrome、Safari和360等主流浏览器。