大学でソフトウェア開発工程を学んだことがあるので、ソフトウェア業界志望の方や、実際にソフトウェア業界にいる人に対して書きます。
情報システムの開発の開発工程は以下のようになります。
1 企画(企画プロセス)
2 要件定義(要件定義プロセス)
3 設計(開発プロセス1)
基本設計
詳細設計
4 開発・テスト(開発プロセス2)
コーディング
ソフトウェアテスト
5 運用・保守(運用プロセス・保守プロセス)
それぞれについて説明していきます。
1 企画
顧客の現状を分析し、抱えている問題を理解します。その時、顧客の問題を解決するための可能な手段を列挙し、その中から最適なものを選びます。
2 要件定義
ソフトウェアに対する要求事項を文書化し、仕様書を作成します。今後原則として仕様書に書かれていることだけを実装します。
その時、仕様書の記載に漏れや矛盾がないのかの確認や、開発コストを計算します。ここがきちんとできていなければ、プロジェクトは失敗します。
3 設計
設計は、以下の手順があります。
3.1 基本設計
ソフトウェアをいくつかの部分(モジュール)に分割します。分割の仕方としては、機能に基づいた分割(構造化設計)やデータの基づいた分割(オブジェクト指向設計)があります。
そのモジュールごとに提供する機能(ルーチン)とその仕様を決めます。
(ここは物理学の研究で使われる要素還元主義に似ているような・・・)
3.2 詳細設計
モジュールの各機能を実現するための手順(アルゴリズム)を決定と、そのアルゴリズムが必要とするデータ構造を決めます。
アルゴリズムを設計するまでは、自然言語で行います。
ソフトウェア設計は今後の保守および再利用に大きく影響を与えます。
また、設計に対してのベストな答えは必ずいくつかあります。それゆえ、複雑で反復が必要なプロセスだと言えます。
ここで良い設計をしないと、ソフトウェアの処理恋率がよくなりません。
4 開発・テスト
4.1 コーディング
ここでは開発に用いるプログラミング言語を決め、基本設計および詳細設計に従って、ソフトウェアをプログラミング言語で実現させます。
また、なるべく誰でも読めるようなコードを書くようにします。そうすることにより、システムの高速化や保守・デバッグのコスト削減につながります。
4.2 ソフトウェアテスト
ソフトウェアを実行した時、きちんと実行するのかを確認します。
この時、必ずバグがありますので、ソフトウェアテストをした後に日報を書く時、バグがありませんでしたというのは、仕事を1日しなかったという事に等しいです。なので、この工程は、ソフトウェアにバグがないことを示す工程ではありません。
これはきちんと多くのバグを見つけて修正をしていくことが必要な工程です。
5 保守・運用
保守
・バグ修正
・仕様変更の対応
・バージョンアップ
・サポート
運用
・納入、インストール・・・
・システム稼働時のQ and A
以上の工程を基本として以下のプロセスモデルがあります。
プロセスモデルとは、情報システムを企画・開発・運用するための基本手順です。
・ウィーターフォールモデル
企画からテストまでの工程を一度で終わらせる計画を立て進捗管理をします。
原則として前工程が完了しないと次工程に進まない事で、前工程の成果物の品質を確保し、前工程への後戻り(手戻り)をしないようにします。
このモデルの利点は、工程の進捗管理がしやすいことであります。
しかし、以下のような欠点もあります。
・障害復旧に対する柔軟性が乏しい
・顧客要求の変化への対応が困難
・スパイラルモデル
企画からテストまでの工程が終わったら、そこでプロジェクトを終わらせるのではなく、テストを通じて仕様を変更したい所を見つけ、設計をし直す事で、ウォーターフォールモデルの欠点をカバーすることができるモデルです。しかし、ループ回数を増やすほどコストが増大しますので、綿密なプロジェクト管理が必要になります。
プロセスモデルの重要性
以下の3つが重要とされています。
戦略:戦略性がないと緊急事態に振り回されるので、一歩先を読みます。
ソフトウェア開発計画:計画がきちんとしていれば品質を保証できます。
開発プロジェクトの基本原則:原則がしっかりしていると、状況に応じて臨機応変に対応でき、プロジェクトメンバーにも対する指針を与えられます。