태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

스마트폰 앱스토어가 진짜 대박이 아닌 이유

2010/02/09 13:58
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


요즘 스마트폰이 IT 이슈의 정점에 있어서 스마트폰 관련 글을 계속 올리게 됩니다.
개발자의 한사람으로서 스마트폰의 급속한 확대는 좋은 징조임이 분명합니다. 하지만 종종 스마트폰 어플리케이션을 만들어서 앱스토어에 올리면 쉽게 대박을 맞을 수 있을 것 같은 기사들이 눈에 띕니다.


물론 거품을 경고하는 기사들이 많은 것은 사실이지만 좋은 것만 보인다고 대박 기사가 더 눈에 들어오는 것은 사실입니다. 개발자들은 "실패담은 내 이야기는 아닐거야"라고 자신에게는 관대한 판단을 내기는 것이 일반적입니다.

이런 종류의 기사들을 읽어보면 전문가들이 말을 인용하는 칼럼형식의 기사는 좀 나은데 기자들이 직접 작성하는 누구나 혼자서 쉽게 소프트웨어를 개발해서 성공할 수 있다는 식의 기사가 많습니다. 그래서 현 상황을 좀 냉정하게 바라보고자 합니다.

긍정적인 측면

확실히 앱스토어가 개발자들에게는 기회의 땅입니다. 어플리케이션을 만들기만 하면 바로 전세계 소비자와 바로 만날 수 있는 기회를 제공했습니다. 마케팅을 얼마나 잘하느냐는 다른 이슈이지만, 어마어마한 마케팅 비용을 들이지 않고도 일단 소비자와 접할 수 있다는 것은 엄청난 기회입니다. 정말 좋은 소프트웨어가 마케팅 비용이 없어서 사라지는 것을 막을 수 있습니다.

또한 스마트폰 앱 시장은 계속 커지고 있고 잠재 고객은 점점 늘어가고 있습니다. 
That's it.

부정적인 측명

기회는 균등합니다. 나에게 기회인 것은 전세계 모든 개발자들에게 동일한 기회입니다. 초창기를 제외하고는 소비자와 쉽게 자신의 어플리케이션을 보여줄 수 있는 것이 그리 매력적인 조건이 아닐 겁니다. 정말 좋은 소프트웨어가 아니면 이 장점이 큰 장점이 아닙니다. 또한 스마트폰 앱 시장이 점점 커지면서 메이저 소프트웨어 업체들이 뛰어들 준비를 하고 있습니다. 기존의 시장과 별반 다를바 없는 치열한 전투장이 될 겁니다.

시장은 그렇다 치고, 개발자 입장에서 바라보도록 하죠.

스마트폰이라고 해서 소프트웨어를 개발하기 더 쉬워진 것은 아닙니다. 잘 만들어진 Framework를 보면 개발이 더 쉬운 것처럼 착시현상을 일으키기도 하지만, 이것이 소프트웨어 개발 전체 프로세스에 미치는 영향은 5%도 되지 않습니다. OOP 컨셉이 없는 개발자들은 오히려 뒤죽박죽을 만들어 버리기 일쑤입니다. SDK를 이용한 코딩보다도 스펙을 제대로 정하고 설계를 하고 테스트를 하는게 비중이 더 높습니다. 이는 기존의 다른 소프트웨어를 개발하는 것과 별단 다르지 않습니다. 즉, 기존에 소프트웨어를 잘 개발하던 개발자나 회사가 이또한 잘 할겁니다.

스마트폰 앱이라고 해서 한번 만들고 끝나는 것이 아닙니다. 일반적으로 소프트웨어는 유지보수 비용이 개발비용의 2~5배 정도 들어간다고 합니다. 그래서 한번 만들어놓은 앱을 꾸준히 유지보수를 해야 하는데, 개인이 이를 감당하기에는 어려움이 있을 수 밖에 없습니다. 진짜 전업으로 매달려야 합니다. 또한 버그 관리, 소스관리, 스펙 관리가 그렇게 쉽지 않습니다. 기존의 소프트웨어 회사들도 크나 작으나 이들을 잘 해내지 못하는 것이 현실입니다. 그렇다고 혼자 개발을 한다고 이 이슈가 사라지지 않습니다. 진짜 혼자 다 해야 합니다.

또, 어쩌다 꽤 인기있는 앱을 만들어서 중박정도를 했다고 해도 꾸준히 매출을 유지하기 위해서 업그레이드와 새로운 제품을 계속 만들어내야 합니다. 앱 개발이 전업이 되었다는 얘기는 꾸준히 수익을 창출해야 한다는 얘기입니다. 회사라면 크나 작으나 나름 각 분야의 전문가들이 힘을 합쳐서 일하기 때문에 진짜 자신이 잘하는 분야에 집중할 수 있어서 꾸준히 발전해 나가는 것이 혼자 북치고 장구치고 하는 것보다는 유리합니다. 자칫하면 수주대토(守株待兎)가 될 수 있습니다.

소프트웨어 개발이라는 것의 대부분은 팀으로 일을 했을 때 더 잘 할 수 있는 것들인데, 혼자서 한다는 것은 한계에 부딪히게 됩니다.  아이디어의 한계, 기술의 한계가 그겁니다. 물론 혼자 일하는 것을 좋아하는 개발자들중에서는 팀웍을 이뤄서 제대로 일하는 방법을 모르기 때문인 경우도 있습니다. 어떠한 경우라도 혼자서 1인회사를 해나가는 것은 쉽지 않은 결정입니다.

이미 소프트웨어 개발에 상당한 공력을 가지고 있는 개발자 몇명을 제외하고는 아무리 좋은 아이디어로 좋은 앱을 개발했다고 하더라도 혼자 개발하는 것은 스스로의 성장에도 지장을 줄 수 있습니다. 물론 이런 시도는 도전의식과 비즈니스 경험을 쌓을 수 있어도 소프트웨어 개발자로서의 경험은 상대적으로 놓치게 됩니다. 자칫 평생 혼자 개발해야 편한 개발자가 될 수도 있습니다. 실패에서 얻는 것도 있지만 잃는 것도 크다는 것을 명심해야 합니다.

소프트웨어 개발자로서 사회에 첫발을 디뎠다면 아무리 대학때 소프트웨어를 좀 개발해 봤어도 조직에서 팀을 이뤄서 개발하는 방법과 그 문화를 어느정도 익히는 것이 필요합니다. 물론 좋은 환경의 소프트웨어 회사라야 하겠죠. 그리고 나서도 확신이 선다면 시도해볼 수 있는 도전이라고 생각은 합니다. 하지만 결코 기존의 소프트웨어 환경에 비하여 성공확률이 더 높아졌다고 생각해서는 안됩니다. 이또한 노력하는 사람에게 더 많은 기회를 제공할 겁니다. 자신의 성공확률에서 바뀐 것은 아무것도 없습니다.

이 상황을 너무 부풀려서도 너무 축소해서도 안됩니다. 확실히 기회가 생긴 것은 맞습니다. 하지만 냉철한 가슴으로 생각하고 도전해야 합니다. 또, 이를 이용해서 부추기는 선정적인 기사는 좀 줄어야 하겠습니다.

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

Ray.전규현 소프트웨어이야기 개발자, 대박, 문화, 버그관리, 소스관리, 스마트폰, 스펙, , 앱스토어, 유지보수, 중박

