Document

JASMINEシミュレーターの開発
JASMINEシミュレーターWG
山田良透(京大理)
メンバー
構築コアメンバー
山田良透
京都大学理
[email protected]
上田誠司
総研大
[email protected]
桑原
新潟大理
[email protected]
協力メンバー
矢野太平
国立天文台位置天文
[email protected]
辻本拓司
国立天文台位置天文
[email protected]
官谷幸利
国立天文台電波
[email protected]
西亮一
新潟大理
[email protected]
郷田直輝
国立天文台位置天文
[email protected]
その他アストロメトリ勉強会メンバー
安田直樹
国立天文台データ解析セ
[email protected]
真鍋盛二
国立天文台地球回転
[email protected]
田澤
国立天文台地球回転
[email protected]
小林行泰
国立天文台機器開発セ
[email protected]
越田進太郎
国立天文台機器開発セ
[email protected]
中島紀
国立天文台光赤外
[email protected]
松原英雄
宇宙化学研
[email protected]
上野宗孝
東京大
[email protected]
Simulatorの概要と目的
 装置・環境を含めた模擬観測からカタログ
生成・利用までの統一的シミュレーション
 目的
 装置仕様
サイエンスとして何がどこまで
 新観測モードの精度評価
部分(非全天)サーベイは世界初
 解析手法(数億星)の検討
Simulator開発のキーワード
 オブジェクト指向⇒
 UML⇒
 ツール
 CVS⇒
 テスティングフレームワーク
 XML/Webサービス
 次へ
Object指向技術の歴史と現状
 歴史
 Simula(1967)
 Smalltalk(1972-1980,
Xerox PARC)
 C++(1984)
 Java(1995)
 ソフトウエア開発手法の一つのパラダイム
 新たなパラダイムも考案されている
Object指向とは
 3つの要素
 自然な発想によるプログラミング
 仕様に対する柔軟性
 再利用性の高いソフトウエア
 Objectとは
 状態(属性)
 振る舞い(メソッド)
 識別性
Object指向言語の特徴
 抽象化
 問題に必要な性質だけを抽出
 カプセル化
 データと操作の組と、適切なアクセス制御
 継承
 性質を受け継ぐ
 多相性
 受け継がれた性質に対して操作を上書き
Object指向言語
Fortran
抽象化
C
Fortran90 C++/Java
×
△
△
○
common
structure
type
class
カプセル
化
継承
×
×
△
○
×
×
×
○
多相性
×
×
×
○
アクセス制御
Powerfull Standard libraries
戻る
UML
Unified Modeling Language
 モデルを記述するための図式
 設計に利用
 9種類の図
 クラス図、オブジェクト図、ユースケース図、
状態図、アクティビティー図、シーケンス図、
コラボレーション図、コンポーネント図、配置図
 CASEツール
 外注では必須
ユースケース図
利用の仕方を表す
 要素



アクター
ユースケース
クラス図
クラス(オブジェクト
の型)定義
 クラス同士の関係

デザインパターン
 プログラム設計で共通の単語を提供
 プログラム要素をクラスより大きな単位で
管理
 再利用性・拡張性の高いプログラムを作る
ための経験則
 GoFが23のパターンに整理
 Erich
Gamma, Richard Helm,
Ralph Johnson, John Vlissides
パターンの例--Composite
部分全体階層を実現
したい
 オブジェクト構造
 クラス階層ではどうす
るか?

戻る
Concurrent Version System
 バージョン管理ツール
 Rcsの拡張
 サーバークライアント形式
 枝の管理
 フリーソフトウエアでは常識的
 企業では独自のものを使っている場合が多い
戻る
Cvsサーバーについて

サーバー名
cvs.jasmine-galaxy.org
レポジトリ名
/Jasmine/cvsroot
アクセス方法
ext
認証
ssh
Ssh2のDSA公開鍵を山田宛送付
 非公開の内容がアクセスできるので、アクセス可
能なユーザーは秘密厳守が義務
 Webdav導入の検討
現在のcvsレポジトリー構造
simulator
Jasmine Simulator開発用
apply
科研費等の申請書類作成
optics
Centroid実験用プログラム
paper
Jasmine関連論文執筆用
report
レポート、中間報告
viewgraph
発表用ビューグラフ
宇宙モデルの設計

全体




宇宙全体
観測スナップショット
太陽・地球、月
部分




Single Star
Multiple Star
太陽系天体
銀河系外天体
観測装置の設計

全体


部分



Jasmine
光学系
検出器
光学系はさらに部分
を持つ
解析アルゴリズム
検討課題
 複数の方法を検討
 容易に入れ替え可能
 Strategyパターン


アルゴリズムカプセル
化の一般的手法
開発における留意点1
 Coding
style
 Sun
Java Coding Conventions
 Gnu Coding Standards(C++)
 単位系
 SI単位系
開発における留意点2
 Buildにはantを使用する
 ディレクトリー構造
 src
 lib

ソースツリー
外部ライブラリを置く(現在未使用)
XML関連ライブラリ、描画、物理用
コンパイル作業用(antが生成)
 report テストレポート作業用(junitが生成)
 dist
配布ファイル保存用(antが生成)
 build
開発における留意点3

名前空間



テストの実装(XP)



jslibパッケージはJsで始まるクラス名
Jasmineの側は特に指定しない
他のパッケージの仕様を仮定している場合
仕様を定めている場合
ドキュメントの整備



仕様書
Javadoc
ChangeLog
開発における留意点4

Javaバージョン

標準プラットフォーム



Debian, Redhat, Windows, Solaris
java 1.4で動作可能なこと
パッケージ





org/jasemine_galaxy/jslib
org/jasemine_galaxy/jasmine
org/jasmine_galaxy/astro
org/jasmine_galaxy/sample
パッケージごとに責任者を割り当てる
必要な開発環境
開発者 早期利用
Java開発環境
○
○
Ant
○
○
Junit
○
利用者
(実行環
境)
全体設計について

中間報告時点でのモデル化


対象、装置、操作、環境、成果物、利用
さらに抽象度の高いモデル化の提案


上のモデル同士のつながりは予め定まるか?
モデルと入出力・接続の分離


シミュレーション


モデル/コンテナ/コネクタ/データ
コンテナとコネクタでシミュレーションを実装
コマンド
モデル

モデル


コンテナ


コンテナを接続する部品
データ


モデルに対する入出力の抽象化
コネクター


モデル化の最小単位
コネクターを流れるデータの抽象化
シミュレーション

シミュレーションを、コンテナ・コネクタから組みあげる
ライブラリ
 起動・主フレーム
 終了
 印刷
 実行モードの選択
 ファイル入出力
 シミュレーションの選択
 GUI部品
JsMainと関連クラス
数種類のフレーム
Commandパターンの適用
Model/container/connector
今後の進め方
 ライセンスモデルを決める
 オープンソース
 保守はcygnus形式
 Jasmineグループが保持(有償提供)
 暫定的な公開方法
 Jarファイルをメンバー限定Webページ
 ソースはcvsサーバー
 議論はMLで
参考文献

「just Java2」、Peter van der Linden


邦訳ASCII、中田秀基ISBN4-7561-3598-6、5800円
オブジェクト指向における再利用のための「デザインパターン」、
Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides


邦訳SoftBank、本位田真一/吉田和樹監訳
ISBN4-7973-1112-6、4800円
「eXtreme Programming テスト技法」

日本XPユーザーグループ、長瀬嘉秀監修
ISBN4-7981-0128-1、2400円
今後の課題
 機能の追加