软件设计原则与六性的区别

本人最近在写方案的时候,总是无法分清软件设计原则和六性,总感觉它们很相似,下面是我在网上搜索并整理了一些资料,在这里做个留存以便下次查看,顺便分享给大家,话不多说,下面直接上干货。

一、软件设计原则

软件设计有许多重要的原则,这些原则有助于指导开发者进行有效的设计和编程。以下是一些主要的软件设计原则:

明确需求和目标:在开始设计之前,必须明确软件的需求和目标。这包括用户需求,项目目标,业务需求等。只有明确了需求和目标,才能确保软件设计与之相符。

考虑可扩展性和灵活性:软件设计应考虑未来的扩展和变化。这可以通过采用模块化设计,使用开放标准,以及编写可维护的代码来实现。这样可以使软件更容易适应未来的需求变化。同时,需在软件的设计和实现上确保模块作用边界明晰,使用统一标准的输入输出接口,利于软件相关业务的横向扩展,模块中包含数据类型、子功能和操作界面均独立编译动态库,利于软件相关业务的纵向扩展。

保持简单和清晰:设计的简单性和清晰性对于代码的可读性和可维护性至关重要。每个组件和函数都应该是简单的,并且其功能应该明确。此外,应避免复杂的控制结构和深层嵌套。

单一职责原则:每个类或函数都应只有一个职责。这有助于减少错误和提高代码的可读性。

接口隔离原则:客户端不应强制依赖于他们不使用的接口。这有助于减少依赖和增加灵活性。

依赖倒置原则:高层模块不应该依赖于低层模块,它们都应该依赖于抽象。这有助于减少特定实现的依赖,增加代码的可测试性和可维护性。

模块化设计:在设计实现时,软件架构设计应合理,可将代码划分为独立的模块,每个模块都具有特定的功能,尽量降低各模块间的耦合性,提高系统容错性,这有助于提高代码的可重用性和可维护性,以免单个模块发生故障时会影响到其它模块乃至整个系统。

异常处理:应该有一个明确的异常处理策略。这包括对可能出现的错误进行预测,并制定相应的处理方案。

文档和注释:编写清晰的文档和注释是软件设计的重要部分。这有助于其他开发者理解代码的功能和实现方式。

测试和验证:设计完成后,需要进行全面的测试和验证以确保软件的正确性和可靠性。这包括单元测试,集成测试和系统测试等。同时,在软件开发过程中应遵循开发测试同步进行的原则,实时测试和发现问题,并反复验证,降低风险,提高软件的可靠性。

二、软件六性

软件六性是偏硬件的说法,一般包括可靠性、维修性、保障性、测试性、安全性、环境适应性,这是 GJB9001 中明确提出做为产品实现策划必须要考虑和满足的要求,是武器装备产品开发中除功能特性外要满足的质量特性

1、可靠性

1) 全过程机制:软件的可靠性设计应贯穿于功能设计的各个环节,在满足基本功能的同时要全面考虑影响可靠性的各种因素;

2) 设计应用层容错机制:在应用层完成程序编写,设置容错机制,当系统出现异常时能够关闭本次请求,保护系统数据完整性;严格把控编码格式,在需要使用内存的地方必须显示指出使用内存大小,并进行检验

3) 建立状态机制:建立有效的状态机制和完整的状态流程,保证系统可以有效的处理数据和多种状态;

4) 建立数据信息管理机制:用于防止由于数据存在不安全的漏洞导致的数据丢失;

5) 采用安全的传输机制:利用网络安全技术,实现安全的数据传输机制,确保数据安全;

6) 建立日志记录机制:利用软件完成日志记录,以便进行审计和跟踪,保护系统的可靠性;

7) 采用备用设备机制:采用备用服务器备份数据,实时检测服务器状态,确保可靠性;

8) 设计系统容灾机制:当系统出现故障时,可以进行数据恢复,以便快速恢复系统状态,在软件重新启动后,再次读取该工作配置状态时,能够正常启动;

9) 采用隔离的网络环境:增加网络安全,采用隔离的网络环境,减少系统攻击的风险;

