実践!ソフトウェアアーキテクチャ 2014-04-24 22:50:14 技術評論社の書籍ページ 第1章 ソフトウェアアーキテクチャとは? 1-1 ソフトウェアアーキテクトとは? 1-1-1 ウォーター フォールの “キャリア パス” には問題がある 1-1-2 プログラマの生産性には,大きな差がある 1-1-3 プログラマからソフトウェアアーキテクトというキャリア パス 1-2 ソフトウェアアーキテクチャとは? 1-2-1 ビジネス アプリケーションでは,標準化が有効である 1-2-2 まずは,クラス ライブラリを作る 1-2-3 そして,クラス ライブラリを呼び出す部分も作る ●コラム アスペクト指向プログラミングは使わないの? 1-3 補講:プログラミングを知らない設計者による設計のやり方 1-3-1 RDBMS以前。COBOLな人が処理に注目しがちな理由 1-3-2 ER図。各論に入らずに全体像を作成する 1-3-3 Table Moduleパターン。重複のない形に機能を構造化する 第2章 サンプルアプリケーションの仕様 2-1 ER図 2-2 スマート クライアント 2-3 Webアプリケーション 2-4 セットアップの方法 第3章 アプリケーションの全体構造 3-1 Layersアーキテクチャ パターン 3-1-1 アセンブリのレベルでカプセル化 3-1-2 重ねて積んで,下のレイヤをカプセル化 3-1-3 レイヤに意味を持たせて標準化しましょう 3-2 Patterns&Practicesでの全体構造 3-3 本書におけるビジネス・アプリケーションの全体構造 3-3-1 不満点1:エンタープライズの視点が足りない 3-3-2 不満点2:サービス エージェントは処理にも使える 3-3-3 不満点3:ビジネス エンティティはデータ レイヤ 3-3-4 不満点4:ユーザ インターフェイス プロセスはなんだか胡散臭い 3-3-5 本書におけるビジネス アプリケーションの全体構造 第4章 ビジネス エンティティ 4-1 型付DateSetって便利 4-1-1 思考実験:SQLを発行する “だけの” アプリケーション 4-1-2 ビジネス エンティティが必要な理由 4-1-3 プレゼンテーションまでと考えると,型付DateSetが便利 4-2 オブジェクト指向しゃなくていいの? 4-3 型付DateSetを用いたビジネス エンティティ 4-3-1 ソリューションとプロジェクトの作成 4-3-2 RDBMSのスキーマを作成 4-3-3 型付DateSetの作成 4-3-4 プロパティとメソッドの追加 第5章 データ アクセス ロジック コンポーネント 5-1 JOINする?しない? 5-1-1 表を編集するとなると… 5-1-2 テーブル単位で取得する 5-1-3 JOIN演算の説明 5-2 関係するテーブルを正しく巡り,サイクルデッドロックが発生しないように更新する 5-2-1 クラス ライブラリを作成してみる ●コラム CallFillTableAdapters()メソッドを実装できた理由 ●コラム イテレータは非常に便利 5-2-2 更新する場合を考える 5-2-3 追加/削除の場合を考える 5-2-4 サイクル デッド ロックを防ぐ ●コラム サイクル デッド ロックとは? ●コラム Table Moduleパターンはどうなった? 5-2-5 ロスト アップデートを防ぐ 5-3 TableAdapterを用いたデータアクセス ロジック コンポーネント 5-3-1 TableAdapterの作成 5-3-2 Taillsland.RX的なTableAdapterの呼び出し 5-3-3 特殊ケースへの対応 第6章 ビジネスコンポーネント 6-1 Table Moduleで設計者と良い関係を築きましょう 6-1-1 設計者とは,ビジネスの専門家である 6-1-2 ransaction ScriptとDomain ModelとTable Module 6-1-3 Table Moduleなら,設計者にプログラミングの知識は不要となる 6-2 トランザクション管理を考える前に… 6-2-1 アシッドトランザクション 6-2-2 ショートトランザクションとロング トランザクション 6-3 TransactionScopeでReadCommittedなショート トランザクション 6-3-1 トランザクション管理方式はTransactionScope 6-3-2 IsolationレベルはReadCommitted 6-4 作りこみによるロングトランザクション 6-4-1 競合が発生する場合は,排他ロジックを作りこむ 6-4-2 補償トランザクションを作成する 6-5 ステート管理とロギングとエラーと主キー設定 6-5-1 ステート管理 6-5-2 ロギング 6-5-3 エラー 6-5-4 主キーの設定 6-6 ビジネスコンポーネントの作り方 6-6-1 ソリューションにTaillsland.RXを追加 6-6-2 共通メソッドの作り方 6-6-3 独自メソッドの作り方 6-6-4 Validatorの作り方 第7章 ユニットテスト 7-1 テスト駆動開発 7-1-1 テストの自動化 7-1-2 リファクタリング 7-2 自動テストの対象 7-2-1 プレゼンテーション レイヤは自動テストしない ●コラム テスト騒動開発の落とし穴 7-2-2 プレゼンテーション レイヤは自動テストしない 7-2-3 RDBMSを使ってテストしちゃえ 7-3 ユニット テストの作り方 7-3-1 テスト プロジェクトを追加 7-3-2 データベース プロジェクトを追加し,初期化スクリプトを登録 7-3-3 ユニット テストの一般論 7-3-4 ユニット テストを作成 ●コラム privateメソッドに対するユニット テスト 第8章 サービス インターフェイスとサービス エージェント 8-1 XML Webサービス 8-1-1 XMLを使用したメッセージ交換 8-1-2 XML Webサービスを採用する理由 8-1-3 通信の粒度に関する推奨事項 8-2 サービス インターフェイスの作り方 8-2-1 XML Webサービスの作り方の一般論 8-2-2 エラー処理 8-2-3 性能を劣化させないための安全弁の取り組み 8-3 サービス エージェントの作り方 8-3-1 wsdl.exeを実行してスタブを作成 8-3-2 データベース プロジェクトを追加し,初期化スクリプトを登録 8-3-3 クライアントのValidatorを作成,サーバのValidatorを修正 第9章 プレゼンテーション レイヤ(スマート クライアント) 9-1 画面はテーブルを元に設計しましょう 9-1-1 ER図から画面設計への変換指数 9-1-2 正規化って素晴らしい 9-1-3 ルールは破るためにあるけれど,高くつくことが多いので注意 9-2 データ バインディングでソース コードを激減させましょう 9-2-1 表のデータ バインディング 9-2-2 表のデータ バインディング 9-2-3 子テーブルのデータ バインディング 9-3 Taillsland.RXでのデータ バインディング 9-3-1 データ ソースにサービス エージェントの型付DataSetを追加する方法 9-3-2 XML Webサービスの呼び出しには注意が必要 9-3-3 カラムのエラーはErrorProvider,レコードのエラーはダイアログ 9-3-4 画面遷移にまつわるエトセトラ 9-3-5 行の削除では,子テーブルの行も削除する 9-3-6 コントロールに入力可能な長さを設定 9-3-7 イベント ハンドラでは,例外をハンドリンクする 9-4 スマート クライアントの作り方 9-4-1 プロジェクトの追加 9-4-2 表形式のフォームの作り方 ●コラム リレーショナル データベースを更新する単位 第10章 プレゼンテーション レイヤ(Webアプリケーション編) 10-1 Webアプリケーションよりスマートクライアントの方が好き 10-1-1 イントラネットなら,漸近的なユーザビリティ向上で楽ちん 10-1-2 イントラネットのアプリケーションはどっちが良い? 10-2 データ バインディングは,ASP.NETでもそれなりに便利 10-2-1 単一値のデータ バインディング 10-2-2 集合のデータ バインディング 10-3 ASP.NET検証コントロールは非常に便利 10-4 画面遷移はResponse.Redirect()で 10-4-1 ポスト バックという方式 10-5 ASP.NETメンバシップはかなり便利 10-6 Global.asaxはサービスインターフェースのときと同様に