Essential Software Architecture
Ian Gorton
Foreword
Architects learn on the job, bring years of experience in design and technology to business problems they tackle.
Preface
Application servers, component technologies and messaging infrastructures are the basic building blocks that are import to an IT architect.
Definition of Software Architecture
a. Architecture Defines Structure
An architecture must be designed to meet the specific requirements and constrains of the application it is intended for.
In partitioning an application, the architect assigns responsibilities to each constituent component. These responsibilities define the tasks a component can be relied upon to perform within the application. In this manner, each component plays a specific role in the application, and the overall component ensemble that comprise the architecture collaborates to provide the required functionality.
Responsibility-driven Design can be used effectively to help define the key components in an architecture.
A key structural issue for nearly all applications is minimizing dependencies between components, creating a loosely coupled architecture from a set of highly cohesive components.
b. Architecture Specifies Component Communication
A body of work known collectively as architectural patterns or styles has cataloged a number of successfully used structures that facilitate certain kinds of component communication. There patterns are essentially reusable architectural blueprints that describe the structure and interaction between collections of participating components.
Large systems tend to use multiple patterns, combined in ways that satisfy the architecture requirement. When a architecture is based around patterns, it also becomes easy for team members to understand a design.
c. Architecture Addresses Non-functional Requirements
Rather than define what the application does, they are concerned with how the application provides the required functionality.
There are three distinct areas of non-functional requirements:
Technical constraints
Business constraints
Quality constraints
An application architecture must therefore explicitly address these aspects of the design.
d. Architecture is an Abstraction
One of the most powerful mechanisms for describing an architecture is hierarchical decomposition. Different levels of description in the hierarchy tend to be of interest to different developers in project.
In reality, any architectural description must employ abstraction in order to be understandable by the team members and project stakeholders.
e. Architecture View
Views and Beyond approach recommends capturing an architecture model using three different views:
Module: This is a structural view of the architecture, comprising the code modules such as classes, packages and subsystems in the design. It also captures module decomposition, inheritance, associations and aggregations.
Component and Connector: This view describes the behavioral aspects of the architecture. Components are typically objects, threads or processes, and the connectors describe how the components interact. Common connectors are sockets, middleware like CORBA or shared memory.
Allocation: This view shows the processes in the architecture are mapped to hardware, and how they communicate using networks and/or databases.
What Does a Architect Do?
a. Liaison
Architects play many liaison roles. They liaise between the customers or clients of the application and the technical team, often in conjunction with the business and requirement analysts. They liaise between the various engineering teams on a project, as the architecture is central to each of these. They liaise with management, justifying designs, decisions and costs. Much of the time, this liaison takes the form of simply translating and explaining different terminology between different stakeholders.
b. Software Engineering
Excellent design skills are what get a software engineer to the position of architect. They are an essential pre-requisite for the roles. More broadly though, architects must promote good software engineering practices. Their designs must be adequately documented and communicated and their plans must be explicit and justified.
c. Technology Knowledge
Architects have a deep understanding of the technology domains that are relevant to the types of applications they work on. They are influential in evaluating and choosing third party components and technologies. They tract technology development, and understand how new standards, features and products might be usefully exploited in their projects. Just as importantly, good architects know what they don't know.
d. Risk Management
Good architects tend to be cautious. They are constantly enumerating and evaluating the risks associated with the design and technology choices they make. They document and manage these risks in conjunction with project sponsors and management.
Architectures and Technologies
Architects must make design decisions early in a project lifecycle. Judicious prototyping of key architectural components can help increase confidence in a design approach, but sometimes it's still hard to be certain of the success of a particular design choice in a given application context.
Competition between product vendors drives innovation, better feature sets and implementations, and lower prices, but it also places a burden on the architect to select a product that has quality attributes that satisfy the application requirement. Different COTS technology implementation have different sets of strengths and weaknesses and costs, and consequently will be better suited to some types of application than others.
The difficulty for architects is in understanding these strengths and weaknesses early in the development cycle for a project, and choosing an appropriate reification of the architectural patterns they need.
Summary
"The life of a software architect is a long (and sometimes painful) succession of sub-optimal decisions made partly in the dark". -Philippe Krutchen
分享到:
- 2007-12-23 17:48
- 浏览 893
- 评论(0)
- 论坛回复 / 浏览 (0 / 1698)
- 查看更多
相关推荐
Ian Gorton在《Essential Software Architecture, Second Edition》中展示了他在软件架构领域的深厚见解,并通过丰富的案例研究和最新的研究成果,为读者提供了一个了解软件架构最新发展的学习平台。这本书不仅适合...
This award-winning book, substantially updated to reflect the latest developments in the field, introduces the concepts and best practices of software architecture-how a software system is structured ...
- **书名**:《Essential Software Architecture》 - **作者**:Ian Gorton - **出版社**:Springer - **出版年份**:2006年 - **ISBN**: - ISBN-10: 3-540-28713-2 - ISBN-13: 978-3-540-28713-1 - **分类**:...
- **《Essential Software Test Design》**是一本由ryber撰写的关于软件测试的经典著作,该书深入探讨了软件测试的设计方法及其在实际项目中的应用。 - 作者通过丰富的实例和实践经验,提供了许多实用的软件测试工程...
Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager—and for every programmer who must execute someone else...
12 More Essential Skills for Software Architects 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Dave Hendricksen illuminated the soft skills in his highly-regarded 12 Essential Skills for Software Architects. Now, in 12 More Essential Skills for Software Architects he turns to the technical ...
Software architecture is about learning how to relate to people and ... 12 Essential Skills of Software Architects focused on soft skills – without these, the rest of the journey is nearly impossible
12 More Essential Skills for Software Architects 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn...
11. "Essential Software Architecture",作者Ian Gorton,2006年出版,提供了软件架构基础知识的概述。 除了这些书籍,文档还提到了一些其他书籍和主题,如软件架构的理论基础、评估方法、体系架构描述语言、架构...
《DSP架构设计精要》是一本专注于数字信号处理(Digital Signal Processing,简称...由于本书是关于DSP架构设计的精要教材,因此在详细阅读之后,可以预期它将对学习者在信号处理硬件设计方面的知识技能带来显著提升。
and how to prevent (or fix) these failures, Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager—and for ...
《开源软件:Essential Software Installer》 开源软件是信息技术领域的一种重要趋势,它鼓励透明、协作和自由分享的开发模式。今天我们要关注的是一款名为"Essential Software Installer"的开源程序,这款应用专为...
Designed for undergraduate students in introductory courses, the text covers all essential topics emphasized by the IEEE Computer Society-sponsored Software Engineering Body of Knowledge (SWEBOK)....
Mobile computing devices have evolved from fixed-purpose communications tools to compelling and extensible mass-market computing platforms. Now, they stand poised to offer truly ubiquitous and mobile ...
featuring a plethora of illustrations, and comprehensive in scope, PCI Express System Architecture is an essential resource for anyone working with this important technology.MindShare's PC System ...
9. **未来发展**:最后,作者可能会展望DSP架构的未来趋势,如云计算中的DSP应用、能源效率的提升、以及人工智能和机器学习对DSP架构的影响。 《Readme.png》文件可能是书的配套资源说明,提供了关于如何使用电子书...