软件架构的非功能性需求指标和区域化支持

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mysnake
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着计算机科学技术的发展,越来越多的人把关注的目光投入到了计算机软件领域,而软件构架中的非功能需求凭借其在软件设计过程中的重要地位更是得到了开发人员的重视。该文以非功能需求作为研究对象进行分析,从软件架构的概念谈起,阐述了非功能需求的发展历程,并详细介绍了非功能需求的常见指标,最后提出非功能需求的区域化支持这一概念。
  关键词:非功能需求;软件架构;区域化支持
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)09-2085-02
  The Non-functional Needs of Software Architecture and the Definition of Locale Support
  ZHANG Hong-sheng
  (Department of Public Courses, Xi’an Fan-yi University, Xi’an 710105, China)
  Abstract: With the development of computer technology, more people focus on the computer software field. However, the non-functional needs of software architecture, which have been playing a significant role in the process of software design, draw the attention of software developers. This paper is devoted to the non-functional needs of software architecture and concludes with the definition of locale support. It first presents the definition of non-functional needs, and then dates the development of them. After providing a detailed introduction of the major indexes of non-functional needs, it puts forward the definition of locale support.
  Key words: non-functional needs; software architecture; locale support
  軟件架构(software architecture)也称之为软件体系结构,它是一系列相关的抽象模式,用于指导软件系统各方面的设计。它是一个软件系统的草图,描述的对象是直接构成该软件系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通信。软件系统架构设计中的非功能需求不仅是架构师知识结构中的重要组成部分之一,也扮演了重要的角色,甚至会直接决定架构的组成。
  非功能性需求是随着软件系统的规模成长和复杂性增加这两个因素才逐渐成为软件工程师们的新着眼点和关注点的,早期的时候,甲方处于自身对软件技术的了解和自身对系统文件维护的方便性考虑等,对系统有了诸如:开发平台、技术流派、关键实现等等方面的要求,这被称之为“设计约束”。从甲乙双方合同的角度,设计约束也是一种需求——一种“非功能”性的需求,后来,软件的质量问题越来越突出,描述软件质量目标的要求也成为非功能性需求的一部分。于是,目前业界关于软件的非功能需求,一般就包括:质量属性要求和约束性要求。
  其实,非功能性需求是常常被轻视,甚至被忽视的。原因是它们不易被发现,发现后不易表达、实现以及测试。经管如此,软件架构也必须考虑非功能性需求,非功能性需求是一个软件是否优雅的重要体现。资深架构师与非资深架构师的主要区别就在于对软件非功能性的处理。软件架构的主要体现也在于非功能性需求方面。非功能性需求还涉及到架构设计中的性能,异常,日志,安全,可扩展性,稳定性等一系列问题。关注非功能性需求才会真正考虑架构中关键技术的选择,选择的准则就是满足非功能性需求,同时考虑设计开发的高效性。
  1 非功能性需求的常见指标
  1.1 什么是非功能性需求
  非功能需求是产品必须具备的品质或者它将事情做到了多好,它们可以让产品有吸引力、易于使用、快速、可靠或者安全。通常并不改变产品的功能,功能性需求是让产品工作的需求,非功能需求是为工作赋予特征的需求。所以说,功能性需求和非功能性需求是相辅相成密不可分的。非功能性需求经常被忽略,因为它们不易被发现,发现后不易表达、实现以及测试。其实我们很多时候都将非功能需求不自觉的融入到了功能需求中。软件产品的非功能性需求包括系统的性能、可靠性、兼容性、可维护性、配置、界面、安全性、可扩充性和对技术和对业务的适应性等。
  1.2 什么是非功能性需求的常见指标
  所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。其主要指标为:
  1)观感需求(界面需求)
  主要描述了对产品外观的期望、情绪和风格。这些需求规定了外观想要达到的目标,它和详细的界面设计还是有区别的,体现的是客户的感觉。作为web服务的一种的网银服务,应该相当重视观感需求,比如网站应该看起来很专业、很有权威性、显的很高贵、很精美等。界面需求还包括对控件进行规范和对控件的使用范围进行一个规定等方面的内容。可以考虑借用一个原型来描述。
  2)易用性需求与可执行需求
  易用性会使产品提高符合用户习惯的能力以及其对使用的期望。它会对用户使用产品的生产效率、错误率以及用户对新产品的接收程度产生很大的影响。
  可执行需求是指产品可以在给定的时间或者特定的精确度来执行某些任务,或者在一段时间内的极端状态值。在考虑执行需求时,可以从完成任务的速度、结果的精确度、容量、允许值的范围、单位时间内完成的任务数、资源的使用效率、两次故障间的平均无故障时间、连续不停机时间等方面入手。它还应该包括对风险的控制内容。
  3)安全性需求
  安全性指产品消除潜在风险的能力和对风险的承受能力。包含、保密性、可靠性和完整性三个子特性。保密性指的是数据不能被授权用户以外的任何人访问的能力。可靠性指的是授权用户可以不受阻止的访问数据、与其它软件的兼容的能力和产品的强壮度。完整性指的是安预期目标完成任务的能力。
  一般分为程序安全、系统安全、数据安全。程序安全是指开发的程序是否是安全的,程序上有没有安全的漏洞,例如Web开发中服务器代码没有对输入的参数进行验证,从而导致客户端机器人轻易的获取数据。系统安全指的是系统整体的安全,例如安全的粒度,未经授权的用户是否可以轻易的访问非法的数据等。数据的安全是对数据的保护,数据库中数据有没有做审核,用户之间是否会共享数据等。
  4)系统的完整性需求
  指为完成业务需求和系统正常运行本身要求而必须具有的功能,这些功能往往是用户不能提出的。典型的功能有:联机帮助、数据管理、用户管理、软件发布管理、在线升级,等等。
  并不是所有的系统都必须包括以上所有的功能,而是可以根据产品的使用环境和企业的产品发展决策进行挑选。例如,在线升级、软件发布管理适用于具有因特网或内网环境的软件产品;而数据管理对于产生数据存储的产品则是必须的,设计人员不应假设用户同时是一个合格的DBA,而且系统所产生信息的分布、关系,也不是DBA所应该了解的内容。因此,完整的系统应该包括数据备份、恢复、日志管理、垃圾数据清除等基本功能,哪怕这些功能的核心只是一条语句或命令。用户管理功能是另一项必不可少的功能,它定义哪些用户可以以什么样的功能使用系统。好的用户管理功能不仅可以有效控制用户对系统的使用,使系统处于一个安全、负载合理的运行状况,还能提高系统的应用适应性。
  5)系统的可扩充性与可维护性
  这里指的是当系统达到瓶颈的时候怎样在不修改代码的情况下提供系统的负载能力,扩展一般分为Scale UP和Scale Out。一般情况下会综合运用UP和OUT。例如,增加服务器的性能来提高系统的处理能力,但是任何计算机都会有一定的瓶颈,当增加服务器性能不能达到提高系统性能的时候,我们需要考虑横向的扩展服务器,也即Scale Out。在Scale Out时一般需要我们的系统是状态无关的,即Stateless。
  当技术变化或业务变化时,不可避免将带来系统的改变——不仅要进行设计实现的修改,甚至要进行产品定义的修改。好的软件设计应在系统构架上考虑能以尽量少的代价适应这种变化。常用的技术方法有面向对象的分析与设计以及设计模式。
  通过认识以上非功能性需求的常见指标,非功能需求的重要性主要程度要看项目具体情况而定,比如对于一个嵌入式系统软件运行开销非常重要,如果是实时系统,响应时间就很关键,如果是联机交易系统可靠性、安全性、性能都很重要。然而笔者认为在非功能性需求中还有应注意它的区域化支持。
  2 非功能性需求中的区域化支持
  2.1 什么是区域化支持
  区域化支持是指软件产品的适应性也就是产品的匹配性及兼容性,同时区域化支持也表现在不同区域的用户对产品的接受能力。
  2.2 区域化支持的作用
  区域化支持是提高软件产品的质量和推广软件产品应用的有效手段,当软件产品的适应性越来越高时,区域化支持在技术上能更有效地表现产品的可配置能力,从而提高质量,使得软件产品更为稳定。当用户对软件产品的接受越来越容易时,不同区域的用户对产品的应用会有同一感,更能有效的展现软件产品的人性化,进而使得软件产品容易进入不同区域。非功能性需求的区域化支持,在技术上关键是应该将任务划分成合适的组件并将它们恰当地组织起来,当运行条件发生变化时,这样我们不仅能降低其复杂性而且更加易于维护。在人们的需求和接受能力上,区域化支持又是测试产品是否能有效地应用,为我们后期维护与改进提供了珍贵的市场信息。
  2.3 如何实现区域化支持
  从区域化支持这一概念出发,我们只要做到软件产品具有好的适应性也就是不同情况下的应变能力;同时了解不同区域的用户的需求即对产品的接受能力,就可以实现区域化支持的非功能性需求。
  软件产品要有好的适应性其实就是软件产品要具有一种应变能力。这种应变能力即适应性,强调的是在不进行系统设计的修改的前提下对技术与应用需求的适应能力。软件产品的适应性通常表现为产品的可配置能力。好的产品设计可能要考虑到运行条件的变化,包括技术条件(网络条件、硬件条件、软件系统平台条件等)的变化和应用方式的变化,如在具体应用中界面的变化、功能的剪裁、不同用户的职责分配和组合等。
  不同区域的用户对软件产品的接受能力是不同的,这是一类特殊的需求,由于人的习惯、宗教、语言、禁忌或偏见,可能会导致产品不被接收。因此我们需要了解用户的特殊需求,从而实现软件产品大面积的需求,使得软件产品有效地应用于各个领域,进一步体现软件产品的价值。
  3 总结
  软件架构中的非功能需求是多样的、不定的, 然而其本质是相对固定的。我们应从非功能需求的根本出发, 正确认识 “质量属性要求和约束性要求”。现阶段软件架构中非功能需求的思想较新,还不成熟。这一思想要得到重视而不被忽视,就必须在多个方面深入地研究其思想和相关技术,并使研究成果能够应用于实践,并在实践中检验和发展。这一点对于从事软件设计开发的实践者是极其重要的。
  参考文献:
  [1] 杨秀杰,段立娜.基于模式设计软件架构的研究[J].计算机与信息技术,2007(32).
  [2] 姜滨.深入理解软件架构[J].甘肅科技纵横,2007,36(4).
