2022年08月09日

ブックレビュー:はじめよう!システム設計 ~ 要件定義のその後に

カテゴリー:システム開発, レポート

タグ:BookReview, システム開発

Knowledge_seci_model

システムは、必ず人間が利用するものです。システムだけを単純に作っても、必要な要件を満たせなければ役に立ちません。役に立つシステムを開発するには、ユーザーの視点に立ったシステム設計が重要かつ不可欠です。

今回は、システム設計についてわかりやすく解説した本を紹介します。取り上げるのは、羽生章宏氏の「はじめよう!システム設計 ~ 要件定義のその後に」です。

これまで紹介してきた「はじめよう!要件定義 ~ ビギナーからベテランまで」「はじめよう!プロセス設計 ~ 要件定義のその前に」に続いて2018年に出版されました。

要件定義3部作が揃ったことで、「業務プロセス設計」→「システム要件定義」→「システム設計」と、システム開発の上流工程を網羅したことになります。

シリーズを通して、「ユーザーにとって価値のあるシステムが評価される」という姿勢が一貫している点が特徴的だと感じました。

本書がどんな人に役立つのか

出版社の紹介ページでは、次の人に本書をオススメしています。

  • システム開発の上流工程に関わるエンジニアやマネージャー
  • 発注側企業の情報システム部門の人など

システム設計に携わる人や、携わってきた人が自分のやり方を確認するために役立つと思います。

本書の構成

本書の目次はこうなっています。たくさんページがあるように見えますが、224ページと、気軽に読める分量になっています。

第1部 システム設計って何だろう?

 Chapter 01 システムとは何か

 Chapter 02 プロセスとは何か

 Chapter 03 システム設計とは何か

第2部 システム設計のその前に

 Chapter 04 要件定義とは何か

 Chapter 05 要件定義のサンプルケース

第3部 システム設計の詳細

 Chapter 06 改めてシステム設計とは何か

 Chapter 07 [フロント層]UI設計を行う

 Chapter 08 [フロント層]UI設計の手順

 Chapter 09 [フロント層]要件定義としてのUI設計

 Chapter 10 [フロント層]機能を設計する

 Chapter 11 [フロント層]モジュールのインターフェースを定義する

 Chapter 12 [フロント層]モジュールの実装を定義する

 Chapter 13 [フロント層]実装定義をやってみよう

 Chapter 14 [バック層]バック層を設計する

 Chapter 15 [DB層]モジュールのインターフェースを定義する

 Chapter 16 [DB層]テーブル設計を行う

 Chapter 17 [DB層]実装を定義する

 Chapter 18 システム設計の成果

第4部 実務とシステム設計

 Chapter 19 マルチサイクルによるスコープ管理

 Chapter 20 正しい「率」による進捗管理

 Chapter 21 共通化の罠

まとめ システム設計のその先に

本書は、大きく4つのパートに分かれています。第2部では、要件定義についてふりかえっています。

本書のポイント

ここからは、本書の内容で重要だと感じたポイントを解説していきます。

システム設計とはどういうものか

第1部では、システム設計とはなにかを概要を説明しています。そのために「システムとは何か」「プロセスとは何か」「設計とは何か」を簡単に説明しています。本書では、システム設計とは「ソフトウェアの開発を担当する人(プログラマ)が開発を円滑に行うために必要な情報を揃えること」と述べています。

システム要件定義の情報だけで、プログラマがシステムを実装するのは簡単ではありません。特に、一定規模のシステムであれば、システムの構成要素ごとに分担して開発を進めていきます。その分担を決めるには、あらかじめシステムの構成が決まっていなければなりません。システムを構成要素に分割すれば、構成要素間のインターフェースも決める必要があります。

そのために、実際のシステムの実装に先だって、システム設計として、プログラマが開発を円滑に行うために必要な情報を揃えなければならないと述べています。

システム設計の流れ

第3部では、システム設計の詳細について解説しています。

本来システム設計は、そのプロジェクトや方式・アーキテクチャによって千差万別なはずです。本書で解説しているのは、業務システムなどでよく採用される3層構造システムです。これは、大きくフロント層・バック層・データ層にシステムを分割します。

本書では「ユーザーの期待に応えること」をシステム設計の主眼として、以下のような考え方を紹介しています。

  • 最もユーザーがふれる機会の多いフロント層から設計する
  • どんな簡単なアプリでも要件定義が必要となる
  • ユーザーの行動はアーキテクチャに依存する

アーキテクチャを完全に無視してシステムは設計できません。逆に言えば、アーキテクチャの選定とフロント層の設計から実施していけば、ユーザーの要件から大きく外れるといった失敗を防ぐことが可能です。

実務に必要なシステムの要素

本書の第3部では、フロント層に続いて、バック層・DB層のテーブル設計などを解説していきます。

一般的なシステム設計ではDB層の設計を強調しますが、本書では、フロント層の設計について多くのページを割いています。

実際、どのような画面にするのかを考えるだけでは、ユーザーの行動が抜けてしまい使いにくいシステムになるからです。そのため本書では、UI設計は要件定義の一部でもあると述べています。

そのため、UIの操作によりユーザーに発生する仕事を検討するというように、行動単位で設計する必要があります。加えて、1つの画面に多くの機能を搭載するのではなく、行動別にUIを用意すればユーザーもスムーズにシステムを利用できると説明します。

設計作業をどう進めるか

第4部では、設計作業の進め方と進捗管理について取り上げています。

設計作業の進め方では、構成要素ごとにまとめて作業するよりも、利用者の仕事単位でフロント層・バック層・DB層を取りまとめて作業を繰り返すことをオススメしています。構成要素ごとにまとめて作業をすると、ユーザーの仕事の視点が抜けやすいからです。

進捗管理に関しては、進捗率を感覚的に報告することを戒めています。本来、進捗率を求めるには、何を分子と分母にするか明確にする必要があります。本書では、利用者の業務単位でカウントすることを奨励しています。

本書の評価

本書は、システム設計に携わる人に対して、わかりやすく要点をまとめた入門書です。技術的な記述は少なく、ユーザーと設計者、システム開発における大切なポイントをわかりやすくまとめられています。

システム設計の例として、フロント層・バック層・DB層という3層構造を取り上げており、特にフロント層の中でUIに対する設計の記述がもっとも多くなっています。そのため、業務プロセスを材料にして、ユーザー視点でシステムを設計していけるようになっている点が特徴的と言えるでしょう。

システム設計に慣れたエンジニアは、ついついバック層やデータベース設計に注力しがちになります。また、WebデザイナーやWebディレクターからシステム設計に取り組んできた人たちは、UIデザインについては詳しくても、それを業務要件やプログラムとどう結びつけるのか、実績や知識が不足しがちです。

そのため、フロント層のUIを、どのように業務要件やバック層・DB層に結びつけるのか詳しく解説している本書は、従来のシステム設計で行き詰まりを感じているシステムエンジニアやWebディレクターにも役立つのではないでしょうか。

役に立ったら、記事をシェアしてください