태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

SRS(Software Requirements Specification)의 중요성

2008/11/19 10:32 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
본 블로그에서 소프트웨어 개발, 소프트웨어 공학에 대한 여러 주제에 대해서 다루겠지만, 
특히 나는 요구사항 특히 SRS에 대해서 많이 다루려고 합니다.
"소프트웨어개발의모든것"이라는 책에서도 요구사항에 대해서 가장 중요하게 다루고 있지만 지면의 한계와 다양한 독자층의 눈높이를 맞추기 위해서 욕심보다는 많이 설명하지 못하는 측면이 있습니다.
그래서 소프트웨어 개발단계에서 가장 중요한 "요구사항"에 대해서 천천히 여러분들과 의견을 주고 받으면서 심도있게 다뤄볼까 합니다. 제가 세상의 모든 경우의 요구사항 분석 기술 및 경험이 있는 것이 아니니 여러분들과 토론을 하면서 또 많이 배울 것을 기대하고 있습니다.

먼저 제가 책에서 요구사항에 대해서 설명한 내용을 앞부분을 약간 소개할까 합니다.

 요구사항 분석

소프트웨어 프로젝트에 있어서 가장 흔한 실수 중의 하나가 요구사항이 불명확한 상태에서 급하다는 이유로 일단 설계, 구현을 시작하는 일이다. 어떤 경우는 스펙문서가 아예 없는 상태에서 프로젝트를 진행하는 경우도 있다. 또는 간단한 요구사항 목록을 가지고 스펙이라고 착각하는 경우도 많다.
제대로 된 요구사항 개발 없이 프로젝트를 성공적으로 수행하는 것은 거의 불가능하다. 고객의 요구사항을 상세히 기술하였다고 해서 좋은 요구사항은 아니다. 고객도 자신이 원하는 것을 자세히 모르는 경우가 아주 흔하기 때문이다. 고객의 요구사항을 단순히 기술한 정도의 요구사항은 프로젝트 후반에 많이 바뀔 수 있는데, 요구사항 개발 시 간단히 해결할 수 있는 것을 프로젝트 후반이나 유지보수 시까지 와서야 처리함으로써 수십 배의 비용을 추가로 치르는 경우도 있다.
요구사항 개발은 단순히 요구사항을 옮겨 적는 일이 아니다. 요구사항을 수집하고, 분석하고, 정리하고, 리뷰하는 일을 반복하여 완성도를 높여가는 일이다.
책을 보고, 샘플을 보고, 템플릿을 이용해서 독학함으로써 SRS를 잘 쓰는 것은 거의 불가능하다. 책이 도움은 될 수 있으나, SRS를 제대로 쓰려면 제대로 된 회사에 가서 몇 년 동안 일하면서 배워야 한다. 때에 따라서는 전문가에게 컨설팅을 받는 것도 좋은 방법이다. SRS는 기능공처럼 기법에 따라 작성하면 되는 것이 아니라 인간의 판단이 핵심인 문서이기 때문에 작성이 생각처럼 간단하지 않다.

 요구사항의 중요성

요구사항 문서는 프로젝트에서 작성하는 산출물 중에서 가장 중요하다. 요구사항 문서인 SRS는 소프트웨어 프로젝트의 기둥이다.
소프트웨어 시스템 구축에서 가장 어려운 부분은 무엇을 구축할 것인지를 정확하게 판단하는 것이다. 그러나 구현을 시작하기 전에 요구사항을 완벽하게 파악하는 것이 불가능한 경우가 많다. 그렇다고 해서 요구사항 개발에 소홀해서는 안 된다. 시간이 허락하는 한 최대 한도로 많은 정보를 파악하는 것이 좋다. 
잘못된 요구사항은 많은 재작업 비용을 필요로 한다. 재작업 비용은 일반적으로 전체 개발 비용의 30~50%에 이르는 것으로 알려져 있다. 요구사항 오류로 인한 재작업 비용은 전체 재작업 비용의 70~85%에 이른다. 잘못된 요구사항, 부족한 요구사항은 일정을 지연시키며 많은 추가 비용을 발생시킨다. (출처, Software Requirements, Karl E. Wiegers, Microsoft Press)
완벽하게 상세한 요구사항이 가장 좋은 요구사항은 아니다. 요구사항은 이해하기 쉽게 간결함을 추구해야 한다. 간결하지만 충분히 설계, 구현할 수 있어야 한다. 그리고 요구사항 문서는 모든 관련자가 충분히 검토해야 한다.



