2012-01-24 8 views
0

私はC++を使ったオブジェクト指向プログラミングの学生で、ゆっくりと新しいことを学んでいます。 私のコースの私の言葉のプレゼンテーションの一部として、私はステート:大規模システムのプログラミングテンプレートの使用

"大規模システムの開発のためのプログラミングテンプレートを使用して正当化されていますか?

私は大規模なソフトウェアシステムのソフトウェアアーキテクチャについて勉強するのには、次の資料を与えています:

http://www.crystalclearsoftware.com/publications/2001/RepresentingLargeScaleArchitecture.pdf

しかし、それを読んだ後、私は開発中のテンプレートを採用する必要があるかどうかを決定することはできませんよそのようなシステムは避けるべきである。

私は、テンプレートを使用して基本的な概念と実行時とコンパイル時のシナリオに精通していますが、大規模なシステムでは、テンプレートの使用やテンプレートの使用に複雑さがあります。

いずれの方法でも、テンプレートを使用して離れているかどうかを明確に強調します。

+1

この論文は、テンプレートのような実装の詳細を知らない、より高いレベルで動作するようです。それはあなたの話題にどのように関連していますか? –

+0

私は、大規模なシステムのアーキテクチャーについて私に伝えています。それを読んだら、そのようなシステムをコーディングしながら、テンプレートを使うべきかどうかを決めなければなりません。テンプレートに関する記事には1つの単語しか書かれていないので、テンプレートにするかどうかを決定するのは難しいです。 –

+0

「プログラミングテンプレートを使用する」という言葉は好奇心が強いので、確かに、ある種の標準化された出発点のより一般的な意味ではなく、特定のC++ジェネリックプログラミング構造の意味でのテンプレートについて質問していますか? –

答えて

1

私はあなたに答えを教えていないが、私はあなたにこのヒントを与えるだろう。

あなたの自己これを確認する:

テンプレートを使用するための説得力のある理由から、及び(コンパイル時のような)テンプレートを使用しないための説得力のある理由は何ですか?

次に、これらの理由のいずれかが大規模なシステムで有用であるか有害であるかどうか質問してください。

大規模なシステムを見てみましょう。それを大きくするのは何ですか?開発の展開

  • 地理
  • コストmaintennance

    などの

  • コストのコードの

    • 数のユーザー
    • 規模:それは、次のような多くのものか​​もしれません。

    今どのようにこれら二つは上記のを助けるんなど

    • アルゴリズムのresuabiltyとcomponentisation

    するためのテンプレートが優れているいくつかのことを考えますか?コードの

    • 額:開発にあまりがあるのでresuabiltyがあまりにもこれを支援しますが、開発者が必要とする場合には、コストを増大させる可能性がありますだけでなくresuabiltyは、開発の
    • コストを維持するために、コードの量を減らすのに役立ちますより熟練している。だから、ダブル
    • あり、メンテナンスのコストを剣を研が:resuabiltyは、あなたが最初に回答した場合、後者がはるかに容易になる

    をテストし、維持するためにそこに以下のようにここに役立ちます。

    正しいまたは間違った答えはなく、各システムの設計が分析し、問題のシステムの実際の懸念に基づいて決定するという議論です。

  • +0

    さらに、コンパイル時のようなトレードオフも考慮する必要があります。 –

    +0

    Well Preetテンプレートは、長所と短所の両方を提供し、システムの移植性が低く、メンテナンスが難しく、コードが肥大化したり、同じようなものになることがありますが、同じ面でも多くの利点があります。私は学生ですが、私はまだソフトウェア産業標準を持っていないので、この質問をしています。十分な知識と経験を持っていれば、私は自分自身を決めて、ここで人々に迷惑をかけないように頼んだでしょう。あなたが理解したいと思っています。 –

    +0

    問題はありませんアラン - 私は答えに追加しました。 –

    3

    答えは決まっているかもしれません。真剣には、それは テンプレートが使用されているかどうかに依存します。テンプレートには、複雑さとカップリングが追加された に大きなコストがかかります。代替案のコストも となる場合がありますが、代替案のコストがテンプレートのコストよりも高い場合は—となり、テンプレートを使用します。 (これはもちろん、アプリケーションのサイズ、にかかわらず、 事実である。しかし、物事 のような追加の複雑さとのカップリングは 大規模なプロジェクトではるかに大きな影響力を持っている傾向がある。)

    質問に対処する前に、あなたは区別しなければなりません テンプレートの使用とテンプレートの定義の間に例えば、 のように、標準ライブラリで定義されているテンプレートを使用している場合は、 という引数はありません。 ではなく、ライブラリの開発者が追加費用を支払ったため、すべての利点があります。同様の議論が第三者の ライブラリにも適用されます。ただし、自分で定義したテンプレートの場合は、 は、テンプレート定義の変更で構築時間が になるという影響を考慮する必要があります。テンプレートの定義はすべてではなく、 とするとよいでしょう。一方、特定の 機能を分離して、自宅で開発した第三者の ライブラリと同じように扱うことができますが、極端な場合を除いては変更できません。

    興味深いことに、テンプレートが問題を起こさない(低レベル、 非常に安定した要素)のは、通常、それらが最も有用な場所です。実際の アプリケーション固有のコードを扱う “アプリケーションレベルの”モジュールでは、テンプレートは一般的にあまりにも有用ではありません。 継承がはるかに便利です。一方、低レベルのコンポーネントの場合は、 行のstd::vectorに沿って、非常に便利です。 しかし、そのようなコンポーネントは、一般的にアプリケーションの残りの部分から分離して開発され、とにかく非常に安定している必要があります。

    +0

    ジェームズ、そんなに具体的で明確な答えをありがとうございました。 多くのありがとうございます。 =) –

    1

    あなたの質問は非常に主観的です。私は、大規模なシステム開発者全員、またはすべての教師を満足させる答えには到着しないという印象を持っています。個人的には、私は単純なやり方で作業を進めています。テンプレートを使用して作業していないことを意味し、時にはlet-templates-replicate-the-code-for-youを意味します。コンパイル時間は常にPIMPLまたは明示的なインスタンシエーションでファイアウォールすることができますが、使用が自然になるようなテンプレートを避けると、膨大な膨大なランタイムエラーやパフォーマンスの低下が発生する可能性があります。

    あなたの宿題に対する私の提案:テンプレートの使用に有利なすべての議論を提示し、テンプレートの使用に対抗し、イエスかノーの答えで終わらないでください。そして、ソフトウェアメソドロジの熱狂者があなたからのコーディングの喜びを味わってはいけません。

    +0

    Lol はい、私の心は私にも両方の答え「はいといいえ」を与えていました。 そして私は、この質問への答えを見つけることは決して終わらないレースに参加するようなものだと思っています。 –

    関連する問題