태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

고객이 요구사항을 너무 자주 바꿔요.

2009.07.30 23:48 by 전규현


잠시 후 Google blogger로 이동됩니다.



우리나라 소프트웨어 시장을 너무 비관적으로 과대평가하는 경우를 종종 봅니다.

예를 들면 전세계 유래가 없는 까다로운 고객 요구 수준, 시도 때도 없이 바뀌는 요구사항, 엄청나게 낮은 금액, 제품의 Output과는 상관없이 작업 시간을 통제하는 관행

일부는 공감을 하기도 하지만, 어느 나라를 가던지 각 나라만의 특징이 있다는 측면으로 바라보고 싶습니다. 우리나라 고객은 요구사항을 정말로 외국에 비해서 더 자주 바꾸는 것인지는 생각해 볼 필요가 있습니다. 어딜 가던지 고객은 요구사항을 항상 바꾸기 마련이고, 그것이 고객의 습성이라고 볼 수 있습니다. 그런데, 외국에서는 관행적으로 문화적으로 스펙을 근거로 계약을 하고, 분석 능력이 뛰어난 엔지니어들도 많이 있습니다. 하지만 그런 저변이 상대적으로 부족한 우리는 개발을 하는 쪽이나 고객이나, 일단 대충으로 요구사항으로 개발을 하고 나중에 서로 맞춰나가는 것이 상당 부분 관행화된 측면이 있습니다.

개발회사와 개발자가 요구사항을 분석하고 통제하는데 능력을 갖추고 있다면 100%는 아니지만, 고객의 요구사항 변경을 상당부분 통제 가능한 범위 안으로 가져올 수도 있습니다. 

스스로가 주먹구구 식으로 개발을 하면서 고객에게만 덤터기를 씌우는 것은 스스로에게 이득이 될 것이 없습니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지
신고

전규현 프로젝트/요구사항분석 개발자, 변경, 분석, 소프트웨어, 요구사항

  1. 포스팅 잘 읽었습니다. CMMI에서도 요구사항에 대해서 요구사항을 먼저 "개발" 하고 그 다음 레벨이 요구사항 "관리"입니다. 지속적으로 요구사항이 바뀌기 때문이지요. 본문의 내용과 비슷한 맥락이라 허접 답변 남기고 갑니다. ^^

  2. hoya님 안녕하세요.
    CMMI도 결국 소프트웨어를 잘 개발하기 위한 것이 목적이므로 근본 원리는 같습니다.

  3. 어쩌면 가장 중요한 차이점은,
    요구사항이 변경되고 나서 재계산되는 시간, 비용의 차이가 아닐까 생각이 됩니다.
    한국에서는 변경되도 마감일이나 비용이 변하지 않으니 말이죠..

  4. 구차니님 안녕하세요.
    요구사항이 변경되면 그에 따른 영향평가가 따라야 하고, 계약이 변경되어야 하는데, 우리나라에서는 스펙따로 계약 따로이기 때문에 요구사항이 2배로 늘어도 계약은 변하지 않는 문제가 있죠.

Track me, if you can

2009.05.04 10:16 by 전규현


잠시 후 Google blogger로 이동됩니다.



"요구사항 추적"이라는 말을 들어 보셨을 겁니다.
요구사항, 기능, 컴포넌트(클래스), 파일, 함수들의 연관관계를 추적하여 특정 요구사항에 관련된 컴포넌트나 소스코드들을 추적하고, 거꾸로 함수가 바뀔 때 이 변경에 영향을 받는 요구사항을 알아낼 수 있습니다.

왠지 근사해 보입니다.

실제로 요구사항을 추적하려고 노력하는 회사를 종종 보게 됩니다. 하지만 요구사항을 추적할 필요도 없는 작은 소프트웨어이거나 엉터리로 하고 있는 경우가 대부분입니다. 아니 100%입니다.
요구사항 추적이라는 것이 말만 근사해 보이지, 대부분의 역량으로는 거의 불가능합니다. 또 요구사항 추적툴 없이 엑셀파일에 끄적거려서는 할 수 없는 일입니다. 

요구사항 추적은 사람의 생명을 다루는 소프트웨어이거나 엄청난 비용과 테스트가 불가능한 우주선을 만들 때나 사용하면 됩니다. 이 경우는 감히 비용대비 효과를 논하기가 어려우니까요.

