- •Chapter 1: What is Software Architecture? What is Software Architecture?
- •Why is Architecture Important?
- •The Goals of Architecture
- •The Architectural Landscape
- •The Principles of Architecture Design
- •Key Architecture Principles
- •Chapter 2: Key Principles of Software Architecture Overview
- •Key Design Principles
- •Determine the Application Type
- •Determine the Deployment Strategy
- •Determine the Appropriate Technologies
- •Key Design Considerations
- •Determine the Quality Attributes
- •Determine the Crosscutting Concerns
- •Chapter 3: Architectural Patterns and Styles
- •Contents
- •Overview
- •What Is An Architectural Style?
- •Summary of Key Architectural Styles
- •Combining Architectural Styles
- •Client/Server Architectural Style
- •Component-Based Architectural Style
- •Domain Driven Design Architectural Style
- •Layered Architectural Style
Key Design Considerations
This guide describes the major decisions that you must make, and which help to ensure that you consider all of the important factors as you begin and then iteratively develop your architecture design. The major decisions, briefly described in the following sections, are:
Determine the Application Type
Determine the Deployment Strategy
Determine the Appropriate Technologies
Determine the Quality Attributes
Determine the Crosscutting Concerns
For a more detailed description of the design process, see Chapter 4 "A Technique for Architecture and Design."
Determine the Application Type
Choosing the appropriate application type is the key part of the process of designing an application. Your choice is governed by your specific requirements and infrastructure limitations. Many applications must support multiple types of client, and may make use of more than one of the basic archetypes. This guide covers the following basic application types:
Applications designed for mobile devices.
Rich client applications designed to run primarily on a client PC.
Rich Internet applications designed to be deployed from the Internet, which support rich UI and media scenarios.
Service applications designed to support communication between loosely coupled components.
Web applications designed to run primarily on the server in fully connected scenarios.
In addition, it provides information and guidelines for some more specialist application types. These include the following:
Hosted and cloud-based applications and services.
Office Business Applications (OBAs) that integrate Microsoft Office and Microsoft server technologies.
SharePoint Line of Business (LOB) applications that provide portal style access to business information and functions.
For more information about application archetypes, see Chapter 20 "Choosing an Application Type."
Determine the Deployment Strategy
Your application may be deployed in a variety of environments, each with its own specific set of constraints such as physical separation of components across different servers, a limitation on networking protocols, firewall and router configurations, and more. Several common deployment patterns exist, which describe the benefits and considerations for a range of distributed and non-distributed scenarios. You must balance the requirements of the application with the appropriate patterns that the hardware can support, and the constraints that the environment exerts on your deployment options. These factors will influence your architecture design.
For more information about deployment issues, see Chapter 19 "Physical Tiers and Deployment."
Determine the Appropriate Technologies
When choosing technologies for your application, the key factors to consider are the type of application you are developing and your preferred options for application deployment topology and architectural styles. Your choice of technologies will also be governed by organization policies, infrastructure limitations, resource skills, and so on. You must compare the capabilities of the technologies you choose against your application requirements, taking into account all of these factors before making decisions.
For more information about technologies available on the Microsoft platform, see Appendix A "The Microsoft Application Platform."