10) 建立应急响应机制:在系统的可靠性检测中,设计应急响应机制,及时有效的处理系统异常

2维修性

1) 采用自动化技术:自动监测信息系统的状态,及时进行维护和维修工作。

2) 采用配置管理:内部系统之间的关系与依赖,以及外部系统的接口与反应状态的监控,都可以配置管理技术来实现。

3) 采用现场维护技术:现场维护技术可以实现远程遥控和管理,及时监测和检测系统故障。

4) 采用测试技术:采用自动化系统测试工具和技术,进行系统功能和性能检测。

5) 采用日志记录:在设计实现时,软件各配置项应提供完备的日志记录(包括过程日志和异常日志等),同时在软件出错时应有明确的异常信息提示。所有的故障状态和信息都应自动记录和存储,便于事后的故障对策分析。

3、保障性

1) 建立严格的组织保密管理机制,建立有效的系统使用权限认证机制,定期审计,提高使用安全性;

2) 严格把控软件设计和开发的质量,预防软件设计和实现缺陷及漏洞,加强安全代码评审程序;严格把控编码格式,在需要使用内存的地方必须显示指出使用内存大小,并进行检验;

3) 强化数据安全,建立敏感数据监控表,对数据保护是进行备份和恢复;

4) 严格实施网络安全策略,建立网络安全监测系统,采取技术措施(如流量审计、实施数据加密、应用防火墙等)和管理措施(如认证机制优化、逻辑设计时加入安全思维等),提升网络安全。

5) 强化反病毒技术的应用,对重要操作系统、数据库实施安全补丁和妥善备份,建立有效的系统日志监测机制,能够快速发现和处理安全问题。军工类软件则需通过甲方防病毒软件的检验,在打包发布后,需要多次杀毒后再刻盘。安装杀毒软件并每天定时进行杀毒操作。程序在打包发布后,需要多次杀毒后再刻盘。不允许插入U盘等可移动载体,保证不使用135137138139445等高危端口;

6) 采用最新可靠的安全认证技术,如公钥加密和数字签名等,提高业务系统安全性;

7) 运维团队定期检查,包括定期开展安全技术培训和安全检查,不断提高系统安全管理水平,加强安全保护意识,增强整体安全防范能力。

4、测试性

软件交付用户前会进行严格测试,避免出现影响系统的情况。信息系统设计原则的测试性技术实现可以有多种,常见的一般有以下几种:

1) 单元测试:即将信息系统的每个模块分开进行测试,以确保每个独立的模块的性能和正确性;

2) 系统测试:将各个模块组合起来,整体进行操作测试,以确保信息系统在将所有模块组装在一起以后能正常运行;

3) 功能测试:以一定的输入,通过系统,获得正确的输出结果,从而让系统按照预拟结果运行;

4) 兼容性测试:测试信息系统在不同网络环境和不同参数要求下的性能和正确性;

5) 集成测试:把信息系统中的不同模块进行组装,并与外部环境接口进行整合,以确保在集成的整体形态下能够正常工作;

6) 接口测试:检查信息系统中各个部件与外部的交互动作是否正确有效,以及处理的结果是否满足预期;

7) 回归测试:在修改完系统的某个部分后,通过对整体系统的测试,证明其他模块与修改后模块之间不存在互相影响,保证其稳定性。

5、安全性

1) 网络信息安全的木桶原则

网络信息安全的木桶原则是指对信息均衡、全面的进行保护。“木桶的最大容积取决于最短的一块木板”。网络信息系统是一个复杂的计算机系统,它本身在物理上、操作上和管理上的种种漏洞构成了系统的安全脆弱性,尤其是多用户网络系统自身的复杂性、资源共享性使单纯的技术保护防不胜防。攻击者使用的“最易渗透原则”,必然在系统中最薄弱的地方进行攻击因此,充分、全面、完整地对系统的安全漏洞和安全威胁进行分析,评估和检测(包括模拟攻击)是设计信息安全系统的必要前提条件。安全机制和安全服务设计的首要目的是防止最常用的攻击手段,根本目的是提高整个系统的”安全最低点”的安全性能。

