- 最新文件
- 2024年 2023年 2022年 2021年 2020年 2019年 2018年 2017年 2016年 2015年 2014年 2013年 2012年 2011年 2010年 2009年 2008年 2007年 2006年 2005年 2004年 2003年 2002年 2001年 2000年 1999年 1998年 1997年 1996年 1995年 1994年 1993年 1992年 1991年 1990年 1989年 1988年 1987年 1986年 1985年 1984年 1983年 1982年 1981年 1980年 1964年 1954年
......
《指引2.0》中的部份概念涉及专业技术知识。为帮助企业财税人员与研发技术人员沟通协作,以下我们以示例方式通俗解释重点概念,助其能快速与研发人员达成共识,确保研发费用符合政策要求。
需要注意的是,在判断某一软件开发活动是否符合研发活动定义时,需要综合全面考量多种因素。因此以下示例仅为研发活动往往能够体现出的某一方面的特征,并不能据此得出结论任一示例可以直接判断为符合研发活动的定义。
㈠、软件开发项目的判断要点
符合研发活动定义的软件开发项目需要具备明确创新目标、系统组织形式、研发结果具有不确定性三点,缺一不可。
1、什么是有“明确创新目标”的软件开发活动?
软件开发项目的“明确创新目标”是指项目团队在项目开始时或在迭代开发过程中明确设定的创新目标和方向。这些目标应该与公司的软件开发的整体战略和创新目标相一致,以推动公司的软件技术和产品创新。这些创新目标应该具有明确性和可衡量性,以便项目团队可以跟踪和评估其进展。
【示例】
开发全新的机器学习算法,使软件可以自动分析数据、学习知识,完成以前需要人工操作的工作。这是创造性的软件创新,体现了明确的功能目标。
针对特定的业务场景,对资源加载策略进行重构,并对各中间件进行调优,以确保更加高效的资源调度和快速的系统响应。这是创新的设计改进,体现了明确的性能目标。
针对移动支付软件,开发全新防诈骗和交易安全保护技术,大幅提升支付交易的安全性和可靠性。这是对现有产品的显著改进创新,同时体现了明确的功能目标和性能目标。
2、什么是有“系统组织形式”的软件开发活动?
研发项目的“系统组织形式”是指将研发项目视为一个系统,并将其作为一个整体进行组织和管理。这种组织形式包括项目的组织结构、人员配置、资源配置、进度计划和风险管理等方面。这种组织形式的目的是确保项目在时间、成本和质量方面都符合预期,并且能够有效地实现创新目标。软件开发可以理解为前端、后端、架构设计、算法设计等多团队的协作配合的过程,并借助一些项目管理手段或工具确保开发符合预期。
【示例】
公司成立了项目团队,按照预定的软件需求规格文档开发新功能,团队成员各司其职,经理负责把控进度,这是有系统的组织形式。
根据公司研发管理制度,软件开发需要计划立项、技术方案评审、进度跟踪考核、代码质量复核等步骤,这反映出标准化的流程体系。
软件开发注重引入用户体验测试、质量控制、风险评估等机制,并形成完整的文档记录,体现了组织化的管理模式。
3、什么是“研发结果具有不确定性”的软件开发活动?
“研发项目结果的不确定性”是由于研发项目通常涉及新技术或未知领域,因此结果往往无法预测或控制。这种不确定性可能导致项目进度延误和成本超出预期,也可能导致研发结果失败或不尽如人意。
【示例】
开发自动驾驶汽车的环境感知与路径规划算法,需要解决视觉识别、场景理解、路径优化等技术难题,研发难度和效果存在不确定性。
研发云计算平台的智能负载均衡和资源调度技术,需要突破分布式计算资源管理和调度的技术瓶颈,结果难以预料。
研发快递追踪系统的实时路径优化算法,需要解决大规模动态物流数据处理和预测技术难题,以实现包裹的主动追踪和最优路线调度,由于存在多种可能的技术方案,研发难度和效果不确定。
㈡、软件开发活动的边界判断
《指引2.0》中针对软件开发活动边界,列举了13项典型的软件研发活动和8项典型的非研发活动。在与企业软件研发人员的交流中,我们发现上述列举中大部分的事项往往研发人员比较能掌握,但也存在部分情况较为复杂,判断上有一定难度的情况。鉴于篇幅所限,我们选取了当前行业内研发活动属性判断较有难度的3项典型情况,同样用示例形式,助财税人员和科技研发人员后续开展沟通和确认:
1、什么是“运用已知方法和现有软件工具进行商业应用软件和信息系统的开发”?
这类活动可以理解为,使用已经成熟的各种开发平台、编程语言、设计模式、数据库技术等,来设计和实现商业软件或信息系统。但整个设计和实现过程并不具备挑战性和不确定性。
【示例】
企业选择使用Wix或WordPress这样的网站构建器开发网站,这些工具提供了现成的模版和设计工具,开发人员只需要拖放或者填入自己的内容即可完成网站的开发。
企业使用Tableau或PowerBI等工具进行数据分析和可视化,通过工具自带的可视化界面进行配置,不存在二次开发或者其他定制化开发。
企业开发一个在线商城,支持商品浏览、购物车、订单管理等标准功能,使用流行的Web开发框架(例如SpringBoot+Vue)进行前后端的开发,使用常见的数据库(例如MySQL)进行数据储存与管理。开发内容和开发流程完全按照业内已有的标准和最佳实践进行,不存在不确定性。
2、如何理解“对现有程序或系统的升级、扩充或改变体现了科学和(或)技术的进步,并带来了知识存量的增加,可将其归为研发活动,如软件适配不同的操作系统或硬件、产品运行性能得以显著提升”?
这类活动可以理解为,是通过对现有技术进行改进和创新来实现的。相比直接应用现成技术和工具,这类活动往往做出了以下两点贡献:
1)提高了现有系统或技术的性能指标,增加了新的功能特性。
2)为软件行业知识储备增加了新的技术方法。
为了方便企业研发人员理解这类活动,《指引2.0》给到了两个举例,即“软件适配不同的操作系统或硬件、产品运行性能得以显著提升”。我们在此进一步展开,供研发人员参考。
【示例】
对手机操作系统进行升级和优化,使其可以支持新的硬件功能,如柔性屏、折叠屏等,同时优化了性能和电池寿命。这体现了技术进步,增加了对新硬件的适配知识。
为企业ERP系统增加新的模块和功能,实现了订单处理、仓储管理等新的能力,大幅提高了系统性能,属于对现有系统的扩充升级。
通过优化代码和算法,使软件的运算速度提高50%,增强了并行计算能力,达到明显的性能提升,体现了科学和技术进步。
3、如何理解“针对新应用场景的软件开发,如算法的优化迭代、产品基础架构和功能模块的重新设计等”?
这类活动可以理解为,在软件应用到新的场景时,为满足新需求和新挑战,需要对软件本身进行重新设计和优化。
具体来说,可能包括以下工作:
对算法进行优化和改进,以提高软件运行效率和性能。
对软件的架构和结构进行重新设计,以增强其可扩展性、安全性等。
对功能模块进行重新规划和设计,以增加新的功能,或者改进现有功能。
【示例】
针对新兴的5G网络,重新设计一个移动应用的后台架构以充分利用高带宽和低延迟;
将一个管理系统的架构从单一服务器迁移到分布式系统,以适应大规模用户和数据,提高系统的扩展性和稳定性;
为了在物联网场景下处理大量的传感器数据,重新设计系统的架构,将数据库切换至时间序列数据库,同时为了实现低延迟处理,在网关级进行数据预处理和分析。
——注:根据有关文章整理,谨供参考,不代表本网观点