Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Chapter 1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
241 Кб
Скачать
☆

Determine the Quality Attributes

Quality attributes—such as security, performance, and usability—can be used to focus your thinking on the critical problems that your design should solve. Depending on your requirements, you might need to consider every quality attribute covered in this guide, or you might only need to consider a subset. For example, every application design must consider security and performance, but not every design needs to consider interoperability or scalability. Understand your requirements and deployment scenarios first so that you know which quality attributes are important for your design. Keep in mind that quality attributes may conflict; for example, security often requires a tradeoff against performance or usability.

When designing to accommodate quality attributes, consider the following guidelines:

  • Quality attributes are system properties that are separate from the functionality of the system.

  • From a technical perspective, implementing quality attributes can differentiate a good system from a bad one.

  • There are two types of quality attributes: those that are measured at run time, and those that can only be estimated through inspection.

  • Analyze the tradeoffs between quality attributes.

Questions you should ask when considering quality attributes include:

  • What are the key quality attributes required for your application? Identify them as part of the design process.

  • What are the key requirements for addressing these attributes? Are they actually quantifiable?

  • What are the acceptance criteria that will indicate that you have met the requirements?

For more information about quality attributes, see Chapter 16 "Quality Attributes."

Determine the Crosscutting Concerns

Crosscutting concerns represent key areas of your design that are not related to a specific layer in your application. For example, you should consider implementing centralized or common solutions for the following:

  • A logging mechanism that allows each layer to log to a common store, or log to separate stores in such a way that the results can be correlated afterwards.

  • A mechanism for authentication and authorization that passes identities across multiple layers to permit granting access to resources.

  • An exception management framework that will work within each layer, and across the layers as exceptions are propagated to the system boundaries.

  • A communication approach that you can use to communicate between the layers.

  • A common caching infrastructure that allows you to cache data in the presentation layer, the business layer, and the data access layer.

The following list describes some of the key crosscutting concerns that you must consider when architecting your applications:

  • Instrumentation and logging. Instrument all of the business-critical and system-critical events, and log sufficient details to recreate events in your system without including sensitive information.

  • Authentication. Determine how to authenticate your users and pass authenticated identities across the layers.

  • Authorization. Ensure proper authorization with appropriate granularity within each layer, and across trust boundaries.

  • Exception management. Catch exceptions at functional, logical, and physical boundaries; and avoid revealing sensitive information to end users.

  • Communication. Choose appropriate protocols, minimize calls across the network, and protect sensitive data passing over the network.

  • Caching. Identify what should be cached, and where to cache, to improve your application’s performance and responsiveness. Ensure that you consider Web farm and application farm issues when designing caching.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]