이미 소장하고 있다면 판매해 보세요.
|
1부 아키텍처 개요 1
1장 아키텍처 비즈니스 사이클 3 1.1 아키텍처에 영향을 주는 요인 6 1.2 소프트웨어 프로세스와 아키텍처 비즈니스 사이클 12 1.3 좋은 아키텍처의 요건 15 1.4 요약 17 1.5 생각해볼 문제 17 2장 소프트웨어 아키텍처 정의 19 2.1 소프트웨어 아키텍처 요건 19 2.2 소프트웨어 아키텍처에 대한 기타 관점 23 2.3 아키텍처 패턴, 참조 모델, 참조 아키텍처 24 2.4 소프트웨어 아키텍처의 중요성 26 2.5 아키텍처 구조와 뷰 35 2.6 요약 42 2.7 더 읽을 거리 42 2.8 생각해볼 문제 45 3장 A-7E 항공 전자 시스템 47 3.1 아키텍처 비즈니스 사이클과의 관계 48 3.2 요구사항과 품질 48 3.3 A-7E 항공 전자 시스템의 소프트웨어 아키텍처 53 2부 아키텍처 수립 69 4장 품질속성 이해 71 4.1 기능성과 아키텍처 72 4.2 품질속성 아키텍처 72 4.3 시스템 품질속성 74 4.4 실전에서의 품질속성 시나리오 78 4.5 기타 시스템 품질속성 94 4.6 업무 품질 94 4.7 아키텍처 자체의 품질 96 4.8 요약 97 4.9 더 읽을 거리 97 4.10 생각해볼 문제 98 5장 품질 목표 달성 99 5.1 설계전술 100 5.2 가용성 설계전술 101 5.3 변경용이성 설계전술 106 5.4 성능 설계전술 112 5.5 보안 설계전술 117 5.6 시험용이성 설계전술 119 5.7 사용편의성 설계전술 122 5.8 설계전술과 아키텍처 패턴 관계 124 5.9 아키텍처 패턴과 스타일 125 5.10 요약 126 5.11 생각해볼 문제 127 5.12 더 읽을 거리 127 6장 항공관제 시스템 129 6.1 아키텍처 비즈니스 사이클과의 관계 132 6.2 요구사항과 품질 132 6.3 아키텍처 관점에서의 해결방안 135 6.4 요약 150 6.5 더 읽을 거리 151 6.6 생각해볼 문제 151 7장 아키텍처 설계 153 7.1 생명주기상에서의 아키텍처 153 7.2 아키텍처 설계 155 7.3 팀 구조 형성과 아키텍처의 관계 167 7.4 골격 시스템 구축 170 7.5 요약 171 7.6 더 읽을 거리 173 7.7 생각해볼 문제 173 8장 비행 모의실험 175 8.1 아키텍처 비즈니스 사이클과의 관계 176 8.2 요구사항과 품질 177 8.3 아키텍처 관점에서의 해결방안 182 8.4 요약 197 8.5 더 읽을 거리 199 8.6 생각해볼 문제 199 9장 소프트웨어 아키텍처 문서화 201 9.1 아키텍처 문서의 용도 201 9.2 뷰 204 9.3 관련 뷰 선택 205 9.4 뷰 문서화 207 9.5 여러 뷰를 고려한 문서화 215 9.6 UML 218 9.7 요약 229 9.8 더 읽을 거리 230 9.9 생각해볼 문제 10장 아키텍처 재건 231 10.1 개요 231 10.2 정보 추출 234 10.3 데이터베이스 구축 237 10.4 뷰 융합 239 10.5 재건 241 10.6 사례 연구 248 10.7 요약 257 10.8 더 읽을 거리 258 10.9 생각해볼 문제 259 3부 아키텍처 분석 261 11장 ATAM 271 11.1 ATAM 참여자 272 11.2 ATAM의 결과물 274 11.3 ATAM의 과정 275 11.4 나이팅게일 시스템: ATAM을 적용한 사례 연구 288 11.5 요약 303 11.6 더 읽을 거리 304 11.7 생각해볼 문제 305 12장 CBAM 307 12.1 의사결정의 배경 308 12.2 CBAM의 기초 310 12.3 CBAM의 구현 314 12.4 사례 연구: 미국항공우주국 ECS 프로젝트 317 12.5 CBAM 작업 결과 324 12.6 요약 324 12.7 더 읽을 거리 325 12.8 생각해볼 문제 325 13장 월드와이드웹 327 13.1 아키텍처 비즈니스 사이클과의 관계 328 13.2 요구사항과 품질 329 13.3 아키텍처 관점에서의 해결방안 334 13.4 제2차 ABC 사이클: 웹 기반 전자상거래 아키텍처로의 진화 340 13.5 품질 목표 달성 346 13.6 오늘날의 월드와이드웹 아키텍처 비즈니스 사이클 346 13.7 요약 348 13.8 더 읽을 거리 349 13.9 생각해볼 문제 349 4부 아키텍처 확산 351 14장 소프트웨어 프로덕트 라인 353 14.1 개요 353 14.2 소프트웨어 프로덕트 라인의 작동원리 355 14.3 범위 설정 357 14.4 프로덕트 라인 아키텍처 360 14.5 소프트웨어 프로덕트 라인의 방해 요소 364 14.6 요약 367 14.7 더 읽을 거리 368 14.8 생각해볼 문제 368 15장 셀시우스테크 369 15.1 아키텍처 비즈니스 사이클과의 관계 370 15.2 요구사항과 품질 387 15.3 아키텍처 관점에서의 해결방안 390 15.4 요약 398 15.5 더 읽을 거리 399 15.6 생각해볼 문제 399 16장 J2EE/EJB 401 16.1 아키텍처 비즈니스 사이클과의 관계 402 16.2 요구사항과 품질 403 16.3 아키텍처 관점에서의 해결방안 406 16.4 시스템 배치 의사결정 419 16.5 요약 425 16.6 더 읽을 거리 425 16.7 생각해볼 문제 425 17장 루더 아키텍처 427 17.1 아키텍처 비즈니스 사이클과의 관계 428 17.2 요구사항과 품질 431 17.3 아키텍처 관점에서의 해결방안 435 17.4 품질 목표 달성 451 17.5 요약 452 17.6 더 읽을 거리 452 17.7 생각해볼 문제 452 18장 기성품 컴포넌트를 활용한 시스템 구축 453 18.1 컴포넌트가 아키텍처에 미치는 영향 455 18.2 아키텍처 불일치 456 18.3 검색을 통한 컴포넌트 기반 설계 462 18.4 ASEILM 사례 466 18.5 요약 476 18.6 더 읽을 거리 476 19장 미래의 소프트웨어 아키텍처 477 19.1 다시 살펴보는 아키텍처 비즈니스 사이클 479 19.2 아키텍처 수립 479 19.3 생명주기 내에서의 아키텍처 481 19.4 상용 컴포넌트의 영향 482 19.5 요약 484 |
|
애플리케이션이나 시스템의 규모가 커지고 복잡해지면서 소프트웨어 아키텍처의 중요성이 점점 더 커지고 있고, 관련 논의도 매우 활발히 진행되고 있다. 이에 따라 소프트웨어 아키텍처는 매우 중요한 연구분야로 자리잡은 상태이다. 그럼에도 실제 소프트웨어 개발 조직에서 소프트웨어 아키텍처를 다루는 데 필요한 실무적인 안내서는 기술적인 관점에서든, 관리적인 관점에서든 아직까지 없었다. 이 책을 집필한 동기는 소프트웨어 아키텍처가 사업 현황이나 조직 상황과 어떤 관계에 있는지 충분한 연구가 이뤄지지 않고 있다는 문제인식에서 비롯됐다.
복잡한 대규모 소프트웨어 집약 시스템을 분석하고 설계했던 경험을 통해 사업 목표와 조직 구조가 시스템 설계는 물론 궁극적으로 시스템의 성패에 있어 중요한 역할을 한다는 사실을 알 수 있었다. 시스템은 기본적으로 특정 조직의 요구사항(내부에서 개발하는 제품일 경우 기획을 통해 도출된 가상의 요구사항)을 충족시키기 위해 만들어진다. 요구사항에 따라 해당 시스템의 성능, 가용성, 보안, 타 시스템과의 호환성, 시스템이 운영되는 동안의 변경수용능력과 같은 품질 목표가 결정된다. 소프트웨어를 통해 이와 같은 품질 목표를 달성하려면 그에 따른 선결요건들을 만족시켜야 하고, 이런 선결요건들이 결국 소프트웨어 아키텍트가 수행하는 설계상의 의사결정에 영향을 미치게 된다. 이 책에서는 소프트웨어 아키텍처와 조직 사이에 존재하는 관계에 대해 실제 프로젝트의 사례를 들어 설명한다. 다음과 같은 상황에 대한 사례가 포함돼 있다. " 월드와이드웹의 소프트웨어 아키텍처: 최소한의 중앙집중식 통제로 문서를 쉽고 빠르게 공유하고자 하는 필요에서 월드와이드웹의 소프트웨어 아키텍처가 탄생했다. " 항공관제 시스템의 소프트웨어 아키텍처: 항공관제 시스템에 요구되는 극도의 안전성 요구사항에 따라 초고도의 가용성(availability)을 확보할 수 있는 아키텍처가 만들어 졌다. " 비행 모의실험기의 소프트웨어 아키텍처: 지리적으로 분산된 개발자들이 비행 모의실험기의 하위시스템을 나누어 개발하게 하려는 시도로부터 하위시스템을 쉽게 통합할 수 있는 아키텍처가 탄생했다. " 프로덕트 라인에서의 소프트웨어 아키텍처: 여러 제품을 동시에 출시해야 했던 회사는 복잡한 연관 소프트웨어 시스템들을 프로덕트 라인으로 구성할 수 있도록 해주는 아키텍처를 수용하게 됐다(수용할 수밖에 없었다는 말이 더 맞다). " J2EE 기반에서의 소프트웨어 아키텍처: 조직이나 커뮤니티 차원에서 의사소통을 원활히 하기 위해 표준화된 아키텍처가 필요했고, 이런 요구사항에 따라 J2EE나 EJB와 같은 기반구조가 나오게 됐다. 이런 예들을 보면 소프트웨어 아키텍처는 당시에 주류를 이루던 설계 환경뿐 아니라 조직의 요구사항과 사업 모델, 아키텍트의 경험 등에서도 나온다는 사실을 알 수 있다. 이에 더해 아키텍처가 어떻게 해서 아키텍처에 영향을 준 것들에게 다시 영향을 끼치는 강력한 매체가 될 수 있는지도 알아본다. 성공적인 제품이나 제품군은 향후 다른 제품이 만들어지는 방식에 많은 영향을 미친다. 월드와이드웹의 근간을 이루고 있는 소프트웨어에 대한 사례 연구가 좋은 예이다. 이런 종류의 시스템이 각광받기 전에는 네트워크에 대한 인식 수준이 매우 낮았고, 데이터 접근성에 대해서도 별로 고려하지 않았으며, 보안에 대해서는 금융 업체나 정부 조직 등 일부 조직 외에는 심각하게 고려하지 않았다. 이 책은 대규모 소프트웨어 집약 시스템의 설계자와 구현자, 소프트웨어 전문 관리자, 소프트웨어 전문가의 꿈을 가진 학생들을 망라한 다양한 소프트웨어 전문가들을 대상으로 한다. 저자들은 소프트웨어 아키텍처가 품질, 일정, 비용상 최고의 투자 대비 효과를 가져다 주는 발명품이라 믿고 있다. 아키텍처는 제품 수명이 시작되는 시점에 등장하기 때문에 아키텍처를 제대로 설계해 놓으면 시스템 개발, 통합, 검수, 변경 등 앞으로 수행하거나 발생할 모든 작업의 토대가 마련되는 셈이다. 아키텍처를 잘못 설계했다는 말은 시스템의 구조를 잘못 짰다는 말이 된다. 따라서 구축된 시스템의 일부를 새로운 부분으로 대체하거나 이미 만든 몇 부분을 제거한다고 해서 고쳐질 수 있는 것이 아니라 전체적인 구조를 다시 짜야 하는 것이다. 또한 아키텍처는 다른 개발 활동과 비교했을 때, 분석에 소요되는 비용도 매우 저렴하다. 즉 아키텍처로 인해 내려지는 의사 결정은 큰 파급 효과를 내는 반면 아키텍처를 검토하고 수정하는 비용은 상대적으로 저렴하기 때문에 높은 투자 대비 효과를 얻을 수 있는 것이다. 소프트웨어를 효과적으로 재사용하기 위해서는 아키텍처 관점에서 접근하는 것이 가장 바람직하다고 저자들은 믿는다. 재사용 가능한 산출물로 컴포넌트만 나오는 것은 아니다. 아키텍처 자체를 재사용할 경우에는 시스템 군이 형성되는 방향으로 가게 되고 결국 새로운 조직 구조와 새로운 사업기회를 창출하게 된다. 이 책은 많은 분량을 업무현장에서 실제 문제를 해결하는 데 사용된 아키텍처의 사례를 제시하는데 할애했다. 이 사례들을 통해 당면한 품질 목표를 달성하기 위해 내려야 하는 아키텍처적 의사결정에는 어떤 것들이 있는지, 조직의 목표가 최종 시스템에 어떻게 반영되는지 살펴볼 것이다. 사례 연구와 더불어 소프트웨어 아키텍처 설계, 구축, 평가에 쓸 수 있는 여러 가지 기법도 제시하고 있다. 아키텍처 관점에서 품질 요구사항을 파악하고 그에 맞는 아키텍처를 수립할 수 있도록 해 주는 기술을 제시한다. 소프트웨어 아키텍처를 기술하고 검증할 때 쓸 수 있는 아키텍처 표현 기법과 재건(reconstruction) 기법도 소개한다. 또한 설계된 아키텍처가 시스템 구축 목적에 부합되는지 분석하고 평가하는 데 활용할 수 있는 기법도 살펴본다. 이런 기법들은 모두 저자들이 SEI(Software Engineering Institute)에서 동료들과 함께 다양한 소프트웨어 시스템을 구축하면서 얻은 경험을 바탕으로 만들어졌다. 이와 관련된 실 사례들은 대부분 코드 크기가 수백만 줄에 이르는, 대규모 팀이 다년간 투입된 시스템들이다. 책 전반에 걸쳐 사업 현안(예를 들어 아키텍처가 조직의 시장 경쟁력에 끼치는 영향이나 제품군이 시장적시성에 끼치는 영향 등)에 대해 논의하고 있기는 하지만, 사업 현안이나 관련 전문용어 자체에 대해서 깊이 다루지는 않는다. 어쨌든 간에 저자들은 소프트웨어 공학자들이기 때문이다. 대신 기술적인 부분을 더 깊이 있게 다룬다. 이 책은 이론과 실무가 접점을 이루는 지점에 서서 소프트웨어 아키텍처 분야의 현재 성과를 소개한다. 사례 연구에서는 이런 기술적 토대를 조명하고 그것이 실무에서 어떻게 현실화 되는지 보여준다. 사례 연구를 통해 알게 된 교훈을 제대로 활용하려면 컴퓨터 과학이나 소프트웨어 공학, 기타 관련 이론에 대해 어느 정도의 배경지식이 있어야 한다. 그러나 각 사례의 업무 영역에 대한 전문지식이 있어야만 이해할 수 있는 내용은 되도록 피했다. 조종사가 아니더라도 항공 관제 시스템이나 비행 모의실험 사례 연구를 이해하는 데는 별 문제가 없을 것이다. --- 저자 서문 |
|
이 책을 처음 만난 것은 모호한 개념과 막연한 동경을 가지고 아키텍트가 되고 싶어 열심히 스터디 그룹에서 공부하던 초급 개발자일 때였습니다. 당시에는 내용이 어려워 이해하기가 어려운데다 소프트웨어 아키텍처 분야 자체가 학문적으로 많이 성숙되기 전이라 실무에 어떻게 적용할 수 있을지 난감했습니다. 이 책의 개정판을 다시 만난 것은 몇 년이 지난 후 카네기멜론 대학교(CMU)에서 소프트웨어 아키텍처 과목을 수강할 때입니다. 참고로 이 책은 CMU뿐만 아니라 SEI(Software Engineering Institute)의 아키텍처 교육과정을 비롯해 전세계의 권위 있는 교육기관에서 아키텍처를 가르칠 때 기본교재로 사용하고 있습니다. 개정판에서는 초판의 일부 모호하던 개념을 다듬고, 그 사이 연구가 진전된 내용을 추가해 좀 더 현실감 있게 아키텍처의 이론과 실제를 소개하고 있습니다.
CMU와 SEI에서 소프트웨어 아키텍처를 다룰 때는 경험적 요소와 기술적 세부사항에 앞서 공학적 관점으로 바라보도록 요구합니다. 이것을 정확히 꿰뚫고 있는 것이 바로 이 책입니다. 아키텍처란 무엇을 말하는 것인지, 그것이 실무에 어떤 가치와 의미가 있는지, 소프트웨어 관련 조직은 그것을 어떻게 인식하고 받아들여야 하는지, 소프트웨어 아키텍처를 기반으로 시스템을 만들 때는 어떤 방법을 사용해야 하는지, 결과물의 문서화는 어떻게 해야 하는지, 아키텍처를 어떻게 분석하고 평가해야 하는지, 이런 것들을 실무 사례연구를 들어가며 자세히 설명해 주고 있습니다. 처음에는 흥미진진해 하면서도 이것을 실무에서 어떻게 활용할 수 있을까 의심스럽기도 했지만, 학기를 마치고 실전에서 소프트웨어 아키텍트의 역할을 수행해 보니 이 책의 가치를 온몸으로 느낄 수 있었습니다. 우리나라에서도 이 책은 여러 대학의 참고서로 활용하고 있으며 SKC&C, SDS와 같은 대기업의 아키텍트를 위한 실무 교본으로 활용되고 있습니다. 또한 한국소프트웨어진흥원과 정통부에서 진행하는 실무 중심의 "소프트웨어 아키텍트 양성 교육과정"에서 교재로 채택돼 활용되고 있습니다. 한마디로 소프트웨어 아키텍처의 경전이라고 부를 수 있는 책이 바로 이 『소프트웨어 아키텍처: 이론과 실제』입니다. 안타까운 사실은 이 책이 원서로 출판된 지 몇 년이 지났지만, 첫 장부터 마지막 장까지 온전히 읽은 사람이 많지 않다는 사실입니다. 대학교나 업무현장에서도 과제물을 내거나 당장에 필요한 부분만 살펴보고 덮어버리는 경우가 많더군요. 많은 소프트웨어 엔지니어들이 아키텍트를 꿈꾸고 있고, 이 책이 바로 그 길로 안내해 주는 몇 안 되는 正典인데도 불구하고 현실이 이렇다는 것은 안타까운 일이 아닐 수 없습니다. 여러 가지 이유가 있겠지만 분량이 많고 내용이 딱딱한데다, 영어로 돼 있다는 사실이 적지 않게 작용했다고 봅니다. 이번 번역본 『소프트웨어 아키텍처: 이론과 실제』를 통해 많은 엔지니어, 개발자들이 좀 더 쉽게 아키텍처에 접근할 수 있다면 역자들의 그동안의 노력은 충분히 보상받을 수 있으리라 생각합니다. 모쪼록 독자분께 많은 도움이 되기를 바랍니다. --- 역자 서문 |
|
『소프트웨어 아키텍처: 이론과 실제』는 소프트웨어 아키텍처의 개념을 명확하게 소개하고 있을 뿐만 아니라, 현장의 다양한 실무 사례를 소개한다. 소프트웨어 개발과 관련한 여러 상을 수상한 이 책은 현장의 실무자들에게 매우 유용한 소프트웨어 아키텍처의 지침서로 정평이 높다.
개정판인 이 책은 개발 프로젝트에서의 최근 소프트웨어 아키텍처의 트렌드와 실무사례를 반영하고 있다. 특히 소프트웨어 시스템을 좋은 구조로 설계하는 방법과 시스템의 구성요소들이 서로 상호 작용할 때 각각 어떤 역할을 하는지를 상세히 소개한다. 시스템 품질을 달성하기 위해서는 상세 구현이나 알고리즘, 데이터 모델링 등이 필수적이다. 그러나 이들과 소프트웨어 아키텍처는 명백히 별개의 것으로 구분된다. 특히 소프트웨어 아키텍처는 시스템 품질을 달성하는 핵심 역할을 한다. 또한 소프트웨어 아키텍처는 다른 시스템에 적용 가능한 재사용 자산으로 활용될 수 있으며 비즈니스 조직이 전략을 수립하고 실행하는 데 중요한 역할을 한다. 이 책의 저자들은 자신들의 다양하고 깊이 있는 실무 경험을 활용하여 소프트웨어 시스템의 설계, 명세, 확인 작업의 핵심 기술들을 다룬다. 특히 대형 시스템을 설계할 때 비즈니스 상황의 중요성 또한 놓치지 않는다. 회사가 당면할 수 있는 비즈니스 기회와 기술적, 경영적 제약사항 모두를 고려하여 실제 환경에서 구현할 수 있는 최적의 소프트웨어 아키텍처를 제시한다. 각 부의 마지막 장에서는 실무에서의 아키텍처 사례 연구를 설명하고 있으며, 각 장의 마지막에는 기술뿐만 아니라 조직적인 측면까지 고려한 다양한 토론 문제를 제시한다. ★ 이 책에서 다루는 내용 ★ 아키텍처 설계 및 ATAM기법을 활용한 아키텍처 평가 분석 방법 품질 요구사항 수집, 품질 시나리오 설계, 아키텍처 설계 전술을 활용한 품질 요구사항의 달성 방법 문서화되지 않은 시스템 아키텍처를 복구하기 위한 아키텍처 재건 방법 웹 기반 시스템에서의 아키텍처 설계 사례와 착용식 컴퓨터(Wearable Computer)를 지원하기 위해 설계된 무선 기반 엔터프라이즈 자바빈즈(EJB) 시스템 사례 등 새로운 아키텍처 적용 사례 연구 경영진의 의사결정을 지원하는 아키텍처의 재무적 분석 방법(CBAM) 활용 사례 대형 소프트웨어 시스템의 설계, 개발, 관리, 기획 업무를 담당하고 있거나, 대형 소프트웨어 시스템을 획득/구매하려 한다면, 최신의 소프트웨어 아키텍처 기술을 담고 있는 『소프트웨어 아키텍처: 이론과 실제』는 유용한 길잡이가 되어 줄 것이다. ★ 이 책의 독자층 ★ 소프트웨어 공학에 지식과 경험이 있는 소프트웨어 전문가나 학생을 대상으로 한다. 아키텍처에 대한 기술적인 배경과 함께 거기에 작용하는 업무적, 조직적 상황과 요구사항, 영향력에 대해 이해하고자 하는 소프트웨어 공학 교육생 소프트웨어 아키텍처를 통해 시스템 구축 업무를 좀더 효과적으로 감독하고 조직을 개선시킬 수 있는 방법을 배우고자 하는 기술 관리자들 학부나 대학원의 소프트웨어 공학 과정에서 이 책을 학습 자료로 활용하고자 하는 전산과나 소프트웨어 공학과 학생 <이 책의 구성> 아키텍처 비즈니스 사이클(ABC, Architecture Business Cycle)이라고 부르는 아키텍처 생명주기 관점에 따라 총 4부로 구성돼 있다. 아키텍처 개요 (1장~3장) 아키텍처 수립 (4장~10장) 아키텍처 분석 (11장~13장) 아키텍처 확산 (14장~19장) 사례 연구의 구성 방식 사례 연구에 대한 개요, 당면 과제, 해당 소프트웨어 아키텍처의 요점 아키텍처 비즈니스 사이클 적용 시스템의 요구사항과 품질 목표 아키텍처 해결방안 각 장의 핵심 내용 요약 |