时间:2023-03-10 14:59:38
序论:在您撰写项目需求分析时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
中图分类号:TP311.52 文献标识码:A文章编号:1007-9599(2012)05-0000-02
我国科学技术和经济都在快速发展,信息化的进程速度也在加速发展,计算机已经开始应用到各个行业当中,很多应用软件业都纷纷涌现出来,各个行业的管理也逐渐走向了快捷化和数字化。现在很多客户对计算机的软件要求都比较高,需要完成很多复杂的程序,软件需求的设计作为一种前端设计,主要就是为了把客户的需求勾勒出来,软件需求分析做地好于坏能够直接影响到这个软件的成功和失败。在软件开发的市场当中,返工的开销很大,导致返工成本高的原因之一就是没有把需求明确化,一些人不重视需求分析,导致在项目完成后会进行大量的修改工作。这些更改的工作浪费了大量的时间、人力,推迟了软件项目的完成时间。可以这样说,需求分析是软件开发的基础,是项目顺利上线的基础。我国国内的软件开发的发展落后于发达国家,软件行业的缓慢发展制约了我国计算机行业的发展。我国自主开发的软件比较少,而且开发的工程项目都存在着缺陷,或者是开发失败了。当前我国正在培养软件人才,需求分析做地不好所导致了缺陷占据了一半以上,只有小部分原因是由于程序代码编写错误导致的,所以说,做好需求分析的工作能够有效提高项目的质量。通过对软件系统的学习,并且结合自己的经验,提出了一些有效的措施来做好需求分析的工作。
一、需求分析的目的
需求分析阶段是软件开发的最初阶段,需求分析得到的结果决定了后面的设计、编码、测试以及维护阶段,在需求分析当中如果出现了一个小的差错,就很可能会造成很严重的后果,所得到的产品就不是客户所需要的,就需要返工修改。在软件的需求分析当中一定要有很详细的文档,做需求分析的工作人员要弄清楚用户的需求,帮助用户解决业务问题,规划处软件开发的产品。需求分析阶段把用户的业务管理集中体现出来,这样才能够让用户认可自己的产品,加强管理的效果。需求分析要明确需要完成的工作内容,要把系统所要实现的目标完整化、清晰化、具体化和准确化,要能够深入了解软件的功能,确定一些细节的工作内容。软件需求要解决以后的工作当中需要做什么,首先要确定物理模型,之后确定逻辑模型,最后确定目标模型,如图1:
二、做好需求分析的措施
(一)了解项目企业
要能够了解项目企业的有重要影响的人,比如项目的负责人,这个负责人很可能让项目受益,当然也可能让项目受害,所以说,需求分析要从项目的启动阶段做起,项目的相关成员要清楚项目的负责人以及和项目有关的人,要能够协调他们的关系,要获取他们的支持,把他们对项目的需求和愿望都明确化,从而减少他们对项目的阻挠,确保项目能够顺利成功。一些开发的项目在进行调查分析的阶段的时候,受到进度方面的要求,分析员与企业的技术部门会有很多交流,导致了没有深入调查软件使用者的需求,也会造成之后复杂的返修工作,甚至是从头再来,这严重浪费了时间和人力,财力。所以,分析员要把握好软件使用企业的全貌,这才是需求分析的最基础的环节。在软件使用企业的相关人当中,最中意的就是人事部门,最好是能够画出单位的组织结构,并且分清人物的重要性,这样才能够全面进行调查,还要保证与软件使用企业的负责人的沟通。
(二)挖掘客户的需求
一些客户计算机知识很匮乏,没有办法提成比较准确的需求信息,所以,分析员要能够深思熟虑,在各个方面为客户着想,明确客户的需求,启发客户的潜在需求,并且结合各自分析技术来挖掘客户的需求,从而让客户满意自己的工作。分析员自身要熟悉相关的业务,要能够在客户的立场去考虑问题,要把软件与业务的关系协调好。可以使用可视化的调查方式,挖掘客户的需求,使用图、表等工具来进行叙述,让客户的需求更加全面,更加完善。在调查企业的高层领导需求的时候,可以提供总体的框架,而在调查管理人员需求的时候,可以选择业务流程图的方式来展示,在调查技术人员需求的时候,可以使用数据流图等图形进行描述,而调查各个流程的使用者的时候,就需要靠一些界面图来进行展示,与各个层次的人进行有效沟通。用户的界面很重要,虽然设计界面是软件设计者的任务,但是客户也可以提出自己的要求,一旦客户提出了这方面的要求,就要改善需求调研。因为在做 需求分析的时候,客户对软件没有很明确的概念,都是很模糊的,所以,分析员画出相关的界面来展示给用户,可以深入了解客户的需求,更好地做好需求分析的工作。
(三)平衡用户方相关人员的愿望
不同的人有不同的追求,用户有很多相关人员,他们的愿望也是很不同的,所以分析员要平衡好他们的愿望,这项工作是很难的。比如,医院系统当中,管理层希望软件系统能够方便数据的统计以及分析,但是基层的窗口就需要减少信息的输入量,客户希望能够加快办事速度,这些要求有些是相互制约的,所以不可能都满足客户的要求,尤其是比较消极的需求,这些都是需要平衡的。不同的客户也有不同的需求,所以分析员就需要决定,满足哪方的需求,要了解客户的种类信息,产品的业务目标,这会决定哪个用户群的要求更加合理。如果分析员的需求与开发者的需求不一致,就需要分析员进行进一步的需求分析。根据项目的业务目标来决定最关心的客户群,不是核心用户的需求就安排在下个版本当中去。
(四)详细描述各项业务
分析员要做到详细调查所有用户的需求,并且把客户的需求做成流程图,并且把这些业务做成档案与用户讨论,把描述错误的进行修改,协调好之后就让确认。对于具体的业务都需要分为很多步骤,所有步骤也都有自己的名称,一个步骤就可能对多个数据进行操作,需要调查清楚了用户的习惯,让开发出来的软件更加受欢迎。分析员要排除掉业务流程的制约,把业务的每步工作都作为很独立的对象,考虑到接口,把业务流程做好,从而能够更加方便去做修改的工作。可以通过资料的收集和整理的工作来完成业务调查的工作,这些资料关系到用户遵循的标准、作业流程、办事指南以及技术资料等等。
(五)强调实现项目需求的层次递进性
了解该系统或者该项目用户所能够提供的最小的工程费用。当预计经费不能支持时,应当考虑将项目分期实施。在系统上、技术上对用户进行引导性建议,使用户了解集成商所要进行的工作,了解集成商是为了帮助用户实现他的需要、达到用户的目的,而不仅仅是为了赚钱,用户更了解集成商,也更了解自己的系统,有利于以后的项目合作、工程实施和系统维护。分析用户曾用系统模式、数据结构和库模式,看是否保持、共用、转换,这涉及保护用户投资的问题。根据现在工作业务流情况确定现有的工作模式,还应兼顾将来可能会发生的变化、扩展、新规定,及与同国际接轨可能的带来的变化。考查工程实施环境是否有保证,尤其是网络工程,必须在需求调查时充分了解用户领域的实施环境,当不具有实施环境时,要求进行配套设计和环境改造。
(六)编写需求文挡
文档资料是集成商重要的财富,贯穿于系统集成和项目开发的整个过程,其中包括法律文档、技术文档、资料文挡。文挡要求完整性、一致性、可修改性、可跟踪性。以原来的需求为基础的工作完成后,要修补需求错误需要大量的工作,研究表明:比起在需求开发阶段由客户发现的一个错误,然后更正这一错误需要多花到倍的时间。因此,需要进行需求评审。需求审查结束的标准为:已经明确阐述了审查员提出的所有问题、已经正确修改了文档、修订过的文档已经进行了语法检查、所有TBD问题都已经解决、文档归档。
如果能科学地进行需求分析,采用一些技术来避免可能导致需求分析失败的情况,能圆满地完成软件需求分析任务,为后续软件开发做好准备工作。
参考文献:
[1]闫健恩,王翠华,林建秋,王俊义.用例建模在软件需求分析中的应用[J].内蒙古大学学报(自然科学版),2007,05
[2]崔巍,曾广周.面向组件的软件需求协同分析研究[J].山东师范大学学报(自然科学版),2002,03
[3]赵晋松,刘凤翔.测试控制方法在对日软件开发中的应用[J].中国科技信息,2009,22
[4]潘侠,王宇颖,洪家荣.软件需求分析生成环境RAGE/DFD的设计与实现[J].哈尔滨工业大学学报,1994,04
[5]吴洁.一种复杂系统需求和构架管理的分析工具(英文)[J].Transactions of Nanjing University of Aeronautics & Astronau,2005,03
[6]蒋国强.论软件需求分析方法和工具的选用――结构化分析方法和Visio2000的使用[J].计算机时代.2002,09
[7]冯径,马小骏,顾伯萱,沈苏彬,顾冠群.面向对象的网络需求分析工具研究与实现[J].小型微型计算机系统,2000,07
关键词:网站项目管理;需求分析;注意事项
中图分类号:TP368 文献标识码:A文章编号:1009-3044(2011)31-0000-00
伴随着计算机技术的不断发展和日益提高的用户需求,网站项目经历了由简单的HTML到ASP,PHP,.NET语言的编写,由一两名设计师自由创作到团体集体分工实施完成的转变,网站的设计和开发已经成为了一个越来越复杂的软件工程。目前,网站项目主要以B/S模式开发,以网络服务器为核心,浏览器为交互端的软件建设项目,是根据特定规范在预定的预算和时间内完成的网站开发任务,他可以是一个独立的网站,也可以是基于各种需要的网站应用程序。为实现网站项目的具体功能,达到预期的计划目标,网站项目必须建立规范、有效、健壮的开发机制,也就是要做好网站项目管理,其中需求分析尤为重要。
1 网站项目需求分析的必要性
需求分析是一个项目的开端,也是项目建设的基石,没有做好需求分析的项目是有高风险性的。据有关统计,失败的项目中有80%是由于需求分析不明确造成的,同为软件项目的网站项目建设亦是如此,当然这也是与网站项目自身的特点相关联的。
1.1 网站项目建设的特点
1)设计者与客户层次与认识存在差异,容易导致项目建设目标的不确定性。
2)网站项目涉及领域广,对参与项目的人员理解和研发项目提出高要求。
3)网站建设属智力密集、劳动密集型项目,受人力资源影响大。
4)开发技术的快速发展使得网站项目的开发具有多模式的特征。
5)网站项目底层编程较为专业,要有友好界面对项目各参数进行配置。
1.2 网站项目需求分析的作用
结合网站项目建设特点,网站项目需要以下几个步骤:首先业务员与客户接洽了解,确认立项,从客户代表那里获得需求后,形成需求报告;业务流程分析员分析需求报告,生成项目模型报告;界面工程师得到项目模型后设计制作相应的模板和用户界面原型,并最终由客户代表确认。可以看出,作为项目开端的需求分析直接保障了整个项目的正确性、可行性和必要性,对项目最终的检测性和简明性至关重要,也可以这么说,做好需求分析才能有的放矢,项目才有成功的可能性。
2 网站项目建设需求分析策略
上面我们已经了解了网站项目需求分析的重要性,怎样做好需求分析,形成分析报告并最终完成项目呢?
网站项目狭义地讲包括了网页制作、美工设计、程序编码、系统及网络管理等专业技术,广义上又包含了企业管理、市场营销、心理学、广告学等很多领域的知识,在业务员与客户沟通立项后,由于设计者与客户层次与认识事物存在差异,容易导致项目建设目标的不确定性,这就使项目组与客户的沟通出现了问题;另外不同行业客户的特殊要求(比如开发税务相关网站项目,就需要设计人员有一定的税务知识)也对参与项目管理的人员和研发人员提出了很高的要求,这就要求接洽业务员要加强客户所在领域的知识积累,能够将客户的需求转化成实际的程序输出,也能够将项目中的个模块以客户易于理解的方式进行说明,深度挖掘客户需求,并最终明晰项目建设目的,完成必要的项目需求分析。在项目组的准备工作完成后,我认为采集客户需求应该按照以下三个阶段进行:
1)第一阶段
目标:完成调查报告和业务流程报告,搞清供求关系。
采取方法:项目组采取主动“问答”方式,指定有经验的业务员和需求方进行沟通。
具体实施:项目中涉及的经理、页面设计员、程序设计员、测试员,文档起草等人员必须到场,通过访谈、调查表、填写意向表等方式从宏观上把握客户具体需求方向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等客观信息,与客户建立起良好的沟通渠道和方式。建设团队经理对搜集的信息进行汇总,各参与人员就获取的知识进行进一步的归类分析,页面设计员制定大略的视觉模版;程序员就网站功能进行拆解分析,列出网站需要的程序模块并就各功能实现的可行性对照现有的软硬件环境进行评估;文档起草准备完成调查报告和业务流程报告,进一步明细项目思路。
2)第二阶段
目标:完成调研分析报告,完成业务流程设计,进一步确认客户需求。
采取方法:项目组采取 “联想启发”方式,对第一阶段的调查进行完善和修改。
具体实施:项目涉及人员的要通过“联想启发”方式经一步与客户进行沟通,消除由网站项目建设的特点导致的众多不确定性。客户的需求往往是笼统的、分散的,第二阶段要对第一阶段的对网站项目的总体设计方向进行进一步的确认,可以通过展示企业以往开发的相似类别的产品实例、对网站项目的开发方法及运行方式和要求进一步说明,让客户等非专业人员对整站系统从前台到后台,从页面到代码,从架构到管理有一定的认识,从而是客户对自己的最终需求进行具体的描述。另外,项目组还要进一步了解客户的组织架构、业务流程,目前已有的软硬件环境,服务器现有的系统等,结合实际情况,架设调试服务器,作出基本的演示页面,和用户一起探讨业务流程设计的合理性、准确性以及站点浏览界面的习惯性和友好性,展现整个业务流程的设计,就建设目标的合理性和准确性进一步探讨,提出改进意见和改进方法。
3)第三阶段
目标:根据客户反馈修改演示系统,完成需求分析报告和业务流程报告,提交客户确认。
采取方法:对涉及网站项目流程和数据项的报告、文档进行“逐项签字确认”。
具体实施:在第二阶段需求分析工作的基础上,要求客户对前两个阶段的反馈意见进行审查,进一步明晰网站项目建设方向;承建方要对网站项目的流程进行进一步细化,对涉及的数据项要求客户进行逐项确认,另外承建方还要进一步改进演示页面,向客户描述整个网站项目的设计目标和输出结果,最终双方达成一致并签字确认。
总的来说,网站项目的需求分析是逐步深入,曲线前进的,要重视各个阶段的重点,将分析工作做到位才能做到省时、省力、省钱、高效,并最终保证整个项目的成功开发。
3 网站项目需求分析的注意事项
网站项目需求主要是指用户对网站系统在功能、行为、性能、设计约束等方面的期望,通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明。在整个项目实施过程中需求不明确、业务流程不合理往往是项目面临的最大风险,直接导致项目的开发失败或是客户不接受,因此必须做到细致了解客户意愿,明晰客户需求,采用必要措施来强化需求调研,需要注意以下几点:
3.1 深化沟通,强化需求分析
关键词:网站 项目管理 需求分析
1 网站项目管理的特点
网站项目是以Web服务器为主体、浏览器为客户端作为基本架构的项目。这样的架构项目中包含Web服务器、浏览器和网络三个关键主体。网站项目可能是一个网站,也可能是各种Web应用程序,例如网上商店、虚拟邮局、网络办公管理系统、客户关系管理系统等等。网站项目管理就是围绕着网站项目运用知识、技术、技能、工具和方法进行组织管理。其特点表现在以下几个方面:
1)涉及的领域很多。狭义地讲,网站项目包括了网页制作、美工设计、程序编码、系统及网络管理等专业技术,广义上又包含了企业管理、市场营销、心理学、广告学等更多领域的知识,在项目进行过程中还涉及到项目管理工具、文档和设计开发管理规范、开发及测试环境部署等特殊领域的问题。这对参与项目管理的人员提出了很高的要求。
2)参与项目的角色很多,水平可能参差不齐。对于网站项目管理,最关键的角色是项目经理、业务流程分析师、用户界面工程师、系统分析员、编码人员(程序员)和质量控制工程师等。根据项目的规模和开发的深度,由项目经理进行角色划分。假如严格细分,一个大型项目的角色可能达到50个以上,以确保每个细节都有专业的人员进行负责和管理。其中需求分析过程中主要角色有客户代表、业务员、业务流程分析师、用户界面工程师,另外还有项目经理、数据库工程师、文档工程师等参与。
3)网络应用的开发技术在日新月异地进步,从而使网站应用系统的开发模式具有多种选择性,达到同样的目标可以采用很多不同的方式,现代的应用系统越来越成为一个庞大的集成方案,需要考虑不同的操作平台、不同的应用服务器、不同的数据库、不同的编程语言、不同的传输介质等等,项目管理人员必须了解各种技术的利弊,帮助用户选择高效、廉价并富有前瞻性的方案。
2 需求分析在网站项目管理中的作用及要求
需求分析是一个项目的开端,也是项目建设的基石。由于以上提出的网站项目的特殊性和行业覆盖的广阔性,以及需求分析的高风险性,网站项目需求分析的重要性是不言而喻的,在以往建设失败的项目中,80%是由于需求分析的不明确而造成的。因此一个项目成功的关键因素之一,就是对需求分析的把握程度。
在需求分析流程中,需要有客户代表、业务员、业务流程分析师、用户界面工程师等角色参与,业务员从客户代表那里获得需求,并形成需求报告;业务流程分析员从业务员那里获得需求报告,分析生成项目模型报告;界面工程师得到项目模型后设计制作相应的模板和用户界面原型,最终由客户代表确认。需求分析所形成的文档最终达到如下要求。
1)正确性:每个功能必须清楚描写交付的功能。
2)可行性:确保在当前的开发能力和系统环境下可以实现每个需求。
3)必要性:功能是否必须交付,是否可以推迟实现,是否可以在削减开支情况发生时被“砍”掉。
4)简明性:不要使用专业的网络术语。
5)检测性:如果开发完毕,客户可以根据需求检测。
3 网站项目需求分析的一般方法
根据以往的工程经验,需求分析工作方法,应该定位在“三个阶段”(也称“三步法”)。
第一阶段:“访谈式”。这一阶段是和具体用户方的领导层、业务层人员的访谈式沟通,主要目的是从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体情况和客观信息,建立起良好的沟通渠道和方式。针对具体的职能部门以及各委办局,最好能指定本次项目的接口人。
实现手段:访谈、调查表格。
输出成果:调查报告、业务流程报告。
第二阶段:“诱导式”。这一阶段是在承建方已经了解了具体用户方的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体实际和客观信息的基础上,结合现有的硬件、软件实现方案,做出简单的用户流程页面,同时结合以往的项目经验对用户采用诱导式、启发式的调研方法和手段,和用户一起探讨业务流程设计的合理性、准确性,界面的便易性、习惯性。用户可以操作简单演示的DEMO,来感受一下整个业务流程的设计合理性、准确性等等问题,及时地提出改进意见和改进方法。
实现手段:拜访(诱导)、原型演示。
输出成果:调研分析报告、原型反馈报告、业务流程报告。
第三阶段:“确认式”。这一阶段是在上述两个阶段成果的基础上,进行具体的流程细化、数据项的确认阶段,这个阶段承建方必须提供原型系统和明确的业务流程报告、数据项表,并能清晰地向用户描述系统的业务流设计目标。用户方可以通过审查报告来提出反馈意见,并对已经可接受的报告、文档签字确认。
实现手段:拜访(回顾、确认),提交业务流程报告、数据项表;原型演示系统。
输出成果:需求分析报告、数据项、业务流程报告、原型系统反馈意见(后三者可以统一归入需求分析报告中,提交用户方、监理方进行确认和存档)。
整体来讲,需求分析的三个阶段是需求调研中不可忽视的一个重要部分,三个阶段或者说三步法的实施和采用,对用户和承建方都同样提供了项目成功的保证。 4 网站项目需求分析的注意事项和技巧
项目的整体风险往往表现在需求分析不明确、业务流程不合理,导致用户不习惯或不愿意去用承建方的软件。承建方和客户方都要重视需求分析的重要性。为更好地把握用户的需求和方向,应该采用必要的手段和方法来进行需求调研。
4.1 挖掘用户需求
鼓励用户将所有的想法尽可能地阐述清楚,并把所有的要求罗列出来。这时候不必担心引起客户的潜在需求而增加设计开发的工作量,应直接明白地跟客户把问题和要求一条条地列出来,把条理、归纳、分析先都放到一边,将用户最原始、最完整的要求准确地记录下来。
很多情况下客户并非专业人士,在他们的描述中很难凸现重点和技术难关,这需要我们去为客户进行分析、归纳和整理,尤其是客户谈的不多却又是技术上实现难度和强度很高的地方特别值得注意。客户往往对需求的概念是非常模糊的,大多时候给出的需求都是笼统而且尺度难以控制的,这就要求业务人员在倾听了客户的详细说明以后,帮助客户进行整理和分析,预测客户在开发过程中变更及今后应用中可能进行修改升级的潜在需求。
比如在为客户设计办公自动化系统的时候,也许就要为客户预留将来与他们的业务单位进行交互的通道;在设计邮件系统的时候要考虑可能会需要广告管理服务器;设计网络电子商店时需考虑今后增加库存产品进销存统计分析等等;限于时间和财力的考虑,客户通常能够接受分阶段实施的开发过程,在需求分析时,提早为客户设想到今后的需求变更除了使项目开发更加顺利以外,也为今后业务的进一步深入打下了更好的基础。
4.2 利用自然的语言和图表描述项目模型
在业务员与客户进行沟通和调查时撰写的需求分析,尽可能用自然语言或形式化语言来描述,还可以添加图形表述方式和模型表征方式。虽然客户的水平和资历有所不同,但是最自然的描述能够使项目开发的各个成员都能清楚地理解需求含义,不至于在理解上产生偏差。对客户而言,这样的模型描述最接近真实,容易参与修订,并能以此为测试和验收的依据。制作示意图可以有很多种方式,关键是利用示意图将客户的需求和即将开始设计的系统体现出来。在进行系统分析和程序开发之前,双方对今后要完成的产品就能够有直观的认识,换言之,就是在产品还没有真正进入开发阶段的时候,双方就对工作的结果达成统一的意见,这将大大地减轻需求变更所带来的困扰,同时客户更容易地参与到项目的开发过程中。
4.3 需求分析要共同参与各施其职
项目经理、系统分析员、开发经理、交互设计师、测试人员、文档人员包括客户代表都应该看需求分析,并进行共同讨论,达成一致意见。参与项目开发的人员都应该对这份需求有统一清晰的认识,并根据自己的工作对需求提出意见,通过与客户的沟通修订,最终确定项目实现的目标。这样可以尽量避免业务人员与开发人员、承建方和客户方之间发生不必要的纠纷。
例如:项目经理通过需求分析才能组建所需要的团队包括配置工作环境,制定开发周期;开发周期的限制和功能上的要求可能会影响到程序员采用什么样的语言和工具进行编写;操作用户的技能水平将影响到交互设计师进行前台设计时做到什么样的精度;界面设计人员根据项目的性质和定位确定表现方式;测试人员了解测试环境和条件后才能对项目质量进行跟踪和检测。
4.4 将需求变更置于可控状态
需求的变更几乎是不可避免的,也许是出自客户的遗漏,也可能是在开发过程中被激发出来的。如何以可控的方式管理网站项目需求的变更,对于项目的顺利进行有着重要的意义。如果匆匆忙忙地完成用户调研与分析,则往往意味着不稳定的需求。所以需求管理要保证需求分析各个活动都得到了充分的执行。
为了将变更及时反馈到项目的各个角色中,做好需求变更日志就显得非常重要。在需求分析后面附上变更日志,并将修改后的需求分析制作成新版本,保留每次更改过的版本,而不是覆盖,这样就比较容易地跟踪到需求变更过程中所带来的工作调整。在新版本的需求分析中,将变更部分用特殊方式表示出来,并在日志中记录变更明细。
4.5 评审需求文档
需求文档完成后,需要经过正式评审,以便作为下一阶段工作的基础。一般的评审分为用户评审和同行评审两类。用户和开发方对于软件项目内容的描述,是以需求规格说明书作为基础的;用户验收的标准则是依据需求规格说明书中的内容来制订,所以评审需求文档时用户的意见是第一位的。而同行评审的目的,是在软件项目初期发现那些潜在的缺陷或错误,避免这些错误和缺陷遗漏到项目的后续阶段。
关键词:需求分析;项目干系人;系统分析员
中图分类号:F270 文献标识码:A 文章编号:1003-3890(2012)05-0056-03
需求分析是软件开发过程的核心,其结果直接影响到整个的软件开发过程。据相关资料显示,因需求分析因素所造成的软件项目失败或缺陷约占60%,属于系统实施阶段的代码错误,而导致软件项目失败的比率约为40%。项目失败的根源在于需求分析不明确,需求调研不彻底,从而引发需求不断变更,最终导致项目停滞。这些变更不仅加大了开发成本、项目无法按时完成等严重问题,而且,还有可能引发用户方与开发方之间互相指责,导致项目搁浅。
一、软件项目需求分析的重要性
软件系统的开发主要分为五个阶段,分别是系统的需求分析阶段、系统设计阶段、系统实施阶段、系统测试阶段和系统维护阶段。而需求分析阶段是整个五阶段中的重中之重,在该阶段所占的工作量大概是整个软件开发项目的50%,逻辑方案是该阶段的最终成果。逻辑方案不仅是进行系统设计的依据,而且,还是系统最终验收的说明性文件。从以往的经验来看,需求分析做的不彻底,没有深层次的挖掘用户需求,往往可能导致整个项目无法达到预期的效果,或者说设计开发出来的产品不能满足用户的需求。
需求分析首先要对现有系统有充分的认识和了解,在此基础上,通过识别关键问题、分析项目的可行性、详细调查研究、系统化分析,最终设计完成该项目的新系统逻辑方案。只有系统分析员明白了用户的真正需求,才能开发出满足用户的软件产品。在这里,要强调一点的是,在做需求分析的时候,开发方一定要指派有实际工作经验的系统分析员来与用户沟通,而不是指派具体的开发人员,这将避免一些沟通不畅的问题发生。系统分析员在了解用户的基本需求之后,要以书面的形式,准确地制定出软件需求报告。该报告主要说明系统的行为属性,是项目开发过程中对系统的制约。要实现这一目标,就需要系统分析员与用户之间做到紧密协作,甚至系统分析员要深入到用户方的实际业务当中,把自己当做是用户,从用户的角度思考问题,只有这样,开发方才可以真正了解用户需要什么,系统应该做什么。
二、规范执行需求分析的流程
需求分析的过程,要严格执行规范化操作,囫囵吞枣式的需求调研是不可取的。开发方在做需求分析过程中,一定要严格把关,从对用户负责的角度出发,并且也为了降低自己的开发成本,对无法与用户实现很好沟通的项目经理要及时叫停,避免后续工作无法正常进行。
按照需求分析的过程,同样也可将其分为五个阶段:首先要获取用户需求,其次是分析用户的需求,第三是编写需求文档,第四是评审需求文档,最后是管理需求。规范执行需求分析的流程,是需求分析能否成功的关键。图1是根据实际工作经验总结出的需求分析工作流程:
在需求分析过程中,开发方要深入用户方的各个部门,最简单的项目也要做到用户确认需求和需求评审两个过程,复杂的项目甚至要做到多次。
三、尽快熟悉项目用户方干系人全貌
项目干系人又称为项目相关利益者,是指积极参与项目、或其利益会受到项目执行或完成情况影响的个人或组织,项目干系人对项目的目的和结果施加影响。项目管理团队,即开发方,必须识别项目干系人,确定他们的需求和期望,尽最大可能地管理与需求相关的因素,以获得项目的成功。因此,应当从项目的启动开始,系统分析员用户方相关人员的配合下,逐步分清项目用户方干系人具体包含哪些人和部门,通过开方法与其沟通加之用户方领导的协调以驱动他们对项目的支持,从而减小其对项目的阻力。
有些项目在做需求调研时,因受用户方提出的进度要求等因素影响,有些系统分析员不愿与用户过多地交流,只是发一些调研表做一些大概的了解。往往是因为开发方已有与该建设单位相似的原型,会亟不可待地去推广,这样会导致某些差异需求得不到深入了解,用户方只能被动地去适应原型系统,这样的做法是不可取的。另一种情况则是开发方与用户方的技术部门交流比较多,而向业务部门和实际使用人员调查的力度不够,往往容易造成原型试用后,与用户的需求不一致,不得不再对需求做较大调整,造成开发周期不断延期,开发成本大大增加。因此,熟悉项目用户方干系人全貌是进行需求调研的第一步,也是需求调研的基础。在定制的开发项目中,最重要的是要弄清楚用户方中的组织结构关系、业务流程关系、数据流程关系。制定该项目的牵头单位,在此基础上,使用图表的形式将这三种关系表现出来。
四、采取正确的方法获取用户需求
2 什么是需求分析
结构化软件开发一般分为分析、设计、开发、测试、验收与运行等阶段。开发前,会进行前期的可行性研究;在运行开始以后,还要进行后期维护。需求分析是结构化开发中的重要阶段。通常情况下,国内软件开发公司在做欧美和日本的项目时,对前期的可行性研究参与得较少,一般都是对方已经做完可行性研究,国内软件开发公司从需求分析开始做起,直到软件开发后的运行和维护。所谓需求分析,是指对要解决的问题进行详细的分析,弄清楚客户的需求,包括需要输入什么数据,要得到什么结果,最后应输出什么,等等。可以说,软件工程当中的需求分析就是确定要计算机做什么。
3 需求分析的重要性
从需求分析的定义上,就可以看出需求分析在软件开发过程中的重要性了。需求分析做得不对,后面的步骤做得再好,也只能是南辕北辙,无法满足客户的要求。研究表明,改正产品付诸应用后所发现的一个需求方面的缺陷,比在需求阶段改正这个错误要多付出大约100倍的成本。而另一项研究发现,在需求开发阶段发现的一个错误,平均仅需要花30分钟修复,但若在系统测试时发现则需要5-17个小时来修复。
需求工程的成功与否直接关系到系统给的命运,需求工程绝对不是软件开发的前期任务,而应该在整个系统的生命周期里都扮演着重要角色。在需求工程阶段解决和根除需求引起的问题可以大大降低生产和维护的成本,提高用户的满意度。在软件开发的过程中,需求工程阶段是了解用户需求的最佳时期,但很大一部分用户不知道、不了解需求工程,以至于在和他们交流的时候,他们都不能准确完整的说出自己的需求,因而对于从事需求工程的人员来说,能够正确的理解用户的需求观点,利用一些方法和技巧来启发用户阐述清楚自己的需求是很重要的。需求工程作为了解并实现软件开发者的目标的重要手段,有着不可替代的作用。
比如一个失败的案例:由于和客户签订了合同,5个月必须交付软件,开发时间紧迫,导致项目计划时做需求分析的时间只给了2周时间(理由是客户的文档已经提供好了,照着做即可)。结果,由于前期对客户文档理解得不是很清楚,导致开发进行到3个月的时候发现需求上有争议。在和客户确认后得出结论:如果要满足客户的要求,则需要对整体架构进行修改。虽然最后按期交付了软件,但是整个项目组最后两个月每天都在加班,包括周末,而且软件质量也没有得到客户的充分认可。
再如我們在了解客户需求的同时,应该尽量了解客户为什么要这么做,帮客户一起想需求,以便我们开发的软件能够更好地为客户服务。每天开完会后,我们应该把客户的需求整理好,发给同事进行研究分析,建立简单的基础模型并研究技术可行性。需求分析结束后,保持每周至少3次电话会议与客户进行沟通,随时了解客户的需求。最后正因为在前期阶段进行了这种细致的需求分析,项目组在很少加班的情况下,不但按时交付了项目,并且得到客户的充分认可。
4 软件需求分析的任务
软件工程的发展来源于信息需求对它的推动,现在互联网技术和应用越来越成熟,信息的获取也逐渐变得简单和完整,但是由于资源的开放性、系统与系统的相互渗透性、用户的变动性让需求变得多目的、多变化,增加了软件制作的难度,但同样带来了巨大的用户市场。需求的获取同样也是困扰软件工程的绊脚石。需求与资源的搭配不合理,就会影响软件工程的发展。未来适应变化多端的用户需求,必须让软件也随之变化。要满足多样化的信息需求,提取合适的信息需求建立模式,就要有相应的系统对需求信息进行分析和总结,通过程序化的模式来制定切实可行的软件方案。
国项目中,在前期分析时软件开发的核心技术人员和测试人员就已经进入项目组,每天技术人员会对分析的结果提出技术实现的难点以及改进的方法,笔者在随后的会议上就会和客户进行讨论,尽量在满足客户需求的同时,使用更简单可行的技术,这样就为以后的开发奠定了基础,使开发时的工作量大大减少。测试人员也在需求时提出从测试角度看到的问题,同样在需求分析阶段得到解决,节省了大量的开发时间。
需求工程在未来发展中会有如下几个方面的着重考虑:(1)缩小需求工程在理论研究阶段取得的成果同实际应用中得到的效果的差距,通过得到的结论来更好的设计软件;(2)规范需求工程的各种机制,可以有需求工程规格数据的搜集、整理、制作、实现以及维护,也可以有需求工程的问题的解决办法;(3)保证需求工程有较高的质量。这一点是需求工程最为关键的要求,质量的高低直接影响了未来实现效果的好坏。需求工程就是对未知问题进行探索、处理的过程。未来必然会朝着对象具体化、分析自动化的方向发展。
5 进行需求分析的注意事项
5.1 需求分析是分析人员与用户共同的责任
用户必须对软件功能和性能提出初步要求,并澄清一些模糊概念。而需求分析人员则要认真了解用户的要求,细致地进行调查分析,把用户做什么的要求最终转换成一个完全的、精细的软件逻辑模型,并写出软件的需求规格说明,准确地表达用户的要求。在一些项目中,由于时间紧迫,一些模糊问题没有及时澄清,导致最后返工,影响了项目进度。
5.2 需求分析阶段研究的对象是软件项目的用户要求
需要注意的是,必须理解用户的各项要求,但又不能全盘接受所有的要求。在一些项目中,针对客户提出的需求,了解客户的意图后,发现技术上实现有很大难度。我们了解到这个需求对客户来说不是十分重要,于是和客户商量出一个折中的解决方案,绕过技术难点,并且没有降低客户满意度。
5.3 主动积极了解客户业务和相关知识
求讨论集中于业务需求和任务,因此要使用术语。客户应将有关术语教给分析人员,而客户不一定要懂得计算机行业的术语。由于通常情况下客户对计算机术语了解不多,需求分析人员应该尽量将计算机术语转化成通俗易懂的语言,这样便于和客户沟通。而对于客户方面的术语,一方面不懂的时候一定要问;另一方面也要多学习。
Abstract: This paper analyzed the demand conditions of the training program, and determines whether the gap between the actual status and ideal state can be narrowed by training and determines the specific training program through a series of survey analysis, including, the investigation of personnel's quality, the results performance level and the common goals of organization; then carried out a detailed evaluation of both by comparing the advantages and disadvantages of the training project at home and abroad.
关键词: 培训项目;需求分析;模型
Key words: training project;demand analysis;model
中图分类号:C975 文献标识码:A 文章编号:1006-4311(2012)30-0239-03
1 培训项目需求分析的界定
培训项目需求分析自从出现以来到现在一直有大量的学者在研究,在某些观点上肯定存在着某些偏差,但是整体上都认同培训项目分析基于四个方面的:第一是与理想状态的差距是进行培训项目需求分析的基础;第二是业绩绩效水平是进行培训项目分析的依据;第三是培训项目需求来自组织和个人;第四是培训项目需求分析不仅要对是否进行培训提出判断,也要对针对什么做培训作出解答。综合起来培训项目需求分析可以理解为通过一系列的调查包括人员素质考察、业绩绩效水平和组织共同目标等来分析研究,判断出实际现状和理想状态的差距能否通过培训这种方式来缩小,以及要具体怎么样来培训解决的过程。这个概念是由由麦基(McGehee)和泰勒(Thayer)等人在1961年提出的。
2 国外培训项目需求分析模型及理论述评
2.1 Goldstein三层次模型 二十世纪八十年代,I.L.Goldstein与E.P.Braverman、H.Goldstein三人经过长期的研究将培训项目需求分析系统化,构建了Goldstein模型。这个模型中的培训项目需求分析包括组织分析、任务分析和人员分析三部分(如图1)[1]。
从图1中可以看出Goldstein模型分析是从组织、任务和人员三个方面来进行分析研究的,在这个模型中,组织分析研究主要是针对组织中需要培训的部门和员工是否需要培训来展开的,进行分析之前要在满足组织经营战略的条件下才能进行,最终目的是要保证整个培训的计划满足组织整体的目标规划和战略要求;任务分析主要包括对培训项目需要的理论支持和技能支持,以便来确定各项培训项目的内容,并且要分析出各项培训业务的难易程度和重要性;人员分析主要针对组织中员工来进行,从他们的实际情况出发,分析员工的实际能力标准和理想水平中的差距,也就是所说的“目标差”,这样形成培训的目标和培训内容的有效依据。
Goldstein模型目前看来是对培训项目分析最全面的一个模型,也是在学术界得到普遍认同的分析模型,但是还是会有一些缺点和不足,主要表现在三个方面:第一是该模型没有考虑到外界环境对组织的影响;第二是进行人员分析时,这个模型的侧重点在于研究员工业绩绩效水平和理想水平之间的差距,只关注到了员工必须要培训的项目,却没有对员工想学什么、想培训什么没有加以重视;第三是实际培训项目实际分析研究的过程中,这个项目还是缺乏一些可操作性的分析方法,没有一个标准的指导,这也是该项目存在的最大不足。
2.2 培训项目需求差距分析模型[2] 美国学者汤姆·W·戈特将培训项目分析出来的“差距”,也就是“实际水平”和“理想状态”之间的距离叫做“缺口”,建立出一个培训项目差距分析的具体模型(如图2)。这个模型是针对员工现有的实际技能水平和理想技能水平两个方面来分析培训需求状况的。
在培训项目差距分析模型中我们重点掌握两点:第一是是只要“理想水平状态”存在,必定与“实际水平状态”之间有一个差距;第二是差距一旦产生就会有培训需求,也就是说培训需求=理想水平状态-现实水平状态。
同样这个分析模型也是会有一些不足和局限性的,表现之一就是没有充分关注组织的战略目标对培训需求的影响;其次表现在它的有效性会在一个假设前提下进行也就是“培训活动=绩效提高”,存在依赖性。更深一步的分析可以对这个前提提出两个命题:第一死后业绩绩效问题百分之百是由于理论知识和技能与态度的不足产生的,第二是培训能百分之百的转化成员工的绩效。
2.3 前瞻性培训项目需求分析模型 前瞻性模型是由美国学者Terry.L.leap和Michael D.Crino提出的。将“前瞻性”思想运用在培训项目需求分析中是该模型的精髓(如图3)[3]。
该模型认为员工在企业中肯定会不断地成大,技术技能也肯定会一直在提升,也就是说员工可能会对目前的工作绩效感到满意,但是也有可能会职位调动或者升职做准备,由于工作内容和工作性质的变化可能需要一些培训指导,为员工的升职或者适应工作变化提出培训的要求。前瞻性培训分析模型就是为这种情况作出的支持,给培训指导作出一个分析框架,对员工的个人职业规划和任职能力等方面都做了一个的指导价值。
但是这个模型也会存在一些缺陷,“前瞻性”培训需求项目分析只是分析了对员工未来发展方面,忽视了针对企业发展的需求分析,所以说可能这个模型的分析结果不能够对组织战略目标和业务发展的要求做一个统一,会有模型设计和组织战略目标不相联系的情况出现。
2.4 胜任特征模型 确定特定职务的胜任特征(Competency)是培训需求项目评价的新的趋势之一,胜任特征这一概念是由McClelland于1973提出的[4]。胜任特征模型主要是针对员工个性化表现的一个分析,是指在一项工作或组织中表现优异的人和平庸的人分开来的单个人表面层次特征和深层次特征的分析。主要包括在知识、技术能力、社会角色和自我认识概念、特质和动机等方面通过测量和计算来显示区分优异绩效和一般绩效的个体特征。该模型是综合来说是企业定的工作岗位所具备的要求和优异绩效相关的一些胜任特征的总合。它主要是强调培训需求分析和培训的结果应该能提高员工对未来的职位的胜任的特征。
胜任特征模型导入培训项目需求分析中是非常有必要的,因为首先胜任特征的分析是针对员工个性化的分析,有可测量性的特征存在,可以使得整个分析过程更加的标准化和具体化,再次这个模型也很好地补充了Goldstein模型在培训任务分析方面操作性弱的缺陷,两者做了很好地补充,模型中对各项分析明确能力标准,让企业在业绩绩效的评估方面也更加简洁方便。第三是胜任特征的模型使得员工非常容易理解企业对自己的要求,促使个人建立行动导向的学习。
但是胜任特征模型也没能够对企业的战略目标要求纳入分析范围之内,没有重视企业战略对是否进行培训项目和培训结果对企业战略的影响,这是和差距分析模型是存在一样的问题的。要知道企业的战略目标的改变会对员工等个方面也新的要求的,也就是说会长身新的胜任特征需求或者改变原来的胜任特征的要求标准,会相应的对企业员工的培训需求带来不同的要求。在一个方面,胜任特征概念是非常复杂的,一项工作或者岗位所需要的胜任特征是需要长时间的积累和丰富的技能经验和知识来判断的,所以说建立胜任特征模型需要要求相当专业的访谈技术和后期的技术处理技巧,同时耗费的成本试试非常高的,这也是企业中人力资源管理部门的水平提出了相当高的要求。
3 国内培训项目需求分析模型及理论述评
最近几年,我国的相关学术者在对人力资源开发的研究分析中,也渐渐地认识到培训项目分析对企业组织的重要性。
我国的学者在研究借鉴国外培训项目需求分析的理论知识和模型的时候,也进行了创新和新的观点的提出。主要是表现在以下几个方面:
于苗和孔燕[5]认为企业战略目标与员工培训需求之间存在着密切的联系,提出了以战略为导向的培训项目需求分析模型(如图4所示)。
这些学者指出在企业的发展壮大的过程中,企业的经营战略目标的选择和边和都会影响着员工培训的需求。企业战略是一个动态的变化的概念,企业在发展到一定的阶段或者为适应市场的变化和不断的进行调整和改变。培训项目需求的分析也会不单单是要求如实的反应企业现在的战略情况,而且要求具备前瞻性,也就是通过培训要实现预防和避免一些问题的出现,能够很好地辅助企业战略目标的布置和实施,促进其更好的实现。培训项目需求的分析中以企业战略为主要导向,弥补了差距分析模型和前瞻性分析模型的不足和却像,让培训项目需求的分析可以转到以组织委重点。但是这个模型目前看来只是从理论上对企业战略目标和培训项目需求两者的关系进行了分析,没有对通过对战略分析怎么样转到对员工行为标准培训等方面的实际操作上来,实际上是降低了操作性。另外该模型认为培训项目的需求仅仅是来自企业战略目标的需求和企业员工的现状的差异,并没有对企业中其他的要素和企业员工个体化的需求对培训项目需求的影响引起足够的重视。
马士斌、黄永华[6]认为在培训项目需求的各种影响因素中员工职业生涯规划是很重要的一个方面,培训项目需求分析模型要充分考虑到员工职业生涯的重要性(如图5)。
他们认为企业整理利益和员工的利益是有相关性的,不存在哪个利益重要,企业和员工是两个平等的利益主体,并且认为企业的发展是建立在企业员工个人利益和员工个人发张基础之上的,员工发展了,企业才能更好地发展,认为企业的培训是应该和企业员工的个人职业规划挂钩的,是分不开的。这个模型主要有三大特点:首先是重视员工个人职业发展,将企业的目标需求和员工个人的职业生涯发展有效地结合了起来;其次是考虑到企业和员工的现有需求和长期发展的需求,前瞻性的培训项目需求分析也充分的做到位;第三是企业员工能够真正的参与到培训项目分析的整个过程中,最主要的培训项目的需求也得到了充分的拓展,更体现了以人为本的思想。
4 国内外培训项目需求分析模型及理论比较
国内的培训项目需求的分析主要是分析理论知识和模型的结构建设两个方面,拓宽了分析的内容和分析的角度,但是定性的研究成果分析的比较多,在模型建设方面的研究比较少,主要是针对培训项目需求分析的效果和内容等理论角度分析的比较多,研究的角度也大多是比较宏观的角度,在微观角度证明项目培训需求的课题比较少。
在国外,这种培训项目需求的分析,在理论是实践上都有很多经验,并有很多的成功的范例,这些项目需求分析的成功对我们而言,是一个重要的参考,不过我们也应该认识到,国外在这一领域的研究虽然比我们成熟,但是也存在一些弊端和局限性。因为在国外的研究中,往往强调企业的需求和绩效水平在需求中的影响,而对人的作用,也就是企业员工的发展并没有重视起来,另外,由于处在不同的文化环境中,相对于国外,国内的企业受政府政策的影响要远远的高于国外,这也使得培训项目需求的来源有很大不同。
参考文献:
[1]Raymond A. Noe, John R.Hollenbeck, Barry Gerhart, Patrick M.Wright, Human Resource Management[M].3rd Edition,北京:清华大学出版社出版,2000,212.
[2]王鹏,时堪.培训需求评价的研究概况[J].心理学动态,1998,(4):15-18.
[3]吴琼琼.人力资源开发管理技能[M].北京:华夏出版社,2002,317.
[4]Mc Clelland,S.B,Training needs assessment data-gathering methods: Part 1,survey questionnaires.Journal of European Industrial Training[M].1994a,18,(1):22-26.
关键词:科研软件;需求分析;开发模型;质量保障
0引言
随着科研机构、高校承担的国家大型科学工程项目越来越多,在这些大型科学工程中,软件起到不可或缺的作用。如中国科学院高能物理研究所承担的硬X射线调制望远镜项目[1]、BESIII项目[2]中的数据采集软件、探测器和数据监测软件是获得物理成果的基础,而模拟软件和分析软件则直接关系到物理成果的处理和精度。这类软件项目有较深的物理学背景,需要使用一些物理分析和设计方法,实现手段必须符合领域特点。例如,数据存储在粒子物理实验和空间天体物理实验中的要求不同,前者主要采用ROOT[3]格式,而后者则以FITS[4]格式为主,开发所用的常见库和工具也因数据存取格式不同而不同。此外,该类软件应用面较窄,仅限于某一科研领域,其开发很难由软件公司承担,因为软件公司必须投入大量的学习成本,而产品应用又受局限。因此,这类软件的开发一般由科研院所、高校自行承担。然而,目前我国软件整体实力与创新性还不强,人才结构也需要改善[5],一些从事基础研究的机构,软件人才紧缺,且缺乏软件开发管理经验,造成软件质量不高。科研机构从事软件开发的科研人员学习能力强,热衷于追求新技术,如果在方法上给予指导,可帮助其开发出高质量的软件。依托大型工程培养所需的软件人才,不仅有利于大型工程项目的实施,而且还能为国家培养大批软件人才。本文结合该类软件项目的特点和科研机构现状,探讨其软件开发特点,并提出流程管理和质量保障措施。
1科研领域软件开发及其特点
1.1软件项目特点
(1)软件提出者。一般是项目科学家、顾问,他们具有较强的科学洞察力,也能较好地把握软件开发方向,但他们大多只关注宏观问题,而非技术细节,对软件不是很了解,不能用计算机语言和思维描述项目,也无法很好地理解和描述实现流程、细节,因此不能准确估计软件开发难度和工作量。
(2)软件开发者。一般为青年职工和学生,他们熟悉软件开发,但往往不能完全理解项目目标,也不能深刻理解其物理过程,理解过程中往往思维局限性大,缺乏方向。
(3)软件测试者。多数情况下单元测试由开发者承担,集成或系统测试由其他人员完成,部分由用户完成。与开发人员相比,测试人员往往物理基础较好,掌握基本测试方法,但是没有建立起完整的测试体系,而且将软件测试当作“副业”,测试以功能实现为主,对软件细节不了解。
(4)用户。用户一般是物理工作者,他们熟悉研究领域的物理要求,但不能用计算机语言描述需求,往往需求不实际或不够明确。他们对软件要求较高,要求通过物理测试对软件性能和输出结果精度进行测试。如通过运行大数据量检查软件内存和时间消耗,以促进开发者进行算法优化等。
1.2软件项目开发特点
(1)软件需求不够明确。科研领域软件项目一般都涉及到探测器和数据,涉及领域较广,而且需求不断变化。无论是软件提出者还是用户,往往难以用计算机思维或语言清楚描述问题;软件开发者对项目物理目标,特别是物理过程缺乏深刻理解,不能很好地理解软件功能细节及需求。比如,对于一些数据分析软件,提出者或用户难以描述出软件需要完成的功能,而开发者对数据处理流程中进行的数据转换、修正、数据结构重组也缺乏深刻理解。
(2)人员结构较为单一。软件开发中通常一人需要承担多种角色,包括软件需求分析员、设计者和开发者,甚至测试者。这样的职位设定,人员分工不明确,难以深入把握某一领域(比如测试)的特点和方法,从而影响了整个软件开发过程。
(3)软件实现细节难以把握。此类软件一般涉及复杂的物理过程,需要用一定的物理方法解决,但方法并不唯一,不同方法会对结果带来一定影响,而且不同类型数据所依赖的方法也不同。软件开发中还有些研究性课题,只能以接口形式存在于软件中,但预留接口时往往设计较为简单,考虑的情况过于理想,难以满足实际需求。然而,如果设计时考虑得比较复杂,接口较多,又往往缺乏必要的软件技术和经验,不能有效把握细节。
(4)硬件频繁改动增加软件开发风险。软件依赖于硬件,设计初期软件是在理想的硬件设计状态下运行,但如果硬件发生变更或者运行影响因素增加,软件也随之变动,从而加大开发风险。
(5)软件测试及评估缺乏专业水平。由于开发者、测试者与用户的专业测试能力都比较欠缺,难以涉及到核心质量问题,往往无法全面对软件作出专业评估。
(6)人员管理难度大。科研机构、高校一般热衷于科学研究而不是工程项目本身,因此难以兼顾两方面工作。软件提出者和管理人员往往对软件工程缺乏深入了解,难以对开发工作作出客观评价,因此对软件开发的进度和质量带来一定影响。
(7)软件不确定性因素多。随着工程实施,软件提出者、用户会不断改变、增加需求,加上开发者及测试者缺乏相关经验,代码开发不规范、开发人员流动性强等增加了软件开发的不稳定性。另外,为降低开发成本和难度,开发人员通常会引入现成的工具,这可能给软件开发带来隐患。然而,面向某一科研领域的软件开发项目也有自身的优势。如和大型专业软件相比,所需的项目功能不是特别多,部分开发平台具有可移植性,开发人员综合素质较高,学习能力强,英语基础较好。此外,很多工程与国外合作开发,可参考国外成熟软件,并方便引进一些免费的软件框架和平台,如Gaudi[6]框架、天文分析工具库Ftool[7]等。
2软件开发流程管理
2.1确定软件开发模型
科研机构,尤其是一些缺少经验的团队,习惯采用瀑布模型进行开发,主要由于该模型分阶段,且各阶段间存在因果关系,比较符合思维模式。但它会产生大量文档,到开发后期会凸显软件开发缺陷。适合科研领域的开发模型有迭代式模型[8-9](需求变更驱动型)、增量模型(功能驱动型)及快速原型开发[10]等。对于科研软件而言,模型选择需综合考虑软件框架稳定性和开放性、构件独立性以及项目组开发经验等。比如对于需求不明确、流程不清晰、算法不确定的项目(如数据处理软件、分析软件和标定软件等)采用迭代模型或者快速原型开发较好。此外,采用一种模型为主,其它模型为辅,也会得到很好的效果。
2.2加强开发流程控制
无论采用何种开发模型,开发人员必须在每一次开发或迭代中完整实现需求分析、设计、编码和测试等步骤。各阶段的评审或项目报告尤为重要,项目前期要确保软件开发人员准确理解项目需求以及软硬件环境;中期阶段要确保开发流程和方法可靠;后期要通过测试确保软件运行符合要求。
2.3需求分析中注重物理分析
科研软件中一般涉及大量数据操作,而且过程比较复杂,一些原始数据要经过转换、重建、标定及修正等步骤,而且处理不一定是线性的,即相邻数据之间可能有关联。这些功能和性能需求不容易明确,需要着重把握。软件中还可能涉及一些物理算法(比如图像修正、频率分解等),因此在需求分析中需要着重进行物理分析,包括流程梳理、特殊方法和条件选择等。
2.4采用串行开发方式
科研机构人员结构比较单一,往往多项工作并行执行,给软件开发质量提升及人才培养带来不利影响,可将相关性比较强的软件以串行方式开发,数据产品生成软件和数据分析软件可以依次开发。
2.5提高开发人员的主观能动性
软件开发过程中,保障软件项目负责人在经费使用及绩效考核中的话语权,组建凝聚力强的研发团队,对软件开发的进度、质量进行考核。
3软件质量保障措施
(1)加强开发过程中的沟通。科研项目的不确定性带来软件开发需求的变动,用户往往只注重项目需求功能满足,而不关心软件的实现细节,所提出的功能或接口可能不切实际,因此需要加强与用户的沟通,明确软件开发目标。
(2)充分调动开发人员积极性。科研机构软件开发人员往往是科研项目的幕后工作者,其工作成果容易被科研项目成果所掩盖,所以充分调动软件开发人员的工作积极性尤为必要。一方面,为其提供成果展示平台,尤其是展示创新性成果,如将开发中的文档整理成册等;另一方面,在基金申请、职称评定等方面提供支持。科研机构职称评定主要依据取得的科研成果,由于工作内容不同,如采取同样的评审条件,软件开发人员与其他研究人员在同一层次上竞争将缺乏竞争力。可能导致部分人员不愿意从事软件开发工作,或者开发软件的同时还从事其它研究,从而影响软件开发进度和质量。因此,需要根据软件开发人员工作的特殊性,通过有效的激励措施调动其积极性。
(3)培养既懂管理又懂技术的项目负责人。优秀的软件工程项目负责人不仅是一个好的软件设计师,对软件实现细节能够很好的掌控,还是一名优秀的管理者,能科学配置资源。
4结语
面向科研领域的软件具有较深的行业背景,其设计方法、实现手段有很强的领域依赖性。本文从科研领域特点及软件提出者、开发者、测试者、用户的角度出发,探讨了其需求难以明确、人员结构较单一且管理难度大的特点。在软件开发管理过程中,需要采用合适的软件开发模型,注重流程管理,充分调动开发人员的工作积极性。
参考文献:
[1]LITIPEI,WUMEI.ThehardX-raymodulationtelescopemission[J].Physics,2008,37(9):648-651.
[2]LITIPEI.HXMT:achinesehigh-energyastrophysicsmission[J].NuclearPhysicsB,2007(166):131-139.
[3]BESCOLLABORATION.PreliminarydesignreportoftheBESIIIDetector[Z].2003.
[4]TheROOTTeam.ROOTuser'sguide[EB/OL].https://root.cern.ch/drupal/content/users-guide.
[5]WELLSDC,GREISENEW,HARTENRH.FITS:aflexibleim-agetransportsystem[J].A&AS,1981,(44):363-370.
[6]APrimerontheFITSDataFormat[EB/OL].http://fits.gsfc.nasa.gov/fits_primer.html.
[7]刘丽梅.中国软件产业市场竞争力分析[M].北京:对外经济贸易大学,2007.
[8]BARRANDG.Gaudi-asoftwareconfigurationmanagementtool[C].ProceedingofCHEP2000,2000.
[9]FTOOLS.Ageneralpackageofsoftwaretomanipulatefitsfiles[EB/OL].http://heasarc.gsfc.nasa.gov/docs/software/ftools/ftools_menu.html.
[10]张海籓.软件工程导论[M].北京:清华大学出版社,2005.
[11]师迎海,何雪慧.迭代式软件开发模型研究及应用[J].微处理机,2015(1):55-57.