우리가 접하는 대부분의 소프트웨어는 요구사항 추적이 필요 없습니다. 실제로 요구사항 추적이 대단히 어려울 뿐만 아니라 요구사항 추적을 해서 얻는 것이 별로 없습니다. 요구사항 추적을 해보신 분들은 아시겠지만, 실제로 어설픈 문서라도 만들어 놓고 써본 적도 별로 없을 겁니다. 또, 요구사항이나 컴포넌트가 변경이 되어도 요구사항 추적 문서를 갱신하는 것은 대단히 어렵습니다. 오히려 방해 요소가 됩니다.

대부분의 소프트웨어는 요구사항 추적을 하지 않아도 별 문제없을 만큼 작거나 테스트로 충분히 커버가 됩니다.

단 하나, 고객이 요구사항 추적 문서를 꼭 원할 경우 설득을 해보고 안되면, 엉터리 문서라도 만들어 주는 것이 좋겠죠. 이때는 어차피 요구사항 추적 문서를 활용하기 위한 것이 아니니 최소한으로 간단하게 만드는 것이 좋을 겁니다.

이렇게 문서를 꼭 만들어야 하는 상황이 아니라면 근사해 보인다고 괜히 요구사항을 추적해볼 필요는 없습니다. 추적한다고 추적이 되는 것이 아니니까요. 그런 노력을 테스트를 제대로 하는데 들이는 것이 훨씬 더 효율적입니다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 
저작자 표시 비영리 변경 금지
신고

전규현 프로젝트/요구사항분석 문서, 변경, 엑셀, 요구사항, 추적

개발자들이 바글바글한 외딴섬에 떨어진다면

2009.04.22 10:01 by 전규현


잠시 후 Google blogger로 이동됩니다.



개발자들이 바글바글한 외딴섬에 떨어졌는데 서로 뒤죽박죽으로 개발을 하고 있고,이들을 3개월 안에 훈련시켜서 정예 개발자로 만들어 한다는 미션이 떨어졌다면 무엇을 하시겠습니까?

Language 기초를 다시 가르칠까요?
UML을 가르칠까요?
문서 작성법을 훈련 시킬까요?
개발방법론을 가르칠까요?
팀워크를 키워줄까요?
OOP를 가르칠까요?

어떻게 하시겠습니까?

나는 스펙을 작성하는 방법을 가르치고 3개월간 훈련을 시킬 겁니다. 
즉 Requirement engineering을 익히게 하겠다는 뜻입니다. 그만큼 스펙은 현재 소프트웨어 개발현장에서 가장 많은 실패의 원인이 되고 있고, 배우기도 가장 어려운 분야입니다. 나는 수많은 개발자들이 작성한 스펙문서(다양한 이름의 문서)를 봐 왔지만, Requirement engineering을 제대로 알고 잘 작성한 스펙문서는 별로 접해보지 못했습니다. 또한 그로 인해서 프로젝트나 제품에서는 수많은 문제들이 야기되고 있었습니다.

물론 스펙을 제대로 쓰기만 한다고 소프트웨어를 잘 개발할 수 있는 모든 준비가 된 것은 아닙니다. 스펙을 쓰는 것은 이제 소프트웨어 제대로 된 소프트웨어 개발에 한 걸음 내디딘 것 뿐입니다. 거꾸로 스펙도 쓰지 않고 소프트웨어를 어떻게 개발하냐고 반문할 수 있습니다. 즉, 무엇을 개발할지도 모르고 여럿이서 소프트웨어를 어떻게 개발하냐는 것입니다. 또 영업이나 고객은 정확하게 무슨 제품이 나올지도 모르고 기다리냐는 것입니다.

하지만, 이에 대한 반론을 얘기하는 사람도 꽤 됩니다. 기존에 제대로 된 스펙 없이도 훌륭한 제품을 많이 탄생했고, 성공한 제품도 꽤 된다고 얘기합니다.  물론 예외는 항상 있습니다. 저도 몇몇 그런 사례를 알고 있습니다.
정확하게 따지면, 그렇게 성공한 제품은 별로 많지는 않습니다. 그리고 초창기에 제품의 크기가 작거나 고객 수가 작을 때는 멋진 제품이었으나 매출이 늘고, 소프트웨어 규모가 커지면서 망가진 제품도 꽤 많습니다. 즉, 스펙의 부실로 혼동에 빠져서 실패한 제품이 꽤 됩니다.

