태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

소프트웨어 개발 단계에서 가장 중요하다고 생각하는 것은?

2009/02/04 16:48 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
그동안 약 2달에 걸쳐서 제 블로그에서 Poll을 실시하여 이와 같은 결과가 나왔습니다. 

이런데 이상하게 제가 현장에서 만나는 여러사람들의 의견과 다른 결과가 나왔습니다.
그래서 그 이유를 2가지 정도로 추측해보고 있습니다.

첫째, 블로그 방문자들(주로 블로거)은 비 방문자보다 소프트웨어 공학에 더 많은 지식과 경험을 을 가지고 있다.
둘째, 실제 자신의 경험에 의한 생각보다는 정답이라고 생각하는 것에 투표를 하였다.

물론 첫째 이유겠죠 ^^

아래 목록을 보면 각 항목의 득표 비율이 나오는데, 제 생각과 크게 다르지 않습니다. 
하지만, 유난히 유지보수에 대해서 작게 나온 것은 대부분의 방문자들이 유지보수가 그렇게 중요하지 않은 프로젝트들을 수행하고 있는 것이 아닌가 추측해 봅니다. 


다음 투표로는 SCM 사용도에 대해서 진행을 하려고 합니다. 많은 성원부탁합니다.
저작자 표시 비영리 변경 금지

전규현 개발프로세스 STAGE, 개발단계

Trackback Address: http://allofsoftware.net/trackback/72 관련글 쓰기
  1. 유지보수 부분이 적게 나온건 의외이긴 합니다.
    하지만, 가장 중요한 한가지를 투표하는것으로 기억되는데 그렇다고 한다면 제 생각과 얼추 비슷한 답변 분포인데요?

  2. 돌이아빠님 안녕하세요.
    생각해보니 그렇겠군요.

  3. 유지보수가 정말 중요하지만, 대부분의 중견 개발자 분들은 유지보수를 맡지 않기 때문이 아닐까 생각해 봅니다. 다수의 프로젝트에서 유지보수는 경력이 짧거나, 초기 프로젝트를 수행하지 않은 멤버들에게 할당되는 경우가 많거든요. 물론 제 경험에 한정된 이야기입니다만, 우선 유지보수에 투입되는 예산이 적은 경우가 많고 따라서 경력자들에게 유지보수를 맡기기에 단가가 맞지 않으며, 게다가 유지보수 경험은 장기적인 경력 관리에 좋지 않다는 선입관도 작용하는 것 같구요.

    물론, 유지보수의 중요성은 길게 얘기할 필요는 없겠지요. 예산이 적게 배정된다고 해서 중요도가 낮다는 얘기는 아니거든요.

  4. 써니님 안녕하세요.
    유지보수에 초기 개발비용의 1.5배에서 5배까지 소요가 된다는 보고도 있듯이 제가 봐온 수많은 회사들이 유지보수 이슈로 어려워지고 문을 닫는 것을 봐았습니다. 그럼에도 불구하고 유지보수가 어떻게 왜 문제가 되었는지 모르고 지나가는 경우가 허다합니다. 제품은 1.5, 2.0으로 업그레이드가 되는데 유지보수 할 일은 점점 기하급수로 늘어서 더이상 감당이 안되곤 하는데, 개발 초기부터 이를 철저히 고려하지 않으면 안됩니다.

  5. 개발자 개인 관점에서 유지보수 경험에 따라서도 이야기 할 수 있지만, 대체로 프로젝트를 SM 주체와 다른 외주 업체가 수행하는 탓도 있는 듯 합니다.
    사업수행 PM은 결국 예산, 기간 내에서 프로젝트를 완료해야 하는 탓에 품질이 우선순위가 밀리는 경우가 많습니다.
    또한, 시스템의 기반 기술이 바뀌는 소위 말하는 "차세대" 성격의 경우 고객이나 유지보수 담당자가 모르는 기술로 구현하기 때문에 일종의 모럴 해저드가 발생할 우려가 있는 부분도 있습니다.

  6. 개발자의 모럴해저드에서 대해서도 많은 해야할 얘기가 많이 있습니다. 스펙에 아무리 유지보수 용이성등에 대해서 자세히 적는다고 해도 완전히 검증이 어렵고 많은 부분 결국 개발자의 양심과 윤리에 맡기는 측면도 있습니다. 개발자들이 다른 사람을 속이는 것은 어려운 일이 아니거든요.
    또한 양심없이 만든 코드의 문제와 그 책임소재가 쉽게 드러나지 않는등 개발자들에게는 특히 윤리성이 많이 필요합니다. 그러나 현실은 그렇지 않고 대부분 환경만 탓하지요. 서로 까먹는 거죠.

