您好, 访客   登录/注册

浅谈软件设计的需求分析与体系结构

来源:用户上传      作者: 陈红波 郑晓妮 范祖楼

  摘 要:为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发获得成功的前提和关键。本文从软件设计的需求分析和需求分析对系统体系结构设计的影响两方面,浅谈了软件开发人员怎样才能全面、准确、具体地了解用户需求,以确定“目标系统必须做什么”的问题以及根据需求的变化,设计合适的体系结构,达到增强软件生命力的目的。
  关键词:软件;抽取;需求
  信息化产业经过几十年的发展和建设,正逐步从最初的用于解决局部问题的小型或简单软件,向复杂、成体系、网络化的企业级系统扩展。软件系统的构成不再只是模块,越来越多的是功能构件和子系统,使软件系统成为“系统的系统”,或叫复杂系统。如何构建可扩充、可裁剪、可生长的满足企业应用的大型软件系统,已成为软件业研究的重要课题之一。其中,复杂系统的结构设计是人们最关注的核心问题。
  1 软件设计的需求分析
  软件通常是因需求才进行设计开发,由用户方从解决业务问题的角度提出,均以专业的术语或事务性的语言描述。高质量、清晰准确的需求描述,可有效约束软件系统的结构设计和功能定位。边缘清晰、描述规范的要求,会在一定程度上降低软件设计和开发的成本,提高软件质量和开发效率。但是,需求的成长和变化,往往伴随软件的整个开发过程,这种现状使得软件设计的难度不断增加,程序开发也从传统的开发方法向敏捷编程转化。
  用户基于一定的业务需要提出需求,通常不能直接指导软件的开发,只有经过软件设计者的分析提取,通过规范的技术语言描述,形成面向软件开发者的需求规格说明,才能指导软件的研制。抽取需求是软件设计师必须完成的工作,传统的需求抽取方法一般包括面谈、问卷、观察和业务文档研究等,这些方法简单、成本低,对业务逻辑清晰、封闭性较好的需求比较适合,而对复杂且很难封闭的需求,采用传统的抽取方法,则风险很大。在软件开发领域,需求抽取方法有原型法、联合应用开发法和快速应用开发法三种。
  1.1 原型法
  通过构造软件演示系统,即根据理解的需求,建立一个快速而粗糙的工作模型,由可视化方法获得用户的反馈。
  1.2 联合应用开发法
  是将领导、用户、开发人员、系统设计师等召集起来通过会议的方式,集中所有人的智慧,对要求进行分析抽取。
  1.3 快速应用开发法
  就是集前两种方法,加上最优方案的系统研制而进行的一种需求抽取方法,是一种快速软件开发方法。
  以上是目前常被采用的需要抽取方法,但对于系统分析员或系统设计师来说,无论采用哪种方法,都必须面临提取关键需求、判断需求增长点和发展方向的问题。
  2 需求分析对系统体系结构设计的影响
  2.1 抽取影响软件结构的需求,是需求分析的核心
  关键需求是软件结构设计的核心,而提取关键需求是软件结构设计师必备的技能。以一个数据录入软件为例,一般需要提供一个交互式界面,由用户键入所需数据,提交存储到文件或数据库里即可。但用户要求录入的数据项,应能随着业务的不断变化而进行增加或删减,可多人同时进行录入。同时,要求对存储的数据按照需要的方式进行查询调阅,甚至进行一定的复合计算或评估分析等。对于这样的需求,录入项不断变化、多人同时操作、存储要求等都是核心元素,这些元素将直接影响软件结构的设计。软件设计应考虑分布式并发机制和大量的数据存储访问要求。这些需求均与功能无关,但会影响软件结构的设计。数据库访问相关的软件,一般采用传统的C/S结构。当用户增加到一定量时,该结构会导致数据库服务器负载加重,甚至系统崩溃。为了适应这种变化,应采用多层结构,将用户操作与数据存储进行分离。采用多层结构,不仅可以缓解数据库服务访问压力,还能降低数据库变化给用户操作带来的影响。录入项的变化需求,潜在地存在着数据项扩充、界面调整等功能要求。一般情况下,完全适应这种变化的软件很难设计。为此,可把录入项作为配置要素,界面设计和数据存储项根据配置项进行定制,应用服务层要在接口设计上考虑数据项的扩充能力。具有这类需求的软件,一般由界面构造工具、录入界面、应用服务软件和数据库服务器构成。
  在抽取关键需求的过程中,抽取与业务无关的需求非常重要。“与业务无关”指支撑业务功能运行且与业务处理逻辑无关的功能。传输服务是典型的与业务无关的功能,在任意基于网络运行的软件中,不可避免的需要信息传输功能的支持。抽取与业务无关的需求,需要分析人员有丰富的软件设计经验,这种公共需求的抽取,有利于开发过程中软件的重用,可降低开发成本。
  2.2 关注需求中与规模发展相关的因素
  软件设计应用规模的发展速度,是软件结构设计时应考虑的主要需求之一。规模是考验软件支撑能力的主要因素。规模的发展可能是用户量的膨胀,也可能是数据量的迅猛增长,或两者都有。软件能力的成长性设计,通常会使开发付出代价,这是由于一方面在设计初期没有考虑这种成长性,导致设计失败;另一方面,虽然考虑了成长性,但由于软件复杂度的增大,增加了开发成本和风险。因此,对并发和负载的设计,应在设计之前就要给予充分考虑。
  2.3 捕捉需求的变化方向
  确定需求的增长点是考验软件适应能力的关键。需求的变化和调整是客观存在的,软件设计者分析需求时,应考虑到需求中可能存在的变化点或变化趋势,以提高软件的适应能力和成长能力。需求的增长点通常隐含在企业发展和技术发展中,一类是业务发展引起的工作流变化或增长。这种软件结构应具备新业务处理软件的集成能力;一类是业务转向。原有的业务处理软件不能满足转向后的业务处理要求,存在改造、裁剪、新增能力等潜在需求。软件结构还应具备可裁剪、可扩充的能力,否则将会造成巨大的经济损失。
  抓住需求的变化点,设计合适的体系结构,可增强软件的生命力。面对需求多变的现实,降低结构的耦合度是有效缓解软件适应能力的方法之一。但是,降低耦合度一般会带来效率或系统复杂度的上升。因此,小型软件选择这种方法应慎重。(下转第16页)(上接第13页)
  综上所述,设计满足需求的软件结构,重点关注的是功能,而设计适应需求变化的软件结构,关注的往往是非功能性需求,这需要系统设计师除了具备丰富的经验和敏锐的洞察力外,还应花大量的时间和精力同用户不断沟通与交流,从中获取最需要的需求,以支持软件整体结构的设计。
  参考文献:
  [1] 张海藩.软件工程[M]北京:人民邮电出版社,2004.
  [2] 李千目等.软件体系结构设计[M].北京:清华大学出版社,2008.
转载注明来源:https://www.xzbu.com/2/view-4680266.htm