이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

가격
35,000
10 31,500
YES포인트?
1,750원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

에이콘 소프트웨어 아키텍처 시리즈

책소개

목차

1. 소프트웨어 아키텍처
1.1 이해관계자 간 의사소통 수단으로서의 아키텍처
1.1.1 아키텍처와 이해관계자에게 미치는 영향
1.1.2 아키텍처 뷰
1.1.3 아키텍처 설명 언어
1.2 초기 설계 의사결정에 대한 방향선언으로서의 아키텍처
1.2.1 아키텍처 스타일
1.3 재사용가능하고 이전할 수 있는, 시스템 추상화로서의 아키텍처
1.4 요약
1.5 더 읽을거리
1.6 생각해볼 문제

2. 소프트웨어 아키텍처 평가
2.1 아키텍처 평가 이유
2.2 아키텍처 평가 시점
2.3 아키텍처 평가 참여자
2.4 아키텍처 평가의 예상 결과
2.5 아키텍처 평가 대상 품질속성
2.6 품질속성 분석의 모호성
2.7 아키텍처 평가의 결과물
2.7.1 ATAM, SAAM, ARID의 결과물
2.7.2 ATAM에서만 나오는 산출물
2.8 아키텍처 평가 수행의 이득과 비용
2.9 더 읽을거리
2.10 생각해볼 문제

3. ATAM - 아키텍처 평가방법
3.1 ATAM 스텝의 요약
3.2 ATAM 스텝 상세 설명
3.2.1 스텝 1: ATAM 프리젠테이션
3.2.2 스텝 2: 비즈니스 동인 프리젠테이션
3.2.3 스텝 3: 아키텍처 프리젠테이션
3.2.4 스텝 4: 아키텍처 접근방법 식별
3.2.5 스텝 5: 품질속성 유틸리티 트리 작성
3.2.6 스텝 6: 아키텍처 접근방법 분석
3.2.7 스텝 7: 시나리오 브레인스토밍과 우선순위 결정
3.2.8 스텝 8: 아키텍처 접근방법 분석
3.2.9 스텝 9: 결과 프리젠테이션
3.3 ATAM의 단계
3.3.1 0단계 활동
3.3.2 1단계 활동
3.3.3 2단계 활동
3.3.4 3단계 활동
3.4 더 읽을거리
3.5 생각해볼 문제

4. 전장통제 시스템 - ATAM을 적용한 첫 사례연구
4.1 준비
4.2 1단계
4.2.1 스텝 1: ATAM 프리젠테이션
4.2.2 스텝 2: 비즈니스 동인 프리젠테이션
4.2.3 스텝 3: 아키텍처 프리젠테이션
4.2.4 스텝 4: 아키텍처 접근방법 식별
4.2.5 스텝 5: 품질속성 유틸리티 트리 작성
4.2.6 스텝 6: 아키텍처 접근방법 분석
4.3 2단계
4.3.1 스텝 7: 시나리오 브레인스토밍과 우선순위 결정
4.3.2 스텝 8: 아키텍처 접근방법 분석
4.3.3 스텝 9: 결과 프리젠테이션
4.4 BCS 평가의 결과
4.4.1 문서화
4.4.2 요구사항
4.4.3 민감점과 절충점
4.4.4 아키텍처 위험
4.5 요약
4.6 생각해볼 문제

5. 품질속성 이해
5.1 품질속성 특성화
5.1.1 성능
5.1.2 가용성1
5.1.3 변경용이성
5.1.4 특성화를 통한 질문
5.2 ATAM에서의 품질속성 특성화 사용
5.3 속성 기반 아키텍처 스타일
5.4 요약
5.5 더 읽을거리
5.6 생각해볼 문제