제대로 된 스펙도 없는 제품이 성공할 확률은 잘 작성된 스펙을 토대로 개발하고 유지보수 되는 제품의 성공확률의 1/10도 안될 겁니다. 

소프트웨어 개발자라면 스펙이 왜 중요하고, 스펙을 잘 적기 위해서 배우고 많은 노력을 기울여야 한다는 것을 알아야겠습니다.

PS) 가끔 우리나라가 소프트웨어 업계에서는 섬처럼 느껴지곤 합니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다. 

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

전규현 프로젝트/요구사항분석 개발자, 분석, 스펙, 요구사항

  1. Blog Icon

    비밀댓글입니다

  2. 스펙의 정의와 범위는 막연하지 않습니다. 구체적이지요. ISO나 IEEE에서도 정의가 되어 있습니다. 하지만, 소프트웨어나 프로젝트의 성격에 따라서 중요한 부분이 다르고 적당한 표현방식이 다르기 때문에 Template이 Sample을 보는 것은 도움이 된다기보다는 생각의 폭을 좁히고 사고를 고정시키기 때문에 도움이 안된다고 생각합니다. 또한 NDA에도 어긋나고요. 시간이 되면 저를 한번 방문하셔서 토론할 기회를 가지면 좋을 것 같습니다. 그런 기회는 언제든지 환영입니다.

    오히려 설계가 제품마다 상당히 많이 달라서 더 정형화 시키기 어렵죠.

  3. 흠.. 그런 의미의 스펙을 말씀하신 거군요.
    저는 고객의 요구사항에 따라 만들어지는 제품에 대한 스펙을 말씀하시는 줄 알았습니다. 제가 생각했던 부분은 어찌보면 설계서를 생각했었는데 그 상위 레벨 혹은 단계를 말씀하신 것으로 이해가 됩니다. 그렇다면 말씀하신 대로 문제가 발생이 되겠네요. 좋은 말씀 감사합니다.

  4. 조금은 정형화된 예제의 문서가 있을까요? 물론 프로젝트, 솔루션 마다 틀리겠지만요. 어느정도 예제를 삼을만한 문서가 있으면 좋겠네요. 이런문서들도 각업체별로 틀리겠지만 이런문서들도 약간의 틀을 가진 문서가 있으면 좀 공통적으로 적용해서 모든 개발자들이 이해하고 독해할수 있었으면 좋겠다는 생각이 듭니다.

  5. 곰아리님 안녕하세요. 스펙문서는 소프트웨어 개발방법론마다 다 Template이 있으니 Google에서 찾아보는 것은 그리 어렵지 않습니다. 하지만, 복잡한 개발방법론은 스펙과 연관된 문서가 너무 많고 복잡한 것이 문제입니다. 또한 Template을 보더라도 그 내용을 어떻게 채우는지 아는 것은 더 어렵습니다. 경험도 많이 필요합니다. 그래도 Template를 보고 싶다면, ISO나 IEEE에서 정의한 SRS문서를 보면 참조가 됩니다. Template만 보고 작성된 SRS를 보면 잘못된 내용을 적는 경우가 많더군요.

  6. Blog Icon
    [1002]

    스펙은 누가 만드나요?

  7. 스펙을 쓰는 사람은 프로젝트마다 다를 수 있습니다. 스펙을 쓰려면, 고객의 요구사항을 잘 분석할 수 있어야 하고, 기술도 잘 알아야 합니다. 선임 개발자가 쓰기도 하고, 소프트웨어 분석가가 따로 있는 경우도 있고, 다양합니다.

  8. Blog Icon
    .

    개발자들이 바글바글한 섬이라면 스스로 필요한 소프트웨어를 만들어 낼 것이니 교육이 필요없을 듯 합니다. 개발자는 별로 없고 자신이 뭘 원하는지 모르는 고객이 바글바글한 섬이라면 고객들에게 일단 스스로 필요한 것이 "진짜" 뭔지를 알아내는 교육을 하면 의미는 있겠네요.

  9. 일리가 있는 얘기네요. 문제는 스펙을 적는 방법을 잘모르고 경험이 부족한 것이겠지요. 하지만, 개발자들이 자신들이 쓸 소프트웨어를 스스로 만든다면, 그 필요성이 줄어들겠네요. 여태 그렇게 잘 만들어서 써왔고요.

  10. 멋진 반전이네요.

  11. 잘보고 갑니다~일리가 있는얘기 입니다, 프로젝트 단위에서 규모가가 커지면 커질수록
    중요성이 강조 되는것 같아요.
    여담이지만서도...
    개발자에게 회의시간에 웃으며,고집안부리고 커뮤니케이션 하는 방법 가르키는건 어떨까요..

  12. sheon님 안녕하세요. 그것도 좋은 방법이네요. ^^ 왠지 개발자들에게는 공통된 인식이 있는듯 하네요.

  13. 저는 우선 팀웍을 가르칠것 같습니다. 주어진 환경이 아주 좋고 능력이 있는 개발자만 모여 있다 하더라도 협업이 되지 않아 실패하는 경우를 많이 보아 왔거든요. 개발 방법론은 모르더라도 같이 일하는 조직에서 협업이 잘 된다면 그 조직에 맞는 개발방식이 수립이 됩니다. 다들 좋다는 방법론 보다 그 조직에 최적화 되어있는 개발 방법이 가장 효과적인 방법론이라고 생각하거든요. 그런 경우는 뭐같은 요구사항이 나오더라도 찰떡같은 작품이 나오기도 합니다.

  14. C-Thinker님 안녕하세요. 팀웍을 중요하게 생각하는 분이 좀 되는 것 같네요.

  15. Blog Icon
    popopome

    님의 글을 보면서 제가 봤던 아래 블로그에 Scott이 남긴 커멘트가 생각났습니다.
    http://www.gaborcselle.com/blog/2009/04/what-specs-are-good-for.html

    저도 C-Thinker님 말대로 팀웤에 한표를 던지겠습니다.
    Communication is matter to be success or failed!.

  16. popopome님 안녕하세요.
    스펙은 항상 소프트웨어 개발에 있어서 가장 중요하지만 어렵고, 스펙작성은 개발자들의 역량 중에서 가장 우선시 되곤하나 또한 익히기 어렵다고 알려져 있습니다. Scott의 커멘트를 보니 그사람의 경험과 생각을 미뤄 짐작해볼 수 있습니다. 그래서 절대적인 비교는 되지 않죠. 그러기에는 우리나라 개발환경은 기초가 많이 부족하거든요.

  17. Blog Icon
    카페모카

    글 잘읽고 갑니다.

    핵심인재 한명 빼고, 전부 코더로 만드는건 어떨까요?
    중앙집권..불가능하겠죠? ^^

  18. 카페모카님 안녕하세요.
    그렇게 할 수만 있다면 좋은 생각이죠. 가장 적은 비용으로 가장 좋은 제품이 나올 수도 있겠죠. 그리고 그 코더들도 시간이 흐르면 설계도 할고, 더 비싼일을 할 수 있겠죠.

  19. 초보 개발자인 저에게 너무나 와닫는 내용들이 가득한 블로그네요
    RSS 등록하고 자주 오도록 하겠습니다 ^^

  20. 감사합니다.