其他文献
1病例资料患者男性,64岁,进行性活动后气促5年,以"右侧多发性肺大疱"入院。入院CT示(图1):右肺多发肺大疱,部分融合,肺气肿征伴散在纤维条索影;主动脉弓、降主动脉、胸主动脉钙化
摘要:目的:探讨心电图上Ⅲ导联异常Q波与超声定位诊断心肌梗死的对应关系及鉴别方法。方法:观察临床与超声确诊的32例心肌梗死心电图Ⅲ导联Q波与超声的对应关系。结果:25例下壁心
摘要:阐述移动学习的定义,说明移动学习的特点及优势;对移动学习平台的体系结构和功能模块进行设计,探讨了系统实现的关键技术。  关键词:移动学习;WAP;通信协议;M3gate  中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)04-0897-02  Design and Implement of Mobile Learing Based on WAP  JI Xiao-
随着计算机技术和网络技术的不断发展,网络辅助教学得到越来越广泛的应用,如何有效的开展网络辅助教学逐渐成为高等院校教学信息化建设关注的重要课题,网络辅助教学平台的建设成
目的:健康教育路径在糖尿病患者健康教育中的应用及效果。方法:选取我科于2006年7月~2010年5月期间收治的120例糖尿病患者作为研究对象,其中从2008到2010的60例患者实施健康教育
原变青等人的新型可撤销代理权的代理签名方案是一个安全且高效的方案,但是这个方案中提到的服务器上的列表还可以减少。基于此,现提出一个新的无需第三方的代理签名方案,方案基
类型一阶逻辑在传统的一阶逻辑上,引入了类型,它是多态多类逻辑程序设计语言的理论基础,对编译系统设计与实现的进一步发展具有重要意义。论文在类型一阶逻辑的理论层面进行
摘要:介绍嵌入式实时操作系统Small RTOS51内核的中断原理、方式及用户程序编写的要点, 对编程有指导意义。  关键词:Small RTOS51;中断;系统内核;任务;用户中断服务程序  中图分类号:TP316.2文献标识码:A文章编号:1009-3044(2011)28-7014-03  Theory and Application of Small RTOS51 Interrupt  Z
目的:探讨胱抑素C指标的优越性,可为基层医院更快捷地诊断肾功能损害.方法:对临床确诊的60个肾功能损害病例的尿蛋白、尿素、肌酐和胱抑素C指标进行关联性分析.结果:胱抑素C在肾
网络技术在教育领域的应用已非常广泛,创建一个基于工作流的远程辅助教学系统平台是现代信息技术发展在校园的必然体现。该系统是基于网络的,进行作业发布、收集、评价等任务