6. ATAM 적용 사례연구
6.1 배경
6.2 0단계: 제휴와 준비
6.2.1 0단계, 스텝 1: ATAM 프리젠테이션
6.2.2 0단계, 스텝 2: 후보 시스템 설명
6.2.3 0단계, 스텝 3: ATAM의 진행 여부 결정
6.2.4 0단계, 스텝 4: 업무내용 협의
6.2.5 0단계, 스텝 5: 핵심 평가팀 구성
6.2.6 0단계, 스텝 6: 평가팀 킥오프 미팅 개최
6.2.7 0단계, 스텝 7: 1단계 준비
6.2.8 0단계, 스텝 8: 아키텍처 검토
6.3 1단계: 초기평가
6.3.1 1단계, 스텝 1: ATAM 프리젠테이션
6.3.2 1단계, 스텝 2: 비즈니스 동인 프리젠테이션
6.3.3 1단계, 스텝 3: 아키텍처 프리젠테이션
6.3.4 1단계, 스텝 4: 아키텍처 접근방법 식별
6.3. 1단계, 스텝 5: 품질속성 유틸리티 트리 작성 196
6.3. 1단계, 스텝 6: 아키텍처 접근방법 분석 205
6.4 1단계와 2단계 사이의 공백기간
6.5 2단계: 평가 완성
6.5.1 2단계, 스텝 0: 2단계 준비
6.5.2 2단계, 스텝 1~6
6.5.3 2단계, 스텝 7: 시나리오 브레인스토밍과 우선순위 결정
6.5.4 2단계, 스텝 8: 아키텍처 접근방법 분석
6.5.5 2단계, 스텝 9: 결과 프리젠테이션
6.6 3단계: 후속조치
6.6.1 3단계, 스텝 1: 최종보고서 작성
6.6.2 3단계, 스텝 2: 사후 개선미팅 개최
6.6.3 3단계, 스텝 3: 포트폴리오 구축과 산출물 저장소 업데이트
6.7 더 읽을거리
6.8 생각해볼 문제

7. SAAM을 이용한 예제 아키텍처 평가
7.1 SAAM 개요
7.1.1 SAAM 평가를 위한 입력물
7.1.2 SAAM 평가의 산출물
7.2 SAAM 평가의 스텝
7.2.1 스텝 1: 시나리오 개발
7.2.2 스텝 2: 아키텍처 기술
7.2.3 스텝 3: 시나리오 분류와 우선순위 결정
7.2.4 스텝 4: 간접 시나리오의 개별적인 평가
7.2.5 스텝 5: 시나리오 상호작용 평가
7.2.6 스텝 6: 전체적인 평가 정리
7.3 SAAM 의제 예시
7.4 SAAM 사례연구
7.4.1 ATAT 시스템 개요
7.4.2 스텝 1: 시나리오 개발, 첫 번째 반복
7.4.3 스텝 2: 아키텍처 기술, 첫 번째 반복
7.4.4 스텝 1: 시나리오 개발, 두 번째 반복
7.4.5 스텝 2: 아키텍처 기술, 두 번째 반복
7.4.6 스텝 3: 시나리오 분류와 우선순위 결정
7.4.7 스텝 4: 간접 시나리오의 개별적인 평가
7.4.8 스텝 5: 시나리오 상호작용 확인
7.4.9 스텝 6: 평가 총괄 정리: 결과와 권고사항
7.5 요약
7.6 더 읽을거리
7.7 생각해볼 문제

8.ARID - 부분적 아키텍처 평가방법
8.1 능동적 설계검토
8.2 ARID: ARD/ATAM 하이브리드
8.3 ARID의 스텝
8.3.1 1단계: 예행연습
8.3.2 2단계: 검토
8.4 ARID를 적용한 사례연구
8.4.1 스텝의 수행
8.4.2 활동 결과
8.5 요약
8.6 더 읽을거리
8.7 생각해볼 문제

9. 소프트웨어 아키텍처 평가방법 비교
9.1 질의기법
9.1.1 질문지와 체크리스트
9.1.2 시나리오와 시나리오 기반 방법
9.2 측정기법
9.2.1 측정지표
9.2.2 시뮬레이션, 프로토타입, 실험
9.2.3 단조비율 분석
9.2.4 자동화 도구와 아키텍처 기술 언어
9.3 하이브리드 기법 297
9.3.1 소프트웨어 성능 엔지니어링
9.3.2 ATAM
9.4 요약
9.5 더 읽을거리
9.6 생각해볼 문제