다 만들었어요. 이제 테스트만 하면 되요.

2008/12/12 13:34 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
소프트웨어를 개발하는 회사에서는 자주 듣는 말입니다.
그런데, 이 테스트가 언제 끝날지 모르는 경우가 많습니다.

소프트웨어 개발 컨설팅을 하면서 정말 놀란 것 중의 하나가 대부분의 회사가 릴리즈 시 "알파", "베타", "RC", "GA", "FCS"와 같은 단계를 거치지 않는 다는 것이었습니다. 
대부분이 알파수준의 소프트웨어를 만들어서 만족스러울 때까지 테스트와 수정을 동시에 병행한다는 것이었습니다. 이는 큰 회사나 작은 회사나 별 차이가 없었습니다. 개발을 단계적으로 진행하지 않는 회사는 업무와 일정에 대한 정교한 구분 없이 일을 진행하다가 적당한 시점에서 한번의 테스트를 통해 제품을 완성하려고 합니다.
이를 빅뱅(Big bang) 테스트라 하는데 이 방법이 운 좋게 개발 기간을 단축시켜 줄지도 모른다는 기대감으로 일을 중구난방으로 진행하는 것입니다. 하지만 이는 전혀 근거가 없는 생각이며, 테스트를 한번에 끝낸다고 프로젝트가 더 빨리 끝나지는 않습니다. 이 방법은 테스트 기간 내내 혼란에 휩싸이게 만들고, 테스트가 언제 끝날지 도저히 예측할 수 없으며, 일정 기간 내에 품질이 얼마나 향상될 수 있을지 추측조차 하기 어렵습니다. 심지어 통합조차 잘 되지 않기 때문에 내포되어 있는 버그가 얼마나 되는지도 파악하기 어렵습니다. 결국 프로젝트 일정이 가시권에서 점점 멀어지게 됩니다. 운이 좋으면 밤을 새면서 일정대로 프로젝트를 마칠 것이고, 그렇지 않으면 프로젝트가 실패하게 됩니다. 



소프트웨어 프로젝트는 개발 단계 별로 관리하는 것이 좋습니다. 단계 별로 진행을 하면 각 단계가 명확해지기 때문에 프로젝트 진행 상황이 눈에 들어오고, 혼란으로 인한 재작업이 줄어 들며, 프로젝트 일정을 단축시키고, 비용을 절약해 줍니다.
특히, 높은 품질의 제품을 출시하기 위해서는 제품 및 프로젝트의 성격에 알맞게 단계 별 릴리즈를 하는 것이 좋습니다. 릴리즈는 알파, 베타, RC(Release Candidate)단계로 나뉘고 각각의 릴리즈 일정은 미리 계획하여 정해 둬야 합니다.


