论软件产品设计中的需求分析_第1页
论软件产品设计中的需求分析_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、论 HYPERLINK javascript:; t _self 软件产品设计中的需求分析【摘要】优秀的产品设计可能是软件企业发展的重要契机。本文从功能设计角度论述怎样通过对技术、业务的分析和把握来设计具有良好适应性和可重用性的软件产品。【关键字】产品设计 软件适应性 可重用性 软件工程 软件产品是指软件开发商根据市场需要开发的、具有一定适用性和潜在客户的、可销售的软件成品。它区别于应特定客户需求或根据订单开发的软件商品,通常应 具有更高的通用性和适应性。但它的通用性和适应性不是轻而易举就能达到的。要实现软件的产品化,就必须在软件产品的设计上下一番功夫。本文结合一个多媒体远程教学系统实例,探讨

2、软件产品设计中的一些经验与看法。一、软件产品设计的重要意义 所谓软件产品设计,在本文中指对软件产品的功能与架构进行设计。用传统的软件工程术语来说,它覆盖软件工程的可行性研究、需求分析、系统设计几个阶段。 用RUP(Rational Unified Process统一软件过程)术语来说,它是需求定义与软件构架设计的结果。软件产品设计包括了需求分析、功能定义、技术方案以及需求管理的策略。 我们可以看见很多这样的例子:企业做完一个产品后,便不得不长期甚至永久地投入几个人(通常还是曾参与研发的技术骨干)对产品进行维护、跟踪和服务;企 业在做同类项目时,还不得不投入几乎相等的资源;系统集成企业或以管理类

3、项目为主的研发企业长期为工程所困,良好的市场需求并不能带来利润回报的规模增 加,等等。造成以上现象,一是由于企业的软件过程成熟度不高,另一个原因,就是缺乏清晰、深入的软件产品设计。优秀的产品设计可能是软件企业发展的重要契 机。好的产品设计可能使企业走向产品系列化、服务规范化、内部管理规范化的良性发展之路;而差的产品设计不仅将造成现实的资源浪费,甚至有可能使产品从此 成为软件企业的一个枷锁。其实,产品设计的来源最终都是市场。设计的好与不好,反映了设计 者对技术、业务、以及用户需求诸方面的现状以及变化规律把握的结果。下面从功能定位入手,探讨怎样进行产品设计。我们所举的例子的主体假设是一个典型的系

4、统集成企业,在多媒体系统集成项目上有较多的工程经验,在软件研发上也小有积累,市场研究认为多媒体技术在培训、教学领域将大有可为。二、软件产品的分类及定位 与一般的针对用户明确需求的软件项目的需求分析稍有不同,软件产品的功能定义更多的是一种定义,而不象面向特定用户的系统,其需求定义是一种记录、 归纳和分析的过程。它看起来的自由度比较大。正是这种自由度可以带来产品的升华,使工程产品化。即使对于特定用户的软件需求,我们也有必要在满足特定用户 的特定需求的同时,对相关技术和业务进行适当的分析和预期,使得项目的成果具有更好的适用性和重用价值。 软件产品可以分为两种:面向最终用户的和面向软件开发或集成商的。

5、第一种主要指面向不限于 HYPERLINK javascript:; t _self 计算机技术人员、完成一定应用功能的系统;后者指供专业的软件 开发人员使用、用于构造第一种产品的中间产品,它可能是一个完整的系统平台,也可能是一个开发包或一个小的程序工具。不同种类的产品具有不同的特性要 求:面向集成商/开发商的产品要求可靠、可扩充、有详尽的技术说明、有一定的技术适应性;面向最终用户的产品则要求功能完整、可靠、可维护、有较好的应用 适应性。其实,设计人员还可以根据市场形式开发介于以上二者之间的半产品,即通过 简单定制可以生产出应用系统的半成品,但又不同于严格意义上的开发平台或是零散的开发工具包。