10. 조직 차원에서 아키텍처 평가역량의 증대
10.1 조직적인 합의 구축
10.2 평가자 후보군의 증가
10.3 조직 차원 기억 수립
10.3.1 비용과 이득 데이터
10.3.2 방법 지침
10.3.3 재사용 산출물
10.4 요약
10.5 생각해볼 문제

11. 결론
11.1 이제 준비완료!
11.2 앞서 살펴본 방법
11.3 아키텍처를 평가해야 하는 이유
11.4 ATAM의 효과
11.5 마치면서

부록 A. 속성 기반 아키텍처 스타일의 사례
A.1 문제 서술
A.2 자극/응답
A.3 아키텍처 스타일
A.4 분석
A.4.1 추론
A.4.2 우선순위 지정
A.4.3 우선순위 반전
A.4.4 저지시간
A.5 더 읽을거리

저자 소개

저자 : 폴 클레멘츠
현재 미 SEI 연구소에서 기술 분야의 수석 연구원이다. 『Software Product Lines: Practices and Patterns(소프트웨어 프로덕트 라인: 실무와 패턴)』(애디슨 웨슬리, 2002)과 『소프트웨어 아키텍처: 이론과 실제』(에이콘출판사, 2007)의 공동저자다.
저자 : 릭 캐즈먼
미 SEI 연구소 기술 분야의 수석 연구원이자 하와이 대학의 교수이며 카네기 멜론 대학의 소프트웨어 연구원이다. 『소프트웨어 아키텍처: 이론과 실제』(에이콘출판사, 2007)의 공동저자다.
저자 : 마크 클라인
미 SEI 연구소 기술 분야의 수석 연구원이다. 마크는 카네기 멜론 대학의 소프트웨어 공학 석사과정의 교수이며 『A Practitioner's Handbook for Real-Time Analysis(실무자를 위한 실시간 분석 가이드)』(슈프링거, 1993)의 공동저자다.
역자 : 이석준
뉴사우스웨일스 대학원에서 정보공학을 전공했으며 삼성 SDS 아키텍처팀에서 소프트웨어 아키텍트로 활동하고 있다. SEI에서 소프트웨어 아키텍처 전문가 자격과 ATAM 평가자 자격을 수료했다. 참여한 다수 프로젝트에서 소프트웨어 아키텍처 수립 및 절차를 반영하는 데 많은 노력을 하고 있으며 이와 관련한 사내 과정의 집필과 강의를 맡고 있다. 『소프트웨어 아키텍처: 이론과 실제』(에이콘출판사, 2007)를 번역했다.
역자 : 백창현
KAIST 전산학 석사출신으로 일찍이 전투기 파일럿을 꿈꾸다 항공 시뮬레이션에 빠져 소프트웨어 분야에 입문했다. 핸디소프트의 BPM/그룹웨어 개발과 벤처기업 이모션의 개발 경력을 거쳐 삼성 SDS IT 플랫폼 팀에서 차세대 시스템을 위한 엔터프라이즈 프레임워크 개발을 선도하고 있다. 제품/시스템 개발을 위한 최적화된 소프트웨어 설계가 주 관심 분야며, 소프트웨어 시스템 개발의 근간은 아키텍처라고 확신한다. 공저서로는 『1st 워크플로우』(시사컴퓨터, 2000), 역서로는 『소프트웨어로 승리하자』(학현사, 2004)가 있다.
역자 : 박인수
숭실대에서 전산을 전공했으며 현재 삼성SDS에서 소프트웨어 아키텍트로 활동하고 있다. 누구보다도 소프트웨어 아키텍처에 대한 애착이 있다고 자부하며, 실제 프로젝트에서 이상적인 소프트웨어 아키텍처를 적용하기 위해 노력한다. 훌륭한 아키텍처는 성공적인 시스템의 밑거름이 된다는 철학을 바탕으로, 설계에서 의도한 대로 시스템이 구현될 수 있을까에 대한 해답을 찾기 위한 연구에 매진 중이다. 개발자들이 희생을 강요당하지 않고 품질, 납기, 원가 모두를 만족하는 성공적인 소프트웨어 시스템을 구축할 수 있는 세상을 위해 늘 고민한다.

품목정보