요구사항 오류는 개발 단계가 지나가면 갈수록 그 수정 비용이 기하급수로 증가한다. 유지보수 단계에서 요구사항 오류를 바로 잡으려면 요구분석 단계에서 바로 잡는 것보다 200배의 비용이 더 드는 것으로 알려져 있다. 충분히 검토하여 오류가 없는 요구사항을 만드는 것이 프로젝트를 성공으로 이끄는데 가장 필요한 핵심이다.

SRS란?

요구사항 분석 문서의 종류는 수없이 많다. 개발 방법론에 따라서 제시하는 요구사항 문서가 다르고, 그 개수도 다르다. 여기서 소개할 문서는 SRS이다. SRS는 이 책 전체에서 소개하는 많은 문서 중에서 가장 중요하다. 프로젝트를 성공으로 이끄는데 가장 중요한 핵심이기 때문이다. 만약 소프트웨어 프로젝트에서 문서를 딱 하나밖에 만들 시간이 없다고 하면 SRS를 만드는 것이 좋을 것이다.



SRS는 IEEE에서 만든 가이드와 표준 Template이 있다. 회사들마다 사용하는 Template이 약간씩 다르지만 문서이름, 목적, 취지는 전세계적으로 표준이라고 보면 된다. 소프트웨어 개발 회사라면 회사에 맞게 각자 커스트마이즈 된 SRS Template을 가지고 있어야 한다.


저작자 표시 비영리 변경 금지

전규현 프로젝트/요구사항분석 , , , ,

Trackback Address: http://allofsoftware.net/trackback/21 관련글 쓰기
  1. 2008/11/19 14:59
  2. 2008/11/19 20:03
    소프트웨어 개발 방법론 Tracked from 녹차 프린스
  3. 2008/11/19 22:40
    요구파악과 사양정의 Tracked from Insight..
  4. 2008/11/24 11:30
    SRS는 유용한가.. Tracked from 상실의시대
  5. 2008/12/09 11:44
    11 Tracked from 『dK』‘s 나의 지식을 오픈하는 것은 나를 더욱 강하게 만드는 길이다. (아무개..)
  1. Blog Icon
    똘똘마리

    좋은 글 읽었습니다. 궁금한 점

    1. SRS가 독학으로 거의 불가능하다고 하셨는데 처음 누군가가 SRS를 작성했을 때는 누구에게 배웠을까요? 물론 처음 누군가는 폰 노이만이나 앨런 튜닝같이 천재겠죠? 그래도 완전 불가능한 것이 아니니까 연습하다보면 조금씩은 발전해 나갈 수 있겠죠.

    2. SRS의 단위가 궁금합니다. 예를 들면 화면마다 하나씩 만든다라든지 모듈마다 하나씩이라든지 아니면 시스템마다 하나인지?

  2. Blog Icon
    똘똘마리

    거의 3년된 포스팅 글이라 답변이 달릴지 궁금했는데 자세한 답변 감사합니다. SRS를 읽으니 이것이야말로 생존의 돌파구가 아닐까 싶은 생각과 막 배우고 싶은 생각이 듭니다. 지방의 SI를 하고 있어 기회가 없는 것 같아 안타깝네요. 친절하고 꼼꼼한 답변 감사합니다. 포스팅 된 글과 책 열심히 읽어 보겠습니다.

  3. 안녕하세요. 똘똘마리님

    정말 재미있는 의문이네요. 골프나 피아노도 독학은 불가능합니다. 그럼 처음에 골프나 피아노를 친 사람은 누구에게 배웠을까요? 그 분야도 100년 넘게 진화를 해 온겁니다. 한사람이 정립한 것이 아닙니다. 이제 기술은 거의 완성이 되어서 과거나 지금이나 큰 차이가 없습니다. 배우는 방법이나 장비가 계속 발전하고 있을 뿐입니다.

    SRS는 60년 소프트웨어 역사에서 소프트웨어 공학이 발전하면서 가장 중요한 것이 스펙이라는 것을 알아내면서 정립된 것이고 거의 완성된지 20년이 지났습니다. 20년동안 기술이 발전하면서 조금씩 바뀌었지만 큰 틀은 변화가 없습니다.
    SRS의 틀은 혼자 만든 것이 아니고 20~30년 이상의 최고의 소프트웨어 개발자 수십명이 10년 이상 발전시켜나가면서 완성해 놓은 것입니다. 즉 소프트웨어를 개발할 때 꼭 정의해야 할 것들을 모두 적을 수 있는 틀을 만들어 놓은 겁니다.
    폰 노이만이나 앨런 튜닝 같은 천재가 아니고 실제 소프트웨어 프로젝트를 많이 진행 해봤던 실전파 전문가들입니다.
    몇가지 SRS Template들이 있지만 큰 틀은 같습니다.

    SRS단위는... SRS는 기능명세도 아니고 화면정의서도 아니고 설계서도 아닙니다. 스펙입니다.
    그래서 변역을 하지 않고 SRS라고 얘기를 해야 의미가 왜곡되지 않습니다. 외국 개발자들에게 SRS라고 하던가 스펙이라고 해야 의미가 통합니다.
    소프트웨어의 스펙은 화면, 인터페이스, 기능, 비기능 등 모든 것을 포함합니다. 그래서 보통 프로젝트에서 하나를 작성합니다. 하지만 프로젝트가 매우 거대하면 쪼개서 작성하기도 합니다만 왠만해서는 그런 정도로 큰 프로젝트를 보기는 힘듭니다.
    500MM 넘게 들어가는 프로젝트도 SRS하나면 됩니다.

    궁금증이 해결 되셨나요? ^^

