You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 24 Next »

폭포수모델(워터폴)에서 시작하여 애자일까지 다양한 자료를 통해 정리를 하였습니다.

폭포수모델

폭포수모델은 형식을갖춘방법이다.

소프트웨어를 개발하는질서 정연하고 체계적인방법이다.

폭포수는 나일강을 따라내려가는 여왕의유람처럼복잡하고장엄한 프로세스이며

최종의 목표는 성공이며 규칙이 없는 팀이 처음 적용하기에 도움이될수 있다.

그래서 대개 큰조직에서 소프트웨어를 생산하는데 사용한다.

한마디로 폭포수모델은 프로젝트의 복잡성과 규모를관리하는하나의방법이다.

- 고약한문제 합당한 해결 책중에....

폭포수 모델의 오해

폭포수모델을 이해할때, 대기업 SI프로젝트를 진행하면 따르는 개발모델이기때문에 

SI의 부정적인점과 함께, 폭포수모델을 언급하는경우가 많지만 폭포수 모델은 ,과거(최근까지도)에 성공했던 IT기업들이 성공했던 가장많이 사용한 방식입니다.

SI와 폭포수모델을 분리해서 이해할필요가 있습니다.

SI란

윈도우가 나오기 이전 일반인들에게 IT는, 어떤 기능을 가진 컴퓨터(하드웨어)를 사는 것이었습니다. 그런데 PC는 조립이 간단했지만 기업용 서버는 설치 환경까지 고려해야 하기 때문에 복잡했습니다.

그래서 시스템 통합(System Integration)이란 분야가 등장했습니다. 즉 SI는 초기에 사용자가 요구하는 기능을 가진 하드웨어를 만들어 판매하는 행위였습니다.
업체들은 사용자가 원하는 기능을 만들기 위해 솔루션이나 패키지를 설치하고 필요한 기능을 직접 개발하기도 했습니다. 그런데 하드웨어가 발전화되면서 표준화되고 소프트웨어의 비중이 커지게 되자

SI는 자연스레 소프트웨어 개발 아웃소싱을 지칭하는 말이 되어버렸습니다. 초창기 SI시장은 대부분 수작업을 전산화하는 경우로 ‘불확실성’이 적었습니다. ‘주민등록 관련 업무’나 ‘회계 업무’ 등을 생각하시면 됩니다.

오랫동안 반복적으로 해왔던 업무이므로 기성품을 선택하거나 기능을 새로 만들기도 어렵지 않았습니다. 그리고 납품되고 나면 소프트웨어 변경이 거의 필요없었습니다.

이후 IT가 발달하자 온라인 비즈니스가 중심에 서기 시작했습니다.

기존에 없었던 새로운 일들을 바로 시스템으로 만들게 됩니다. 어떤 비즈니스는 매일 변화가 필요합니다. 인터넷 쇼핑몰, 인터넷 뉴스 서비스, 인터넷 뱅킹 서비스 등을 생각하시면 됩니다.

그래서 이 시스템들은 매번 개발자들의 손이 필요합니다. 사업 환경이 수시로 변하다보니 ‘설계 후 개발’을 하는 것도 어려워 졌습니다. 또한 개발이 완료되어도 종료라고 보기 힘들어졌습니다. ‘불확실성’이 높아진 것입니다.

참고링크 : https://okky.kr/article/499014

폭포수 모델의 논리적 근거

소프트웨어 개발에는 반드시 필요한 하위 목표가 있다. 하나의 단계를 성공시키면

배열된 다음 목표를 성공시켜나간다. 이렇게 배열된 맨 마지막 순서가 바로 성공이다.

또한 수행하는 업무를 전문적으로 만들며, 전문적인 롤이 폭포수모델의 단계와

일치한다. 경험정도도 반영되는데 일반적으로 초기에 경험많은 고참(착수,요구사항분석)이

참여하고 다음이 중간레벨(분석,설계) 그다음 직원이 코딩,유지보수등의 업무를 수행한다.

