이 책에 쏟아진 찬사 ... 4 추천의 글 Ⅰ 마틴 파울러 ... 10 추천의 글 Ⅱ 가이 가와사키 ... 11 감사의 글 ... 12 저자 소개 ... 13 옮긴이의 말 ... 14 들어가며 ... 27 1장 소프트웨어 아키텍처 소프트웨어 아키텍처의 정의 ... 31 소프트웨어 아키텍처를 보는 또 다른 관점 ... 32 서브시스템은 의존성을 관리할 수 있도록 디자인한다 ... 32 서브시스템은 인간적인 동기와 욕구를 충족시킬 수 있도록 디자인한다 ... 32 훌륭한 아키텍처에 승복하라 ... 34 아름다움은 그것을 추구하는 사람의 눈 안에 있다! ... 34 소프트웨어 아키텍처가 중요한 이유 ... 35 수명 ... 35 안정성 ... 35 수정 작업의 난이도와 성격 ... 35 수익성 ... 36 사회적 구조 ... 36 영역 결정 ... 38 지속 가능한, 우월한 경쟁력 ... 38 아키텍처 만들기 ... 38 패턴과 아키텍처 ... 41 아키텍처의 발전과 성숙: 기능과 수용력 ... 42 아키텍처에 대한 관심과 육성 ... 50 기술적 자산 ... 50 기술적 부채 ... 50 알고 있는 버그 ... 51 라이선스 협약 준수 ... 51 제1, 제2, 제3의 원칙 ... 52 캡슐화 ... 52 인터페이스 ... 52 느슨한 연결 ... 53 적절한 규모 ... 53 높은 응집력 ... 54 매개변수 ... 54 지연 ... 54 아키텍처의 이해 ... 54 팀 ... 56 2장 제품개발 첫걸음 제품관리의 정의 ... 61 제품관리의 중요성 ... 62 제품개발 프로세스: 릴리즈 1.0 만들기 ... 63 개념제안서 ... 65 제품제안서/사업계획서 ... 65 개발계획서 ... 65 개발 ... 67 최종 품질보증(QA) ... 67 출시준비 ... 70 출시 ... 70 오해하지 말자 ... 71 폭포수 프로세스를 닮았다. 그런데 폭포수 프로세스는 효과적이지 않다 ... 71 모든 단계가 동등하게 중요한 것처럼 소개하고 있다 ... 72 시간을 상술하지 않고 있다 ... 72 어떻게 반복하나? ... 72 개발 프로세스를 정하지 않고 있다 ... 73 진행 단계별로 관련된 그룹 사이의 협업 수준을 명시하지 않고 있다 ... 73 사업계획서 ... 74 제품개발 프로세스: 릴리즈 버전 n.n.n 만들기 ... 75 제품개발 프로세스의 확장 ... 76 지속적인 마감 ... 76 변화관리 프로토콜 ... 77 재활용 상자 ... 78 주요 제품관리 개념 ... 79 마케팅의 4P ... 79 총 유효 시장, 총 접근가능 시장, 시장 세그먼트 ... 81 S자 제품 채택 곡선 ... 82 완전제품 ... 85 기술 우월성과 시장 우월성 ... 86 포지션과 포지셔닝 ... 86 브랜드 ... 88 메인 메시지 ... 89 3장 마키텍처와 타키텍처의 차이점 누가 무엇을 책임지는가? ... 93 솔루션 개발 초기에 영향을 주는 요인 ... 95 미래를 보는 안목으로 현실에서 성과 만들기 ... 101 미래 계획하기 ... 102 피드백 이용하기 ... 103 분명하게 만들기 ... 105 협력하며 일하기 ... 107 합의에 이르기 ... 108 데이터 공유하기 ... 109 컨텍스트 다이어그램과 타깃 제품 ... 109 4장 비즈니스 모델과 라이선스 모델의 공생 일반적인 소프트웨어 비즈니스 모델 ... 115 접근이나 이용기간 제한 ... 118 트랜잭션 ... 122 미터링 ... 125 하드웨어 ... 128 서비스 ... 129 매출증가/비용절감 ... 130 비즈니스 모델과 연관된 권리 ... 131 비즈니스 모델을 위한 타키텍처의 지원 ... 134 일반적인 문제 ... 134 접근이나 이용기간 제한 ... 136 트랜잭션 ... 136 미터링 ... 138 하드웨어 ... 140 라이선스 모델 강제하기 ... 140 명예 시스템 ... 141 직접 만든 라이선스 관리자 ... 141 서드파티 또는 전문 라이선스 관리자 ... 142 클라이언트 ... 143 시장의 성숙도가 비즈니스 모델에 미치는 영향 ... 147 비즈니스 모델 선택 ... 148 5장 기술 도입 라이선스 도입의 위험 / 보상 ... 154 계약서―액션(행동지침)이 있는 곳 ... 158 계약서의 기초 ... 158 라이선스 약정 ... 158 비즈니스 모델이 충돌하면, 협상을 해야 한다 ... 164 라이선스 협정서 존중 ... 166 라이선스 도입한 기술 관리 ... 166 오픈 소스 라이선스 도입 ... 167 라이선스 비용 ... 168 라이선스 도입의 경제학 ... 171 6장 이식성 알려진 이식성의 장점 ... 175 이식성에 관한 제안 ... 176 이식 가능한 애플리케이션 만들기 ... 180 인터프리터 언어를 사용하라 ... 180 표준에 기반한 영구 스토리지를 사용하라 ... 181 비즈니스 로직을 이식 가능하게 만들라 ... 181 사용자에게 가까울수록 이식성이 떨어진다 ... 181 표준화되고 공동 사용 가능한 서브시스템 간의 통신에는 XML을 사용하라 ... 182 이식성이란 명목으로 특정 플랫폼에 한정적인 우수한 기능을 감추지 마라 ... 182 난이도 도표 ... 182 1단계: 실행환경 지우기 ... 184 2단계: 실행환경 정렬하기 ... 185 3단계: 최종본 만들기 ... 186 조심해서 약속하라 ... 189 7장 배치 아키텍처 배치 방식 ... 192 고객 사이트 방식 ... 192 ASP 방식 ... 192 MSP 방식 ... 193 트랜잭션 방식(웹 서비스) ... 193 고객이 배치 아키텍처에 미치는 영향 ... 195 통제와 통합 ... 195 데이터 보안/프라이버시와 최고 부하 ... 196 비용과 업체에 대한 신뢰 ... 196 고객의 역량과 경험 그리고 지리적 분포 ... 197 회사가 배치 아키텍처에 미치는 영향 ... 199 세일즈 사이클 ... 199 인프라에 대한 투자 ... 200 현금 흐름 ... 201 유연성 ... 201 지리적 분포 ... 202 가격이 아닌, 서비스 ... 202 소프트웨어 배치 아키텍처의 선택 ... 202 배치 아키텍처와 작업 배분 ... 203 정보기기 ... 204 배포 방식이 소프트웨어 아키텍처에 미치는 영향 ... 205 유연한, 파라미터에 의한 통합 옵션, 또는 통합 옵션이 없는 경우 ... 205 업그레이드 정책 ... 205 데이터 보호와 접근 ... 206 이전 옵션 ... 206 소비자 소프트웨어의 미래 ... 206 8장 통합과 확장 사용자의 지배력 - 주도하는 힘 ... 211 통합/확장의 이유 ... 211 계층적인 비즈니스 아키텍처: 논리적인 구조 ... 214 사용자 인터페이스 계층 ... 215 서비스 계층 ... 216 도메인 모델 계층 ... 216 퍼시스턴트 데이터 계층 ... 217 주제에 의한 변주 ... 218 계층적인 비즈니스 아키텍처 만들기 ... 219 비즈니스 로직 계층에서의 통합과 확장 ... 223 기술, 그리고 제어권의 소재 ... 223 API를 통한 통합 ... 224 등록을 통한 확장 ... 228 퍼시스턴트 데이터의 통합과 확장 ... 229 뷰 ... 230 사용자 필드 ... 231 후크 테이블 ... 232 스프레드시트 피벗 테이블 ... 234 추출, 변환, 로드 스크립트 ... 234 고객에게 현실을 공개하라 ... 235 비즈니스 파생물 ... 236 전문가 서비스 ... 236 교육 프로그램 ... 237 자격증 ... 239 사용자 커뮤니티 ... 241 라이선스 협약 ... 242 여러 출시에 걸쳐 API를 관리하기 ... 243 API 관리 테크닉 ... 244 9장 브랜드와 브랜드 요소 브랜드 요소 ... 247 브랜드 네임 ... 247 그래픽, 슬로건, 기타 브랜드 요소 ... 252 언제 트레이드마크(TM) 심볼을 사용하나 ... 253 라이선스 도입한 브랜드의 관리 ... 254 브랜드 요소 수정 및 맞춤 ... 254 브랜드 요소 바꾸기 ... 255 변경해야 할 제품 영역 ... 256 QA와 변경 ... 257 10장 사용성 사용성은 돈에 관한 문제다 ... 260 멘탈 모델, 메타포 그리고 사용성 ... 262 타키텍처가 사용자 인터페이스 디자인에 미치는 영향 ... 264 영향을 미치는 범위 ... 265 속도에 대한 욕구 ... 273 우리가 이야기할 것을 분명하게 정하자 ... 273 마키텍트가 진정으로 원하는 것 ... 276 사용자에게 응답하기 ... 278 성능 그리고 타키텍처의 효과 ... 279 11장 설치 OOBE ... 287 아야! 그건 아프다고 ... 289 고객의 공포 ... 289 설치와 아키텍처 ... 291 원인과 선택 ... 291 설치 방법 ... 294 설치 관련 데이터 수집과 전제 조건 검사하기 ... 294 설치하기 ... 296 설치 이후 확인하기 ... 298 마지막 손길 ... 299 사용자는 매뉴얼을 읽지 않는다 ... 299 설치와 삭제를 테스트하라 ... 299 12장 업그레이드 설치와 비슷하다. 단지 더 나쁠 뿐이다 ... 303 업그레이드에 대한 공포 ... 303 업그레이드의 고통을 줄이는 방법 ... 308 고통 없는 업그레이드를 위한 선택 ... 308 시장 성숙도와 업그레이드 ... 312 13장 설정 설정용이성(사용성의 한 요소) ... 315 시스템 컨텍스트 ... 316 컨텍스트 정보 ... 316 초기화와 실행 ... 318 값 설정하기 ... 319 올바른 값 설정하기 ... 320 설정 매개변수 결정법 ... 322 14장 로그 무슨 일이 일어나는지 알고 싶다 ... 326 충분한 데이터가 필요하다 ... 328 로그 포맷과 관리 ... 330 로그 포맷 ... 330 로그 관리 ... 332 로그 관련 표준과 라이브러리 ... 334 로그 데이터에 대한 후처리 ... 334 서비스에 대한 로그 남기기 ... 335 15장 출시관리 그렇다, 당신이 정말 필요로 하는 것은 이것이다 ... 339 기초 다지기 ... 340 출시본 관리 ... 341 당신이 출시하려는 것 ... 341 당신이 타깃으로 삼는 사람 ... 342 그들이 그것을 원하는 이유 ... 343 출시본 식별 ... 343 전체 또는 완전 출시본 ... 344 부분 출시본 ... 346 패치본 ... 346 변형본 ... 349 SKU(제품번호)와 시리얼넘버(일련번호) ... 350 SKU 관리 ... 351 시리얼넘버, 등록 그리고 활성화 ... 353 출시관리가 타키텍처에 미치는 영향 ... 355 16장 보안 바이러스, 해커, 무단사용자 ... 360 위험 관리 ... 361 나쁜 것은 보지도, 말하지도 마라 ... 362 디지털 신원 관리 ... 363 권한부여(누가 무엇을 할 수 있는지 정의하기) ... 363 신원확인(누구인지 확인하기) ... 364 트랜잭션 보안 ... 367 감사가능성(행위에 대한 증명) ... 367 무결성(데이터에 대한 위조와 변조 막기) ... 368 기밀성(권한 없는 사람들로부터 데이터를 보호하기) ... 369 책임성(사람들이 자신의 행동에 책임을 지게 만들기) ... 370 소프트웨어 보안 ... 370 소프트웨어 보안 기술 ... 370 소프트웨어 보안 비용 / 혜택 ... 373 정보 보안 ... 374 알고리즘을 비밀로 할까, 아니면 키를 비밀로 할까? ... 375 백도어 ... 376 보안과 마키텍처 ... 378 상호작용의 영역 ... 378 부록 A 출시 체크리스트 정보 추적 ... 385 엔지니어링/개발 ... 385 품질 보증 ... 385 기술문서 ... 386 핵심 제품관리 ... 386 지식 이전: 전문가 서비스 ... 386 지식 이전: 세일즈와 채널 ... 386 지식 이전: 기술지원 ... 387 출시 활동 ... 287 부록 B 전략적인 제품관리를 위한 패턴 랭귀지 패턴 적용 ... 389 결과 표시와 공유 ... 391 시장 지도 ... 392 내용 ... 392 문제 ... 392 요인 ... 392 해법 ... 392 결과 ... 393 관계된 패턴 ... 393 시장 이벤트 / 시장 리듬 ... 394 내용 ... 394 문제 ... 394 요인 ... 394 해법 ... 394 결과 ... 395 관계된 패턴 ... 395 기능/혜택 지도 ... 396 내용 ... 396 문제 ... 396 요인 ... 396 해법 ... 396 결과 ... 397 관계된 패턴 ... 397 타키텍처 로드맵 ... 397 내용 ... 397 문제 ... 397 요인 ... 397 해법 ... 398 결과 ... 399 관계된 패턴 ... 399 참고문헌 ... 401 추천도서 ... 403 찾아보기 ... 406