APP下载

软件项目建设的可行性研究与工程设计

2017-06-13武振宇赵力帅刘鹏李耕宇

电信工程技术与标准化 2017年6期
关键词:可行性研究工作量生存期

武振宇,赵力帅,刘鹏,李耕宇

(中国移动通信集团设计院有限公司,北京 100080)

软件项目建设的可行性研究与工程设计

武振宇,赵力帅,刘鹏,李耕宇

(中国移动通信集团设计院有限公司,北京 100080)

云计算资源池承载了越来越多的业务应用,传统的应用系统扩容改造变成了“纯软件”的项目。本文结合软件工程的方法与思路,就纯软件项目中设计单位的职责与界面做了分析,并总结了纯软件项目的可行性研究报告与工程设计的编制要点。

软件项目;软件工程;软件生存期

1 背景

随着电信运营商云计算建设规模的不断扩大,云资源池上承载了越来越多的业务应用。云计算不仅给业务部署带来了根本性的变化,也给系统扩容改造的模式带了新的变化与挑战。在以往的系统扩容改造中,为了满足业务能力的提升需求,不仅要增强软件功能,承载其业务能力的硬件资源也要进行相应的扩容改造,即软硬件同时扩容。而在云计算环境下,承载业务的硬件资源完全由云资源池提供,某个业务系统的扩容只需改造相应的软件功能,硬件的扩容由资源池扩容项目统一考虑。

这种工程建设模式的变化给工程设计单位带来了不小的挑战。以往的系统扩容改造一般是硬件为主,软件为辅,建设单位与设计单位的关注点大部分在硬件扩容上,工程投资也是硬件占比较大。

而在云计算环境下,硬件资源的扩容都由资源池统一考虑了,单个业务系统的扩容改造则主要以软件为主,变成了一个“纯软件”的项目。

纯软件的项目没有了硬件需求的测算,没有了机房、空调、电源的查勘,没有了配套材料的预算,没有了施工图绘制,没有了费用定额可参考,设计单位的工作一下由“硬”变“软”了。

同时,建设单位对软件项目的要求也由粗到细,要求在“纯软件”系统的扩容改造中,也要直观地看到设计单位的“工作量”。这对设计单位来说是一个严峻的挑战。

下面,根据工程实际经历,结合一般软件工程的生命周期管理,本文对“纯软件”项目中设计单位的职责与任务做一简要的梳理、分析。

2 软件工程及其生存期

2.1 软件工程

软件工程就是设计、开发、运行、维护软件的方法。软件开发工程也需要按照一般工程的方法和原则进行组织和管理。这些方法和原则,贯穿于软件生命周期的整个过程。这个过程叫做软件的生存期。

一般来讲,软件生存期可以划分为6个阶段:制定计划、需求分析、软件设计(有别于工程设计)、程序编码、测试及维护。

2.2 软件生存期

(1)制定计划:确定开发软件的目标,描述软件的功能、性能等要求;阐述开发该软件的必要性及可行性,提出可行的方案,并对开发的成本及效益作出估计,制定工程进度,提交给项目主管部门审核。

(2)需求分析:对业务部门提出的需求进行分析,并加以归纳整理。编写项目申请及可行性研究报告,提交给项目主管部门评审。

(3)软件设计:设计是软件工程的核心,在设计阶段中,把已经确定了的业务需求搭建成一个相应的体系架构。架构中的每一部分都和相应的业务需求对应,这就是软件工程中的概要设计。随后对每一部分要完成的内容做具体的描述,为程序编码做准备,这就是软件工程中的详细设计。注意:这里的软件设计并不是我们项目建设的工程设计。

(4)程序编写:把软件设计转换成程序源代码,实现既定的软件功能。

(5)软件测试:测试是保证工程质量的重要手段,通过测试,认定需求分析阶段的业务需求是否实现,软件系统运行是否稳定,从而决定软件是否合格,能够上线使用。

(6)运行维护:系统上线后,便进入运行阶段。由于各种原因,运行的软件还需要进行修改。

2.3 软件生存期模型

软件生存期模型反映了软件生存期内各种任务的衔接关系。包含了从软件项目需求定义到运行和维护所需要实施的全部任务。常见的软件生存期模型有瀑布模型、快速原型、螺旋模型等。

瀑布模型按照顺序的方式展示了软件工程的各项活动,包括开发计划、需求分析、软件设计、程序编码、测试及运行维护。如图1所示。并规定了它们至上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

上述各项活动逻辑上是顺序的,但不是完全自上而下的。每一项活动结束后输出物都作为下一项活动的输入物,一项活动开始之前,都要对上一项活动的输出物进行评审,如果上一项活动的成果得到确认,则继续进行,否则返回上一项活动,甚至更前面的活动进行返工。

瀑布模型本质上是一种线性顺序模型,各阶段之间存在着严格的顺序性和依赖性,特别需求的重要性,在着手进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软件需求,然后开始实现这些需求。

