【18-C-3】システムアーキテクチャ構築の実践手法

Developers Summit
Developers SummitDevelopers Summit
システムアーキテクチャ構築の
実践手法  ( ISBN978-4-7981-2164-2 )




18-C-3                   吉田幸彦
                         日本アイ・ビー・エム株式会社
                         アプリケーション開発事業
                         エグゼクティブITアーキテクト
          Developers Summit 2011
目 次
   アーキテクチャとは?
   アーキテクチャは誰によって使われ何故有益なのか?
   アーキテクチャはどの様に表現されるか?
   アーキテクトはどの様にアーキテクチャを描き・洗練するのか?
   ソフトウェア開発プロジェクトにおけるアーキテクトの役割は?




              Developers Summit 2011
アーキテクト・アーキテクチャ・
アーキテクティング
                 -実行する
  アーキテクト                               アーキテクティング



       -作成する                        -結果を生む
                アーキテクチャ



 アーキテクトはアーキテクティング(アーキテクチャを構築する活動)
 を実践しアーキテクチャを構築するプロフェッショナル



           Developers Summit 2011
アーキテクチャとは
アーキテクチャ:
コンポーネント、あるいはコンポーネント相互間や
コンポーネントと環境との関係で具体化されるシステムの基本的な構造と
そのデザイン・進化を導く方針
(IEEE Std 1471-2000)

             「システムの構造(構成要素、配置)や振る舞い」
             「システムの設計・開発の方針」
             「将来、どの様にシステムを進化させるか」

                 を決定するのがアーキテクト


                       Developers Summit 2011
アーキテクチャとは構造である
 構造 =
   構成要素(コンポーネント)と、その間の動的、静的な関係を定義したもの
 構成要素はインターフェースを持っている
 構成要素は入れ子の関係
 範囲(システム・コンテクスト)が重要         マトリョーシカ
                                           (入れ子構造の
                                            ロシア人形)
                                              写真
 システム・コンテクスト

                    コンポーネント

                    コンポー
                               コンポー
                                ネント      何を対象とした構造で
   コンポーネント     関係
                     ネント
                                         あるかはコンテクストに
                                         より決まる !!



                Developers Summit 2011
システム構造と構成要素と責務
                         (1000)                  (2000)
                  ユーザー                     ユーザー

                                                 (2000)
システム                     (500)
                                                        クライアント・
       責務          S/W     クライアント・         S/W
                           ノード                         ノード
                       H/W                 S/W               責務
       責務                     責務                  H/W
                                                        責務
            (60)
                                         (20)

                                 S/W            責務
                                        H/W
                   責務
                                       拠点サーバー・ノード
            (6)
                                           (4)

                   責務         S/W                  責務
                                         H/W
            (1)
                                       全社サーバー・ノード
                        Developers Summit 2011
アーキテクチャの特徴
•   見えない構造の可視化であり、その解釈は一義的でなければならない
•   設計・実装上の判断のよりどころとなる(制約ととらえるのでなく指針)
•   アーキテクチャは設計され、実装され、アセット化され再利用される
•   システム(ソフトウェア)構造の判断は開発の初期になされる
    • 開発対象の特定のため
    • 役割や作業の分担のため          アーキテクチャ上の判断
•   その時点では実際のシステム(ソフトウェア)は存在しない
    • 十分な情報が揃った上で検討がなされることは少ない
    • 厳密な意味での実証的な確認がとれない
                            アーキテクチャの評価



• 構成要素の設計・実装を並行して進めることが可能となる
• システムの整合性、長期ライフ、低コスト化の源泉となる
• 共通言語としてコミュニケーション促進をはかることができる
                Developers Summit 2011
アーキテクチャ上の判断
必ずしも十分な情報が得られない段階において,不確定要素を考慮し,起こ
り得る開発上のリスクを踏まえて,システム(ソフトウェア)設計の方向付
けを行う必要がある (アーキテクチャ上の判断:Architectural Decision)



 判らないことに対する                           判ることに基いた
 リスク判断                                アーキテクチャ上の判断




    リスク
            評価                       評価   必要な情報   評価




実現可能性はより必要な情報が揃うにつれて,設計の詳細化に応じて,
決められたチェックポイントで再評価する
                 Developers Summit 2011
ステークホールダ
アーキテクチャは誰によって使われ何故有益なのか?
 ステークホールダ:
 システムに関して興味または関心事を有する個人、チーム、組織
 (IEEE Std 1471-2000)
   「課題をそのシステムによって解決したい」               要求者
   「開発または運用の費用を負担する」                  取得者(オーナー)
   「解決・実現方法を考える」                      コンサルタント / アーキテクト
                                      ビジネスアナリストなど

   「そのための情報システムの構造を考える」               アーキテクト
   「その情報システムを開発する」                    開発者
   「システム運用を任される」                      運用者
        アーキテクトは技術上のコミュニケーションにも関わる
             Developers Summit 2011
アーキテクチャの表現
対象をどう表現すれば、関係者が、その対象(本質や価値)を認識し、その構
造を一義的に解釈することができるか?



 僅か一部分を取り上げたところで、その対象の全てが分かる訳ではない
 また、一枚の絵図で対象のすべてを表すことはできないであろう
 そこから対象に対する同一の理解に達することは不可能に近い (?)
 対象の本質を表現し理解するためには複数の適切な視点(ビュー)にもと
  づく表現が必要
 ステークホールダの関心事に応じた視点の採用が必要




             Developers Summit 2011
アーキテクチャの表現..
アーキテクチャをどう表現すれば、ステークホールダがシステムの構造を一義的に解釈で
き、そのシステムおよび実現方法の価値を認識することができるか?

  ビュー:
  関連する一組の関心事の視点からシステム全体を表現したもの
  (IEEE 1471-2000)
  補足:一人以上のステークホールダが抱いている一つまたはそれ以
  上の関心事にアーキテクチャがどう対応するかを示すアーキテクチャ
  の一つ以上の構造的側面を表現したものである

  ビューポイント:
  ビューを作成し、使用するための約束事の詳細仕様である。また、
  ビューの目的や利用者を明確にして、それぞれのビューを作成するた
  めのパターンもしくはテンプレートであり、それらを作成し分析するた
  めのテクニックである
  (IEEE 1471-2000)

              Developers Summit 2011
ビュー / ダイアグラム / モデル

       ステークホールダ                   ステークホールダ
        グループ A                     グループ B


       機能ビュー                          配置ビュー
    ダイアグラム   ダイアグラム                   ダイアグラム




             機能モデル                    配置モデル

             Developers Summit 2011
配置ビューポイント (参考)
説明            このビューポイントは、システムの配置を支援し、ロケーション、ノード、デ
              バイス、および、それらの間のコネクションなどのアーキテクチャ要素に関
              係する
ステークホルダの関心事   システム配置、ハードウェアノード(および、デバイス)仕様、および、ネット
              ワーク仕様

ステークホルダ       構成管理者、開発者、保守要員、プロジェクトマネージャ、サプライヤ、サ
              ポート要員、システム管理者、および、テスター
ワークプロダクト      アーキテクチャ上の判断、アーキテクチャ概要、および、配置モデル

チェックリスト       配置要素は関連する規定された機能および非機能(品質および制約)要
              求を支援するか?特別な制約として、既存環境からの移行、コスト、実装
              スケジュール(必要なハードウェア取得のためのリードタイムを含む)、お
              よび、データセンター内の空きスペースのような物理的制約が含まれる。
              配置要素は要求に対して追跡可能性が保持されているか? 機能ビュー
              におけるすべての構成要素は配置ビューのノードに対して配置している
              か? ノードとロケーション間のコネクションは機能要素間で相互作用を支
              援するために存在するか?
              物理的配置要素はノードおよびデバイスの数、それらの詳細仕様に関し
              て十分詳細に定義されているか? すべてのオペレーティングシステムの
              ような第三者ソフトウェア要求は、ソフトウェアライセンスを必要とするラン
              タイム要素とともに特定されているか?
                  Developers Summit 2011
ステークホールダ..
役割             開発    主要な責任
               チーム
ア プ リ ケ ー シ ョ ン
                外部   システム開発を委託する(資金を供給する)