Trackback Address: http://allofsoftware.net/trackback/171 관련글 쓰기
  1. 2010/02/10 09:51
    자바지기의 생각 Tracked from javajigi's me2DAY
  1. Blog Icon
    지니랜드

    수구대토 -> 수주대토 로 수정해주세요

  2. 감사합니다. 블로그 글은 종종 오타가 생기더군요. 좀더 꼼꼼히 적어야 하는데요...

  3. Blog Icon
    ㅎㅎㅎ

    제 생각엔 스마트폰 초창기(아이폰으로 인해 시장이 커지는)라서
    거품에 있고 사람들이 스마트폰에 대한 환상을 가지고 있는 것같습니다.
    손바닥만한 화면으로는 분명 한계가 있는데요...
    결국 단지 개인의 필요에 따라 몇몇 특정한 기능으로만 사용하게 될거고
    꼭 이동시 사용해야하는 사람만 사용할텐데
    꼭 만능기기인것처럼 여겨지는 분위기네요.
    PMP있지만 돌아다니며 영화보는 사람 별로 없고요
    네비있지만 네비들고 다니며 걸어가는 사람 없습니다.
    전화기로 엠피스리 들을수있지만
    따로 엠피스리를 가지고 다니는 사람들이 대부분이죠.
    만능기기는 불편하고 이동기기도 또한 불편하죠.
    이동하며 사무를 볼 수있다지만
    이동하면서 까지 사무보고 싶은 사람이 몇이나 있겠어요.
    오히려 전화기능과 카메라기능을 첨가하고
    터치기능을 넣은 OS를 가진 스펙이 강화된
    타블렛식으로 LCD를 뒤집을수있는
    10인치내의 화면을 가진 노트북이 나오면
    스마트폰 시장은 죽을 것같네요.ㅣ

  4. 제 생각은 좀 다릅니다.

    스마트폰의 파급효과는 생각보다 클 것 같습니다. 지금은 거품이라고 얘기하지만 거품이 꺼지면 실체가 보일겁니다.
    지금은 인터넷 없는 세상 생각하기 힘들죠? 스마트폰은 인터넷을 들고다니게 되는 세상입니다. 한단계 업그레이드 되는 겁니다. 기존에도 이동중에 인터넷을 사용할 수 있었지만, 편리함이 다르죠.
    스마트폰이 화면이 작기는 하지만 새로운 UX가 불편함을 감소시킬 것이고, 자연스럽게 생활속으로 파고들 것으로 예상하고 있습니다.
    인터넷(웹)이 나오고나서 일상 생활속을 들어오는데까지는 6,7년이 걸렸습니다. 스마트폰이 나온지는 꽤 됐지만, 전 아이폰과 안드로이드 폰이 나오고 완전히 생활속으로 들어오는데, 3,4년이면 충분하리라고 봅니다. 그사이에 사람들을 편리하게 해주는 앱들이 쏟아져 나오겠죠.

    누가 옳든 간에 이쪽 밥 먹고 사는 사람들은 남들보다 빨리 알아채야 겠죠. 버스 떠난 다음에 손흔들면 안되니까요... 일반 사용자라면 자신이 좋은 것 그냥 선택하면 될거구요. ^^

  5. 저도 '현혹'의 성격이 짙은 글을 보면 비판적인 시각으로 바라보려 하고 있습니다.
    이슈에 대해 여과 하지 않고 우르르 몰렸다, 우르르 파했다~ 하는 것만 봐도 매우 급변하는 IT정세와,불안정한 시국을 그대로 나타내주는 것이니까요. 이런 정세에 본질을 파악하기란 매우 어렵겠지만.. 지금 우리에게 필요한 것은 비판적인 시각이 아닐까 합니다. 예를들어.. 전규현님이 말씀하신 것처럼 요즘 모바일 쪽의 구인란을 보면 모바일 개발 경험이 有인 사람에 국한되어 있더군요. 참 안타까운 일입니다. 매우 좁게 시장이 형성되는 것도 문제이고, 장기적인 안목이 아닌 '언 발에 오줌누기 식'의 인력들만 채용하고 있으니까요. 본질을 따져서 설계와 구조에 중점을 둔다면 당연히 OO나 OOP관련 경험,또는 공학방법론을 사용해봤던 인재 위주로 형성이 되어야 하는 것이 맞다고 봅니다. 그 밑에 코딩할 인재들도 필요한 것이구요.
    이 단면에서 돈만 되면 한다는 식의 불안정한 정세를 다시 한번 엿볼 수 있었습니다.
    (요즘 스마트폰 애플을 취미삼아 해 보고 있습니다.--단지 취미입니다. 주업은 아니죠. 전에 GUI방식의 소프트웨어를 개발한 경험이 있다면, 예전 방식과 매우 닮아 있다는 것을 느끼고 맙니다.)

    팀과 인력조화에 대해서도 한가지 문제점을 제시하자면.. 서로 잘 아는 팀을 만들 수 없는 문화가 한 몫하는 것 같습니다. 회사마다 계약 체제가 다르고 관리제도가 다르니 문화가 다를 수밖에 없고, 하청구조가 이미 뿌리박힌 데다가 같은 회사사람이 누군지도 모른 체 프로젝트가 진행되고 있는 곳도 상당히 많습니다. 어떤 회사는 갑 측에 같은 비용으로 50만 제공해주어도 되지만, 어떤 회사는 같은 비용에 200을 요구하는 곳이 있더군요.

    얼마 전에 선임연구원으로 혼자 들어갔었던 프로젝트가 바로 이것과 비슷했습니다. 돈을 더 많이 주니 더 많은 아웃풋을 내야 한다는 묵시적, 강제적 계약조건이더군요. 설계,구조.. 전혀 신경을 안 쓰고 제품의 품질과는 전혀 상관없이 높은 비용(그렇게 높지도 않지만)을 주니 설계 제외하고 더 많은 아웃풋을 내라..라는 SI특유의 병폐를 또 다시 한번 경험했습니다.(아웃풋에 계약조건으로 차등을 주니 사실상 팀웍이란 잠점을 발휘할 수도 없을뿐더러 활용할 수도 없는 문화가 되어버립니다.)

    사실 노하우있는 기술자를 쓰는 이유는
    소프트웨어가 필요한 곳에 경험과 노하우,설계,구조론,방법론을 오히려 배우기 위한 것으로 생각합니다. 그것이 경험 있는 기술자들을 쓰는 이유가 아닐까 합니다.
    5년 차가 10장찍어내고 10년 차가 같은 시간에 20장을 찍어내라는 식이니..원..(이런 곳 정말 많습니다.) 상식적으로 매우 미달인것이죠.

    전 지금 병원에 입원해 있는데도.. 규현님의 글은 읽어 봅니다.:)

  6. moova님 안녕하세요.

    병원에 입원해계시고 수술이 필요하신 것 같은데 쾌차하시기 바랍니다.
    우리나라의 대부분의 회사에서는 고급개발자를 키울지도 모르고 구분할줄도 모르고 고급개발자가 무슨 일을 하는지도 모릅니다. 그만큼 낙후되어 있습니다.

    소프트웨어 개발에 있어서 무슨일이 싼일이고 어떤게 비싼 일인지 구분도 못합니다. 그래서 비용과 시간이 더 많이 들며서도 날밤까면서 일해도 좋은 제품이 안나오죠.

    또 무엇이 필요한 문서인지 어떤 것은 형식적이고 필요가 없는 것인지도 구분하지 못합니다. 이는 프로젝트마다 달라서 선임급(고급)개발자가 이런 것들을 프로젝트 성격에 맞게 합리적으로 결정해야 하는데 그렇게 하지도 못하게 하는 것이 현실입니다.

    moova님도 고생이 많겠습니다. moova님 글들을 보면 어떤 생각과 경험을 가지고 있는지 알 수 있거든요. 저는 언제나 미래에 기회가 되어서 제 블로그를 찾아주시는 분들 중에서 뛰어난 분들과 일해보는 것을 꿈꿔 보곤 합니다.

    감사합니다. 다시 한번 쾌차를 기원합니다.

  7. 스마트 폰이 상당부분 생활을 바꾸긴 하겠지만, 그렇다고 해서 삶을 스마트하게 바꾸어 줄꺼라고 생각하지는 않습니다. 상당 부분 거품도 있고 허세도 있기 때문이죠.

    문득 지하철에서 보이는 아이폰 유저들을 보면
    "게임", "동영상" 정도 밖에 안보이더군요.
    일부 헤비유저일 것으로 예측되는 증권이나 금융 개발쪽 분들이 눈에 띄지 않는 걸지는 모르겠지만
    결국에는 PMP + PSP + NDS 를 통합한 그 이상도 그 이하도 아닌 딱 게임기+휴대폰 이라는 느낌이 강합니다.
    단지 인터넷이 될뿐이고, 외부에서도 편하게 할수 있을 가능성이 있기 때문에 사용자들이 끌리는거겠죠

    솔찍히 말해서 저도 쓸모는 없지만 가지고는 싶습니다.
    '필요'하지도 않고 '용도'도 정해지지 않았지만 가지고는 싶습니다.
    아마도 이러한 경우에 단지 새로 나온 스마트 폰이고 다들 아이폰 아이폰 하니까 얼리어탑터 기분으로
    대세(?)를 따라 나도 스마트하게 스마트폰! 하는게 아닐까 생각이 됩니다.

    결론만 말하자면, 지금보다 상당부분 거품이 심하게 끼어있고, 비록 어느정도 삶을 변화 시킬지라도 생각보다 큰 변화를 일으키지는 못할것이라는 겁니다. 원더키디가 나올때까지 10년도 채 안남았고, SF영화에서 그리던 2000년은 차들 대신에 무빙워크 에 서서 다니는 그런 환상적인 세상이었는데 실질적으로 변한 삶의 패턴은 극히 드물듯이 말이죠.

  8. 구차니님 안녕하세요.

    현재 거품이 꺼지고 좀 차분해져야 실체가 나올 것 같습니다.
    "알고 봤더니 별거 아니더라"라는 말도 많이 나오겠죠. 그러면서 서서히 생활속으로 들어와서 조금씩 생활패턴을 바꾸겠죠. 이게 뭐 엄청난 변화냐? 라고 할 수도 있어도 지금도 인터넷(특히 웹) 없이도 사는 사람이 엄청나게 많지만 많은 사람은 인터넷 없는 세상은 상상하기 힘듭니다.
    처음에 웹이 나왔을 때 되는게 없었습니다. 이걸로 뭐를 할 수 있을지 제대로 상상한 사람도 별로 없었습니다. 그때는 기껏해야 회사 소개하는 홈페이지와 인터넷 신문정도 였습니다. (여담이지만 95년에 제가 세계 최초 상용 Webmail 시스템을 만든 사람이지만 이를 기억하는 사람은 아무도 없습니다. 세계최초 별거 아닙니다. - -; 저는 별로 크게 성공하지도 못했구요. 제가 만든 Webmail을 컨셉과 원형을 따라서 만든 D사는 크게 성공했죠)

    94년에 웹이 처음 나왔을 때는 이것이 생활을 바꿀 것이라고 생각한 사람은 극소수였습니다. 그런데 스마트폰은 얼마 되지도 않았는데 난리네요. 그래서 거품이 꺼져야 한다는 얘기입니다. 반대급부로 이쪽 개발에 종사하는 개발자들은 거품이 더 좋은 기회가 되기도 합니다만...

    스마트폰이 바꾸는 생활의 변화를 가져오는 것의 주역은 하드웨어가 아닌 소프트웨어라고 생각합니다. 얼마나 좋은 소프트웨어가 더 많이 나오냐에 따라서 결론이 달라질 것 같습니다. 이는 소프트웨어 개발자들이 몫이겠죠. 구차니님 같은 분들이 바꾸는 것이라고 생각합니다.

    설령 기대에 못미칠 수는 있어도 소프트웨어 개발자라면 과소평가보다는 창조자의 마인드로 동참하는 것이 필요하다고 생가가합니다.

  9. 스마트폰에 대해서 갖는 부정적인 시각은, 사용자가 아닌 개발자의 시선에서 바라봐서가 아닌가 싶습니다.
    제가 느끼는 스마트폰은 저에게 있어서는 혁명이었습니다.
    96년부터 PC통신 하이텔을 통해서 커뮤니티에 입문했는데요, 그 이후로 제 삶속에는 항상 인터넷이 있었습니다.
    어딜가도 컴퓨터가 있으면, PC통신에 접속하고, 그 이후에는 인터넷에 접속해서 현재 저의 동호회, 카페, 홈페이지, 블로그 등을 보며 실시간으로 글을 게시하고, 댓글놀이를 즐겨왔는데요, 스마트폰은 이런 소셜 네트워크에 한층 가깝게 다가갈 수 있도록 해주는 중요한 역할을 해주고 있거든요.
    인터넷이 연결되어 있지 않았을 때의 불안감이나 답답함을 한번에 해결해주고 있습니다.

    집전화가 있고, 공중전화가 있지만, 누구나 휴대폰을 가지고 다니듯이, 요즘 우리 생활에 있어서 인터넷이 그렇게 변하고 있습니다. 스마트폰은 걸어다니는 인터넷 기능때문에 중요한 것이죠.
    다만 인터넷 기능이 필요하지 않으신 분들께서, 스마트폰을 필요해서 자발적으로가 아닌 뜬다고 하니까 공부하시려는 분들께서 부정적인 시각으로 말씀해주시는 것 같은데요, 크게... 변화를 줄 것 같아요.

    자다가 일어나서 갑자기 말이 많았습니다. 또 놀러올겠습니다. ^^

