假设您正在进行一个长期运行的项目(长期运行 = 几年),并且正如预期的那样,全新版本中将会出现一些内容。可能会有一个具有全新功能的新 .Net 框架(例如Linq、Entity Framework、WPF、WF...)、新的 Visual Studio 或您最喜欢的控件库的 V.next、新的 Mock 框架以及更多东西。您处理这些技术更新的准则是什么?您会立即采用它们还是会忽略它们直到项目结束?您对不同的事物(工具、框架、支持材料)有不同的指导方针吗?

有帮助吗?

解决方案

根据我的经验,这些决定总是根据具体情况做出的。考虑了几个因素,包括:

  1. 新技术的成熟程度如何?该组织是否喜欢走在前沿新技术的前沿,或者更喜欢使用经过验证的工具和方法?

  2. 您的员工拥有哪些技能?它们是否符合新技术的使用,或者是否需要更多培训?生产力的提高是否会超过加快速度所需的时间?

  3. 您对现有技术有哪些投资?转向新技术的成本是多少?涉及多少代码返工和重写?

  4. 有什么要求?是否有现有技术支持,或者是否需要新工具来满足要求?

  5. 业绩预期是什么?新技术是否提供了旧技术无法满足的性能改进?

  6. 科技文化又如何呢?组织供应商是否特定(例如微软商店)?可以使用开源代码吗?

  7. 该项目的范围是什么?这是一个可以从框架和工具等支持技术中受益的大型项目,还是一个会因这些事情而过度沉重和复杂化的小项目?

  8. 新技术是如何支持的?供应商是否有良好的文档?如果您遇到问题,有可以倾诉的人吗?或者您所在的组织拥有知道如何在没有支持合同的情况下解决问题的人员?

  9. 该技术使用起来舒适吗?看起来有道理吗?是不是干净又优雅?其他人似乎喜欢它吗?其他人有问题吗?

  10. 该技术是本周的最新技术吗?它是否在战场上证明了自己并产生了切实的成果,或者它只是一种宗教?

  11. 您需要多少时间来学习新技术并解决问题?好处是否大于成本?

作为一个非常简单的例子,我为我最近的项目选择了 Link to SQL,因为该项目足够复杂,足以保证 ORM,L2S 性能良好并且是轻量级的,我们是一家 Microsoft Shop,我的感觉是 Entity 框架还没有完全准备好迎接黄金时段(尽管微软表示它将成为未来的首选框架)。

其他提示

跟着你已经开始用什么

一个又大又长的运行项目常常带有一个巨大和高度复杂的代码库。任何改变或升级到库的新版本可以在非常微妙的,意想不到的方式添加错误。

此外:对于大项目的工具和使用的库应该已经过测试并在设计阶段进行评价。除非你找到一个表明,塞或安全问题,最好不要升级。

永远记住:不要在流的中间换马。 : - )

我想说不同的因素起作用,比如-

  1. 假设某个软件已接近其生命周期,例如去年 4 月,Microsoft 取消了对 SQL Server 2000 的主流支持,而您的产品使用它,那么明智的做法是在下一个版本中使用 SQL Server 的下一个版本。
  2. 另一个起作用的因素是最新版本软件中的新功能会给您的产品带来多少价值。很可能的情况是,新版本的 .NET 框架的某些内容不会为您的产品增加任何价值,那么这并没有形成强有力的升级理由。
  3. 预算也是一个重要因素。我认为您需要升级许可证才能升级到下一个版本,除非您已经参与了软件保障等活动。
  4. 团队的训练也是一个因素。如果最新版本要添加到您的产品中,那么您还必须培训您的团队。

嗯,可能还有其他因素。这些都是我脑子里想不到的。我希望它有帮助。

干杯

如果你在谈论一个具体的框架,比如,我给你的建议的最大的一块是保持系统和应用程序分开。这就是为什么我喜欢的图案,如模型 - 视图 - 控制器 - 它让你的代码的模块化,意味着你可以升级部分而不破坏应用程序作为一个整体

在一个更实际的层面,如果你的框架有一个Git或SVN仓库,收银台从回购通常的“系统”目录下,然后就可以称之为“SVN更新”偶尔跟上最新和最伟大的基础之上。

我建议,该项目不会持续这么久。在开发更小的碎片与每隔几个月反复应用。这样一来,随着新技术出来,你可以进行必要的变化,并落实更新,因为你志不遂不得不决定重建整个应用程序。正如你所说,试图开发整个应用程序作为事情的变化是行不通的。

作为另一个海报说,它肯定是一个案件逐案基础的东西。你可以升级,并通过多么困难或容易确定大多时候它是测试系统的新版本。有一个全面的自动化测试套件为你的应用有很大帮助与此有关。

一般情况下,我尝试更新图书馆的最新的稳定版本等尽可能多的,因为这使得维护更加方便。如果你不更新,你可能会发现自己修补或正在使用的库的版本错误周围工作。如果你少更新频繁,每次更新将是更多的工作,因为你有更多的变化来处理,它已经不再自上次触及该系统,这样的话你还记得少了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top