\r\n\r\n
ソフトウェア工学・コンピュータサイエンス
コンピュータは現代社会に欠かせないものとなっています。しかし、こうした身近なものの内部構造には、あまり関心が払われない。コンピュータサイエンスはコンピュータシステムの理論的基礎であり、ソフトウェアエンジニアリングはこれらの原理をソフトウェアソリューションの開発に適用する問題である。
コンピュータサイエンス
コンピュータサイエンスは、コンピュータのハードウェアとソフトウェアに関する基礎的な科学です。ソフトウェアとハードウェアの構成要素のメカニズムと計算の観点から、コンピュータシステムの実装と応用のための理論的基礎を提供します。
コンピュータサイエンスには多くの主要なサブディシプリンがあります。計算の理論、情報と符号化の理論、アルゴリズムとデータ構造、プログラミング言語理論などが理論計算機科学に含まれる。応用コンピュータ科学の下位分野には、人工知能、コンピュータ・アーキテクチャとエンジニアリング、コンピュータ・グラフィックスと可視化、暗号とコンピュータ・セキュリティ、コンピュータ・ネットワーク、並行・並列・分散システム、データベースと情報検索、ソフトウェア工学が含まれます。
これらのサブディシプリンの多くは数学的理論に基づくもので、応用面ではメカトロニクスなどの応用科学に関連するものもある。
さらに、これらのサブディシプリンは、二次的な研究領域にも広がっています。例えば、計算理論には、オートマトン理論、計算可能性理論、複雑さ理論、暗号理論、量子計算理論などの研究領域があります。
ソフトウェア工学
ソフトウェア工学は、応用コンピュータサイエンスの主要なサブディシプリンの一つである。効果的なソフトウェアシステムを構築するために、厳密な工学的手法を用いることに重点を置いています。ソフトウェアの設計、開発、運用、保守のための体系的、規律的、定量的な手法、およびその研究であると言えます。ソフトウェア工学の定義は一つではなく、その目的についての説明であることが認められています。
フリッツバウアーは、ソフトウェア工学を「信頼性が高く、実機で効果的に動作する、経済的に開発されたソフトウェアを得るための健全な工学原理の確立と使用」と定義しています。
ソフトウェアは物理的なものではなく、コンピュータ・システムの中で動作する論理的な存在である。そのため、ハードウェアと運用の両面から最適なパフォーマンスを実現するための設計が必要です。これらの目標を達成するために、ソフトウェア技術者は開発モデルを利用します。これらのモデルは、ソフトウェア開発の主要なステップ(設計、コーディング、トラブルシューティング、メンテナンスなど)を、ソフトウェアのライフサイクルを通してシステムとして開発できるよう、まとまりのあるフレームワークにまとめたものです。
ソフトウェア工学とコンピュータサイエンスの違いは何ですか?
-コンピュータサイエンスは、ソフトウェアとハードウェアを含むコンピューティングの理論的側面に焦点を当てています。
-ソフトウェア工学は、ソフトウェアの体系的な開発に焦点を当てています。コーディングやプログラミングは、ソフトウェア工学の重要な部分です。