SRS에 대한 인식의 변화

2009/11/13 23:46
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

 
그 동안 본 블로그를 통해서 소프트웨어 개발에서 SRS(Software Requirements Specification)가 얼마나 중요한 역할을 하는지에 대해서 수 차례 역설한 적이 있습니다.

2009/08/03 - [프로젝트/요구사항분석] - 이건 기능이 아닌데
2009/07/30 - [프로젝트/요구사항분석] - 고객이 요구사항을 너무 자주 바꿔요.
2009/05/04 - [프로젝트/요구사항분석] - Track me, if you can
2009/04/22 - [프로젝트/요구사항분석] - 개발자들이 바글바글한 외딴섬에 떨어진다면
2009/02/12 - [프로젝트/요구사항분석] - 요구사항 분석의 출발점
2009/02/04 - [개발프로세스] - 소프트웨어 개발 단계에서 가장 중요하다고 생각하는 것은?
2009/01/29 - [소프트웨어이야기] - Head First Software Development 리뷰
2009/01/21 - [프로젝트/요구사항분석] - UI Mock-up
2009/01/20 - [프로젝트/요구사항분석] - 샘플만 보여주세요.
2009/01/19 - [프로젝트/요구사항분석] - 그냥 쓸 수 있겠네요.
2008/11/19 - [프로젝트/요구사항분석] - SRS(Software Requirements Specification)의 중요성
2008/11/03 - [소프트웨어이야기] - 프로젝트 산출물을 프로젝트 종료 후에 만들고 있나요?

지금까지는 SRS라는 용어조차 한번도 들어본 적이 없는 소프트웨어 개발자나 관련자들이 많았었습니다. 하지만 이제는 조금씩 SRS라는 용어에 대해서 알기 시작하는 것 같습니다. 또 소프트웨어 개발에서 있어서 요구분석이 왜 중요한지에 대해서 조금씩 인식해가는 것 같습니다.

그 예로 최근에는 정부에서도 소프트웨어 기업들의 경쟁력 강화, 특히 해외 시장 진출 시 경쟁력 확보를 위해서SRS 작성을 중요한 요소로 보고 정부 지원 과제에 포함을 하고 있습니다.
이러한 과제에 평가위원으로 참석을 해보니 아직은 많은 소프트웨어 회사들이 분석능력을 제대로 갖추고 있고, SRS를 잘 쓸 수 있는 역량을 갖췄다고 보기는 어렵습니다. 하지만 제대로 된 소프트웨어를 짧은 시간에 개발하기 위해서는 분석을 제대로 하여 SRS를 작성하고 SDP를 만들어야 한다는 것을 인지한 것만으로도 큰 변화라고 볼 수 있습니다. 필요성을 인식하는 것이야 말로 변화가 가능하게 하는 원동력입니다.

다만, 문제는 분석을 잘해야 한다는 것, 즉 SRS를 잘 써야 한다는 것을 인식하고도 SRS를 잘 적는 방법을 배울 곳이 없다는 것입니다. Software 선진국에서는 수십년 간 개발자들이 SRS를 써 왔기 때문에 서로 Template는 조금씩 달라도 개발자로서 일을 하는 동안에 계속 접해 왔고, 써왔기 때문에 따로 배우고 말 것도 없이 SRS를 쓸 줄 알게 되었습니다. 물론 모든 개발자가 SRS를 다 제대로 쓸 줄 아는 것도 아니고 그럴 필요도 없지만, 소프트웨어 프로젝트를 시작할 때 누군가가 SRS를 작성하고 관련자들과 리뷰를 하는데 전혀 문제가 없습니다. 

하지만 이제 시작인 우리나라는 배울 곳도 없고, 스스로 연구하고 공부해서 작성하기에는 요구분석이라는 분야 자체가 너무 어렵습니다. 그 동안 여러 회사에서 스스로 작성했다고 하는 SRS를 분석해보면 합격점을 줄 수 있는 것은 거의 전무했다고 해도 과언이 아닙니다. 그렇다고 미국 회사에 가서 몇 년 배우고 오기도 어려운 실정입니다. 또, 국내에서는 학교나 학원에서 배울 수 있는 환경도 되지 않습니다. 그렇게 배운다고 해도 몇몇 기법만 배우고 핵심은 파악하지도 못하게 됩니다. 그 이유가 대부분의 교수나 강사가 소프트웨어 프로젝트에서 실제로 SRS를 써본적이 거의 없이 이론적으로 배운 정도이기 때문입니다. 실제 프로젝트에서 SRS를 제대로 써본 경험을 많이 가지고 있는 경험자와 같이 SRS를 써보면서 꾸준히 배워 나가는 것이 가장 적절한 방법입니다.

물론 몇몇 개발 방법론에서는 SRS를 작성하지 않습니다. 하지만 이러한 방법론에서도 스펙이 필요 없다고 하는 것은 아닙니다. 다만 스펙을 바라보는 관점과 적는 방법이 다를 뿐입니다. 따라서 스펙의 개념을 정확하게 알고 SRS를 잘 작성할 줄 아는 개발자들이라면 스펙의 형태가 테스트케이스가 되든 어떤 다른 형태가 되든 문제는 없습니다. 즉, 소프트웨어 분석역량이 문제입니다. 

