로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Software Architecture in Practice

   
지은이 Paul Clements   |   출판사 Addison-Wesley Professional  |   발행일 2012년 09월 25일   |   언어 : English
 
판매가 111,990원94,070원 16%
마일리지 1% 1,120원
발행일 2012-09-25 | 중량: 1.04 kg
ISBN 0321815734 |  9780321815736
기타정보 원서 | 602쪽 | $ 79.99 | Hardcover
예상입고일
배송비 무료배송
    정가, 판매가는 항공 운임료 포함
프로그래밍
종합지수 0p
   
 

The award-winning and highly influential Software Architecture in Practice, Third Edition, has been substantially revised to reflect the latest developments in the field. In a real-world setting, the book once again introduces the concepts and best practices of software architecture—how a software system is structured and how that system’s elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization’s business strategy.



The authors have structured this edition around the concept of architecture influence cycles. Each cycle shows how architecture influences, and is influenced by, a particular context in which architecture plays a critical role. Contexts include technical environment, the life cycle of a project, an organization’s business profile, and the architect’s professional practices. The authors also have greatly expanded their treatment of quality attributes, which remain central to their architecture philosophy—with an entire chapter devoted to each attribute—and broadened their treatment of architectural patterns.



If you design, develop, or manage large software systems (or plan to do so), you will find this book to be a valuable resource for getting up to speed on the state of the art.



Totally new material covers

Contexts of software architecture: technical, project, business, and professional
Architecture competence: what this means both for individuals and organizations
The origins of business goals and how this affects architecture
Architecturally significant requirements, and how to determine them
Architecture in the life cycle, including generate-and-test as a design philosophy; architecture conformance during implementation; architecture and testing; and architecture and agile development
Architecture and current technologies, such as the cloud, social networks, and end-user devices
Preface xv

Reader’s Guide xvii

Acknowledgments xix



Part One: Introduction 1



Chapter 1: What Is Software Architecture? 3

1.1 What Software Architecture Is and What It Isn’t 4

1.2 Architectural Structures and Views 9

1.3 Architectural Patterns 18

1.4 What Makes a “Good” Architecture? 19

1.5 Summary 21

1.6 For Further Reading 22

1.7 Discussion Questions 23



Chapter 2: Why Is Software Architecture Important? 25

2.1 Inhibiting or Enabling a System’s Quality Attributes 26

2.2 Reasoning About and Managing Change 27

2.3 Predicting System Qualities 28

2.4 Enhancing Communication among Stakeholders 29

2.5 Carrying Early Design Decisions 31

2.6 Defining Constraints on an Implementation 32

2.7 Influencing the Organizational Structure 33

2.8 Enabling Evolutionary Prototyping 33

2.9 Improving Cost and Schedule Estimates 34

2.10 Supplying a Transferable, Reusable Model 35

2.11 Allowing Incorporation of Independently Developed Components 35

2.12 Restricting the Vocabulary of Design Alternatives 36

2.13 Providing a Basis for Training 37

2.14 Summary 37

2.15 For Further Reading 38

2.16 Discussion Questions 38



Chapter 3: The Many Contexts of Software Architecture 39

3.1 Architecture in a Technical Context 40

3.2 Architecture in a Project Life-Cycle Context 44

3.3 Architecture in a Business Context 49

3.4 Architecture in a Professional Context 51

3.5 Stakeholders 52

3.6 How Is Architecture Influenced? 56

3.7 What Do Architectures Influence? 57

3.8 Summary 59

3.9 For Further Reading 59

3.10 Discussion Questions 60



Part Two: Quality Attributes 61



Chapter 4: Understanding Quality Attributes 63

4.1 Architecture and Requirements 64

4.2 Functionality 65

4.3 Quality Attribute Considerations 65

4.4 Specifying Quality Attribute Requirements 68

4.5 Achieving Quality Attributes through Tactics 70

4.6 Guiding Quality Design Decisions 72

4.7 Summary 76

4.8 For Further Reading 77

4.9 Discussion Questions 77



Chapter 5: Availability 79

5.1 Availability General Scenario 85

5.2 Tactics for Availability 87

5.3 A Design Checklist for Availability 96

5.4 Summary 98

5.5 For Further Reading 99

5.6 Discussion Questions 100



Chapter 6: Interoperability 103

6.1 Interoperability General Scenario 107

6.2 Tactics for Interoperability 110

6.3 A Design Checklist for Interoperability 114

6.4 Summary 115

6.5 For Further Reading 116

6.6 Discussion Questions 116



Chapter 7: Modifiability 117

7.1 Modifiability General Scenario 119

7.2 Tactics for Modifiability 121

7.3 A Design Checklist for Modifiability 125

7.4 Summary 128

7.5 For Further Reading 128

7.6 Discussion Questions 128



Chapter 8: Performance 131

8.1 Performance General Scenario 132

8.2 Tactics for Performance 135

8.3 A Design Checklist for Performance 142

8.4 Summary 145

8.5 For Further Reading 145

8.6 Discussion Questions 145



Chapter 9: Security 147

