ソフトウェア工学

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ソフトウェア工学(ソフトウェアこうがく、: Software engineering) は、コンピュータソフトウェアの開発方法を研究対象とする情報工学の一分野である。 具体的には、高度かつ安全なコンピュータのソフトウェアを短期間で設計するための研究などを行なう。難易度の高い大規模ソフトウェアの開発に焦点を当てることが多い。

ソフトウェア工学では、通常、開発対象となるソフトウェアの開発を思いついた時点から、実際に動くソフトウェアが完成し、使用されるまでを、いくつかの工程に分けて考察する (ソフトウェア開発工程) 。これらの工程ごとに典型的な課題が存在し、課題に立ち向かう方法を明確にしようとする。 このため、ソフトウェア工学の対象は広範囲にわたる。

また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:データベース設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:オブジェクト指向技術)。

目次

[編集] ソフトウェア開発方法論

ソフトウェア工学の成果は、ソフトウェア開発方法論にまとめられることがある。

対象物をどのように人間が把握し、設計し、プログラムとして実現するかという視点からは、ソフトウェア開発方法論には次のような分類がある。

開発プロジェクトをどのように運営するかに焦点を当てる場合は、特に「開発プロセスモデル」と呼び、以下の二種類に分類できる。ただし、以下の二種類は組み合わせて利用されることもある。

またオープンソースなどのプロジェクトにおいて、開発者の参加基準などの観点からは、以下の二種類に分類できると言われる。(エリック・レイモンド伽藍とバザール』」) [1]

[編集] ソフトウェア開発工程

詳細はソフトウェア開発工程を参照。

開発工程は、開発着手から終了まで次のように分けられることが多い。ただし用語や詳細な定義は開発方法論ごとにさまざまである。

要求分析
着想したソフトウェアがどのような機能を持つべきかを検討し、必要に応じて文書化する。
設計
機能がソフトウェアとしてどのように実装されるべきかを検討し、必要に応じて仕様化する。
コーディング
仕様に従ってプログラムを作成する。
テスト
作成されたプログラムが機能的な要求を満たしていることを実証する。
運用・保守
ソフトウェアを使用したり、新たな要求に応じて機能を追加・変更する。

プロセスモデルにおいては、開発工程をどのように定義・配置するかが各モデルを規定する重要な要素となる。例えばウォーターフォール・モデルでは、要求分析からテスト-運用までを順に、1度ずつ行うことを想定している。スパイラル・モデルでは開発期間を短く分け、短期間に各開発工程を行い、それを繰り返す。

アジャイルソフトウェア開発のいくつかの開発手法 (エクストリーム・プログラミングなど) では、例えばコーディング前に(あるいは同時に)テスト用のコードを書き、コーディングはそのテストに通過することを目標にして行う (テスト駆動開発テストファースト) など、順序や各工程の意味づけを大きく変更している。

[編集] ソフトウェア開発の技術分類

ソフトウェア開発の技術はプロダクト・プロセス・プロジェクト管理に分類できる。

プロダクト
モデルの表現方法、ソフトウェアのアーキテクチャに関する技術です。(ISO/IEC9126UML)などがある。
プロセス
管理工程・手順を定式化した開発技術です。(CMM/CMMIISO9001SLCPIEEEソフトウェア規格)などがある。
プロジェクト管理(工程管理)
納期・品質・コスト管理技術・教育などです。(ファンクションポイント法PMBOKISBOK)などがある。

[編集] 脚注

  1. ^ ソースコードを非公開としているプロジェクトにおいては原理的に伽藍方式以外をとりえない。ソースコードを公開しているからこそ、見ず知らずの人達が思い思いの拡張をすることが出来るのである。

[編集] おもな研究分野

[編集] 関連項目