软件项目团队协作管理系统设计与实现文献综述
2020-04-15 15:48:06
1.1 项目背景概述
随着互联网产业的不断发展,越来越多的开发团队涌现出来,努力将自己的创意和精力转化为各种各样的研究成果或商业产品。然而,随着项目的持续进行,堆积如山的工作讯息,效率低下的进度汇报会议,参与同一个项目的团队成员往往无法获得相同的信息,因此,团队成员会逐渐花费大量的时间来处理这些工作流程带来的问题,从而降低工作效率。
为了解决这个问题,IT企业开始把重心放在了软件开发过程管理。软件开发过程主要与软件开发的生产方面有关,而不是技术方面。这些流程主要用于支持软件开发的管理,并且通常倾向于解决业务问题。许多软件开发过程可以以与一般项目管理过程类似的方式运行,如:人际沟通和冲突管理与解决,风险管理,需求管理等等。今天,软件项目管理方法仍在不断发展,目前的趋势是从瀑布模型转向模仿软件开发过程的更循环化的项目交付模型。
本论文选题来源于个人的软件开发经历,感受到软件项目管理的重要性。软件项目的开发流程与制度往往是决定性因素之一,关乎项目的完成度与产品质量。
在本科学习期间,学生往往会以小组为单位就某个课题进行课程设计,特点是开发周期短(一般1-3月),小组成员少(4-5人)。然而,最终的产品质量往往不尽如人意,存在以下几个问题:
1. 缺乏软件项目管理的意识。小组成员由于缺少开发经验,因此可能会对软件项目的进程疏于管理,极可能出现项目前期工作拖沓低效,临近最后期限才赶工甚至抄袭代码的现象。
2. 搭便车问题。由于学生的开发能力参差不齐,小组内可能出现任务分配严重失衡的现象,例如:一名组员完成代码的编写工作,其余组员只需完成简单的测试工作以及文档编写。
3. 项目管理者缺乏团队管理经验。由于很少接触到实际的项目开发,组内的管理者或负责人有时无法正确协调好组员间的分工、交流问题,这些问题往往会发生在设计与开发之间、开发与测试之间、前端与后端之间,一旦处理不到位往往会导致误会和矛盾,导致项目开发停滞。
一些学生可以进入学校的实验室开发企业级软件项目,这些项目往往会由高校教授或较有经验的研究生或博士生负责组织管理,往往有较合理的制度和开发流程,但还是会暴露一些问题:
1. 组员的时间投入度不同加大管理困难。由于实验室的成员往往是利用自己的课余时间参与项目,因此很容易受到个人课程和其他校内活动的影响,导致不同的成员能够投入的时间大不相同,这为项目开发的管理造成了一定的难度,要求管理者能够合理计算工时,灵活分配任务。
2. 项目管理者缺乏需求管理经验。一些高校实验室项目属于企业合作项目,由合作企业方提供需求,并验收产品功能。基于这样的情况,项目管理者可能会由于评估需求的经验不足,导致项目需求排期过于紧密、接收不合理的需求等问题。
总体来说,由于以学生为首的业余开发团队缺乏足够的软件管理知识,许多团队在项目管理方面浪费了很多时间与人力,导致开发效率和成长效率大打折扣。因此,本文针对业余开发团队的普遍需求,研发了一款“软件项目管理系统”,借此指导业余开发团队管理他们的软件开发过程,实践软件工程的管理哲学和方法,从而提高软件开发效率,提升软件质量。
1.2 国内外研究现状
1.2.1 软件项目管理的发展
20世纪60年代以前,开发者往往只是为了一个特定的软件应用而在特定的计算机上设计和编译软件,同时因为软件的规模比较小,很少使用系统化的开发方法,基本上是一个人完成设计、开发、测试等开发流程。
60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率。
1960年代中期开始爆发众所周知的软件危机,为了解决问题,北大西洋公约组织在1968、1969年连续召开两次著名的NATO会议,并同时提出软件工程的概念。
软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。
在软件开发过程中人们开始开发和使用软件工具,用以辅助软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。
互联网行业发展到现在,软件开发的先驱者不断地从错误中汲取经验教训,并归纳总结为各种原则、宣言和模型。
这才造就了如今各种软件项目管理方法论百花齐放的场景,在不同的场景下都有对应的管理策略和开发流程。例如,在专业度和业务熟练度极高的软件开发团队中,项目管理涉及统计并控制关键子流程的性能,并利用所获得的可预测性来管理具有更好规划精度和监控控制的项目。而对于高校与企业合作的软件项目,则最好将传统的瀑布模型与新兴的敏捷开发相结合,以贴合专业度不是那么高的学生团队的开发习惯。
面对快速变化的市场,现代软件开发团队往往需要将不断变化的需求、流动的团队人员、不确定的交付日期等各种决定因素纳入管理决策的考虑范畴,因而采用更加敏捷灵活的开发管理方法,同时更全面地预估工时和子项目的完成度来更好地动态分配任务。
如今大行其道的敏捷开发流程其实也是一把双刃剑,在很好地适应变化的同时,更容易使得技术债务大量累计。技术债务是在技术决策中采取捷径或变通方法的比喻,以便在上市时间和早期软件发布中获得短期利益。这使得开发团队必须找到正确的方法来处理技术债务,以生产可在未来开发和维护的健康软件。这要求开发团队必须提高他们的意识并在中应用更先进的流程,技术和工具来提高他们的成熟度。 而不够专业的开发团队往往缺乏技术债务管理的意识,也可能没有足够先进的技术和工具,使得他们在提高开发效率的同时忽略了代码的可维护性,极可能造成软件项目的失败。
如今,用以辅助进行软件项目管理的集成化软件支援环境逐渐增多并愈发成熟,例如Trello、Microsoft Project等,为专业的软件开发团队提供服务。然而,市面上却鲜有针对非专业开发团队的软件项目管理平台来辅助用户在实践中学习软件项目管理。
目前,市场上的项目管理工具主要分为以下几类:
1. 甘特图:Microsoft Project是一款优秀的项目管理软件,用户可以绘制各种图形,支持甘特图和报告的自动生成,帮助用户管理资源和成本;Omni Plan运行在Mac OS X平台,是广受好评的项目策划、流程管理软件,可内嵌甘特图,帮助用户进行成本追踪、资源分配、设立里程碑等。
2. 软件研发项目管理软件:JIRA是一款缺陷跟踪管理系统,为针对缺陷管理、任务追踪和项目管理的商业性应用软件。JIRA 拥有灵活的插件架构,可以调用 JIRA 开发者社区和第三方开发的插件,与IDE集成,大大提高了可定制性,满足了许多大型软件开发团队的研发需求。
3. 轻协同:Trello,于2011年发布,致力于提供最简单的卡片式任务管理,其最大特点是在于简单和灵活,以看板管理理论为支撑,允许用户创建团队和看板。Trello作为看板类团队协作工具的先行者,在国内外众多任务管理工具中好评如潮,但由于本地化支持差、国内环境问题等原因导致使用门槛较高。而且,实践证明,Trello适合简单的项目和非研发团队做任务管理,但是不太适合大规模人数的团队。
以上的现状也表明虽然在当前的市场上已经有许多面向专业软件项目团队的协作平台,但是缺少面对非专业团队的软件项目管理平台。
1.2.3 平台所需相关技术
由于早期网页技术不够成熟,软件项目协作管理系统大多以独立应用软件,例如微软开发的的Microsoft Project。随着WEB技术的不断进步,为提高软件部署的便捷性,现在许多平台大多采用B/S架构,以WEB的形式提供服务。
{title}
2. 研究的基本内容与方案
{title}2.1 研究基本内容
开发流程可配置。用户可使用预设的开发流程模板,也可自定义开发流程模板。选择对应的模板后可自动生成或调整开发流程。
软件项目开发流程管理。根据现有或用户自定义的开发流程模板对各个开发阶段进行细分,根据项目的开发进展对流程状态进行变更。
针对初学者的“教学模式”。用户可切换到“教学模式”,对基本操作和管理方式提供提示和建议,以降低用户的使用门槛,同时帮助用户培养良好的软件开发习惯和开发过程管理意识。
信息共享。系统配备超级管理员、产品、开发等角色,不同角色拥有不同的数据权限,实现团队各方的信息共享。
信息统计分析。系统能够统计每个成员的工作情况以及团队的工作情况,并对个人进行评分,提出建议,节省管理者的统计时间,节省管理成本。