문서를 작성하면 더 오래 걸린다는 고정관념

최근에 국내 유수 대학의 컴퓨터 공학 교수를 만난 적이 있다. 그 교수님도 문서를 작성하면서 Software를 개발하면 더 오래 걸린다고 굳게 믿고 있었다. 어느 정도 이해가 되는 상황이다. 원래 소프트웨어 공학은 실전에서..

이슈를 모으기도 정말 어렵다.

많은 회사들이 개발 프로세스 개선을 하겠다고 선진 개발 방법론을 흉내내거나 실패한 대기업의 프로세스를 가져다가 적용하곤 한다. 복잡한 프로세스와 많은 Template를 가져다가 적용해보려고 하는데 대부분은 실패를 한다. 기초..

변화에 실패하는 9가지 고정관념

회사는 끊임없이 변화하지 않으면 지속 성장하지 못한다. 하지만 변화는 피와 살을 깍는 고통을 동반하고 또 많은 회사가 변화에 실패해서 성장하지 못하거나 사라져간다. 보통의 사람들은 대부분 변화를 싫어하고 기존에 하던대로 계속..

좋은 프로그래머가 되는 24가지 방법

1. 프로그래밍에 열정이 있어야 한다. 열정이 없고 즐기지 못하면 평생하기 어려운 일이다. 2. 프로그래밍 기초 원리를 완전히 이해해야 한다. 원리를 모르면 근본적인 해결을 할 수 없다. 3. 문제 해결 능력을 키워야 한다...

요즘 실리콘밸리에서는...

얼마전 실리콘밸리의 한 Startup company에서 CTO로 일하고 있는 오랜 친구가 한국에 놀러와서 같이 여행을 갔다. Informix에서 소프트웨어 엔지니어로 시작해서 한 20년 정도 일한 중국인 친구다. 같이 일을..

전문가 vs. 책임자

우리나라 조직문화는 전문가보다 책임자를 선호한다. 조직의 장이 책임을 지고 모든 일을 알아서 하는 것이다. 상명하복 관계 위주다. 경영자가 SW개발에 대해서는 잘 모르는 경우 누구 한명이 책임지고 개발해줬으면 하는 생각을 하..

소프트웨어 회사의 자산은?

소프트웨어 회사의 자산은 무엇일까? 흔히 개발자가 소프트웨어 회사의 재산이라고 한다. 이런 회사일 수록 회사가 가지고 있는 것은 정말 개발자밖에 없다. 또한 파악하기 어려운 한 무더기의 소스코드가 있다. 개발자들이 나가면 이..

관리자가 이런 일까지?

우리나라 SW 조직에서 관리자란 위치는 참 애매한 위치다. 물론 전문 관리자라면 얘기가 다르지만 왕년에 SW를 조금 개발해 본 경우가 애매하다. 개발팀에서 가장 경험이 많은 SW 개발자들이 주로 팀장이 되곤 한다. 이 경우와..

과거의 성공이 발목을 잡을 때

수많은 소프트웨어 회사들이 첫번째 성공을 거두고 나서 두번째 도약에 실패하고 사라져간다. 물론 첫번째 성공도 어렵지만 이미 성공의 경험이 있고 방법을 알고 있는 회사들이 두번째 또는 세번째에는 많이 실패하는 이유가 무엇일까?..

스펙을 제대로 작성하는 것은 구식이다?

'소프트웨어 개발 방법이 얼마나 발전했는데 아직도 스펙을 제대로 작성하고 개발을 하는가?' 라고 하면서 스펙 작성에 반대하는 주장을 하는 사람들이 있다. 스펙, 설계를 작성하고 구현을 하고 테스트를 하는 방식으로 개발하는 것..