그냥 쓸 수 있겠네요.

2009.01.19 10:22 by 전규현


잠시 후 Google blogger로 이동됩니다.



소프트웨어를 개발하면서 가장 어려운 일은 고객의 요구사항을 파악하는 일이라고 알려져입니다.
고전적인 Waterfall 방식부터 Agile까지 요구사항에 대해서 다양한 방법으로 상당히 신경을 쓰고 있습니다.

특히나 우리나라에서는 고객이 요구사항을 잘 가르쳐 주지 않습니다. 물론 자신의 요구사항을 완벽하게 자세히 알고 말해주는 고객은 전세계 어디서도 찾아보기 어려운 것이 사실입니다. 정도의 차이가 있을 뿐이죠. 그만큼 요구사항 파악은 어려운 일입니다.

우리나라에서 요구사항 파악 시 고객이 이렇게 얘기하는 경우가 흔합니다.

"자세한 요구사항은 나중에 알려줄 테니 일단 구현을 시작해주세요."

그래서 일단 제품을 다 만들어 놓고 고객에게 시연을 하면 그 때서야 고객이 "여기는 이렇게 고쳐달라", "이 기능을 넣어달라", "저 기능은 빼달라" 주문을 하기 시작하죠. 그렇게 제품을 고치고, 시연하고 하면서 고객의 요구사항을 만족시켜 가는 방법이 우리나라에서는 그리 드문 일이 아닙니다. 심지어는 요구사항 분석에 경험이 적은 개발자들은 그냥 그렇게 하는 방법에 익숙해져 있기도 합니다.