オーナー
ビジネス管理者         外部   実稼働システムのビジネス関連要素を管理する
構成管理者          内部    構成管理レポジトリとそれに属する要素の構造を定義する
開発者            内部    詳細設計およびシステムの実装を実行する
保守要員           外部    実稼働後のシステムに対する拡張・保守を管理する
                     計画、要員、監視、および、リスク管理の面から開発プロ
プロジェクト管理者      内部
                     ジェクトの実行を管理する
                     システムの開発もしくは実行に必要とされるソフトウェアも
サプライヤ          外部
                     しくはハードウェア要素を提供する
サポート要員         外部    システムサポートおよび診断機能の実行を提供する
システム管理者        外部    システムの実稼働を管理運用する
                     目的に合った機能・品質を確認するためにシステムをテス
テスタ            内部
                     トする
ユーザ            外部    システムのビジネス機能の使用する

     アーキテクト : すべてのビューポイントにおいてステークホールダとみなされる
                     Developers Summit 2011
基本および横断的ビューポイント
ステークホールダ

                   グループ A        グループ B          グループ C    グループ D


                     要求            機能              配置       妥当性確認
                   ビューポイント       ビューポイント         ビューポイント   ビューポイント


         パフォーマンス                                配置コンポーネント
                                コンポーネント
                    性能要求                        ハードウェア仕様 性能確認要素
         ビューポイント                  結合
                                                 分散トポロジー
グループ E


          セキュリティ                 セキュリティ
         ビューポイント セキュリティ要求         ポリシー                     セキュリティ
                                                ファイアウォール
                                 ユーザー認証                     確認要素
グループ F                           ユーザー権限


                       Developers Summit 2011
ビューポイントと成果物
             要求           機能                     配置            妥当性確認
           ビューポイント      ビューポイント                ビューポイント        ビューポイント

          ビジネスエンティ   アーキテクチャ            アーキテクチャ          アーキテクチャ
           ティ・モデル      上の決定                上の決定              検証
パフォーマンス
          ビジネスプロセ    アーキテクチャ            アーキテクチャ          アーキテクチャ
ビューポイント
           ス・モデル       概要                  概要                構想実証
          ビジネスルール    データモデル             配置モデル            RAIDログ
          変更要求       機能モデル                                レビュー記録
          EA基本原則
 セキュリティ   既存IT環境
ビューポイント   機能要求
          用語集
          非機能要求
          優先順位付要求
           リスト
   :
          ステークホール
   :
           ダ要求                   EA ( Enterprise Architecture )
   :
          システムコンテク              RAID ( Risk, Assumption, Issue, Dependency )
   :
           スト
          ビジュン


                      Developers Summit 2011
アーキテクチャ記述
 対象システムの特徴により重点は異なる
    システムの運用や管理が重要 ?
    可用性が重要 ?
    パフォーマンスが重要 ?
    セキュリティが重要 ?
 メリハリをつけたアプローチが重要
    既知のベストプラクティスの適用(再利用による促進)
    未経験の領域へ挑戦(専門家の組織化)
    先進技術の適用(構想実証による検証)



 適切なビューとワークプロダクトの採用
 要求と制約を満たし運用が可能なアーキテクチャであることを確認
 ステークホールダーの承認を得るための客観的根拠の提示
 詳細設計と実装の指針となる
              Developers Summit 2011
主要ワークプロダクトと責任ロール

 ビジネス     ビジネスエンテ   ビジネスプロセ       ビジネスルー        機能要求       非機能要求
 アナリスト     ィティモデル    スモデル            ル




           優先順位付    ステークホール       システムコンテ        ビジョン          用語集
           要求一覧       ダ要求           クスト




  リード     アーキテクチャ   アーキテクチャ       アーキテクチャ      アーキテクチャ     ソフトウェア
 アーキテクト     評価       上の判断           概要          構想実証      アーキテクチャ
                                                             文書




        機能モデル       配置モデル        データモデル                 変更要求    RAIDログ   レビュー記録
アプリケーション       インフラ          データ              プロジェクト
 アーキテクト       アーキテクト        アーキテクト            マネージャ

                            Developers Summit 2011
関連ロール
  プロジェクト
  マネージャ

                              リード
                             アーキテクト

           ビジネス
           プロジェクト
           プロジェクト
           アナリスト
           マネージャ                      アプリ
           マネージャ
                                     アーキテクト


           プロジェクト
            開発者
           プロジェクト                     インフラ
           マネージャ
           マネージャ                     アーキテクト


           プロジェクト                     データ
           テスター
           プロジェクト
           マネージャ                     アーキテクト
           マネージャ

            Developers Summit 2011
アーキテクチャ文書
                                                               ステークホールダ


表紙               7.妥当性確認ビュー
変更履歴             8.アプリケーションビュー
目次、図表リスト、参照文献    9.インフラストラクチャビュー
1.アーキテクチャ文書の目的   10.システム管理ビュー
2.アーキテクチャの概要     11.可用性ビュー
3.アーキテクチャ上の判断    12.パフォーマンスビュー
4.要求ビュー          13.セキュリティビュー
5.機能ビュー          付録
6.配置ビュー



                                      要求            機能          配置         妥当性確認
                                    ビューポイント       ビューポイント     ビューポイント     ビューポイント

                        アプリケーション  ビジネスエンティ      アーキテクチャ上   アーキテクチャ上   アーキテクチャ
                        ビューポイント    ティ・モデル         の決定         の決定         検証
                                  ビジネスプロセス・     アーキテクチャ    アーキテクチャ    アーキテクチャ
                                   モデル            概要          概要          構想実証
                       インフラストラクチャ
                                  ビジネス・ルール      データモデル     配置モデル      RAIDログ
                        ビューポイント
                                  変更要求          機能モデル                  レビュー記録
                                  EA基本原則
                        システム管理
                                  既存IT環境
                        ビューポイント
                                  機能要求
                                  用語集
                          可用性     非機能要求
                        ビューポイント   優先順位付要求
                                   リスト
                        パフォーマンス   ステークホールダ
                        ビューポイント    要求
                                  システムコンテク
                         セキュリティ    スト
                        ビューポイント   ビジュン

                        Developers Summit 2011
アーキテクチャ文書 (例)                                      P241

 1. システム化の基本方針                  7. システム管理
 2. システム概要                       7.1.システム管理シナリオ
  2.1.アーキテクチャの概要                 7.2.システム管理モデル
  2.2.システムの特徴                   8.可用性と障害対策
 3.アーキテクチャ上の判断                   8.1.可用性シナリオ
  3.1.課題と関心事                     8.2.可用性モデル
  3.2.選択肢と判断                    9.パフォーマンス
 4.システム基本要求                      9.1.パフォーマンスシナリオ
  4.1.機能要求                       9.2.パフォーマンスモデル
  4.2.非機能要求                     10.セキュリティ
  4.3.将来要求                       10.1.脅威と対応シナリオ
 5.機能的側面                         10.2.セキュリティモデル
  5.1.機能モデル                     11.妥当性確認
  5.2.データモデル                     11.1.アーキテクチャ評価
 6.実行基盤的側面                       11.3.リスクと今後の対応
  6.1.ロケーションモデル
  6.2.システム構成要素
  6.3.論理構成図
  6.3.物理構成図



                   Developers Summit 2011
アーキテクティング

                 -実行する
  アーキテクト                               アーキテクティング



       -作成する                        -結果を生む
                アーキテクチャ



 アーキテクトはアーキテクティング(アーキテクチャを構築する活動)
 を実践しアーキテクチャを構築するプロフェッショナル



           Developers Summit 2011
手法の概念とその関係
               分割する                 考慮する

プロセス

        フェーズ             反復                 アクティビティ

                                      参照する


                                    実行される


                         タスク                 ロール
 メソッド
コンテンツ

                      利用・作成                  責任を負う
                       する




                                ワークプロダクト

                 Developers Summit 2011
タスク記述例               (共通ボキャブラリの捕捉)
タスク名     共通ボキャブラリの捕捉
目的       このタスクの目的は、ステークホールダーによって使われる共通ビジネ
         スおよび技術用語が理解され文書化されるか確認することである。
ロール      ビジネスアナリスト(主)、ステークホールダ(主)、アプリ・アーキテクト
         (副)、インフラ・アーキテクト(副)
