质量属性包括

软件架构中质量属性包括功能、性能、安全性、可用性、可扩展性、可维护性。

一、功能

软件的功能是软件设计中最基本的要求,软件交付时必须要实现软件需求规格说明书中的所有功能性需求。功能设计最关键的地方在于找出功能之间的依赖关系,在系统概要设计时,功能设计可以结合UML中的用例图、功能结构图来完成。

二、性能

软件系统的性能是跟功能紧密结合的,在实现功能的基础上再谈性能,性能一般包含几个指标,分别为响应时间、吞吐量、并发用户数、资源利用率。

三、安全性

软件安全一般可以从系统运行环境安全和应用软件级安全两个层面来考虑。系统运行环境安全主要是软件系统运行所在的主机安全,主机安全包括机房环境安全、操作系统安全漏洞、IP及端口访问策略安全等。

应用软件的安全包含账户管理和访问权限控制、XSS攻击、SQL注入攻击、通信协议安全、数据访问和存储安全等。

四、可用性

可用性指计算机系统在某一时刻能提供有效使用的程度,即在任何指定时刻系统能正确运行的概率。可用性一般跟高并发紧密结合,高并发时,随着并发用户数的增加,对业务的冲击能力比较大,对系统资源的占用较高,导致服务器宕机的概率较大。

解决可用性的方法,一般采取冗余、并行化处理。可用性中,要解决的核心问题是单点故障问题,单点故障解决方案可以采用双机备份或负载均衡的方式。

双机备份一般需要人工干预,负载均衡的方式比较常用,负载均衡要求至少2台以上的服务器资源才能保证可用性,相对成本较高,负载均衡技术。

五、可扩展性

可扩展性是指能够在对现有系统影响最小的情况下,系统功能可以可持续扩展及提升的能力。扩展性表现为基础设施不需要经常变更,应用之间较少依赖或耦合,可以对需求变更快速响应。

它对扩展开放,对修改关闭。架构设计要考虑到未来功能的可扩展性,所以当系统增加新功能时,不需要对现有系统的结构和代码进行修改。

六、可维护性

软件可维护性指的是维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。决定可维护性的因素有系统的大小、系统的年龄、结构合理性。可维护性可通过下面几个质量特性来衡量,分别为可测试性、可修改性、可移植性、可使用性。