9.1 Security General Scenario 148

9.2 Tactics for Security 150

9.3 A Design Checklist for Security 154

9.4 Summary 156

9.5 For Further Reading 157

9.6 Discussion Questions 158



Chapter 10: Testability 159

10.1 Testability General Scenario 162

10.2 Tactics for Testability 164

10.3 A Design Checklist for Testability 169

10.4 Summary 172

10.5 For Further Reading 172

10.6 Discussion Questions 173



Chapter 11: Usability 175

11.1 Usability General Scenario 176

11.2 Tactics for Usability 177

11.3 A Design Checklist for Usability 181

11.4 Summary 183

11.5 For Further Reading 183

11.6 Discussion Questions 183



Chapter 12: Other Quality Attributes 185

12.1 Other Important Quality Attributes 185

12.2 Other Categories of Quality Attributes 189

12.3 Software Quality Attributes and System Quality Attributes 190

12.4 Using Standard Lists of Quality Attributes–or Not 193

12.5 Dealing with “X-ability”: Bringing a New Quality Attribute into the Fold 196

12.6 For Further Reading 200

12.7 Discussion Questions 201



Chapter 13: Architectural Tactics and Patterns 203

13.1 Architectural Patterns 204

13.2 Overview of the Patterns Catalog 205

13.3 Relationships between Tactics and Patterns 238

13.4 Using Tactics Together 242

13.5 Summary 247

13.6 For Further Reading 248

13.7 Discussion Questions 249



Chapter 14: Quality Attribute Modeling and Analysis 251

14.1 Modeling Architectures to Enable Quality Attribute Analysis 252

14.2 Quality Attribute Checklists 260

14.3 Thought Experiments and Back-of-the-Envelope Analysis 262

14.4 Experiments, Simulations, and Prototypes 264

14.5 Analysis at Different Stages of the Life Cycle 265

14.6 Summary 266

14.7 For Further Reading 267

14.8 Discussion Questions 269



Part Three: Architecture in the Life Cycle 271



Chapter 15: Architecture in Agile Projects 275

15.1 How Much Architecture? 277

15.2 Agility and Architecture Methods 281

15.3 A Brief Example of Agile Architecting 283

15.4 Guidelines for the Agile Architect 286

15.5 Summary 287

15.6 For Further Reading 288

15.7 Discussion Questions 289



Chapter 16: Architecture and Requirements 291

16.1 Gathering ASRs from Requirements Documents 292

16.2 Gathering ASRs by Interviewing Stakeholders 294

16.3 Gathering ASRs by Understanding the Business Goals 296

16.4 Capturing ASRs in a Utility Tree 304

16.5 Tying the Methods Together 308

16.6 Summary 308

16.7 For Further Reading 309

16.8 Discussion Questions 309



Chapter 17: Designing an Architecture 311

17.1 Design Strategy 311

17.2 The Attribute-Driven Design Method 316

17.3 The Steps of ADD 318

17.4 Summary 325

17.5 For Further Reading 325

17.6 Discussion Questions 326



Chapter 18: Documenting Software Architectures 327

18.1 Uses and Audiences for Architecture Documentation 328

18.2 Notations for Architecture Documentation 329

18.3 Views 331

18.4 Choosing the Views 341

18.5 Combining Views 343

18.6 Building the Documentation Package 345

18.7 Documenting Behavior 351

18.8 Architecture Documentation and Quality Attributes 354

18.9 Documenting Architectures That Change Faster Than You Can Document Them 355

18.10 Documenting Architecture in an Agile Development Project 356

18.11 Summary 359

18.12 For Further Reading 360

18.13 Discussion Questions 360



Chapter 19: Architecture, Implementation, and Testing 363

19.1 Architecture and Implementation 363

19.2 Architecture and Testing 370

19.3 Summary 376

19.4 For Further Reading 376

19.5 Discussion Questions 377



Chapter 20: Architecture Reconstruction and Conformance 379

20.1 Architecture Reconstruction Process 381

20.2 Raw View Extraction 382

20.3 Database Construction 386

20.4 View Fusion 388

20.5 Architecture Analysis: Finding Violations 389

20.6 Guidelines 392

20.7 Summary 393

20.8 For Further Reading 394

20.9 Discussion Questions 395



Chapter 21: Architecture Evaluation 397

21.1 Evaluation Factors 397

21.2 The Architecture Tradeoff Analysis Method 400

21.3 Lightweight Architecture Evaluation 415

21.4 Summary 417

21.5 For Further Reading 417

21.6 Discussion Questions 418



Chapter 22: Management and Governance 419

22.1 Planning 420

22.2 Organizing 422

22.3 Implementing 427

22.4 Measuring 429

22.5 Governance 430

22.6 Summary 432

22.7 For Further Reading 432

22.8 Discussion Questions 433



Part Four: Architecture and Business 435



Chapter 23: Economic Analysis of Architectures 437

23.1 Decision-Making Context 438

23.2 The Basis for the Economic Analyses 439

23.3 Putting Theory into Practice: The CBAM 442

23.4 Case Study: The NASA ECS Project 450

