Checklist - Presentation Layer

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

Design Considerations

  • UI technology choice is based on application requirements and constraints.
  • Relevant presentation layer patterns such as Template View pattern are identified and used in the design.
  • The application is designed to separate rendering components from components that manage presentation data and process.
  • Organizational UI guidelines are well understood and addressed by the design.
  • The design is based upon knowledge of how the user wants to interact with the system.

Caching

  • Volatile data is not cached.
  • Sensitive data is not cached unless absolutely necessary and encrypted.
  • Data is cached is a ready to use format to reduce processing after the cached data is retrieved.
  • Local caches are not used if your application is deployed in Web farm.

Composition

  • Dynamic layouts are avoided, when possible.
  • Abstraction patterns are used to avoid dependencies between components.
  • Composite View pattern is used if you need to compose views from modular, atomic components.
  • Template View pattern, through the use of Master Pages, is used to create consistent, reusable, dynamic web pages.
  • Publish/Subscribe pattern is used for communication between dynamically loaded modules.
  • Command pattern is used to support menu and command-driven interaction.

Exception Management

  • Sensitive data or internal application details are not revealed to users through error messages or in exceptions that cross trust boundaries.
  • User-friendly error messages are displayed in the event of an exception that impacts the user.
  • Unhandled exceptions are captured.
  • Exceptions are not used to control application logic.
  • System exceptions and business errors are identified.
  • Exceptions are logged to support troubleshooting when necessary.

Input

  • Forms-based input is used for normal data collection.
  • Document-based input is used for collecting input in Microsoft Office–style documents.
  • Wizard-based input is used for complex data collection tasks or input that requires workflow.
  • Device-dependant input, such as ink or speech, is considered in the design.
  • Accessibility was considered in the design.
  • Localization was considered in the design.

Layout

  • Templates are used to provide a common look and feel.
  • A common layout is used to maximize accessibility and ease of use.
  • The layout considers device-dependent input, such as touch screens, ink, or speech.
  • If you are designing a web application, Cascading Style Sheets (CSS) are used wherever possible for layout.
  • Design patterns such as MVP are used to separate layout design from interface processing.

Navigation

  • Navigation is separated from UI processing.
  • Toolbars and menus are designed to help users find functionality provided by the UI.
  • Wizards are used to implement navigation between firms in a predictable way.
  • If navigation state is needed across sessions, the application is designed to persist navigation state.
  • Command pattern is used to handle common actions from multiple sources.

Presentation Entities

  • Presentation entities are used only if you need to manage unique data or data formats in the presentation layer.
  • Presentation entities do not contain business logic.
  • Custom classes are used to map data directly to business entities.
  • Platform-provided classes, such as DataSets or Arrays, are used for data-bound controls.
  • Presentation entities contain input validation logic for the presentation layer.

Request Processing

  • Requests do not block the UI.
  • Long running requests are identified in the design and optimized for UI responsiveness.
  • UI request processing are unique components and are not mixed with components that render the UI or components that instantiate business rules.
  • Passive View pattern is used to design interfaces that do not manage a lot of data.
  • Supervising Controller pattern is used for interfaces that manage large amounts of data.

User Experience

  • UI responsiveness is considered in the design. For instance, rich clients don’t block UI threads and Rich Internet Applications avoid synchronous processing.
  • AJAX is used if you are building a web application and user responsiveness is important.
  • The design has identified key user scenarios and has made them as simple to accomplish as possible.
  • The design supports personalization, localization, and accessibility.
  • The design empowers users, allowing them to control how they interact with the application and how it displays data.

UI Components

  • Platform provided controls are used except for where it is absolutely necessary to use a custom or third party control for specialized display or input tasks.
  • Platform provided data-binding is used where possible.
  • Custom controls are created extending existing controls.
  • State is stored in platform provided state management features, such as ViewState, for ASP.NET applications.
  • Presentation Model pattern is used to manage UI state in WPF or Silverlight applications.

UI Processing Components

  • UI process components are created only when necessary.
  • If the UI requires complex processing, UI processing has been decoupled from rendering and display into unique UI processing components.
  • If the UI requires complex workflow support, the design includes unique workflow components that use a workflow system such as Windows Workflow.
  • UI processing has been divided into model, view and controller or presenter by using the MVC or MVP pattern.
  • UI processing components do not include business rules.

Validation

  • The application constrains, rejects and sanitizes all input that comes from the client.
  • Server-side validation is used to validate input for security purposes.
  • Client-side validation is used to validate input for user experience purposes, for instance to give the user error messages after receiving poor input.
  • Built-in validation controls are used when possible.
  • AJAX is used in Web applications to provide real-time validation.
  • Validation routines are centralized, where possible, to improve maintainability and reuse.

Last edited Dec 19, 2008 at 7:47 PM by prashantbansode, version 2

Comments

No comments yet.