zoukankan      html  css  js  c++  java
  • 软件架构中的质量属性--以淘宝网为例(小论文)

    软件架构中的质量属性

    闫大山

    (石家庄铁道大学信息科学与技术学院软件工程系,河北省石家庄市,050043)

    要:本文概要的介绍了软件架构中的有关质量属性,通过对软件设计思想和过程的阐述,基本了解在接下来的软件开发中如何构建软件系统。在基于软件开发行业的特殊性,从淘宝网的运行中对软件质量属性做更深入的理解,实现了从理论到实践中理解软件架构的现实意义。

    关键词:质量属性;软件架构;淘宝

    Quality attributes in software architecture

    Yan Dashan

    Department of software engineering, college of information science and technology, shijiazhuang railway university, shijiazhuang city, hebei province, 050043, China

    Abstract:This article briefly introduces the quality attributes in software architecture, and through the elaboration of software design ideas and processes, it basically understands how to build software systems in the following software development.Based on the particularity of software development industry, this paper makes a deeper understanding of software quality attributes from the operation of taobao, and realizes the practical significance of understanding software architecture from theory to practice.

    Key words:Quality attribute;Software architecture;

    1 引言

    软件属性包括功能属性和质量属性,他们在不同的方面诠释着软件在实现过程中意义。质量属性作为软件属性的一种,是更为被软件架构所关注的,从几十年前软件真正被开发到现在,我们所需要的一切软件都是要建立在此软件是高质量软件的基础上,而开发高质量的软件,又是一项极其具有挑战性的内容,原因就是对于软件“质量”的定义太过于模糊,尤其在架构出现之后,各类架构层出不穷,行业中却很少有对这种架构的质量有明确的规范,这也给“做优质软件”这一目标造成了很大的阻碍。也正是在这种模糊状态下,有人开始探寻对于软件质量属性的定义。杰拉尔德温伯格是极其重要的一位,在他的四部曲巨作《质量软件管理》的第一卷第一章中就谈到了什么是质量以及质量的重要性。也正是读了他的这本书,才使的我在软件质量的大门前窥的意思缝隙。

    2 什么是软件架构
    在了解质量属性之前,我们要了解他的载体--架构。对于软件架构的定义,百度百科是这样的:“软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。”;

    从上面的定义来说,架构是抽象的,他不会考虑任何的算法逻辑、数据操作的实现,它只关心对于“黑盒”研究的元素行为与交互,它的目的是从各个方面解决提高软件生产率、保证软件生产质量、改善软件维护等不断出现的问题。软件架构的运用是直接影响到软件成败的关键要素。试想,远古时期的人类不能进行深度的交流,所以他们只能做成低矮的房屋;现在的我们,通过建筑图纸以及团队的规划,却可以造出高楼大厦,这样的类比使得软件架构的重要性更加可见了吧。

    3 质量属性理论

    软件架构的属性包括其功能属性和质量属性,前面我们已经说过,软件架构是在满足软件功能的前提下,主要关注的是软件架构的质量属性。软件的质量属性指的是可用性、可修改性、性能、安全性、可测试性和易用性、质量属性是高于对系统功能(即系统能力、服务和行为)的基本要求的。现代软件架构的质量属性都有对应的属性战术,通过灵活对于质量属性战术的使用,来达到实现高质量软件的目的。

    除去一般的场景我们暂且不谈,先简要从下面六个常用的质量属性场景做简单介绍(3.1-3.6图片来源百度)。

    3.1质量属性之可用性(Availability)

    可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的。一般使用的衡量计算方法是:  

     

    一般来说,可用性所关注的方面包括系统故障发生的频率、出现故障时会发生什么情况、允许系统有多长是将非正常运行、什么时候可以安全地出现故障、如何防止故障的发生以及发生故障时要求进行哪种通知。我们在进行架构设计时,也要从他的这些应用场景进行考量。

    3.2质量属性之可修改性(Modifiability)

    软件架构的可修改性是针对软件本身而言的,通常来说值得关注的两个关注点:可以修改什么?何时以及谁进行修改。

     

    3.3质量属性之性能(Performance)

    性能是指系统的响应能力----即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件个数。它不指软件运行的速度,而是体现软件运行在“时间-空间”上的效率。好的软件对于控件资源的浪费是很少的,通俗来讲就是:“既要马儿跑得快,又要马儿吃的少。”

    影响性能的因素有:事件源的数量和到达模式。一般用等待时间、处理期限、系统吞吐量、响应抖动(等待时间的变化)、未处理事件(由于系统太忙无法响应)、丢失数据(由于系统太忙)等指标了解系统性能。而在实际项目中,性能的优化也是一项很大的工作,关键是在于找出影响性能的“瓶颈”,这个“瓶颈”,也像是海绵里的水,挤挤总会有的 

    3.4质量属性之安全性(Security)

    安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力。它既属于技术问题,也属于管理问题。

    攻击有以下三种方式: 未经授权试图访问数据或服务。 未经授权试图修改数据。 试图使用系统拒绝向合法用户提供的服务。造成安全性问题的最常见的是黑客的入侵,所以,我们常用黑客入侵所耗费的代价与成功入侵所获得的的利润进行比较,来确定软件是否是高度安全的。

     

    3.5质量属性之可测试性(Testability)

    可测试性是指通过测试揭示软件缺陷的难易程度。

    可测试性的响应度量处理的是测试在发现缺陷方面的效率以及想要达到某个期望的覆盖范围,需要用多长时间进行测试。

     

    3.6质量属性之易用性(Usability)

    易用性指的是用户使用软件的难易程度,它着重关注的是对用户来说完成某个期望任务的难易程度。一般来说,我们对于易用性的评价要交给用户来进行,因为自我测评会很容易造成“错位”,使得我们在测评过程中保留有一定的主观性。

    4 淘宝运营的质量属性体现

     

    当我们基本了解到了软件架构的质量属性场景之后,我们可以通过下面这个关于淘宝网的实例,通过对比来进行简要的深度理解。

    4.1可用性

    前置场景:假设淘宝网在“双十一”期间同时在线用户人数进行指数式增加,对于商品的抢购处于一种时刻饱满的状态。

     

    4.2可修改性

    前置场景:假设淘宝网在“双十一”期间用户收货地址更换,需要重新设置收货地址。

     

    4.3性能

    前置场景:假设淘宝网在“双十一”期间用户选购好商品需要进行支付。

     

    4.4安全性

    前置场景:假设淘宝网在“双十一”期间遭遇黑客攻击,企图修改商品价格。

     

    4.5可测试

    前置场景:假设淘宝网在“双十一”期间需要进行交易测试,以保证交易 。

     

    4.6易用性

    5 结语

    软件架构是一门技术,我们通过粗浅的讨论一些关于软件架构中的质量属性场景,来了解软件架构中所需要考量的基本方面。当我们完全掌握这些场景后,再进行相应战术上的掌握,灵活应用,才能做出高品质的软件。

     

    参考文献

    [1]  [美] 杰拉尔德·温伯格,《质量软件管理》,清华大学出版,2004-7-1版

    [2]  百度文库,《软件质量属性》, https://wenku.baidu.com/view/e53101cc443610661ed9ad51f01dc281e53a56a4.html

    [3]  张洪春,《系统架构分析与实践》,中国科技信息2007年第18期

  • 相关阅读:
    Python for Infomatics 第14章 数据库和SQL应用四(译)
    展望2017
    bing的简单英文字典工具
    自我安慰
    Python for Infomatics 第14章 数据库和SQL应用三(译)
    Python for Infomatics 第14章 数据库和SQL应用二(译)
    Python for Infomatics 第14章 数据库和SQL应用一(译)
    希望父亲早日恢复
    Python for Infomatics 第13章 网页服务四(译)
    Python for Infomatics 第13章 网页服务三(译)
  • 原文地址:https://www.cnblogs.com/yandashan666/p/13047651.html
Copyright © 2011-2022 走看看