본문 바로가기

IT 살이/04. 기술 - 아키텍처

책상정리 #2 - Software Architecture In Practice

책상에서 책꽂이로 이동시킬 두번째 녀석들이다. 달봉이가 IT쪽으로 와서, 7,8년전에 처음으로 이쪽 자격증 시험을 본적이 있다. 실패는 했지만, 이쪽의 비전공자로서 IT 분야의 전체적인 기술부분을 정리할 계기가 되었다. 이때 만나서 관심을 가지고서는 이후로 계속 구입해 온 녀석들인데, 아직 완독을 못하고 있다.

아키텍처를 공부하는 사람은 모두(?) 알고 있다고 할 수 있는 유명한 책들이다. 그러나 지금 근무하는 곳의 환경때문에 이 녀석들을 사랑할 시간을 좀 처럼 만들지 못하고 있다. 현재 일하고 있는 직장에서는 아키텍처라는 용어 자체를 사용하지 않는 곳이다. 아직도 "정보공학" 방법론에나 맞을것 같은 조직 구조와 명칭을 사용한다. 아키텍처라 하면 아주 아주 기술적인 주제로만 생각한다. 한마디로 "기술쟁이"들이나 사용하는 것으로 취급해 버린다. 물론 아키텍트라는 역할 정의도 없다. 환경이 이렇다 보니 이 녀석에게도 선뜻 시간을 할애하지 못하고 있다.


  


1)"소프트웨어 아키텍처 이론과 실제"

- 번역본으로서 2nd 에디션이다.


2) "소프트웨어 아키텍처 문서화"

- 아키텍처 설계를 문서화하는 방법을 설명한다. 


3) "Software Architecture In Practice"

- 첫번째 책의 3rd 에디션이다.


목차는 최신 버전으로...! 목차를 그대로 옮기는 것도 시간이 꽤 든다. 그래도 빠른 시간에 전체적인 내용을 overview하는데 꽤 괜찮은 방법이다. 그냥 눈으로 읽고 끝낼 수도 있지만 이렇게 타이핑하는 것이 효과적인 것 같다. 


PART ONE INTRODUCTION

CHAPTER 1 What Is Software Architecture?

   1.1 What Software Architecture Is and What It Isn't

   1.2 Architectural Structures and Views

   1.3 Architectural Patterns

   1.4 What Makes a "Good" Architecture?

   1.5 Summary

   1.6 For Further Reading

   1.7 Discussion Questions

CHAPTER 2 Why Is Software Architecture Important?

   2.1 Inhibiting or Enabling a System's Quality Attributes

   2.2 Reasoning About and Managing Change

   2.3 Predicting System Qualities

   2.4 Enhancing Communication among Stakeholders

   2.5 Carrying Early Design Decisions

   2.6 Defining Constraints on an Implementation

   2.7 Influencing the Organizational Structure

   2.8 Enabling Evolutionary Prototyping

   2.9 Improving Cost and Schedule Estimates

   2.10 Supplying a Transferable, Reusable Model

   2.11 Allowing Incorporation of Independently Developed Components

   2.12 Restricting the Vocabulary of Design Alternatives

   2.13 Providing a Basis for Training 

   2.14 Summary

   2.15 For Further Reading

   2.16 Discussion Questions

CHAPTER 3 The Many Contexts of Software Architecture

   3.1 Architecture in a Technical Context

   3.2 Architecture in a Project Life-Cycle Context

   3.3 Architecture in a Business Context

   3.4 Architecture in a Professional Context

   3.5 Stakeholders

   3.6 How Is Architecture Influenced?

   3.7 What do Architecture Influence?

   3.8 Summary

   3.9 For Further Reading

   3.10 Discussion Questions

PART TWO QUALITY ATTRIBUTES

CHAPTER 4 Understanding Quality Attributes

   4.1 Architecture and Requirements

   4.2 Functionality

   4.3 Quality Attribute Considerations

   4.4 Specifying Quality Attribute Requirements

   4.5 Achieving Quality Attributes through Tactics

   4.6 Guiding Quality Design Decisions

   4.7 Summary

CHAPTER 5~11 Availability, Interoperability, Modifiability, Performance, Security, Testability, Usability

   n.1 General Scenario

   n.2 Tactics

   n.3 A Design Checklist 

   n.4 Summary

CHAPTER 12 Other Quality Attributes

   12.1 Other important Quality Attributes

   12.2 Other Categories of Quality Attributes

   12.3 Software Quality Attributes and System Quality Attributes

   12.4 Using Standard Lists of Quality Attributes or Not

   12.5 Dealing with "X-ability":Bringing a New Quality Attribute into the Fold