분석역량의 부족은 부실한 스펙문서를 만들게 되고 이는 설계, 구현 기간에 많은 혼란과 재작업을 초래하고 출시 후에도 유지보수 비용을 크게 증가시킵니다. 그 동안 우물 안 개구리처럼 내수시장에서 소수의 개발자를 데리고 고객이 원하는 대로 뚝딱 만들어서 장사를 했는데, 소프트웨어 볼륨이 커지고 해외 시장에 진출을 하려니까 딱 벽에 부딪히는 겁니다. 이 과정에서 무리하게 해외 진출을 추진하다가 유명을 달리한 회사들이 상당히 많습니다. 그렇다고 세계 시장의 1%밖에 안되는 국내 SW시장에서만 놀기에는 국내 시장은 너무나 작습니다. 왠만큼 성장한 회사라면 해외 시장 진출의 유혹을 떨처버리기 어렵습니다.  

물론 SRS, 스펙, 분석능력이 이 모든 것을 해결해주지는 않습니다. 하지만, 가장 중요하고 핵심적인 요소라 확신합니다. 이는 저만의 주장이 아니고 제가 존경하는 수많은 실전 소프트웨어 전문가들의 주장이기도 합니다. 그러한 맥락으로 앞으로 SRS, 스펙, 분석역량 향상에 대한 글을 종종 올려보려고 합니다. 블로그를 통한 지식전달이 얼마나 효과가 있겠는지 의문은 들지만, 필요성에 대한 인식만 생기더라도 글을 올린 보람을 있을 것으로 생각됩니다.

이와 관련된 궁금증, 의견, 경험, 고민거리, 정보, 아이디어 등 어떤 것이라도 같이 교환하고 싶습니다. 댓글이나 방명록, 메일로 얼마든지 보내주세요. 제가 해결해드릴 수 있는 것은 해결해드리죠.
그리고 교육을 받고 싶으신 개발자나 회사라면 연락 주시기 바랍니다. 제가 여건이 되는 한도내에서는 많은 소프트웨어 개발자들에게 전달하고 싶습니다.

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

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

Ray.전규현 프로젝트/요구사항분석 SRS, 분석, 스펙, 요구분석, 정부과제

Trackback Address: http://allofsoftware.net/trackback/157 관련글 쓰기
  1. 최근 프로젝트 진행하면서, 요건정의서 / 주요화면 정의서만 가지고 프로젝트를 수행했었습니다. 유사 경험이 있으니 잘 되겠지라구 약간은 자만하면서요..

    하지만 관련 분야 업무를 처음 해보는 사람들과의 협업/구현하면서 문제가 하나둘씩 생겨나기 시작하고, 주기능 보다는 당연히 될거라고 생각했던 부기능에서의 생각의 차가 너무 컸고, 결국 Rework을 하게 되더군요.
    확실히 일은 정석대로 해야한다고 SRS 로 시작했으면 좋았겠다는 후회가 나중에 들더라구요...

    좀 부끄러운 경험담이지만.. SRS 중요성/초기 설계의 중요성을 깨닿게 했던 중요한 교훈이었던 것 같습니다.
    전규현 수석님.. 블로그글 잘 공감하고 있습니다. 감사합니다.

  2. Peter님 안녕하세요.
    실제로 제가 다른 개발자들이 작성한 여러 SRS를 검토해보면 비기능요구사항이 주로 부실하게 작성되어 있더군요. 하지만 비기능요구사항이 SRS에서 더 중요하다는 것을 잘 인식하지 못합니다. 기능이 하나 잘못적힌 것은 일반적으로 해당 모듈만 수정하면 되지만, 비기능요구사항 하나 누락되거나 잘못 적힌 것은 시스템 전체를 다 뜯어 고쳐야할 정도로 큰 사건일 수 있습니다. 앞으로 블로그에서 이와 관련된 다양한 내용들을 다룰 계획입니다.

  3. 개발자들도 이러한 개발의 효율을 위한 절차를 받아 들여야 하지만
    그에 못지 않게 개발을 위탁하는 사람도 개발에 대한 이해가 널리 퍼졌으면 좋겠다는 생각이 듭니다.

    이러한 프로세스 없이, 중간에 계속 수정을 요구하고 이에 따른 추가기간을 정산하지 않으면
    개발자 역시 무상으로 계속 지치게 되니 말이죠. 물론 인간이라 처음부터 완벽하게 SRS를 만들어내서
    한번에 만들수는 없기에 어느정도 변경사항이 생기겠지만, 디자인이 마음에 안들어요 이렇게 바꾸어 주세요
    라고 하는건 개발 위탁하는 사람역시 이러한 개발의 과정중 하나로 넣어 교육을 시켜야 하지 않을까?
    라는 생각마저 들게 합니다.

  4. 구차니님 안녕하세요.
    말씀 하신 것처럼 처음부터 스펙을 완벽하게 다 정하고 프로젝트 끝날 때 까지 절대 바꾸지 않을 수는 없습니다. 그래서 어차피 바뀌니 대충 시작하는 것은 더 문제가 크죠.
    개발자나 고객이나 모두 스펙에 대한 이식의 변화가 필요하겠죠. 또한 교육, 훈련과 경험 모두가 필요하고 1,2년에 해결될 문제는 아니라고 봅니다.

  5. Blog Icon
    김경록

    좋은 글 잘 읽고 갑니다.
    ^^

  6. 김경록님 오랫만입니다.
    댓글 남겨주셔서 감사합니다. 항상 건강하세요.

우리는 개발자가 테스트도 다 해요.

2009/08/09 21:10
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

별도의 테스트팀이 없는 회사는 정말 많습니다.

별도의 테스트팀이 없이 개발자가 또는 팀장이 테스트에 참여하는 이유는 개발자가 아니면 제품의 기능을 속속들이 알 수 없어서 테스트를 하기가 어렵기 때문입니다. 이렇게 되는 이유는 제품의 스펙이 따로 문서화되어 있지 않기 때문에 개발자가 아니면 스펙을 알지 못하기 때문입니다.

하지만, 개발자는 인건비도 비쌀 뿐더러 테스트를 잘 하지도 못합니다. 그리고 아무리 테스트 능력이 있는 개발자라고 할지라도 자신이 작성한 기능을 테스트 하는 것은 좋은 방법이 아닙니다. 본인은 내부 동작방식을 잘 알기 때문에 기능이 정상적으로 동작하는 방식 위주로 테스트를 하기 마련입니다.

테스트는 반복적이고 전문적인 작업이기 때문에 개발자가 담당하고 있는 이상 정상적으로 이루어지고 있다고 보기 힘듭니다. 

테스트팀을 따로 두기 위해서는 기본적으로 제품의 스펙이 있어야 합니다. 그렇지 않다면 테스트 팀은 그냥 Random 테스트를 마구 해주는 아르바이트생 수준의 역할 밖에 할 수가 없게 됩니다. 실제 수많은 테스트 팀들이 그 정도 수준에서 밖에 테스트를 할 수 없는 열악한 상황에서 일을 하고 있습니다.

기본적으로 제품에 스펙이 존재를 해야 이를 토대로 테스트케이스를 만들어 낼 수 있고, Regression Test가 가능해 집니다. 그리고 테스트팀이 있다면 테스트 자동화에 대해서 좀더 연구를 하게 되고 테스트 효율성을 높이기 위한 작업들을 진행할 수 있습니다.

테스트팀을 두는 것이 비용을 줄이면서도 제품의 품질을 높일 수 있는 방법입니다. 개발 조직을 효율적으로 운영하고 싶으면 전문 테스트팀에 대해서 심각하게 고려해봐야 합니다.

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

Ray.전규현 개발조직 스펙, 테스트, 테스트케이스, 테스트팀

Trackback Address: http://allofsoftware.net/trackback/139 관련글 쓰기
  1. 확실히 자기의 잘못을 자신이 알 수 없듯, 테스트는 작성자가 해서는 안된다는 사실에 매우 공감합니다.

    그래서 가끔은 전혀 모르는 사람에게 그냥 써봐~ 라고 하면서 던져줘보곤 하죠 ㅋ

  2. 구차니님 안녕하세요.
    그것도 테스트 방법 중 하나죠. 그 방법이 유일한 방법은 아니겠죠?^^

이건 기능이 아닌데

2009/08/03 23:14
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

의례 스펙, 기능요구사항 등을 정리한 문서를 보면 기능만 잔뜩 나열되어 있는 것은 매우 흔한 일입니다.
소프트웨어를 만든다고 하면 구현해야 할 기능만 알면 제대로 잘 만들 수 있을 것으로 생각하기 십상입니다. 상식적으로 생각해도 기능면 제대로 구현하면 되겠지요. 여기에 UI는 살짝 추가하고요.

