3 つの主要な処理を実行するアプリケーションがあります。A
、B
およびC
。これは、C# の winforms アプリケーションになります。
当社の CEO は、このアプリケーションを 6 つの異なる製品に分割することを望んでいます。
- ジャスト A (シンプル)
- A + B (上級)
- A + B + C (アルティメット)
これらすべては、1 人のユーザーまたは複数のユーザー (ライセンス) に適用されます。これで6つのプロジェクトができました!
3 つの主要部分が実際に分離されており、単独で機能すると仮定すると、1 つのプロジェクトを維持しながら6つのプロジェクトを販売できるでしょうか?
現時点では、これを達成する方法が 3 つあります。
A:基本的なバックボーンを持ち、A、B、C のそれぞれをモジュールとして構築します。このようにして、「1 人/多数のユーザー」の問題に対処するだけで済みます。
B: 1 つの堅固な製品を作成し、プリプロセッサ ディレクティブを使用してコンパイル時に機能を設定します。これは非常に難しく、コードが見苦しくなります。また、プロジェクトが壊れる可能性があります。
C:アプリケーションで特定の機能を許可するように設定されるバージョン管理メカニズムを作成します。これは最も簡単に実行できますが、2 つの欠点があります。クラックは簡単で、単純なユーザーには Ultimate バージョンを提供しますが、これは悪いことです。
これと同様に、Windows のバージョン管理の問題 (Home、Basic、Pro、Ultimate) があります。
このプロジェクトをどのように設計する必要がありますか?