2008-09-12 3 views
3

「1つをビルドしてビルドする」という言葉に慣れている場合は、これを実行したようです。私たちはオンラインアプリのバージョン1の限界に達しています。それはで物事をクリーンアップする時間です:大規模なシステム変更を実装する

  • 再編成コードおよびUI
  • 統一UIは、すべてを処理するために、当社のデータベース構造の変更、将来
  • のためのより多くの機能
  • ビルを追加
  • を処理します上記

この移行を実行する最も良い方法は何ですか。

私たちはすべてのユーザーを新しいシステムに派遣しないようにしたい(終了したら)...彼らは気が散ってしまい、コールロードを処理できませんでした。私たちのユーザーは、技術的に熟練したソフトウェアからソフトウェアへの書き換えのタイプから、HTMLが何であるかを知らないユーザーまで、さまざまな分野を担当しています。

システムの新しい「インストール」を開始し、この新しい設計がバージョン1の問題を十分に解決した後、徐々にユーザーを移行する必要がありますか?

私たちのシステムの各モジュールを段階的に変更する必要がありますか?データベースのレイアウトが変更されるため、「コアコード」と周辺モジュールのコードを調整する必要があるため、これは難しい場合があります。

最先端のバージョンのアプリを使用して、信頼できる患者用の「ベータテスター」クライアントを用意するのは一般的ですか? (ここでの目標は、新しいシステムのバグのフィードバックとテストを行うことです)

他のアドバイスはありますか?初めての経験ですか?

答えて

2

答えは、恐れて、それはそれに依存しています。それはあなたのアプリケーションの種類とユーザーの種類によって異なります。システムが何であるか、そしてバージョンの変更の範囲を知らなければ、答えを提示することは困難です。

つまり、いくつかの経験則があります。

まず、ビッグバンの立ち上げは避けてください。システムの起動には問題があります。業界では、バンバンの打ち上げが素晴らしいアイデアであると思ったプロジェクトではじまっています。 Cuilは、ビッグバンの打ち上げの最近の高プロファイルの因果関係でした。

歯の問題を管理しやすいようにするには、少数のユーザーで最初に作業し、次にユーザー数をゆっくり調整する必要があります。

第2に、確実に行う必要があることは、最初にユーザーを入れてください。です。ユーザーは、システムのV2を使用するために可能な限りの作業を行う必要があります。理想的な作業量はゼロになります。

これは、あなたがゆっくりと、他の1つのシステムからユーザーを移行するために選択した場合、あなたは必ずすべてのデータを作るための責任があるとの設定が移行されることを意味します。たとえば、12/09/2008以前のすべてのレコードでV1を使用し、その後のすべてのレコードでV2を使用する必要があることをユーザーに伝えるのと同じように、何もしないでください。

V2をリリースする時点で、ユーザーの生活が楽になり、不必要に難しくなることはありません。

第3に、ベータプログラムをお持ちです。イントラネットアプリケーションにも適用されます。アプリケーションを開発することは、ニュートン・ラフソンの多項式の根を見つける方法によく似ています。ユーザーが望むものを推測し、それをユーザーに提供し、ユーザーがフィードバックを提供し、ゆっくりとしかし確実に各反復が問題の解決に近づきます。

ベータプログラムを使用すると、時間をかけずに新しいバージョンを新しいバージョンに変更するだけでなく、変更をコメントするよりもはるかに迅速にルートを見つけることができます。 Betasは、ユーザーを早めにオンボードにして、プロセスに参加させるようにします。私が十分にストレスを感じることのできない重要性。

1

新しいCRMシステムをユーザーに提供し終わったばかりで、これを行うには奇妙なアイディアだったと伝えておきます。私のチームと顧客にとっては非常に苦労しました。

もっと多くの作業を行うことを意味していても、段階的なリリースを行うためのあらゆる手段があります。あなたはすべてを動かすために英雄的な努力を経る必要がないので、あなたは感謝しています。そして、あなたの顧客は、ちょっとだけ製品に導入される能力に感謝します。

希望に役立ちます!

0

インクリメンタル・リ・アーキテクチャーのように聞こえるのは、あなたの気軽なバズフレーズです。

私はWebアプリケーションでそれをやったことはありませんが、私は徐々にクライアントアプリケーションの変更を徐々に行ってきました。あなたが作業の断片がかなり合理的な方法で順序付けされていることを確認するために少し前に時間を投資すれば、うまくいく可能性があります。良いリファクタリング支援への小さな投資は、あなたがまだそれを持っていないと非常に役に立ちます。 .NETを使用している場合はjetBrains Resharperを個人的にお勧めできます。また、Javaベースの場合、IntelliJ IDEAにも同様の機能が含まれていると思います。

1

私はEstebanと緩やかなリリースがベストであることに同意します。それは家を改造するようなものです。最初は良いアイデアのように思えます。しかし、すべての先を計画し、請負業者を雇って外に出なければならないということです。それで計画に何か変わるか、請負業者が消えて、あなたが救うことを望んでいた時間がなくなりました。一方で、徐々に変化することで、誰もが歩みを止めて考えていくことができます。時には、以前の変更が予定よりもうまくいく場合に、後の変更を避けることができます。

大きなスケーリングの問題があったシステムで動作します。私たちが必要と思ったすべての変更点の一覧を作成し、影響があるかどうかによって優先順位を付けました。その後、一度に1つの変更を開始しました。リストの途中でスケーリングの問題を解決したことがわかりました。私はまだリストを持っていますが、私はそれを終える必要はないかもしれません。私は機能を追加し、他の問題を解決することは自由です。

もちろん、弾丸を噛んで全体を裂くことが最善の時があります。しかし、それは人々が信じている傾向に比べてはるかに一般的ではありません。また、重要な運用システムでは、「崩壊」の決定は致命的となる可能性があります。誰もが現代のコンピューティング時代に持ちこたえなければならない大規模な政府のプロジェクトを見てください。しかし、不可欠なサービスが失われることはありません。哲学が徐々に変化してきたのであれば、一度に近代化されていただろう。