Upload
akihiro-ehara
View
616
Download
0
Embed Size (px)
DESCRIPTION
アーキテクチャ設計編では、アプリケーション全体にわたる技術の選択や開発の方針を策定します。分析編で識別したエンティティやサービスを実際のプログラムに変換するための指針やコンポーネントを定義します
Citation preview
http://biki.jp.net/enterprisenet
エンタープライズ.NETアーキテクチャ設計編
システム全体構造の定義と技術選択
http://biki.jp.net/enterprisenet
アプリケーション設計で意識すべきポイント
アーキテクチャ設計では実際のアプリケーションの実装を視野に入れた指針。このため、実装上の制限を考慮した上で構造原理をパターン化し、どうリーズナブルにアプリケーションを構築するかを考えることが重要。
構造原理のパターン化
実装制限の考慮
リーズナブルな選択アプリケーションアーキテクチャ
アーキテクチャ設計
http://biki.jp.net/enterprisenet
アーキテクチャ設計
分析モデルから設計モデルへの変換の指針 アプリケーション・アーキテクチャは、どのように設計・実装する
かの指針であることから、分析(業務)モデルを設計・実装する際に利用されます
分析(業務)モデル
アプリケーションアーキテクチャ
設計モデル アプリケーション
設計 実装
http://biki.jp.net/enterprisenet
アーキテクチャ設計
アプリケーション全体にわたる技術の選択や開発の方針を策定
アーキテクチャ設計の主なタスク アーキテクチャ基本設計
アーキテクチャパターンの選定
処理パターンの類型化
コンポーネントの設計と配置
共通機能の抽出とアプリケーションブロック化
個別技術の検討
http://biki.jp.net/enterprisenet
アーキテクチャ基本設計
http://biki.jp.net/enterprisenet
アーキテクチャパターンの選定
アプリケーションのレイヤ構造および利用するコンポーネントタイプを決定します
http://biki.jp.net/enterprisenet
アーキテクチャパターンの選定
目的
アプリケーションのレイヤ構造および利用するコンポーネントタイプを決定します
タスク
レイヤ構造の分割
コンポーネントの分類
アウトプット
レイヤ・コンポーネントタイプの構造と説明
http://biki.jp.net/enterprisenet
レイヤ構造の分割
プレゼンテーションプレゼンテーション
ビジネスビジネス
データデータ
共通基盤
共通基盤
Data Sources
Services
ユーザー
Services
呼び出し
プレゼンテーションプレゼンテーション
ビジネスビジネス
データデータ
共通基盤
共通基盤
Data Sources
Services
ユーザー
Services
呼び出し
http://biki.jp.net/enterprisenet
レイヤ構造の分割
レイヤ 説明
プレゼンテーション プレゼンテーションレイヤでは、ユーザへのデータの表示や入力を受け付けるための機能が実装され、Web FormsやWindows Formsが主要な技術になります。
ビジネス ビジネスレイヤは、ビジネスルールやビジネスロジックの機能が実装され、トランザクションやデータ操作が主要な技術になります。また、プレゼンテーションレイヤや他システムにサービスを提供する機能が実装されます。
データ データレイヤは、RDBへのアクセスや他のサービスを利用する機能が実装されます。
共通基盤 共通基盤では上記の全てのレイヤで関連するセキュリティやログ、例外などの処理を提供します。アプリケーション開発キットに実装され提供されます。
http://biki.jp.net/enterprisenet
コンポーネントタイプ
http://biki.jp.net/enterprisenet
コンポーネントの分類
レイヤ コンポーネントタイプ 備考
プレゼンテーション
UIコンポーネント UIコンポーネントは分析モデルのUIを実装するコンポーネントです。分析モデルのUIごとに検討し最終的な画面、各種操作に対する処理を実装します。Windowsフォーム
Webフォーム
ビジネス サービスインタフェース サービスインタフェースは、他システムやスマートクライアントからのアクセスのためのビジネスロジックのインタフェースを提供する目的で利用します。他システム連携のための認証や特別な通信手順、データ検証などが実装されます。
XML Web サービス
ビジネスコンポーネント ビジネスコントローラは、分析時のビジネスロジックの処理を実装します。ビジネスファサードでは、ビジネスコントローラを利用しやすい機能単位への集約や、複数のサービスインタフェースで処理される共通処理を実装します。また、トランザクションの制御を行うトランザクション開始コンポーネントとしても利用されます
ビジネスファサード
ビジネスコントローラ
ビジネスエンティティ ビジネスエンティティは、分析クラスのデータを管理する中心的なクラスです。ビジネスエンティティは、データアクセスロジックコンポーネントで読み出されたデータやビジネスコンポーネントで処理される際の器として利用されます。さらに、レイヤ間で受け渡しのためのデータとしても利用されます。
http://biki.jp.net/enterprisenet
コンポーネントの分類
レイヤ コンポーネントタイプ 備考
データ データアクセスロジックコンポーネント
データアクセスロジックコンポーネントは、ビジネスロジックの永続化が必要なデータをデータベースに入出力するためのコンポーネントです。楽観ロック制御など複雑な永続化・読み出しをより高いレベルで抽象化する場合に活用します。
サービスエージェント サービスエージェントは、他システムのサービスを呼び出す際に利用します。サービスエージェントでは、他システム形式のデータを自システム形式すなわちビジネスエンティティに変換する機能を実装します。認証処理や特別な通信手順、データ検証などもサービスエージェントで実装されます。
http://biki.jp.net/enterprisenet
レイヤ構造の分割とコンポーネントの分類 サンプル
http://biki.jp.net/enterprisenet
アーキテクチャパターンの選定
よくある質問( FAQ )
全てのレイヤーコンポーネントタイプを利用するのですか?
個別のアプリケーションにおいて必要なもののみ利用します。アプリケーションの機能面・テクノロジ面、開発面等で抽象度が向上し変更や作業が局所化できるなどのメリットがあるかどうか考えます。
ビジネスファサードは省略しても良いか?
省略しないようにお勧めします。ビジネスファサードを構成しトランザクションの制御を担当させることで、ビジネスロジック処理が再利用し易くなるためです。
http://biki.jp.net/enterprisenet
処理パターンの類型化
アプリケーションのシーケンスを類似化し、典型的なシーケンスとして整理します
http://biki.jp.net/enterprisenet
処理パターンの類型化 目的
アプリケーションのシーケンスを類似化し、典型的なシーケンスとして整理します
タスク
アプリケーションの典型的な処理パターンの識別
典型的な処理パターンをシーケンスとして整理
主要なシーケンス 更新処理、検索処理
トランザクション制御(親子テーブル更新、読込後更新etc)
エラー処理、他システム連携
アウトプット
典型的な処理のシーケンス図とその説明
http://biki.jp.net/enterprisenet
処理パターンの類型化処理シーケンスを整理
:ブラウザ :ビジネスコントローラ :データベース:Webフォーム
更新処理
データ更新実行
データ更新
入力データ検証
SQL更新文実行
事前条件チェック
処理結果
処理結果表示
結果ページ表示
トランザクション処理
更新データ作成ビジネスエンティティ(型付DataSet)
:ビジネスファサード
データ更新
処理結果
各コンポーネントで行う処理(責務)を明確にします Web更新処理シーケンス例
コンポーネント
処理(メソッド)
http://biki.jp.net/enterprisenet
検索処理(Web)サンプル
: ブラウザ : ビジネスコントローラ : データベース: Webフォーム
検索処理
データ検索実行
データ検索
入力データ検証
DBデータ検索
事前条件チェック
ビジネスエンティティ構築
検索結果
検索結果表示
検索結果表示
ビジネスエンティティ( ) 型付DataSet
ビジネスエンティティ作成
: ビジネスファサード
データ検索
検索結果
: データアクセスロジック
SQL検索文実行
http://biki.jp.net/enterprisenet
更新処理(Web)サンプル
: ブラウザ : ビジネスコントローラ: データアクセス
ロジック: Webフォーム
更新処理
データ更新実行
データ更新
入力データ検証
DBデータ更新
事前条件チェック
処理結果
処理結果表示
結果ページ表示
トランザクション処理
更新データ作成ビジネスエンティティ( ) 型付DataSet
: ビジネスファサード
データ更新
処理結果
: データベース
SQL更新文実行
http://biki.jp.net/enterprisenet
アプリケーション例外処理(Web)サンプル
:ブラウザ :ビジネスファサード:Webフォーム
アプリケーション例外
処理実行
処理実行
入力データ検証
アプリケーション例外
エラー表示
エラー表示
:ビジネスコントローラ
事前条件チェック
処理実行
アプリケーション例外
システム例外処理(Web)サンプル
:ブラウザ :ビジネスファサード:Webフォーム
システム例外処理実行
処理実行
入力データ検証
エラー(システム例外)エラー表示
エラーページを表示
Webフォームではハンドリングせずにエラーページに遷移する集約エラーハンドラーでイベントログを記録
http://biki.jp.net/enterprisenet
検索処理(Windows)サンプル
: Windowsフォーム : ビジネスコントローラ: XML Web サービス
検索処理
データ検索
入力データ検証
検索結果
検索結果表示
データ検索実行
データ検索
検索結果
DBデータ検索
事前条件チェック
ビジネスエンティティ構築
ビジネスエンティティ作成
ビジネスエンティティ( ) 型付DataSet
: ビジネスファサード
検索結果
データ検索
: データベース: データアクセスロジック
SQL検索文実行
http://biki.jp.net/enterprisenet
更新処理(Windows)サンプル
: Windowsフォーム : ビジネスコントローラ: XML Web サービス
更新処理
データ更新
入力データ検証
事前条件チェック
処理結果
処理結果表示
データ更新実行
データ更新
処理結果
更新データ作成
: ビジネスファサード
データ更新
処理結果
トランザクション処理
ビジネスエンティティ( ) 型付DataSet
: データアクセスロジック
DBデータ更新
: データベース
SQL更新文実行
http://biki.jp.net/enterprisenet
アプリケーション例外処理(Window)サンプル
:Windowsフォーム :ビジネスファサード:XML Web サービス
アプリケーション例外
処理実行
入力データ検証
エラー表示
処理実行
処理実行
アプリケーション例外
SOAPエラーに変換
SOAPエラー(アプリケーション例外)ビジネスロジック実行
時の例外ハンドリングで処理
:ビジネスコントローラ
事前条件チェック
処理実行
アプリケーション例外
http://biki.jp.net/enterprisenet
システム例外処理(Window)サンプル
:Windowsフォーム :ビジネスファサード:XML Web サービス
システム例外
処理実行
入力データ検証
処理実行
処理実行
エラー(システム例外)
SOAPエラーに変換
SOAPエラー(システム例外)
集約エラーハンドラ
アプリケーションで集約エラーハンドラを予め設定してく
http://biki.jp.net/enterprisenet
ファイルデータ受信処理(他システム連携 )サンプル
:他システム
:ビジネスファサード:サービスインタフェース
受信処理
受信ファイル
データ更新
自システム形式変換
他システム形式変換
データ検証ビジネスエンティティ(型付DataSet)への変換
:ファイル受信処理
受信処理
データタイプ判定
結果ファイル
http://biki.jp.net/enterprisenet
処理パターンの類型化
よくある質問( FAQ )その1
シーケンスに記述するオブジェクト(四角)には何を利用すれば良いか?
アーキテクチャパターンで識別したコンポーネントタイプや、処理の中で重要な役割を行う特定コンポーネント(認証サービス、親テーブルetc)を利用します
マスタメンテナンスなどの処理パターンも記述してよいか?
アプリケーション固有の処理パターンの記述も推奨します。処理パターンの分類・類型化の度合いが高いと、個々のアプリケーション設計品質のばらつきが少なくなるためです。
どの程度処理パターンを記述すればよいか?
基本処理パターンで記述されているパターンを目安に、検索、更新などの基本的な処理シーケンスは最低限記述するようにします。
http://biki.jp.net/enterprisenet
処理パターンの類型化
よくある質問( FAQ )その2
ユーザ操作の処理シーケンスも記述するのか?
具体的なユーザ操作については記述することは避けるようにします。共通的なユーザ操作の記述については共通UIレイアウトの補足などで記述するようにします。
シーケンスに記述するメソッド(処理)としてはどのようなものを記述すればよいか?
オブジェクト間の相互作用を表すもの、タイミングや順序性があるものを記述します。メソッド(処理)名は厳密なものにする必要はなく処理内容を一般化した名前を利用します。
また、処理パターンで識別されたメソッド(処理)は最終的には、共通部
品や処理テンプレートとして利用されることになります。このため、共通化やテンプレート化などが期待できる処理も記述するようにします。
http://biki.jp.net/enterprisenet
(参考)処理パターンカタログ
Web・Windowsアプリケーション 検索処理
更新処理
入力エラー処理
アプリケーション例外処理
システム例外処理
ユーザ認証処理
UI遷移処理
データベース
ビジネスコントローラ
http://biki.jp.net/enterprisenet
コンポーネントの設計と配置
アプリケーションの論理的なコンポーネント構成や物理的な配置構成を検討・定義します
http://biki.jp.net/enterprisenet
コンポーネントの設計と配置 目的
アプリケーションの論理的なコンポーネント構成や物理的な配置構成を検討・定義します
タスク
コンポーネント構成の定義
名前空間・ソリューション・プロジェクト構成の定義
配置モデルの定義
アウトプット
コンポーネント構成(パッケージ図、パッケージ一覧)
名前空間(名前空間一覧)
ソリューション・プロジェクト構成(ソリューション構成一覧、プロジェクト構成一覧)
配置モデル(配置図、アプリケーション動作設定一覧)
http://biki.jp.net/enterprisenet
コンポーネント構成の定義
設計モデルはもちろん、実装モデル・配置モデルにおいても利用しやすい単位に分割・集約します
コンポーネントの単位を検討する基準 機能的な分類(サブシステム、業務)
例) 販売業務パッケージ
コンポーネントの実装形態(レイヤ、テクノロジ)
例)データアクセスロジックパッケージ
サブシステム分割 複数の開発チームで並行して開発を行い易くなる
サブシステム間の依存を最小限にする設計が重要
共通サブシステムの導入などを検討
http://biki.jp.net/enterprisenet
コンポーネント構成の定義
サブシステム分割の例
ビジネス
プレゼンテーション
Webフォーム
ビジネスコントローラ
ビジネスエンティティ
共通ライブラリ
Sub1サブシステム共通サブシステム
バッチ処理サービス
ビジネスロジック
ビジネスコントローラ
ビジネスエンティティ
ビジネス
プレゼンテーション
Webフォーム
Sub2サブシステム
Abc連携処理サービス
ビジネスロジック
ビジネスコントローラ
ビジネスエンティティ
ビジネスロジック
http://biki.jp.net/enterprisenet
データ
ビジネス
データベース
プレゼンテーション
Webフォーム Windowsフォーム
XML Web サービス
ビジネスファサード
ビジネスコントローラ
共通ライブラリ
XYZサービス
データアクセスロジックコンポーネント
ビジネスエンティティ
ビジネスロジック
コンポーネント構成の定義サンプル
http://biki.jp.net/enterprisenet
コンポーネント構成の定義サンプル
パッケージ 説明
共通ライブラリ 共通機能です。たとえば、汎用的なログ出力やデータアクセスなどがあります
Webフォーム Webフォームの表示や入力処理を行うためのユーザインタフェースを提供します
Windowsフォーム Windowsフォームの表示や入力処理を行うためのユーザインタフェースを提供します
XML Webサービス Windowsスマートクライアントから呼び出されるXML Webサービスをビジネスロジックロジックのコンポーネントに中継するコンポーネントです
Xyzサービス Xyzシステムとの連携機能を提供します。
ビジネスファサード ビジネスファサードは、ビジネスコントローラを機能単位にまとめます。また、トランザクションの制御も行います。
ビジネスコントローラ ビジネスロジックの処理を実装する中心的なコンポーネントです。データの整合性の検証、ビジネスルールの実行、データアクセスのコントロールを行います。
ビジネスエンティティ クライアント-ビジネスロジック間で送受信するデータ構造を定義します。基本的に型付DataSetとして実装します。
データアクセスロジックコンポーネント
データベースへのアクセスを行います。SQL文の組み立てと実行を行います。
http://biki.jp.net/enterprisenet
名前空間・ソリューション・プロジェクト構成の定義
コンポーネント構成で定義されたパッケージに名前空間を与え、ソリューション・プロジェクトを定義します。
定義したパッケージごとに名前空間を与える ネストしているパッケージは上位の名前空間に追加する形態で命名
開発単位であるソリューションはサブシステムごとに作成
サブシステムの分割単位が小さい場合は、複数のサブシステムを1つのソリューションとして作成し、できるだけソリューションの数は減らすようにします。できれば、1つのソリューションとして作成することで、開発環境を簡略化できます。
配置単位(アセンブリ)であるプロジェクト構成は名前空間ごとに作成 「名前空間=プロジェクト名=アセンブリ名」となり管理が容易
複数の名前空間を1つのプロジェクトで管理する場合は、プロジェクト名としては、最も上位の名前空間を利用し、名前空間に合わせてプロジェクト内にサブフォルダを作成するようにします
サブパッケージの名前空間を定義せずに上位のパッケージの名前空間をそのまま利用することもある
http://biki.jp.net/enterprisenet
名前空間の定義サンプル
システム 名前空間
システム名 MyCompany.XSystem
サブシステム パッケージ 名前空間
(共通) 共通WebフォームWindowsフォームXYZサービスXML Webサービスビジネスロジックビジネスエンティティデータアクセスロジック
MyCompany.XSystemMyCompany.XSystem.WebUIMyCompany.XSystem.WinUIMyCompany.XSystem.XyzServiceMyCompany.XSystem.WebServiceMyCompany.XSystem.BusinessLogicMyCompany.XSystem.BusinessEntityMyCompany.XSystem.DbAccess
http://biki.jp.net/enterprisenet
ソリューション・プロジェクト構成の定義サンプル
サブシステムソリューション名
(共通) XSystem
サブシステムパッケージ プロジェクト名
(共通) 共通WebフォームWindowsフォームXYZサービスXML Webサービスビジネスロジックビジネスエンティティデータアクセスロジック
MyCompany.XSystemMyCompany.XSystem.WebUIMyCompany.XSystem.WinUIMyCompany.XSystem.XyzServiceMyCompany.XSystem.WebServiceMyCompany.XSystem.BusinessLogicMyCompany.XSystem.BusinessEntityMyCompany.XSystem.DbAccess
http://biki.jp.net/enterprisenet
配置モデルの定義 コンポーネントの物理的な配置を定義します
コンポーネントの配置 実行ファイル(EXE、DLL)として検討したパッケージを物理的な
ノード(マシン)にマップ
さらに、利用するプロダクトや通信プロトコル、主要なソフトウエアの構成設定(アプリケーションを動作させるための設定やプロセスの動作アカウントなど)の情報を規定
セキュリティやパフォーマンスの観点が重要 プロセスやマシンをまたがる処理の注意
認証などのセキュリティ処理が必要になることが多い
通信オーバーヘッドが大きくなる 通信頻度やデータ量が大きくなる場合には対策が必要
http://biki.jp.net/enterprisenet
クライアント
Webサーバー
ビジネスロジック<<DLL>>
データベースサーバー
データベース<<Package>>
TCP/IP
Webフォーム<<ASPX>>
HTTP
ブラウザ<<Package>>
共通ライブラリ<<DLL>>
Windowsフォーム<<DLL>>
共通ライブラリ<<DLL>>
クライアントダウンロードパッケージ
クライアントダウンロードパッケージ
ダウンロード
ビジネスエンティティ<<DLL>>
ビジネスエンティティ<<DLL>>
XML WebサービスXYZサービス
データアクセスロジックコンポーネント
<<DLL>>
サンプル アプリケーション
配置モデルの定義
http://biki.jp.net/enterprisenet
アプリケーション動作設定一覧サンプル
設定項目 内容
Webサーバー XML Webサービスの認証方式はWindows認証を利用しますWebアプリケーションの認証方式はフォーム認証を利用します許可制御はURL制御を利用します動作アカウントはドメインで利用可能なAbcRuntimeUserを利用しますログインフォームのみSSLを利用します
データベースサーバー
SQL Server認証を利用し、許可制御は利用しません。ローカルシステムアカウントを動作アカウントとして利用します。
ドメインサーバー
アプリケーション動作アカウント AbcRuntimeUserを作成します
FW 利用しません
クラスタ(NLBS/MSCS)
利用しません
http://biki.jp.net/enterprisenet
コンポーネントの設計と配置
よくある質問( FAQ )
フォルダ構成やソース管理リポジトリの構造はどのようすればよいか ソリューションおよびプロジェクトのフォルダ構成は、ソリューションごとに検
討を行い、開発用のフォルダの直下にソリューション用のフォルダを構成します。さらにプロジェクト用のフォルダをサブフォルダとして構成します。ソリューションのフォルダ名はソリューション名を利用し、プロジェクトフォルダ名は、プロジェクト名を利用します。なお、各プロジェクトで機能やコンポーネントタイプごとのグルーピングを行う場合、プロジェクトにサブフォルダを作成し利用してもかまいません。なお、ソース管理リポジトリを利用する場合は開発用のフォルダ構成とソース管理リポジトリの階層構造が同一になるように構成します。
配置モデルのかわりにネットワーク・マシン構成図を利用してよいか? 利用してかまいません。この場合、論理的なコンポーネントをどのように
マッピングされるかの情報を付与するようにします。
http://biki.jp.net/enterprisenet
共通機能の抽出とアプリケーションブロック化
アプリケーション全体で利用される共通機能を抽出し、アプリケーションブロック(共通部品)として実装を行います
http://biki.jp.net/enterprisenet
共通機能の抽出とアプリケーションブロック化
目的 アプリケーション全体で利用される共通機能を抽出し、アプリ
ケーションブロック(共通部品)として実装を行います
タスク 共通機能の抽出
処理パターンの類型化や個別共通機能のアウトプットを参考
アプリケーション非固有、アプリケーション固有の観点
アウトプット 共通機能の一覧
(実装・テストされたアプリケーション開発キット)
http://biki.jp.net/enterprisenet
共通機能の一覧サンプル
共通機能 内容
エラー(例外)制御 アプリケーション例外の定義やビジネスロジックエラーチェック、エラーメッセージの管理などを行います。
ログ出力 監査・デバッグなどのログ出力を行います。
データアクセス データベースへの検索・更新・トランザクション処理を行います。
入力検証 UI入力データチェックを行います。
画面遷移 フォームやページの遷移を行います。
セッション管理 複数のフォームやページで共有するデータを管理します。
セキュリティ ユーザ認証や許可制御を行います。
共通UIレイアウト 全てのUIで共通なレイアウトを提供します。
http://biki.jp.net/enterprisenet
共通機能の抽出とアプリケーションブロック化
よくある質問( FAQ )
典型的な共通機能にはどのようなものがあるか?
ログ出力、データベースアクセスなど個別のアプリケーションに依存しないアプリケーション非固有の共通機能として識別された機能は、他のアプリケーションでも共通機能として利用できる可能性が高いです。
業務依存の共通機能の抽出はどのようにするのか
分析モデルで識別したエンティティや、ビジネスルールの中で汎用的なものが候補
国際通貨型、業務カレンダー
消費税計算処理
http://biki.jp.net/enterprisenet
個別技術の検討
技術ごとに設計・実装方法の方針を検討し利用する技術を絞り込みます。
個別技術の検討
目的
技術ごとに設計・実装方法の方針を検討し利用する技術を絞り込みます
タスク(検討項目) データベース実装
データアクセス
トランザクション
サービス
ユーザインタフェース
ユーザインタフェース制御
アウトプット 個別技術指針
セッション制御
セキュリティ
例外(エラー)ハンドリング
ログ出力
バッチ処理
http://biki.jp.net/enterprisenet
データベース実装
検討項目 内容
非正規化の指針 非正規化を行う指針を規定します。
Date、Time型の利用 文字列による代用の有無、利用基準を規定します。
NULLカラム NULLカラムの利用の有無、利用基準を規定します。
フラグ実装の指針 区分や処理済み等のフラグカラムの実装指針を規定します。
サブタイプ実装の指針 サブタイプテーブルの実装指針を規定します。
代理キー 複合キーの集約などの目的で設定される代理キー(システム内部のキー)の利用指針を規定します。
RDBMS機能 一意制約、参照制約、トリガや連続的な数値の生成などのRDBMS機能の利用方針を規定します
検討項目
http://biki.jp.net/enterprisenet
データベース実装サンプル
項目 規定
非正規化の指針 論理データベースをそのまま利用し、非正規化はパフォーマンス向上が目的の場合に利用を限定します。
Date、Time型の利用 全て文字列で代用します。
NULLカラム NULL許可カラムの利用は避けます。数値は0、文字型の場合は空文字列、Date型については文字型を利用します。
フラグ実装の指針 1万件以上保持するテーブルのカラムで単独で検索されるものについては、フラグ用のテーブルを作成し利用します。
サブタイプ実装の指針 論理データベース構造をそのまま利用します。
代理キー 利用しません。
RDBMS機能 マスタへの外部キー制約(参照制約)を必ず指定します。トリガは利用しません。
http://biki.jp.net/enterprisenet
データアクセス
検討項目 内容
ストアドプロシージャの利用基準
ストアドプロシージャの利用基準を規定します
分離レベルの指針 書き込み時、読み込み時などトランザクションのタイプ別の分離レベルを規定します。
ロック制御の指針 ロック手順、ロックするテーブルの順番やデッドロック時の対処方法を規定します。
検討項目
http://biki.jp.net/enterprisenet
データアクセスサンプル
項目 規定
ストアドプロシージャの利用基準
複数SQL文を実行する場合、もしくは、パフォーマンス向上が目的の場合にのみ利用します。
分離レベルの指針 更新処理を含むトランザクションではSerializable、検索処理のみのトランザクションではRead Committedを利用します。ただし、検索処理でも、データ整合性を必要とする場合はSerializableを利用します。
ロック制御の指針 書き込み時のアクセス順序を揃えます。アクセス順は、データが作成される順を基本とします。データ読み込み後、同じデータを書き込む場合は、予め読み込み時に更新ロックを必ず確保します。オンライン処理でデットロックが発生した場合は、ユーザに再実行を行う旨のメッセージを表示し自動的な再実行は行いません。
http://biki.jp.net/enterprisenet
トランザクション
検討項目
検討項目 内容
トランザクション方式 DBMSなどのショートトランザクション方式を規定します。(自動トランザクション、マニュアルトランザクション)
トランザクション開始コンポーネント
ショートトランザクションの開始点になるコンポーネントを規定します。通常はビジネスファサードをトランザクション開始コンポーネントにします
ロングトランザクション ロングトランザクションのサポートの有無、実装方式の規定を規定します。楽観ロックなどの、DBMSのロックを利用しない排他制御やトランザクション管理を規定します。
http://biki.jp.net/enterprisenet
サービス
検討項目
検討項目 内容
プロトコル・フォーマット HTTPやMSMQなどの利用するプロトコルや転送フォーマットを規定します。
他システムインタフェース 他システムのインタフェースを規定します。
http://biki.jp.net/enterprisenet
ユーザインタフェース
検討項目
項目 内容
ナビゲーション メニューやウイザードUI間のナビゲーション方法を規定します
データ表示 数値やテキストなどのデータ表示方法を規定します
データ入力 データ入力方法を規定します
メッセージ エラーや情報通知のためのメッセージ表示方法を規定します
ヘルプ ヘルプ表示単位および表示方法を規定します
コントロール部品 コントロール部品の適用範囲やスタイルを規定します
共通UIレイアウト 共通UIレイアウトを規定します
http://biki.jp.net/enterprisenet
ユーザインタフェースサンプル
項目 規定
ナビゲーション Windowsアプリケーションは、メインメニューからウイザード形式で移動します。Webアプリケーション部は、常時表示されたメニューから直接移動させます。
データ表示 Webアプリケーションでは横スクロールは使用しません。文字も数値も基本的に左詰にします。3桁カンマは利用しません。日付フォーマットはYYYY/MM/DDで統一します。
データ入力 タブ移動は上から下、左から右にします。この順番が守れない場合、パネル等でエリアを明示します。ファンクションキーは利用しません。入力チェックは、単一項目は入力エリアからフォーカスが抜けたタイミングで行い、エラー発生時は該当入力コントロールの右側にエラーマークを表示します。入力チェックは必須、範囲、文字制限、複数項目の単純な整合性チェックを対象とします。マスタ入力は常に一覧からの選択とします。
メッセージ アプリケーション例外は画面下部のメッセージ表示用ラベルに表示します。システム例外は、メッセージボックスで表示しユーザにアプリケーションの継続か終了を選択できるようにします。
ヘルプ オンラインヘルプは利用しません。
コントロール部品 コントロール部品一覧を参考
共通UIレイアウト 共通UIレイアウトを参考
http://biki.jp.net/enterprisenet
ユーザインタフェースサンプル
コントロール部品一覧(Windows)目的 コントロール スタイル、備考 カスタム化
フォームデフォルト フォント10pt
項目表示(大項目) Label フォント14pt
項目表示(個別項目) Label フォント12pt
グループ化 Panel、GroupBox
ステータス表示 Label エラーメッセージは赤色情報メッセージは青色
データ表示(単一項目) TextBox Read Only
データ表示(表形式) DataGrid
テキスト入力 TextBox
マスタ選択 ComboBox 利用する件数が多い場合、絞り込み機能を追加する
入力エラー表示 ErrorProvider
データ選択(ON/OFF) CheckBox
データ選択(固定複数項目) RadioButton 5項目以上はComboBoxを利用
*スタイルの指定が特にないものについてはデフォルト値を適用する
http://biki.jp.net/enterprisenet
ユーザインタフェースサンプル
コントロール部品一覧(Web)目的 コントロール スタイル、備考 カスタム化
フォームデフォルト フォント10pt
項目表示(大項目) Label フォント14pt
項目表示(個別項目) Label フォント12pt
グループ化 Panel
ステータス表示 Label エラーメッセージは赤色情報メッセージは青色
データ表示(単一項目) Label
データ表示(表形式) DataGrid
テキスト入力 TextBox
テキスト入力(入力検証付) TextBox+検証コントロール
マスタ選択 DropDownList 利用する件数が多い場合、絞り込み機能を追加する
入力エラー表示 検証コントロール
データ選択(ON/OFF) CheckBox
データ選択(固定複数項目) RadioButtonList 5項目以上はDropDownListを利用
*スタイルの指定が特にないものについてはデフォルト値を適用する
http://biki.jp.net/enterprisenet
サンプル アプリケーション
ユーザインタフェース
共通UIレイアウト(Web) 共通UIレイアウト(Windows)
http://biki.jp.net/enterprisenet
ユーザインタフェース制御
検討項目
項目 内容
UI間データ共有方式 UI間でデータを受け渡す実装方式を規定しますWebではCookie、クエリ文字列、セッション、ViewState(HIDDENタグ)の利用基準を検討
クライアントサイドスクリプトの利用(Webブラウザサポート時)
クライアントサイドスクリプトの利用の有無および利用基準を規定します
表示キャッシュの利用(Webブラウザサポート時)
表示キャッシュの利用の有無や利用基準を規定します
Windows アプリケーションの配置(Windows デスクトップサポート時)
利用するWindowsアプリケーションの配置先・配置方法を規定します
http://biki.jp.net/enterprisenet
セッション制御
検討項目
項目 内容
セッション機能 セッション制御で必要とされる機能を規定します
セッション情報 セッションで管理する項目を規定します
セッションタイムアウト(Webサーバー利用時)
セッションタイムアウトの時間や発生時の対応方法を規定します
セッションステートの利用(Webサーバー利用時)
セッションステートの利用有無や実現方式を規定します(インプロセス、ステートサーバー、SQLServer)
http://biki.jp.net/enterprisenet
セキュリティ
検討項目
項目 内容
認証 ユーザの認証方式を規定します
許可制御 ファイルやデータベースの許可制御の実装方法を規定します
暗号化・署名 通信・データなどの暗号化や署名の実装方法を規定します
スマートクライアントセキュリティポリシー
スマートクライアントのセキュリティポリシーの利用の有無、利用するセキュリティティポリシーを規定します
http://biki.jp.net/enterprisenet
例外(エラー)ハンドリング
検討項目
項目 内容
アプリケーション例外
アプリケーション例外の実装方法を規定します
特殊な例外(テクニカル例外)
デッドロックなど特別にハンドリングする例外の規定やハンドリング方法を規定します
例外ハンドリング 利用するコンポーネントタイプでの例外ハンドリングやWebアプリケーションの集約ハンドラなどの特別な例外ハンドラのハンドリング方法を規定します
ロギング 例外のロギング方法を規定します
http://biki.jp.net/enterprisenet
例外(エラー)ハンドリングサンプル
項目 規定
アプリケーション例外 AbcApplicationExceptionを利用します。
特殊な例外(テクニカル例外)
DBアクセスで発生するデッドロックは特殊な例外として扱います。デッドロックが発生した場合、ユーザに処理の再実行を依頼するメッセージを表示するだけとし、アプリケーション例外と同様のハンドリングで処理します。デッドロック発生の有無チェックは共通機能(SqlHelper)を利用します。
例外ハンドリング Webフォームアプリケーション例外のみハンドリングします。システム例外は集約例外ハンドラー(Global.asax)で例外をログします。
WindowsフォームWebサービスを呼び出し時はサーバー側でアプリケーション例外が発生しているかチェックします。システム例外はアプリケーションで設定した集約例外ハンドラで例外をログし、ユーザに通知します。
XML Web サービス・サービスインタフェース全ての例外をハンドリングしシステム例外はログします。必要に応じて連携するシステムの形式でエラーを返します。WebサービスはカスタムSOAPエラーに変換しクライアントに返します。
ビジネスファサード・ビジネスコントローラ他のビジネスロジック呼び出し時のアプリケーション例外は、必要なときのみハンドリングします。通常ハンドリングは不要です。システム例外についてはハンドリングしません。
データアクセスロジックコンポーネントテクニカル例外以外のシステム例外についてはハンドリングしません。
http://biki.jp.net/enterprisenet
ログ出力
検討項目
項目 内容
監査オペレーションログ ログインやマスタ登録など重要なオペレーションのログ出力項目を規定します
デバッグログ デバッグ用のログ出力の有無、出力項目を規定します
ログ出力方法 ログ出力方法を規定します
http://biki.jp.net/enterprisenet
バッチ処理
検討項目
項目 内容
ジョブ制御 バッチ処理のジョブを管理するための仕組みを規定します
オンライン中のバッチ処理
バッチ処理中のオンライン処理の制御の仕組みを規定します
チェックポイント 再実行可能なジョブの実行ポイントの実装方法を規定します
http://biki.jp.net/enterprisenet
個別技術の検討
よくある質問( FAQ )
全ての個別技術について規定する必要があるか?
アプリケーションが利用する技術に関してはできる限り規定します。特に技術的に難しい点やリスクがある点などは必ず検討を行い指針を記述します。規定しない場合も、アーキテクチャ設計諸に規定しないと明記するようにします。
リスクが高い技術項目はどのように識別すればよいか? リスクの候補として以下のようなものを検討します。
アーキテクチャ要件定義で記述されている特別な要求
パフォーマンス、可用性、運用etc
トレードオフが存在する要求
例) ブラウザを利用したリッチクライアント、分散環境下での集中管理
例) 最適化されたパフォーマンスを求められる汎用機能
http://biki.jp.net/enterprisenet
まとめ
アーキテクチャ設計の主要なタスクにはどのようなものがあるか
共通機能の識別はどのように実施するか
技術選択の項目にはどのように行うか