6、这种半成品很实用,不仅可以提高本企业的生产 率,为产品系列化打好伏笔,还可以在适当的市场时机作为商品提供给系统集成商,为企业带来额外的利益。到底要开发什么类型的产品,是软件产品设计的第一个重要决策。我们假设的多媒体远程教学系统定位在半成品上,希望开发出能直接用于某种应用场合(如企业培训),但可以根据应用需要进行定制、扩充,广泛应用于 HYPERLINK javascript:; t _self 其他相关应用,如专业培训机构、网络化学校教育等。三、软件产品的非功能性需求定义 软件产品的需求可以分为功能性需求和非功能性需求。其中软件产品的非功能性需求是常常被轻视、甚至被忽视的一个重要方面。其实,软

7、件产品非功能性定义不 仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是使产品在非功能性需求面前捉襟见肘,甚至淹没 功能性需求给用户带来的价值。所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有的、除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性、对技术和对业务的适应性,等等。下面对其中的某些指标加以说明。1、系统的完整性指为完成业务需求和系统正常运行本身要求而必须具有的功能,这些功能往往是用户不能提出的。典型的功能有:联机帮助、数据管理、用户管理、软件发布管理、在线升级,等等。 并不是所有的系统

8、都必须包括以上所有的功能,而是可以根据产品的使用环境和企业的产品发展决策进行挑选。例如,在线升级、软件发布管理适用于具有因特网 或内网环境的软件产品;而数据管理对于产生数据存储的产品则是必须的,设计人员不应假设用户同时是一个合格的DBA,而且系统所产生信息的分布、关系,也 不是DBA所应该了解的内容。因此,完整的系统应该包括数据备份、恢复、日志管理、垃圾数据清除等基本功能,哪怕这些功能的核心只是一条语句或命令。用户 管理功能是另一项必不可少的功能,它定义哪些用户可以以什么样的功能使用系统。好的用户管理功能不仅可以有效控制用户对系统的使用,使系统处于一个安全、 负载合理的运行状况,还能提高系统的

9、应用适应性。2、系统的可扩充性与可维护性指系统对技术和业务需求变化的支持能力。当技术变化或业务变化时,不可避免将带来系统的改变不仅要进行设计实现的修改,甚至要进行产品定义的修改。好的软件设计应在系统构架上考虑能以尽量少的代价适应这种变化。常用的技术方法有面向对象的分析与设计以及设计模式。3、技术适应性与应用适应性 系统的适应性与系统的可扩充性和可维护性的概念相似,也表现产品的一种应变能力,但适应性强调的是在不进行系统设计的修改的前提下对技术与应用需求的适 应能力。软件产品的适应性通常表现为产品的可配置能力。好的产品设计可能要考虑到运行条件的变化,包括技术条件(网络条件、硬件条件、软件系统平台条

10、件 等)的变化和应用方式的变化,如在具体应用中界面的变化、功能的剪裁、不同用户的职责分配和组合等。对以上重要的非功能性需求进行逐一分析后,就可以开始进行产品功能设计了。实际上,非功能性需求定义将反映到系统的功能设计中,表现为系统的架构。下一节中将会描述怎样实现系统的适应性。四、软件产品的功能设计要点1、产品核心功能的选取软件产品的设计,一定有一个明确的目标:或是为了解决某个或某类具体的应用问题,或是为解决问题提供一个或一组工具。产品的目标决定了产品的核心功能,产品的其他功能都是对这一功能的补充或围绕这一功能提供的相关服务。适当选取核心功能,有几点原则: (1)规模适当,不贪大求全,坚持有所不为

11、。具体来说,在一个产品中,非核心功能尽量的简化和弱化。以多媒体远程教学系统为例,核心功能应该是 基于网络的多媒体远程教学,包括同步教学和非同步教学。与教学相关的学籍管理、教务管理、答疑考试、收费管理等辅助功能则采取最小化原则进行设计。这样既 可以突出产品的技术特点,又可以避免以己之短搏人之长,显得产品在培训教育方面不够专业。等到核心功能稳定在产品中以后,再专门针对不同的应用要求研制不 同的产品系列,如网校版、中学版、企业版等等。(2)了应用要求以外,还可以 根据关键技术进行版本规划。由于不同的技术对设备会有不同要求、并产生不同的应用效果,因此可以在相同的业务框架下构造基于不同技术的不同产品。例

