This project is read-only.

Architectural and Design Tasks Map

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

Categories

  • Authentication and Authorization
  • Caching and State
  • Communication
  • Composition
  • Concurrency and Transactions
  • Configuration Management
  • Coupling and Cohesion
  • Data Access
  • Exception Management
  • Logging and Instrumentation
  • User Experience
  • Validation
  • Workflow

Authentication and Authorization

  • How to identify trust boundaries?
  • How to design single sign-on strategy?
  • How to design role-based authorization?
  • How to design resource-based authorization?
  • How to design claims-based authorization?
  • How to design a trusted sub-system?
  • How to flow identity across layers and tiers?

Caching

  • How to improve performance with caching?
  • How to decide what data to cache?
  • How to decide where to cache data?
  • How to cache data on client side?
  • How to cache user specific data?
  • How to manage expiration policy and scavenging mechanism?
  • How to protect cached data?
  • How to implement thread safety for the cached items using locking?
  • How to cache data proactively?
  • How to cache data reactively?
  • How to design caching for distributed environment?
  • How to design caching for web farm scenarios?

Communication

  • How to structure an application to optimize communication efficiency?
  • How to design for remote communication?
  • How to protect communication channels?
  • How to choose a communication protocol?
  • How to pass data across layers?
  • How to flow identity across layers (tiers)?
  • How to secure communication between the layers?
  • How to design for synchronous communication?
  • How to design for asynchronous communication?
  • How to design fire and forget (one way) communication?

Concurrency and Transactions

  • How to design for transactions?
  • How to manage distributed transactions?
  • How to design for atomic transactions?
  • How to design for long running transactions?
  • How to design for distributed transactions?
  • How to choose isolation level?

Configuration Management

  • How to design configuration?
  • How to choose for configuration store?
  • How to separate application data from configuration data?
  • How to synchronize configuration across distributed environment?
  • How to protective sensitive configuration information?
  • How to enable changing configuration information at run-time?

Coupling and Cohesion

  • How to design for loose coupling across layers?
  • How to design for high cohesion within layers?
  • How to design message based interfaces?

Data Access

  • How to design your data access layer?
  • How to design data abstraction?
  • How to pass data across layers and tiers?
  • How to model your data?
  • How to page records?
  • How to design for very large databases?
  • How to design a domain-driven architecture?
  • How to design a database-driven architecture?
  • How to manage database connections?
  • How to handle transactions?
  • How to handle concurrency?
  • How to design for a multi-tenant database?

Exception Management

  • How to design exception management?
  • How to design for unhandled exceptions?
  • How to design structured exception handling?
  • How to design for appropriate display of exception data?
  • How to plan and design for exception logging?
  • How to propagate exceptions in a distributed design?
  • How to design for notifications?

Layering

  • How to design layering?
  • How to choose communication options between layers?
  • How to design message based interfaces for remove layers?
  • How to separate layers into areas of concerns?

Logging and Instrumentation

  • How to design logging?
  • How to design for instrumentation?
  • How to design logging for distributed environment?
  • How to design logging for web farm scenario?
  • How to configure logging?
  • How to secure logged data?

State Management

  • How to choose the appropriate state model?
  • How to flow call context data across application layers?
  • How to design State Management?
  • How to store state?
  • How to manage state in a web farm?
  • How to protect state data?
  • How to design for passing data across tiers?

Structure

  • How to choose patterns for structuring your application?
  • How to factor security requirements when structuring your application?
  • How to factor performance and scalability requirements when structuring your application?
  • How to factor the applications into layers, components and services?
  • How to factor the application into tiers?

Validation

  • How to identify trust boundaries?
  • How to design a centralized validation solution?
  • How to validate input and data against business rules?
  • How to validate input and data for security?
  • How to validate the integrity of data?
  • How to handle data validation exceptions?

Workflow

  • How to design workflow?
  • How to choose a workflow technology?
  • How to choose authoring mode?

Last edited Jul 14, 2010 at 7:26 PM by paulenfield, version 1

Comments

No comments yet.