CHAPTER 13 Architectural Tactics and Patterns

   13.1 Architectural Patterns

   13.2 Overview of the Patterns Catalog

   13.3 Relationships between Tactics and Patterns   

   13.4 Using Tactics Together

   13.5 Summary

CHAPTER 14 Quality Attribute Modeling and Analysis

   14.1 Modeling Architectures to Enable Quality Attribute Analysis

   14.2 Quality Attribute Checklists

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

   14.4 Experiments, Simulations, and Prototypes

   14.5 Analysis at Different Stages of the Life Cycle

   14.6 Summary

PART THREE ARCHITECTURE IN THE LIFE CYCLE

CHAPTER 15 Architecture in Agile Projects

   15.1 How Much Architecture?

   15.2 Agility and Architecture Methods

   15.3 A Brief Example of Agile Architecting

   15.4 Guidelines for the Agile Architect

   15.5 Summary

CHAPTER 16 Architecture and Requirements

   16.1 Gathering ASRs from Requirements Documents

   16.2 Gathering ASRs by Interviewing Stakeholders

   16.3 Gathering ASRs by Understanding the Business Goals

   16.4 Capturing ASRs in a Utility Tree

   16.5 Tying the Methods Together

   16.6 Summary

CHAPTER 17 Designing an Architecture

   17.1 Design Strategy

   17.2 The Attribute-Driven Design Method

   17.3 The Steps of ADD

   17.4 Summary

CHAPTER 18 Documenting Software Architectures

   18.1 Uses and Audiences for Architecture Documentation

   18.2 Notations for Architecture Documentation

   18.3 Views

   18.4 Choosing the Views

   18.5 Combining Views

   18.6 Building the Documentation Package

   18.7 Documenting Behavior

   18.8 Architecture Documentation and Quality Attributes

   18.9 Documenting Architectures That Change Faster Than You Can Document Them

   18.10 Documenting Architecture in an Agile Development Project

   18.11 Summary

CHAPTER 19 Architecture, Implementation, and Testing

   19.1 Architecture and Implementation

   19.2 Architecture and Testing

   19.3 Summary

CHAPTER 20 Architecture Reconstruction and Conformance

   20.1 Architecture Reconstruction Process

   20.2 Raw View Extraction

   20.3 Database Construction

   20.4 View Fusion

   20.5 Architecture Analysis:Finding Violations

   20.6 Guidelines

   20.7 Summary

CHAPTER 21 Architecture Evaluation

   21.1 Evaluation Factors

   21.2 The Architecture Tradeoff Analysis Method

   21.3 Lightweight Architecture Evaluation

   21.4 Summary

CHAPTER 22 Management and Governance

   22.1 Planning

   22.2 Organizing

   22.3 Implementing

   22.4 Measuring

   22.5 Governance

   22.6 Summary

PART FOUR ARCHITECTURE AND BUSINESS

CHAPTER 23 Economic Analysis of Architectures

   23.1 Decision-Making Context

   23.2 The Basis for the Economic Analyses

   23.3 Putting Theory into Practice: The CBAM

   23.4 Case Study : The NASA ECS Project

   23.5 Summary

CHAPTER 24 Architecture Competence

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

   24.2 Competence of a Software Architecture Organization

   24.3 Summary

CHAPTER 25 Architecture and Software Product Lines

   25.1 An Example of Product Line Variability

   25.2 What Makes a Software Product Line Work?

   25.3 Product Line Scope

   25.4 The Quality Attribute of Variability

   25.5 The Role of a Product Line Architecture

   25.6 Variation Mechanisms

   25.7 Evaluation a Product Line Architecture

   25.8 Key Software Product Line Issues

   25.9 Summary

PART FIVE THE BRAVE NEW WORLD

CHAPTER 26 Architecture in the Cloud

   26.1 Basic Cloud Definitions

   26.2 Service Models and Deployment Options

   26.3 Economic Justification

   26.4 Base Mechanisms

   26.5 Sample Technologies

   26.6 Architecting in a Cloud Environment

   26.7 Summary

CHAPTER 27 Architectures for the Edge

   27.1 The Ecosystem of Edge-Dominant Systems

   27.2 Changes to the Software Development Life Cycle

   27.3 Implications for Architecture

   27.4 Implications of the Metropolis Model

   27.5 Summary

CHAPTER 28 Epilogue