我参与了许多迁移项目,其中一个是从一个平台转换到另一个平台。我还看到了惊人的成本超支,以及对这些类型项目的困难程度的惊人估计。
在我创建并花费大约 25,000 美元构建的一些项目和平台中,更换和重写此应用程序的成本导致其他团队接管该项目,由此产生的成本过高750,000 美元。
您还假设需要更换当前系统。您必须清楚地知道移动和替换当前平台和软件的实际目标是什么。简单地重写一些东西并将功能转移到另一个平台上几乎没有收益,除了花很多钱,这对你的业务没有任何好处(但是,嘿,那些开发人员会拿钱,如果他们说服你需要这样做)
您可能想阅读 Joel 撰写的这篇关于软件的精彩文章(顺便说一下,Joel 开发并创建了这个论坛堆栈溢出 - 我在他的一些讨论论坛中担任版主将近 10 年),。在这篇文章中,Joel 警告并警告不要突然重写不会生锈或磨损的完美软件。
你不应该做的事情,第一部分
乔尔·斯波尔斯基
他们做到了。他们犯了任何软件公司都可能犯的最严重的战略错误:
他们决定从头开始重写代码。
文章在这里:http://www.joelonsoftware.com/articles/fog0000000069.html
Joel 继续指出,在过去 10 年中,那篇文章仍然是他最受欢迎的文章之一(并且有些争议)
将一个运行良好且运行良好的应用程序运行了 10 年并完成其工作,然后简单地在另一个平台上重写它是没有意义的,特别是如果您没有可用的人力、专业知识和人员维护这个新系统。如果新系统不能完成比以前系统所做的更多的事情,情况尤其如此。事实上,如果你确实有那个 Manpower,他们很可能已经开始随着时间的推移转换这个系统。我的意思是为什么突然有人突然打开电灯开关,然后突然意识到需要引入新的开发人员来重写已经运行良好的系统?
我还要指出,我从事该行业已有很长时间(既是出版书籍的出版编辑,也是访问书籍的技术编辑),我还做过从大型机系统到台式机的迁移项目。而且,我还完成了桌面数据库系统向大型主机系统的迁移。
我只能说很少见有这么多表的应用程序。事实上,这个问题马上就敲响了警钟。
因为这里有这么多的表,我不得不认为可能有很多进程,多个应用程序在这里拼凑在一起,代表了整个系统。如果不是这种情况,那么在 .net 中重写当然没有意义,除非您解决系统的非规范化性质。数据已经在 SQL Server 中的事实有所帮助,但这可能意味着您有能力、容量和基础设施来扩展设计不佳的东西,并且放在首位
软件灵活性的很大一部分来自正确规范化的数据模型。您遇到的问题是您在 SQL Server 中有数据,并且很想将部分表单和功能重写为 .net 表单,并继续使用当前现有的数据模型。不幸的是,这使您陷入了困境,因为您想继续使用现有数据,并开始在 .net 中重写功能。然而,在 .net 中重写功能而不解决数据模型是一个非常糟糕的主意。
具有讽刺意味的是,这是一个陷阱 22,因为如果该系统具有非常出色的设计数据模型,您甚至可能不需要重新设计并将其移至 .net。 Access 和 SQL Server 可以轻松扩展到 100 位用户。并且,access 支持类对象的使用,甚至源代码控制。
换句话说,请记住,人们可能会要求在 .net 中重写它,因为他们相信应用程序会神奇地增加灵活性,并且能够比他们不断变化的业务规则更快地进行更改。事实上经常发生相反的情况,因为访问是一个非常 RAD 的工具。这意味着,由于业务规则的变化,一线人员经常可以进行修改,比 IT 部门和他们的开发人员团队在下一个伟大版本的应用程序上工作的速度更快。更糟糕的是,您不想让 IT 部门和那些数据模型不佳的开发人员陷入困境。
我的意思是,由于当前的业务流程不够灵活,您现在是否要聘请 IT 部门来构建每一个电子表格并为人们提供卓越的表现?如果 IT 部门绕到每个人的办公桌前,握住他们的手,为每个人正确地制作 Excel 表格,那就太好了,但这在现实世界中是不切实际的。因此,除了从这些人手中夺走访问权限之外,您还不如从他们那里夺走 excel。
我只是指出,我的蜘蛛感告诉我,这里的数据模型将是一个真正的挑战。请记住,我总是会反过来使用糟糕的代码和设计出色的数据模型(很棒的代码,但糟糕的数据模型)。其原因在于出色的数据设计,然后代码和应用程序实际上是自己编写的。借助出色的数据模型,您可以轻松地根据不断变化的业务规则进行更改,这再次有利于出色的数据设计而不是出色的代码设计。当您拥有良好的数据模型时,您还可以重新考虑代码超时。因此,借助良好的数据模型,您可以将表单和功能以及 UI 迁移到 .net 中,并且当现有数据模型有意义时,您可以无缝且轻松地做到这一点。
此外,转向这些新技术是没有意义的,而且您将更少介绍为现有业务流程引入诸如自助式 Web 门户之类的东西的可能性。因此,今天我们现在可以允许客户操纵和使用当前锁定在系统中的一些信息。这可能很简单,因为他们检查订单状态而不是浪费宝贵的客户电话时间。或者可能是一些简单的事情,例如加拿大的一家大型包裹公司在实施包裹跟踪系统的第一年就节省了大约 10,000,000 美元。或者可能是让客户查看他们的帐户余额这样简单的事情。
因此,目前在市场上,这些自助式客户门户网站系统允许客户输入、使用和获取他们的信息,而不是调用组织内的一些雇员,然后他们转身启动应用程序,然后操纵该客户在电话中的信息。还不如让客户做这个工作!因此,从订单状态、欠款余额、银行业务等等,今天真正的樱桃模型票是允许客户在代表内部应用程序正在创建的所有有价值信息的单元服务门户网站上使用。
如前所述,您必须问,人力和人员将在哪里来构建和维护此应用程序?显然,必须以某种方式创建包含大量表格和表格的现有系统,并且需要花费大量的时间和精力。您必须要问的关键概念是,那些用于构建现有应用程序的重大投资和资源来自哪里?那么谁来维护新系统呢?换句话说,您需要设计新系统以降低维护成本。 (我的软件的新版本每年可以为客户减少多达 10 或 15 小时的维护时间)。
说到底,好的软件开发和好的设计就是好的设计。如果系统现在满足您的业务需求,使用 Access、VB6 或 vb.net 并不重要。
还要指出的是,新版access 2010,可以创建.web表单。它们是 XAML(zammel .net 表单)。我要指出这一点,因为将前端皮肤从访问 .net 更改为您几乎没有收益,除非基础数据结构和设计也被修改以利用可以通过新技术完成的新的可能业务流程(例如那些小区服务门户网站)。在我看来,简单地重新绘制以 .net 形式结尾的字体真的非常浪费金钱,除非正在解决其他问题,例如数据模型,或者某种类型的门户网站可以提高这里的灵活性。
您已经在这里提出了一些很好的建议。请记住,这实际上归结为这些人希望在 .net 中重写该软件的目标和原因。那些新的目标和愿望最好不要以简单地将您现在拥有的表格重新制作成 .net 为借口,因为这将真的一事无成,并且不会提高他们解决当前系统不断变化的业务需求的能力using 显然过去一直在做。
祝你好运 我不认为这是可以在简单的论坛帖子中回答的问题,但至少你在这里有很多东西要咀嚼,这样你就可以开始了。