하지만, 분석을 할 때 기능보다 더 중요한 것이 비기능 요구사항입니다. 즉, 기능은 아닌데, 요구사항 즉, 스펙인 겁니다. 기능이 중요하기는 하지만, 기능 하나가 잘못되면 이를 고치는 것은 그렇게 어렵지 않습니다. 그런데 비기능에서 잘못되면 소프트웨어를 완전히 뒤엎어야 하는 일이 발생할 수도 있습니다. 

이렇듯 비기능이 기능보다도 더 중요한 측면이 있는데, 눈에 바로 보이지 않는 다는 이유로 간과되기 쉽습니다. 그럼 이렇게 중요한 비기능 요구사항에는 어떤 것들이 있는지 몇 가지만 알아 보겠습니다.

첫째 성능입니다. 소프트웨어가 얼마나 빨리 반응을 보이며 단위 시간당 얼마나 많은 데이터를 처리해야 하는지 정의해야 합니다. 또한 이를 검증하기 위한 기준도 마련이 되어야 합니다.

둘째 안정성입니다. Database와 위젯 시계는 요구되는 그 안정성이 다릅니다. Database는 시스템이 정전이 되어도 데이트가 파손이 되어서는 안됩니다. 그러한 안정성을 보장하기 위한 요구사항도 자세히 기술이 되어야 합니다.

셋째 보안입니다. 데이터는 암호화 되어서 저장이 되어야 하는지? 암호키는 어떻게 보관을 하는지? 프로토콜은 암호화 되어야 하는지? 시스템은 인증을 거쳐서 접근해야 하는지? 등등의 보안 요구사항은 각 소프트웨어마다 다른 요구사항을 가지고 있습니다.

그 외에도 많은 비기능 요구사항은 있습니다. 가용성은 시스템이 24시간 동작하는 것인지 MS-Word처럼 필요할 때 사용하고 종료하는 것인지 기술합니다. 또, 이식성은 현재 지원해야 하는 것이 아니고 향후 미래에 Porting을 하기 용이하도록 만들기 위한 요구사항입니다. 미래에 Windows에서 Linux로 포팅을 할 수도 있고, 여러 언어를 지원하도록 확장할 수도 있습니다. 또 64bit를 지원할 수도 있고, Unicode를 지원하게 될 수도 있습니다. 따라서 미래에 어떻게 할지 계획이 아무것도 없다면 이식성을 정의할 수가 없습니다. 다국어, 개발표준, 메모리 사용제한, 소스코드 재사용성, 유지보수 편의성 등 많은 비기능 요구사항이 있습니다.

딱 보시면 아시겠지만, 하나하나가 잘못 적히면 완전히 소프트웨어 전체를 뒤집어야 하는 것들입니다. 이런 것들이 눈에 보이지 않는다고 기능만 보고 제품을 만들었다가는 앞은 안보고 땅만 보고 달리는 자동차와 같습니다. 조금만 고개를 들면 보이는 막다른 골목으로 가고 있을지도 모릅니다.

기능 신경쓰기도 바쁜데 이러한 수많은 비기능까지 어떻게 신경을 써서 만드냐고요?
그럼, 신경 안쓰고 그냥 만들면 그 요구사항이 사라지나요? 무시된겁니다. 요구사항을 고스란히 남아 있고 나중에 비용을 수십,수백,수천배를 치러야 합니다.

비기능 요구사항을 잘 적는 방법은 그러한 비기능 요구사항에 대하여 경험이 있을 수 있도록 소프트웨어를 개발한 상당한 경력이 필요하고, 적는 방법에 대하여 배우거나 학습이 필요합니다. 또, 이런 과정을 통해서 과거에 간과된 비기능 요구사항이 현재 얼마나 많은 손해를 끼치는 깨우치면서 배워나가게 됩니다. 하지만 이런 과정을 거쳐야 시행착오가 최소화 되지, 비기능 요구사항을 고려하지도 않는다면 항상 바쁘고 앞으로 잘 나아가지 못하는 굴레를 벗어나기 어려울 겁니다.

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

Ray.전규현 프로젝트/요구사항분석 기능, 보안, 분석, 비기능, 성능, 스펙, 안정성

Trackback Address: http://allofsoftware.net/trackback/136 관련글 쓰기
  1. 비기능이라고 해서 무슨 개념인가 했는데
    정말 기능보다 더 중요한 내용들이군요.

    그나저나.. 멀티플랫폼은 개발자의 악몽이죠 ㅋ

  2. 구차니님 안녕하세요.
    멀티플랫폼 개발을 하고 있다면 중요시 되는 비기능들이 더욱 많죠. 멀티플랫폼은 개발, 빌드, 테스트에 더 많은 시간은 들어가지만 익숙해지면 크게 문제 없지 않나요? 개발자에게는 좋은 경험이죠.

  3. 기능제공을 잘 하는 것도 중요하지만 RFP를 잘 분석하고 클라이언트와 미팅을 잘해서 리스크가 될만한 것들을 모두 정리한 다음에 명확하게 계약서와 SoW를 작성해서 '사인 받는게' 중요한 것 같습니다.

    그러지 않으면 끝없이 이어지는 고객의 추가요구사항을 감당해 낼 수가 없지요.

    특히 개발자들이 약한 부분이 클라이언트와의 미팅 후 회의결과 정리 및 쌍호간 확인싸인 하기, 이거 정말 중요합니다.

  4. 우울한딱따구리님 안녕하세요.
    우리나라 고객들은 왠만하면 사인을 잘 안하려고 하지만, 그래도 회의록 작성하고 사인하고 사인하지 않더라도 배포만 하는 것도 나름 효과는 있죠. 계약할 때 SRS와 ATP를 첨부하는 외국과는 아직 거리는 멀죠.

도대체 얼마나 자세히 적어 달라고?!

2009/06/29 23:58
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

소프트웨어 개발자들에게 문서 작성은 고역이 아닐 수 없습니다. 그래서 문서는 소프트웨어를 개발한 후에 후배들에게 소프트웨어에의 스펙과 구조를 설명하기 위해서 작성하곤 합니다. 이런 경우에는 문서의 효용성도 별로 없을 뿐더러 문서가 제대로 작성되었는지 알기도 어렵습니다. 또 개발자들은 기억을 더듬어서 문서를 작성하기도 어려울 뿐더러 이러한 작업은 하기 싫은 고역이 될 수 밖에 없습니다.

소프트웨어를 개발하는데 있어서 필수적인 문서의 대부분은 개발한 내용을 정리하기 위해서 만드는 것이 아니고, 소프트웨어를 개발하는데 필요한 내용을 앞 단계에서 작성하는 것입니다.

즉, 설계를 하기 전에 스펙을 작성하고
구현을 하기 전에 설계서를 작성하고
테스트를 하기 전에 테스트 계획 및 TCL(Test Case List)를 작성합니다.

하지만 현실에서는 이렇게 작성된 문서를 가지고 다음단계 작업이 잘 안 된다는 문제가 있습니다.
즉, 다른 개발자가 작성한 스펙을 가지고 설계 및 구현(코딩)을 할 수가 없는 경우가 대부분입니다.

스펙을 제대로 작성하려면 남이 설계할 수 있을 정도로 상세하게 적어야 하는데, 잘못하면 백과사전이 되고 또는 흔히 빈약한 스펙서를 작성합니다. 이렇게 되면 스펙을 작성한 사람이 또 설계자에게 계속 스펙을 설명해줘야 합니다. 

이 글을 읽고 있으면서 이것이 뭐가 문제라고 생각하신다면 이미 가내수공업식 개발에 익숙해지신 겁니다. 한 개발자가 스펙도 작성하고 설계, 구현, 테스트를 모두 다하는 이런 가내수공업식 개발은 회사는 성장의 한계에 부딪히고, 개발자는 성장하지 못하는 악순환에 빠지기 쉽습니다.

개발문서는 그 문서를 보고 다음단계의 개발자들이 충분히 일을 진행할 수 있을 정도로 상세해야 합니다.
따라서 상세화 정도는 상황에 따라서 다르다는 것을 알 수 있습니다. 설계자가 해당 제품에 대해서 빠삭하게 알고 있으면 기능스펙을 적당히 적어도 문제가 없을 것이고, 신입사원에게 일을 시키려면 좀더 자세히 적어야 할 것입니다. 

또한, 좀더 작은 양으로 이해 가능한 문서를 작성하려면 소프트웨어를 다양한 뷰에서 바라보고 적어 주는 것이 좋습니다. 따라서 스펙을 작성할 때는 소프트웨어를 인터페이스에서 바라본 모습, UI에서 바라본 모습 그리고 기능, 비기능적인 내용을 적어주면 기능에 대하여 많은 양을 설명한 것보다 더 이해하기 쉽습니다.  설계에 있어서도 소프트웨어의 아키텍처를 데이터 관점, Flow 관점, 시간의 흐름, 시스템의 상태 등 다양한 관점에서 바라본 모습을 적당히 표현해 주는 것이 하나를 자세히 적어 주는 것보다 좋습니다.

