ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NHN은 이렇게 한다! 소프트웨어 품질관리
    2016. 4. 16. comments
    반응형
    NHN은 이렇게 한다! 소프트웨어 품질관리 - 6점
    유석문 외 지음/위키북스


    처음 요리를 하게 되면 간단한 요리를 하게 되더라도 많이 헤매게 된다. 어떤 재료가 필요한지, 그리고 재료들을 어떻게 손질해야 하는지를 모르기 때문에 좋은 결과를 얻기 어렵다. 이런 경우 충분히 친절한 설명과 가이드가 필요하다. 


    이 책은 가장 소프트웨어 품질 관리를 시작하려고 할 때 어떤 도구들이 있고 어떻게 사용하는지에 대한 충분히 친절한 가이드 책이다. 개발 조직에서 코드의  품질을 보장하기 위한 도구 사용의 큰 그림을 보고 싶은 사람이 보면 좋은 책이다. 하지만 CI 운용을 해보거나 품질향상을 위해 여러가지 자료를 찾아보고 시도를 해본 사람이라면 내용 깊이에 대해서 아쉬움이 있을수 있다.



    어떤 서비스나 재화를 생산하는 과정은 ‘정의된 프로세스(Defined Process)’를 따르는 경우와 ‘경험적 프로세스(Empirical Process)’를 따르는 경우로 나뉜다.

    정의된 프로세스는 공장의 생산 라인과 같이 반복할 수 있는 과정을 의미한다. 정의된 프로세스에서는 미리 정의된 절차가 있으며 이 프로세스의 참여자는 절차를 잘 지키고

    지시서를 충실하게 이행하여 반복적으로 같은 제품을 생산한다. 반면 경험적 프로세스는 어머니가 음식을 만드는 과정과 유사하다. 음식이 완성될 때까지 양념을 넣고

    간을 보고 다시 양념을 넣는 과정을 반복한다. 이렇게 피드백을 자주 받는 방식으로 제품을 생산하는 방식 경험적 프로세스라고 한다.


    소프트웨어 개발의 특징과 오해 중에서...



    애자일 방법론은 소프트웨어 개발이 제조업에서 사용하는 정의된 프로세스가 아닌 경험적 프로세스에 더 적합하다고 생각하는 소프트웨어 개발 방법론이다. 단 한 번의 설계와 구현, 테스트만을 거쳐 제품을 출시하는 과정을 거치는 기존의 소프트웨어 개발 방법론이 성공하지 못한 원인을 설명한다.


    첫 장에서 왜 이런 도구들이 필요한지 개발 프로세스와 함께 풀어나가는 내용이 인상 깊었다. 고객의 요구사항은 시간에 흐름에 따라 변화하기 때문에 소프트웨어 개발은 waterfall 모델과 같이 Defined Process에 맞지 않는다. 이런 배경으로 Iterative and Incremental한 애자일 개발을 하는게 효율적인 것이고 각 도구들은 반복적 활동에 큰 도움이 된다.


    코딩 컨벤션, 코드 리뷰, 코드 커버리지, 정적 분석, 사이클로매틱 복잡도


    대부분 협업 조직에서 필요로 하는 도구들이지만, 만약 1인 개발을 하거나 협업을 하지 않는다고 하더라도 코드 커버리지, 정적 분석등은 꼭 필요하지 않을까 싶다.

    품질을 위해서 어떤 도구들을 했고 어떻게 설정하는가에 대해서 나와있지만, 그 후 어떤 변화가 있었는지 그리고 도입 과정에서 어려움은 없었는지와 같은 경험적인 이야기가 포함되지 않은 점이 아쉽다. 방법과 예시는 독자가 각 도구들의 홈페이지에 찾아가도 찾아볼 수 있기 때문이다.


    또한 사이클로매틱 복잡도의 알고리즘이 너무 단순해서 이걸 도입하는게 사실 큰 효과가 있을지 모르겠다. if, if-else, switch와 같은 분기의 개수만으로 코드가 복잡하다고 판단하는게 맞는지 명확하게 이야기 하고 있지 않기 때문이다. 


    마지막으로 NHN에서는 필요한 도구들을 활용하는 것을 넘어서 만드는 모습까지 종종 볼 수 있다. 

    필요한 것을 만들고 활용하는 조직 문화를 고려했을 때 앞으로도 훌륭한 품질 관리를 하지 않을까하는 생각을 해보았다. 

    반응형

    댓글

Designed by Tistory.