浅谈工程公司软件开发项目管理
无锡小禾呈科技有限公司
2021-12-29 16:48

  1 软件开发项目管理的应用现状

  近些年来,信息技术和互联网技术在各行各业中发展迅速,软件产业随之兴起。人们为了追求更高的工作效率,开发出许多功能强大的软件产品用以替代传统的工作方法,从简单的成品软件,到复杂的定制开发,越来越多的人开始接触到软件开发工作,软件开发工具层出不穷,软件开发企业也如雨后春笋般快速成长。在软件开发项目执行过程中,无论是用户还是开发人员常常会遇到各种各样的问题,使得软件开发工作停滞不前甚至面临失败。这是因为软件开发是一项复杂的系统工程,它要求软件开发工作的参与人员要全面系统的了解软件开发项目的运作特点和关键要素,并在整个软件开发项目周期内保持对项目的控制,当遇到问题时给出合理的解决措施,将重复工作、错误工作的概率降到最低,需要有一整套完善合理的方法对一个软件开发项目进行管控。

  工程公司各项工作的开展离不开专业软件的支撑,用户对软件的功能、适用性、开发周期的要求越来越高,软件产品的标准化已经成为趋势,开发模式也必然向着模块化、流程化等具有典型工业化特征的方式转变。近些年来,工程公司在软件开发项目方面的投资越来越多,时间跨度越来越久,涉及的技术越来越复杂,随之而来的多种不确定因素对软件项目的开发周期、质量、效益等带来巨大影响,软件开发项目的参与者们也越来越多的意识到软件开发项目过程管理的重要性,“管理”变成软件开发项目的重中之重。

  软件开发项目管理简单来说就是运用一系列的知识、工具和技术,整合各种资源,通过项目参与各方的协作达到项目的建设目标,其根本就是对时间、质量和成本的管理。一些企业通过制定软件管理相关规定来规范开发过程,但是在实际运行过程中与理想情况还相差甚远,软件产品的开发进度滞后、质量不稳定、后期运维量大是困扰开发者和用户的难题,不但对使用造成了麻烦,也直接影响了企业的效益。产生问题的原因多种多样,总得来说是因为一些开发人员在项目管理的过程中有着许多误区:首先缺乏专业的项目管理人员,软件项目负责人实施管理主要依靠技术和经验积累,缺少项目管理专业知识;其次在项目的规划阶段缺少纲领,制定的项目计划随意性大,细节考虑不周,无法进行有效的进度控制管理,这是出现许多未知问题导致工作进度滞后的重要原因;沟通渠道和机制不完善或者执行不到位,项目进行中的重要信息没有进行有效的流转和沟通,成员间各行其是,出现重复甚至无效的工作,造成了不必要的损失;项目团队分工和时间分配不合理,在不同项目阶段由于团队内部角色或工作流程的变化导致责任分工不明确,出现互相推诿或者越权工作的现象,造成项目组内部资源的损耗,从而影响项目进展;不重视风险管理,项目负责人没有充分意识到风险管理的重要性,甚至为了尽早开始实施项目而刻意淡化风险,面对已经可见的风险时缺少对策,使得原本可控的风险演变成导致项目受损甚至失败的事件。现阶段,随着专业软件供应商和大量高技术人才的参与,在技术层面和人力投入层面上的难题都不再难以逾越,反而是我们组织运用技术和人力的能力需要提高,这就是强化软件开发项目管理的意义。

  2 软件开发项目管理的目标

  项目管理,应用在软件开发项目中,最终的目标是使软件开发取得成功,既要满足使用者提出的需求,又要实现开发人员的效益最大化。这就要求对软件项目的开发需求、资源配置、实施成本、进度节点、存在的风险等做到心中有数。在整个管理过程中要保证软件开发项目的必要信息始终被管理和开发人员所掌握。

  3 立项阶段的管理

  一个软件开发项目,最初都是由一个特定的需求引出的,需求就是指这个软件应该“做什么”而不是“怎么做”,需求确定与否,直接影响着项目后续的所有进程,甚至关系项目成败。工程公司很多大型软件的引进与二次开发,根本需求在于工程项目的使用需要,这些项目往往进展比较顺利,是因为需求非常明确,时间节点比较清晰,应用的目标也非常明确,这些都对开发人员制定开发计划提供很好的指引。反观一些由设计部门独立立项开发的项目,往往存在较大的不确定性,开发进度容易滞后,软件成品质量不稳定,这些跟立项初期软件需求的不确定不完善有很大关系。

  要想确定需求,一般要做好两个阶段的工作:需求定义与需求分析。

  广义上,需求定义阶段主要包括以下工作:收集用户的需求并提交需求说明书的草稿;与用户一起验证收集到的需求;对需求进行跟踪,及时发现变更。在收集需求的过程中,开发负责人面对的往往是众多的实际用户,其中有高层管理人员也有基层操作人员,各人的立场不同,对软件功能的需求也不尽一致,有时还会将管理制度的缺陷夹杂其中,这是软件本身无法解决的问题,这时就需要对他们提出的需求进行过滤、筛选。最好的办法就是请用户指定一名项目负责人,将需求汇总后再反馈,这名项目负责人要有一定的权威,不但对本专业的工作较熟悉,也要对软件开发技术有所了解,必要时可以由专业软件开发团队对其进行一定的培训,这样既使海量的需求得到汇总,又可在用户层级对需求进行过滤。

  在需求分析阶段主要包括以下工作:分析需求,确保收集的需求是明确、可用的;建立技术人员与用户之间的联系,使技术需求能有效覆盖用户需求;对需求进行分级,制定需求说明书;由用户来审核、批准需求说明书。需求说明书作为需求确定阶段的最终产物,体现的是用户的最终意志,因此应使用用户易懂的自然语言,清晰明确的阐述软件开发项目的目标。特别要注意的是,在需求确定阶段,要注意需求与项目计划是否相匹配,现有技术是否能够满足实现需求,并且对于某些可能会发生变化的需求要格外注意,为需求变更预留一定的进度。

  这就要求所有项目的进入审批流程前,要先提交立项报告,以立项报告为审批的依据。立项报告是一份描述项目可行性的正式文档,是立项评审、决策的依据,一般需要包括项目目标、软件概述、可行性分析、软件定位、关键技术、难点与解决方法、进度与成本估算等内容,立项报告作为项目的指导性纲领,在软件验收阶段需作为存档内容与软件开发项目的成果一起归档。

  风险管理同样是软件开发项目立项阶段的重要工作。软件项目的风险主要包括软件开发的过程中可能产生的损失,软件开发项目制造出一个软件产品是一个逐步推进过程,在每一个阶段都有大量的未知要素,这些未知要素就构成了风险。风险具有不确定性,因此风险管理从项目初始阶段就要开始,管理过程从风险识别评估、风险预防、风险管理直到风险化解。风险识别阶段要尽可能的预估软件项目的需求收集、技术难度、资源储备等方面是否存在不确定因素,通过开发成员与用户之间的沟通和资料收集感知风险,形成风险识别成果,明确的指出每个风险的来源、类型和解决预案,为风险评估和管理提供基础数据。风险评估要对已知的风险进行分析,计算出风险对进度、经费、产品质量可能造成的损害,评定这些损害是否在可承受的范围内,这样就可以对风险进行分级管理。风险预防是从规章制度、组织决策和管理手段上提高整个软件开发过程防御风险的能力,通过一些预留措施减少风险发生的概率,如使用冗余网络连接、数据定期备份等。在一个软件开发项目比较常见的风险包括:需求变更导致功能无限扩展;系统设计不规范导致开发难度大;计划进度不符合实际进度;人力不足或技术水平不够;项目预算因商业问题出现变动等。实施风险控制管理,要制定风险管理计划,包含风险的发生时间、损失及应对措施,指定项目风险管理者,执行风险管理计划并监控更新风险状态。开发人员之间、项目组与用户之间要建立风险反馈渠道,关注高概率的风险,确定风险间的交互关系和因果关系,通过消除产生风险的根源来避免风险,在软件开发项目团队内部创建长效风险管理体制,树立风险管理意识。

  因此,在风险控制方面重要的是两点,一是对开发人员的投入进行合理分配,人力投入多不代表着高效率,各尽其用才能有效推进项目开展。二是做好立项软件的前瞻性评估,在立项之初就研究该软件是否与企业在用的核心软件产生功能重复、不兼容的现象,避免生产出重复产品和信息孤岛产品。

  4 实施阶段的管理

  软件开发项目的实施过程阶段首先要制定项目计划书,包含软件开发项目的成本投入估计、进度计划、人力资源配置评估等。项目计划书作为项目管理的依据,是指导项目全过程的可操作的文件,是项目全面发展的路标。它既体现了用户的需求,又是软件开发项目活动的基础,软件开发项目的预算规划是控制项目整体成本的尺度,是项目计划书的依托。一个好的项目计划书往往要经过不断完善和评审,通过资源调整、优化工期、降低预算等方式,才能具有强大的可执行力。项目计划各个分项的制订都不是独立的,要从全局出发,实现统一管理。

  软件开发项目管理要严格按照项目计划书执行,确保在预算范围内,项目可以按照用户需求和时间进度执行。在这个过程中要制订实际进度的测量节点,将测量所得的实际进度与计划进度对比后,如出现滞后,就需要分析影响项目进度的因素,及时对人力和其他资源进行调整,必要时也可对预算进行调整,对项目运行全周期进行有效的掌控。在这个过程中,需要随时掌握确定已完成的工作,对下一步工作进行评估,看是否存在技术、预算的风险点,对于项目计划中的关键节点要制订专门的进度计划。软件开发项目在实际运行中总会出现意外问题,例如人员变动、预算缩减等等,问题是在项目过程中提出的,是未能预料到的延缓项目进展的障碍,这也是任何项目都不可避免的,一个合格的项目负责人在面对问题时要客观、冷静,不纠结于划分责任,对问题进行主次分级,利用现有资源及时解决问题。

  预算制,是软件开发项目管理的核心制度之一,在专业软件开发企业,预算控制着软件开发项目的整个过程,预算分配是否合理直接影响着软件开发的进度和参与者的积极性,按期完成项目的关键节点才能达到预算给付的条件。工程公司实施的软件开发项目过程管理,主要是中间检查、人工时填报以及奖酬金的发放。中间检查实际上就是项目关键节点的测量工作,是对项目进度和质量的检验,人工时填报则是对中间检查的辅助审核手段,而奖酬金则在前两者的基础上进行核算。引入预算制度,能够较好的控制软件开发奖酬金的发放比例和额度,每个开发项目的奖酬金可分为预支奖金和考核奖金两部分,预支奖金作为每季度的固定额度纳入全年固定预算,考核奖金则属于浮动预算范围,需要软件开发项目负责人进行申请,由信息化管理部门和开发负责人进行对接评审,在完成中间成果评审的情况下才能进行考核奖金的结算,奖励金额合理的向进度良好、成果明显的项目倾斜。

  5 交付阶段的管理

  软件开发项目的产品交付,是整个项目过程结果的最终检验,交付阶段的重要环节就是验收。验收是保障软件质量并对项目管理成败给予评价的重要节点。

  软件产品正式交付前必须要经过测试。测试的基本目标是检验软件产品是否按照原定的方式运行,在模拟的使用环境中是否存在可能的缺陷以及长期使用的可靠性。测试不仅仅是简单的程序运行,而是需要大量的真实数据来构成测试用例,为了达到尽可能暴露产品错误的目标,测试用例的数据内容应当具有普遍性和特殊性,这些数据都是在长期工作中累积起来的,软件测试人员很难获得众多行业内容的真实数据,这就要求更多的用户要深入的参与到测试当中,给出使用体验并进行结果校验。要指出的是,测试并不是只在项目末期,而是贯穿于整个项目周期,使测试和程序开发同步进行,这样会提高发现错误的概率,及时对产品质量进行修正。测试的最终结果要形成完善的测试文档,这些文档是度量和评定软件质量的依据,也是项目团队最重要的工作成果汇报,为下一阶段软件产品的修改、发布和维护提供支持。

  当软件测试完成后,就可以进行软件产品的发布。发布阶段要建立完善的版本控制体系,要确保所有的程序都被集中存放并冻结,所有测试中发现的缺陷都已被修复,程序打包并通过测试,编码和文档(包含源代码文件、需求分析文档、测试文档、安装手册、使用手册、二次开发手册、产品信息文档等)全部集中入库,形成一个完整的交付物,由软件开发项目负责人按照规定方式交付用户使用。达到交付条件后,要根据用户的需求提供培训及维护,要及时反馈用户的使用体验,

  软件开发项目的验收归档,不能只局限于设计说明书和用户操作手册,为了提高软件开发的正规化,为今后的升级和迁移提供保障,应当适当增加存档内容,将立项报告和测试验收报告纳入存档范围,归档流程审批施行网络化,对整个归档过程进行跟踪管理。

  6 结语

  软件开发项目管理并不能替代软件工程,项目管理与软件工程有一定的交集,软件工程的知识领域并不包括项目管理,但与其息息相关。软件工程的生命周期、技术方法及工具是软件开发项目管理的基础。“制造有用的软件产品”是软件项目的根本,软件项目与其他工程项目相比,有很多独有特点,经过长期的知识积累,已经总结出软件产品制造过程中的许多规律,形成了成熟的工业化方法,因此,当我们把项目管理应用到软件项目中的时候,必须遵循这一规律。在管理论中,十分重视管理者在相关领域中的专业知识,在执行管理的不同阶段,强调利用相应的资源、采用适当的管理方法来适应产品的要求,软件开发项目管理体系也同样如此。管理的水平高低将成为衡量工程公司信息化工作成效的重要标准,我们需要更多的软件开发专业人士去学习项目管理理论,参与到项目管理之中,对于用户和开发者而言,这是一种变革,高效的管理将为工程公司节约成本和时间,促进各类应用软件为工程公司创造更多的效益,从而带动工程公司信息化应用水平的整体提升。欢迎联系无锡小禾呈科技-软件开发专家(15358092238,电话微信同号)。

当前网址:http://www.xiaohecheng.com/news/detail/1dh9dh4qk0clp.html
软件开发最新资讯