软件工程项目管理需求分析
摘要:科研机构、高校承担的大型科研工程越来越多,软件在工程项目中扮演着重要角色。结合科研领域软件开发特点,介绍软件开发流程管理及质量保障措施等,可为科研软件的质量提高及创新提供一定借鉴。
关键词:科研软件;需求分析;开发模型;质量保障
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.RO✌OTuser'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.
[12]刘玉仁,董震曜.快速原型法在软件设计中的应用[J].光电对抗与无线干扰,2002(4):6-9.
作者:赵海升李兵聂建胤宋黎明单位:中国科学院高能物理研究所