入力       ビジネスエンティティモデル(オプション)、ビジネスプロセスモデル(オプ
         ション)、EA基本原則(オプション)、ステークホールダの要望、ビジョン
出力       用語集
ステップ     共通ボキャブラリの特定
アーキテクト   使用する技術用語の定義を支援する
のロール




                 Developers Summit 2011
タスク記述例                 (非機能要求の概要記述)
タスク名     非機能要求の概要記述
目的       このタスクの目的は、非機能要求の概要を記述することである。

ロール      ビジネスアナリスト(主)、ステークホールダ(副)、アプリ・アーキテクト
         (副)、インフラ・アーキテクト(副)
入力       ビジネスルール(オプション)、EA基本原則(オプション)、ステークホー
         ルダの要望、システムコンテクスト、ビジョン
出力       非機能要求
ステップ     非機能要求を特定する
         非機能要求の概要を記述する
アーキテクト   適切な非機能要求が検討されていることを確認する
のロール     非機能要求が適切な作法で表現されていることを確認する




                 Developers Summit 2011
アーキテクチャ構築の概要
   要求        アーキテクチャ                開発




  要求の定義     論理アーキテクチャ              論理詳細設計
               の作成                  の作成




            物理アーキテクチャ              物理詳細設計
               の作成                  の作成




          Developers Summit 2011
要求定義アクティビティ
    ステークホールダ     共通ボキャブラリ     システムコンテクスト
     要望の収集         の捕捉           の定義




                     機能要求の概要記述      非機能要求の概要記述



関係するロール(役割)
SH:ステークホールダ                  要求の優先順位付け
PM:プロジェクトマネージャ
BA:ビジネスアナリスト
LA:リードアーキテクト
AA:アプリ・アーキテクト         機能要求の詳細化      非機能要求の詳細化
IA:インフラ・アーキテクト
DA:データ・アーキテクト

                                      ソフトウェア ステークホールダ
                                  アーキテクチャ文書 との要求を確認
                                        の更新
                  Developers Summit 2011
要求定義アクティビティ
タスク名      ステップ                            主担当      副担当

ステークホルダ   ステークホルダの特定                      BA, SH   AA,IA
要望の収集     ステークホルダ要望の収集
          ステークホルダ要望の優先順位付け
共通ボキャブラ   共通ボキャブラリの特定                     BA, SH   AA, IA
リの捕捉
システムコンテ   アクターの特定                         BA       LA, SH
クストの定義    アクターのいるロケーションの特定
          データフローの特定
機能要求の概    機能要求の特定                         BA       AA, SH
要記述       機能要求の概要
非機能要求の    非機能要求の特定                        BA       AA, IA,
概要記述      非機能要求の概要記述                               SH
要求の優先順    要求の優先順位付け                       BA, LA   PM, SH
位付け

                 Developers Summit 2011
要求定義アクティビティ
タスク名      ステップ                            主担当       副担当
機能要求の     ユースケースの詳細化                      BA        AA, SH
詳細化        (反復毎に各ユースケースに対して)
          ユースケースのデータフィールドの詳細化
          システム全体に関わる機能要求の詳細化
          機能要求シナリオの詳細化
非機能要求の    非機能要求の詳細化                       BA        AA, IA,
詳細化        (反復毎に各非機能要求に対して)                         SH
          非機能要求シナリオの詳細化
ソフトウェア    ソフトウェアアーキテクチャ文書の更新              LA
アーキテクチャ
文書の更新
ステークホルダ   ベースラインとなるワークプロダクト               BA, LA,   AA, IA,
との要求確認    ワークプロダクトの整理                     SH        DA
          ワークプロダクトのレビュー


                 Developers Summit 2011
アーキテクチャ作成アクティビティ
(論理・物理)
アーキテクチャ             アーキテクチャ概要                     アーキテクチャ上の判断
アセットの調査                の定義                           の文書化




    機能要素の概要記述   配置要素の概要記述

                                 アーキテクチャ    アーキテクチャ
                                   の検証       構想実証
    機能要素の詳細化    配置要素の詳細化                      の構築

関係するロール(役割)
 SH:ステークホールダ
 PM:プロジェクトマネージャ
 BA:ビジネスアナリスト       アーキテクチャの            ソフトウェア   ステークホールダ
 LA:リードアーキテクト        妥当性確認             アーキテクチャ    との要求確認
 AA:アプリ・アーキテクト                          文書の更新
 IA:インフラ・アーキテクト
 DA:データ・アーキテクト     Developers Summit 2011
アーキテクチャ作成アクティビティ
タスク名          ステップ                       主担当   副担当
アーキテクチャアセット   アーキテクチャアセットの調査             LA    AA, IA,
の調査                                            DA
アーキテクチャ概要     アーキテクチャ概要の定義               LA    AA, IA,
の定義                                            DA
アーキテクチャ上の判断 課題または関心事の捕捉、収集               LA    AA, IA,
の文書化        アセットの選択肢                           DA
            望ましい選択肢
            判断の文書化
機能要素の概要記述     サブシステムの特定                  AA    DA,
              コンポーネントの特定                       IA
配置要素の概要記述     ロケーションの特定                  IA    AA,
              ノードの特定                           DA




                Developers Summit 2011
アーキテクチャ作成アクティビティ
タスク名         ステップ                       主担当   副担当
アーキテクチャの検証   検証の計画化                     LA    AA,
             キックオフミーティングの開催                   DA,
             検証作業の実施                          IA
             検証確認ミーティングの実施
             再検証作業の実施
             フォローアップ作業の実施
アーキテクチャ構想実証 アーキテクチャ構想実証の作成              LA    AA,
の構築         発見および知見の文書化                       DA, IA
機能要素の詳細化     コンポーネントインターフェースの定義         AA    DA,
             オペレーションおよびオペレーションシ               IA
             グネチャの定義
             コンポーネント間のコントラクトの定義
配置要素の詳細化     コンポーネントのノードへの割当て           IA    AA,
             ノード間のコネクション定義                    DA
             ロケーション間のコネクション定義


               Developers Summit 2011
アーキテクチャ作成アクティビティ
タスク名          ステップ                       主担当      副担当
アーキテクチャの妥当性 妥当性確認の計画化                    LA       AA,
確認          アーキテクチャのレビュー                          DA,
            発見および知見の文書化                           IA,
            リスクの評価と提言                             PM

ソフトウェアアーキテク   ソフトウェアアーキテクチャ文書の更新 LA
チャ文書の更新
ステークホルダとのアー   ベースラインとなるワークプロダクト          LA, SH   AA,
キテクチャレビュー     ワークプロダクトの整理                         DA,
              ワークプロダクトのレビュー                       IA




                Developers Summit 2011
YouTour




        代表的ワークプロダクト
        (要求定義アクティビティ)
役割               開発   主要な責任                                                  カテゴリ        要求             説明
                チーム
                                                                             ユーザビリティ     アクセサビリティ       当社組織標準に従って、視覚、聴覚、もしくは、認識障害
ア プ リ ケ ー シ ョ ン
                外部    システム開発を委託する(資金を供給する)                                                              のある方を支援する。
オーナー
                                                                             リライアビリティ    可用性            ツアー予約のような安全なアクセスが必要とする機能を
ビジネス管理者         外部    実稼働システムのビジネス関連要素を管理する                                                             99.9%提供する。システムはツアー参照のようなほかの
構成管理者         内部      構成管理レポジトリとそれに属する要素の構造を定義する                                                        すべての機能を99%提供する。バックアップや保守作業
                                                                                                        はシステムの停止を必要としない。
開発者           内部      詳細設計およびシステムの実装を実行する
                                                                             パフォーマンス     応答時間           10秒未満でツアー予約確認を実施する
保守要員          外部      実稼働後のシステムに対する拡張・保守を管理する                                サポータビリティ    スケーラビリティ       10万登録ユーザと5千人の同時ユーザを支援する
                      計画、要員、監視、および、リスク管理の面から開発プロ                             サポータビリティ    テスト容易性         すべてのトランザクションとそのペイロードを確認するた
プロジェクト管理者     内部
                      ジェクトの実行を管理する                                                                      めに、どんなトランザクションの内容もログに記録すること
                      システムの開発もしくは実行に必要とされるソフトウェアも                                                       が出来る。
