7 * 24
多渠道服务支持
1.1.航天通用软件设计
1.1.1.设计原则
设计的目的,一般而言是产品为人们所能用、易用,所以设计需要以人为中心,为人设计方便舒适的产品。易用性是产品设计的基础。而良好的设计都是艺术美、技术上可靠、功能完备、性价比好兼易用人性化等,各因素之间的平衡与和谐。本系统在易用性设计中遵循以下几个原则。
(1)系统可见性原则
用户在网页上的任何操作,不论是单击、滚动还是按下键盘,页面应即时给出反馈。最常见的就是按钮状态。在计算机上浏览网页时常常会发现某些地方在光标移过去时颜色会有所改变,提示你这里可以被点击。
(2)匹配系统与真实世界(环境贴切)
网页的一切表现和表述,应该尽可能贴近用户所在的环境(年龄、学历、文化、时代背景),而不要使用其他不明白的用语。
(3)撤销重做原则
为了避免用户的误用和误击,网页应提供撤销和重做功能。比如填写表单、注册用户、浏览目录等,要允许用户撤销操作,如果没有提供后退或者返回的选项,用户就被逼着做他们不想做的动作,或者他们会干脆关掉浏览器来图个清净。
(4)一致性原则
同一用语、功能、操作保持一致。营造一致性的品牌氛围,一致的logo,一致的按钮风格,输入框风格,搜索的位置,一致的列表符号等。
(5)易取原则
尽量减少用户对操作目标的记忆负荷,动作和选项都应该是可见的。用户不必记住一个页面到另一个页面的信息。系统的使用说明应该是可见的或者是容易获取的。 好记性不如烂笔头。尽可能减少用户回忆负担,把需要记忆的内容摆上台面。
(6)易扫原则
对话中不应该包含无关紧要的信息。在段落中每增加一个单位的重要信息,就意味着要减少相应的弱化一些其他信息。用户浏览页面的动作不是读,不是看,而是扫。易扫,意味着突出重点,弱化和剔除无关信息。
(7)帮助文档(人性化帮助原则)
如果系统不使用文档是最好的,但是有必要提供帮助和文档。任何信息应容易去搜索,专注于用户的任务,列出具体的步骤来进行。帮助性提示最好的方式是:1、无需提示;2、一次性提示;3、常驻提示;4;帮助文档。
(9) 具有良好的人机交互体验,界面结构清晰且色彩统一,可以根据登录权限级别限制其使用功能;
(10) 软件具有良好的通用性和可配置性,包括:可根据需求定制数据显示页面,语音报警、编写报警检测规则等。
1.1.2.安装部署设计
安装工具使用简便,软件安装、配置一次完成;软件安装使用相对路径,软件安装目录可以通过配置改变。在系统部署安装的时候,对不同的操作系统,制作了不同的安装程序。采用可执行文件方式进行安装。在安装的时候,可以设置典型安装、自定义安装2种方式。自定义安装可以设置安装路径,安装的配置参数等。典型安装可一键完成系统的安装。
1.1.3.安全性设计
系统采用安全可靠的安全认证和数据传输机制,确保数据传输及存储过程中的安全性、稳定性、完整性和实时性,并具备应对突发情况的数据备份和恢复能力。系统从软件需求分析阶段、设计阶段、实现阶段到硬件设备安装以及系统集成等全过程按照标准进行安全设计。
(1)进行软件安全性策划,开展软件安全性工程活动。
(2)在软件需求分析阶段、设计阶段、实现阶段要求进行软件安全分析,对软件功能、性能、接口等方面进行估值分析,并采取相应规避措施;
(3)确定安全关键功能,标识安全关键软件,安全关键功能必须至少受控于两个独立的功能。
(4)软件开发人员参与软件安全性需求拟定,并负责实施软件项目策划规定的有关活动,确保所开发的软件产品满足本软件安全性需求。软件安全性需求应包括有效的运行模式或状态,以及禁止或不适用的模式或状态。
(5)对已纳入配置管理的受控软件的更改进行影响域分析,包括对现有功能、性能、配置项外部及内部的影响。
(6)在进行各个模块之间的接口设计时,应注意模块的参数个数、属性、单位、次序应与接受的输入参数个数、属性、单位、次序一致;不得修改只作为输入值的参数;全局变量在所有引用它们的模块中都有相同的含义。
(7)进行冗余设计实现容错和失效容限。一般依据软件安全性等级,确定软件的失效容限要求,对于安全关键信息(包括重要程序和数据)应该保存到两个或多个存储空间,对于关乎安全关键功能的重要信息应通过两个或更多的产生方式和传输方式进行产生、收集和表决判断。规定故障检测、隔离和恢复机制。
(8)实施软件的危险命令并进行操作分析。例如不按顺序、错误的事件、不适当的量值、不正确的极性、无意的命令、环境干扰造成的错误、以及指挥失灵模式之类的条件,应对所有的不安全状态的条件和潜在失效隐患,制定适当的响应要求。
(9)确定模块软件配置项目的安全性等级,明确需求管理。根据不同的安全等级划分不同的安全域,并基于安全域设计相应的边界防护策略、内部防护策略,部署相应的防护措施,通过防火墙、IPS、VLAN ACL手段进行边界隔离和访问控制,通过VPN技术保障网络通信完全和用户的认证接入,在网络的重要区域部署入侵监测系统以实现对网络攻击的实时监测和告警,部署流量监测和清洗设备以抵御DDoS攻击,部署恶意代码监测和防护系统以实现对恶意代码的防范。从而构造起纵深的防护体系。
(10)软件设计包括认证、授权、访问控制、日志等多种安全手段,保证各数据不被非法盗用和修改伪造保证数据不因意外情况丢失和损失。
(11)整个项目运行于私有环境,不与互联网有任何物理连接。使用安全保密系统确保软件安全性和保密性。并提供防火墙、身份认证、主机监控、安全监察、安全审计、入侵检测、入侵防御等安全防护手段,提供信源加密、存储加密和线路加密多层信息加密保护手段。
(12)系统具备数据安全策略,软件层面,具备完整的操作权限管理,包括操作口令、用户权限。综合使用账户管理、身份确认、操作权限、提升告警、日志审计等多种手段,防止未经授权的人使用程序和数据,防止误操作,确保系统安全。对需要网络传输的各类数据进行加密设置,并具备完善的鉴权、认证、控制和日志管理手段。网关路由主要实现网关代理中心各个系统,只有当有请求经过网关鉴权通过之后,请求才会根据配置的路由前缀到达对应的服务上。并且支持按不同用户权限设计相应的人机交互内容,确保信息安全;
(13)进行安全性验证工作,通过对系统的安全性关键硬件、软件和规程的操作验证,证实是否符合安全性要求。可以采用工程分析、建立模型或模拟仿真、演示或试验等方式。在选择、确定验证项目和方式时,应首先确保充分地证实所有与未能通过计划消除的灾难性危险相关的安全性关键硬件、软件和规程是否满足安全性要求,其次考虑成本、周期等约束条件。安全性验证应事先拟定方案和计划,验证结果应记录成文,并经过评审。
(14)系统支持数据冗余备份,同时可实现定期数据自动备份,具备备份恢复功能,防止因软件、硬件设备故障造成的数据丢失。
系统除了采用以上合理的常规安全措施外,针对本项目的特点,也采用了相应的针对性的安全防护措施。主要措施如下:
(1)分离安全性关键功能。将安全性关键功能与非安全性关键功能分离开,确立为各自独立的软件实体(库或进程),并使得关键功能的实现不依赖于非关键功能的实现。
(2)记录检测出的、所有的系统故障及其执行情况,输出日志,通过监控软件进行报警,禁止回避不安全状态。对各类故障报警不仅给出警告、错误、严重等标识,而且在日志内容中给出尽可能详细的、能定位到具体故障源的故障报警信息。
(3)记录关键操作与关键状态转变,对系统的关键操作与关键状态转变输出日志,记录操作的执行者、操作的内容和前后状态的变化。
(4)设计内存使用策略,避免出现内存泄漏、数据堵塞等问题。
(5)人工确认关键操作,对影响重大的操作,使用时向操作员进行提醒,并对可能造成的后果向操作员警告,由操作人员来确认和启动。
(6)关键命令发送控制。对影响重大的命令,发送时进行权限管控,未经授权的进程无法发送关键命令。
1.1.4.可靠性设计
1.1.4.1.软件的避错
避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法。本项目软件设计过程中,拟采用的技术和措施包括系统需求持续迭代、选择合适的生命周期模型、选择合适的软件开发方法、简化结构设计和软件采用离散设计。
1.1.4.1.1.系统需求持续迭代
明确系统需求是保证软件可靠性的关键步骤。在本方案的拟制过程中,对任务需求进行了初步分析,后续将深入开展软件需求分析,进一步明确并细化与其它系统的接口关系,使系统需求完整、清晰、无二义性、完整性、一致性,并且是可验证的。强化软件方案设计、概要设计和详细设计评审和检验工作;阶段评审的过程中对软件设计质量进行跟踪,编制详细的软件设计文档,用文件记录评审的过程和结果。
1.1.4.1.2.选择合适的生命周期模型
本软件产品需要进行各种功能性能验证与演示验证试验,存在根据系统试验情况进行后续调整的可能性,为此本项目软件开发需采用敏捷开发模型。基于已有的同类软件发维护经验,对于软件的人机界面采用已有案例示例法、原型设计法,通过持续迭代优化,不断逼近用户的最终需求。
1.1.4.1.3.选择合适的软件开发方法
根据每个功能软件的特点,选择合适的软件开发方法将有助于减少软件错误、发现和纠正错误。面向对象开发方法和结构化开发方法是可供选择的例子。慎重使用容易引入缺陷的方法,如并行、递归、中断、别名、默认输入的处理。
主要采用面向对象开发方法和结构化开发方法。面向对象开发方法是以对象作为最基本的元素,它也是分析问题、解决问题的核心。面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。结构化开发方法总的指导思想是自顶向下、逐层分解,基本原则是功能的分解与抽象,适合于数据处理领域的问题,由结构化分析、结构化设计、结构化程序开发构成,它是一种面向数据流的开发方法。
1.1.4.1.4.简化结构设计
简单的系统通常具有更高的可靠性,因此软件结构设计应将一个复杂的软件系统分解由一系列功能相对简单的模块。本方案按照软件功能要求进行了模块化分解,将软件分解成多个模块和子模块。在此基础上,在软件设计过程中将进一步简化软件结构,基于微服务的思想,对软件功能模块进行进一步分解并设计成一个单独的服务,这不仅有助于提高软件的可靠性,而且也便于软件故障隔离和系统维护。
1.1.4.1.5.软件采用离散设计
数据库可以安装在不同应用的服务器上,实现应用与数据可分离,并通过统一访问和统一存储实现应用软件对数据的存取。软件更新时,要能够保留用户的配置信息,数据更新时(包括数据结构变化),要能够保留原有数据。
1.1.4.2.软件的防错
一个大型、复杂的软件系统尽管经过精心设计、编码和测试并投入运行后,特别是早期运行阶段仍可能残留或多或少的错误,另外,系统的非法输入若不经正确的处理,有可能造成系统的故障。因此软件不仅要避错、纠错,还需防错。本项目主要采用以下软件防错措施:
(1)对外接口软件在接收其它系统的信息后,将严格按照与相应系统的接口约定对有关数据实施检查,对影响系统正常运行的信息不予放行,并通知发送者;
(2)对来自于各业务软件各类人员输入的有关操作命令实施严格的检查,以防止错误的输入引起系统异常;
(3)软件健康设计。软件运行时能够监控软硬件资源状态、进程信息、数据库运行状态等状态信息,展现服务的全局状态,并能够根据这些监控信息判断服务或软件的健康状况。所有可能引起系统异常行为(溢出)的软件模块,均需设置异常处理程序进行处理。
1.1.4.3.软件的查错和纠错
软件的查错和纠错,是开发高质量软件的关键措施,它应贯穿于软件生命周期的各有关阶段,特别是在软件生命周期的早期阶段发现并纠正中间软件产品的错误尤为重要。
为了在测试阶段尽可能多的发现并纠正软件错误,将按如下步骤执行测试:单元测试、软件配置项测试、系统集成测试。
在利用白盒测试时,对代码语句和分支进行走查,实现语句的全覆盖,而关键模块的分支覆盖率达到100%;利用黑盒测试时,设计尽可能多的测试用例,以覆盖软件需求中规定的全部功能、性能、接口要求。
多级测试设计。软件研制过程的配置项测试和系统测试,制定详细测试计划、测试规范和测试用例,明确描述软件测试的附加应力和合格判据,详细记录软件的测试结果和评判结论,对软件的各种测试,严格实行测试-故障分析-软件修改-测试确认的闭环过程。
1.1.4.4.软件的容错
软件设计和实现上采用成熟技术,特别是要继承相关领域长期积累核心技术和成功经验,使用熟悉的编程语言,确保软件开发的可靠性和高效率。
软件在处理过程中对边界条件要进行检查和判断,在遇到非致命错误的情况下进行报警并能继续执行,避免软件产生异常错误导致退出。
本软件能够对关键度高、影响范围广、重要性强的关键服务软件设置服务守护进程,监测服务运行状态,并能够根据采集的数据进行监控诊断及异常情况告警。具备关键模块的监控和自启动能力,关键模块异常关闭后可以自动启动并上报故障信息。
资源余量设计。在软件设计中对所用的内存区进行动态分配及管理,使得软件能够合理使用链表,满足软件的使用需求。采用链表的数据结构存储所需内存数据,尽量不使用静态数组存储。少量使用的静态数组的大小也均使用宏,依据实际需求定义数组的最大个数,并当实际大小超过宏定义的值时做相应的溢出处理
考虑软件运行异常情况下的数据传输可靠性,优先保证数据的正常传输。充分考虑异常处理,能够处理运行时本模块发生的错误,即不可预料的逻辑错误(程序逻辑上的错误,例如算法不合适、数组空间不够等)、可以预料的运行异常(运行环境影响造成的异常,如内存空间不足、在硬盘上的文件被挪离等);提供所有因误操作而导致的错误提示,对于发生的错误提供相应的解决方法建议;在设计时应有专门的异常处理模块,异常一旦发生,尽可能地减少破坏,周密地善后,而不去影响其它部分程序的运行。
1.1.4.5.软件可靠性管理
软件质量不仅取决于软件的开发方法、技术和工具,而且更与管理息息相关,必须坚持技术与管理手段并重。在本项目实施过程中,将实施严格的质量进度管理和软件配置管理。
1.1.4.5.1.组织清晰责任落实
由技术专家和业务骨干成立项目组。开发组、测试组、质量保障组等相互独立,确保软件测试的客观公正。做到组织架构清晰、责任落实到人。
1.1.4.5.2.抓好系统需求分析
系统需求是软件开发工作的源头和依据,因此抓好系统需求分析工作至关重要。系统需求分析阶段工作结束后,将以软件研制任务书的形式下达给各分系统软件,除了要明确技术性需求,还应包含非技术性要求。经内部评审确认后,作为各分系统开发的正式依据。
1.1.4.5.3.抓好项目策划
重点做好以下工作:确定软件生命周期模型;确定软件开发方法、标准和规程;评估软件风险,确定化解风险的对策;安排进度、里程碑和评审;明确待开发的软件工作产品。
1.1.4.5.4.重视文档,抓好各阶段软件产品的评审
文档是软件生命周期当前阶段工作成果的记录,更是下一阶段工作开始的基础;有的文档(如软件设计方案)是保障软件开发工作进行的依据;有的文档(如用户手册)作为用户操作和系统运维的参考资料。项目组将高度重视文档质量,做到文实相符、准确简明。
1.1.4.5.5.抓好软件测试
软件测试是软件上线运行前保证软件质量、检测和改正软件错误的关键环节。为保证测试质量,除单元测试由开发者自行测试外,项目组将组织不同配置项的开发人员进行交叉测试;软件配置项测试、系统集成测试将由独立的测试组完成。
1.1.4.5.6.软件配置管理
软件配置管理是保证软件质量的一件重要的日常工作,其中最重要的是软件更改的控制。本项目将严格按照软件工程化要求建立三库(开发库、受控库和产品库),进入基线的工作产品的出库、更改和入库均需受控,按软件配置管理规定进行。提交给用户使用的最终软件产品必须从产品库中提取。
在上述工作的基础上,抓好各阶段的软件产品评审工作,重要阶段(如软件需求分析、软件设计说明、系统集成测试等)软件产品的评审将邀请用户代表参加。
1.1.5.维修性设计
为了保证持续改进本软件的可维修性,依据国家和行业标准开展维修性设计工作,主要采取以下措施:
(1)软件安装自动化。所有软件都进行合理打包,能满足系统安装要求,实现软件安装过程的“零”维护,简化软件安装过程,提高软件系统的配置速度,缩短软件的修复时间。
(2)故障报告能力设计。所有软件功能都具备故障日志和故障码,能及时报告软件运行的工作状态,特别是故障信息,让系统维护人员能在第一时间掌握软件的故障情况,及时修复,保障运维管控系统连续运行。
(3)软件排错、排误能力设计。所有软件应具备排错、排误功能,允许系统错误输入,局部软件错误不影响整个运维管控系统的运行。
(4)可变因素的数据化表示设计。在软件设计工程中,尽可能地将各种可变因素(如:IP地址,各种列表选项,屏幕分辨率等)从程序中分离出来,用数据来表示。在系统运用过程中,当这些因素发生变化时,系统维护人员通过对数据文件的维护实现对软件的维护,提高软件的适应范围,减低软件维护的工作量和难度。
1.1.6.易用性设计
特别声明: 本文版权归原作者所有,本文所用图片、文字如涉及作品版权,请第一时间联系我们删除。本平台旨在提供行业资讯,不代表本站立场!
Notice: The copyright of this article belongs to the original author. If the pictures and text used in this article involve the copyright of the work, please contact us to delete the first time. This platform is intended to provide industry information and does not represent the position of this site