발행일
2009년 05월 21일
쪽수, 무게, 크기
344쪽 | 902g | 188*254*30mm
ISBN13
9788960770782

책 속으로

지난 15 여년 간 소프트웨어 아키텍처에 대한 연구가 성장하고 성숙됨에 따라 소프트웨어 아키텍트들은 단순히 아키텍처만 수립하는 일을 넘어서 수많은 일에 기여한다라는 사실이 매우 명확해졌다. 아키텍트는 설계자를 선도해주고, 새로운 기술을 도입하기 위한 계획을 수립하는 역할도 담당한다. 또한 조직의 경영목표를 구체화하는 데 참여하는 일에서부터 개발자와 테스터의 가이드 역할까지도 수행한다. 요약하면 아키텍트는 아키텍처를 올바로 이해하고 사용하는 데 필요한 모든 일이 제대로 돌아가게 하는 역할을 해야 한다.

아키텍트는 수많은 과업 중에서 무엇보다도, 설계한 아키텍처가 문제를 해결하는 데 올바른 것인지 최선을 다해야 한다. 즉 아키텍트는 아키텍처가 제대로 기능을 수행해내는가와 마찬가지로 성능과 보안, 가용성 등과 같은 품질속성도 올바르게 달성됐는지도 파악하는 일이 중요하다.

이 책『소프트웨어 아키텍처 평가』는 아키텍트가 이와 같은 업무 수행을 하는 데 도움을 주기 위해 집필한 책이다. 한국어판이 출간된다고 하니 기쁜 마음을 형언할 길 없다. 아무쪼록 이 책이 역동적으로 발전하고 있는 한국의 소프트웨어 산업에 큰 보탬이 되기를 기원한다. 아울러 우리가 이 책을 쓸 때의 환희와 즐거움을 한국의 독자들도 느끼게 되길 바란다. --- '한국어판 특별 서문' 중에서

소프트웨어 시스템의 토대는 아키텍처에 있다. 이는 소프트웨어 시스템이 개별적으로 개발된 구성요소들로 구축되며 이 구성요소 간에 상호작용하는 방식에 기반을 둔다는 사실을 의미한다. 어떤 시스템을 구축하더라도 한 명 이상이 참여하는 규모라면 아키텍처를 기반으로 한 구성원 간의 의사소통과 작업 할당에 대한 조율이 필요하다. 요구사항 중에 성능, 보안, 신뢰성, 유지보수성에 대한 목표가 있다면 아키텍처는 시스템이 어떻게 이 목표를 달성할 수 있을지를 최초로 표현하는 설계 산출물이 된다. 아키텍처는 개발 프로젝트의 구조를 결정하며 이는 프로젝트 문서화의 기반이 된다. 또한 아키텍처는 프로젝트에 참여한 신규인력이 가장 먼저 접하는 문서며, 유지보수 조직이 가장 먼저 파악해야 하는 첫 업무다. 일정, 예산과 작업계획 모두가 아키텍처를 중심으로 움직이게 된다. 따라서 선임이면서 가장 능력 있는 설계자가 아키텍처를 만들도록 요구된다.

시스템에 대한 변화의 압력 속에서 시스템의 수명을 어떻게 유지하는가는 전적으로 아키텍처에 달렸다. 3티어 아키텍처, 레이어 아키텍처, 파이프 필터 아키텍처와 같은 아키텍처 스타일은 일반화돼서 개발 커뮤니티에 널리 활용되고 있다. 이제는 점차 전사적인 목표를 달성하는 데 있어서 아키텍처의 가치와 중요성을 인식하고 있다. 아키텍처는 회사에 경쟁력을 제공하며 마치 금융자산과 같이 자산으로 축적될 수도 있다.

적합한 아키텍처는 성공의 첫걸음인 반면에 잘못된 아키텍처는 재난을 야기한다. 다음과 같은 중요한 질문을 고려해보자. 한 시스템의 아키텍처가 회사의 미래를 좌우한다고 할 때, 지금 적합한 아키텍처를 기반으로 개발하고 있다는 것을 어떻게 보장할 것인가?