이 방법은 대단히 비효율적이고 비용이 많이 드는 방법입니다.
고객의 말 한마디에 몇 주간 노력해서 만든 기능이 빠질 수도 있습니다. 그리고 황당한 요구사항이 갑자기 추가될 수도 있고, 도저히 초기에 일정을 예측할 수도 없죠. 
개발자들이 고객의 요구사항을 너무 잘 알고 있고, 오히려 개발자가 고객을 리드하는 경우라면 일부 효과가 있을 수 있어도, 대부분의 경우 비싼 방법입니다.

이와 같이 자세한 스펙을 쓰기 전에 미리 만들어서 보여주는 방법을 "Prototyping"이라고 합니다. 그 중에서 고객의 요구사항을 파악하고 요구사항을 명확하게 하기 위한 방법은 "1회용 Prototyping"이라고 합니다. 왜 "1회용"이냐 하면 이는 요구사항을 파악하기 위한 것이기 때문에 Fix된 요구사항이 아닙니다. 제품에 기능으로 추가될지 빠질지 알 수 없고, 기능이 어떤 형태로 변하게 될 수 예측할 수 없으므로 제대로 만들면 비용과 시간이 많이 들기 때문에 아주 간단하게 만들어 보는 겁니다. UI에 대한 요구사항을 명확하게 하고 싶으면 UI만 동작하도록 해서 고객과 의논할 수 있고, 특정 기능에 대해서 자세히 알고 싶으면 그 기능이 어떻게 동작하는 지만 간단히 만들어 보는 겁니다.

이때는 제대로 제품을 만들듯이 에러처리를 꼼꼼히 하지도 않고, 회사의 코딩 규칙을 지키기 위해서 주석을 제대로 달지 않아도 되며 속도를 위해서 코드를 개선하지 않고, 메모리 최적화도 필요 없습니다. "1회용 Prototyping"은 요구사항을 얻고 명확하게 하기 위한 것이 목적이므로 최단시간에 최소한의 비용으로 만들면 됩니다. 

이렇게 만들어진 "1회용 Prototype"을 고객이나 영업부에 보여주면 "다 됐네?", "그냥 쓸 수 있겠군요."라고 하는 경우가 많습니다. 이는 마치 모델하우스를 보고 거기에 들어가서 살겠다고 하는 거와 비슷합니다. 

"1회용 Prototype"은 요구사항을 명확하게 하기 위한 활동이고, 이를 통해서 요구사항이 정해졌으면, "1회용 Prototype"은 버리고 다시 만드는 겁니다. 하지만 개발자들은 이를 다시 써먹으려고 하는 경우가 많습니다. "Prototype"에 너무 많은 노력을 들였거나, 시간이 촉발할 때 그냥 쓰고 싶을 수도 있는데, 이는 나중에 제품의 품질에 영향을 주기 때문에 "1회용 Prototype"은 참조는 할 수 있지만, Copy & Paste해서 쓰면 안 됩니다.

"1회용은 1회용일 뿐"

Prototype을 만드는 도중에 Project는 중단이 되는 것이 아니고, 요구사항 분석을 계속해 나가면서 1명의 개발자나 소수의 인원이 Prototype을 만들어 보는 겁니다. 물론 Prototype을 만드는 일도 계획되어야 하며, 적절한 Prototype 작성은 프로젝트의 시간과 비용을 절약해줍니다. 또한 나중에 생길 가능성이 있는 요구사항의 변화를 줄여줘서 Risk도 감소시켜주는 효과도 있습니다. 모든 기능을 다 Prototype을 만들어야 하는 것은 아니고 꼭 필요한 부분만 Prototype을 만들어서 확인할 수 있도록 적절히 판단하는 것도 경험이 필요합니다.

이미지출처 : Microsoft Office Online

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

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

  1. 잘 읽었습니다.

    "그냥 쓸 수 있겠네요" 반응을 피하기 위한 효과적인 방법 중에 고의로 결과물의 겉모습을 허접하게(low-fi) 만드는 트릭이 많이 쓰이는 것 같아요. Balsamiq Mockup이나 Denim이나 Swing 용 냅킨 UI 등 같은 프로토타이핑 지원 도구가 다 그런식이죠 ㅎㅎ

  2. 강규영님 안녕하세요.
    좋은 정보 감사합니다.

SRS(Software Requirements Specification)의 중요성

