オブジェクト指向システムと オブジェクト指向dbms ·...
TRANSCRIPT
1
オブジェクト指向システムとオブジェクト指向DBMS
事業化技術センター 副所長細川 努
オブジェクト指向開発の今
オブジェクト指向の概念発生してから30年オブジェクト指向方法論
Java(J2EE、モバイル)開発環境の充実.NET
ビジネスとITの一体ソリューション何を実現するのかシステム統合、ビジネス統合
開発方法論として急成長したのは7年前から
2
オブジェクト指向とは
①「構造化手法」アルゴリズムを構造化・分割設計することによってシステムを構築するアプローチ
main()
sub1()
sub2()
②「データ中心アプローチ」システムが処理するデータ構造を設計してから、処理機能を構築
するアプローチ
データ構造(E/R図)
顧客マスタメンテプログラム
顧客 商品
売上
売上明細
1n 1
n
1n
商品マスタメンテプログラム
③「オブジェクト指向」オブジェクトを単位としてシステムを構築
→オブジェクト同士が協調して 動作するシステムとなる
オブジェクト指向とは「オブジェクト」という単位でシステム構築を考えるアプローチ
オブジェクト指向の歴史
オブジェクト指向手法の歴史
1960 1970 1980 1990 2000
Simula
Smalltalk
CLU C++
EiffelJava C#
Shlaer&Mellor
OMT
Booch
Coad&Yourdon
UML
OOSE
ERワーニエ法
JSD法
リレーショナル
構造化設計
オブジェクト指向以前の手法 オブジェクト指向手法
Ada
UML2.0
※クラスの概念
※オブジェクト指向の 基本概念確立
※抽象データ型
FLAVORS※多重継承
OOIE
Fusion意味データモデル
オブジェクト指向言語の歴史
オブジェクト指向言語の基盤確立
オブジェクト指向手法の基盤確立
影響
概念の転用
3
UML(Unified Modeling Language)
オブジェクト指向における統一モデリング表記法
OrderCommand
orderVaule : OrderValueorderList : ValueListmessage : MessageList
find()prev()next()selectDetail()add()delete()cancel()
S
OrderModel
find()checkOrderValue()addOrder()modifyOrder()deleteOrder()
Order
order_id : Stringcustomer_id : Stringorder_dt : Dateamount : Integer
getValue()setValue()getLineValue()setLineValue()
E
OrderLine
order_id : Stringitem_id : Stringitem_num : Integeramount : Integer
getValue()setValue()
E
MitumoriModel
order_info.jsp(from order)
order_list.jsp(from order)
order_serach.jsp(from order)
T_Customercustomer_id : SMALLINTname : VARCHAR(30)address : VARCHAR(50)
<<PK>> PK_T_Customer()
T_Orderorder_id : INTEGERcustomer_id : SMALLINTorder_dt : DATEamount : SMALLINT
<<PK>> PK_T_Order()<<FK>> FK_T_Order7()
0..*
10..* 1
<<Non-Identifying>>
T_OrderLineorder_id : INTEGERline_num : SMALLINTitem_id : SMALLINTquantity : SMALLINTprice : SMALLINT
<<PK>> PK_T_OrderLine()<<FK>> FK_T_OrderLine()<<FK>> FK_T_OrderLine8()
0..1
1
0..1
1<<Identifying>>
T_Itemitem_id : SMALLINTname : VARCHAR(20)
<<PK>> PK_T_Item()
0..*
10..* 1
<<Non-Identifying>>
見積
受注残
受注
0..1
受注業務顧客
(from Business Actors)1 0..11
0..n
1
0..n
1
販売
0..n
1
0..n
1
ApplicationServer
手動
WebSphereApatch
InternetClient Order
OrderJAR<<EJB-JAR>>
OrderLinePk<<EJBPrimaryKey>>
OrderPk<<EJBPrimaryKey>>
OrderLineValue
OrderValue
Item
Customer
オブジェクト指向開発の全体像
業務分析から実装・テストまでを一貫して分析・設計
受注業務顧客(from Business Actors)
ビジネスユースケース
ビジネスオブジェクトモデル
システムユースケース
ユーザーインターフェースプロトタイプ
販売担当者
(from Actors)
商品を販売する
販売エンティティ販売登録販売登録画面
(システム化範囲の絞込み)
分析オブジェクトモデル
設計オブジェクトモデル OrderCommand
orderVaule : OrderValue
orderList : ValueList
message : MessageList
find()
prev()
next()
selectDetail()
add()
delete()
cancel()
S
OrderModel
find()
checkOrderValue()
addOrder()
modifyOrder()
deleteOrder()
Order
order_id : String
customer_id : String
order_dt : Date
amount : Integer
getValue()
setValue()
getLineValue()
setLineValue()
E
OrderLine
order_id : String
item_id : String
item_num : Integer
amount : Integer
getValue()
setValue()
E
MitumoriModel
order_info.jsp
(from order)
order_list.jsp
(from order)
order_serach.jsp
(from order)
T_Customer
customer_id : SMALLINT
name : VARCHAR(30)address : VARCHAR(50)
<<PK>> PK_T_Customer()
T_Order
order_id : INTEGER
customer_id : SMALLINT
order_dt : DATE
amount : SMALLINT
<<PK>> PK_T_Order()<<FK>> FK_T_Order7()
0..*
10..* 1
<<Non-Identifying>>
T_OrderLine
order_id : INTEGER
line_num : SMALLINT
item_id : SMALLINT
quantity : SMALLINT
price : SMALLINT
<<PK>> PK_T_OrderLine()
<<FK>> FK_T_OrderLine()
<<FK>> FK_T_OrderLine8()
0..1
1
0..1
1<<Identifying>>
T_Item
item_id : SMALLINT
name : VARCHAR(20)
<<PK>> PK_T_Item()
0..*
10..* 1
<<Non-Identifying>>
論理データモデル
見積
受注残
受注
0..11 0..11
0..n
1
0..n
1
販売
0..n
1
0..n
1
ドメインモデル
アーキテクチャ&パターン適用
JSP EJB EJBフレームワーク
J2EE
ビジネスモデリング
要求
システム分析
実装
システム設計
実現
在庫(from 在庫部門)
販売担当(from 販売部門)
在庫引当て
顧客(from Business Actors)
オーダー実現
自動化
参照
実装
テスト
実装モデル 物理データモデル
検証
テストモデル
テスト
ApplicationServer
手動
WebSphereApatch
InternetClient
配置図・コンポーネント図
Order
OrderJAR<<EJB-JAR>>
OrderLinePk<<EJBPri maryKey>>
OrderPk<<EJBPri maryKey>>
OrderLineValue
OrderValue
Item
Customer
4
オブジェクト指向開発環境
RationalXDE
TogetherCC
Ant ,etc
jUnit ,etc
プラグイン Eclipse WorkBench
統合開発環境の進化
- 従来、オブジェクト指向CASE、プログラミング、ビルド管理、自動テスト、構成管理等の各種ツールは別々の環境
- 最近、オープンソースのIDE(統合開発環境)に各種ツール をプラグイン化する傾向に
オブジェクト指向開発プラットフォーム
J2EE(Java2 Platform Enterprise Edition)
●Servlet・JSP -JavaによるWebアプリを構築する機能●EJB -業務機能(ビジネスロジック・データ) を部品化するコンポーネント技術●RMI-IIOP、JavaIDL、JNDI -分散連携に関する技術●JDBC -リレーショナルDBへの接続●JCA -EAIアダプタへの接続●JMS -非同期メッセージング●JTA、JTS -トランザクションサービス●JAXP、JAXB、JAXM JAX-RPC、JAXR -XMLおよびWebサービス関連機能
ミッションクリティカルなシステムを構築するためのサーバーサイドJava環境
5
オブジェクト指向開発プラットフォーム
Microsoft .NET新しいオブジェクト指向プログラミング環境(※)やXML技術、WebServiceを積極的に活用
※複数の言語(C#、J#、etc)を中間言語に変換し 共通言語実行環境(CLR)で実行
オブジェクト指向が目指すもの
デザインパターンオブジェクト指向における良い設計のお手本- GOFのデザインパターン- J2EEパターン
: Client : ServletEngine : Control ler : Command : Dispatcher : View : Helper
request( )
delegateRequest( )
dispatch( )
processRequest( )execute( )
Client
ServletEngine
request()
JSPFront<<JSP>>
ServletFront<<Servlet>>
View
dispatch()
Dispatcher
delegateRequest()
Controller
Helper
processRequest()
Command
execute()
J2EEパターン(Service To Walker)
6
オブジェクト指向が目指すもの
UMLの未来- より複雑なモデル記述への対応- MDA(Model Driven Architecture)
1967
Foundations of OO (Nygaard, Goldberg, Meyer,Stroustrup, Harel, Wirfs-Brock, Reenskaug,…)
Foundations of OO (Foundations of OO (NygaardNygaard, Goldberg, Meyer,, Goldberg, Meyer,StroustrupStroustrup, , HarelHarel, , WirfsWirfs--Brock, Brock, ReenskaugReenskaug,,……))
JacobsonJacobsonBoochBoochRumbaughRumbaugh
UML 1.1 (OMG Standard)UML 1.1 (OMG Standard)UML 1.1 (OMG Standard)
UML 1.3 (extensibility)UML 1.3 (extensibility)UML 1.3 (extensibility)
UML 1.4 (action semantics)UML 1.4 (action semantics)UML 1.4 (action semantics)UML 1.4.1UML 1.4.1UML 1.4.1
1996
1997
1998
20012002
2003
UML 2.0 (MDA)UML 2.0 (MDA)UML 2.0 (MDA)
現在のUML
今後
オブジェクト指向が目指すもの
ビジネスモデリングオブジェクト指向は、ビジネスプロセスやビジネス構造を分析する際にも大きな威力を発揮
販売部門 在庫物流部門 仕入部門
販売業務
棚卸業務
仕入先
納入業務
見積業務
仕入計画業務
仕入業務
受入れ業務
在庫担当仕入担当
仕入計画 仕入発注
0..1 0..*0..1 0..*
販売担当
販売受注残
受注
0..n
1
0..n
1
0..n
1
0..n
1
見積
0..1 10..1 1
棚卸
入庫
出庫
在庫
1 0..n1 0..n1..n
0..n
1..n
0..n
1..n
0..n
1..n
0..n
企業ビジネスプロセス・構造をオブジェクト指向でモデル化
7
現代のデータマネジメント
情報の多様化
ゲノムデータ
部品データXMLデータ
Business Intelligenceオブジェクト?
現代においては、ビジネスや社会生活で取り扱うデータが複雑化+高度化+大量化しつつある
オブジェクト指向におけるデータマネジメント
オブジェクトデータの格納オブジェクトモデルをそのまま、関係、依存性を維持したままデータ格納するのが理想形(オブジェクト指向データベース)
オブジェクト実行環境 オブジェクトデータストア
8
なぜオブジェクトデータか?
情報管理の柔軟性・オブジェクトデータは他のデータモデルにも柔軟に対応・データ抽象化によってオブジェクトの振る舞いを隠蔽
<?xml version=“1.0”? ><!—Team.xml --><DOCTYPE Team SYSTEM “Team.dtd” ><team team_id=“1234”>技術コンサルティング <member member_id = “3001”> 細川 努</member> <member member_id = “3002”>木下 恵一</member> <member member_id = “3003”>鈴村 幸太郎</member></team>
リレーショナルデータ
XMLインスタンス
マルティメディアデータ
オブジェクトデータベース
メリット- オブジェクトデータ管理として理想的- 検索は効率的
オブジェクト実行環境 オブジェクトデータベース
キャッシュ
デメリット- 大量一括処理に弱い- 更新に関するミッションクリティカル性が低い
(残念ながら)リレーショナルデータベースほど普及せず
9
リレーショナルデータベースのオブジェクト拡張
オブジェクトリレーショナル- リレーショナルデータベースをオブジェクト拡張- 他テーブルの行インスタンスに対する参照- テーブルTYPEの継承/拡張- 複雑なデータは扱えるようになったがオブジェクトの振る舞いを
データベースに実装することには限界がある。
所属
部門テーブル
社員テーブル
リレーショナルデータベースのオブジェクト拡張
オブジェクトリレーショナルに対して各種エクステンションで拡張XPERANTO:オブジェクトリレーショナルに対してXML格納・アクセスを実現
XPERANTO
XMLスキーマXML-QL Parser
Query Rewrite
SQL Translation
オブジェクトリレーショナルデータベース(DB2)
SQL Query Processor
データストア システムカタログ
XML View Services
XML Schema Generator
XML Instance
QueryTransaction
XML結果
10
EJBコンポーネント
EJB(企業システム向けのJavaコンポーネントモデル)
リレーショナルデータベースに対して、オブジェクトをマッピング 複雑な振舞いはコンポーネント側に実装
J2EE アプリケーションサーバーIBM WebSphere、Fujitsu InterStageBEA WebLogic、Hitachi Cosminexus
EJB2.0でのオブジェクト-リレーションマッピング
EJB(J2EEの分散コンポーネントモデル)
例) 社員が複数部門への兼任がある組織データの実装
社員
部門
部門テーブル
社員テーブル
社員x部門関連テーブル
EJBコンテナ
関連
EntityBeans
EntityBeans
CMR
11
EJBによる企業システム構築
EJBによる業務機能オブジェクトの部品化
一般的な企業システムも、オブジェクトの構造としては複雑 データベース側を複雑にするのでなく、EJBコンポーネント 側でオブジェクト指向システムとして構築
注文
注文明細
顧客
商品
出荷
出荷明細
SessionBean EntityBeans
見積
在庫
見積
受注
出荷
見積明細
EJBI/F
JDBC
オブジェクト指向データ管理のまとめ
オブジェクト指向データ管理の多様化データストアだけのオブジェクト化でなく、周辺環境(エクステンション、コンポーネント)のオブジェクト指向化も進む
・オブジェクトデータストア・オブジェクトリレーショナル・リレーショナル
XML
TEXTEtc
エクステンション
コンポーネント
利用者
データストア
12
さらにグローバルなオブジェクトデータ管理へ
今後、もっと大きな単位でのデータ管理が必要-システム間統合-企業統合
販売支援
A社
B社統合
販売・物流
メインフレーム
(A社)
メインフレーム(B社)
R/3FI
R/3FI
SFA
会計
販売・物流 会計
新会社
メインフレーム
(B社)
R/3FI
SFA
販売・物流 会計
販売支援
メインフレーム
(A社)
販売・物流
他企業
統合技術の進化
システム間の機能的連携従来のシステム統合は、システム間を単に連携させることを目的としていたがこれからは、業務機能間での機能的連携が必要に。
サーバー(UNIX、LINUX、Windows)
独自技術統合
第一世代
ミドルウェア中心統合
第二世代
フロント処理
勘定系A 勘定系B
SFA SD(販売) FI(財務)
コンポーネント型統合
第三世代
SFA SD(販売) FI(財務)
統合連携
業務機能の拡張データ統合
ワークフロー
IBM WebSphere
サーバー(UNIX、LINUX、Windows)
EAI
データ変換 ワークフロー
EAI:Enterprise Application Integration
13
Javaにおける統合技術①
JDO(JavaDataObject)データベースだけでなく、外部システム自体をオブジェクトとしてアクセス可能
JDO PersistenceManager RDBMS
JDBC
JMS
JCA
PersisteneCapable
外部システム
・メインフレーム・R/3、People
JCAアダプタ
EJB Servlet
XMLDBMS
OODBMS
CMP
Javaにおける統合技術②
Webサービス(WSDL)による統合柔軟性の高い統合を実現
JDO PersistenceManager RDBMS
JDBC
JMS
JCA
PersisteneCapable
外部システム
・メインフレーム・R/3、People
JCAアダプタ
EJB Servlet
XMLDBMS
OODBMS
CMP
WSDL
WSDL