상위 절차가 중요며 일반적으로, IT직군은 다음 역활을 수행한다.

  • PM : 변화는 곧 리스크이기때문에, PM의 역활이 중요합니다. WBS를 통해 리스크관리를 합니다.
  • 기획 : 비지니스 요구사항을 잘정리하여 변경없는 문서를 만들어야합니다. 요구명세가 완성된후에 개발 착수가 가능합니다.
  • 설계 : 경험많은 숙련가 요구명세를 바탕으로 설계를 진행합니다.
  • 구현/QA : 구현자는 주로, 코드로 분류됩니다. 

규모에따라 PM+기획 / 설계+구현 동일 사람일수 있지만 절차적인 흐름에는 큰 변화가 없으며 직군이 분리됨에 따라 더 전문성을 가질수 있습니다.


폭포수모델역시 초기모델의 단점을 극복하고자 변형되어 소용돌이 모델/점진적 모델/나선형등 다양한 개발모델들이 등장하지만

애자일이란 큰 변화가 발생하지만, 폭포수모델의 단점을 극복하려는 수많은 개발모델들은 애자일의 기원으로 볼수 있습니다.

애자일 선언

2001년, 소프트웨어 업계를 주도하는 17인의 리더들이  모여 다음을 선언하였다.

  • 공정과 도구보다 개인과 상호작용을 
  • 포괄적인 문서보다 작동하는 소프트웨어를 
  • 계약 협상보다 고객과의 협력을 
  • 계획을 따르기보다 변화에 대응하기

애자일이, 긴민함/민첩함 이란  형용사적 단어적 의미가 아닌, 애자일 선언문의 가치와 원칙을 실천하는 마음가짐이나 방법을 말한다.


키워드로 살펴보는 애자일맵


우리의 시장상황

우리의 시장은 과거와는 달리 변덕스럽고,불확실하며,복잡하고 모호하다

폭포수 모델이 규모를 다루는 방법이 였다라고 하면

애자일은 변화를 만들고 변화에 대응하는 능력이며, 불확실하고 급변하는 환경에서 궁극적으로 성공을 거두기 위해 그 환경을 다루는 방법이다.

애자일의 기원

다음은 1950년 애드워즈 데밍이 한 이야기이다.

‘품질향상은 실질비용을 낮춘다’고 말했다. 또한 그는 “생산라인에서 가장 중요한 요소는 소비자다.

소비자를 만족시켜 주는 일이 회사의 모든 사람들이 해결해야 할 최우선 과제이다.

모든 직원들이 자기가 만든 제품의 품질에 대해서 스스로 책임을 지는 품질 책임체제를 구축해야 한다. 기

업의 수익은 제품과 서비스에 만족하고 이를 지속적으로 구매하는 단골고객으로부터 나온다.”라고 말했다.

품질과 관련한 , 현재는 당연한 이야기인것처럼 보이지만, 1950대에 위 이야기는 미국에서 무시가되었으며

오히려 일본기업인 도요타,소니,혼다등이 데밍의 이야기를 따르며 제조업에서 미국을 앞지르기 시작했으며 부흥기를 맞게되었다.

일본에서 데밍상이 생겨났으며, 추월당한 미국이 일본을 다시 연구하기 시작한다. 이 이야기를 소개하는 이유는,

애자일에서 선언하는 가치와 닮아 있으며 애자일이 2001년 갑자기 생겨난 새로운 이야기가 아니라

제조업에서 그동안 축적된 문화와 철학이 소프트웨어 개발에도 영향을 주기 시작했다란 것이다.


품질은 우리가 경쟁사로부터 살아 남을수 있는 마지 기회이다.

  •  웰치

더자세한 이야기 : https://steemit.com/kr/@loum/w


애자일 인식 뿌리 - 소프트웨어

소프트웨어 개발 중에 고약한 성질을 품은 문제를 만났을 때 그를 합당하게 해결하는 방법을 찾아나가고 있다.

주로 사용되는 폭포수 모델의 개괄적 원리를 설명하면서,  고약한 문제를 해결하는 데 부족함을 보여준다.

폭포수 모델의 변종인 소용돌이 모델 등에 대해서도 살펴보고 있다 나아가 폭포수 모델을 극복하기 위한 프로토타이핑 등 대안적 모델을 정의하고 찾아간다.애자일 인식의 뿌리가 되는 고서이며