아키텍처를 만드는 일이 점차 성숙되어 가면서 아키텍처로 인해 만들어진 설계 의사결정과 이를 기반으로 구축된 시스템에서 도출된 품질 및 특성 간에 의도하지 않았던 관련성을 식별할 수 있게 됐다. 이는 구축할 시스템에 부여된 목표와 요구사항 측면에서 아키텍처 의사결정을 분석하기 위해 아키텍처를 평가하는 게 가능하다는 의미다.

최근에는 시스템 개발에서 아키텍처가 필수적인 부분으로 여겨지고 있지만 아키텍처 평가는 거의 어떤 개발 프로세스에서도 표준으로 포함된 적이 없었다. 우리는 아키텍처 평가가 개발 프로세스에 포함돼야 한다고 믿으며 이 책을 통해서 이러한 현실과의 차이점을 극복하는 데 도움을 주고자 한다.

아키텍처 평가가 소프트웨어 공학적인 실제 활동으로 인정돼야 하는 시점이 된 데는 다음 두 가지 이유가 있다. 첫째, 아키텍처는 개발 프로젝트에 있는 엄청나게 많은 위험을 가시화한다. 앞에서도 말했듯이 잘못된 아키텍처는 프로젝트에 재앙을 야기한다. 일반적으로 불확실성이 있는 경우 위험완화전략을 세우듯이 핵심적인 산출물을 평가하는 것은 좋은 판단이라고 할 수 있다. 둘째, 생각보다 훨씬 적은 비용으로도 아키텍처 평가를 수행할 수 있다. 이 책에서 설명하는 평가방법은 프로젝트 일정에 일주일 이내의 시간만 필요하며 간략화된 방식은 하루나 이틀 정도의 시간만 추가하면 된다. 따라서 아키텍처 평가는 매우 저렴한 보험 증서라고 할 수 있다. 미흡한 아키텍처로 인해 발생하는 비용에 비하면 적절한 소프트웨어 아키텍처 평가에 대한 비용은 충분히 정당화된다. 이 책은 지금까지 부족했던 아키텍처 평가를 수행하는 실무적인 방법을 개선하려는 목적으로 등장했다.

이 책은 아키텍처 평가 실무자(또는 실무자가 되기를 원하는 사람)를 위한 지침서다. 이 책에서는 평가에 필요한 개념적인 배경을 제공하고 있지만 그보다는 아키텍처 평가와 분석의 실무에 대한 단계적인 지침을 제공하기 위한 작업을 목적으로 한다. 아키텍처 평가방법을 실무에서 적용하기 위해 다음과 같은 실제 사용할 수 있는 샘플 산출물을 추가했다. 예를 들면, 프리젠테이션 템플리트, 시나리오, 수행 후 설문, 최종보고서 템플리트 등이다. 이는 이 책을 읽은 후에 자신이 속한 조직의 아키텍처에 평가방법을 적용할 수 있을 정도의 자신감을 느끼게 하는 것이 목적이다. 평가 중에 "다음에는 무엇을 하지?" 같은 질문에 답을 할 수 있도록 노력했다.

이 책은 평가자 관점에서 쓰였으나 평가에 참여하는 다른 사람들(프로젝트 관리자, 아키텍트, 기타 이해관계자)도 이 책을 읽으면 아키텍처 평가에 대한 가치 있는 통찰을 얻을 수 있을 것이다. 이들도 자신의 제품이 어떻게 평가되는지와 평가 분류를 준수하면서 해당 제품을 좀 더 잘 만들지에 대해서 이해할 수 있게 된다. 마치 미리 시험 문제를 보고 점수를 잘 받는 것과 같지만, 이는 속임수가 아니라 뛰어난 관리와 공학적인 실무라고 할 수 있다. 하지만 이 책에서 '당신' 또는 '여러분'이라는 말을 사용할 때, 평가자만을 대상으로 이야기하고 있다는 것을 주지하기 바란다.

이 책은 정부기관과 업계에서 실제 적용된 기법을 기반으로 한다. 대부분 방법은 SEI에 있는 저자들과 다른 전문가들이 개발했으며 고객과 협력사 시스템에 적용했다. 그 밖의 내용은 아키텍처의 분석과 평가의 전문가들이 참여하는 워크숍을 개최해 얻었다. 다시 말해, 직접 수행하면서 배웠고 다른 사람들의 수행 경험을 통해서도 배웠다.

