ここで開発する樹状整列は複数の木構造をきれいに整列させて表示するアプリケーション(応用プログラム)である。木構造はグラフを表現するデータ構造の一種であり、ルート(根)から始まって、トランク(幹)となり、ノード(節)を作り、ブランチ(枝)を伸ばして、リーフ(葉)へと至り、まるで木を連想させるようなデータの構造(関係)を表す。このような木構造の集まりを表現したテキストファイル群が用意されているので、それらを読み込み、それぞれの木構造を樹状に美しく整列させ、複数の木構造をきれいに配置して、一つのウィンドウの中に可視化すること、それが開発の目的である。
開発に関わるドキュメントおよびプログラムのすべてをHTML文書にしてWebブラウザからアクセス可能にすること。また、アプリケーションのインストールや取り扱いを説明したマニュアルもHTML文書として作成すること。すなわち、この文書からたどれる全文書(このページの最上部にリンクされた全ページ)を完成させなければならない。以下にそれぞれの基本方針を記載する。
アプリケーションの起動時に一枚のウィンドウを開き、後述する各々の機能をそのウィンドウの中に実現すること。オブジェクト指向設計を行い、UML(Unified Modeling Language)を用いて基本設計書(外部設計書)および詳細設計書(内部設計書)にまとめること。また、ウィンドウアプリケーションを構築する際の定石となっているデザインパターンのObserverパターン:MVC(Model-View-Controller)を採用しなければならない。
開発に伴う仕様書・設計書・報告書などの全ドキュメントおよび全ソースプログラムをリポジトリ(SCM (Software Configuration Management):Subversionなどのソフトウェア構成管理)の中に格納し、リビジョン管理(バージョン管理)を行い、開発チームで共有すること。そして、このリポジトリ自体を成果物(納品物)に含めなければならない。
コーディング規約を遵守すること。クラスの名称にはアッパーキャメルケース、メソッドの名称にはロワーキャメルケース、リテラルの名称にはアッパーケースやアッパーキャメルケースを用いること。また、変数やメソッドなどの名称はロワーケースやロワーキャメルケースを基本とする。すべての名称は省略せずに意味を明確に示すものを採用すること。リテラル(定数)などは1つのクラス(もしくは名前空間)にまとめ、ソースプログラムの中に散在するのを避けなければならない。
ユーザの操作に関わるテストケースは設計段階でテスト仕様書にまとめること。xUnit(JUnitやSUnitなど)によるテストケースを行うこと。テスト結果は報告書にまとめ、各々のリリースや大きな修正の直後に全件実施(回帰テスト)を行わなければならない。
オープンソースであること。リポジトリからチェックアウトすることにより、全ソースプログラムを獲得できること。また、ソースプログラムから実行モジュールであるアプリケーションを構築するための手段(Makefileのようなコンパイル・リンク・インストール・テスト・アーカイブ作成などを自動化する手立て)を提供すること。そして、アプリケーションは簡単なコマンドによって起動されなければならない。取り扱い説明書(マニュアル)を必ずリリースに含めなければならない。
以下に開発計画書および基本設計書を作成するにあって必要なことを記載する。
複数の木構造を表すデータをテキストファイルの形で用意すれば、このアプリケーションによってウィンドウの中に容易に可視化できるようになり、数学的なグラフをグラフィカルに操作できるグラファ(Grapher)というプログラムへと発展させてゆく礎(いしずえ)となる。
コンピュータの科学と工学において木構造を多用する。特に言語処理系などにおいては木構造データ表現は不可欠と言っても過言ではない。日頃から使っているファイルシステムも木構造であり、コンピュータの利用者には馴染み深いものであろう。それらを容易に可視化できることはコンピュータに携わる者たちにとって福音である。
Name: Apple Macintosh シリーズ (MacBook / MacBook Pro / Mac mini / iMac / Mac
Pro など)
Processor: Intel Core 2 Duo 2GHz クラス以上(64bit アーキテクチャの Xenon などを含む)
Memory: 1GB 以上
Hard Disk: 250MB 以上の空き容量
OS: Mac OS X Leopard (10.5) / Snow Leopard (10.6) 以上
開発に用いるプログラミング言語は以下のどちらかとする。
1) Java: J2SDK (Java 2 Software Development Kit) 1.5.0 以上
2) Smalltalk: VisualWorks 7.6 (Non-Commercial) 以上
次のような木構造の集まりを表現したテキストファイルを読み込み、複数の木構造を樹状整列させて、一つのウィンドウの中に可視化すること。ここに単一の木構造・複数の木構造・枝分かれしたものが接合している木構造の例を示す。
|
使用するフォントはSerif系の標準体(plain)で12ポイントとする。ノードやリーフの整列間隔は横方向が25ピクセルで縦方向が2ピクセルである。ウィンドウの中に表示しきれない大きな木の場合もあるので、マウスのドラッグ操作より軽快にスクロールできること。また、木のノードやリーフをマウスでクリックすることにより標準出力(もしくはトランスクリプト)へ当該の名前を書き出すこと。なお、100個以下のノード&リーフであれば、アプリケーションを起動してから3秒以内に表示できなければならない。さらに、樹状整列をしてゆく過程そのものをアニメーションとして描画できる機能(アルゴリズムアニメーション)を有すること。
|
JavaおよびSmalltalkの標準ライブラリのみを使用し、他の機能拡張ライブラリやツールに組み込まれている機能などを援用してはならない。Macintoshシリーズをターゲットにしているが、実装に用いるJavaもしくはSmalltalkはプラットフォーム非依存性を仮想マシンによって実現しているプログラミング言語である。したがって、開発したアプリケーションはLinuxやWindowsなどでも動作することが望ましい。
開発に関わるメンバの一覧を作成し、プロジェクトマネージャ、デザイナ、プログラマ、テスタなどの役割を明確化し、加えて、開発するコンポーネント(部品=クラス)毎に担当者を決めて、それらを開発計画書の中に明記すること。また、仕様適合検査の責任者を立て、次項の開発スケジュールに示されたマイルストーン(目標達成へ向かう過程の一つの段階)ごとに、設計段階から仕様のチェックをクライアント(開発依頼者=青木淳)と共に行うこと。開発にあたって不明なことが生じた場合には、必ずクライアントと協議して事を進めなければならない。
開発スケジュールを前項の開発体制と共に開発計画書の中に明記し、着手する前にクライアントの認可を受ける(契約を取り交わす)こと。実際の開発は3月上旬の勉強会までに完了すること。