軽量アーキテクチャの評価を行うための良い方法は何ですか?


9

技術的なアーキテクチャのトレードオフ分析手法(ATAM)や、よりビジネス指向の費用便益分析手法(CBAM)などのアーキテクチャ評価手法に精通しています。ただし、これらの方法はかなり大規模です。いくつかのブレーンストーミングセッション、プレゼンテーション、トレードオフを説明する多数のシナリオの開発などを規定します。特定のサイズのプロジェクトには役立ちますが、通常は内部プロジェクトやデスクトップアプリケーションには大きすぎます一握り(またはそれ以下)の開発者によって開発されましたが、それらは小さいですが、かなり急な品質制約(パフォーマンス、スケーラビリティ、適応性)を持っています。

過去に私が使用した典型的な方法は、1人の開発者(またはチームに1人いる場合はアーキテクト)にアプリケーションの一般的なアーキテクチャを考えさせ、それをチームの残りのメンバーとホワイトボードで話し合うことです。簡単に描画して理解できる疑似UML表記。これは通常、アーキテクチャーのフィードバックといくつかの反復につながります。しかし、それは少し非公式になりがちで、後で間違った決定になる可能性のあるあらゆる種類の仮定が行われる傾向があります。

ATAMような方法は、典型的には、誰もが、少なくともアーキテクチャは、正確に何に同意するまでの議論につながる、アーキテクチャについて深く考えるようにすべての利害関係者を強制的です

軽量の先行アーキテクチャ評価を行った経験がある人はいますか?もしそうなら、良い習慣は何ですか?

回答:


6

軽量評価の鍵は、適切なものを適切なタイミングで評価することです。これを効果的に行う方法は2つあります。では、シナリオベースの評価あなたは、優先度の高い品質属性にのみ焦点を当てた評価を駆動するための品質属性のシナリオやユースケースを使用します。では、リスクベースの評価あなたはリスクを特定し、特定されたリスクは、お使いのアーキテクチャの設計活動を推進しましょう。

これらの2つの(やや関連する)アプローチを検討するために推奨できる2冊の本があります。

Anthony LattanzeによるArchitecting Software Intensive Systemsは、Architecture Centric Design Methodologyを紹介し、軽量のシナリオベースの評価をカバーしています。SEIの品質属性ワークショップでLattanzeを認識できますが、同様のアイデアが関係しています。

Just Enough Software Architecture:a Risk-Driven Approach by George Fairbanksは、ソフトウェアシステムのアーキテクチャを設計および評価するためのリスク主導型のアプローチを紹介しています。また、プレビューが必要な場合は、彼のWebサイトで利用できる無料の章もいくつかあります。この本の原則はすぐに適用されますが、このアプローチには特定の方法が付属していないため、他の分野のアイデアを組み合わせる必要があります。リスクの特定/優先順位付けのためのSEIの継続的なリスク管理アプローチを強くお勧めします。

これらのアプローチの背後にある基本的な考え方は、最後まで待つのではなく、進行中に評価することにより、評価(および設計)のコストを削減することです。これは確かにホワイトボードの周りで話すよりも少し重いですが、完全に吹き飛ばされたATAMほどコストがかかる場所ではありません。また、問題がなければ、特定のニーズを満たすための方法を選ぶことができます。

評価を推進するためにどのアプローチを使用しても、一般的な考え方は同じです...

始める前に:

  • 優先順位付けされた品質属性のシナリオまたはリスク(それがすべての場合は非公式にすることができます)
  • 続行/中止の決定の明確な定義(アーキテクチャが「十分」であるとどうしてわかるか)
  • アーキテクチャ記述の最新のカット(評価しているアーティファクト)

評価セッションにご参加ください:

  • 建築家は建築の概要を提示します
  • ビューをウォークスルーし、シナリオまたはリスクがどのように満たされているかを示します
  • 問題は後で修正するために記録されます
  • 役割と一般的な手順は、Faganの検査(建築家または著者、モデレーター、レコーダー)に使用されるものと同様です。
  • システムのサイズによっては、セッションに1〜2時間かかる場合があります。

セッションが終了したら:

  • 識別された問題を確認し、合格/不合格の基準が満たされているかどうかを判断します。一般に、すべてがうまくいくには約3件のレビューが必要です。満たされていない場合は、改良と実験を繰り返します(またはアーキテクチャのリスクを軽減します)。
  • これは「オールオアナッシング」の評価ではありません。アーキテクチャのさまざまな部分が「合格」する一方で、他の部分にはまだ改良が必要です。

シナリオベースのアプローチがどのように見えるかを理解してもらうために、私が大学院で取り組んだキャップストーンプロジェクトの公開ドキュメントがあります。ドキュメントは少し大まかなものですが、ACDMのコンテキスト内でのシナリオベースのアプローチの例をいくつか示すのに役立ちます。私たちは5人のチームで、約35 KLOC Java / GWTの典型的なWebベースのアプリケーションを構築しました。


マイケル、すばらしい答え、すぐに適用できるものに感謝します。
デッカード

2

まず、非公式のホワイトボードディスカッションが好きです。私は、今日必要なアプリケーションの一部のみを記述し、実装中にアーキテクチャを徐々に出現させることが好きです。事前に発明するのではなく、「アーキテクチャを見つける」ことに似ています。このアプローチは、事前の評価をあまり必要とせず、何が重要であるかに焦点を当て続けるのに役立ちます(実用的なソフトウェアを提供します)。

もちろん、機能以外の要件がそれを必要とする場合(メモリの制約、応答時間、同時ユーザー数など)、システムを実装するときにそれを考慮する必要があります。


1
私が同意するところでは、アーキテクチャの進化は問題ありません。チームが、担当するドメインと品質で経験を持ち、適切なタイミングで適切なリスクを管理できる限りです。
マイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.