非功能需求对计算机软件体系结构的影响

时间:2021-03-06 18:09:19 硕士毕业论文 我要投稿

非功能需求对计算机软件体系结构的影响

  1、引言

  软件的发展离不开幕后众多的编程人员、测试人员、文档撰写员,需求分析师、系统工程师、软件架构师等。在IT界,软件架构师是丰富软件项目经验及具有广博而精钻技术知识的象征。

  软件架构师在软件工程的生命周期中,起着承上启下的关键作用。一名好的软件架构师的知识结构中,需要具备系统开发全过程的经验,对于IT建设生命周期各个环节有深入了解,其中包括:系统膜块逻辑设计、物理设计、代码开发、项目管理、测试、发布、运行维护等;需要深入掌握一到两种主流技术平台上开发系统的方法;了解多种应用系统的结构;了解架构设计领域的主要理论、流派、框架。另外,在业务知识领域中,架构师也要十分清楚并深入了解系统建设的业务需求;了解系统的非功能需求和运行维护需求;了解企业IT公共设施、网络环境、外部系统。图1中列举了架构师的基本知识结构,其中,涉及到了非功能需求。顾名思义,此需求乃软件功能需求以外的需求,用“非功能需求”来概括之,便是它难以全面概括的事实。

  2、概念

  在系统工程和需求工程中,非功能需求(Non—functiona1Requirement,NFR)确定了衡量的尺度,用于对系统运行的判断,而不是具体的系统行为。可以这样理解,非功能需求是指软件产品为满足用户业务需求(即功能需求)而必须具有且除功能需求以外的特性。

  比如设计一款手机,那么,这个手机必须要满足的功能需求就包括打电话、发短信、手机上网等。但是,在设计的过程中,也同样不能忽略的是:它是否易用(是否要仔细阅读说明书才可以使用);它的性能(储存空间大小、电池寿命长短、待机时间长短);它的外观(美观、时尚、大方,能否抓住消费者的心理)。这些不能忽略的内容便构成了非功能需求。手机的特性类似软件的非功能需求,虽然与其功能不直接相关,但是都会左右消费者的选购。

  软件工程与建筑工程非常类似,软件系统的需求种类也不少,如图2所示。既然有非功能需求,便有功能需求。功能需求是大家比较熟悉的一类需求。功能需求描述要开发的软件系统应该做什么,它可以包括为用户提供哪些服务,也可以包括本系统为其他系统提供哪些服务。非功能需求中分为质量属性和约束。约束需求规定了开发软件系统时必须遵守的限制条件。例如,要采用什么操作系统,要采用哪种开发技术,是否需要与遗留的老系统进行互操作等。当然,还要考虑软件用户所在的行业中必须遵守的法律法规、政策方针和行业标准、企业标准。质量属性作为非功能需求的一个分支,同样包含众多内容。例如性能、安全性、易用性、可靠性等众多属性如何分类的问题。如图3所示,将软件质量的属性分类为“产品修改”、 “产品改型”和“产品操作”,其中包含了相对应的质量属性。事实上,这样的分类模型存在着一个缺点,即关注了产品的本身,而忽略了软件产品在开发过程中所存在的非功能需求。例如,软件开发中的代码可重用性、代码的易理解性等等。

  鉴于此,非功能需求中的质量属性也可以从如此的角度进行分类: “运行期质量属性”和“开发期质量属性”。运行期质量属性是软件系统在运行期间,最终用户可以直接感受到的一类属性;开发期质量属性包含和软件开发、维护和移植这3类活动相关的所有质量属性。

  3、来源

  有人把需求喻为软件开发的起跑线,需求工程是否顺利和成功,能够为软件的最终成功奠定扎实的基础。调研完成的需求可能与相关领域紧密结合,则需要了解这些领域背景;需求可能来自于多方,则需要征求和总结各种想法和意见等等。可以根据图2的分类方法,将软件的需求细分到功能需求和非功能需求,其中非功能需求包含了质量属性和约束。再考虑需求提出的不同级别,可以得到软件需求空间分割。

  4、功能需求与架构设计

  功能需求是重要的,它们包含了几乎所有用户所要求实现的业务逻辑。当然,非功能需求也同样是决定架构成功与否的关键因素。软件客户不能严格区分什么是功能需求,什么是非功能需求。事实上,非功能需求中的质量属性与约束是一个复杂的问题。

  (1)功能需求影响架构,架构必须要适应功能需求。但是功能需求不会决定架构,是否基于接121编程还是硬编码实现功能,是否要分层等等问题都不是功能需求所能单独确定的。

  (2)质量属性会从根本上影响架构。例如,非常强调性能的系统软件会在算法实现上下足功夫,而左右在架构设计中是否避免了性能的损失。

  (3)至于约束,它或作为架构设计的限制条件,或转变为功能需求,或转换为质量属性。

  5、主要内容

  客户要功能也要质量。比较功能需求与非功能需求,相对而言,客户比较擅长提出功能需求。这是所熟悉了解的业务领域内的知识范畴,而且都是经过大量的实践操作。然而对于非功能需求却并不是如此,不可能对于每个客户都要求他们了解和掌握需求工程。所以在需求制作的过程中,要给予他们足够的引导。架构师必须清楚地认识:为客户而设计,不仅要满足客户要求的功能,也要达到客户所期望的质量。

  非功能需求分为“运行期质量属性”和“开发期质量属性”。

  5.1 运行期的质量属性

  (1)性能。性能是指软件系统及时提供相应服务的能力。具体而言,性能包括速度、吞吐量和持续高速性这三方面的要求。

  (2)安全性。指软件系统同时兼顾向合法用户提供服务,又阻止非授权使用功能的能力。

  (3)易用性。指软件系统易于使用的程度。

  (4)可用性。可用性与易用性不相同。可用性指系统长时间无故障运行的能力。

  (5)可伸缩性。指当用户增加时,软件系统维持高服务质量的能力。

  (6)互操作性。指本软件系统与其他系统交换数据和相互调用服务的难易程度。

  (7)可靠性。软件系统在一定时间内无故障运行的能力。

  (8)健壮性。也称容错性。是指软件系统在异常情况仍能够正常运行的能力。

  5.2 开发期的质量属性

  (1)易理解性。是指系统设计能被开发人员理解的难易程度。

  (2)可扩展性。为适应新需求或者需求变化,为软件增加功能的能力。有些时候,称之为灵活性。

  (3)可重用性。重用软件系统或其中一部分的能力的难易程度。

  (4)可测试性。对软件测试以证明其满足需求规约的难易程度。在实际的项目中,主要指进行单元测试等难易程度。

  (5)可维护性。修改Bug,增加功能,提高质量属性。

  (6)可移植性。将软件系统从一个运行环境转移到另一个不同的.运行环境的难易程度。

  6、结语

  非功能需求描述的困难在于很难像功能性需求那样,可以通过结构化和量化的词语来描述清楚,在描述这类需求的时候,经常采用软件性能要好,查询要在多少时间内出结果,软件健壮性要好等较模糊的描述词语。这类描述词语都是脱离了软件的执行环境,人和相关的场景描述,因此信息很难体现到软件架构设计和具体的实现中。在架构设计中关注的安全,系统开发框架,并发和性能,异常日志等不是凭空产生出来的,而是来源于对非功能性需求的分析。

  对于非功能需求的描述,在描述过程中必须要强调到人、业务场景、环境等各方面的内容。强调的目的就是要说明非功能需求不是无限度的,任何一项非功能需求的实现往往会付出更大的研发人力成本和硬件网络成本。比如在描述一个表单的模糊查询功能的时候,如果简单地描述为所有查询都要在多少秒内完成,那么这种需求将很难得到满足。

  然而,非功能需求却着实在架构的制定过程中具有可观的影响力。它是软件设计中不能忽视的重点和难点。

  参考文献

  [1] Karl E.Wiegers.软件需求[M】。第2版。北京:清华大学— — 40 ——出版社,2004.

  [2]Suzanne Robertson.掌握需求过程【M】。北京:人民邮电出版社,2003.

  [3]温昱。软件架构设计[M】。北京:电子工业出版社,2007.

  [4]康凯,刘沛春。软件架构师讲座【z].国家信息产业部计算机技术中心,2007.

【非功能需求对计算机软件体系结构的影响】相关文章:

谈常见中药对肾功能的影响论文08-04

跑步运动对人体心肺功能的影响分析论文03-25

功能翻译理论对网络新闻翻译的影响08-22

解析OA系统功能模块需求08-13

求职:非英语人才的需求量加大03-27

银杏叶片对慢性心力衰竭患者心功能的影响11-13

谈谈护理干预对慢性心力衰竭患者心功能的影响论文06-20

测测你对婚姻的需求08-28

探究知识产权法律对技术创新的功能及影响论文08-31