Chapter 1: What Is Software Architecture?
Chapter 1: What Is Software Architecture?
Pgina 1 de 4
Contents
What is Software Architecture? The Goals of Architecture The Principles of Architecture Design
http://msdn.microsoft.com/en-us/library/ee658098(printer).aspx
30/10/2009
Pgina 2 de 4
Systems should be designed with consideration for the user, the system (the IT infrastructure), and the business goals. For each of these areas, you should outline key scenarios and identify important quality attributes (for example, reliability or scalability) and key areas of satisfaction and dissatisfaction. Where possible, develop and consider metrics that measure success in each of these areas.
Figure 1 User, business, and system goals Tradeoffs are likely, and a balance must often be found between competing requirements across these three areas. For example, the overall user experience of the solution is very often a function of the business and the IT infrastructure, and changes in one or the other can significantly affect the resulting user experience. Similarly, changes in the user experience requirements can have significant impact on the business and IT infrastructure requirements. Performance might be a major user and business goal, but the system administrator may not be able to invest in the hardware required to meet that goal 100 percent of the time. A balance point might be to meet the goal only 80 percent of the time. Architecture focuses on how the major elements and components within an application are used by, or interact with, other major elements and components within the application. The selection of data structures and algorithms or the implementation details of individual components are design concerns. Architecture and design concerns very often overlap. Rather than use hard and fast rules to distinguish between architecture and design, it makes sense to combine these two areas. In some cases, decisions are clearly more architectural in nature. In other cases, the decisions are more about design, and how they help you to realize that architecture. By following the processes described in this guide, and using the information it contains, you will be able to construct architectural solutions that address all of the relevant concerns, can be deployed on your chosen infrastructure, and provide results that meet the original aims and objectives. Consider the following high level concerns when thinking about software architecture: How will the users be using the application? How will the application be deployed into production and managed? What are the quality attribute requirements for the application, such as security, performance, concurrency, internationalization, and configuration? How can the application be designed to be flexible and maintainable over time? What are the architectural trends that might impact your application now or after it has been deployed?
http://msdn.microsoft.com/en-us/library/ee658098(printer).aspx
30/10/2009
Pgina 3 de 4
requirements. Keep in mind that the architecture should: Expose the structure of the system but hide the implementation details. Realize all of the use cases and scenarios. Try to address the requirements of various stakeholders. Handle both functional and quality requirements.
http://msdn.microsoft.com/en-us/library/ee658098(printer).aspx
30/10/2009
Pgina 4 de 4
Additional Resources
Bass, Len, Paul Clements, and Rick Kazman. Software Architecture in Practice, 2nd ed. Addison-Wesley Professional, 2003. Fowler, Martin. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.
http://msdn.microsoft.com/en-us/library/ee658098(printer).aspx
30/10/2009