快速原型法是在客户需求尚不甚明确的时候,迅速搭建构造一个可运行的软件原型,用来帮助理解和澄清问题,从而得到较为明确的客户需求,然后在原型的基础上不断评价、修改、迭代,最终达到一个满足用户需求的软件产品。而在实际的项目过程中,频繁的修改可能会导致软件产品质量低下。快速原型法可以作为软件需求分析阶段的工具或者方法,一旦需求确定,还是要“冻结”需求,进行下一步工作。这样一个项目才能够继续健康推进。

图1 软件生存期的瀑布模型

螺旋模型兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型在每个迭代阶段都使用瀑布模型法,在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目逐次迭代。每个迭代周期都包括需求定义、风险分析、工程实现和评审4个阶段。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,然而采用这模型导致项目建设周期长,很难让用户确信这种方法的结果是可以控制的。

在实际的软件项目中,电信运营商为了保持投资的时效,为了保证项目的进度和满足阶段性的需求,项目的实施过程必须要有严格的顺序性,所以,快速原型法与螺旋模型都不符合当前电信运营商对项目管理的要求。

3 建设单位对项目的管理

3.1 立项审批

对于一个项目,建设单位在征集业务需求之后,要进行初步的可行性论证,然后据此编写项目建议书。

项目建议书是一个项目生命周期初级阶段的重要环节,是项目建设单位向上级主管部门提交项目立项申请时所必须的文件,也是可行性研究的依据。只有项目立项申请获得审批,该项目生命期才得以继续。

在本阶段,建设单位需要整理征集来的业务需求,形成需求说明,同时还应参考相关的指导性文件或建议、相关技术资料,完成项目建议书,向上级主管部门报请立项。表1列出了立项审批阶段的项目输入与输出物。

表1 立项审批阶段的项目输入与输出

3.2 可行性研究

在项目立项获得审批之后,就要开始编制项目的可行性研究报告。可行性研究报告对项目相关的需求和建设内容以及配套条件,从技术、经济、工程等方面进行调查研究和分析比较,得出项目是否可行的结论。对于论证可行的项目,可研报告须给出方案建议及投资估算。

在本阶段,不仅生成项目的可行性研究报告,还将依据可研报告生成设备采购清单、技术规范书,供项目流程继续流转,完成采购,为工程设计做好准备。表2列出了可行性研究阶段的项目输入与输出物。

表2 可研阶段的项目输入与输出

3.3 工程设计

在可行性研究报告批复之后,依据可研报告进行主设备采购,然后开始做工程设计。设计阶段进一步细化可研报告的建设方案,根据设备采购情况确定设备安装方案、配套方案,绘制施工图纸,编制工程预算。表3列出了设计阶段的项目输入与输出物。

表3 设计阶段的项目输入与输出

3.4 软件工作量评估

在可行性研究阶段,一个很重要的工作就是项目的投资估算,依此进行设备采购。由于应用软件开发的特殊性,软件开发工作量评估一直是业界的难点与重点。

软件开发工作量的评估方法,一般有经验法与模型法两类方法。曾有人提出以源代码行或功能点来进行模型法估算,但实施起来难度较大,而且效果也并不突出。目前国际上还是采用经验法估算的较多,国内各软件企业也是采用经验的方式对软件开发工作量进行估算。

经验法又叫类比法或者历史数据法,是基于专家经验的评估方法,由专家预估软件开发工作量后,按一定的方法进行整理计算后得到最终的工作量评估。

经验法适合评估一些与以往项目类似的项目。通过比对新旧项目情况得到估计数据。基本步骤如下。

(1)整理分解出项目的功能点,分别估计每个功能点的工作量。

(2)对比每个功能点与以往项目差异,特别是以往项目做得不足的地方。

(3)通过前两步得出各个功能点的工作量估计。

(4)汇总整个项目的工作量。

类比法的准确度主要依赖于以往项目数据的准确度,因此,使用类比法的前提有一个良性循环的项目后评估机制,这样,历史项目提供的数据才是可信赖的。

软件工作量评估是一个专门的话题,在本文中不再详述。

4 设计单位在软件项目实施中的职责

4.1 设计单位在软件工程中的角色

根据前述,软件工程分为定义、开发、维护3个阶段,而定义阶段,是整个软件工程的基础,也是软件项目实施中的重点和难点。在定义阶段,要完成项目的需求调研、立项审批、投资评估、可行性研究、技术规范书、供应商采购、软件功能设计等一系列重要的任务,只有定义阶段的工作得到夯实,软件项目后续阶段的工作才能顺利健康进行。

定义阶段也是建设单位管理投资项目的重要环节,是管控整个项目的重要抓手。在这个阶段,设计单位必须和建设单位密切配合,不仅要完成项目的可行性研究报告、一阶段设计,还要协助建设单位进行投资评估、采购招标等重要工作。

