Cheat Sheet – Architecture Meta Frame (AMF)

J.D. Meier, Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher, Akshay Bogawat

Overview

The architecture meta-frame can help you to think about the key factors that can influence your design. Use the meta-frame to think through how to design your architecture, to help you ask key questions when reviewing your architecture, and as a way to organize your thoughts during design activities. The following figure shows a schematic representation of the Architecture Meta Frame (AMF).

ArchMetaFrame.PNG

Key Features of the Architecture Meta Frame

The meta-frame contains the following key components:
  • Scenarios. Application scenarios tie architecture solutions to the real world scenarios that impact your application design. For example, your application may map to an Internet Web application scenario, which has unique architecture solutions compared to a mobile client application.
  • Quality Attributes. Quality attributes represent cross-cutting concerns that apply across application types, and should be considered regardless of architecture style. Security, performance, maintainability, and reusability are examples of quality attributes.
  • Requirements and Constraints. Requirements and constraints narrow the range of possible solutions for your application architecture problems.
  • Application Types. Application types categorize the major application technology stacks on the Microsoft platform. Examples of application types include Mobile, Rich Internet Application (RIA), Services Application, and Web Application.
  • Architecture Styles. An architectural style is a collection of principles that shapes the design of your application. Many of these styles overlap and can be used in combination. Architectural styles tend to be tied both to the application type as well as to the point in time in which the application was developed.
  • Architecture Frame. The architecture frame is a collection of hot spots you can use to analyze your application architecture. This helps you turn core features such as caching, data access, validation, and workflow into actions.

Architecture Frame

The architecture frame is a collection of hot-spots that represent key engineering decisions. Each represents an opportunity to improve your design and build a technically more effective architecture. This architecture frame is part of the larger architecture meta-frame, and can be used to organize key patterns, principles and practices for your architecture. These categories help you to focus on the most important areas, and obtain the most meaningful and actionable guidance.

Categories

Use the table below to review and understand each category in the architecture frame.

Category Description
Authentication and Authorization Authentication and authorization allow you to identify the users of your application with confidence, and determine the resources and operations to which they should have access.
Caching and State Caching improves performance, reduces server roundtrips, and can be used to maintain the state of your application.
Communication Communication strategies determine how you will communicate between layers and tiers; including protocol, security and communication style decisions.
Composition Composition strategies determine how you manage component dependencies, and the interactions between components.
Concurrency and Transactions Concurrency is concerned with the way that your application handles conflicts caused by multiple users creating, reading, updating and deleting data at the same time. Transactions are used for important multi-step operations to treat them as though they were atomic, and recover in the case of a failure or error.
Configuration Management Configuration management defines how you configure your application after deployment, where you store configuration data, and how you protect configuration data.
Coupling and Cohesion Coupling and cohesion are strategies concerned with layering, separating application components and layers, and organizing your application trust and functionality boundaries.
Data Access Data access strategies describe techniques for abstracting and accessing data in your data store. This includes data entity design, error management, and managing database connections.
Exception Management Exception management strategies describe techniques for handling errors, logging errors for auditing purposes, and notifying users of error conditions.
Logging and Instrumentation Logging and instrumentation represents the strategies for logging key business events, security actions, and provision of an audit trail in the case of an attack or failure.
User Experience User experience is the interaction between your users and your application. A good user experience can improve the efficiency and effectiveness of the application, while a poor user experience may deter users from using an otherwise well-designed application.
Validation Validation is the means by which your application checks and verifies input from all sources before trusting and processing it. A good input and data validation strategy takes into account not only the source of the data, but also how the data will be used, when determining how to validate it.
Workflow Workflow is a system-assisted process that is divided into a series of execution steps, events, and conditions. The workflow may be an orchestration between a set of components and systems, or it may include human collaboration.

Key Engineering Decisions

Use the architecture frame as a way to organize and think about key engineering decisions. The following table shows key engineering decisions for each category in the architecture frame.

Category Key Problems
Authentication and Authorization How to store user identities.
How to authenticate callers.
How to authorize callers.
How to flow identity across layers and tiers
Caching and State How to choose effective caching strategies.
How to improve performance by using caching.
How to improve availability by using caching.
How to keep cached data up to date.
How to determine the data to cache.
How to determine where to cache the data.
How to determine an expiration policy and scavenging mechanism.
How to load the cache data.
How to synchronize caches across a Web or application farm.
Communication How to communicate between layers and tiers.
How to perform asynchronous communication.
How to communicate sensitive data.
Composition How to design for composition.
How to design loose coupling between modules.
How to handle dependencies in a loosely-coupled way.
Concurrency and Transactions How to handle concurrency between threads.
How to choose between optimistic and pessimistic concurrency.
How to handle distributed transactions.
How to handle long running transactions.
How to determine appropriate transaction isolation levels.
How to determine whether compensating transactions are required.
Configuration Management How to determine the information that must be configurable.
How to determine location and techniques for storing configuration information.
How to handle sensitive configuration information.
How to handle configuration information in a farm or cluster.
Coupling and Cohesion How to separate concerns.
How to structure the application.
How to choose an appropriate layering strategy.
How to establish boundaries.
Data Access How to manage database connections.
How to handle exceptions.
How to improve performance.
How to improve manageability.
How to handle binary large objects (BLOBs).
How to page records.
How to perform transactions.
Exception Management How to handle exceptions.
How to log exceptions.
Logging and Instrumentation How to determine the information to log.
How to make logging configurable.
User Experience How to improve task efficiency and effectiveness.
How to improve responsiveness.
How to improve user empowerment.
How to improve the look and feel.
Validation How to determine location and techniques for validation.
How to validate for length, range, format, and type.
How to constrain and reject input.
How to sanitize output.
Workflow How to handle concurrency issues within a workflow.
How to handle task failure within a workflow.
How to orchestrate processes within a workflow.

Additional Resources

Last edited Nov 20, 2008 at 11:35 PM by prashantbansode, version 3

Comments

No comments yet.