ここでは、nimをプレーするプログラムの制作をしてみようと思います。(revenge? )
プログラムを作るにあたって、まず外部仕様を定義します。 外部仕様書*1は、英語では Concept of Operation Documentと言います。 (システムの)操作の構想について書き記したものです。 つまり、このシステムは、どういうふうに動く/動かすのかをシステムの外側の視点で記述したものが外部仕様書です。
きちんとした外部仕様書は、システムの概要や構成、機能仕様、非機能仕様などの項目ごとにしっかりと網羅します。 外部仕様書は、主にシステムを使うユーザーやオペレーションを担当する人が見るドキュメントですので、わかりやすい 平易な表現が望まれます。
Real Programmers Don't Write Pascal*2で論じられたように、 優秀なエンジニアは、仕様書などなくても、どんどんとプログラムを書き進めてしまいがちですが、 プログラムの規模が大きくなったり、作ったプログラムをずっと後になってから再考する場合には、 こうしたドキュメントがあると大変たすかります。館長のシステム会社では、外部仕様をシステム 開発に着手する前にきちんと定義するように心掛けています。
さて、本ゲームシステムについてですが、ぎょうぎょうしいスタイルではなく、最低限の仕様を定義して、 システム制作中に方針がぶれないようにしていきましょう。
nimをプレーするWeb Base Applicationを作成し、The Museum of Abstract Strategy Games(本サイト) 上で公開する。
実現するシステムのプライオリティは次のとおり。
人 × 人 Computer × 人 人 × Computer Computer × Computerの選択ができること。
ゲームアプリケーションを、UMLのUse
Case図のように書くのは、ちょっとおまぬけな感じになります。
n/a
コンピュータとの対戦時、アプリケーションのレスポンスタイムは3sec以内を目標とする。 UIレスポンスは、マウス操作時のもたつきを感じないこと。
システムとしての性能要求は、本サイト上で公開することから、性能は、本サイトの配置サーバー環境にしたがう。
本サイト上で公開することから、可用性およびセキュリティは、配置サーバーの環境とポリシーにしたがう。
...つづく (2009/3/13)