이 책은 훌륭한 아키텍트가 되는 방법을 알려주지 않으며 아키텍처의 이슈를 잘 이해할 수 있게 도와주지도 않는다. 이 책에서는 여러분이 이미 실무 경험을 통해서 아키텍처를 확실히 이해하고 있다고 전제한다. 이 책은 개인적인 아키텍트의 업무 성과 평가나 프로젝트의 아키텍처 프로세스(또는 개발 프로세스)를 도와주는 것도 아니다. 이 책이 도와줄 수 있는 것은 다양하고 중요한 품질속성을 준수해서 만들어질 아키텍처와 이를 기반으로 만들어질 미래 시스템을 어떻게 평가하는지를 보여주는 것이다.

마지막으로 소프트웨어 집약적 시스템에서 소프트웨어 아키텍처와 시스템 아키텍처에 대해서 이야기할 필요가 있다. 이 책은 소프트웨어 아키텍처에 대한 평가를 다루지만 다음과 같은 질문을 자주 받게 된다. "단순히 소프트웨어에 대해서만이 아니라 시스템에 대한 아키텍처는 어떻게 해야 하나요? 시스템도 소프트웨어만큼이나 중요하잖아요." 물론 맞는 말이다. 시스템 아키텍처도 소프트웨어 아키텍처와 같은 유사한 종류의 구조와 분할에 대한 의사결정을 담고 있다. 게다가 시스템 아키텍처에는 하드웨어/소프트웨어 간의 절충과 컴퓨팅 및 네트워크 장비를 포함하고 있어서 소프트웨어 아키텍처의 범위를 완전히 벗어나게 된다. 소프트웨어 아키텍처가 소프트웨어의 성패에 영향을 미치는 것처럼, 시스템 아키텍처는 시스템의 성패에 중요한 역할을 한다. 따라서 시스템 아키텍처도 소프트웨어 아키텍처와 마찬가지로 평가돼야 당연하다.

이 책에 소개된 방법들이 소프트웨어 아키텍처뿐만 아니라 시스템 아키텍처에도 동일하게 적용할 수 있다고 믿는다. 시스템의 변경용이성을 고려한다면 시스템의 생명주기 동안 변경하는 데 드는 비용을 측정하는 방법을 사용할 수 있다. 예를 들어 성능을 고려한다면 시스템과 소프트웨어에서 병목구간과 문제 영역을 찾아내는 방법을 사용할 수 있다.

시스템 아키텍처에도 적용될 수 있다면 왜 이 책을 '소프트웨어' 아키텍처 평가라고 부르는가? 이는 이 평가방법이 소프트웨어 범위에서 생성되고, 만들어지고, 테스트되고, 성숙했기 때문이다. 따라서 이 책에서 아키텍처라고 말할 때는 소프트웨어를 접두어로 붙여서 이해해도 무방하다. 시스템을 접두어로 붙일 수도 있지만 이는 여러분이 얼마나 해당 방법이 시스템 아키텍처에 적용 가능한지와 해당 내용에 대한 우리의 의도를 얼마나 확실하게 이해하는지에 달렸다.

마지막으로 여러분의 경험을 공유해주기를 바란다. 여러분이 어떤 부분을 잘 수행하고 있고 어떤 부분이 잘 안 되는지를 알고 싶다. 책을 쓴다는 것은 교훈을 공유할 기회지만, 새로운 교훈을 모으는 것도 중요하다.

폴 클레먼츠, 릭 케즈먼, 마크 클라인 --- '저자 서문' 중에서

최근 소프트웨어 아키텍처에 대한 관심이 점차 높아지면서 다양한 서적과 교육과정들도 속속 생겨나고 있습니다. 또한 실제 현장에서도 아키텍처를 정의하는 절차에 따라 아키텍처 정의서를 작성하는 사례도 많아지고 있으며 이를 전담하는 아키텍트도 늘어나고 있습니다. 이 모두 소프트웨어 업계가 점차 성숙한다는 측면에서 반가운 일이지만 구축된 소프트웨어 아키텍처가 올바른지를 검증하는 일은 아직 부족한 상황이라고 할 수 있습니다.

