关于从旧系统迁移到新系统中的法律问题
在企业中,创建新的IT系统是IT工程师的典型职责,但是,在”创建新系统”的过程中,往往也包含了”废除旧系统”的过程。在本文中,我们将从”废除旧系统”的角度重新审视开发新系统的项目,并解释与之相关的各种法律问题。
什么是过渡到新系统
IT系统的寿命并非永恒
企业使用的IT系统并非一旦建立就可以永久使用。而且,一直保留和使用旧的系统并不一定是好事。虽然每个企业和系统的用途都有所不同,但大致上,一个系统如果使用了大约10年,就有可能做出更换新系统的管理决策。
10年的时间足以改变市场上流通的计算机的性能。例如,10年前,由于计算机的处理速度等限制,一些(从人的角度看是简单而优秀的设计)程序可能无法实现,但现在可能已经可以实现。此外,如果一个系统从建立开始已经使用了10年,那么在这期间,公司的业务流程和内部规则可能已经发生了很大的变化。为了应对公司内外经营环境的变化,后期实施的代码可能已经变得复杂且错综复杂,以至于用户无法从屏幕上识别。这样一来,即使用户希望添加新的功能,从开发者的角度看,可能已经无法实现新的功能。
随着系统的老化,IT工程师可能需要进行更多的”手动操作”(例如,发出查询以单独提取数据等运营任务)。系统本身也会随着老化而让业务变得”个人化”。当一个系统变得过于陈旧,相关的业务变得越来越个人化时,如果想要采取进一步的”系统化”措施,就需要启动一个”开发新系统以从旧系统迁移”的项目。
新系统的开发与旧系统的废弃并行进行
正如前文所述,尽管并非所有的系统开发项目都是如此,但在一个系统开发项目中,往往同时包含了从旧系统过渡到新系统的过程。系统本身往往在某一天突然进行切换。
然而,日常业务的进行应该是从过去到现在,从现在到未来的连续过程。在保留必要的过去数据的同时,不阻碍当前业务的进行,并向未来提出优秀的“系统化”构想,这些都是向新系统过渡时常常伴随的各种挑战。由于这些情况的复合影响,新系统的开发与现有系统的运营和维护等业务复杂地相互关联,甚至可能形成无法割舍的关系。
新系统迁移步骤是什么
从旧系统迁移到新系统时,特别重要的是正确地迁移数据。数据迁移的步骤通常按照以下程序进行。
- 明确旧系统存储的数据中,哪些应该迁移到新系统→应该从新系统的屏幕方便地搜索的数据是哪些,以及哪些数据即使不能从屏幕搜索(例如在进行审计等时),也应该能够按需提取,这些区别也需要一并明确。
- 将在步骤1中确定的数据中,应导入新系统的数据以CSV文件等格式输出。
- 将在步骤2中提取的数据导入新系统。
- 验证步骤3中导入的数据是否在新系统中反映,确认是否正确迁移。→验证是否正确迁移的结果通常通过屏幕显示或打印账单等方式留下证据材料(即所谓的测试过程)。
向新系统过渡时,用户和供应商的角色划分往往困难重重
在前述的数据迁移步骤中,经常出现的问题是,用户方面应该将其视为自身内部问题的程度,以及应该在何种程度上进行管理。此外,关于不仅限于数据迁移,而是在整个系统开发项目中“用户的合作义务”的概述,请参考以下文章。
https://monolith-law.jp/corporate/user-obligatory-cooporation[ja]
一般来说,在系统开发这样的项目中,供应商方面确实在系统开发的专业知识方面往往优于用户(或者更准确地说,这正是他们被委托进行业务的原因)。然而,另一方面,关于公司系统的“应有状态”的讨论往往只能由用户方面进行。
考虑到这些因素,可以考虑让用户执行前述的步骤1和4的角色划分。换句话说,在整个数据迁移过程中,对于需要迁移的数据的“需求定义”和是否能按需求迁移数据的“验收”可以被视为用户的合作义务。或者,另一种角色划分方式是,如果用户方面有对旧系统有丰富知识的人,也可以考虑让他们负责步骤2。
如果不需要外包,而可以在公司内部处理旧系统的问题,那么可能会考虑只将新系统的问题外包给供应商。在这种情况下,数据迁移工作中,用户和供应商的角色划分有时可能会变得模糊。另外,当用户将系统开发相关的工作外包给供应商时,通常期望供应商承担哪些角色,以及将承担哪些法律义务,关于这些问题的一般性解释,请参考以下文章。
https://monolith-law.jp/corporate/project-management-duties[ja]
关于新系统迁移的过去裁判案例
在致力于新系统迁移的系统开发项目中,实际上存在出现问题并导致诉讼的案例。以下引述的判决书中的案例,是在数据迁移过程中迁移工作失败,新系统中出现了多个数据不一致和错误,导致交付日期延迟的情况。对于这些各种问题,供应商和用户各自对项目承担了何种责任成为了争议点。最后的结论是,法院指出供应商应承担以下的注意义务,并确认供应商违反了注意义务。
被告在本案承包合同基础上进行数据迁移工作,不仅仅是将旧系统上的数据迁移到新系统,而且承担了使新系统通过迁移的数据运行的责任。具体来说,开始数据迁移工作之前,应调查和分析旧系统上的迁移目标数据,了解数据的性质和状态,考虑数据迁移到新系统后是否会阻碍其运行,如果会造成阻碍,应决定何时、如何修正该数据等问题,然后进行数据迁移工作(迁移设计,迁移工具的开发,数据迁移),最后,承担了使新系统通过从旧系统迁移的数据运行的责任。
在本案中,应认为被告有责任在数据迁移过程中,纠正和消除数据不一致的义务。
东京地判平成28年(2016年)11月30日
这个案例中,用户方承担了步骤1和步骤4,供应商方承担了步骤2和步骤3的角色。也就是说,供应商方一度接受了从旧系统中提取数据(步骤2)的任务。因此,法院也判断,如果供应商(作为系统开发的专业人员)接受了包括数据提取在内的任务,那么他们应该事先考虑是否能够顺利进行数据提取等工作。
然而,如果步骤2(即数据提取)事先被定义为用户方的任务,并且在此基础上提取工作失败了,那么情况又会如何呢?在这种情况下,可能会认为用户方由于没有事先调查数据提取是否能够顺利进行,导致交付日期延迟,反过来,用户方可能会被追究违反合作义务。
另外,这种判断不仅仅基于合同,还会根据与系统开发进度相符的会议记录等证据进行。关于会议记录的重要性,我们在下面的文章中进行了详细的解释。
https://monolith-law.jp/corporate/the-minutes-in-system-development[ja]
总结
系统开发这样的项目,无论是用户方还是供应商方,都需要承担许多义务,并且需要进行细致的沟通。因此,在前述的法院判例中,只要前提条件稍有变动,归责对象就可能轻易地在用户方和供应商方之间反转。
考虑到系统可能承载着无法从界面外观想象的大量数据和复杂的机制,以及由于微小的前提差异可能导致最终的司法判断结果大相径庭,我们可以说,新系统开发项目的风险管理,应该与旧系统的废弃一同,全面地进行把握和处理。
Category: IT
Tag: ITSystem Development