0
1

More than 3 years have passed since last update.

システム設計の法則(正常系と異常系についての一般論)

Last updated at Posted at 2020-12-25

「システム設計」の対象

ここでいう「システム設計」の対象は、下記などを含む

  • コンピュータに関係するシステム設計
  • 人事制度や報酬制度など組織運営設計
  • あるいはもっとシンプルに、与えられたデータをどうアウトプットするか(グラフを作るとか)などの作業プロセス設計

要は「複数のタスクが(おそらく複数の人間によって)行われるもの」である。

正常系と異常系

  • どんな設計でも、「要するにこう動くはず」という「イメージ」がある
    • この理想的な「イメージ」を表現したものを「正常系」と呼ぼう
  • どんな設計でも、正常系から外れる対応が必要となる
    • この対応を、「異常系」あるいは「例外処理」と呼ぼう

よい設計とはなにか

  • よい設計とは、異常系(例外処理)が少なくなるように、正常系を設計したものである
  • 一般に、異常系(例外処理)は時間とともに増加する。なぜならば、
    • すべての状況を想定した設計は不可能である
    • 状況は時間とともに変化する
  • したがって、完璧な設計はなく、「設計のよさ」が大事である
    • 時間経過とともに異常系の発生が少なくあってほしい

実際の観察

実際に、運用されているシステムを観察すると、

  • 例外処理が多すぎるがゆえに、なにが正常系かわかりにくいことが多い
  • 多くの場合は、運用している側も、なにが正常系かわからなくなっている

そこで実用上は、

  • 動いているシステムを理解する際には、正常系を早く捉えられるとラクである
  • 動かすシステムの構築にあたって、正常系のうまい設計は極めて重要である(あとあとラクである)

たとえばコンピュータに関わるシステム設計の場合、

  • 全体の80%はテスト(バグ取り)である
  • のこりの20%のうちの80%(全体の16%)は、例外処理の作成である
  • 正常系のコーディングは全体の4%にすぎない
  • うまく設計すれば
    • 全体の75%をバグ取りに、例外処理の作成を19%に、正常系の作成を6%に高められるかもしれない(通常の1.5倍である!)
    • そもそも全体の時間を削減できるかもしれない

うまく設計をするためには

うまい設計のコツは、

  • 正常系の検討にじゅうぶんに時間をかけること
  • うまくモジュール分割すること
  • はやく一周まわすこと

であるとおもわれるが、ここで詳細は検討しない(ひとつひとつ検討することがたくさんある)。
- ひとつめの時間配分『人月の神話』ですでに議論されているし、様々な手法がある(とおもう)
- モジュール分割は、これまた様々な手法がある(プログラミングなら関数化、オブジェクト指向など)
- みっつめは、要はアジャイル

実際に使うにあたっては

不慣れなシステムに参加する場合、

  • 正常系を早く理解すること
  • 「もとにもどる」方法を早く見つけること

が、実戦上は有効だとおもう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1