The best days are ahead of us.
実践!ソフトウェアアーキテクチャ
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はサービスインターフェースのときと同様に