全球软件开发的兴起,源于软件开发领域的快速变化和客户需求的增加,为了获得更多优势,许多软件公司已经从共同办公的环境转向分布式环境。
在过去十年中,分布式软件开发成为软件公司普遍采用的趋势,既能降低成本,又能获取熟练的资源,这种模式被称为全球软件开发,也被称为离岸软件开发或者外包软件开发。
全球软件开发
在过去的20年里,世界发生了巨大的变化,技术的指数级进展,使得人们能够更高效、更有效地交流信息,过去,人们不得不走着去见面或与他人交谈,但现在却可以轻松地通过移动设备进行沟通,所有这些都不是高楼大厦的结果,而是技术进步的结果,此外,软件开发领域,也迅速发生了巨大的变化,以满足客户的需求。

为了获得更多优势,一些软件公司已经从共同办公的环境,转向分布式环境,在过去的十年中,软件公司普遍倾向于采用分布式软件开发的趋势,以寻找低成本和熟练的资源。
因此,软件开发变得多样化、多地点和全球分布,这也被称为全球软件开发,然而,在执行某些任务时,软件专业人员也面临一些挑战,比如在全球分布团队中的社交和文化多样性。
全球软件开发也被称为离岸软件开发,或外包软件开发,在过去的二十年中,越来越多的公
司,采用了软件外包这一企业级战略,软件外包模式,被用于以较低的成本,生产高质量的软件,然而,在软件项目中,采用全球软件开发,并不像说起来那么容易,因为存在许多障碍。
全球化是技术进步的结果,导致文化上的异质性和多样性,人们、企业和各种组织,正在投入大量资本,以了解和克服跨文化团队所面临的障碍,如果能妥善处理全球软件开发的障碍,就可以确保软件项目的及时和成功实施。
全球软件开发是一种现代的模式,在全球软件开发中,团队中的开发人员,分布在不同国家之间,即使处于不同的时区和组织边界,团队成员仍然保持信息交流和合作。
尽管在全球软件开发环境中,工作对团队成员来说非常困难,但由于旅行自由受限,以及不断增加的旅行费用,它已经被行业接受。
廉价的熟练劳动力、更高的生产力、工作效率和经济效益等是全球软件开发的一些主要好处。除了所有这些好处之外,全球软件开发环境中工作的人们,面临着许多困难,比如缺乏沟通、战略问题、项目管理问题和团队的跨文化背景。
研究人员将全球软件开发项目分为两类,离岸和近岸,离岸项目失败的原因,是时间限制和文化差异,不仅仅是时间和文化,沟通隔阂也是离岸和近岸团队,所面临的一个重大问题,这可能会导致生产力降低、项目质量差和效率下降。
因此,为了发挥全球软件开发的优势,有必要在开始涉及分布式团队的任何项目之前,先看看其中存在的风险因素,并加以缓解,与全球软件开发项目相关的风险有很多,如果团队分布在世界各地的不同国家或不同地区,他们可能会面临地理风险、语言障碍,甚至天气条件等障碍。
大多数软件组织,在全球软件开发环境中存在风险,它们倾向于使用标准的风险管理工具,来降低风险,然而,它们意识到这些工具,并不足以满足全球软件开发的重要和关键特性。
为此,研究人员采用了改进的萤火虫算法,萤火虫算法是一种机器学习技术,由于其处理非结构化数据的能力,近年来变得越来越流行,简单的萤火虫算法,没有提供验证结果的方法。
因此,设计和实现了改进的萤火虫算法,它计算与时间、成本和资源相关的所有风险的适应度值的方差,以确保所获得的适应度值是可靠的。
项目风险管理
研究人员将风险定义为对发生事件,产生负面或正面影响的可能性,管理策略有许多关键功能,其中之一被称为风险管理,它通过内部控制机制,来审查系统的漏洞,该机制具有经过测试的程序和实践来管理这些漏洞,它还有助于识别、分析、评估、检查和处理风险。
项目管理有许多分支,其中最重要的之一就是风险管理,它在项目管理中,起着非常关键的作用,它可以防止对期望的成果,以及结果造成影响的风险。
中小型企业(SME)采取预防措施来最小化风险,为了查找项目中任何不希望的错误,中小型企业总是需要一个精心计划的风险管理策略,而风险管理过程中有五个步骤。
第一步:识别风险,团队的任务是突出可能影响项目的风险,为此使用了多种技术,其中第一种是维护一个项目风险登记册。
第二步:分类风险,根据风险的估计成本、可能影响和发生概率,将不同的风险进行分组。例如,信用风险会根据债务人还款的可能性进行分类。
第三步:分析风险,在识别风险之后,下一个重要步骤是分析每个风险的后果,确定风险的性质以及其对项目结果的影响能力,这些信息也被记录在项目风险登记册中。
第四步:控制风险,在进行风险分析之后,进行风险控制。这是软件公司评估风险并采取行动来减轻或消除这些风险或威胁的方法,这被称为风险控制层次结构,即消除危险是最有效的控制措施,必须始终以此为目标。
第五步:审查风险控制,这是为了确保已经实施的控制措施,是有效和高效的,必须对其进行审查和修订,确保它们按计划工作,确定是否需要立即采取任何补救措施。
在应用萤火虫算法,来优化各种估算模型的设定参数,他们将其与其他元启发式指令进行了比较,之前提到的模型是变体构造成本模型,也被称为构造成本模型,研究人员声称,他们的实验结果显示萤火虫算法更加精确,并且导致的误差比遗传算法和粒子群优化算法更小。
使用萤火虫算法和人工神经网络构建了故障预测模型,并观察了基于如遗传算法,和粒子群优化算法进化技术的差异,他们从项目管理与信息系统评估仓库中,选择了七个不同的错误数据集来进行研究。
根据这些数据,他们声称研究结果显示,萤火虫算法-人工神经网络模型,要优于遗传算法和粒子群优化算法的人工神经网络故障预测模型。
研究人员得出结论,基于萤火虫算法-人工神经网络的模型,与其他模型相比,没有产生任何类似的阻碍,并且在统计上具有显著性,另一方面,这种提出的模型,可以降低软件成本,并提高最终产品的质量。
研究人员对萤火虫算法进行了一些修改,以解决投资组合优化问题,在投资组合中,实现了令人满意的开发,他们称之为升级版萤火虫算法,研究人员声称,升级后的算法,在所有投资组合问题上,都表现得比原始算法更好。
通过将升级版萤火虫算法算法,与先前五篇优化元启发式算法的结果进行比较,他们得出了这个结论,他们确信,升级版萤火虫算法远远优于先前对所需性能指标的测量。
研究人员认为,在众多可用的工作量预测模型中,项目经理很难做出选择,他们的研究旨在提高软件成本估算的准确性,他们通过将萤火虫算法,与用于成本预测的人工神经网络模型结合使用,来实现这一目标。
与粒子群优化算法相比,研究人员谈论的是成本估算,他们使用具有径向基函数网络的功能,链接人工神经网络模型,根据他们的结果,他们认为当将人工神经网络模型与萤火虫算法以及直觉模糊C均值相结合时,数据处理效果更好。
项目时间、成本和资源风险维度,根据对风险来源的研究,软件开发项目中的风险,可以分为时间风险、成本风险和资源风险,或者它们的组合,项目时间、成本和资源是项目管理中的主要关注点。
在全球软件开发环境中,可能会对项目绩效的多个方面产生负面影响,与时间相关的风险因素,毫不夸张地说,时间决定着项目的成功与否。
当涉及与时间相关的风险因素时,项目经理面临两种挑战,在项目执行过程中,需要进行的调整次数,花在非必要活动上的时间。
如何以简单的方式应对这两个挑战,一种方法是事先制定一个明确的项目计划和时间表,然后按照计划执行,拥有明确的项目计划,对于有效的时间管理是必要的,项目经理应该制定这样的项目计划和时间表,来降低上述两个风险因素的影响。
在时间之外,成本是另一个可以轻松测量的限制因素,就像项目的时间表一样,项目的成本结构,也必须尽可能准确地事先估计,成本简单来说就是完成某个项目,所需投入的资金金额,也被称为项目预算。
事先了解成本结构,可以为项目经理提供一个基准,可以在项目进行中,测量和监控实际成本,这样,项目经理就能避免在项目进行中,出现任何意外费用的情况。
与资源相关的风险因素,项目中的资源有两种类型,人力资源和物质资源,项目经理应该同时考虑到这两种资源的可用性。
这个约束条件很大程度上依赖于成本结构,拥有更多的资金,就可以购买更多的物质资源,也可以雇佣更高质量的专业人员,当然,金钱无法解决市场上的可用性和可访问性问题,因此,在确定项目的时间表和成本结构时,项目经理应该牢记这些挑战。
结语
全球软件开发既带来了挑战,也带来了机遇,了解和应对全球软件开发中的社交、文化和项目风险管理等关键因素,对于确保项目的成功实施至关重要,只有通过合理的风险管理和有效的团队协作,全球软件开发才能充分发挥其优势,为企业带来更大的价值和竞争力。
参考文献1. Herbsleb, J. D., & Moitra, D. (2008). Global Software Development. IEEE Software, 25(5), 18-20.
2. Carmel, E., & Agarwal, R. (2002). Tactical Approaches for Alleviating Distance in Global Software Development. Communications of the ACM, 45(1), 123-129.
3. Srinivasan, N., Subramanian, G. H., & Abdulrahman, M. D. (2019). Challenges in Global Software Engineering: A Systematic Literature Review. Journal of Systems and Software, 155, 197-227.
4. Khan, A., & Iqbal, R. (2020). Offshore Software Development Practices: The Challenges and Opportunities. Journal of King Saud University - Computer and Information Sciences, 32(1), 24-32.
5. Acharya, V., & Ray, A. (2016). Managing Risks in Global Software Development Projects: An Empirical Study. Information Systems Frontiers, 18(1), 49-68.
6. Boehm, B., Bose, P., Webb, A., & Royce, W. W. (1995). A View of 20th and 21st Century Software Engineering. IEEE Software, 12(6), 85-92.
7. Fenton, N. (2000). Software Metrics: A Rigorous and Practical Approach. International Thomson Computer Press.
8. McManus, J. (2014). Global Software Development Risks and Mitigation Strategies. Journal of Computing Sciences in Colleges, 29(5), 46-53.