2) 网络信息安全的整体性原则

要求在网络发生被攻击、破坏事件的情况下,必须尽可能地快速恢复网络信息中心的服务,减少损失。因此,信息安全系统应该包括安全防护机制、安全检测机制和安全恢复机制。安全防护机制是根据具体系统存在的各种安全威胁采取的相应的防护措施,避免非法攻击的进行。安全检测机制是检测系统的运行情况,及时发现和制止对系统进行的各种攻击。安全恢复机制是在安全防护机制失效的情况下,进行应急处理和尽量、及时地恢复信息,减少供给的破坏程度。

3) 安全性评价与平衡原则

对任何网络,绝对安全难以达到,也不一定是必要的,所以需要建立合理的实用安全性与用户需求评价与平衡体系。安全体系设计要正确处理需求、风险与代价的关系,做到安全性与可用性相容,做到组织上可执行。评价信息是否安全,没有绝对的评判标准和衡量指标,只能决定于系统的用户需求和具体的应用环境,具体取决于系统的规模和范围,系统的性质和信息的重要程度。

4) 标准化与一致性原则

系统是一个庞大的系统工程,其安全体系的设计必须遵循一系列的标准,这样才能确保各个分系统的一致性,使整个系统安全地互联互通、信息共享。

5) 技术与管理相结合原则

安全体系是一个复杂的系统工程,涉及人、技术、操作等要素,单靠技术或单靠管理都不可能实现。因此,必须将各种安全技术与运行管理机制、人员思想教育与技术培训、安全规章制度建设相结合。

6) 统筹规划,分步实施原则

由于政策规定、服务需求的不明朗,环境、条件、时间的变化,攻击手段的进步,安全防护不可能一步到位,可在一个比较全面的安全规划下,根据网络的实际需要,先建立基本的安全体系,保证基本的、必须的安全性。随着今后随着网络规模的扩大及应用的增加,网络应用和复杂程度的变化,网络脆弱性也会不断增加,调整或增强安全防护力度,保证整个网络最根本的安全需求。

7) 等级性原则

等级性原则是指安全层次和安全级别。良好的信息安全系统必然是分为不同等级的,包括对信息保密程度分级,对用户操作权限分级,对网络安全程度分级(安全子网和安全区域),对系统实现结构的分级(应用层、网络层、链路层等),从而针对不同级别的安全对象,提供全面、可选的安全算法和安全体制,以满足网络中不同层次的各种实际需求。 

8) 动态发展原则

要根据网络安全的变化不断调整安全措施,适应新的网络环境,满足新的网络安全需求。 

9) 易操作性原则

首先,安全措施需要人为去完成,如果措施过于复杂,对人的要求过高,本身就降低了安全性。其次,措施的采用不能影响系统的正常运行。

10) 严格测试原则

提交用户前必须经过严格内部测试,保证不出现造成系统数据的损坏或丢失的错误。

6、环境适应性

1) 减缓影响产品的环境应力、增强产品自身耐环境应力的能力环境适应性设计,首先应综合考虑所设计产品可能经受到的各种环境因素与其应力,采用减缓环境应力的措施、增强自身耐环境应力的能力,即用有效的防护设计、材料、工艺等来达到所设计产品的环境适应性要求。

2) 明确防护对象与防护等级按从大到小的顺序,即从系统、整机、单元、零部件、模块、元器件到材料逐级明确防护对象与防护等级。

3) 建立有效防护体系

环境适应性设计应从多方面入手:采用合理的结构设计,正确选择材料,严格进行计算并确定使用应力,选用稳定的加工、装联工艺,建立有效、合理的防护体系。

4) 综合考虑环境因素的不良影响

一种环境因素可能产生多种不良影响,一种不良影响往往是多种环境因素协同作用的结果,设计时应予以综合考虑。

    综上所述,我们可以发现软件设计原则侧重于软件具体设计与编码实现,软件六性则主要是从整体的角度出发,描述软件作为一个产品应该具有的一些非功能性的特性或应经历的非功能性考验。

posted @   WikeSoft  阅读(550)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示