サプライヤ         外部
                      しくはハードウェア要素を提供する                                       ビジネス制約      スケジュール         6ヶ月未満でリリースされる。
サポート要員        外部      システムサポートおよび診断機能の実行を提供する                                アーキテクチャ制約   コミュニケーション      相互運用のため業界標準のWebプロトコルを使用する。
システム管理者       外部      システムの実稼働を管理運用する                                        アーキテクチャ制約   レガシー統合         顧客情報保存のため既存のCRMシステムを利用する。
                      目的に合った機能・品質を確認するためにシステムをテス
テスタ           内部

                                                      機能要求
                      トする                                                    開発制約        プ ラ ッ ト フ ォ ー ム Internetデバイス(WebブラウザやPDAなど)を介して利
                                                                                         サポート            用できる
ユーザ           外部      システムのビジネス機能の使用する
                                                                             開発制約        標準コンプライアンス 当社開発標準に従って開発される。


      ステークホールダ一覧                                    (ユースケース図)                                  非機能要求

                                                                             テーマ         説明
                                                                             課題          YourTourは,定期的に更新する必要のある少数のビジネスルール(おそら
                                                                                         く50未満)を使用する.その目的は,これらのルールを開発者ではなくビジ
                                                                                         ネスユーザが更新できるようにすることである.ルールは,ある種の条件の
                                                                                         に使われる.
                                                                             アーキテクチャ上 パッケージソリューション又はコードに埋め込まれたルールを使用せずに,
                                                                             の判断      自前のルールエンジンコンポーネントを開発する.

                                                                             仮定          ビジネスルールの数を比較的少数(50未満)に制限し,比較的低頻度で(年
                                                                                         2回未満)変更する.

                                                                             候補案         オプション1:コードの中にルールを埋め込む.
                                                                                         オプション2:自前のルールエンジンコンポーネントを開発する.
                                                                                         オプション3:ルールエンジンパッケージを購入する.
                                                                             選択された案      オプション2
                                                                             正当とする理由     ルールをコード中に埋め込むのは,ソフトウェアエンジニアリングの関心事
                                                                                         の分離原則に反し,ルールの変更を困難にする悪いプラクティスである.
                                                                                         ルールエンジンンパッケージを購入するのは,管理すべきルールの数が少
                                                                                         ないことやルール変更の頻度が低いことを考えるとコスト効率が良くない.




     システムコンテクスト図                                    アクターとロケーション                     アーキテクチャ上の判断
                                                    Developers Summit 2011
YouTour




                     代表的ワークプロダクト
                     (アーキテクチャ作成アクティビティ(論理・物理))
                                  【 機能要素 】                                                                                                                                                                                                   【 配置要素 】
                                                                                                                                                        [T]                           [ R/W ]            [R]                                               <<Location>>
                                                                                                                                                       セッション                           ツアー              ルール                                                     本社
                                                                                                                                        .
                                                                                                                                      ツアー主催者            カート                             予約
                                                                                                                                                                                                                      CRMシステム
                      ツアー予約者                                                                                                                                                                                                                      コンテンツ                   セキュリティ
                                                       決済エンジン                  予約システム                                                                プレゼンテーション ツアープロセス                 ツアー         アプリケーション
                                                                                                                                                                                                                                                  管理                      サーバー
                                                                                                                                                        統合       制御                   サービス            統合
                                                                                                                                                                                                                      決済エンジン                      サーバー
                      <<Boundary>>                     <<Boundary>>            <<Boundary>>                                             .
                                                                                                                                       顧客                                                                             決済エンジン
                      Tour Booker                      Paym’t Engine           Reservat’n Sys.
                      Boundary                         Boundary                Boundary
                                                                                                                                                                                                                      予約システム
                                                                                                                                                               コンテンツ            セキュリティ
                                                                                                                                                                管理               サービス
                                                                                                                                                                                                                                                  ツアー                     統合
                                                                                                                                      販売担当者                                                                           予約システム
                                                       <<Control>>                                                                                                                                                                                予約                      サーバー
                                                 < Book Tour                                                                                                                                                                                      サーバー
                                                       Controller
                                                                                                                                                           [ R/W ]    [ R/W ]    [ R/W ]        [ T ] : 一時データ
                                                                                                                                                          コンテンツ         Web     ユーザー            [ R ] : 読取専用データ
                                   <<Entity>>                          <<Entity>>                                                                                     ページ       オペレータ           [ R/W ] : 読書データ
                                   Tour Manager                        Tour Booking                                                                                                                                                                                       CRM
                                                                       Manager                                                                                                                                                                                            サーバー


                                                                                                                                                     アーキテクチャ概要
           ユースケースから導出
           されたコンポーネント                                                                                                                                                                                                           本社ロケーション上のノード
                                                                                                                                             外部ネットワーク          非武装地帯                       内部ネットワーク



                                                                                                                                               .

                                                       <<Location>>                                                                         ツアー主催者                                                                    CRMシステム
                                                           本社
                                                                                                                                                         F/W          Web       F/W             ツアー予約           統合                                        <<Location>>
      Contents                                 コンテンツ            セキュリティ
                        <<Deploy>>                                          <<Deploy>>           Security                                                            サーバー                       サーバー           サーバー                                          本社
<A>
      Management                               管理               サーバー                       <A>
                                                                                                 Components
                                               サーバー                                                                                                                                                                   決済エンジン
      Components                                                                                                                               .
                                                                                                                                             顧客                                                                        決済エンジン           管理者クライアント                                ディスクアレイ
                                               ツアー              統合                                                                                                                                                                     型式 / モデル
                                                                            <<Deploy>>           Integration                                                                                                                                                                     型式 / モデル
                                               予約               サーバー                                                                                                                                                  予約システム
                                                                                           <A>
                                                                                                 Components                                                                                                                            メモリ :                                     メモリ :
                                               サーバー                                                                                                                                   コンテンツ        ディレクトリ                              製造者 :                                     製造者 :
                                                                                                                                                                                       管理          セキュリティ
                                                                                                                    <<Boundary>>            販売担当者                                                                      予約システム
                                                                CRM                                  <<Manifest>>                                                                     サーバー          サーバー
                                                                                                                    CRM System
                                                                サーバー                                                Boundary
                                                                                                                    <<Boundary>>                                                                                                  Webサーバー             ツアー予約サーバー                  データベースサーバー
                                                                                                     <<Manifest>>
                                                                                                                    Paym’t Engine
                                                                                                                                                                                                                                 型式 / モデル            型式 / モデル                 型式 / モデル
             <<Deploy>>           <<Deploy>>           <<Deploy>>                                                   Boundary                                                                F/W : ファイアウォール                       メモリ :                                        メモリ :
                                                                                                                                                                                                                                                     メモリ :
      Tour Booking              Tour Booking           Tour Booking                                                 <<Boundary>>                                                                                                 製造者 :
                                                                                                     <<Manifest>>                                                                                                                                    製造者 :                    製造者 :
<A>
      UI Components       <A>
                                Control          <A>
                                                       Entity                                                       Reservat’n Sys.
                                Components             Components


                                                                                                                                               物理アーキテクチャ概要
                                                                                                                    Boundary
                                                             <<Manifest>>   <<Entity>>
  <<Manifest>>              <<Manifest>>
                                                                            Tour Booking
                                                             <<Manifest>>   Manager                  <<Entity>>
      <<Boundary>>              <<Control>>                                                                                                                                                                                       コンテンツ管理サーバー         セキュリティサーバー                 統合サーバー
                          <                                                                          Tour Rules
      Tour Booker               Book Tour
      Boundary                                                              <<Entity>>                                                                                                                                           型式 / モデル            型式 / モデル                 型式 / モデル
                                Controller                   <<Manifest>>
                                                                            Tour Manager                                                                                                                                         メモリ :               メモリ :                    メモリ :
                                                                                                     <<Entity>>                                                                                                                  製造者 :               製造者 :                    製造者 :
                                                             <<Manifest>>
                                                                                                     Transaction
                                                                                                     Log




          本社ロケーションノード上に                                                                                                                                                                                                               本社ロケーションの
          配置されたコンポーネント                                                                                                                             Developers Summit 2011                                                              物理配置モデル
