建设项目管理系统的时候如何进行技术选型?
建设项目管理系统的时候如何进行技术选型?
对于管理业务,很多软件公司采用了基于Java语言的J2EE架构来开发应用,在20多年之前,Java语言的很多面向对象特性与大量的开源类库,可以降低很多管理业务开发和运维的成本,当时除了C/C++外,只有Java是个更好的开发语言,考虑到管理业务软件的生命周期通常在数十年之上,因此现存的大量管理业务软件很多都是基于Java开发的。
另外有一类管理业务,它使用的人数很少,通常只需要总部的几个到几十个人使用,并不需要下发给下级公司更多人和用户使用。比如像Treasury资金管理系统,这类系统业务逻辑与计算异常复杂,软件产品的生命周期通常也是在几十年以上,从一套技术架构迁移到另外一套更先进的技术架构之下,通常也需要数十年时间。自从1998年微软推出了Windows DNA架构,很多类似业务都采用了该架构下的Visual Basic 6.0编程语言开发了管理软件产品,业务人员可以很容易的编写出业务逻辑与计算异常复杂的程序。相比较于Java及其架构,VB 6.0可以简化复杂业务逻辑与计算场景的开发、调试与投产使用。但是基于这类技术开发出的产品通常在分布式环境下应用不是太好,并发性能上会存在瓶颈,无法通过增加机器来简单扩展计算容量和支持更多的分布式用户使用。
自2001年开始,微软开始推出.NET平台及与其配套的C#语言。在一开始的几年时间里,由于开源类库的缺乏、语言应用场景的不足,发展初期不敌Java及J2EE架构在管理软件应用系统的发展。但是,C#语言相比较于Java语言更年轻,同时在设计C#语言的时候,综合考虑了Java语言的有点和缺点,在Java语言的基础上做了进一步的发展。经过微软十几年的商业支持,配套技术、架构、方案、平台、开发环境也越来越成熟和专业,也出现了大量开源类库可以使用,一般J2EE有的技术方案,.NET平台也有了同类开源类库,同时C#语言和.NET平台也有大量Java和J2EE没有的语言特性与开源类库。基于C#开发的软件系统还能更好地与C/C++开发的底层应用更好地集成。同时微软在研发C#语言和.NET平台的过程中,也借鉴了其在Visual Basic 6.0与Windows DNA架构上的成功经验与不足。因此现在进行应用软件包括管理信息系统技术选型的时候,基于C#的.NET平台则是最佳选择。基于Java的J2EE已经不在是最佳选择,Java语言除了在移动开发上由Google Android发起的技术进步以外,最近10年在管理信息系统领域基本上没有什么大的进步,已有的一些优势也已经完全被C#及.NET平台超越。只不过很多遗留系统在20年之前开始建设的时候因为选择了Java及J2EE而不能短期之内全部完成技术更新升级替代之外,新立项建设的管理类应用软件一般不会再选择Java及J2EE。
虽然C#及.NET平台也已经支持Linux/Unix操作系统环境,但是毕竟它们的发展初期都是和Windows平台绑定的,支持Linux/Unix操作系统环境也支持最近几年的事情,从商业应用角度来说,还需要一点时间去完善与成熟。因此,在对Windows License费用不是太敏感的金融领域,使用Windows Server系列操作系统并在此之上使用C#与.NET平台则是最具性价比与敏捷的解决方案。如果由于其它特殊原因非要在Linux/Unix环境下运营生产环境的话,最佳实践则是使用C#/.NET core/Windows Server研究、开发和运营测试和模拟环境,使用敏捷方案从事创新型比较高的研发活动,系统稳定版本并从技术和业务上验收通过之后,再以此版本为基础移植到Linux下,基于.NET Core开发的基本上可以很容易一直到Linux平台下,可能一些细节上需要调试和优化处理。
项目管理平台可通过策略编辑语言,可以只需要几行代码就可以计算复杂的公式分析计算指标,并且这些代码不需要考虑计算机内存管理、数据结构设计等复杂的编程技术要求,只需要使用基本的数学计算与统计调用即可以完成复杂的管理技术指标分析与策略编写。而如果直接使用C/C++/C#/Java来实现类似逻辑,代码行数可能会翻10倍,同时还要考虑更多计算机技术的复杂细节,增加了项目管理人员的技术要求。因此项目管理平台对策略编辑语言的支持可以方便高级项目经理自己编辑、编写、优化、组合复杂的自动化管理策略,而不再全部依赖于计算机程序员。
项目管理平台可以内置的策略编辑语言综合利用了项目时间序列数据的特性设计了内存管理与算法优化,支持常见的基础数学计算、统计计算与逻辑判断分支,比如:加减乘除、方差、均线等,可以简单快速地针对曲线形态、趋势和波动性进行编程。这样内置的策略编辑语言可以以低成本快速敏捷地满足项目经理80%的管理策略编写需求,而剩下的20%策略编写需求可能需要更底层语言的支持。
由于项目管理平台本身是C#语言编写的,同时C#也是世界上最强大的语言之一,项目管理平台支持C#来编写策略模型则提供了技术兜底解决方案,保证了项目管理平台可以实现所有计算机能够实现的管理策略模型的编写,同时C#语言也只世界上拥有开源类库最多的语言之一(另一个是Java),基本上可以包罗万象地实现其它所有语言能够实现的高级功能(底层硬件驱动除外)。
由于项目管理平台的商业智能BI支持需要考虑下一步向人工智能神经网络技术的发展,利用最新的机器学习成果来开发管理分析策略,因此支持Python语言也是需要考虑的一个需求,现有的大量人工智能机器学习开源算法库是基于Python写的,同时Python也有大量的数学开源库。项目管理平台与Python的集成有很多中方法,最简单的松耦合集成直接将数据和参数以数组或文件的形式传送给Python程序,并调用执行Python程序,再将其计算结果以数组或文件的方式传回给项目管理平台。后续进一步的集成可以在共用项目时间序列数据的基础上紧耦合集成C#语言与Python,在单个函数调用上增加C#语言与Python的互相调用,因为紧耦合集成需要考虑更多的不同语言之间的数据内存交互、内存管理、对象生命周期等技术细节问题,相对前者风险会更高一点,需要后续根据几个实际策略案例再深入研究和实现。
(0) Comments