매우 추상적인 글을 적어 놓은 것 같지만, 실제 개발문서를 제대로 적기 시작하면 잘 적었는지? 못 적었는지는 명확하게 구분 됩니다. 작성된 문서를 가지고 다음 단계 개발자들이 별 무리 없기 개발을 할 수 있고, 문서가 거의 바뀌지 않는다면 잘 작성된 것이고, 그렇지 않으면 잘 작성되지 않은 것입니다.

그래서 이를 위해서 기법을 쫓기 보다는 실제로 필요한 것이 무엇인가 생각하고 실질적인 접근이 필요합니다. 잘못 익힌 기법은 독이 될 수 있습니다.

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

'소프트웨어이야기' 카테고리의 다른 글

개발자는 코딩만 해야 한다.  (14) 2009/07/09
살아남은 개발자들  (2) 2009/07/03
도대체 얼마나 자세히 적어 달라고?!  (4) 2009/06/29
악순환 vs. 선순환  (2) 2009/05/22
이 바닥을 못 벗어난다.  (5) 2009/05/18
나는 혼자가 아니다.  (5) 2009/05/15

Ray.전규현 소프트웨어이야기 TCL, 문서, 설계, 소프트웨어, 스펙

Trackback Address: http://allofsoftware.net/trackback/125 관련글 쓰기
  1. 문서가 실용적이어야 한다는 의미는 공감합니다만,

    > 문서가 거의 바뀌지 않는다면 잘 작성된 것이고, 그렇지 않으면 잘 작성되지 않은 것입니다.

    이 부분은 일반적인 이야기가 아니지 않나 생각됩니다. 코드는 문서보다 훨씬 빠르게 바뀌기 때문에 문서는 뒤쳐지게 되어있는데, 아마도 말씀하신 의미상으로는 문서를 이런 변화까지 수용하게 적어야 된다는 것이 아닐까 추측되는데, 그건 잘 작성된 기준으로 생각하기에는 적합한 기준이 아니지 않나 생각됩니다. 문서가 바뀌기 때문에 잘 작성하지 않았다는 것은...

    또한, 다음 단계(?)의 개발자가 이를 활용할 수 있는 프로젝트가 있는 반면, 그렇지 않은 프로젝트도 많이 있기도 한 것 같습니다.

  2. charlz님 안녕하세요.
    좋은 의견 감사합니다. charlz님의 댓글을 보면 "문서"라는 말을 가지고도 서로 다른 이미지를 그리고 있다는 생각이 듭니다.

    예를 들어서 스펙서를 기준으로 보면 설계단계나 구현단계에서 스펙서가 바뀌는 것은 스펙이 바뀐 것이고, 그 변경에 대한 비용을 몇곱절로 치뤄야 합니다. 하지만 개발 기간내에 스펙이 전혀 바뀌지 않는 프로젝트는 찾아보기 힘들죠. 하지만 변경을 최소화는 해야 합니다. 설계가 진행되고 코드가 진행됨에 따라서 스펙서를 바꾸지는 않죠.

    그리고 설계서의 경우에도 코드가 진행됨에 따라서 아키텍쳐나 인터페이스의 변경이 있기 전에는 설계서가 변경되지 않습니다. 문서와 코드가 같이 발전해 나가는 경우는 분석, 설계, 구현단계가 적당히 밍글된 형태일 수도 있습니다. 사실 크고 작은 많은 프로젝트가 이렇게 진행되고 성공적으로 잘 끝나기도 합니다. 하지만 이런 방법으로 계속 성장하기는 어려움이 있습니다.

    사실 문서가 잘 작성되었는지 판단하기는 대단히 어렵습니다. 그래서 그 한방법을 언급해 봤습니다.

    제가 항상 주장하는 것은 개발자들이나 개발사들의 현재 상황에 따른 전투적인 대응방법이 아니고 개발자들이 꾸준히 성장하고 실력도 향상되며 현재 프로젝트를 잘 수행해내기 위한 원론적인 방법들이 주류를 이룹니다. 그런 관점으로 읽어주세요.

    charlz님의 의견과 같은 여러 관점은 제가 많은 도움이 되네요. 감사합니다.

  3. Blog Icon
    ^^

    문서라 지긋지긋하지요.

    정말 돈받고 만드는 프로덕트로서의 문서들은 가끔 종이값과 타이핑값을 받기 위해 만드는거 아닐까 하는 생각이 들곤 합니다. 그래서 도큐멘트도 아니고 산출물이라고 하는게 아닐까 생각하죠. ^^

    SI성 프로젝트를 많이 하다보니 몇십종의 산출물들이 과연 필요나 할까 싶을떄가 많기도 하고, 왜 보지도 않고 쓸데도 없는 문서를 주구줄창 만들어야 할까 싶습니다.

    경험적으로 생각해보면 산출물은 의사전달을 위한 문서, 생각을 정리하기 위한 문서, 점검을 위한 문서 세종류가 있는 것 갑습니다. (그냥 제 기준입니다.)

    무엇을 위해서 작성을 하는지가 중요한 것 같은데.. 문서 프레임에 압도당할때가 만은데요. 잘하지는 못하지만 고객이나 내부 팀원이 쓸 수 있을 만한 표현력이 들어가면 문서의 프레임이야 얼마든지 고칠 수 있지 않나 싶네요. ㅎㅎ

    뭐 항상 만들고 나면 이것 저것 한방에 보고 싶다는 욕심에 덕지덕지 붙여넣다가
    질려서 흐지부지 되는 경향이 있어서.

    될 수 있으면 간략한게 좋지 않나 생각이 드네요.

    특히나 고객의 요구사항이 수시로 변할떄는 말이죠.

  4. 산더미같이 많은 문서를 만드는 프로젝트들은 아주 잘못된 관행입니다. 소프트웨어 개발에 대해서 잘 모르는 고객이 거대한 방법론에 있는 문서를 무작정 다 요구하곤 합니다. 그 방법론에서도 문서를 다 만들라고 하지 않는데도 잘못 적용하는 것이지요.
    하지만 개발사 입장에서 고객이 요구하는데 안만들 수는 없는 노릇이지요. 수많은 문서 중에서 실제 개발에 필요한 문서는 소수에 불과합니다. 그런 문서만 제대로 만들고 나머지 프로세스나 관리를 위한 문서들은 최소한의 노력만 들이는 것이 좋습니다.

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

2009/04/22 10:01
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
개발자들이 바글바글한 외딴섬에 떨어졌는데 서로 뒤죽박죽으로 개발을 하고 있고,이들을 3개월 안에 훈련시켜서 정예 개발자로 만들어 한다는 미션이 떨어졌다면 무엇을 하시겠습니까?

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

어떻게 하시겠습니까?

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

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

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

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

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

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

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

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

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

Trackback Address: http://allofsoftware.net/trackback/116 관련글 쓰기
  1. 2009/04/23 09:15
    정예 개발자를 만든다? Tracked from 김현남의 이야기터
  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. 감사합니다.

이 정도도 안되면서 Peer Review를 한다고요?

2009/04/06 23:52
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
소프트웨어 개발의 기초도 되어 있지 않으면서 무리하게 Peer Review를 시도하다가 실패하기 십상입니다.

개발의 체계도 전혀 없이 코딩위주로 개발을 하고 있다면 Peer Review할 것도 별로 없거니와 Peer Review를 통해서 공유의 문제와 품질을 향상할 수 있을 것으로 착각하는데, 이는 Peer Review를 너무 만만하게 보는 것입니다. 피아노 기초도 안되어 있으면서 쇼팽을 치려는 것과 같고, 기초 체력도 부족하면서 축구의 고급 기술은 배워서 무엇 하겠습니까? 그래서 히딩크가 강조한 것이 기초체력이지요.

Peer Review를 정상적으로 진행하려면 최소한 소스코드관리시스템버그관리시스템은 제대로 사용하고 있어야 하며, 스펙과 설계문서를 제대로 만들어야 하며, 코딩 컨벤션을 따라서 개발을 하고 있어야 합니다. 간단하게 2줄로 설명을 했지만, 이 정도의 역량을 가지고 있는 소프트웨어 회사는 흔하지 않습니다. 즉, 대부분의 회사들이 Peer Review를 시행할 준비가 되어 있지 않고, 억지로 시행한다고 해도 그 효과를 제대로 누리기는 어렵습니다.

