创泽智能机器人集团股份有限公司 刘同
随着国内互联网技术的快速发展,各类软件公司数量不断增加,许多中小企业在开发软件项目时,往往会出现管理混乱、资金超出合理预算等问题,进而导致更多的企业对软件的能力及成熟度的提升愿景也变得更为强烈。所以,为了满足企业对于软件项目管理系统的个性化需求,本文介绍了软件项目管理中的特点,即项目阶段(Product Code)和过程(Conference Management),分别从各个方面对这些过程进行详细说明。同时,详细介绍了CMM的组织机构和工作流程,并对其运行过程中出现的问题进行分析并提出改进措施以保证软件项目顺利进行。
软件项目管理是一项复杂的系统工程,涉及项目管理、项目规划及项目控制等多个方面。项目管理是对软件项目开发的整个过程开展管理的过程。当一个项目有一个过程需要用到的工具不一样时就需要对这个过程进行不断调整。为了提高项目效率,必须进行一系列的管理工作来保证各个环节有序进行,其中涉及项目管理、过程管理等各个方面。本文将介绍一种基于CMM 的软件项目管理系统:CMM 可以对项目周期内的各环节做详细的描述和说明,并将每个系统中对应的方法用来辅助项目管理,可以通过在工作平台上完成项目开发、跟踪和管理项目进度与结果等功能来实现项目的高效、有序地进行,使得后期的软件项目开发更加顺利。
基于CMM 的软件项目管理系统是一个在项目管理过程中整合了各个功能模块的综合集成系统。它通过对项目相关指标数据的统计,可以让使用者直观了解项目管理的情况和各个环节的进度、成本等情况,也为进一步开发提供了决策依据和方向指引。另外,系统也包含了与之相关的功能,如信息查询、报表统计等功能。其中,信息查询是管理系统中最基本最常用的功能模块。该部分内容可以为使用者提供一些基本信息:当前进度、各岗位工作人员信息、联系人信息。
系统采用的是以流程控制为主的开发模式,通过对项目周期进行划分,实现不同的功能。在开发过程中,从项目策划阶段开始,各个功能模块的操作人员将会根据设计目标,从系统中提取出操作说明以及所需的执行工具等文件进行相应工作,然后进行相关操作。整个软件项目管理系统包括项目开发流程、功能模块和用户端界面设计,在各个功能模块中需详细说明其中涉及用户业务流程及功能模块,以协助相关工作人员完成不同阶段所需完成的工作内容。
CMM 项目管理法的核心在于对项目周期内人员的管理和项目周期内各种资料的收集整理和统计。因此,它包括对项目信息的获取及处理数据统计和报表生成等;另外还包含了对项目进度的管理、项目执行、跟踪、数据处理等功能;由于项目管理模式下,各小组人员需相互协作完成某项工作,因此需要有一个工作平台来配合完成整个工作流程,所以在任务分配中会专门为每一步任务设置一个功能模块来完成相关功能,即当完成某项任务后项目管理模块将返回到该任务执行模块继续执行。
该功能使项目执行实现了可视化操作;提高了项目进度与质量;可根据用户个性化操作并提供相应功能以方便用户进行操作;实现了对项目执行阶段时间、精力、人力等资源消耗和浪费等问题的有效管理。例如,对项目过程做跟踪和记录;及时发现可能出现的问题和隐患等。使得用户对软件项目有着更高效、更准确地掌握整个项目周期内各个环节的状态,保证项目顺利进行及得到全面有效地控制。
软件项目管理系统作为一项完整的程序,在整个过程中软件项目经理是关键人物,软件项目经理需要对项目进行组织协调和决策管理,从而保证项目顺利运行于一个良好的工作状态。整个软件项目过程可以分为前期准备阶段、目标设定阶段、方案评审阶段和开发测试阶段,每个阶段的主要任务是确定项目的优先级,各任务目标设定、方法评审及开发测试都按照该流程进行,以保证每个阶段工作顺利进行。
在软件项目管理流程中,软件项目经理需提前确定关键工作和优先级,根据计划将工作分解到每个人,制定出每个人的工作任务。对于明确的任务,可以通过会议通知,或者利用QQ 群、微信群等工具及时与大家沟通,分享工作内容、进展情况及经验,与同事及时进行沟通,同时利用钉钉文档或手机App、短信等方式进行工作通知,与业务部门领导进行沟通协调,根据工作安排合理分配资源计划,保证项目能够顺利开展。
在这一阶段,软件项目经理需要通过一系列评价和比较,选择出能最好地解决问题的方法来确定最终的目标。这些方法包括:(1)项目总体目标,这一目标要求各项目必须完成其所需的功能;(2)用户反馈目标,在目标设定阶段软件项目经理通过收集用户对项目整体需求,并结合客户需求、项目目标、计划、开发任务等情况进行系统目标分析,根据项目特性确定对应任务和目标实现时间、实现过程和用户满意度进行调整,以确保最终达成目标。
由于目标的设定, 软件项目任务将从总体上为下一步工作做准备。同时由于项目组成员可能存在分歧,为了保证项目进度,软件项目团队需要对项目执行方案进行详细评审(Project Base)。评审以书面或口头的形式进行,形式可以是用户报告和会议记录等。通常还包括风险管理方面的考虑。对于项目过程中的风险(即项目风险的范围)有必要与团队进行讨论并提出自己的解决方案。因此风险分析为团队提供了一种在风险之间确定最佳方案以确保项目成功的方法,同时也让团队成员了解该项目可能存在的风险,可以为项目制定紧急措施。在这个阶段,软件项目经理对决策做出相应记录并制定相应措施以防止或降低风险。
开发测试阶段的主要任务是,以满足程序的稳定运行为目标,测试团队对软件项目系统进行一系列的性能测试和可靠性测试,以评估技术方案是否能达到预期的效果,并为后续开发和迭代打下基础。具体步骤为:设置测试优先级。首先根据目标划分出测试优先级,确定测试项目、测试步骤等;其次,根据不同测试等级采用不同类型的测试方法,测试工程师需在测试前根据软件项目经理设定好测试目标以及所需要测试的功能等,如需要测试任务则需要从测试任务中选择与测试计划相符的开发人员对所有开发环境进行测试。测试完成后,编写测试报告并给出测试报告。测试团队完成测试报告后由领导进行决策。这个过程一般需要10 ~15 天左右,在此期间需要记录测试过程中出现过的各种问题,以作为软件项目经理分析研究确定出更好解决问题的依据及解决方案。这个过程中要在规定范围内进行协调和配合,确保完成本阶段的具体任务要求和相关标准程序。
目前国内对于软件项目管理软件的研究主要集中在开发过程管理、质量管理和用户体验等方面,并没有在软件项目管理系统实现过程中涉及项目管理人员的权限和功能划分等问题,使得系统运行过程中的各部分管理人员并不清楚,同时也使得项目管理系统无法正常运行,影响项目的质量和进度。此外, CMM 系统也不是一套简单高效的管理工具。随着软件领域技术更新换代力度不断加大,用户使用软件的频次和时间越来越多,然而在实际操作过程中存在一些问题:有的软件项目在立项之初就已经开始进入系统开发;有的在前期没有进行充分筹备;再加上后续用户对系统的使用也不够熟悉;使用后会发现出现问题等现象导致无法正常使用或者不能正常工作的情况。对于此类问题,本文提出通过对现有软件项目管理系统中常见问题做出详细说明。
软件项目经理缺乏系统性的培训。由于缺乏对于现代化项目管理的知识和方法,所以在实际操作中,没有足够的软件项目管理基础,只能依靠自己现有的知识和技巧,管理工作的随意性、盲目性。在软件公司里,多数情况下,项目管理人员普遍缺乏懂经营、善施工的复合型管理人才,所以很多招收任命的软件项目经理往往会对项目管理方面的理论知识较为匮乏。
软件项目经理对计划与阶段性计划的实施不甚清楚,有的软件项目经理觉得计划具有很强的长期性,而且项目中存在太多的不确定因素,因此在制订整体计划时会比较随便,而且因为工作繁忙等原因,常常会延迟,造成计划与控制管理脱节,难以进行有效的进度控制。由于软件项目经理工作的规范化程度较低,在不同的工程项目中,往往是基于经验进行管理,这会在很大程度上加剧跨项目管理的难度。
部分软件项目经理并没有注意到软件项目经理的迟疑,他们对项目的整体控制和管理,以及对具体的技术工作的投入,导致项目团队的成员们忙得不可开交,计划不周,任务分配不均,资源浪费。在软件公司里,项目经理大多是技术骨干,虽然技术知识较为深厚,但无论是管理、必备的技能、管理必备的素质都有待补充和改进,项目管理经验也有待丰富。
软件项目经理没有对潜在的危险进行全面的分析,而应对风险的战略考虑也相对简单。一般情况下,软件项目经理在制定项目的时候,都难以制定特殊化的风险管理方案。部分软件项目经理并不知道风险管理的重要性,针对不按照管理计划实行的技术人员,没有较好的管理手段,多数情况下,只是草草地列出了一些既有风险,提出了简易的应对措施,这对于后期的风险防范也并不能起到良好的指导作用。
在区域识别阶段,部分项目管理小组并不熟悉客户的整个团队架构、有关人员及其关系、工作职责等,以至于无法达到全面的技术要求或者由于软件项目经理的工作职责模糊,对客户的参与度不高,对客户的关键责任不明确,项目的前期阶段对需求的确定工作不够积极,或者多个客户的表达意见过于独立,项目又需及时交付等特殊情况的发生,导致项目进度延缓,继而造成企业投入成本的增加。
针对CMM 的工作流程中出现的问题,笔者在设计和实现CMM 过程中,除了注重软件的质量和效率外,还应该在服务方面有所改进,以下为几点改进措施。
(1)项目管理人员要建立完善的团队考核机制,鼓励员工积极参与项目管理,培养团队协作精神,并加强团队的内部凝聚力,确保项目进度的顺利完成。同时,通过建立日常的学习与训练,为员工提供交流的机会,搭建技术与经验共享的平台,为项目组织成员创造一个良好的学习环境。同时,公司还可以通过自我管理来提升团队的管理能力,从而提升项目团队的市场竞争能力。
(2)在项目阶段要建立明确的各节点工作职责和目标;完成所有阶段的管理职责和工作流程;及时向领导反馈项目进展情况;定期分析问题并进行解决;有工作记录和存档备案;对于出现的问题要及时反馈;要保证员工能清楚地知道自己做了什么工作。此外还要定期分析原因,作为管理者,要时时反思自己的不足,对出现的问题,尤其是质量问题要进行深刻的反思,并采取有效的补救措施,以避免此类问题的重演。
(3)工作内容分为两部分并做好记录,便于后续查询和调整工作思路。而对于任务之间的关系要清楚明确,避免出现遗漏。如:项目变更时需提交变更申请;任务执行过程中需要对所有更改做记录并保存至系统中,以便能够检查是否按照变更需求进行操作;文档建立后可导出到指定的文档上去或者在其他界面进行查看;并及时了解项目进度、项目成果等内容。同时也能在网上对文档进行管理;另外用户也可以设置邮件接收时间以及接收方式等其他选项;同时可以对文档进行编辑功能也可以对其进行批量操作。
(4)对整个过程中存在的沟通不畅以及系统中缺少文档管理功能模块为用户提供了极大的便利空间,可以增加功能模块以便于使用者对于文档的管理和维护;此外该系统还提供了一些文档管理器工具将所需文档直接通过图片输入到平台文件夹中;用户在页面中点击“编辑”后在下方选择上传等操作使软件开发更加便捷方便完成。
总之,在现代企业运营过程中,应用软件项目管理工具已经成为一种必然的趋势。本文基于CMM 理念设计了一套基于Java 的多功能的软件项目管理系统,实现了整个项目过程中各个阶段的工作内容以及相关环节的管理过程,并将这些数据进行汇总和统计,从而使得整个项目过程中项目各参与人员可以在不同时间节点上及时掌握项目进度并提交反馈信息,使领导能够对项目实施全过程进行监督并了解项目运行效果。