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.
|
|