저희 역자들이 몸담은 시스템 통합(SI) 프로젝트를 살펴보면 대부분 상용 또는 오픈소스 솔루션을 이용하는 환경에서 아키텍처를 수립하게 됩니다. 이처럼 각기 특정 기술이나 독자적인 아키텍처를 바탕해 만들어진 아키텍처 구성요소들을 기반으로 애플리케이션의 기능을 구현함에 있어 발생하는 위험요소와 절충점을 사전에 파악하는지의 여부는 성공을 가름하는 중요 요소가 됩니다. 따라서 아키텍트는 다양한 의사결정의 조합으로 발생하는 결과가 목표에 부합하는지를 확인하는 데 많은 시간을 할애해야 하지만 이런 시간은 잘 주어지지 않는 게 현실입니다. 따라서 많게는 수 백 명의 개발자가 준수해야 하는 아키텍처가 달성하고자 하는 목표에 얼마나 근접한지를 확인할 수 있는 절차나 검증 방법은 매우 단편적인 경우가 대부분이며 실제 오픈에 다다라서야 문제를 알 수 있는 경우가 많습니다.

한편 이와 같은 문제를 개선하기 위해 경험이 풍부하고 실력 있는 여러 엔지니어가 참여하더라도 고객의 요구사항과 개발자의 수준을 고려하지 않고 자신이 적용해본 특정 기술을 적용하는 일만 지향하거나 이들간의 이견을 효율적으로 조율할 수 있는 원칙이 없다면 이러한 접근방법도 심각한 문제를 일으킬 수 있습니다.

이 책에서 소개한 아키텍처 평가는 소프트웨어 공학이라는 관점에서 봤을 때 가장 최적의 비용으로 최대의 효과를 보장하는 안전장치라고 할 수 있습니다. 앞에 설명한 바와 같이 다양한 참여자들 간의 의견 공유를 통해 프로젝트의 중요한 의사결정을 내려야 할 때 편중된 의견을 효과적으로 조율하거나 침묵하는 다수 의견을 가시화하는 일은 매우 어렵습니다. 따라서 아키텍처 평가의 가장 중요한 효과는 이러한 프로젝트 참여자들 간의 역학관계를 매우 효과적으로 대응할 수 있는 방안을 제시한다는 점입니다. 이는 아키텍처 평가가 아키텍처 방향성을 수립하는 데 참여, 공유, 개방이라는 키워드에 매우 잘 들어맞는다고 할 수 있습니다. 이 책을 읽는 독자들도 저희 역자들이 느낀 아키텍처 평가의 효과를 공감하고 특히, 평가되는 데에 대해 두려움을 느끼기보다는 평가를 할 수 있음에 안도감을 느낄 수 있기를 바랍니다.

베타리더에 참여하셔서 이 책을 번역하는 데 조언을 주신 옥상훈님, 강용석님, 차병태님, 최정일님과, 물심양면의 도움은 물론 뜨거운 관심을 보여 주신 한국 소프트웨어 아키텍트 연합회 회원들과 회사 선배님, 동료들에게 감사드립니다.

--- '옮긴이의 말' 중에서

출판사 리뷰

올바른 아키텍처를 선택하거나 수립했는지를 평가하는 데 활용할 수 있는 ATAM 등 평가 기법을 소개하고 이를 기반으로 아키텍처 평가를 수행하는 데 실질적인 절차와 지침을 제공하는 소프트웨어 아키텍트의 필독서이다.

이 책에서는 아키텍처 설계 의사결정과 그 결과인 소프트웨어 자산 간에 명확하게 파악된 연결관계를 그려내기 위해 소프트웨어 아키텍처 평가방법과 이를 실제 적용한 사례를 설명한다. 이 방법은 아키텍처 평가에 개발 일정(대개 며칠 이내)을 좀더 늘리거나 비용을 추가하는 것만으로도 실제로 위험을 감소시킬 수 있다는 사실을 보여준다. 이 책은 아키텍처 평가에 대한 개념적인 배경 소개와 많은 정부기관과 업계에서 실제 수행됐던 내용을 기반한 단계적 가이드를 제공한다.