2008.11.19 10:32 by 전규현


잠시 후 Google blogger로 이동됩니다.



본 블로그에서 소프트웨어 개발, 소프트웨어 공학에 대한 여러 주제에 대해서 다루겠지만, 
특히 나는 요구사항 특히 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을 가지고 있어야 한다.


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

전규현 프로젝트/요구사항분석 Requirement, spec, SRS, 스펙, 요구사항

  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하나면 됩니다.

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

블로그 호스팅을 Google Blogger로 이전합니다.

최근에 블로그에 보안 문제가 발생하여 좀더 안정적으로 블로그를 운영하기 위해서 Google Blogger로 이전합니다. 기존에 http://allofsoftware.net 과 http://www.allofsoftware.net..

한국어(한글) 코드 이야기 (8)

유니코드에 대해서 좀더 알아보기 전에 한국어 코드(문자세트)와 인코딩에 대해서 좀더 알아보자. 1991년에 유니코드가 탄생한 후에 유니코드는 점점 많은 개발자들이 사용하기 시작해서 영역을 넓혀가고 있다. 물론 언젠가는 유니코..

유니코드 영토 전쟁의 승리자는? (7)

이번에는 유니코드의 코드 체계에 대해서 간단하게 알아보고자 한다. 소프트웨어 국제화를 필요로 하는 개발자라면 자주는 아니지만 유니코드 내부 코드 체계를 알아야 할 때가 있다. 다양한 플랫폼에서 개발을 할 때 폰트 등과 관련하..

유니코드는 어떻게 탄생했을까? (6)

소프트웨어 국제화를 이해하기 위해서는 유니코드에 대해서 필수적으로 잘 알아야 한다. 유니코드란 말을 들어보지 않은 개발자는 없지만 관련 용어가 매우 많아서 종종 헷갈린다. 게다가 유니코드가 탄생한지 20년도 더 넘었지만 아직..

직원을 잠재적인 도둑 취급하는 회사

필자는 몇 년 전 A그룹에 강연을 하러 갔다가 곤란한 일을 겪은 적이 있다. 한국 대부분의 대기업이 그렇듯이 보안이 매우 엄격한 회사였다. 나는 직원들의 안내대로 메모리, 외장하드를 모두 빼놓고 회사로 들어갔다. 하지만 강연..

외국에서 팔리는 소프트웨어의 아키텍처 디자인 원칙 (5)

김과장은 그 동안 한국어만 지원하는 소프트웨어 A를 개발해 왔는데 최근에 사장님이 A의 일본어 버전을 만들라고 했다. 그리고 개발 기간도 한달 밖에 주어지지 않았다. 그래서 기존 소스코드를 복사해서 한국어가 들어 있는 모든 ..

소프트웨어 개발자 성장에 꼭 필요한 리뷰

우리나라 개발자들은 프로그래밍은 잘 하는데 대접을 못 받는다는 얘기가 있다. 또, 머리는 좋은데 환경이 나쁘다는 얘기도 있다. 젊은 개발자들은 외국의 개발자들에 전혀 뒤지지 않는데 나이를 먹을수록 실력이 떨어진다는 얘기도 있..

외국에 출시한 소프트웨어가 날짜 때문에 낭패 본 사연 (4)

10년차 개발자인 김과장(가상의 인물)은 최근에 소프트웨어를 영어를 지원하도록 만들었다. 어플리케이션에서 표시되는 모든 메시지(메뉴, 버튼, 다이얼로그 등)를 영어로 번역했다. 그렇게 해서 영어버전을 출시했는데 얼마 안 가서..

독일어 버전 소프트웨어란 말이 잘못된 이유 (3)

본 시리즈는 차례대로 읽으면 소프트웨어 국제화가 전체적으로 이해가 되어서 소프트웨어 개발자에게 도움이 되는 방향으로 진행하려고 하고 있다. 개발자마다 지식과 경험이 천차만별이라서 초급 개발자를 기준으로 작성하고 있다. 경영자..

소프트웨어를 외국에 출시 하면서 흔히 빠지는 함정 (2)

우리나라 소프트웨어 중에서 외국에서 크게 성공했다고 하는 소프트웨어가 있는가? 온라인 게임을 제외하고는 거의 없다. 사실 게임은 국제화, 지역화를 잘 못하더라도 큰 흉이 안 된다. 하지만 그 외의 많은 소프트웨어들은 제품이든..

티스토리 툴바