.Netで完全に再設計しますか?


8

非常に広範なアプリケーションは、Accessベースのシステム(データベースストレージ用)として始まりました。フォームはVB5またはVB6、あるいはその両方で作成されました。.Netが開発コミュニティのフィクスチャになったため、特定のモジュールが書き直されました。これは、2つのテクノロジーを互いに満足させるためのクロステクノロジーと追加の作業のために、維持するだけでは非常に扱いにくく、コストがかかる可能性があります。もちろん、アプリケーションはODBC OleDbとMySqlを組み合わせて使用​​します

.Netの下でアプリケーションを完全に再開発するために時間とリソースを費やす方が費用対効果が高いと思いますか?より安定したアプリケーションを開発する努力の中で、.Netを使用することは理にかなっていますか?または、引き続きAccessのバグを追跡し、.Netに新機能を追加し(.NetとAccessの間に新しいバグを作成する場合としない場合があります)、適切な設計と開発を妨げる時間的制約の下で古いAccessモジュールを.Netモジュールに書き換えますか?

更新 アプリケーションはOleDbとMySqlを使用しています-以前のステートメントを修正しました。

また、書き換えをさらにサポートするために、.Netへの「移植」が始まると、存在していたVBA / VB6コードが基本的に.Netに変換されることがわかりました。私の理解から、パフォーマンスを改善したり、新しいライブラリやテクノロジーを利用したりすることはできませんでした。

私の意見では、これは非常に壊れやすく不安定なアプリケーションを作成します。すべての新しい更新で、これはますます目に見えるようになります。ヘルプデスクの技術者として、報告された問題の増加に気づきました。このソフトウェアを使用している顧客は、問題の増加に気づき、それにコメントしています。


4
あなたはそれが報われることを上司(または他の誰かが決める人)に証明する必要があります。それが十分に悪い場合、あなたはおそらくうっかりするでしょう。リライトタスクを過小評価しないでください。生産品質を上げるために、予想以上に多くの時間を費やします。

1
アプリケーションがODBCとMySqlを使用するのはなぜですか?
kirk.burleson 2010年

回答:


16

多くの人々はアプリケーションをゼロから書き直すことを思いとどまらせ、時々私はその理由に同意します。しかし、ほとんどの場合、アプリの書き直しが最も簡単なソリューションであり、Accessで記述されたものはすべて.NET-PERIODに移植する必要があります。誤解しないでください。Accessにはその場所があり、組織に多くの機能を提供できますが、人々が信頼する本格的なアプリになると、Accessは成長します。

既存のVBAを1対1の変換で.NETに移植するのに、それほど時間はかかりません。しかし、VBAがそもそもあまり良くない場合、それは素晴らしいソリューションではないかもしれません。再設計/書き換えは、書き込みに時間がかかりますが、長期的には保守がはるかに容易になります。

ほとんどの場合、私はAccessが関係している場合、ゼロから書き直すという立場にあり、一度も後悔していません。


ここの誰もが良い答えを持っており、彼らの視点を検討するために私に一時停止を与えました。あなたの見解、@ウォルターは私がいるところです。私はVBの書き方が悪いとは考えていません。しかし、それはVBです。ショップでは、初めからVBを書いてきました。私はVB.NetとC#の両方の経験を持つ新しい人です。C#で書く余裕があります。したがって、もちろん、私にはアイデアがあり、それらを実装してもらいたいと思っています。
IAbstract 2010年

7
+ 1M「Accessで記述されたものはすべて.NETに移植する必要がある-PERIOD」アクセスはおもちゃです。
スティーブンA.ロウ

1
ウォルターズの答えを証明できます。私は個人的に、バグの多いC ++ WebサービスをC#(.Net 2.0)で書き直し、ASP.Net 2.0でASP.Net 1.1 WebアプリケーションをAJAXを使用してオーストラリアの大手銀行向けに書き直すプロジェクトで個人的に働いています。プロジェクトは本当に成功し、私たちは5名の小さな集中チームでした。1.新しいバージョンの準備が整うまで古いバージョンの本番環境の問題をサポートしますが、新しい機能は追加しません。2.本当に重要な場合を除いて、書き換えられたコードに新しい機能が追加されておらず、バグの修正やパフォーマンスの改善など、機能のコピーによる機能的な機能のみ
softveda

1
他の誰もがVBを知っている場合、VB.netの代わりにC#を選択するのは適切ではありません。{}があるからといって、それがすべてのソリューションにとって究極のものであるとは限りません。この場合、VB woudlの方がはるかに適しています。
gbjbaanb

そして、これが「書き直し」に飛び込むべきではない理由です。Pratik(または彼の後継者)は、ASP.NET 2.0 / Ajax / .NET Framework 2.0プロジェクトをサポートしています。 +11 :-)
gbjbaanb 2015

5