폭포수모델의 문제를 해결하기위해, 폭포수 모델을 이해 해야하는것은 당연하다.

고약한 문제는 해결책이 문제의 공간 안에 있는 문제를 일컫는다. 즉 문제가 완전히 풀려야 비로소 그 문제가

무엇인지 완전히 이해되는 그런 문제다. 반면 그 반대편에는 합당한 문제가 있다. 합당한 문제는 정의할 수 있

고, 이들에 대한 데이터를 수집해서 분석할 수 있으며, 해결책을 낼 수 있는 문제다. 마치 폭포수 모델의 시원한

절차처럼 말이다.

소프트웨어 개발 프로젝트에서 어떤 결과를 내는 데 필요한 정보를 제공하거나 체계화하는 것은 컴퓨터가 중심

인 것처럼 보이지만 사실 사람이 중심에 서 있다. 그리고 태생적으로 야기되는 불확실성의 문제는 그 정형성을

이루는 데 반드시 있어야 하는 객관적이고 명료한 기준을 세우기 어렵게한다.

기술중심/이익중심도 중요하지만, 결국 소프트웨어의 문제를 푸는것은 사람이며 사람을 중심에 놓고

문제를 해결하려는 이야기는 "Wicked Problems Righteous Solution" 30년도 더된 IT고서에서 이야기를 하고있으며

애자일의 뿌리가 되는 내용입니다.


링크 :

메타인지와 애자일

문제를 팀이 정의를 하고 해결해나가는 힘을 키우는것은 , 개개인의 성장과함께 일정수준이 되어야함을 의미한다.

이것은 메타인지와 연관이 있을수 있다. 탑다운의 정형화된 폭포수모델에서는 대부분의 중요문제는 상위에서만 정의를 하였다. 

반대로 이야기하면, 정보가 거의 없을 초기시점 그러니까 우리가 정보를 가장 모르는 초기시기 숙련된 경험자만이

설계단계에서 문제정의를 하였다. 애자일에서는 가장 모르는지점 감으로 문제정의를 모두내리는것에 대한 리스크를 이야기하며

애자일을 하기위해서는 팀구성원 모두가메타인지 능력을 사용해서 지속적인 문제정의와 해결방법을 찾아가야 하며

팀의 공유된 메타인지(shared meta-cognition)라고 부르기도합니다.


DDD와 애자일

소프트웨어가 일반적으로 복잡해지는 이유는, 우리가 사용하는 기술자체의 복잡성 때문이 아니라

우리가 가진 도메인 자체의 복잡성에 기인하며, 도메인을 중심에 놓고 도메인 전문가 까지 

모델을 만드는 단계에 참석을 시키는, 개발문화의 변화와 성숙에 대한 도전 과제로이야기가 이어집니다.


DDD를 하기위해서는 애자일이 필요하다.  애자일이 좋은 소프트웨어를 만들기위한 가치와 마음가짐을 포함

방법론을 이야기한다고 하면  DDD는 그것을 실천하기위한 구체적인 전략/전술을 이야기하며 애자일의 코어영역과 상당수 일치한다.

애자일의 오해

  • 구성원들이 일을 지금보다 빨리해서 결과물이 빨리나오길 기대하면, 그것은 애자일이 아니라 스피드이다. 팀이 지시를 받아 수동적으로 움직이는게 아니라 권한을 위임받아 주변 환경 변화에 스스로 민첩하게 대응할수 있게만드는것이 애자일이다. 사실은 변화에 대응하여 우리의 프로덕트가 살아남을수 있을까? 생존과 관련된것이다.
  • 선거제도(애자일 프랙티스)만 있다고 민주주의 국가가 아니지만, 애자일 프렉티스를 작게 수행하다보면 애자일이 어디쯤 있는가? 가늠은 할수 있다.
  • 애자일 마인드셋과 환경제공을 하는것 'Being Agile'은 탑다운에서, 실천하는 'Doing Agile' 은 바텀업을통해 균형을 이루어질때 작동된다. 
  • 애자일을 하면서 생기는 문제가 애자일때문이 아닐수 있다. 원래 드러나지 않았던 고약한 문제이며 애자일을 통해 발견할 가능성이 더 크다.
  • 애자일에 숙련되기전 애자일을 위한 조직변경은 추천되지 않는다. 애자일을 하면서 성숙도가 생기면 스스로 팀이 어떻게 구성되야 효율적일지 생각하게된다. 좋은 애자일팀은 변경이되는것이 아니라 오래 지속된다.
  • 자율성을 준다고하여, 마음대로 하는것을 의미 하지 않는다. 책임이 따르게 되며 , 책임에는 더 높은 수준의 개인역량과 활동이 필요할수 있습니다. 애자일을 워라벨로 생각하면 큰 오산이며. 오히려 애자일을 너무 열심히 한나머지 번아웃이 올수 있음을 경고하고 있다.


