書評「ソフトウェア開発・検証技法」

書評「ソフトウェア開発・検証技法」

松本 正雄/小山田 正史/松尾谷 徹(著) 電子情報通信学会

カテゴリ:設計・開発

概要

ソフトウェアを開発するのに有用な主要技法をわかりやすくコンパクトにまとめた本。「作る技術と検証する技術」「開発環境」「開発従事者」の3つの視点から述べる。ソフトウェアプロセス、構造化プログラミング、オブジェクト指向設計、CASEツール、各種テスト技法について、まとめられている。発行は1997年であり、内容的には年代に固有な点もあるが、ソフトウェア開発の普遍的な基本概念をわかりやすく解説している点において、本書の価値は高い。中級以上の技術者、管理者向け

本書の使い方

大きく3つの構成からなっている。
第1章~第2章:開発テクノロジーを支えている基本的な概念について学ぶことができる。
第3章~第5章:設計に関する技法を学ぶことができる
第6章~第8章:検証に対応した技法を学ぶことができる。
読者の興味関心に従って読むことができる。

何を学べるか

第1章 ソフトウェアプロセス
プロダクトとプロセスの関係に注目し、様々なソフトウェア開発の工程(プロセス)をどのような粒度で分類、定義し、標準化していくかを解説する。様々な工程区分の事例を紹介し、その本質的な視点を考察する。またウォーターフォール、スパイラルモデルといったライフサイクルモデル、プロセス成熟度モデルを紹介する。

第2章 プロセスプログラミング
ソフトウェアプロセスそのものもソフトウェアであると考え、プログラミングの対象にするのがプロセスプログラミングの考え方である。ソフトウェア開発の各工程の成果物をオブジェクトとみなして、そのプロセスをプロセス記述言語でプログラミングし、実行可能なオブジェクト群を作る。利用者はそのオブジェクト群を利用して色々な応用ソフトウェアを作成し、問題解決を図る。本章ではこうしたプロセスプログラミングの考え方とその展望を考察する。

第3章 ソフトウェア設計技術の発展の経緯
本章では、分析、設計、プログラミング、テストという一連のソフトウェア開発フェーズのうち設計フェーズに焦点を当て、これまでに提唱されてきた開発技術を概観する。特に、設計技法と設計支援ツールの二つの側面から見た開発技術の発展の経緯、および基本的な概念について解説する。支援ツールとしてはCASEなどが紹介される。

第4章 設計技術
本章では、これまでに提唱されてきた様々な設計技法を概観する。技法が着目する視点の違いによって分類した代表的な技法を紹介する。 制御構造に着目(構造化プログラミング)、入出力データに着目(ジャクソン法、ワーニエ法)、機能に着目(トップダウン設計、構造化設計)、データの操作に着目(データ抽象化技法)、機能とデータの両方に着目(SADT、構造化分析)、動作に着目(リアルタイム構造化分析)など、着目点別に各技法を概説する。

第5章 オブジェクト指向による設計技法
本章では、前章で述べてきた技法のひとつの発展形としてオブジェクトを志向した設計技法について述べる。まず、オブジェクト指向による設計技法を概観する。そして、設計の適用事例としてビジネスアプリケーション(「在庫管理」)に関するものと、リアルタイムアプリケーション(「自動クルーズ制御」)に関するものについて解説する。

第6章 ソフトウェア検証技術
ソフトウェア開発において実用に足りる信頼性を得るためには、レビューやテストなどの検証活動が必須となる。本章では、ソフトウェアの信頼性に大きな影響を与える検証技術に焦点をあてる。 まず設計技術との相互関係の中で「誤り」とはなにかについて考察し、開発フェーズにおける検証のあり方、難しさを概観する。また同値分割と限界値分割、項目間の組合せ、原因結果グラフ技法、CFD技法、状態遷移の問題、検証指向設計など、様々な検証技術を紹介する。

第7章 運用と保守の技術
本章では、開発技術と関連の深い運用と保守の技術について説明する。保守と運用についての概観を解説し、保守・運用フェーズにおけるCASEについて説明する。運用と保守フェーズは開発フェーズ以上にコストを費やす傾向にある。開発フェーズにおいてCASEや新しい技法を導入する目的の一つは、運用と保守フェーズにおけるコストを改善するためである。

第8章 開発支援技術
実際のソフトウェア開発では、ソフトウェアを完成させていく直接的な活動とは別に、これらを支援する開発支援活動とその技術が必要である。開発支援技術の目的は、品質の高いソフトウェアを効率的に開発することである。本章では、構成管理、品質管理、開発設備・環境、そしてグループウェアの各種開発支援技術について解説する。