Transcript 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円
今後の課題
機能の追加