ソフトウェア開発プロセスの概要を整理してみた
文系出身の私が、営業職として飛び込んだIT業界。現在育休中なので隙間時間にて改めてITのお勉強。。。難しいなと思ったポイントを備忘録として整理しておきます。
ソフトウェア開発プロセス
よく見る図かと思われるが、大まかな流れとしては下記となる。
尚、ここでは設計工程は外部設計/内部設計として記載をしているが、基本設計/詳細設計で分けることも多い。また、ISO/IEC 12207 をベースとしたフレームワークだと、ソフトウェア方式設計プロセス/ソフトウェア詳細設計プロセス という言葉が使われる。
開発プロセス詳細
要件定義
ユーザー要求を整理・分析しながら、実装すべき機能や満たすべき性能を明確化していく。
この工程では「何が必要となるか」を、ユーザー・開発者双方の合意のもと、要件定義書に記載していく。
要件定義書の内容
・システム化の目標と対象範囲
・必要となるシステム機能と必要となる性能
・対象業務の処理手順、対象データ、利用者の操作イメージ
・システム構成
・開発期間
・品質
・開発環境
・移行、運用、保守、障害対策、教育訓練 等
例
「インターネットショップを開きたい」
→ 取り扱う商品数は100種類、1万点を上限にする
→ 決済方法はクレカのみ
→ 認証はXXのシステムを利用する
外部設計
「外部」という言葉は、ユーザーから観察可能な部分という意味。画面やインターフェース、帳票、伝票などの外部仕様を明らかにし文書化していく。
作業内容
・業務の詳細な流れを形にする
・データの流れを整理する
・画面などのインターフェース、帳票、伝票などの形を設計する
・セキュリティ対策を決める
・システム保守を決める
ヒアリング、ユースケース図、プロトタイプ、DFD、E-R図、UMLなどの手法が使われる
ユーザーの視点で観察可能な振る舞いが外部仕様であり、外部仕様を明らかにして文書に落とし込む活動が外部設計です。
一方、内部設計ではソフトウェアの内部に注目し、外部仕様を実現するのに必要なソフトウェアコンポーネントの洗い出しや、コンポーネント間の相互作用を設計します。
なお、エンドユーザーだけでなく、外部のシステムやサービスも当該ソフトウェアのアクターとして捉えるため、外部インタフェースの設計は外部設計ということになります。
内部設計
「内部」という言葉は、ソフトウェアの内部に注目する、という意味である。前段で決めた外部仕様を実現するには、どの機能が必要かを洗い出す。この機能のことを、サブシステム/コンポーネントと呼ぶ。またそれらを繋ぐインターフェースの設計も行う。
・コンポーネント構成図の例
加えて、上記コンポーネントを、さらに詳細にしていく。
コーディング向けに、モジュールレベルに分解していく。モジュールのことを、ソフトウェアユニット/クラス とも呼ぶ。
モジュールレベルとは、例えば帳票出力の場合、「データを読み込む」「データを編集する」「データを保存する」「データファイルを出力する」といったように、処理単位に分解しておくことである。
開発
各ソフトウェアモジュールのコーディングを行う。ソースコードを書く際の共通ルールである「コーディング規約」に沿って、プログラム作成を進める。
テスト
テストは大きく4つに分かれている。
①単体テスト: モジュール単位、ソースコードそのものを検証する。
②結合テスト: 単体テストをクリアしたモジュールを組み合わせ、インターフェースを含め、機能としてうまくいくかを検証する。
③システムテスト: システムとしての機能、定義された要件を満たしているかを検証する。
④受入テスト: 実際の運用、業務の流れで利用できるかを検証する。
→ 完成後は、計画に基づき新システムへの移行を実施