기존방식의 변화

기획 - UI/UX는 디자이너에게 맡기세요

모든것(UI/UX/작동방법)을 표현하지말고 중요한것(요구사항분석,스토리보드,플로우)을 이야기할것

빈틈없는 정교함보다 심오한 간결함을 유지하고, 지속 업데이트 

링크: https://brunch.co.kr/@cysstory/163

PM - WBS를 바라보는 인식과 개선

핵심은 작업에 있지 않다는것입니다. 가치를 어떻게 인식하느냐입니다.

https://ichi.pro/ko/wbsneun-ij-eo-beoliseyo-agileeseoneun-vbsga-pil-yohabnida-214235113856846


우리는 어떤 설계를 하고 있을까? 우리는 설계대신 "작업 보드 셔플" 이라는것을 진행하게되며

할일과 작업중 그리고 완료로 이어지는 작업의 아이템 변화과정을 지식 집약적인 일의 전부로 여기고

나머지는 프로그래머가 소스를 쏟아내기만 하면 된다라고 생각한다. 

이는 잘 드러나지도 않고, 존재하지도 않는 설계에 엄청난 비지니스 비용을 쏟아붓는일이다.

좋은 설계의 다음 대안은 나쁜설계이다.  이 문구의 요점은 설계를 절대하지 않는것에대한 이야기이다.

처음부터 좋은 설계를 할수 없으며, 이것이 좋은지,나쁜지 판단할수가 없다.

나쁜설계를 시도하고, 효율적인 설계를 어떻게 할지 설계에대한 고민을 시작하란의미이다.

설계가 없는것은 지식획득이라는 중요한 것을 놓치고 ,큰 진흙 덩어리를 계속 만들어 내게되며 

소프트웨어 개발을 이익중심이 아닌 원가 중심으로 생각하는 비지니스 문화가 확고한 경우 설계문화가

생겨날수 없다란것을 경고도 하고 있다.  -도메인 주도 설계중에


wbs 방식이 구식인건 맞는데... 근데 그래도 산업군에 따라 그런 방식이 필요합니다. 고객에 의한 “가치 폭주 현상”이 발생합니다.
피드백을 통해서 자기도 기여한다고 느끼는 고객이 자신의 가치를 가지고 지나친 피드백을 해서 불필요한 품질상태를 만들기도 하니까요. 그래서 고객의 피드백을 제동해야할 때가 있습니다.
가치가 어디로 향해야 하는지는 결국 애자일 조직 리더의 몫이니까요.
Quality is value to someone.
- Gerald Weinberg

PM - 모든것을 디테일하게 챙기기

개발을 어떻게할지도 결정하지도 않았는데 , 개발이 언제까지 완료되고 디자인은 언제까지되고...

https://fb.watch/5i7SaKJfwr/


