私は、提案されたアーキテクチャまたは新たなアーキテクチャを評価および評価するためのチェックリストまたは一連の質問/基準を考え出そうとしています (アーキテクチャのレビューを実行します)。アーキテクチャを計画、評価、またはレビューしようとするときに最も重要な質問は何ですか?
これは大きなトピックであることはわかっているので、組織全体のアーキテクチャではなく、単一のエンド ツー エンド システムに限定したいと思います。
Code Completeは適切な出発点を提供します。
建築
- 適切なアーキテクチャの概要と正当化を含め、プログラムの全体的な構成は明確ですか?
- モジュールは、その機能や他のモジュールへのインターフェースなど、適切に定義されていますか?
- 要件に記載されているすべての機能は、モジュールが多すぎても少なすぎても適切にカバーされていますか?
- アーキテクチャは変更の可能性に対応できるように設計されていますか?
- 必要な購入対構築の決定が含まれていますか?
- アーキテクチャは、再利用されたコードを他のアーキテクチャの目的に適合させる方法を記述していますか?
- すべての主要なデータ構造は、アクセス ルーチンの背後に隠されていますか?
- データベースの構成と内容は正当化されていますか?
- すべての主要なアルゴリズムが説明され、正当化されていますか?
- すべての主要なオブジェクトが説明され、正当化されていますか?
- ユーザー入力を処理するための戦略が記述されていますか?
- I/O を処理するための戦略が説明され、正当化されていますか?
- ユーザー インターフェイスの重要な側面は定義されていますか?
- ユーザー インターフェイスはモジュール化されているので、その変更はプログラムの残りの部分に影響を与えませんか?
- メモリ使用量の見積もりとメモリ管理の戦略が説明され、正当化されていますか?
- アーキテクチャは、各モジュールのスペースと速度の予算を設定していますか?
- 文字列を処理するための戦略が記述されていますか? また、文字列のストレージの見積もりが提供されていますか?
- 首尾一貫したエラー処理戦略が提供されていますか?
- クリーンなユーザー インターフェイスを提供するために、エラー メッセージはセットとして管理されていますか?
- 堅牢性のレベルは指定されていますか?
- オーバー アーキテクチャまたはアンダー アーキテクチャの部分はありますか? この分野での期待は明確に設定されていますか?
- システムの主要な目標は明確に示されていますか?
- アーキテクチャ全体が概念的にまとまっていますか?
- トップレベルの設計は、それを実装するために使用されるマシンや言語から独立していますか?
- すべての主要な決定の動機が提供されていますか?
- システムを実装するプログラマとして、あなたはアーキテクチャに慣れていますか?
例を挙げて実践的な知識を探しています。たとえば、あなたが作成したアーキテクチャで最も苦労した点は何ですか?