스펙과 설계문서를 제대로 만든다는 의미는 이미 Peer Review를 모두 포함하고 있는 것입니다. 여기서 또 많은 개발자들이 스펙과 설계문서를 제대로 만들고 있다고 착각할 수도 있겠지만, 현실은 그렇지 않습니다. 필자의 경험에 의하면 많은 회사와 개발자들이 스펙과 설계문서를 만들고 있다고 착각을 하고 있습니다. 이에 관한 얘기들은 추후에 올릴 계획입니다.

이렇게 얘기를 하면 매우 비관적인 것처럼 보이는데 비관적인 것이 사실입니다. 굳이 거짓된 희망의 메시지를 전하고 싶은 생각은 없습니다. 현실이니까요. 이렇게 된 것은 개발자들만의 탓도 아니고 회사에서 제대로 된 개발 환경 및 교육의 기회를 제공했어야 하는데, 그렇지 못했고 많은 회사들이 그냥 개별 개발자들에 의존해서 주먹구구식으로 개발해왔고 뭔가를 시도하려고 한 회사들도 그렇게 좋은 성과를 낸 회사는 별로 없습니다. 

결론을 말씀드리면 그럼에도 불구하고 Peer Review를 시행하려고 노력하는 것은 의미가 있다고 할 수 있습니다. 하지만 그와 더불어서 개발의 기초를 닦기 위한 노력도 병행해야 합니다. 이미 개발을 잘하고 있는데 기초가 부족하다고 하면 기분이 나쁠 수도 있는데, 사실이기 때문에 말을 돌려서 하고 싶지는 않습니다. 코딩도 잘하고 꽤 근사한 제품도 만들어 내지만, 효과적인 개발의 체계를 갖추고 있지 못한 것을 사실입니다. 그래서 좀더 좋은 제품을 좀더 짧은 시간에 개발할 수 있는데 그렇지 못하고 개발자들은 제대로 성장할 수 있는 기회를 갖추고 있지 못한 것입니다. 

앞으로 개발자로서 10년, 20년 후의 모습이 그려지지 않는다면 소프트웨어 회사로서 제대로 체계를 갖추고 있지 못한 것이 확실합니다. 제대로 소프트웨어를 개발하기 위해서 우선적으로 해야 할 것이 무엇인지 생각해야 합니다.

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

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

Ray.전규현 개발문화 Peer Review, 리뷰, 설계, 스펙

Trackback Address: http://allofsoftware.net/trackback/108 관련글 쓰기
  1. 2009/04/07 13:30
    소스 코드 리뷰와 짝 프로그래밍 Tracked from 내 가슴에 열정이...
  1. 언제나 글 잘 읽고 있습니다. 빠른 시일 내에 효과적인 스펙 및 설계문서 제대로 만들기에 대한 내용을 볼 수 있길 바래봅니다. :)

  2. 우울한 딱따구리님 안녕하세요. 모터쇼 다녀오셨군요. 저도 항상 블로그 잘 읽고 있습니다. 처음에 블로그를 시작할 때 스펙을 첫번째 주제로 생각을 하고 있는데, 계속 주변만 서성거리고 있습니다. 블로그를 통해서 스펙을 잘 만드는 법을 습득한다는 것은 과욕이지만 해보는데까지 시도는 해봐야죠. 똑같은을 글을 가지고 1을 얻는 사람도 100을 얻는 사람도 있으니 1명의 독자라도 도움이 된다면 좋겠습니다.

  3. 용역 의뢰를 받다보면,
    특정 플랫폼을 위한 엔진을 개발하는데 고객이 너무 '배려심'이 많아서 산출물 필요없다고 하시는 경우가 있습니다. 고객 측에서도 개발진이 있으니 완료 보고서를 알아서 쓰겠다고 하는 거죠.

    문제는 설계 문서를 쓰지 않으면, '완료 보고'가 아니라 프로젝트 중간 관리 자체를 못하는 건데, 나서서 문서를 쓰겠다고 하니, 아군(?), 적군(?) 할 것 없이 쓸데 없는 짓이라고 말리더군요. 그래도 고집 피워서 겨우 기본 틀 잡아서 문서 제출하고 회의 때마다, 진도/이슈 체크 했더니 더 이상 아무 말도 없습니다.

    말씀하신게 옳은 현장의 작은 기업들이나 실무 개발자들은 SRS라던가, 진행 사항 관리를 위해 어떤 서식이 있는지도 모르는 경우가 많습니다. 가장 간단한 서식 몇개를 공개할까 생각 중입니다. 제가 최근들어 고민하는 내용을 그래도 밝혀 주셔서 감사한 마음 담아 주절 거리고 갑니다.

  4. 써니님 안녕하세요.
    고객도 산출물이 필요없다는 직원도 문서는 개발에 필요없다고 생각하고 있는 것이 문제죠. 대부분 문서에 대한 아픈 기억이 있고, 문서는 개발 시간만 늘인다고 생각하는 경우가 많습니다. 제대로 문서를 써본 경험도 전혀 없으면서 엉터리 경험을 가지고 착각을 하는 겁니다. 문서가 제대로 적히지 않으면 요구사항이 제대로 분석이 되지도 않고 서로 다른 생각을 하면 수많은 재작업을 해야 하며 프로젝트의 진척을 확인할 수도 없습니다.
    각 프로젝트 상황에 맞게 최소한의 문서를 만들어야 하는데, 쓸데없는 문서만 잔뜩 만들다가 아예 포기해버리는 경우가 대부분입니다.

    그리고 몇가지 Template을 공개하는 것은 거의 도움이 안되거나 오히려 방해만 됩니다. Template을 채우는 것을 문서를 작성하는 것으로 착각하기 때문에 그렇게 해 놓고 문서를 작성하고 있다고 할 수 있습니다.

    Template은 인터넷에 널려 있는데, 그게 없어서 문서를 작성 못하는 것은 아니고, 우선 문서 작성의 필요성을 못 느끼는 겁니다. 그리고 문서를 작성해본 경험도 거의 없으니 실력도 없는 것인데, 나름대로 문서를 작성하고 있다고 착각하기도 하고요.

    문서는 작성을 해보고 리뷰하고 또 배우고, 공부하고 작성하고 리뷰하고 프로젝트 해보면서 계속 실력을 향상시켜나가야지요. 그러면서 자연스럽게 자신의 회사에 알맞는 Template를 만들어가면 좋습니다. 표준 Template을 가지고 시작할 수도 있는데, 대부분의 표준 Template가 매우 Heavy하다데 문제가 있습니다. 또 자신의 회사와 맞지 않을 수도 있고요. 항상 의견 남겨주셔서 감사합니다.

  5. 먼저 답글 감사드립니다. 템플릿이 오히려 해가 된다는 말씀에는 깊이 공감합니다.
    ISO 9001 standard 문서 작업한다고 고생하던 기억이 떠오르네요 ^^;

    많은 SI 프로젝트 매니저들이 현실성 없는 양식들을 가지고,
    산출물 작성만을 강요하는 상황도 큰 폐해라고 생각 합니다.

    이렇게 이야기 하는 것보다 실제로 어떻게 쓰고 있는지 밝히는게 역시 낫겠네요.
    역시, 템플릿 자체 보다 중요한 건, What, Why, How 3가지 행동 지침이겠죠.
    서식을 만들면서 어떤 고민을 했고, 어떻게 적용했으며, 개선할 점들을 이야기하려고 합니다.

  6. 내제된 역량이 부족한 상황에서 문서만 만드는 것은 고역이죠. 그렇다고 실력이 느는 것도 절대로 아닙니다. 오히려 아픈 기억만 쌓입니다.

    다양한 경험을 블로그에서 소개하는 것은 매우 긍정적인 일인 것 같습니다. 자신의 경험들에 비춰봐서 도움이 될 수도 있고, 이견이 있으면 토론도 할 수 있겠죠. 어떤 글이 올라올지 기대하겠습니다. ^^

외주를 주면 된다고요?

2009/03/30 22:07
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
"우리가 못하면 외주를 주면 된다."

이렇게 생각하십니까? 아니면 인력이 모자라거나 시간이 부족하여 외주를 주십니까?
대부분의 개발자라면 외주에 대한 쓰라린 기억이 있을 겁니다.

한 포탈업체가 인도에 포탈 시스템 외주를 줬다가 통째로 버리고 국내 업체에 다시 외주를 줘서 개발한 적이 있습니다. 그리고도 국내 업체에 질질 끌려 다녔었지요.

인도에 외주를 줄 때는 스펙을 제대로 전달 하지 못했고, 개발 기간에도 전혀 관리와 리뷰를 하지 않고 최종 결과물만 받아 본 사례입니다. 이런 케이스 많죠?

그리고 국내 업체에 외주를 줄 때도 자체적으로 기술을 보유하지 못하고 외주에 의존하다 보니 지속적으로 문제가 됩니다.