リファクタリングのアプローチに同意します。これは、完了するまでに数か月かかる遅いプロセスになる可能性が高いですが、一度に1つの機能/セクションを移動することには、次のような大きな利点があります。

  1. 製品の機能は維持されます。
  2. 新しいリリースを配信する機能が維持されます。
  3. 時間のプレッシャーが取り除かれます。

幸運を


リファクタリングは少なくとも1年間続いており、来年か2年は継続する予定です。リソースは、(1)アプリケーションの現在の状態を維持し、バグを修正するために適切に使用され、(2)完全に.Netになるようにアプリケーションを設計し、現在の.Net機能を新しい設計に移行することが考えられます。優れた.Netコアがあれば、アプリケーションはより柔軟で安定し、新しい機能の追加に寛容になる可能性があります。
IAbstract 2010年

質問を読むと、アプリケーションが移植されているように聞こえます。たとえば、リファクタリングではなく、再編成、変更、テストが含まれます。
Michael Shaw

2

既知の機能セット(および既知のバグも!)最も可能性の低い機能のセット、そしてより重要な-未知のバグを備えたアプリに。ユーザーは不満などを感じる可能性があります。

ある期間にわたってゆっくりとアプリをリファクタリングし、それによってそのアーキテクチャをより長い期間にわたって進化させれば、多分うまくいくでしょう。


ユーザーはすでにイライラしています。.Netのデバッグは、Accessをデバッグするよりもはるかに使いやすく、高速です。また、非常に率直に言って、そのような広範な使用と機能を意図していないテクノロジに基づいて構築された広範なフレームワークは、新しいテクノロジの統合を開始したときに、特にIMOの発生を待ち構えています。.NetをAccessに統合すると、多くの場合、Accessの制限により、.Netを最大限に活用できない可能性があります。
IAbstract

1

その規模の書き換えで経験した大きな課題は、2つのコードベースを同時に維持する必要があることです。レガシーシステムのバグを修正する場合、新しいシステムで機能が正しく動作することを確認する必要があり、その逆も同様です。一度に1つのモジュールをアップグレードすると、そのメンテナンスの頭痛が最小限に抑えられます。

レガシーシステムと置換システムの両方で実行される完全な回帰テストスイートも役に立ちます。


これはまさに課題です... Accessベースで修正されたものはすべて、.Netベースとの互換性についてテストする必要があり、その逆も同様です。
IAbstract 2010年

最初から書き直すもう1つの欠点は、完了するまでユーザーが何も取得できないことです。少なくとも一度に1つのモジュールを交換するだけで、すぐにいくつかの改善が見られる可能性があります。
Larry Coleman

0

Jasに同意します。リライトのためにアプリをリライトしないでください。デバッグや改善が必要になることは決してないので、なぜ時間を無駄にするのでしょうか。ただし、Access to .NETから新しい開発者の専門知識に移行が進んでいると感じた場合は、手遅れになる前に移行する必要があるかもしれません。それはありそうにありませんが、考えられる考慮事項です。

開発の観点からは利益がないかもしれませんが、さまざまなアプリケーションがユーザーに影響を与えることでどのように広がっていますか?より多くのユーザートレーニングが必要ですか?彼らはもっと間違いを犯していますか?彼らは何かを見つけることができないので、それはサポート呼び出しの数を増やしますか?


個々のモジュールのリファクタリングにおける最大の変更は、フォームがフロントエンドを探す方法と、バックエンドのMySqlに移動する方法です。ユーザーが慣れる必要があるいくつかのマイナーな機能変更があります。ただし、ほとんどの場合、変更や新機能などの数に関係なく再トレーニングが行われます。.Netの部分がまだ残っている場合でも、プログラムの再起動を強制するAccess(フォーム、データなど)がクラッシュすることがよくあります。ある程度の応答性。
IAbstract 2010年

0

「.Netの下でアプリケーションを完全に再開発するために時間とリソースを費やす方が費用対効果が高いと思いますか?」

これはここで答えられる質問ではありません。

要件ピラミッドの一番上から:誰かが彼がうまくいけば事業計画で正当化できる決定をしました。そのビジネスプランでは、アプリケーションの変換にかかる時間と余分なコストを明記する必要があり、その同じビジネスプランでは、利益も金銭で示されています。

それがその方法です。そのためのビジネスプランがない場合。その答えは、まず、いくつかの高レベルのユースケースに追跡可能なビジネスプランに取り組み、影響分析を行ってプロジェクトの開始を確認することです。

変更につながるビジネス目標の元のドライバーがお金にさえ基づいていない場合、この人はおそらくすべてを支払う人なので、実行する必要があります。

事業計画はないが「それだけで済む」場合は、事業計画を作成して上層部に提示してください。高レベルのユースケース、コスト、再設計、構築の時間、運用の追加コスト、管理者とエンドユーザー向けの新しいトレーニング、プロジェクト管理、潜在的なリスクを含めます。

私見これは技術的な質問ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.