このブログを検索

2010年8月25日水曜日

業務システムの仕様書を書くのに適した言語

業務システムの画面表示仕様やデータ処理仕様には業務用語が沢山使われる。
これらの業務用語は、業務データ(もの)を表すものもあれば業務処理(事)を表すものもある。
五万とある業務用語をすべて明確に定義しない限り、仕様書に曖昧さはつきものである。
形式言語(例えば、Z言語)を用いれば曖昧さはなくせるかも知れないが、特別な訓練を受けない限り、仕様書の記述と理解は極めて困難になる。

なので、業務システムの仕様を記述する言語には、自然言語の分かりやすさと形式言語の厳密さとのバランスが必要である。最近欧米でPython言語がポピュラになっているのも、英語を使う人から見ればPythonはJavaよりバランスが取れているからだと思う。ただし、Pythonは変数や関数をAlphabetでしか記述できないので、日本の業務システム開発現場では、Java言語の方が向いていると思う。

2010年8月24日火曜日

要求、仕様、設計、実装

要求:
抽象的に、分かり易く表現する。
コスト、納期のトレードオフの中で取捨選択する。

仕様:
厳密に表現し、測定可能でなければならない。
コスト、納期のトレードオフの中で決める。

設計(仕組み):
シンプルに、保守しやすい構造(構成)にする。
コスト、納期のトレードオフの中で改良を続ける。

実装(コード):
簡潔に、分かり易くコードを記述する。
時間が許す限り磨きをかける。
また、コメントにはコードの必要性を裏付ける”事情”を必ず書いておく。
コードを見ればわかるような内容をコメントに書く必要はない。

2010年8月19日木曜日

システム開発が決まったら

システム開発が決まったら
まずは、データ仕様について分析する。
管理対象となる業務データのかたまり(エンティティ)を識別し、
必要な属性と識別子(データの粒度)を洗い出す。

業務プロセスを加味する。
承認ステータス、手配ステータスと言ったステータス項目が増える。

データの追跡可能性やセキュリティと言ったことを加味する。
赤黒区分、履歴番号、論理削除フラグと言った項目や最終更新者、最終更新時刻と言った項目が増える。

外部システムとのデータ連携を加味する。
外部システムとのデータ整合性を保証するための外部データのキー項目が増える。

ここまで分析できたら、以下を設計する。
  •  コード体系
  •  データベース
  •  システム構成(HW、MW、NW)
  •  アプリのアーキテクチャ
  •  個別機能

機能概要
  •  機能が必要な理由
  •  画面モックアップ
  •  ボタンなど押された時実行される処理について
  •  想定される使い方
画面表示仕様
  •   レイアウト(セクション、タブ、フレームなど)
  •   表示項目(表示するデータ項目)
  •   表示フォーマット(日付、時刻、数値、電話番号、郵便番号など)
  •   表示ステータス(表示・非表示、活性・非活性)
  •   見栄え(フォント、色など)
画面操作仕様
  •   コントロールの種類(テキスト、プールダウン、ラジオボタンなど)
  •   Javascriptによる動き
画面遷移仕様
  •   Actionと遷移先
  •   子画面表示
  •   戻る
データ処理仕様(Input,Process,Output)
  •   トランザクション
  •   制御フロー
  •   データ加工

データ処理仕様について

データ処理仕様は、実装言語に依存させない。ただし、抽象度は実装コードとほぼ同じレベル。
フローチャートを使うのは編集や維持が不便なので、やはりテキストベースの言語が必要。
顧客にも処理仕様が理解できるように自然言語に近い表現が望ましい。
なので、現時点では日本語でプログラミングできるJAVA言語がデータ処理仕様の記述に最適だと思う。
JAVAでデータ処理仕様を記述すると以下のメリットが得られる。
1.厳密な表現と自然言語に近い表現が両立できる。
2.高機能な編集ツールが利用できるので、ドキュメント間の整合性維持が楽になる。