問題タブ [software-product-lines]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 同じ C/C++ アプリケーションのバリアントをビルドする最良の方法は何ですか?
同じソース コードから構築された 3 つの密接に関連するアプリケーションがあります。たとえば、APP_A、APP_B、および APP_C とします。APP_C は、APP_A のスーパーセットである APP_B のスーパーセットです。
これまでのところ、ビルドするアプリケーションを指定するためにプリプロセッサの定義を使用してきました。これは次のように機能します。
私のIDEビルドオプションは、次に指定します(たとえば)
...そしてソースコードには、次のようなものがあります
しかし、私は今朝自分の足を撃ち、1 つのファイルから #include "app_defines.h" の行を省略しただけで、非常に多くの時間を無駄にしました。すべてが正常にコンパイルされましたが、アプリケーションは起動時に AV でクラッシュしました。
これを処理するためのより良い方法が何であるかを知りたいです。以前は、これは通常、#define を (C++ で) 使用できると考える数少ないケースの 1 つでしたが、それでもひどく間抜けで、コンパイラは私を保護しませんでした。
automation - ソフトウェア製品ラインの生成に「純粋なバリアント」を推奨する人はいますか?
私は教授と協力して、オンライン テストの自動ビルド用のソフトウェア製品ラインに取り組んでいます。彼は、Eclips のプラグインとして使用できるオープン ソース ツールとして「Pure Variants」を勧めてくれました。しかし、それを探すか、他のものを探すかはよくわかりません。このツールをお勧めする場合は、その理由を教えてください。または、より優れた別のツールを提案してください。ありがとう
java - C++ での「機能指向プログラミング」 (FOP) の意味は何ですか? Java と C# では意味がありますか?
悲しいことに、どこで読んだか覚えていませんが...
...C++ では、テンプレート パラメーターからクラスを派生させることができます。
私はそれが機能指向プログラミング(FOP)と呼ばれ、何らかの形で役立つことを意図していたと確信しています。
それは次のようなものでした:
これに関する私の質問:
そのようなパターンの意味は何ですか?
これは Java / C# では不可能なため、これらの言語でこのパターンをどのように実現していますか?
いつか Java / C# で実装されると期待できますか?
(まあ、最初に Java は型消去を取り除く必要があります)
編集:
私は本当にJava / C#のジェネリックについて話しているわけ
では
ありません(ジェネリック型パラメーターからクラスを派生させることはできません)
methodology - 製品ライン ソフトウェア開発の長所と短所
SEIで定義されているように、ソフトウェア製品ラインのアプローチを実装した人はいますか? 変更をどのように管理しますか? どのようにテストしますか?どのような問題に対処しなければなりませんでしたか?
何年もの間、私たちは基本的に製品ラインのアプローチに従うように努めてきましたが、私は常に、プログラムに厳密には必要でない変更のテストにお金を払いたくないが、無料のバグ修正を望んでいるプログラム マネージャーと戦っています。彼らはまた、コードベースに不要な変更が加えられることを非常に恐れています...不合理な恐れではありません。
これは、前回の PDR で、製品ラインのアプローチと、それに従う必要がある理由を説明するアクション アイテムを取得することで最高潮に達しました。いくつかの成功事例があるsoftwareproductlines.comを見つけましたが、潜在的な落とし穴に対処する方法について十分な詳細がありません。
code-generation - 複数の機能のために複数のクライアントの複数のコンポーネントを維持する方法は?
基本的に私のプロジェクトは製品ベースです。プロジェクトを開発したら、複数のクライアントをキャッチし、ニーズに基づいてアプリケーションをデプロイします。しかし、私たちは新しい機能とプロジェクトに依存するモジュールをコンポーネントとして配置することにしました。これで、私のアプリケーションは多くの顧客を獲得しました。すべての顧客は、コンポーネントに基づいてさまざまな機能を必要としています。ただし、すべてのクライアントのコンポーネントを集中化しています。コンポーネントの追加機能をクライアント固有のフォルダーに移動して展開します。私の問題は、複数のクライアントのコンポーネント機能を維持できないことです。コンポーネントの機能コードが増加し、クライアントの機能を追跡できません。複数のクライアントの複数のコンポーネント機能を維持するためのソリューションはありますか?
javascript - Javascriptグループの開発プロセス
私たちはグループとしてJavascript/JSP Webアプリケーションを開発していますが、問題は、顧客の要求に基づいてWebアプリケーションを開発しているのに対し、別のチーム(コアチーム)が「コア」Webアプリケーション製品を開発していることです。
つまり、Javascript / JSP Webアプリを顧客ごとに異なる方法で「カスタマイズ」します。カスタマイズのほとんどは、Javascriptコードで行われます。
問題は、コアチームが新しいバージョンをリリースするたびに、カスタマイズを新しくリリースされた製品にマージする必要があることです。これは非常に苦痛です。
基本的に、カスタマイズしたWebアプリを古いバージョンと比較してから、古いバージョンと新しいバージョンを比較してから、それらを同期する必要があります。
この状況に対処するためのベストプラクティスは何ですか?
dsl - ドメイン固有言語(DSL)用のソフトウェア製品ライン(SPL)
ソフトウェア製品ラインのアプローチに従ってドメイン固有言語(DSL)の開発に焦点を当てることは理にかなっていますか?
誰かが同時にいくつかの関連するドメイン固有の言語を作成して維持するための他のアプローチを知っていますか?カスタム言語をサポートするには、パーサー、コンパイラー、インタープリターから現在の最先端のIDEなど、複数のツールをサポートする必要があることに注意してください。
java - 複数のバージョンのクラスを同時に管理するには?
エンタープライズ金融 Web アプリケーション ソフトウェアを実装しています。春、休止状態、オラクル (DB)、JSF を使用しています。要件はソフトウェアのメンテナンス フェーズで変化しており、以前のバージョンのソフトウェアとの互換性のために、いくつかのエンティティ (マネージャー、フォームなどのクラスも含む) の複数のバージョンを同時に持つ必要があります。このクラスの変更には、フィールドの追加と削除、フィールドの変更、クラスの追加と削除などがあります。一般に、この問題は複数のバージョンのソフトウェアを同時に実行している場合に発生します。この問題の解決策を見つけるのを手伝ってください。
説明:
この問題は、ソフトウェア製品ラインの「時間の変動」と似ています (詳細については、 elsner_vamos2010を参照してください)。これは、1 つのクラスの複数のバージョンが同時に存在する可能性があり、(または日付) パラメータを持つクラスを取得する必要があることを意味します。その日のプログラムの状態との互換性のため、各日付で 1 つのバージョンのクラスを使用する必要があります。XMLファイルを使用してBeanクラスでこの問題を解決し、日付でクラスのバージョンを取得します。したがって、プログラムは、プログラムのこの状態 (他のエンティティの日付) に対してどの Bean を実行する必要があるかを認識しています。
しかし、エンティティ、jsp、フォームなど、Spring の他のオブジェクト タイプについては解決できませんか?
c# - Visual Studio および .NET での条件付きファイルのコンパイル
会社用のソフトウェアツールを開発しています。Visual Studio、C# を使用し、.NET 4.0 をターゲットにしています。要件の 1 つは、ソフトウェアが 3 つのバージョン (限定、標準、および拡張) でリリースされることです。私の会社にはインターン生や研修生が何人かおり、正社員や管理職もいます。また、各グループには別のバージョンのソフトウェアが提供されます。インターン向けの限定バージョン、従業員向けの標準バージョン、マネージャー向けの拡張バージョンです。これらは私に与えられた要件です。さらに、バージョンごとに 1 つの実行可能ファイル (dll ファイルではない) である必要があります。
そこで、条件付きでコンパイルおよびビルドされる一連のファイルを含む 1 つのプロジェクトを作成しました。メイン プログラムでは、ディレクティブ #if や [Conditional] 属性を使用して、現在の構成に応じて必要なクラスのみをインスタンス化できます。
ただし、現在不要なファイルは、とにかくコンパイルおよびビルドされます。そして、作成された実行可能ファイルには、それらのファイルのすべてのコードが含まれていますが、これは望ましくなく、私に与えられた要件を満たしていません。各実行可能ファイルには、対象となる従業員グループに必要なコードのみを含める必要があります。(これはセキュリティ上の理由によるものです。)
私の質問は、現在の構成に応じて、ファイルのグループをコンパイルプロセスから除外するにはどうすればよいですか?