2009-08-25 2 views
1

私はちょうど最後の数ヶ月のプロジェクトで作業を終えました。オンラインですぐに利用できます。クライアントは、アプリケーションのほとんどの部分をほぼ完全に書き直すものに戻りました。新たな契約が起草され、追加の作業に関連して支払いが行われました。デザインの変更をどのように扱いますか?

私はこの全部を再加工する最良の方法が何であるか疑問に思っています。あなたがやる最初のいくつかのことは何ですか?あなたが変更しているものが他のものを破壊しないと自信を持っているように、デザインをどのように修正すればよいでしょうか?

簡潔に言えば、劇的なアプリケーション設計の変更(DBとコードの両方)をどのように効率的に取り組んでいますか?

+7

すべてのITプロジェクトのように聞こえます。私は解決策が2つの部分のジン、3つの部分のトニックの –

+0

があったことを見つける。私は助けに爪の大きなバットを見つける – Calanus

+2

私は常に氷の上に4部のジャック、1部の水に部分的だった...そして楽しむ〜 – BigBlondeViking

答えて

1

データベース設計は、この点でアプリケーション設計とは異なります。

多くの場合、クライアントの再考はアプリケーションを完全に変更しますが、企業の基盤となるデータモデルにはほとんど変更がありません。この理由は、クライアントがビジネスプロセスの観点から考えている傾向にありますが、基本的なデータに関しては考えていないためです。ビジネス処理とデータ処理は緊密に結合されています。データ記憶装置の密接度は低い。

古典的なデータベース設計の当時、設計者は、データベース設計を(少なくとも)論理設計と物理設計の2つの層に分割してこのパターンを悪用する方法を学びました。ビジネスプロセスの変更には、アプリケーションの完全な書き換えと、データベースの物理的な設計の大幅な変更が必要ですが、論理設計の変更がほとんど必要ありません。

データベース設計でこのようなレイヤーが分離されなかった場合、影響を受けるものとそうでないものを区別することは難しいです。テーブルと列から始めましょう。変更があれば、それが入っているテーブルから列を削除する必要があるか、新しい列を作成する必要があるかどうか自問してください。答えがノーなら、あなたは運がいいです。次に、データベースに置かれた制約(PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULLなど)を調べます。これらの制約は、クライアントの変更によって強化されたり緩められたりする可能性があります。そうでなければ、あなたは運がいい。データベースに制約を宣言しておらず、アプリケーションコードですべての整合性保護を行うことを選択した場合、おそらく運が悪いでしょう。

テーブルのインデックスの変更や、アプリケーションでのデータの操作方法については、依然としてかなりの労力が必要です。しかし、あなたは古いシステムへの投資の一部を回収しました。

アプリケーション自体は、データベースよりもプロセスにおけるクライアントの変更に対して脆弱です。データベース設計がアプリケーション設計によって完全に推進された場合、不運になる可能性があります。

1

変更が激しい場合は、やり直すのが一番よいかもしれません。私はいくつかの劇的な変化を経た多くのプロジェクトに取り組んできました。

最初からやり直すと、最後のプロジェクトから学んだ経験を使い、より効率的な製品を提供することができます。

古いサイトを新しいサイトに再作ってみることをお勧めします。変更したばかりのものを書き直したばかりの場合よりも、もっと時間を費やすことになります。

あなたに最高の運があります!

+1

あなたはまだコピー&ペーストのビットができる必要に応じて元のアプリからコードを作成するので、音が劇的ではありません – Waggers

0

あなたが変更しているものが他のものを破壊しないと確信しているように、デザインをどのように修正しますか?簡単に言えば、劇的なアプリケーション設計の変更(DBとコードの両方)を効率的にどのように取り組んでいますか?

テスト、コード複雑度/カバレッジメトリック、および継続的インテグレーションシステム。それらを早く、頻繁に実行すると、どのパーツが最も危険なのか、どこから書き始めるのかを知ることができます。

潜在的に問題のある変更を加える必要がある場合、これらはセーフティネットになります。何かが壊れてしまった場合、あなたのCIシステムがあなたに伝えます。あなたが問題があることを知る前に、ウサギの穴を数週間過ごしたことはありません。

4

単体テストがあると仮定すると、これはリファクタリングに過ぎません。

あなたは維持する可能性が高いです部品のため、その後の場所でのユニットテスト、

  1. ライトユニットテストを持っていない場合。

  2. 変更するパーツのユニットテストを作成します。

  3. テストを実行します。 「キープ」は合格するはずです。 「変更」は失敗します。

  4. テストが完了するまでリファクタリングを開始します。

0

場合によっては、2回目の回でよりうまくやるので、肯定的な態度をとってみてください。さらに、今回はドメイン知識が増えます。

関連する問題