12、如,微 软与多媒体相关的技术有流媒体技术、DirectShow、DirectPlay、TAPI等,RealNetworks也有完整的流媒体技术开发平台。 这些技术分别具有一定的功能和性能特点,同时也各有其局限。利用它们的组合可以形成面向不同细分市场的产品。例如,针对以灌输为主、对交互性和实时性 没有要求的单向式培训,设计以流媒体为主要技术的产品版本;针对实时性和交互性要求很高的教学和培训,设计以DirectShow和DirectPlay 为核心技术的产品版本。(3)尽量遵从标准协议和行业标准。除了计算机系统有多种技术标准 和协议外,各行各业还有自己的行业标准。例如,对于多媒体远程教学系统而言,

13、牵涉的标准和协议有媒体格式MPEG标准、流媒体传输和控制协议等;在应 用领域有国家教委颁布的关于远程教育的建议标准。这些都应该充分考虑。有时不参照标准或自定义一些协议处理解决方案带来一时的快捷,但往往生命力和可靠性 经不起时间的考验,在系统与其他相关系统联合使用时就会带来问题。2、多重可重用性的分析与设计 可重用性是现在软件设计较为重视的一个特性。可重用性不仅应该在系统设计中考虑,还应该在系统分析时就加以考虑,使系统达到多重可重用性。这就要求我们 不仅要采用面向对象的思想来进行系统分析,用对象概念构造系统行为,还要求我们在更高层次上对系统的操作模式或应用模式进行抽象,发现更高级的可重用性。 仍

14、旧以多媒体远程教学系统为例。如果仅在系统设计时考虑可重用性,则产品可能达到部件级的可重用,即系统的某些核心特性可以在反复用于相关产品的设 计之中;而如果我们加入对应用操作模式的抽象,对于直播、流媒体与课件同步、现场控制等构成应用的操作环节进行面向对象的分析,就可以获得更 好的可重用性。如果设计得当,一个产品可以同时满足直播教学、培训、股评、案例研讨等含有相同应用模式的多种不同应用环境,甚至连一行代码也不用重写。多重的可重用性实际上就实现了非功能性需求中的应用适应性。无论我们设计面向哪些用户(最终用户/系统集成商/软件开发商)的产品,进行一些多重可重用性的分析都是有益无害的。3、辅助功能的设计

15、这里提到的设计得当,就包括辅助功能的设计这一重要因素。前面所述的非功能性需求有一些就反映在辅助功能的设计中。在我们把最终业务用户作为产品的 唯一用户时,我们把全部注意力放在产品的主要功能设计上;当我们把产品的用户范围扩大到系统管理人员、数据维护人员以及系统集成商/软件开发商时,我们就 必须对产品的辅助功能给予足够的关注。对于应用软件产品,重要的辅助功能至少有以下这些:(1)在线帮助功能:这仍然是面向业务用户(当然也要面向其他用户)的一项功能,用于使系统更为友好。在线帮助功能通常设计成能独立运行的文档形式,如html格式。(2)数据管理:面向数据维护人员。虽然 HYPERLINK javascr

16、ipt:; t _self 数据库管理系统都有现成的数据管理功能,但专门设计的数据管理可以更简便、易于使用,而且可以完成数据库管理系统本身所不能完成的 HYPERLINK javascript:; t _self 工作。(3)日志管理:面向系统管理人员。良好设计的日志功能可以作为系统管理人员或产品设计人员监视系统状态、追踪系统问题,以及作为用户使用系统的审计依据。(4)用户管理:面向系统管理人员。用户管理与下面的两项功能一起使用,可以使系统适应不同的用户功能分配需求。系统管理人员可以最大限度地灵活指定不同用户所能执行的不同功能项,消除通常造成软件产品在用户手中水土不服的最主要的因素。 (5)功能定义及功能表的自动生成:面向系统管理人员,定义系统的所有可操作功能项,并在用户进入系统时自动生成由管理员为之分配的功能表作为其主菜 单。这一功能对于含有数据库和Web界面的系统特别适用,它使得系统具有自动演化的能力即系统在运行时即可替换其部分功能,并且所有的功能权限 在统一的控制之下。这正是系统可维护性的最高境界。(6)系统配置:面向高级用户或专职的IT人员,根据实际需求定义系统的技术 HYPERLINK javascript:; t _

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论