본문 바로가기
개발/소프트웨어 공학

소프트웨어 개발방법론 (2)

by re-hwi 2022. 1. 2.

이번에는 전 내용과 이어지는 단원이다. 사실 한단원인데 한번에 쓰기는 너무 길어서 둘로 나눴다. 

애자일 방법론 부터 시작하겠다.

 

애자일방법론

애자일방법론의 정의는 문서중심의 전통적 개발방법을 탈피하여 필요한 요구를 그때그때 더하고 수정하는 코드중심의 점진적 개발 방법이다.

 

음 그 전까지 배웠던 방법과의 차이점으로는 먼저 분석단계에서 완제품을 생각하고 시작하는 방법과 지금 당장의 필요한 것들을 조금 조금씩 추가하여 완성해가는 방법 으로 볼 수 있다. 

 

다음은 애자일방법론이 어떨 때 쓰이면 좋은지, 어느 상황에서는 안좋은지에 대하여 작성하겠다.

 

애자일방법론은 사람과 사람사이의 소통이 가장 중요한 방식이기 때문에 요구사항의 변화가 많거나, 개발자가 소규모일 때, 게임 소프트웨어 등을 개발하는 경우에는 좋은 효율을 낼 수 있지만,

 

팀이 각자 다른 장소에서 작업하거나, 대형 프로젝트를 개발하는 상황에서는 잘 맞지않는다


나는 그동안 코딩을 했을 때에 뭔가 실행은 되긴하는데 코드가 매우 엉켜있고 나조차 왜 실행이 되지? 하는 경우가 많았다.

 

이런 경우에 나는 뭐 되기만 하면 됬지 라는 생각으로 넘어가곤 했었는데 그건 과제를 하기위해 억지로 했거나, 내 개인적인 공부를 할 때였다.

 

실제 개발을 하는데 한명의 개인이 이렇게 해버린다면, 나중에 버그가 발견되었거나 패치를 해야할 때에 팀이 가져갈 뒷감당은 어마어마 할 것이다. 

 

그래서 필요한 기법이 바로 '리펙토링 기법'이다.

 

리펙토링 기법은 겉으로 보이는 것들은 바꾸지 않고 내부구조를 점진적으로 바꾸며 품질을 향상 시키는 방법이다.

 

예를 들자면, 변수의 이름을 조금 더 이해하기 쉽게 바꾼다거나 반복되는 코드를 하나로 묶는다거나 하는 것들이다.

 

이러한 리펙토링 기법을 잘 사용한다면, 나중에 다른 프로그래머가 코드를 변경할 때 쉽게 이해할 수 있고, 버그의 위험성도 줄어들며 일단 코드가 되게 깔끔해진다.

 

리팩토링을 위해 굳이 비용과 시간을 할애할 필요는 없지만, 추후에 있을 일에 대해 대비하는 느낌이라고 생각하면 될 것이다.


다음은 익스트림 프로그래밍 (xp)이다.

 

익스트림 프로그래밍은 애자일 소프트웨어 개발방법중 가장 많이 알려진 방법이다.

 

이 기법의 목표는 소프트웨어의 빠른 개발에 있다. xp는 

  • 의사소통
  • 단순함
  • 피드백
  • 용기
  • 존중

이 5가지의 기초하여 고객에게 최고의 가치를 가장 빨리 전하는 경량 방법론이다.

 

xp는 앞서 언급했던 것처럼 애자일 소프트웨어 개발 방법으로서 고객간의 의사소통이 가장 중요하다. 

 

그래서 고객과 개발자 사이의 소통을 '사용자 스토리' 를 만들어 사용한다.

 

사용자스토리를 쓰는 방법은 글로 표현하면 이해가 안될 수 있으니 표를 첨부하겠다.

 

스토리 ID mj1202 작성일자 2022.01.02
우선순위 추정 1주
담당 개발자 명재휘
스토리 쇼핑몰 회원은 카테고리를 선택하여 카테고리에 속한 상품의 목록을 조회한다.
비고 하위 카테고리가 존재하는 카테고리에는 상품이 포함되지 않는다.
최하위 카테고리를 선택한 경우에만 상품 목록이 조회되어야 한다.

이처럼 스토리카드는 고객이 원하는 기능을 짧게 핵심사항만 작성하여야하고, 해당 기능을 표현하는 키워드를 포함해야한다.

xp개발 프로세스

  1. 사용자 스토리 : 고객이 원하는 시스템의 기능을 간단한 시나리오로 표현한 것
  2. 릴리즈 계획 수립 : 시스템의 개발이 완료되는 시점과 이를 완수하기 위한 일정을 계획한다.
  3. 이터레이션 : 간단히 말해서 릴리즈보다 더 작은 단위이다. 보통 1~3주의 시간이 걸리고 이를 만드는 이유는 단위 시간을 분할하여 정확한 일정 및 비용을 예측하기 위함이다.
  4. 인수 테스트 : 이터레이션에 대한 테스트를 진행한다. 이때는 고객이 직접 테스트 하는걸 권장한다.
  5. 작은 릴리즈 : xp는 작은 릴리즈를 많이 만들어 고객에게 계속 평가를 받으면서 작업한다. 릴리즈에 포함한 이터레이션이 고객에게 인정받으면 그 이터레이션을 가지고 릴리즈를 구축한다.

* 단어 정리 : 릴리즈란 사용할 수 있는 일부분의 시스템이다. 피자를 만들 때 한번에 완성된 피자를 만드는 것이 아니라 한조각 한조각 고객에게 평가를 받으며 만드는 것이 xp 이고 그 피자 한조각을 릴리즈라고 부른다.

더 작은 개념으로는 피자 조각에 들어가는 양념, 토핑을 이터레이션이라고 한다.

 

아직 더 남아있는데 한번에 쓰긴 너무 양이 많아져서 다음에 쓰려고 한다. 원래 2개로 끝낼랬는데 생각보다 양이 이렇게 많을 줄 몰랐다. 글도 계속 쓰니까 힘들어 죽겠다. 빨리 정리하고 오늘은 이번 단원까지만 해야겠다.

반응형

댓글