결국 스스로 만들 능력이 없는데, 외주를 주는 것은 성공할 확률도 낮고, 경험있는 외주 업체를 만나면 개발은 제대로 되더라도 질질 끌려다니기 일쑤입니다. 또한 외주를 주기 위해서는 분석능력과 관리 능력이 필수 입니다. 특히 해외 업체에 외주를 줄 때는 대단히 정교한 스펙문서(SRS 등)가 필요합니다. 따라서 대다수의 업체는 외주를 줄 능력이 없다고 볼 수 있습니다. 그래서 외주가 아니고 사람만 빌려오는 거죠. 옆에 앉혀놓고 같이 의논해가면서 개발하는 방법이 유일한 방법입니다. 소프트웨어 개발 생산성이 아직도 매우 낮은 수준에 머물러 있는 원인이기도 합니다. 

"스스로 잘 할 수 없다면 외주는 더 어렵다."

이미지출처 : Microsoft Office Online

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

'소프트웨어이야기' 카테고리의 다른 글

나는 혼자가 아니다.  (5) 2009/05/15
이거 팔면 돈 되겠는데!  (20) 2009/04/17
외주를 주면 된다고요?  (6) 2009/03/30
소스코드가 그렇게 중요한가요?  (18) 2009/03/23
소프트웨어 개발자의 권리  (8) 2009/03/15
짝퉁 고수  (8) 2009/03/04

Ray.전규현 소프트웨어이야기 SRS, 스펙, 외주

Trackback Address: http://allofsoftware.net/trackback/103 관련글 쓰기
  1. 2009/04/01 11:39
    십년차의 생각 Tracked from sugiii's me2DAY
  2. 2009/04/05 15:07
    멤피스의 생각 Tracked from cychong's me2DAY
  1. 날로 글이 간결하면서 핵심을 전하는군요. 대단하십니다.
    외주의 기본 요건을 다룬 이 글은 현장에서 질리도록 보는 우울한 장면을 담아내서 씁쓸하기도 하고, 계도하려는 노력에 반갑기도 합니다.

    그나저나 조 아래.. RSS 구독 아니콘을 보니 구독자 하위 호환성(?)을 유지하시는 모습이 인상적입니다. :)

  2. 영회님 안녕하세요. 과찬의 말씀입니다. 수많은개발자와 경영자들이 착각속에 살고 있는 듯합니다. 저는 그뒤로 또 새로운 바이러스의 감기에 걸려서 캑캑대고 있습니다. 바이러스가 없는 세상에서 살고 싶어요. 나중에 하와이로 이민가고 싶습니다.

  3. 요구사항에 대한 잦은 피드백이 필요한것은 인도나 한국이나 동일하다고 생각합니다. 제 경험으로 정교한 스펙을 주는것보다 성근 스펙에 잦은 피드백이 더 효과 있었던거 같습니다. 다만 커뮤니케이션을 위한 가혹한 피드백은 각오해야...^^

  4. 황상철님 안녕하세요.
    요구사항은 계속 변하기 마련이지요. 한번에 제대로된 스펙을 만들어서 소프트웨어를 개발하는 것은 불가능합니다. 당연히 지속적인 피드백과 변경관리는 필수입니다.

  5. Outsourcing과 Offshoring의 차이점에 대해서 잘 못 이해하시는 분들도 있으신 것 같습니다. 특히 테스트부분에 Outsourcing이 아닌 Offshoring을 진행한 일을 개선하러 해외 출장을 나왔는데...
    와서 보니 넘 우울하네요. Test에 대한 Offshoring은 저희 회사에서는 100% 실패할 것이라 생각하고 아니라고 말씀을 드렸는데... 흑...
    어찌해서 진행은 되었고 시간이 꽤 지난 지금 어떻게든 개선?을 하라고 하시네요.
    이 부분은 제가 나중에 다시 한 번 정리해서 블로그에 올려보겠습니다. ^^;

    테스트에 대한 생각이 많이 바뀌었더라도 아직 테스트에 대해서 너무 쉽게 보시는 분들이 넘 많습니다. 안타깝습니다. Offshoring이라니... ㅡㅡ;

    *회사 상황을 자세히 못 적으니 말이 좀 이상하고 이해하기 힘들 것 같네요... 그래도 속상해서... 장기 해외출장은 참 힘드네요... ㅎㅎ

  6. 정의의소님 안녕하세요.
    테스트부분은 개발의 한부분으로 개발 초기부터 참여를 해야하는데, 테스트를 너무 기계적으로 생각하는 분들이 많이 있습니다. 그냥 자신들의 경험에 비춰서 생각하는 것이지요. Offshoring할 수 있는 분야는 따로 있지요. 무슨 뜻인지 충분히 알고 있습니다. 이와 유사한 사례들도 알고 있고요. 자칫 준비도 안되었고 내부적으로도 제대로 못하는데, 비용절감을 위해서 Outsourcing이나 offshoring을 시도하는 회사들을 보면 100이면 100실패할 것이기 때문에 안타깝고 말리고 싶습니다.

SRS(Software Requirements Specification)의 중요성

2008/11/19 10:32
 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을 가지고 있어야 한다.


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

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

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 나의 지식을 오픈하는 것은 나를 더욱 강하게 만드는 길이다. (아무개..)
빨리 망해서 없어져야 할 회사들

소프트웨어 업계에는 빨리 망해야 서로 도움이 되는 회사들이 매우 많지만 악착같이 버티면서 소프트웨어 생태계를 좀먹고 있습니다. 이렇게 좀비화 된 "좀비 회사"들은 또다른 "좀비 회사"를 만들어 내는 악순환의 고리를 만듭니다...

[이벤트] 도서 증정 - "소프트웨어 개발의 모든 것"

안녕하세요. 블로그 독자 여러분! 대한민국의 소프트웨어 토양에 좋은 밑거름이 되고자 하는 제 블로그에 많은 호응을 해주셔서 감사드리며 이에 보답코저 아래와 같이 이벤트를 실시합니다. 많은 참여 바랍니다. 제목 : 저자 사인..

세계 최초!
세계 최초! 2010/03/05

소프트웨어 업계만큼이나 "세계 최초"라는 수식어를 자주 듣는 곳도 드물 것입니다. 이러한 수식어가 붙는 이유는 세간의 이목을 끌기 위함이 명백합니다. 하지만 세계 최초라고 하는 것들의 99%는 아래 범주에 속합니다. 나는 세..

개발자의 야근은 공짜?

소프트웨어 회사의 일들은 대부분 사람, 특히 개발자에 의존하는 일이 많습니다. 따라서 인건비는 가장 큰 비중을 차지하는 고정비입니다. 그런데 일단 뽑아 놓은 직원들의 야근은 공짜로 생각하는 경우가 많습니다. 게다가 몇몇 기업..

삼성이 소프트웨어 분야에서도 최고가 되려면?

최근 삼성과 소프트웨어에 대한 글들을 몇 건 올리면서 정말로 다양한 의견을 접하게 되었습니다. 댓글뿐만 아니라 메일을 통해서도 의견을 들을 수 있었습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를..

소프트웨어 회사에 산업 스파이가 존재하는가?

최근에 블로그에 올린 글들의 댓글을 보면 소프트웨어를 잘 개발하는 것이 어떤 것인지 바라보는 시각이 무척 다릅니다. 필자는 주장하는 바가 있어서 소프트웨어 개발에 대한 생각을 꾸준히 공유하고자 합니다. 제 블로그의 미션은 어..

애플은 한국어와 한글을 구분하지 못한다?

아이폰을 사용하기 시작한지 오늘로 꼭 2달이 되었습니다. 2달동안 아이폰을 사용하는 재미, 아이폰 앱 개발 관련 공부하는 재미에 빠져있었습니다. 그런데, 아이폰 다국어 설정에서 이상한 것을 발견했습니다. 언어어 설정에 떡하니..

스마트폰 앱스토어가 진짜 대박이 아닌 이유

요즘 스마트폰이 IT 이슈의 정점에 있어서 스마트폰 관련 글을 계속 올리게 됩니다. 개발자의 한사람으로서 스마트폰의 급속한 확대는 좋은 징조임이 분명합니다. 하지만 종종 스마트폰 어플리케이션을 만들어서 앱스토어에 올리면 쉽게..

삼성이 앞으로도 소프트웨어를 잘 만들 수 없는 이유

저는 이미 삼성의 소프트웨어에 대한 글을 몇개 올린 적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 2010/01/23 - [소프트웨어이야기] - 삼성이 바다를 출시해..

삼성이 바다를 출시해서는 안되는 이유

일전에 삼성이 왜 소프트웨어를 잘 개발하지 못하는지에 대한 글을 쓴적이 있습니다. 2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까? 개인적인 생각이지만 바다의 정식 출시가 임박할수록 점..