4.2 设计单位在软件项目建设中的职责

相对于硬件建设项目,软件项目只少了硬件设备安装部分,其余的工作一概没少。而由于业务需求的随机性和软件功能的主观性,软件项目的实施过程要比一般的硬件项目更加复杂、繁琐。这就要求设计单位对项目的深入不仅仅停留在工程层面,还要深入到系统的运行与业务的开展层级,这样才能全方位把控业务需求,准确定义软件功能。

软件项目的可行性研究,重点在于进一步梳理业务需求,对需求进行解释、整合、分类归纳,划分应用功能模块,并对各功能模块进行的图文描述,形成应用架构。如果把软件系统比作一部机器的话,可研阶段需要给出机器的“零件图”。

软件项目的工程设计,重点在于进一步细化功能模块、梳理关系,形成软件功能集成架构。如果把软件系统比作一部机器的话,设计阶段需要在可研报告“零件图”的基础上,给出整个机器的 “装配图”。软件项目的可行性研究报告重在功能描述,而在设计阶段,要把功能描述转变为更为精确、结构化的过程描述,让读者大致了解系统完成后的结构和操作模式。

下面,对标软件生存期瀑布模型,进一步说明软件项目建设中各参与方、各个阶段的工作界面与职责,如图2所示。

图2 软件生存期内各方工作界面与职责

定义阶段,由设计单位协同建设单位共同完成,这个阶段的成果是软件开发的主要依据,是工程管理的重要抓手。

开发阶段,由中标的软件开发商完成,开发阶段的设计是指软件设计,是软件开发商基于应用需求、面向程序编码的软件设计,不同于项目实施层面的工程设计。

维护阶段,由建设单位执行,软件开发商配合。

4.3 应用架构与集成架构

应用架构是和业务应用有直接的映射关系的一个架构,应用架构要说明整个业务需求应该分为哪些功能模块去建设。应用架构重点在于理清有哪些应用功能来满足业务需求,而不在于怎么实现。

根据业务需求,应用功能的划分有两种方式,一种是面向业务广度的垂直划分,比如一个营销系统可以划分为3个独立的功能模块。一种是面向业务深度的水平划分,比如划分为前端应用、中间服务、后来任务。应用架构的方式一般有单体式、分布式、SOA 3种架构方式。

简单的应用,支持增删改查功能,单体式应用架构即可满足要求。随着业务扩展,复杂度也逐渐增大,业务的深度和广度都增加,这时需要对系统按照业务拆分,成为一个分布式架构。更进一步,应用转向互联网+战略,拓展业务,类似的业务没必要重做,把已有的业务逻辑做服务化改造,同时提供给多系统使用,这就是向SOA架构拓展。

而集成架构是使应用架构朝着实现的目标更进一步,不仅要描述实现各业务功能需要的技术手段,还要梳理出在建系统与其它系统间的关系、接口、数据流向。

5 结束语

通过对软件项目整个实施过程的分析论证,我们发现,在软件项目的建设过程中,设计单位不是“无事可做”,而是大有作为,不是没有工作量,而是工作量更加繁重。在云计算资源池的大力发展下,软件项目的咨询设计工作更加具有挑战性。

[1] 殷人昆, 郑人杰. 实用软件工程[M].北京:清华大学出版社,2010.

[2] 全国咨询工程师(投资)职业资格考试参考教材编写委员会. 工程咨询概论[M].北京:中国计划出版社,2012.

[3] 全国咨询工程师(投资)职业资格考试参考教材编写委员会. 工程项目组织与管理[M].北京:中国计划出版社,2017.

[4] [美]罗伯特.威索基. 有效的项目管理[M].北京:电子工业出版社,2002.

Feasibility study and engineering design of software project construction

WU Zhen-yu, ZHAO Li-shuai, LIU Peng, LI Geng-yu
(China Mobile Group Design Institute Co., Ltd., Beijing 100080, China)

Cloud computing resource pool carrying more and more business applications, the traditional application system expansion transformation into a pure software project. In this paper, combined with the methods and ideas of software engineering, this paper makes an analysis of the responsibilities and interfaces of the design units in the pure software project, and summarizes the feasibility study report and the key points of the engineering design.

software project; software engineering; software life cycle

TP39

A

1008-5599(2017)06-0040-05

2017-03-27

猜你喜欢

可行性研究工作量生存期
应用地表覆盖数据估算LiDAR内业工作量的方法研究
一个兼顾教学科研的高校教师绩效考核模型及其应用
思科发布云计算市场发展报告
鼻咽癌患者长期生存期的危险因素分析
胃癌术后患者营养状况及生存期对生存质量的影响
PPP项目识别与可行性研究
术中淋巴结清扫个数对胃癌3年总生存期的影响
Widuri油田聚合物驱可行性研究
网上互动教学工作量管理的困境及对策
健脾散结法联合化疗对56例大肠癌Ⅲ、Ⅳ期患者生存期的影响