23.5 Summary 457

23.6 For Further Reading 458

23.7 Discussion Questions 458



Chapter 24: Architecture Competence 459

24.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects 460

24.2 Competence of a Software Architecture Organization 467

24.3 Summary 475

24.4 For Further Reading 475

24.5 Discussion Questions 477



Chapter 25: Architecture and Software Product Lines 479

25.1 An Example of Product Line Variability 482

25.2 What Makes a Software Product Line Work? 483

25.3 Product Line Scope 486

25.4 The Quality Attribute of Variability 488

25.5 The Role of a Product Line Architecture 488

25.6 Variation Mechanisms 490

25.7 Evaluating a Product Line Architecture 493

25.8 Key Software Product Line Issues 494

25.9 Summary 497

25.10 For Further Reading 498

25.11 Discussion Questions 498



Part Five: The Brave New World 501



Chapter 26: Architecture in the Cloud 503

26.1 Basic Cloud Definitions 504

26.2 Service Models and Deployment Options 505

26.3 Economic Justification 506

26.4 Base Mechanisms 509

26.5 Sample Technologies 514

26.6 Architecting in a Cloud Environment 520

26.7 Summary 524

26.8 For Further Reading 524

26.9 Discussion Questions 525



Chapter 27: Architectures for the Edge 527

27.1 The Ecosystem of Edge-Dominant Systems 528

27.2 Changes to the Software Development Life Cycle 530

27.3 Implications for Architecture 531

27.4 Implications of the Metropolis Model 533

27.5 Summary 537

27.6 For Further Reading 538

27.7 Discussion Questions 538



Chapter 28: Epilogue 541



References 547

About the Authors 561

Index 563
Len Bass is a Senior Principal Researcher at National ICT Australia Ltd (NICTA). He joined NICTA in 2011 after twenty-five years at the Software Engineering Institute (SEI) at Carnegie Mellon University. He is the coauthor of two award-winning books in software architecture, including Documenting Software Architectures: Views and Beyond, Second Edition (Addison-Wesley, 2011), as well as several other books and numerous papers in computer science and software engineering on a wide range of topics. Len has almost fifty years’ experience in software development and research in multiple domains, such as scientific analysis systems, embedded systems, and information systems.

Paul Clements is the Vice President of Customer Success at BigLever Software, Inc., where he works to spread the adoption of systems and software product line engineering. Prior to this position, he was Senior Member of the Technical Staff at the SEI, where, for 17 years, he lead or co-lead projects in software product line engineering and software architecture documentation and analysis. Other books Paul has coauthored include Documenting Software Architectures: Views and Beyond, Second Edition (Addison-Wesley, 2011) and Evaluating Software Architectures: Methods and Case Studies, (Addison-Wesley, 2002), and Software Product Lines: Practices and Patterns (Addison-Wesley, 2002). In addition, he has also published dozens of papers in software engineering reflecting his long-standing interest in the design and specification of challenging software systems. Paul was a founding member of the IFIP WG2.10 Working Group on Software Architecture.

Rick Kazman is a Professor at the University of Hawaii and a Visiting Scientist (and former Senior Member of the Technical Staff) at the SEI. He is a coauthor of Evaluating Software Architectures: Methods and Case Studies, (Addison-Wesley, 2002). Rick’s primary research interests are software architecture, design and analysis tools, software visualization, and software engineering economics. He is also interested in human-computer interaction and information retrieval. Rick was one of the creators of several highly influential methods and tools for architecture analysis, including the SAAM (Software Architecture Analysis Method), the ATAM (Architecture Tradeoff Analysis Method), the CBAM (Cost-Benefit Analysis Method), and the Dali architecture reverse engineering tool.
등록된 서평이 없습니다.
Aditya Gup...
 
전체평균(0)
회원평점   회원서평수 0
Paul Clements 의 최근 저서
 
The Creative Underground: Art, Politics and Everyday Life (Routledge Research in Cultural and Media Studies)
180,180원
(22%↓+1%)
 
Rick Kazman 의 최근 저서
 
Managing Trade-Offs in Adaptable Software Architectures
134,400원
(20%↓+1%)
 
Economics-Driven Software Architecture
134,400원
(20%↓+1%)
 
Paul Clements 의 최근 저서
 
Charles Bukowski, Outsider Literature, and the Beat Movement
185,640원
(22%↓+1%)
 
Addison-Wesley Professional 출판사의 신간
Elemental Design Patterns
Jason McColm Smith 저
40,180원
(2%↓+0%)
 
Multicore Application Programming: For Windows, Linux, and Solaris
Darryl Gove 저
52,250원
(5%↓+1%)
 
Service-Oriented Design with Ruby and Rails
Paul Dix 저
54,870원
(16%↓+1%)
 
Patterns-Based Engineering: Successfully Delivering Solutions Via Patterns
Lee Ackerman 저
59,750원
(16%↓+1%)
 
Lean Integration: An Integration Factory Approach to Business Agility
David Lyle 저
45,090원
(15%↓+1%)
 
이메일주소수집거부