각 단계에는 다음과 같은 의미가 있습니다.

  • 프리알파(Pre-alpha): 알파 이전에 만들어내는 빌드들입니다. 개발 버전(Engineering version)이라고 하기도 합니다. 일일빌드(Daily Build)의 결과물도 프리알파에 해당합니다. 아직 기능이 모두 다 구현이 되어 있지 않습니다.
  • 알파(Alpha): 기능이 모두 구현되었으나, 버그는 꽤 많은 상태, 설치도 안되어서 기능을 확인해 볼 수도 없는 등의 버그는 없어서 모든 기능을 테스트 해 볼 수는 있습니다. 일부 작동이 안 되는 기능이 있습니다. 일반적으로 알파버전부터 테스트팀의 공식적인 테스트가 시작됩니다. 이를 알파테스트라고 부릅니다.
  • 베타(Beta): 중요한 버그는 거의 수정이 되어서 작은 버그들만 남아 있습니다. 베타 버전은 종종 사용자 평가(Evaluation) 및 외부 테스트(Field Test)를 위해서 외부에 배포되기도 합니다. 이런 목적으로 배포되는 버전을 베타 릴리즈라고 부르며 베타 버전을 사용해 보는 사용자를 베타 테스터라고 부릅니다. 베타버전 이전에 프리베타(Pre-beta)를 만드는 경우도 있습니다
  • RC(Release Candidate): 출시를 위해서 만들어진 버전입니다. FCS(First Customer Shipment), 감마(Gamma) 또는 델타(Delta)라고 부르기도 합니다.
  • GA(General availability): RTM(Release to Manufacturing)이라고 부르기도 합니다. RC 중에서 테스트를 통과하여 출시 할 수 있는 버전입니다. 일반적인 경우 마지막 RC와 동일합니다. 
이런 식으로 테스트팀에 전달하는 버전이 어느 수준인지 알려주어야 합니다. 그렇지 않으면 알파수준의 버전을 가지고 곧 고객에게 전달할 수 있을 것 같은 착각에 빠지기도 합니다.

모든 소프트웨어를 개발할 때마다 이 같은 단계를 전부 다 거쳐야 하는 것은 아닙니다. 제품의 규모와 난이도, 성격에 따라서 단계를 서로 다르게 정해야 합니다. 대규모 제품이거나 복잡한 팩키지 제품은 이 단계들을 거치는 것이 일반적입니다. 이런 제품을 한번에 높은 품질로 만들어 내기는 어렵기 때문입니다.

하지만 소규모 제품이거나, 고객의 수가 아주 적거나, 업그레이드 프로젝트라서 복잡도가 낮을 경우라면 처음부터 원하는 품질 수준에 근접하게 제품을 만들어 낼 수 있습니다. 이런 경우라면 테스트 단계를 간략하게 해서 진행할 수 있습니다.
저작자 표시 비영리 변경 금지

전규현 개발프로세스 STAGE, 소프트웨어 개발

Trackback Address: http://allofsoftware.net/trackback/36 관련글 쓰기
  1. 2009/01/06 13:33
  1. 드디어 "소프트웨어 개발의 모든 것" 책을 구입했습니다. 어제부터 틈틈이 읽고 있는데
    역시 내용이 알차군요. 실전경험에서 나오는 포스같은것이 느껴집니다. 앞으로도 좋은 글
    많이 부탁드립니다.

  2. 헝그리맨님 안녕하세요.
    궁금하신 내용이 있으면 언제든지 얘기해주세요.
    감사합니다.

  3. 좋은 글 잘 봤습니다. 여러가지 생각들이 머리속에서 떠오르는 글이네요. ^^
    일정을 준수하며 프로젝트를 진행한다는건 항상 어려운 숙제처럼 늦겨지네요.
    프로토타입이 완성되고, 테스트가 진행되면 생각치 못한 사항들....
    매번 경험하는거지만, 처음은 간단한 것부터가 시작이지만 욕심이라는건 끝이 없나 봅니다.

  4. 태양공원님 안녕하세요.
    적어주신 방법은 "발전적인 프로토타이핑"이란 모델과 비슷하네요. 처음에 기술을 검증한 프로토타입을 만들고 점점 기능을 더해가는 겁니다. 프로토타입을 만드는 방법은 일반적인 프로젝트와 다르게 간단하게 진행합니다. 하지만 이 방법은 잘못하면 주먹구구식 개발로 빠질 수 있다는 단점이 있습니다.

  5. 잘 계획된 일정도... 실제 현장에서는 끊임없는 사용자의 변경요구로 인해 프로젝트의 마지막 단계까지 변경이 발생하는 경우가 허다하죠. 테스트 일정은 계속 지연되고 결국은 빅뱅테스트가 진행되어버곤 하죠. --;;

  6. 필넷님 안녕하세요.
    맞습니다. 그런 경우가 허다하지요. 그래도 원리와 원칙을 안다면 그런 상황에서도 좀더 잘 대응할 수 있겠죠. 제가 접한 수많은 회사는 별다른 생각없이 으례 그렇게 빅뱅테스트를 하고 있더군요. 이런 경우라면 문제겠죠.

  7. 빅뱅테스트에 익숙해진 우리나라 소프트웨어 개발 현실이 안타깝습니다.
    제대로된 소프트웨어 관련 관리자나 아키텍트가 절대적으로 부족한 듯합니다. 그리고 이를 뒷받침해줄 안목높은 경영진이 있어야 하는데, 여러모로 그런분들 만나기가 참 힘드네요~

    제대로된 테스트를 통하여 높은 수준의 어플리케이션이 제대로 평가받을 날을 기대합니다~
    좋은글 잘 읽고 갑니다 :)

  8. 장성진님 안녕하세요.
    더 좋은 방법이 있는데, 해오던 방법이 더 익숙해서, 잘 몰라서, 우리는 다르다고 생각해서 비효율적인 방법을 그냥 고수하는 경우가 많습니다.

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

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