특히 이 책에서는 다음 세 가지의 주요한 평가방법을 설명한다.

■ 아키텍처 트레이드오프 분석방법(ATAM)
■ 소프트웨어 아키텍처 분석방법(SAAM)
■ 중간설계에 대한 능동적 검토(ARID)

이 책에서 다룬 상세한 사례연구를 통해 평가방법을 실제 시스템에 적용했을 때의 가치를 보여주며, 보충 설명을 통해 이 책의 전반에 걸쳐 어려운 상황에서 도출된 실제 팁과 흥미로운 배경 이야기를 제공한다.

소프트웨어 엔지니어라면 반드시 어떻게 소프트웨어 아키텍처 평가를 수행하는지를 알아야 한다. 이 책을 읽으면 아키텍처 평가에 대해서 정리된 경험을 통해서 좀더 쉽게 익힐 수 있을 것이다.

이 책을 읽는 독자는 아키텍처 이슈에는 능통하지만 아키텍처 평가는 실무 경험이 없다고 가정한다. 이 책은 다음과 같은 주제를 다룬다.

1장은 이 책에서 사용되는 공통적인 개념의 시작점을 잡고 용어를 정립하기 위해 소프트웨어 아키텍처의 주제에 대해 간단히 소개한다.

2장은 소프트웨어 아키텍처 평가를 설명할 수 있는 기반을 마련한다. 아키텍처 평가를 하는 이유와 시점, 참여자, 비용과 이점 및 평가에서 어떤 실질적인 결과를 기대할 수 있을지를 논의한다.

3장은 이 책에서 설명할 방법 중 첫 번째며 가장 자세하게 다룬 아키텍처 트레이드오프 분석방법(ATAM)을 소개한다. 또한 ATAM의 주요단계와 세부단계를 설명한다.

4장은 ATAM을 실제 시스템에 적용한 짧은 사례연구로서, 이를 통해 앞 장에서 배운 세부단계가 적용된 모습을 간략히 볼 수 있다.

5장은 ATAM에 깔린 기본 개념과 관련된 소프트웨어 아키텍처 평가방법을 소개한다. 여기에는 품질속성 특징화와 분석 질문과의 관계, 그리고 속성 기반의 아키텍처 스타일(ABAS) 등이 있다.

6장은 미 항공 우주국(NASA)에서 운영되는 시스템에 적용된 ATAM에 대해 자세하고 심층적으로 소개한다. 이 사례연구는 4장에서 설명한 방법의 세부단계와 유사하지만 좀 더 상세한 것으로, 실무적이고 상세한 내용에 집중하고 있으며 경험 기반의 지침(즉 계획대로 진행되지 않을 때 무엇을 할지 등)을 제공한다.

7장은 변경용이성(그리고 이에 관련된 이식용이성, 확장용이성, 유지보수성 등)과 기능성 면에서 아키텍처를 평가하는 데 특화된 방법인 소프트웨어 아키텍처 분석방법(SAAM)을 소개한다. SAAM을 적용한 검증된 사례연구도 살펴본다.

8장은 아키텍처의 한 부분으로 제공되는 서비스인 실행가능성과 적합성을 시험하는 방법인 중간설계에 대한 능동적 검토(ARID)를 제공한다. ARID는 부분적인 설계를 평가하는 데 유용하다. 여기에도 ARID를 적용한 사례연구를 담았다.

9장은 ATAM, SAAM, ARID와 그 밖의 여러 아키텍처 평가방법을 광범위하게 비교해본다.

10장은 조직 차원에서 제도화된 아키텍처 기반 소프트웨어 개발로 가는 데 중요한 단계인 조직 차원에서 지속적인 아키텍처 평가 역량의 증대에 대해 이야기한다.

11장은 결론과 마무리 부분으로서 내용을 정리한다.

리뷰/한줄평0

리뷰

첫번째 리뷰어가 되어주세요.

한줄평

첫번째 한줄평을 남겨주세요.