他の言語
|
ソフトウェア工学ソフトウェア工学(ソフトウェアこうがく、英: Software engineering) は、コンピュータのソフトウェアの開発方法を研究対象とする情報工学の一分野である。 具体的には、高度かつ安全なコンピュータのソフトウェアを短期間で設計するための研究などを行なう。難易度の高い大規模ソフトウェアの開発に焦点を当てることが多い。 ソフトウェア工学では、通常、開発対象となるソフトウェアの開発を思いついた時点から、実際に動くソフトウェアが完成し、使用されるまでを、いくつかの工程に分けて考察する (ソフトウェア開発工程) 。これらの工程ごとに典型的な課題が存在し、課題に立ち向かう方法を明確にしようとする。 このため、ソフトウェア工学の対象は広範囲にわたる。 また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:データベース設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:オブジェクト指向技術)。
[編集] ソフトウェア開発方法論ソフトウェア工学の成果は、ソフトウェア開発方法論にまとめられることがある。 対象物をどのように人間が把握し、設計し、プログラムとして実現するかという視点からは、ソフトウェア開発方法論には次のような分類がある。
開発プロジェクトをどのように運営するかに焦点を当てる場合は、特に「開発プロセスモデル」と呼び、以下の二種類に分類できる。ただし、以下の二種類は組み合わせて利用されることもある。 またオープンソースなどのプロジェクトにおいて、開発者の参加基準などの観点からは、以下の二種類に分類できると言われる。(エリック・レイモンド『伽藍とバザール』」) [1] [編集] ソフトウェア開発工程詳細はソフトウェア開発工程を参照 開発工程は、開発着手から終了まで次のように分けられることが多い。ただし用語や詳細な定義は開発方法論ごとにさまざまである。
プロセスモデルにおいては、開発工程をどのように定義・配置するかが各モデルを規定する重要な要素となる。例えばウォーターフォール・モデルでは、要求分析からテスト-運用までを順に、1度ずつ行うことを想定している。スパイラル・モデルでは開発期間を短く分け、短期間に各開発工程を行い、それを繰り返す。 アジャイルソフトウェア開発のいくつかの開発手法 (エクストリーム・プログラミングなど) では、例えばコーディング前に(あるいは同時に)テスト用のコードを書き、コーディングはそのテストに通過することを目標にして行う (テスト駆動開発、テストファースト) など、順序や各工程の意味づけを大きく変更している。 [編集] ソフトウェア開発の技術分類ソフトウェア開発の技術はプロダクト・プロセス・プロジェクト管理に分類できる。
[編集] 脚注[編集] おもな研究分野[編集] 関連項目
|