내가 개발에 집중할 수 없는 이유

우리나라에서는 개발자들이 개발에 집중할 수 없는 환경인 곳이 참 많다. 정도의 차이가 있지만 거의 대부분이라고 봐도 무방하다. 그 결정적인 이유는 개발자 혼자서 북치고 장구치고 다해야 하는 상황이기 때문이다. 원래는 이렇게..

설계가 필요할까?

최근에 Software Architect의 정체에 대해서 혼란을 겪고 있는 것 만큼 Software 설계에 대해서도 혼동스러운 것은 마찬가지인 것 같다. 그래서 설계에 대해서도 깔끔하게 정의를 해보자. 흔히 설계에 관한 다음..

Software Architect를 양성하는 나라

우리나라에서는 종종 SW Architect를 양성한다고 한다. 정부에서 막대한 예산이 지원도 되며 SW Architect를 양성하는 학원도 생기고 야단법석이다. 그럼 도대체 SW Architect는 무엇인가? SW Archi..

우리에게 지금 필요한 것은? 바로 이것

우리나라 대부분의 소프트웨어 회사들에게 가장 시급하게 필요한 것은 "기초 체력"이다. 히딩크가 우리나라 국가대표 축구팀을 처음 맞았을 때 강조한 것이 기초 체력이었다. 그전까지 우리는 국가대표 축구팀이 체력은 세계 어디를 내..

프로토타입을 재활용하면 될까? 안될까?

며칠 전 프로토타입에 관해 올린 글에 대해서 프로토타입 재사용에 대해서 여러 의견이 있어서 이 내용에 대해서 조금더 설명해보려고 한다. 2011/11/03 - [프로젝트/요구사항분석] - 프로토타입이란? 소프트웨어공학의 목적..

프로토타입이란?

프로토타입 (경제/경영) 양산(量産)에 앞서 제작해보는 원형(原型)을 '프로토타입'이라 하는데, 프로토타이핑이란 개발자들과 사용자들의 의사소통상의 효과를 증진시키기 위하여 취하는 시스템개발상의 기법이다. 일반적인 분석방법을..

같이 일하려면 적어라.

"협업은 말로 하는 것이 아니라 문서로 하는 것이다." 동서고금을 막론하고 개발자들은 적는 것을 싫어하고 또 잘 적지 못한다. 우리나라 개발자들은 그 정도가 훨씬 심하다. 우리나라에서는 회사가 크던 작던 상관없이 대부분 5년..

우리 식대로
우리 식대로 2011/10/30

"우리 식대로" 마치 북한에서 하는 얘기 같지만, "우리 식대로"를 주장하는 소프트웨어 회사는 의외로 많다. 체계가 하나도 없이 완전 주먹구구 방식의 소프트웨어 회사가 있는가 하면 "우리 식대로"를 주장하여 정말 많은 일을..

문서는 얼마나 적어야 할지?

소프트웨어 개발 프로젝트에서 문서는 적게 적어야 한다. 다시 말하면 "보통의 회사에서는 문서는 필요한만큼만 가장 적게 적어야 한다." 물론 문서를 많이 적으면 여러 각도에서 상세히 적기 때문에 중복은 많이 발생하지만 잘못된..