アーキテクト

                 -実行する
  アーキテクト                               アーキテクティング



       -作成する                        -結果を生む
                アーキテクチャ



 アーキテクトはアーキテクティング(アーキテクチャを構築する活動)
 を実践しアーキテクチャを構築するプロフェッショナル



           Developers Summit 2011
職種・専門分野・役割
   職種( Profession : 専門的職業)
        建築、工学、数学、自然科学、コンピュータ、生命科学、社会科学、医学、保健、
         教育、博物館学、図書館学、法学、神学、著述、芸術、音楽、芸能、ファッション・
         モデル、企業経営者および管理者
          (アメリカ移民局 H-1Bビザ(専門職用)で定義された職業分野)

   専門分野( Discipline : 専門性を発揮する得意な分野)
        専門性(スキル・経験・レベル)に関する裏づけがある
        専門性に関する定義が必要 (例)
          【医学】外科、内科、眼科、循環器科、皮膚科、歯科...
          【建築】都市計画、建築計画、建築構造、建築材料・施工...

   役割( Role : 職務遂行上の立場)
        どのような立場で職務を遂行するか?
        専門性(スキル・経験・レベル)を活かせることが望ましい (例)
          【ロボット開発】プロジェクトマネジャ、オーガニック系(解剖学医、整形外科医)、
          メカニック系(機械工学技士)、エレクトロニクス系(電子工学技士)...
                         Developers Summit 2011
ITスキル標準 第3版
( ITSS : IT Skill Standards V3 )
職種          アーキテクト




専門分野




             ITスキル標準V3ダウンロード:
             http://www.ipa.go.jp/jinzai/itss/download_V3_2008.html
               Developers Summit 2011
まとめ
   アーキテクチャとは?
   アーキテクチャは誰によって使われ何故有益なのか?
   アーキテクチャはどの様に表現されるか?
   アーキテクトはどの様にアーキテクチャを描き・洗練するのか?
   ソフトウェア開発プロジェクトにおけるアーキテクトの役割は?




              Developers Summit 2011
1 of 39

More Related Content

What's hot(20)

本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki685.9K views
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda7.4K views
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク3.3K views
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki71.4K views
MetaspaceMetaspace
Metaspace
Yasumasa Suenaga24.9K views
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu13.1K views
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu61.1K views

Similar to 【18-C-3】システムアーキテクチャ構築の実践手法(20)

Qs info002Qs info002
Qs info002
Kei Nakahara692 views
TERAS ConferenceTERAS Conference
TERAS Conference
Keiju Anada1.8K views
システム運用 (インフラ編)システム運用 (インフラ編)
システム運用 (インフラ編)
Takashi Abe3.2K views
Qs info 002Qs info 002
Qs info 002
Kei Nakahara526 views
Qs information20110615Qs information20110615
Qs information20110615
Kei Nakahara416 views
Information20120312Information20120312
Information20120312
b-slash629 views
User Centered AgileUser Centered Agile
User Centered Agile
Kazumichi (Mario) Sakata1.6K views
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
オラクルエンジニア通信298 views

More from Developers Summit(20)

