我是否过度扩展了这个项目?

时间:2009-10-28 09:40:28

标签: c# ms-access

我目前正在重写我们公司的数据库应用程序,它是SQL Server(Express)后端的Access-VBA前端。

我已经管理了4年左右的应用程序了,当我从这里开始时,它是网络共享上的单个* .MDB文件(每周都有损坏)。

从那时起,我将数据库更改为多用户* .MDE,之后我将数据作为* .ADE迁移到SQL Express服务器。

从那时起,应用程序运行顺畅,非常可靠。

但是,当然使用Access有一些缺点(没有源代码控制,依赖于Office版本等),所以我建议我的老板重写C#&中的前端。 WPF。

几年前我做了一些Java和C ++,但就是这样。现在我已经在这个项目上工作了3个月左右,而且进展非常艰难。只是为了填充组合框这样简单的任务,我必须搜索网络并阅读很多东西。

我真的很想学习C#(自从我开始以来也学到了很多东西!)我发现这是一个很好的机会,但也许我已经过度扩张了自己,从一个真正的LOB应用程序开始作为一个单一的初级开发人员?

7 个答案:

答案 0 :(得分:10)

为项目挑选技术因为你想学习它总是一个风险。我也关注WPF。首先,它不是一种经过验证的技术(与Winforms相同)。它仍然很新。第二,它对可以运行的系统提出了潜在的问题限制。 Vista / Win7或我认为XP SP3。这可能是也可能不是问题。

良好的经验法则是您应该尽早发货并经常发货。中断一项功能并实现这一目标。有一段时间,您可能让用户将这两个应用程序用于不同的任务。你做这件事远比试图一口吞下整个东西要好得多。

另外,我认为你发现了这一点,完全重写几乎总是一个错误。为了获得很多收益,这是一项很多工作,你给自己很多机会在已经有效的东西中引入错误,并且你失去了很多领域知识(和工作代码)。

答案 1 :(得分:4)

我会说你在C#中做过什么,然后回到你的Access应用程序。

您正在构建SQL Server后端的数据库前端。访问是完美的 - 这是它存在的全部原因。

对于源代码控制,有Visual SourceSafe(虽然我不太明白为什么你需要一个人的项目)。关于Office版本依赖性,自Access 2000以来,这不再是一个问题,尽管ADP非常依赖于版本,因为它们在所有版本的Access中的行为都不相同。就此而言,MS在过去几年中一直在弃用ADP,转而使用通过ODBC链接到SQL Server的MDB / MDE前端。

我认为你已经把婴儿扔出洗澡水了,应该回到前端进入Access。你想要一个有用的应用吗?或者你想说你是C#开发者?

您能否量化重写前端的实际投资回报率?如果是这样,我认为你会发现使用Access将比批量重写更有价值。

答案 2 :(得分:2)

  

提前发货并经常发货。

我同意cletus()的观点。 “装运它!”快速阅读,并就此主题提出一些很好的建议。

进行重写的最大风险是你花了很多时间在它上面然后项目要么在它接近完成之前取消,要么在50%工作状态下提供100%的功能。如果您的重写由某些用户掌握,那么该项目不太可能被取消,并且用户将驱动他们接下来需要的功能。可能会发现旧应用程序具有许多功能并没有太多用处,因此您可以在比完全重写所花费的时间更短的时间内将大部分价值交到用户手中。

一旦您的代码投入生产,您将感到更快乐并且更有动力,这将有助于您更快地工作。

  

只是为了填充等简单的任务   一个组合框我必须在网上搜索   并阅读了很多东西。

您是否对您的进步速度(或敏捷发言中的“速度”)不满意?

显然,如果你每天可以生产更多,那么这项任务似乎就不那么令人难以置信了。 最好的程序员和平均程序员之间的生产率差异很大(参见Peopleware或神话人月),所以你可以做的任何事情都可以让自己成为一个更好的程序员。

在你的情况下,我想知道一些培训会有所帮助吗?我通常不是课堂培训的忠实粉丝,但如果你周围没有很多有经验的人可以学习,那么这会让你有一个快速的开始。如果培训不是一种选择,您是否拥有本地C#用户组?如果贵公司有更多经验丰富的开发人员,您可以向他们寻求建议吗?或者只是在水冷却器上挑选他们的大脑?

独立工作的一个大问题是,有时你会遇到一些非常简单的事情,而其他人会立即发现。有时只是向别人解释问题可以帮助您以一种帮助您解决问题的方式来查看问题。如果你每天都能与其他人一起工作很短的时间,这可能有助于提高你的工作效率。

您是否拥有(并使用)所需的所有工具?绝对最小值是: 一个。版本控制系统。 湾错误跟踪数据库。 C。良好的开发环境,例如视觉工作室 d。比Visual Studio更好的开发环境!例如ReSharper的。

有关更好的列表,请参阅link text

祝你好运!

答案 3 :(得分:2)

如果您想学习一项重要的新技术,建议您不要重新编写关键任务系统。这几乎是一个刻板的错误 - 最终在Stackoverflow上得到250票的问题,例如“你在升级业务应用程序时遇到的最大错误是什么?”

建议您首先在.NET中创建自己的项目,甚至是小项目。例如,为了让我的脚步于jQuery,我最近写了一个记忆游戏(你一次翻转两个图块寻找匹配的图片)。你可以做类似的事情或简单的支票簿程序。

如果您绝对必须在公司的主要应用程序上作为学习项目进行实际业务工作,请选择一个小而离散的(与应用程序的其余部分分开)工作单元,并将其作为测试项目。它不应该破坏现有的应用程序,只需添加一个独立的功能。根据该实验,您和您的老板可以决定是否值得继续使用下一个稍微大一点的工作单元。

答案 4 :(得分:1)

我几乎总是同意cletus,但我会玩双方并说出哪一条划线?你是否继续保持从1903年末交给你的那个项目?什么时候应该咬紧牙关重写系统?我认为,如果项目与您所描述的项目脱节,您应该将系统分解为功能,实现目标的里程碑和测试测试,验证您正在重写的功能的测试。

答案 5 :(得分:1)

显然我不认识你,但我认为你应该能够处理它。 在抽象层面上,你可以从旧的应用程序中保留很多东西(比如:一般布局,哪些形式做什么等等),这样可以更容易在不断增长的森林中完全迷失。您也可以使用它来判断您的进度:旧应用程序包含多少表单(程序等),其中有多少已经被重写?

当然,你在开始时遇到细节问题(比如上面提到的组合框),但是一旦你克服了这个问题并得到一些例程(以及一些源文件来复制粘贴),它就不会那么难了你比其他任何人都好。

答案 6 :(得分:1)

您可以将SourceSafe与MS Access一起使用,它可以很好地集成。无论这是一个单人项目,我都会推荐这个,它几次保存了我的培根......

我不确定WPF是否适合第一个应用程序,它是一个陡峭的学习曲线,而且对于业务线应用程序的好处在我看来远非令人信服。具有数据绑定功能的C#或VB.Net可以强大且快速构建,但我不清楚除了当前应用程序之外还会提供哪些内容已经“非常可靠”。使用SQL Server作为后端消除了许多针对业务关键型应用程序使用Access的异议(性能,可伸缩性等),实际上我们将Access前端连接到具有数百个并发用户的SQL服务器数据库工作得很好。

我会将.Net保存到下一个应用程序.....