Comments
Description
Transcript
オブジェクト指向システムと オブジェクト指向DBMS
オブジェクト指向システムと オブジェクト指向DBMS 事業化技術センター 副所長 細川 努 [email protected] オブジェクト指向開発の今 オブジェクト指向方法論 オブジェクト指向の概念発生してから30年 開発方法論として急成長したのは7年前から 開発環境の充実 Java(J2EE、モバイル) .NET 何を実現するのか ビジネスとITの一体ソリューション システム統合、ビジネス統合 1 オブジェクト指向とは オブジェクト指向とは 「オブジェクト」という単位でシステム構築を考えるアプローチ ①「構造化手法」 アルゴリズムを構造化・分割 設計することによってシステム を構築するアプローチ ②「データ中心アプローチ」 ③「オブジェクト指向」 システムが処理するデータ構造を 設計してから、処理機能を構築 するアプローチ オブジェクトを単位としてシステムを構築 →オブジェクト同士が協調して 動作するシステムとなる main() 顧客 マスタ メンテ プログラム sub1() 商品 マスタ メンテ プログラム sub2() データ構造(E/R図) 顧客 商品 1 n 1 n 売上 1 n 売上明細 オブジェクト指向の歴史 オブジェクト指向言語の基盤確立 ※抽象データ型 オブジェクト 指向言語 の歴史 Simula CLU Ada ※クラスの概念 C++ Java Smalltalk C# Eiffel ※オブジェクト指向 の 基本概念確立 FLAVORS 概念の転用 ※多重継承 オブジェクト指向手法の基盤確立 オブジェクト指向以前の手法 オブジェクト 指向手法 の歴史 ワーニエ法 ER JSD法 リレーショナル オブジェクト指向手法 Shlaer& OOIE Mellor Coad& Fusion Yourdon 意味 データモデル 構造化 設計 OMT 影響 Booch UML UML2.0 OOSE 1960 1970 1980 1990 2000 2 UML(Unified Modeling Language) オブジェクト指向における統一モデリング表記法 MitumoriModel S order_info.jsp (from order) <<Non-Identifying>> 0..* 0..* Order order_id : String customer_id : String order_dt : Date amount : Integer OrderModel find() checkOrderValue() addOrder() modifyOrder() deleteOrder() find() prev() next() selectDetail() add() delete() cancel() order_list.jsp T_Order order_id : INTEGER customer_id : SMALLINT order_dt : DATE amount : SMALLINT E OrderCommand orderVaule : OrderValue orderList : ValueList message : MessageList (from order) getValue() setValue() getLineValue() setLineValue() E T_Customer customer_id : SMALLINT name : VARCHAR(30) address : VARCHAR(50) 1 <<PK>> PK_T_Order() <<FK>> FK_T_Order7() 1 <<Identifying>> OrderLine order_id : String item_id : String item_num : Integer amount : Integer order_serach.jsp (from order) getValue() setValue() <<PK>> PK_T_Customer() 0..1 0..1 T_OrderLine order_id : INTEGER line_num : SMALLINT item_id : SMALLINT quantity : SMALLINT price : SMALLINT 受注業務 顧客 0..* 0..* 1 1 (from Business Actors) <<Non-Identifying>> 見積 0..n 販売 1 受注 0..n <<PK>> PK_T_Item() <<PK>> PK_T_OrderLine() <<FK>> FK_T_OrderLine() <<FK>> FK_T_OrderLine8() 受注残 ApplicationServer Client 0..1 1 T_Item item_id : SMALLINT name : VARCHAR(20) <<EJBPrimaryKey>> OrderPk OrderValue Internet Order OrderLineValue <<EJBPrimaryKey>> OrderLinePk 手動 WebSphere Apatch <<EJB-JAR>> OrderJAR Item Custom er オブジェクト指向開発の全体像 業務分析から実装・テストまでを一貫して分析・設計 ビジネス モデリング ドメインモデル ビジネスオブジェクトモデル ビジネス ユースケース 実現 顧客 受注業務 顧客 参照 オーダー 1 見積 在庫 販売担当 (from Business Actors)(from 販売部門) 0..n 販売 1 在庫引当て 0..1 1 受注 0..n (from 在庫部門) (from Business Actors) 要求 受注残 ユーザーインターフェース プロトタイプ システム ユースケース (システム化範囲の絞込み) 商品を販売する 販売担当者 自動化 (from Actors) 分析オブジェクトモデル 実現 システム 分析 販売登録画面 販売エンティティ 販売登録 アーキテクチャ&パターン適用 システム 設計 論理データモデ ル MitumoriM odel 設計オブジェクトモデル S order_inf o.jsp E OrderComm and (from ord er) orderVaul e : Or derVal ue orderList : Val ueList message : Messa geList Order next() selectDet ail() add() delete() cancel() <<Non-Ide ntifyi ng>> T_Order order_id : INTE GER customer_ id : S MALLIN T order_dt : DATE amount : SMALLI NT T_Custome r *.0 0..* 1 <<PK>> PK _T_Ord er() <<FK>> FK _T_Ord er7() order_id : Stri ng customer_ id : S tring OrderMode l customer_ id : S MALLIN T name : VA RCHAR( 30) address : VARCH AR(50) <<PK>> PK _T_Cus tomer( ) 1 <<Identif ying>> order_dt : Date amount : Intege r find() checkOrde rValue () addOrder( ) modifyOrd er() deleteOrd er() find() prev() order_lis t.jsp (from ord er) getValue( ) setValue( ) getLineVa lue() setLineVa lue() 1.0 0..1 T_OrderLi ne E OrderLine order_ser ach.js p order_id : Stri ng item_id : Strin g item_num : Inte ger amount : Intege r (from ord er) order_id : INTE GER line_num : SMAL LINT item_id : SMALL INT quantity : SMAL LINT price : S MALLIN T <<PK>> PK _T_Ord erLine () <<FK>> FK _T_Ord erLine () <<FK>> FK _T_Ord erLine 8() <<Non-Ide ntifyi ng>> *.0 0..* 1 T_Item item_id : SMALL INT name : VA RCHAR( 20) <<PK>> PK _T_Ite m() getValue( ) setValue( ) 実装モデル 配置図・コンポーネント図 実装 ApplicationServer Client <<EJBPri maryKe y>> OrderPk <<EJBPri maryKe y>> OrderLine Pk 実装 JSP <<EJB-JA R>> OrderJAR 手動 WebSphere Apatch OrderValu e OrderLine Value Order Internet フレーム ワーク EJB EJB 物理 データモデル J2EE Item Custom er テストモデル テスト 検証 テスト 3 オブジェクト指向開発環境 統合開発環境の進化 − 従来、オブジェクト指向CASE、プログラミング、ビルド管理、 自動テスト、構成管理等の各種ツールは別々の環境 − 最近、オープンソースのIDE(統合開発環境)に各種ツール をプラグイン化する傾向に プラグイン Eclipse WorkBench Rational XDE Together CC Ant ,etc jUnit ,etc オブジェクト指向開発プラットフォーム J2EE(Java2 Platform Enterprise Edition) ミッションクリティカルなシステムを構築するための サーバーサイドJava環境 ●Servlet・JSP -JavaによるWebアプリを構築する機能 ●EJB -業務機能(ビジネスロジック・データ) を部品化するコンポーネント技術 ●RMI-IIOP、JavaIDL、JNDI -分散連携に関する技術 ●JDBC -リレーショナルDBへの接続 ●JCA -EAIアダプタへの接続 ●JMS -非同期メッセージング ●JTA、JTS -トランザクションサービス ●JAXP、JAXB、JAXM JAX-RPC、JAXR -XMLおよびWebサービス関連機能 4 オブジェクト指向開発プラットフォーム Microsoft .NET 新しいオブジェクト指向プログラミング環境(※)や XML技術、WebServiceを積極的に活用 ※複数の言語(C#、J#、etc)を中間言語に変換し 共通言語実行環境(CLR)で実行 オブジェクト指向が目指すもの デザインパターン オブジェクト指向における良い設計のお手本 - GOFのデザインパターン - J2EEパターン J2EEパターン(Service To Walker) ServletEngine request() Helper Client processRequest() Command exec ute() Controller : Client : ServletEngine : Controller : Dispatcher : View : Helper : Command request( ) Dispatcher <<Servlet>> ServletFront <<JSP>> JSPFront delegateRequest() View processRequest( ) exec ute( ) dispatch() delegateRequest( ) dispatch( ) 5 オブジェクト指向が目指すもの UMLの未来 - より複雑なモデル記述への対応 - MDA(Model Driven Architecture) 2003 UML 2.0 (MDA) 今後 現在のUML 2002 2001 UML UML 1.4.1 1.4.1 UML UML 1.4 1.4 (action (action semantics) semantics) 1998 UML UML 1.3 1.3 (extensibility) (extensibility) 1997 UML 1.1 (OMG Standard) 1996 Rumbaugh Booch Jacobson Foundations Nygaard,, Goldberg, ((Nygaard, Foundations of of OO OO (Nygaard Goldberg, Meyer, Meyer, Stroustrup, -Brock, Reenskaug, ,…) Stroustrup Harel Wirfs Reenskaug Stroustrup,, Harel, Harel,, WirfsWirfs-Brock, Reenskaug,…) 1967 オブジェクト指向が目指すもの ビジネスモデリング オブジェクト指向は、ビジネスプロセスやビジネス構造を 分析する際にも大きな威力を発揮 企業ビジネスプロセス・構造をオブジェクト指向でモデル化 販売部門 在庫物流部門 仕入部門 仕入計画業務 見積業務 仕入業務 棚卸業務 販売業務 受入れ業務 仕入先 納入業務 在庫担当 販売担当 0..1 受注 1 仕入担当 1 1 見積 0..n 0..n 0..n 1..n 入庫 1 0..n 1..n 在庫 棚卸 0..1 0..* 0..n 仕入計画 受注残 仕入発 注 販売 出庫 6 現代のデータマネジメント 情報の多様化 現代においては、ビジネスや社会生活で取り扱うデータが 複雑化+高度化+大量化しつつある ゲノムデータ Business Intelligence オブジェクト? 部品データ XMLデータ オブジェクト指向におけるデータマネジメント オブジェクトデータの格納 オブジェクトモデルをそのまま、関係、依存性を維持したまま データ格納するのが理想形(オブジェクト指向データベース) オブジェクト実行環境 オブジェクトデータストア 7 なぜオブジェクトデータか? 情報管理の柔軟性 ・オブジェクトデータは他のデータモデルにも柔軟に対応 ・データ抽象化によってオブジェクトの振る舞いを隠蔽 マルティメディアデータ XMLインスタンス <?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> リレーショナルデータ オブジェクトデータベース メリット デメリット - オブジェクトデータ管理として理想的 - 検索は効率的 - 大量一括処理に弱い - 更新に関するミッションクリティカル性が低い (残念ながら)リレーショナルデータベースほど普及せず オブジェクト実行環境 オブジェクトデータベース キャッシュ 8 リレーショナルデータベースのオブジェクト拡張 オブジェクトリレーショナル - リレーショナルデータベースをオブジェクト拡張 他テーブルの行インスタンスに対する参照 テーブルTYPEの継承/拡張 複雑なデータは扱えるようになったがオブジェクトの振る舞いを データベースに実装することには限界がある。 社員テーブル 所属 部門テーブル リレーショナルデータベースのオブジェクト拡張 オブジェクトリレーショナルに対して各種エクステンションで拡張 XPERANTO:オブジェクトリレーショナルに対してXML格納・アクセスを実現 XPERANTO QueryTransaction XML View Services XML-QL Parser XMLスキーマ Query Rewrite XML Schema Generator SQL Translation XML Instance XML結果 オブジェクトリレーショナルデータベース(DB2) SQL Query Processor データストア システムカタログ 9 EJBコンポーネント EJB(企業システム向けのJavaコンポーネントモデル) リレーショナルデータベースに対して、オブジェクトをマッピング 複雑な振舞いはコンポーネント側に実装 J2EE アプリケーションサーバー IBM WebSphere、Fujitsu InterStage BEA WebLogic、Hitachi Cosminexus EJB2.0でのオブジェクト-リレーションマッピング EJB(J2EEの分散コンポーネントモデル) 例) 社員が複数部門への兼任がある組織データの実装 EJBコンテナ 社員 EntityBeans 関連 CMR 社員テーブル 社員x部門関連テーブル EntityBeans 部門テーブル 部門 10 EJBによる企業システム構築 EJBによる業務機能オブジェクトの部品化 一般的な企業システムも、オブジェクトの構造としては複雑 データベース側を複雑にするのでなく、EJBコンポーネント 側でオブジェクト指向システムとして構築 SessionBean 見積 EntityBeans 見積 顧客 見積明細 受注 注文 注文明細 EJB I/F JDBC 在庫 出荷 商品 出荷 出荷明細 オブジェクト指向データ管理のまとめ オブジェクト指向データ管理の多様化 データストアだけのオブジェクト化でなく、 周辺環境(エクステンション、コンポーネント) のオブジェクト指向化も進む エクステンション 利用者 データストア XML TEXT Etc コンポーネント ・オブジェクトデータストア ・オブジェクトリレーショナル ・リレーショナル 11 さらにグローバルなオブジェクトデータ管理へ 今後、もっと大きな単位でのデータ管理が必要 −システム間統合 −企業統合 A社 販売・物流 メイン フレーム (A社) 会計 R/3 FI 新会社 販売・物流 B社 販売・物流 メイン フレーム (B社) 統合 会計 R/3 FI 会計 メイン フレーム (A社) R/3 FI メイン フレーム (B社) SFA 販売・物流 販売支援 SFA 販売支援 他企業 統合技術の進化 システム間の機能的連携 従来のシステム統合は、システム間を単に連携させることを目的としていたが これからは、業務機能間での機能的連携が必要に。 第一世代 第二世代 独自技術統合 第三世代 ミドルウェア中心統合 コンポーネント型統合 EAI:Enterprise Application Integration サーバー(UNIX、LINUX、Windows) サーバー(UNIX、LINUX、Windows) IBM WebSphere フロント 処理 EAI データ変換 業務機能の拡張 ワークフロー データ統合 ワークフロー 統合連携 勘定系A 勘定系B SFA SD(販売) FI(財務) SFA SD(販売) FI(財務) 12 Javaにおける統合技術① JDO(JavaDataObject) データベースだけでなく、外部システム自体をオブジェクトとしてアクセス可能 Serv let EJB JDO JDBC RDBMS PersistenceManager XML DBMS CMP Persistene Capable OODBMS JMS 外部システム JCA ・メインフレーム ・R/3、People JCA アダプタ Javaにおける統合技術② Webサービス(WSDL)による統合 柔軟性の高い統合を実現 Serv let EJB JDO JDBC RDBMS PersistenceManager XML DBMS CMP Persistene Capable OODBMS WSDL JMS 外部システム WSDL JCA ・メインフレーム ・R/3、People JCA アダプタ 13 これからのシステム開発 もっと拡張性があり、インテリジェンスなシステム構築 オブジェクト リレーション コンポーネント 統合技術 エクステンション オブジェクト指向 UML 14