【18-C-3】システムアーキテクチャ構築の実践手法

  • 1. システムアーキテクチャ構築の 実践手法 ( ISBN978-4-7981-2164-2 ) 18-C-3 吉田幸彦 日本アイ・ビー・エム株式会社 アプリケーション開発事業 エグゼクティブITアーキテクト Developers Summit 2011
  • 2. 目 次  アーキテクチャとは?  アーキテクチャは誰によって使われ何故有益なのか?  アーキテクチャはどの様に表現されるか?  アーキテクトはどの様にアーキテクチャを描き・洗練するのか?  ソフトウェア開発プロジェクトにおけるアーキテクトの役割は? Developers Summit 2011
  • 3. アーキテクト・アーキテクチャ・ アーキテクティング -実行する アーキテクト アーキテクティング -作成する -結果を生む アーキテクチャ アーキテクトはアーキテクティング(アーキテクチャを構築する活動) を実践しアーキテクチャを構築するプロフェッショナル Developers Summit 2011
  • 4. アーキテクチャとは アーキテクチャ: コンポーネント、あるいはコンポーネント相互間や コンポーネントと環境との関係で具体化されるシステムの基本的な構造と そのデザイン・進化を導く方針 (IEEE Std 1471-2000) 「システムの構造(構成要素、配置)や振る舞い」 「システムの設計・開発の方針」 「将来、どの様にシステムを進化させるか」 を決定するのがアーキテクト Developers Summit 2011
  • 5. アーキテクチャとは構造である  構造 = 構成要素(コンポーネント)と、その間の動的、静的な関係を定義したもの  構成要素はインターフェースを持っている  構成要素は入れ子の関係  範囲(システム・コンテクスト)が重要 マトリョーシカ (入れ子構造の ロシア人形) 写真 システム・コンテクスト コンポーネント コンポー コンポー ネント 何を対象とした構造で コンポーネント 関係 ネント あるかはコンテクストに より決まる !! Developers Summit 2011
  • 6. システム構造と構成要素と責務 (1000) (2000) ユーザー ユーザー (2000) システム (500) クライアント・ 責務 S/W クライアント・ S/W ノード ノード H/W S/W 責務 責務 責務 H/W 責務 (60) (20) S/W 責務 H/W 責務 拠点サーバー・ノード (6) (4) 責務 S/W 責務 H/W (1) 全社サーバー・ノード Developers Summit 2011
  • 7. アーキテクチャの特徴 • 見えない構造の可視化であり、その解釈は一義的でなければならない • 設計・実装上の判断のよりどころとなる(制約ととらえるのでなく指針) • アーキテクチャは設計され、実装され、アセット化され再利用される • システム(ソフトウェア)構造の判断は開発の初期になされる • 開発対象の特定のため • 役割や作業の分担のため アーキテクチャ上の判断 • その時点では実際のシステム(ソフトウェア)は存在しない • 十分な情報が揃った上で検討がなされることは少ない • 厳密な意味での実証的な確認がとれない アーキテクチャの評価 • 構成要素の設計・実装を並行して進めることが可能となる • システムの整合性、長期ライフ、低コスト化の源泉となる • 共通言語としてコミュニケーション促進をはかることができる Developers Summit 2011
  • 8. アーキテクチャ上の判断 必ずしも十分な情報が得られない段階において,不確定要素を考慮し,起こ り得る開発上のリスクを踏まえて,システム(ソフトウェア)設計の方向付 けを行う必要がある (アーキテクチャ上の判断:Architectural Decision) 判らないことに対する 判ることに基いた リスク判断 アーキテクチャ上の判断 リスク 評価 評価 必要な情報 評価 実現可能性はより必要な情報が揃うにつれて,設計の詳細化に応じて, 決められたチェックポイントで再評価する Developers Summit 2011
  • 9. ステークホールダ アーキテクチャは誰によって使われ何故有益なのか? ステークホールダ: システムに関して興味または関心事を有する個人、チーム、組織 (IEEE Std 1471-2000) 「課題をそのシステムによって解決したい」 要求者 「開発または運用の費用を負担する」 取得者(オーナー) 「解決・実現方法を考える」 コンサルタント / アーキテクト ビジネスアナリストなど 「そのための情報システムの構造を考える」 アーキテクト 「その情報システムを開発する」 開発者 「システム運用を任される」 運用者 アーキテクトは技術上のコミュニケーションにも関わる Developers Summit 2011
  • 10. アーキテクチャの表現 対象をどう表現すれば、関係者が、その対象(本質や価値)を認識し、その構 造を一義的に解釈することができるか?  僅か一部分を取り上げたところで、その対象の全てが分かる訳ではない  また、一枚の絵図で対象のすべてを表すことはできないであろう  そこから対象に対する同一の理解に達することは不可能に近い (?)  対象の本質を表現し理解するためには複数の適切な視点(ビュー)にもと づく表現が必要  ステークホールダの関心事に応じた視点の採用が必要 Developers Summit 2011
  • 11. アーキテクチャの表現.. アーキテクチャをどう表現すれば、ステークホールダがシステムの構造を一義的に解釈で き、そのシステムおよび実現方法の価値を認識することができるか? ビュー: 関連する一組の関心事の視点からシステム全体を表現したもの (IEEE 1471-2000) 補足:一人以上のステークホールダが抱いている一つまたはそれ以 上の関心事にアーキテクチャがどう対応するかを示すアーキテクチャ の一つ以上の構造的側面を表現したものである ビューポイント: ビューを作成し、使用するための約束事の詳細仕様である。また、 ビューの目的や利用者を明確にして、それぞれのビューを作成するた めのパターンもしくはテンプレートであり、それらを作成し分析するた めのテクニックである (IEEE 1471-2000) Developers Summit 2011
  • 12. ビュー / ダイアグラム / モデル ステークホールダ ステークホールダ グループ A グループ B 機能ビュー 配置ビュー ダイアグラム ダイアグラム ダイアグラム 機能モデル 配置モデル Developers Summit 2011
  • 13. 配置ビューポイント (参考) 説明 このビューポイントは、システムの配置を支援し、ロケーション、ノード、デ バイス、および、それらの間のコネクションなどのアーキテクチャ要素に関 係する ステークホルダの関心事 システム配置、ハードウェアノード(および、デバイス)仕様、および、ネット ワーク仕様 ステークホルダ 構成管理者、開発者、保守要員、プロジェクトマネージャ、サプライヤ、サ ポート要員、システム管理者、および、テスター ワークプロダクト アーキテクチャ上の判断、アーキテクチャ概要、および、配置モデル チェックリスト 配置要素は関連する規定された機能および非機能(品質および制約)要 求を支援するか?特別な制約として、既存環境からの移行、コスト、実装 スケジュール(必要なハードウェア取得のためのリードタイムを含む)、お よび、データセンター内の空きスペースのような物理的制約が含まれる。 配置要素は要求に対して追跡可能性が保持されているか? 機能ビュー におけるすべての構成要素は配置ビューのノードに対して配置している か? ノードとロケーション間のコネクションは機能要素間で相互作用を支 援するために存在するか? 物理的配置要素はノードおよびデバイスの数、それらの詳細仕様に関し て十分詳細に定義されているか? すべてのオペレーティングシステムの ような第三者ソフトウェア要求は、ソフトウェアライセンスを必要とするラン タイム要素とともに特定されているか? Developers Summit 2011
  • 14. ステークホールダ.. 役割 開発 主要な責任 チーム ア プ リ ケ ー シ ョ ン 外部 システム開発を委託する(資金を供給する) オーナー ビジネス管理者 外部 実稼働システムのビジネス関連要素を管理する 構成管理者 内部 構成管理レポジトリとそれに属する要素の構造を定義する 開発者 内部 詳細設計およびシステムの実装を実行する 保守要員 外部 実稼働後のシステムに対する拡張・保守を管理する 計画、要員、監視、および、リスク管理の面から開発プロ プロジェクト管理者 内部 ジェクトの実行を管理する システムの開発もしくは実行に必要とされるソフトウェアも サプライヤ 外部 しくはハードウェア要素を提供する サポート要員 外部 システムサポートおよび診断機能の実行を提供する システム管理者 外部 システムの実稼働を管理運用する 目的に合った機能・品質を確認するためにシステムをテス テスタ 内部 トする ユーザ 外部 システムのビジネス機能の使用する アーキテクト : すべてのビューポイントにおいてステークホールダとみなされる Developers Summit 2011
  • 15. 基本および横断的ビューポイント ステークホールダ グループ A グループ B グループ C グループ D 要求 機能 配置 妥当性確認 ビューポイント ビューポイント ビューポイント ビューポイント パフォーマンス 配置コンポーネント コンポーネント 性能要求 ハードウェア仕様 性能確認要素 ビューポイント 結合 分散トポロジー グループ E セキュリティ セキュリティ ビューポイント セキュリティ要求 ポリシー セキュリティ ファイアウォール ユーザー認証 確認要素 グループ F ユーザー権限 Developers Summit 2011
  • 16. ビューポイントと成果物 要求 機能 配置 妥当性確認 ビューポイント ビューポイント ビューポイント ビューポイント ビジネスエンティ アーキテクチャ アーキテクチャ アーキテクチャ ティ・モデル 上の決定 上の決定 検証 パフォーマンス ビジネスプロセ アーキテクチャ アーキテクチャ アーキテクチャ ビューポイント ス・モデル 概要 概要 構想実証 ビジネスルール データモデル 配置モデル RAIDログ 変更要求 機能モデル レビュー記録 EA基本原則 セキュリティ 既存IT環境 ビューポイント 機能要求 用語集 非機能要求 優先順位付要求 リスト : ステークホール : ダ要求 EA ( Enterprise Architecture ) : システムコンテク RAID ( Risk, Assumption, Issue, Dependency ) : スト ビジュン Developers Summit 2011
  • 17. アーキテクチャ記述  対象システムの特徴により重点は異なる  システムの運用や管理が重要 ?  可用性が重要 ?  パフォーマンスが重要 ?  セキュリティが重要 ?  メリハリをつけたアプローチが重要  既知のベストプラクティスの適用(再利用による促進)  未経験の領域へ挑戦(専門家の組織化)  先進技術の適用(構想実証による検証)  適切なビューとワークプロダクトの採用  要求と制約を満たし運用が可能なアーキテクチャであることを確認  ステークホールダーの承認を得るための客観的根拠の提示  詳細設計と実装の指針となる Developers Summit 2011
  • 18. 主要ワークプロダクトと責任ロール ビジネス ビジネスエンテ ビジネスプロセ ビジネスルー 機能要求 非機能要求 アナリスト ィティモデル スモデル ル 優先順位付 ステークホール システムコンテ ビジョン 用語集 要求一覧 ダ要求 クスト リード アーキテクチャ アーキテクチャ アーキテクチャ アーキテクチャ ソフトウェア アーキテクト 評価 上の判断 概要 構想実証 アーキテクチャ 文書 機能モデル 配置モデル データモデル 変更要求 RAIDログ レビュー記録 アプリケーション インフラ データ プロジェクト アーキテクト アーキテクト アーキテクト マネージャ Developers Summit 2011
  • 19. 関連ロール プロジェクト マネージャ リード アーキテクト ビジネス プロジェクト プロジェクト アナリスト マネージャ アプリ マネージャ アーキテクト プロジェクト 開発者 プロジェクト インフラ マネージャ マネージャ アーキテクト プロジェクト データ テスター プロジェクト マネージャ アーキテクト マネージャ Developers Summit 2011
  • 20. アーキテクチャ文書 ステークホールダ 表紙 7.妥当性確認ビュー 変更履歴 8.アプリケーションビュー 目次、図表リスト、参照文献 9.インフラストラクチャビュー 1.アーキテクチャ文書の目的 10.システム管理ビュー 2.アーキテクチャの概要 11.可用性ビュー 3.アーキテクチャ上の判断 12.パフォーマンスビュー 4.要求ビュー 13.セキュリティビュー 5.機能ビュー 付録 6.配置ビュー 要求 機能 配置 妥当性確認 ビューポイント ビューポイント ビューポイント ビューポイント アプリケーション ビジネスエンティ アーキテクチャ上 アーキテクチャ上 アーキテクチャ ビューポイント ティ・モデル の決定 の決定 検証 ビジネスプロセス・ アーキテクチャ アーキテクチャ アーキテクチャ モデル 概要 概要 構想実証 インフラストラクチャ ビジネス・ルール データモデル 配置モデル RAIDログ ビューポイント 変更要求 機能モデル レビュー記録 EA基本原則 システム管理 既存IT環境 ビューポイント 機能要求 用語集 可用性 非機能要求 ビューポイント 優先順位付要求 リスト パフォーマンス ステークホールダ ビューポイント 要求 システムコンテク セキュリティ スト ビューポイント ビジュン Developers Summit 2011
  • 21. アーキテクチャ文書 (例) P241 1. システム化の基本方針 7. システム管理 2. システム概要 7.1.システム管理シナリオ 2.1.アーキテクチャの概要 7.2.システム管理モデル 2.2.システムの特徴 8.可用性と障害対策 3.アーキテクチャ上の判断 8.1.可用性シナリオ 3.1.課題と関心事 8.2.可用性モデル 3.2.選択肢と判断 9.パフォーマンス 4.システム基本要求 9.1.パフォーマンスシナリオ 4.1.機能要求 9.2.パフォーマンスモデル 4.2.非機能要求 10.セキュリティ 4.3.将来要求 10.1.脅威と対応シナリオ 5.機能的側面 10.2.セキュリティモデル 5.1.機能モデル 11.妥当性確認 5.2.データモデル 11.1.アーキテクチャ評価 6.実行基盤的側面 11.3.リスクと今後の対応 6.1.ロケーションモデル 6.2.システム構成要素 6.3.論理構成図 6.3.物理構成図 Developers Summit 2011
  • 22. アーキテクティング -実行する アーキテクト アーキテクティング -作成する -結果を生む アーキテクチャ アーキテクトはアーキテクティング(アーキテクチャを構築する活動) を実践しアーキテクチャを構築するプロフェッショナル Developers Summit 2011
  • 23. 手法の概念とその関係 分割する 考慮する プロセス フェーズ 反復 アクティビティ 参照する 実行される タスク ロール メソッド コンテンツ 利用・作成 責任を負う する ワークプロダクト Developers Summit 2011
  • 24. タスク記述例 (共通ボキャブラリの捕捉) タスク名 共通ボキャブラリの捕捉 目的 このタスクの目的は、ステークホールダーによって使われる共通ビジネ スおよび技術用語が理解され文書化されるか確認することである。 ロール ビジネスアナリスト(主)、ステークホールダ(主)、アプリ・アーキテクト (副)、インフラ・アーキテクト(副) 入力 ビジネスエンティティモデル(オプション)、ビジネスプロセスモデル(オプ ション)、EA基本原則(オプション)、ステークホールダの要望、ビジョン 出力 用語集 ステップ 共通ボキャブラリの特定 アーキテクト 使用する技術用語の定義を支援する のロール Developers Summit 2011
  • 25. タスク記述例 (非機能要求の概要記述) タスク名 非機能要求の概要記述 目的 このタスクの目的は、非機能要求の概要を記述することである。 ロール ビジネスアナリスト(主)、ステークホールダ(副)、アプリ・アーキテクト (副)、インフラ・アーキテクト(副) 入力 ビジネスルール(オプション)、EA基本原則(オプション)、ステークホー ルダの要望、システムコンテクスト、ビジョン 出力 非機能要求 ステップ 非機能要求を特定する 非機能要求の概要を記述する アーキテクト 適切な非機能要求が検討されていることを確認する のロール 非機能要求が適切な作法で表現されていることを確認する Developers Summit 2011
  • 26. アーキテクチャ構築の概要 要求 アーキテクチャ 開発 要求の定義 論理アーキテクチャ 論理詳細設計 の作成 の作成 物理アーキテクチャ 物理詳細設計 の作成 の作成 Developers Summit 2011
  • 27. 要求定義アクティビティ ステークホールダ 共通ボキャブラリ システムコンテクスト 要望の収集 の捕捉 の定義 機能要求の概要記述 非機能要求の概要記述 関係するロール(役割) SH:ステークホールダ 要求の優先順位付け PM:プロジェクトマネージャ BA:ビジネスアナリスト LA:リードアーキテクト AA:アプリ・アーキテクト 機能要求の詳細化 非機能要求の詳細化 IA:インフラ・アーキテクト DA:データ・アーキテクト ソフトウェア ステークホールダ アーキテクチャ文書 との要求を確認 の更新 Developers Summit 2011
  • 28. 要求定義アクティビティ タスク名 ステップ 主担当 副担当 ステークホルダ ステークホルダの特定 BA, SH AA,IA 要望の収集 ステークホルダ要望の収集 ステークホルダ要望の優先順位付け 共通ボキャブラ 共通ボキャブラリの特定 BA, SH AA, IA リの捕捉 システムコンテ アクターの特定 BA LA, SH クストの定義 アクターのいるロケーションの特定 データフローの特定 機能要求の概 機能要求の特定 BA AA, SH 要記述 機能要求の概要 非機能要求の 非機能要求の特定 BA AA, IA, 概要記述 非機能要求の概要記述 SH 要求の優先順 要求の優先順位付け BA, LA PM, SH 位付け Developers Summit 2011
  • 29. 要求定義アクティビティ タスク名 ステップ 主担当 副担当 機能要求の ユースケースの詳細化 BA AA, SH 詳細化 (反復毎に各ユースケースに対して) ユースケースのデータフィールドの詳細化 システム全体に関わる機能要求の詳細化 機能要求シナリオの詳細化 非機能要求の 非機能要求の詳細化 BA AA, IA, 詳細化 (反復毎に各非機能要求に対して) SH 非機能要求シナリオの詳細化 ソフトウェア ソフトウェアアーキテクチャ文書の更新 LA アーキテクチャ 文書の更新 ステークホルダ ベースラインとなるワークプロダクト BA, LA, AA, IA, との要求確認 ワークプロダクトの整理 SH DA ワークプロダクトのレビュー Developers Summit 2011
  • 30. アーキテクチャ作成アクティビティ (論理・物理) アーキテクチャ アーキテクチャ概要 アーキテクチャ上の判断 アセットの調査 の定義 の文書化 機能要素の概要記述 配置要素の概要記述 アーキテクチャ アーキテクチャ の検証 構想実証 機能要素の詳細化 配置要素の詳細化 の構築 関係するロール(役割) SH:ステークホールダ PM:プロジェクトマネージャ BA:ビジネスアナリスト アーキテクチャの ソフトウェア ステークホールダ LA:リードアーキテクト 妥当性確認 アーキテクチャ との要求確認 AA:アプリ・アーキテクト 文書の更新 IA:インフラ・アーキテクト DA:データ・アーキテクト Developers Summit 2011
  • 31. アーキテクチャ作成アクティビティ タスク名 ステップ 主担当 副担当 アーキテクチャアセット アーキテクチャアセットの調査 LA AA, IA, の調査 DA アーキテクチャ概要 アーキテクチャ概要の定義 LA AA, IA, の定義 DA アーキテクチャ上の判断 課題または関心事の捕捉、収集 LA AA, IA, の文書化 アセットの選択肢 DA 望ましい選択肢 判断の文書化 機能要素の概要記述 サブシステムの特定 AA DA, コンポーネントの特定 IA 配置要素の概要記述 ロケーションの特定 IA AA, ノードの特定 DA Developers Summit 2011
  • 32. アーキテクチャ作成アクティビティ タスク名 ステップ 主担当 副担当 アーキテクチャの検証 検証の計画化 LA AA, キックオフミーティングの開催 DA, 検証作業の実施 IA 検証確認ミーティングの実施 再検証作業の実施 フォローアップ作業の実施 アーキテクチャ構想実証 アーキテクチャ構想実証の作成 LA AA, の構築 発見および知見の文書化 DA, IA 機能要素の詳細化 コンポーネントインターフェースの定義 AA DA, オペレーションおよびオペレーションシ IA グネチャの定義 コンポーネント間のコントラクトの定義 配置要素の詳細化 コンポーネントのノードへの割当て IA AA, ノード間のコネクション定義 DA ロケーション間のコネクション定義 Developers Summit 2011
  • 33. アーキテクチャ作成アクティビティ タスク名 ステップ 主担当 副担当 アーキテクチャの妥当性 妥当性確認の計画化 LA AA, 確認 アーキテクチャのレビュー DA, 発見および知見の文書化 IA, リスクの評価と提言 PM ソフトウェアアーキテク ソフトウェアアーキテクチャ文書の更新 LA チャ文書の更新 ステークホルダとのアー ベースラインとなるワークプロダクト LA, SH AA, キテクチャレビュー ワークプロダクトの整理 DA, ワークプロダクトのレビュー IA Developers Summit 2011
  • 34. YouTour 代表的ワークプロダクト (要求定義アクティビティ) 役割 開発 主要な責任 カテゴリ 要求 説明 チーム ユーザビリティ アクセサビリティ 当社組織標準に従って、視覚、聴覚、もしくは、認識障害 ア プ リ ケ ー シ ョ ン 外部 システム開発を委託する(資金を供給する) のある方を支援する。 オーナー リライアビリティ 可用性 ツアー予約のような安全なアクセスが必要とする機能を ビジネス管理者 外部 実稼働システムのビジネス関連要素を管理する 99.9%提供する。システムはツアー参照のようなほかの 構成管理者 内部 構成管理レポジトリとそれに属する要素の構造を定義する すべての機能を99%提供する。バックアップや保守作業 はシステムの停止を必要としない。 開発者 内部 詳細設計およびシステムの実装を実行する パフォーマンス 応答時間 10秒未満でツアー予約確認を実施する 保守要員 外部 実稼働後のシステムに対する拡張・保守を管理する サポータビリティ スケーラビリティ 10万登録ユーザと5千人の同時ユーザを支援する 計画、要員、監視、および、リスク管理の面から開発プロ サポータビリティ テスト容易性 すべてのトランザクションとそのペイロードを確認するた プロジェクト管理者 内部 ジェクトの実行を管理する めに、どんなトランザクションの内容もログに記録すること システムの開発もしくは実行に必要とされるソフトウェアも が出来る。 サプライヤ 外部 しくはハードウェア要素を提供する ビジネス制約 スケジュール 6ヶ月未満でリリースされる。 サポート要員 外部 システムサポートおよび診断機能の実行を提供する アーキテクチャ制約 コミュニケーション 相互運用のため業界標準のWebプロトコルを使用する。 システム管理者 外部 システムの実稼働を管理運用する アーキテクチャ制約 レガシー統合 顧客情報保存のため既存のCRMシステムを利用する。 目的に合った機能・品質を確認するためにシステムをテス テスタ 内部 機能要求 トする 開発制約 プ ラ ッ ト フ ォ ー ム Internetデバイス(WebブラウザやPDAなど)を介して利 サポート 用できる ユーザ 外部 システムのビジネス機能の使用する 開発制約 標準コンプライアンス 当社開発標準に従って開発される。 ステークホールダ一覧 (ユースケース図) 非機能要求 テーマ 説明 課題 YourTourは,定期的に更新する必要のある少数のビジネスルール(おそら く50未満)を使用する.その目的は,これらのルールを開発者ではなくビジ ネスユーザが更新できるようにすることである.ルールは,ある種の条件の に使われる. アーキテクチャ上 パッケージソリューション又はコードに埋め込まれたルールを使用せずに, の判断 自前のルールエンジンコンポーネントを開発する. 仮定 ビジネスルールの数を比較的少数(50未満)に制限し,比較的低頻度で(年 2回未満)変更する. 候補案 オプション1:コードの中にルールを埋め込む. オプション2:自前のルールエンジンコンポーネントを開発する. オプション3:ルールエンジンパッケージを購入する. 選択された案 オプション2 正当とする理由 ルールをコード中に埋め込むのは,ソフトウェアエンジニアリングの関心事 の分離原則に反し,ルールの変更を困難にする悪いプラクティスである. ルールエンジンンパッケージを購入するのは,管理すべきルールの数が少 ないことやルール変更の頻度が低いことを考えるとコスト効率が良くない. システムコンテクスト図 アクターとロケーション アーキテクチャ上の判断 Developers Summit 2011
  • 35. YouTour 代表的ワークプロダクト (アーキテクチャ作成アクティビティ(論理・物理)) 【 機能要素 】 【 配置要素 】 [T] [ R/W ] [R] <<Location>> セッション ツアー ルール 本社 . ツアー主催者 カート 予約 CRMシステム ツアー予約者 コンテンツ セキュリティ 決済エンジン 予約システム プレゼンテーション ツアープロセス ツアー アプリケーション 管理 サーバー 統合 制御 サービス 統合 決済エンジン サーバー <<Boundary>> <<Boundary>> <<Boundary>> . 顧客 決済エンジン Tour Booker Paym’t Engine Reservat’n Sys. Boundary Boundary Boundary 予約システム コンテンツ セキュリティ 管理 サービス ツアー 統合 販売担当者 予約システム <<Control>> 予約 サーバー < Book Tour サーバー Controller [ R/W ] [ R/W ] [ R/W ] [ T ] : 一時データ コンテンツ Web ユーザー [ R ] : 読取専用データ <<Entity>> <<Entity>> ページ オペレータ [ R/W ] : 読書データ Tour Manager Tour Booking CRM Manager サーバー アーキテクチャ概要 ユースケースから導出 されたコンポーネント 本社ロケーション上のノード 外部ネットワーク 非武装地帯 内部ネットワーク . <<Location>> ツアー主催者 CRMシステム 本社 F/W Web F/W ツアー予約 統合 <<Location>> Contents コンテンツ セキュリティ <<Deploy>> <<Deploy>> Security サーバー サーバー サーバー 本社 <A> Management 管理 サーバー <A> Components サーバー 決済エンジン Components . 顧客 決済エンジン 管理者クライアント ディスクアレイ ツアー 統合 型式 / モデル <<Deploy>> Integration 型式 / モデル 予約 サーバー 予約システム <A> Components メモリ : メモリ : サーバー コンテンツ ディレクトリ 製造者 : 製造者 : 管理 セキュリティ <<Boundary>> 販売担当者 予約システム CRM <<Manifest>> サーバー サーバー CRM System サーバー Boundary <<Boundary>> Webサーバー ツアー予約サーバー データベースサーバー <<Manifest>> Paym’t Engine 型式 / モデル 型式 / モデル 型式 / モデル <<Deploy>> <<Deploy>> <<Deploy>> Boundary F/W : ファイアウォール メモリ : メモリ : メモリ : Tour Booking Tour Booking Tour Booking <<Boundary>> 製造者 : <<Manifest>> 製造者 : 製造者 : <A> UI Components <A> Control <A> Entity Reservat’n Sys. Components Components 物理アーキテクチャ概要 Boundary <<Manifest>> <<Entity>> <<Manifest>> <<Manifest>> Tour Booking <<Manifest>> Manager <<Entity>> <<Boundary>> <<Control>> コンテンツ管理サーバー セキュリティサーバー 統合サーバー < Tour Rules Tour Booker Book Tour Boundary <<Entity>> 型式 / モデル 型式 / モデル 型式 / モデル Controller <<Manifest>> Tour Manager メモリ : メモリ : メモリ : <<Entity>> 製造者 : 製造者 : 製造者 : <<Manifest>> Transaction Log 本社ロケーションノード上に 本社ロケーションの 配置されたコンポーネント Developers Summit 2011 物理配置モデル
  • 36. アーキテクト -実行する アーキテクト アーキテクティング -作成する -結果を生む アーキテクチャ アーキテクトはアーキテクティング(アーキテクチャを構築する活動) を実践しアーキテクチャを構築するプロフェッショナル Developers Summit 2011
  • 37. 職種・専門分野・役割  職種( Profession : 専門的職業)  建築、工学、数学、自然科学、コンピュータ、生命科学、社会科学、医学、保健、 教育、博物館学、図書館学、法学、神学、著述、芸術、音楽、芸能、ファッション・ モデル、企業経営者および管理者 (アメリカ移民局 H-1Bビザ(専門職用)で定義された職業分野)  専門分野( Discipline : 専門性を発揮する得意な分野)  専門性(スキル・経験・レベル)に関する裏づけがある  専門性に関する定義が必要 (例) 【医学】外科、内科、眼科、循環器科、皮膚科、歯科... 【建築】都市計画、建築計画、建築構造、建築材料・施工...  役割( Role : 職務遂行上の立場)  どのような立場で職務を遂行するか?  専門性(スキル・経験・レベル)を活かせることが望ましい (例) 【ロボット開発】プロジェクトマネジャ、オーガニック系(解剖学医、整形外科医)、 メカニック系(機械工学技士)、エレクトロニクス系(電子工学技士)... Developers Summit 2011
  • 38. ITスキル標準 第3版 ( ITSS : IT Skill Standards V3 ) 職種 アーキテクト 専門分野 ITスキル標準V3ダウンロード: http://www.ipa.go.jp/jinzai/itss/download_V3_2008.html Developers Summit 2011
  • 39. まとめ  アーキテクチャとは?  アーキテクチャは誰によって使われ何故有益なのか?  アーキテクチャはどの様に表現されるか?  アーキテクトはどの様にアーキテクチャを描き・洗練するのか?  ソフトウェア開発プロジェクトにおけるアーキテクトの役割は? Developers Summit 2011