web-dev-qa-db-ja.com

アプリケーションアーキテクチャのチェックリストには何を含める必要がありますか?

私は、提案されたアーキテクチャまたは新しいアーキテクチャを評価および評価するためのチェックリストまたは一連の質問/基準を考え出そうとしています(アーキテクチャレビューを実行します)。アーキテクチャを計画、評価、またはレビューするときに最も重要な質問は何ですか?

これは大きなトピックであることを知っているので、組織全体のアーキテクチャーではなく、単一のエンドツーエンドシステムに限定したいと思います。

コード完了は、適切な開始点を提供します。

建築

  • アーキテクチャの概要と正当性を含め、プログラムの全体的な構成は明確ですか?
  • モジュールは、その機能や他のモジュールへのインターフェースなど、明確に定義されていますか?
  • 要件にリストされているすべての機能は、モジュールが多すぎても少なすぎても、適切にカバーされていますか?
  • アーキテクチャは、起こりそうな変更に対応するように設計されていますか?
  • 必要な購入対ビルドの決定が含まれていますか?
  • アーキテクチャは、再利用されたコードが他のアーキテクチャの目的に準拠するためにどのように作成されるかを説明していますか?
  • すべての主要なデータ構造がアクセスルーチンの背後に隠れていますか?
  • データベースの構成とコンテンツは正当化されていますか?
  • すべての主要なアルゴリズムが説明され、正当化されていますか?
  • すべての主要なオブジェクトが説明され、正当化されていますか?
  • ユーザー入力を処理するための戦略は説明されていますか?
  • I/Oを処理するための戦略は説明され、正当化されていますか?
  • ユーザーインターフェイスの重要な側面は定義されていますか?
  • ユーザーインターフェイスはモジュール化されているので、変更してもプログラムの他の部分に影響しませんか?
  • メモリ使用量の見積もりとメモリ管理の戦略は説明され、正当化されていますか?
  • アーキテクチャは各モジュールのスペースと速度のバジェットを設定していますか?
  • 文字列を処理するための戦略は説明されていますか?また、文字列ストレージの見積もりは提供されていますか?
  • 首尾一貫したエラー処理戦略が提供されていますか?
  • エラーメッセージは、クリーンなユーザーインターフェイスを提供するためのセットとして管理されていますか?
  • 堅牢性のレベルは指定されていますか?
  • 過設計または過小設計されている部分はありますか?この領域への期待は明確に示されていますか?
  • 主要なシステム目標は明確に述べられていますか?
  • アーキテクチャ全体が概念的につながっていますか?
  • トップレベルの設計は、実装に使用されるマシンや言語に依存しませんか?
  • すべての主要な決定の動機が提供されていますか?
  • あなたは、システムを実装するプログラマーとして、アーキテクチャに慣れていますか?

例を挙げて実用的な知識を探しています。たとえば、作成したアーキテクチャで最も苦労した点は何ですか。

42
cwash

私の調査に基づいて、ここで私が見つけたいくつかのアーキテクチャレビューチェックリストを示します。このチェックリストは、この質問をもう少し正義にし、アーキテクチャレビューの背景を提供します。 (ここでは少し混乱しているようです。)

これらの潜在的な候補のそれぞれには、いくつかの異なるカテゴリが含まれています。これらのカテゴリの全体的な重要性は、ビジネスニーズによって多少異なります。私見、それは大丈夫です。最初にチェックリストに含めるほど重要ではないように思われるため、レビューのチェックリストを通過するときに別の質問をしてそれを除外する方が、質問やカテゴリを完全に見逃すよりもはるかに安価です。

私はまだ読んでいませんが、このトピックについて書かれたホワイトペーパーもあるようです。約11ページにわたってこの質問に答えようとします。

さらに、同僚がSpringerからの本のセットを勧めましたが、私はこれらの本を自分でチェックしていません。

37
cwash

考慮すべきその他のポイント:

  • すべての利害関係者が特定されていますか? (例:顧客、エンドユーザー、ビジネスアナリスト、ユーザーインターフェイスデザイナー、開発者、テスター、メンテナー。)アーキテクチャは関係者と検証済みですか?
  • アーキテクチャはどのようにセキュリティに対処しますか?
  • 可用性と信頼性の要件は指定されていますか?アーキテクチャはこれらにどのように対処しますか? (例:平均故障間隔、平均修理時間。)
  • 災害復旧はどのように処理されますか?

より多くのアイデアのための2つの良い本:

3
markusk

アーキテクチャはテクノロジーベンダーのガイダンスとロードマップに沿っていますか?

あなたはそれと戦うのではなく、選択したプラットフォームからサポートを得たいと思っています。

例えばMicrosoft中心のソリューションの場合、これは、選択が Microsoftアーキテクチャガイダンス から逸脱している場所と理由を文書化することを意味します。

2
Peter Stuer

どのようにテストしますか

2
Steven A. Lowe

SOLID原理を使用していますか?

2
aleemb

十分な(1)提案されたアーキテクチャの技術的知識、(2)物事の管理の経験、(3)会社で立って、彼の決定がそうでない経営者によって上書きされないように、アーキテクチャを担当できる一人の人がいますか?事を知っている。

(2)と(3)は実際にはアーキテクチャーに依存していないので、その人を見つけて彼に何をしたいのか尋ねます。

あなたがその人であると仮定すると(そしてそれはあなたの質問から明らかではありません-それはあなたがまだこの事の主任建築家であるとあなたがまだ思うと思う場合にのみ当てはまります)、私は アドバイスJoel On Softwareのブログ そして、計画、目標、顧客、設計の選択、すべてを説明する設計仕様を記述します。これでビューがクリアされます。

後で考え

「プロジェクトを更新するのは簡単ですか」、「最終目標に柔軟性を与えるか」、「物事を簡単にするか」など、仕様を書いた後にあなたが自分にどのような正確な質問をするかについて少し考えてみましたサポート」、「セキュリティ上の問題はありますか」などですが、このような質問をすることは価値がありますが、明確な間違いを除外する以外の理由で「評価」に使用できる方法はわかりませんないと思う 明確な 質問は「アーキテクチャの評価」に大いに役立ちます。おそらくあなたの質問は言い換えをすることで利益を得られるでしょうか?

0
ilya n.