一、功能
软件的功能是软件设计中最基本的要求,软件交付时必须要实现软件需求规格说明书中的所有功能性需求。功能设计最关键的地方在于找出功能之间的依赖关系,在系统概要设计时,功能设计可以结合UML中的用例图、功能结构图来完成。
二、性能
软件系统的性能是跟功能紧密结合的,在实现功能的基础上再谈性能,性能一般包含几个指标,分别为响应时间、吞吐量、并发用户数、资源利用率。下面对这几个响应指标展开介绍。
1. 响应时间:指系统对请求作出响应的时间。举个例子,你在浏览 页时,提交一个查询的请求,从点击查询按钮开始到查询结果展现出来,这中间等待的时间就称为响应时间。响应时间一般是有多方面因素决定的,比如系统处理速度、 络传输的时间等,一般取平均值,平均响应时间越短,系统的体验性就越好。
2. 吞吐量:吞吐量是指系统在单位时间内处理请求的数量,通常用QPS/TPS来表示。对于单用户的系统,响应时间可以很好地度量系统的性能,但对于并发系统,吞吐量是一个比较重要的性能指标。举个例子,银行柜台业务同时有10个窗口可以办理,每个窗口办理一个业务的平均时间需要1分钟,那么1分钟内银行柜台的吞吐量(TPS)就为10。
3. 并发用户数:并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量,与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。还拿银行柜台业务举例,银行柜台业务有10个窗口,一次能办理10个客户的业务,那么并发数也就是10。吞吐量与并发用户数之间是什么样的关系?了解上面几个名词后,不难得出,吞吐量=并发用户数/平均响应时间。
4. 资源利用率:资源利用率反映的是在一段时间内资源平均被占用的情况。软件系统中,资源利用率一般指服务器中CPU、内存、磁盘、 卡在高并发情况下的占用情况。高并发场景下,服务器资源监控尤其重要,资源监控一般由运维人员通过专业的监控工具来完成,资源监控告警会影响到系统的正常使用。
三、安全性
随着信息产业的发展, 络信息安全已经成为一个很重要的话题。 络信息安全关系着国家安全、人民生活安全、财产安全等方面。软件系统在架构设计时,系统安全性往往被忽略,在这里,我呼吁大家以后多加关注。 软件安全一般可以从系统运行环境安全和应用软件级安全两个层面来考虑。
1. 系统运行环境安全主要是软件系统运行所在的主机安全,主机安全包括机房环境安全、操作系统安全漏洞、IP及端口访问策略安全等;
2. 应用软件的安全包含账户管理和访问权限控制、XSS攻击、SQL注入攻击、通信协议安全、数据访问和存储安全等。
有关安全性这一块,大家可以浏览我之前分享的几篇文章。
四、可用性
可用性指计算机系统在某一时刻能提供有效使用的程度,即在任何指定时刻系统能正确运行的概率。可用性一般跟高并发紧密结合,高并发时,随着并发用户数的增加,对业务的冲击能力比较大,对系统资源的占用较高,导致服务器宕机的概率较大。解决可用性的方法,一般采取冗余、并行化处理。可用性中,要解决的核心问题是单点故障问题,单点故障解决方案可以采用双机备份或负载均衡的方式,双机备份一般需要人工干预,负载均衡的方式比较常用,负载均衡要求至少2台以上的服务器资源才能保证可用性,相对成本较高,负载均衡技术,目前业界用得比较多的组件有Nginx,LVS。
五、可扩展性
可扩展性是指能够在对现有系统影响最小的情况下,系统功能可以可持续扩展及提升的能力。在此,对容易混为一谈的“扩展性”和“伸缩性”的概念进行详细说明,扩展性表现为:基础设施不需要经常变更,应用之间较少依赖或耦合,可以对需求变更快速响应。它对扩展开放,对修改关闭。架构设计要考虑到未来功能的可扩展性,所以当系统增加新功能时,不需要对现有系统的结构和代码进行修改。伸缩性是指系统通过增加(或减少)自身资源规模的方式增强(或减少)处理业务的能力。在高并发微服务架构中,服务的动态扩容都属于可扩展性。
六、可维护性
软件可维护性指的是维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。决定可维护性的因素有系统的大小、系统的年龄、结构合理性。可维护性可通过下面几个质量特性来衡量,分别为可测试性、可修改性、可移植性、可使用性。
通过以上几个方面的介绍,我想你对软件架构设计中常用的几个质量属性有了初步的了解,其实说白了,软件架构设计的核心都是围绕着这几个常用的质量属性进行。好了,今天就分享到这里,创作不易,感兴趣的同学别忘了加关注哦,有问题欢迎在评论区留言,往后会陆续给大家分享更多软件系统架构方面的知识。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!