システムは、「ハードウェア」「ソフトウェア」「人(オペレーション)」が揃ってはじめて動きます。この3つの案件を確定させることが要件定義の目的で、システムエンジニア(SE)主導で打ち合わせを重ねることになります。
見積りを出す際に得られた情報から、大枠(基幹)のイメージは既に共有されていると思いますが、開発に入るにはまだまだ情報が足りません。大枠から細部へとブレイクダウンするための質疑が、繰り返されていくことになります。ユーザーが承認(質疑への回答)した案件は「要件」と呼ばれ、要件定義書に蓄積されていきます。一度決まった要件を覆すことは「要件変更」と呼ばれ、時間とコストに跳ね返ります。責任ある承認ルートを明確化しておきましょう。
ハードウェアの設置要領はイメージしやすいと思います。フロア図を用意して、サーバー、パソコン、プリンターなどを紙上に書き込み、空調や電源、ケーブルの取り回しなどに問題がないか、SEも交えて一緒に確認しましょう。
ここでは、あまり馴染みのない「ソフトウェアの(外部)設計手順」を軸に、「運用(オペレーション)」についても少し説明したいと思います。
ソフトウェアの(外部)設計手順
ソフトウェアの設計書には「外部設計書」と「内部設計書」があります。外部設計書とは、ユーザーインターフェース(UI)とマスターファイルの定義書であり、内部設計書とはSEが作るプログラミング指示書です。
ソフトウェア開発の第一歩は、外部設計書の核となるUIの定義と、それと対をなす「項目説明書」の作成です。UIとはユーザーが扱う画面や帳票であり、項目説明書とはUI上に表示する項目の詳細な説明書です。
内部設計書については、存在を知っている程度でかまいませんし、マスターファイルの定義については、SEにお任せでいいと思います。ユーザーが注力すべきはUI設計のみ、です。
UIを確定する
要求分析の時点で考えられたUIをたたき台として、機能の追加や削除、表示項目の最終確認を行い、全てのUIを要件として確定させます。確認チェックシートを用意しておきましょう。例えば、
- 欲する機能は全て満たされているか(機能性)
- 直感的に操作できるか(容易性)
- フォントや色、行間、字間などに問題ないか(視認性)
- アクセス制限は万全か(安全性)
等々。エンドユーザー(実担当者)も巻き込み、多様な視点でチェックし合いましょう。
確定したUIには英数字を使ってIDを振り、一覧表として外部設計書にファイリングしていきます。IDはカテゴリーを意味する英字と連番(数字)でユニークにします。UI上の片隅に表示しておくと後々役立つと思います。
項目説明書を作成する
UIのデザインが決まれば、そのUI上に表示される全ての項目について、何を意味するのか定義しなければなりません。
例えば受注画面に「売価」という項目があったとします。この「売価」という項目は「営業担当者が取引商品マスター上に、税別売価として設定する金額である」というように定義することです(ちょっと雑ですが…)。画面や帳票をデザインするのと同時に、全ての項目に番号を振り、項目説明書を作成します。
また、項目の有効値や依存関係を持つ他項目の情報も必須です。コード化できるものは体系付けてコード化し、「データチェック機能」を組み込みます。あまり意識していなかったかもしれませんが重要な機能であり、見積りにも入っているはず、です。データ入力系のUIを定義する際は、データチェックシートを作成し添付します。全ての項目の有効値と、関連性を持つ複数項目間の整合性を定義します。簡単に説明を加えておきます。
コードを体系化する
ユーザーID、顧客ナンバー、商品コード等々。英数字を使った「コード化」は珍しいことではないでしょう。「体系化」とは、ルールを決めてコードを振ることです。このルール作りがちょっと面倒ですが、例えば、上1桁の意味付け、上2桁目の意味付けなど熟慮し設計しましょう。多元的な切り口でのデータ抽出や分析、データチェックの簡易化など、体系化することによる受益は計り知れません。
データチェック機能とエラー処理
システムの信頼性は、蓄積するデータの精度に比例します。1件たりともゴミデータを取り込まないよう、データチェック機能は不可欠と考えてください。
データチェック機能は、入力画面は当然、ファイルとしてデータを受け取る場合など、システムの入口全てに設置する必要があります(他システムへデータを渡す場合には、出口にも設置しましょう)。
データチェックの種類は二つ、「有効性チェック」と「相関チェック」があります。
- 有効性チェック
- 項目そのものの値が正しいかチェックすること。たとえば、数値(金額や発注件数等)の妥当性やコード値の妥当性等のチェック。
- 相関チェック
- 複数項目間での関連チェックをすること。たとえば、郵便番号と電話番号、新規顧客登録なのに既顧客コードが入力された等のチェック。
有効性チェックは、当該項目のみを考えるので分かりやすいと思います。ただ相関チェックはちょっと面倒かもしれませんが、難しいことではありません。常識として頭に入っていることを整理し、体系付けることがコツですね。
また、「データチェックでエラーとなったらどうするのか?」を定義しなければなりません。「誰が修正するのか?」「どうやって修正するのか?」を明確にします。入力画面上でのエラーならば、その場で訂正を促すのが一般的だとは思います。しかし、「入れるだけ入れて一括して訂正したい」とか、「データ入力はパンチ業者に外注したい」なんてことも考えられます。エラー処理はなかなか奥の深いものです。じっくりと時間をかけて、最も効率的な方法を見つけ出しましょう。
運用(オペレーション)について
サービスの提供と受給。システムは両輪が回って始めて動きます。どれほど優れたシステムを導入しても、「動かない、使いこなせない」では正当な評価は得られません。
システム担当者が準備すること
導入後に待ち受ける作業に備え準備を始めましょう。システム担当者の業務とは、
- サーバーやネットワークなどのハードウェア管理
- トラブルが発生していないか、稼働状況の監視
- バグ(不具合)対策や機能改善へのプログラム追加・修正
- エンドユーザーからの照会対応
等々。情報サービスを安定的に提供できるよう、万全を期す必要があります。
自分達で対応する(対応できる)範囲と外注に依頼する範囲の切り分けは、既に行なわれていると思います。いかなるトラブルにも対処できるよう、ケーススタディを想定し、運用マニュアル作成に着手しましょう。
エンドユーザーに対して準備すること
導入の経緯や目的も知らせず、半強制的に押し付けては、システムに対してネガティブな感情を生みだします。エンドユーザー教育のポイントは、一番知りたいであろう「システム導入前後で業務の流れがどう変わるのか?」を明確にし、使うメリットを納得してもらうことです。業務フロー図などを用意し、新旧の違いをイメージしやすいよう工夫してください。定期的に各チームリーダーを招集して勉強会を催し、当事者意識を植え付けましょう。
EUC導入のススメ
EUC(End User Computing)の導入も考慮すべきでしょう。帳票よりもテキスト(CSV等)形式のデータを作成しておいて、必要に応じてユーザー自らパソコンに取り込みエクセルで加工する。自由にデータを操ることは、新たな発想を生むかもしれません。一考の価値はあると思います。