책 소개
프로젝트가 실패하지 않는 답은 소프트웨어 스펙 작성에 있다
소프트웨어 스펙(SRS)은 시작이고 기준이다. 스펙을 제대로 작성하는 것은 프로젝트의 성패를 가를 만큼 중요하다. 스펙을 잘 작성하기 위해서는 개발 문화, 관행, 습관, 프로세스, 원리, 원칙을 알고 접근해야 하며 실전을 통한 노하우 축적이 필요하다. 이 책은 저자들의 수많은 경험을 토대로 여러 유관 분야 이론을 망라하고 스펙 작성 요령을 제시한다. '스펙 작성'의 진짜 의미가 무엇인지 이 책을 통해 알아보길 바란다.
프로젝트의 불확실성을 줄이는 소프트웨어 스펙, 제대로 작성하고 있었을까?
프로젝트의 가장 많은 실패 원인은 스펙과 관련 있다. 소프트웨어 버그의 절반 이상이 부실하거나 잘못 작성된 스펙 때문에 발생한다. 프로젝트 성공률을 높이는 가장 좋은 방법은 스펙을 제대로 작성하는 것이다. 여기서 '제대로'는 '자세히'가 아니다. 어려움과 미지수까지 사실을 그대로 보고, 스펙을 작성하면서 검증해 불확실성을 줄여가는 것이다. 누구나 알고 싶어 하지만 쉽게 알 수 없는 소프트웨어 스펙 작성의 거의 모든 것을 정리했다. 훌륭한 소프트웨어를 만드는 데 힌트가 되기를 바란다.
- 1부 소프트웨어 스펙이란?
소프트웨어 스펙 원리를 이해하고 이를 잘 작성하는 역량을 키우는 방법을 알아본다. 스펙, SRS(Software Requirements Specification)라는 용어는 글로벌 소프트웨어 업계에서 널리 통용되는 표준 용어이며 기능명세서, 시방서 등과는 의미가 다르다.
- 2부 SRS 작성법
실제 SRS 템플릿을 제공하고 각 항목별 작성 내용을 설명한다.
작가 소개
김익환
서울대학교 공과대학 졸업 후 미국 산호세 주립대학교에서 전산학 학사, 스탠퍼드 대학교에서 전산학 석사를 취득했다. GE, 썬 마이크로시스템즈, GTE Government Systems 등 세계적인 실리콘밸리 기업에서 17년간 소프트웨어 개발 실무 내공을 쌓았으며, 글로벌 기업에 인터넷 통합 메시지 솔루션을 제공하는 '스탠퍼드 소프트웨어(Stanford Software Corp, USA)'를 설립했다. 국내에서는 안철수연구소 부사장 및 CTO를 지내고, 카이스트 소프트웨어대학원 겸임교수를 역임했다. 현재는 다양한 기업을 대상으로 경영/개발 컨설팅을 진행하며 실리콘밸리의 선진 소프트웨어를 전파하고 있다.
『대한민국에는 소프트웨어가 없다』, 『소프트웨어 개발의 모든 것』, 『글로벌 소프트웨어를 꿈꾸다』, 『글로벌 소프트웨어를 말하다, 지혜』를 집필하고 『세상을 바꾼 32개의 통찰』을 번역했으며, 소프트웨어 공학 블로그 ikwisdom.com을 운영한다.
전규현
연세대학교 공과대학 재학 중 개발한 타자연습 프로그램 '한글타자 1.0'이 계기가 되어 한글과컴퓨터에 입사했다. 이를 시작으로 26년간 한글과컴퓨터, 안철수연구소 등 여러 기업에서 수많은 소프트웨어를 개발했고 소프트웨어 엔지니어, 프로젝트 리더, 프로젝트 매니저, 수석 아키텍트, CTO, CEO 등 소프트웨어 개발 분야의 다양한 역할과 직무를 두루 경험하기도 했다. 그 과정에서 익힌 실리콘밸리 개발 문화를 국내 기업에 전파하고 글로벌 수준의 소프트웨어 역량을 갖추도록 선도하며 현재는 에이비시텍 소프트웨어 대표로서 소프트웨어 역량 향상을 위한 컨설팅 서비스를 온라인으로도 제공하고 있다.
『소프트웨어 개발의 모든 것』을 집필했고, 소프트웨어 공학 블로그 allofsoftware.net을 운영한다.
목 차
1부 소프트웨어 스펙이란?
1장 소프트웨어 스펙의 개요
1.1 소프트웨어 프로젝트 실패의 원인
1.2 스펙에 대한 오해
1.3 스펙의 역할
1.4 스펙을 제대로 작성하지 않으면
1.5 스펙과 프로젝트의 성공
2장 SRS
2.1 SRS란 무엇인가?
2.2 어떻게 소프트웨어를 빠르게 개발할 것인가?
2.3 스펙 문서의 유형
2.4 요구사항과 스펙의 차이
2.5 스펙 문서에 대한 착각
2.6 스펙인 것과 스펙이 아닌 것
2.7 스펙과 프로젝트 일정의 관계
2.8 스펙과 설계의 구분
3장 스펙 작성의 현주소, 현실과 관행
3.1 현재의 관행과 문제점
3.2 스펙에 대한 잘못된 통념
3.3 부실한 스펙 후 설계는 사상누각
3.4 시간만 있으면 누구나 스펙을 쓸 수 있는가?
3.5 소프트웨어 공학, 약인가? 독인가?
4장 사례 연구
4.1 A사의 해외 프로젝트_부실한 분석에 의한 계약
4.2 B사의 부품 교체_허술한 변경 관리
4.3 C사의 갑을 관계_고객의 의무 소홀
4.4 D사의 SI 수행_분석 역량 부족
4.5 E사의 소프트웨어 개발_있는 것은 소스코드뿐
4.6 F사의 공공 프로젝트_과도한 산출물
4.7 해외 사례_초기 분석 부실
5장 기업 문화
5.1 스펙과 기업 문화
5.2 잘 작성한 스펙의 혜택
5.3 좋은 관행 만들기
5.4 전사 아키텍처 전략을 선도하는 기술위원회
5.5 사수/부사수 시스템 탈피 방법
5.6 스펙을 제대로 작성하려면
6장 프로세스
6.1 소프트웨어 프로젝트의 개발 단계
6.2 스펙 작성 프로세스
6.3 SRS 관점으로 바라본 방법론 비교
6.4 스펙 작성에 시간을 얼마나 할애해야 하는가?
6.5 스펙은 얼마나 자세히 적어야 하는가?
6.6 스펙 리뷰
6.7 코드 리뷰보다는 설계 리뷰, 설계 리뷰보다는 스펙 리뷰
6.8 스펙과 베이스라인
6.9 스펙 변경 프로세스
6.10 종결된 프로젝트의 스펙, 업데이트할 것인가?
6.11 종결된 프로젝트의 스펙 일부 삭제
6.12 대형 프로젝트 분석의 협업
7장 Who?
7.1 스펙은 누가 쓰는가?
7.2 분석 아키텍트의 역할
7.3 분석 아키텍트의 자질
7.4 소프트웨어 개발자는 글을 잘 써야 한다
7.5 문서 작성 기술
7.6 시뮬레이션 능력
7.7 문제 해결 능력
7.8 프로젝트 이해관계자
8장 What?
8.1 why, what, how
8.2 목표와 범위 정의하기
8.3 요구사항에 우선순위 부여하기
8.4 외주 시 외주 업체에 전달할 문서는?
8.5 스펙 체크리스트의 효용성
9장 How?
9.1 스펙의 재료
9.2 스펙 가독성 높이기
9.3 문장 바르게 쓰기
9.4 스펙 작성 팁
9.5 스펙 재사용하기
9.6 소스코드로 스펙 작성하기
9.7 유닛 테스트로 스펙 작성하기
9.8 중복 최소화하기
9.9 품질 특성 명시하기
9.10 프로토타입 만들기
9.11 스펙을 적기 위해서는 why를 알아야 한다
9.12 훔쳐보기는 이제 그만
9.13 인터페이스 개선하기
9.14 인터페이스 정의하기
10장 도구
10.1 SRS 작성을 돕는 도구
10.2 UI 작성 방법
10.3 스펙 문서의 템플릿
2부 SRS 작성법
1장 Introduction(개요)
1.1 Purpose(목표)
1.2 Product Scope(범위)
1.3 Document Conventions(문서 규칙)
1.4 Terms and Abbreviations(정의 및 약어)
1.5 Related Documents(관련 문서)
1.6 Intended Audience and Reading Suggestions(대상 및 읽는 방법)
1.7 Project Output(프로젝트 산출물)
2장 Overall Description(전체 설명)
2.1 Product Perspective(제품 조망)
2.2 Overall System Configuration(전체 시스템 구성)
2.3 Overall Operation(전체 동작방식)
2.4 Product Functions(제품 주요 기능)
2.5 User Classes and Characteristics(사용자 계층과 특징)
2.6 Assumptions and Dependencies(가정과 종속관계)
2.7 Apportioning of Requirements(단계별 요구사항)
2.8 Backward Compatibility(하위 호환성)
3장 Environment(환경)
3.1 Operating Environment(운영 환경)
3.2 Product Installation and Configuration(제품 설치 및 설정)
3.3 Distribution Environment(배포 환경)
3.4 Development Environment(개발 환경)
3.5 Test Environment(테스트 환경)
3.6 Configuration Management(형상 관리)
3.7 Bugtrack System(버그트래킹 시스템)
4장 External Interface Requirements(외부 인터페이스 요구사항)
4.1 System Interface(시스템 인터페이스)
4.2 User Interface(사용자 인터페이스)
4.3 Hardware Interface(하드웨어 인터페이스)
4.4 Software Interface(소프트웨어 인터페이스)
4.5 Communication Interface(통신 인터페이스)
5장 Performance Requirements(성능 요구사항)
5.1 Throughput(작업 처리량)
5.2 Concurrent Session(동시 세션)
5.3 Response Time(대응 시간)
5.4 Performance Dependency(성능 종속관계)
5.5 Other Performance Requirements(그 외 성능 요구사항)
6장 Non-functional Requirements(비기능 요구사항)
6.1 Safety(안전성 요구사항)
6.2 Security(보안 요구사항)
6.3 System Attributes(소프트웨어 시스템 특성)
6.4 Logical Database Requirements(데이터베이스 요구사항)
6.5 Business Rules(비즈니스 규칙)
6.6 Design and Implementation Constraints(설계와 구현 제한사항)
6.7 Memory Constraints(메모리 제한사항)
6.8 Operations(운영 요구사항)
6.9 Site Adaptation Requirements(사이트 적용 요구사항)
6.10 Internationalization Requirements(다국어 지원 요구사항)
6.11 Unicode Support(유니코드 지원)
6.12 64bit Support(64비트 지원)
6.13 Certification(제품 인증)
7장 Functional Requirements(기능 요구사항)
8장 Change Management Process(변경 관리 프로세스)
9장 Document Approvals(최종 승인자)
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
| 반품사유 | 반품 배송비 부담자 |
|---|---|
| 단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
| 고객 부담이 아닙니다. |
| 진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
|---|---|---|---|
| 어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
| 환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
| 결제수단 | 환불시점 | 환불방법 |
|---|---|---|
| 신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
| 계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
| 휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
| 포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
| 상품군 | 취소/반품 불가사유 |
|---|---|
| 의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
| 계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
| 가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
| 자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
| CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
| 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
| 노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |










