PR

原則7 設計思想が残る仕掛けを作成
ソースコードの劣化を克服する

 プロジェクトの立ち上げ当初から携わった思い入れのあるシステムであっても、いつかはITアーキテクトがその場を去る時がくる。初期からの開発者もいずれ離れていくので、アーキテクチャーの維持が難しくなる。

 一般に、システムの寿命はITアーキテクトの任期よりも長い。つまり、ITアーキテクトが去った後もアーキテクチャーに込められた設計思想が継承されるようにしなければならない。その仕掛けを設けることが、最後(七つめ)の行動原則だ。

 ITアーキテクトは、例えばif文の乱用で保守性が悪化しないよう、開発段階から実装標準を設けておく必要がある。「コンポーネント間の依存関係が変わる場合は、既存プログラムの改修ではなく、新規にプログラムを作る」といった明確な基準を用意するわけだ。

 ここで大事なのは、ルールは常に改善されるべきという姿勢に立って、アプリケーション開発者からのフィードバックを受ける仕組みにすること。設計思想に基づいてフレームワークを整備する場合も、提供者側の都合ではなく使い手の都合に合わせることが大切だ。それが、フレームワークの進化を加速させることにつながる。

ユーザーにモデリング技法を習得してもらう

 筆者は最近、ユーザーにモデリング技法を習得してもらい、一緒にデータモデルを描くようにしている。ユーザーとともに概念、論理、物理と段階的にデータモデルの精度を高めていくことで、構築対象のドメイン分析やサイジングの精度が上がるといった効果が得られる。

 一般に、モデリングには技法の取得に時間がかかる、記述ルール(記法)の自由度が原因となり書き手と読み手の間で認識に食い違いが生じる、といった課題がある。そこで、ユーザーでも容易に習得が可能な、シンプルなルールと限定されたパターンを整備した。シンプルなルールとは、すべてのカラムにNOT NULL制約を付けること、主キーは単一キーとすること、外部キーは二つまでといったもの。また、テーブルの種類はマスター5種類、トランザクション4種類の計9種類とした。

 その9種類のテーブルを使って論理削除と論理更新を表現することで、幾何学的な模様をしたINSERTのみ(更新・削除のない) のデータモデルができ上がる。図Aは、概念と論理データモデルの例である。同じ問題なら誰が解いても同じ解にたどり着くには、こうした再現性の高い、曖昧さを排除したシンプルな形式的手法が不可欠だ。

図A●概念と論理データモデルの例
図A●概念と論理データモデルの例
[画像のクリックで拡大表示]

 再現性の高いルールやパターンを定義するには、数学的な思考(関係代数やブール代数)が必要になる。それを受け入れることで、大きな果実を二つ手に入れられる。一つは、情報処理の安定度を損ねる「Null値」の問題をデータモデルから一掃し、「二値問題」として事実を整理できること。もう一つは、CRUDを捨てCR操作とすることで、分散処理における順序性の難問を回避できること。「可換性」が手に入るので、分散データベース間で結果整合性を担保できるようになる。