유연함

  • 계속되는선이,연되는 완벽함보다 낫다. 시 선도자는신을상적인 것으로 만드는 법을 배워야한다. -마크 트웨
  • 변경을용하지 않는 것은 나쁜획이다. - 볼릴리우스 시루스

  • 최종사용자와 의사소통에서 생기는 틈 : 폭포수 모델의 생명주기는 진열대를 돌아다닐 기회도 주지 않고 슈퍼마켓 입구에서 고객이 점원에게 완벽하게 주문하도록 강요하는 슈퍼마켓과 비교할수 있다. (진열대를 돌아다니면, 가격을 비교할수도 있고, 쇼핑 목록에 없는 항목을 기억할수도 있고, 그냥 외식하러 가기로 결정할수도 있다. -맥크래켄


도메인 발견의 가속화

더 자세한 자료 : http://wiki.webnori.com/m/view-rendered-page.action?abstractPageId=39583888


개발방법론의 선택

  • 규모와 문화와 처해있는 상황이 비슷한 회사의 성공방법을 따라할것인가?
  • 우리만의 새로운 방법을 찾아서 그들보다 앞서 나갈것인가?

위 두가지가 있을때 무엇을 선택할것인가? 당연히 후자쪽일것이다.

애자일 도입으로 성공한 기업의 케이스도 많지만. 실패하는 기업의 케이스도 꽤 있다.(실패는 알려지지 않기때문에)

우리만의 워터폴을 만들어가는것도 좋은 대안이 될수 있으며

애자일과 같은 개발방법/프로세스에 얽매이지 않는 Shape UP의 방식을 살펴보는것도 도움이 될것이다.

꼭 애자일이여야하나? 우리만의 방식 찾기

Basecamp 의 개발 프로세스 - Shape Up 요약정리

소프트웨어팀이 성장하면서 유사한 문제점들이 생겨난다.

- 팀원들은 프로젝트가 끝없는 행군처럼 느껴진다.

- 프로덕트 매니저들은 프로덕트에 대해 전략적으로 생각할 시간을 낼 수가 없다.

- 창업자들은 자문한다. 왜 우리는 예전에 했던 것처럼, 신속하게 기능을 출시할 수가 없을까?

우리는 4명에서 50명으로 늘어나면서 이런 문제에 직면했다.

사람 수가 늘어나면서, 창업자들의 직관을 전달하기가 어려워졌다. 그래서 새로운 스케일에 맞는 구조가 필요했다. 

6주 사이클.

새 스케일에 맞는 매니지를 위해, 프로젝트 길이가 그때그때 달랐던 것에서, 반복적인 사이클로 변경했다. 6주는 뭔가 의미있는 것을 만들기에 충분히 길었고, 마감일이 눈앞에 보이기 때문에 시간을 효과적으로 계획하게 만들었다. 

우리의 의사결정은 시간을 마이크로매니지하는 것이 아니라, 다음 6주간 제품을 어떻게 발전시킬 것인지에 대한 것이 되었다.우리는 개별 기능에 몇시간을, 또는 며칠을 썼는지 세지 않았고, 일일 미팅도 하지 않았다. 우리의 로드맵을 2주마다 새로 생각하지 않았다. 우리의 촛점은 좀 더 상위에 있었다. 우리는 스스로에게 얘기했다. "이 제품이 6주 후에 업데이트되면 우리는 시간을 잘 쓴게 될 거야". 이후에 우리는 6주를 팀에게 보장하고, 해내도록 내버려두었다.

BaseCamp의 주요지표

기업은 경쟁을 좋아한다. 밟고 이기고, 1 or 0으로 만들길 원한다.

우리는 그렇지 않다. 나는 다른 누군가와 경쟁하는 것에 흥미가 없다. 그리고 우리는 경쟁적인 관점에서 결정을 내리지도 않는다.

내게 비즈니스란 경쟁과는 무관하다.

시장에선 HEY(Basecamp가 만든 이메일 서비스 - hey.com)가 Gmail과 경쟁한다고 생각할 수 있지만 사실 그렇지 않다.

Gmail의 사용자는 거의 20억 명에 이르는데 그 중 0.01% 정도의 사용자만 우리를 사용한다 해도 정말 운이 좋다고 말할 수 있다.

Gmail의 시장 점유율은 약 40% 정도인데 반해 HEY는 시장 점유율이란 레이더에서 보이지 않는 수준이고 Gmail이 전체 이메일의 약 27%를 차지하는데 비해 아마 HEY는 앞쪽에 0이 한참은 붙어 있다.

즉, 이렇게 비교하기 시작하면 우리는 계속 지는 게임을 하고 있는 게 되는 셈이다.

말 그대로 패배자다.

그래서 우린 승패를 별로 생각하지 않는다. 경쟁은 스포츠를 위한 것이지 비즈니스를 위한 것이 아니다.


링크 : 






  • No labels