web-dev-qa-db-ja.com

アルゴリズム設計はソフトウェアエンジニアリングに属しますか?

学術的な意味では、

  • アルゴリズム設計は、高/抽象レベルの計算(計算能力、複雑度)で研究されていますが、ソフトウェアエンジニアリングは、学界でも高/抽象レベルで研究されています。

  • ソフトウェアエンジニアリングとは、問題を解決するためのソフトウェアプログラムを作成するプロセスです。これは、アルゴリズム設計をプロセスの一部にするようです。

  • しかし、私が一見したソフトウェアエンジニアリングに関する限られた参考文献からは、アルゴリズムの設計については説明していません(ただし、見落としがあるかもしれません)。代わりに、パターン設計(または設計パターンと呼ばれますか?)はソフトウェアエンジニアリングで説明されています。

私の質問は:

  • アルゴリズム設計はソフトウェア工学に属しますか?アルゴリズム設計は、ソフトウェアエンジニアリングのプロセスの1ステップですか?
  • アルゴリズム設計、パターン設計、プログラム設計、システム設計の違いと関係は何ですか?これらの単語は、流行語として業界から頻繁に聞くことができます。これらのさまざまな種類のデザインの定義を共有できますか?
2
Tim

はいといいえ。

アルゴリズムに関連するアルゴリズム(およびデータ構造-2つは密接に関係している)の研究は、コンピューターサイエンスのカテゴリーに分類される傾向があります。ただし、一部のアルゴリズムは、特定のドメインのアルゴリズムによって開発される場合があります。たとえば、ハードウェア/ソフトウェアシステムにある種の自動制御を実装するために必要なアルゴリズムは、 制御工学 を専門とする人によって開発される場合があります。同様に、信号処理フィルターには、物理​​学と電気工学の知識が必要な場合があります。ただし、これらのアルゴリズムを開発する人々は、アルゴリズムの数学的表現をソフトウェアで使用できるものに変えるための知識や専門知識を持っていない可能性があります。そのアルゴリズムをソフトウェアで使用できるものに変換するには、ソフトウェアエンジニアリングの範囲に含まれる知識も必要です。

アルゴリズム設計はソフトウェア工学に適合しなければなりません。要件と制約により、アルゴリズムの選択が決まる可能性があります。次に、アルゴリズムを実装する方法、またはアルゴリズムを実装するライブラリまたは既存のモジュールを使用する方法のいずれかで、アルゴリズムを使用するように設計する必要があります。また、アルゴリズムのテスト容易性と保守容易性についても考慮する必要があります。両方ともソフトウェアエンジニアが関係しています。

アルゴリズムの設計をソフトウェアエンジニアリングの一部とは見なしませんが、ソフトウェアエンジニアが最低限意識している必要があることを考慮します。ソフトウェアエンジニアが作業している環境とドメインによって、アルゴリズム設計への関与の程度が決まります。

6
Thomas Owens

アルゴリズムはソフトウェアエンジニアリングに固有のものではありません。最近では、ソフトウェアエンジニアリング/開発とともに使用されている用語を目にする可能性が高くなっていますが、これは排他的な用語ではありません。では、アルゴリズムがソフトウェアエンジニアリングに属しているという点で比較すると、ソフトウェア開発?それは、誰がプログラマを担当するかによります。解決策を考え出してプログラマに実装を依頼するか、問題を説明して解決してもらうこともできます。それはあなたが問題のために働いている人の多くです。私は問題を解決するために問題とその私の問題を説明する会社で働いています(アルゴリズムを考え出す)私は他の会社で働いていましたコンピュータ。誰がアルゴリズムを設計するかは、特定の組織でソフトウェア開発がどのように行われるかに本当に依存しています。アルゴリズムはソフトウェアエンジニアリング専用ですか?番号。

2
David-