2016년 6월 10일 금요일

소프트웨어 공학 국제표준 SEMAT Essence를 JIRA에 구현해 보기



SEMAT Essence라는 소프트웨어 공학 국제표준이 있다.

SW를 개발할때 적용하는 수많은 방법론의 공통적인 핵심부분을 뽑아내서 공통의 기호를 통해 표현하고 각 방법론을 비교할 수도 있게 해주겠다는 야심찬 의도를 가지고 추진하는 국제표준(OMG)이다. Essence에 대해 알게 된지는 2년도 넘었지만 겉핥기 식으로만 알고 있던 상태였는데, 최근들어 회사에 적용하고 있는 개발방법론을 버전업하려고 생각하다가 Essence를 JIRA에 구현해 보면 어떨까라는 생각이 들었고, 실제로 만드는데 성공해서 그 내용을 정리하고자 한다.

JIRA에 구현하려는 마음을 먹게 된 계기는 멤버로 참여하고 있는 BA전문가포럼에서 고맙게도 한글로 번역한 알파상태카드를 받았던 것이었다. 지금까지 Essence의 개념에 감동을 받았지만, 사내에 확산시키기에는 영어로 된 자료밖에 없다는 것이 가장 큰 장애물이어서 펼칠 엄두도 못내고 있던 상황이었다. Essence가 다루는 분야는 매우 방대하지만 그중에서도 핵심이 되는 알파에 대한 것만이라도 한글화가 된다면 실제로 업무에 적용했을때 큰 효과를 볼 수 있을 것이라는 확신이 들었다. 팀 주간 회고시간에 받아온 카드가지고 현재 진행되고 있는 프로젝트들의 상황을 카드놀이 식으로 늘어놓았는데 각 프로젝트별 상황이 깔끔하게 정리되어 보이는 것은 물론이고, 다른 팀원들도 그 상황을 쉽게 파악하는 모습을 보니 큰 가능성을 느낄 수 있었다.

자세한 내용을 설명하기에 앞서 SEMAT에 올라와 있는 참여자들의 의도를 엿볼 수 있는 Call for Action(원문링크)이라는 글을 살펴볼 필요가 있다.

소프트웨어 공학은 지금 미성숙한 실천법(practice)에 의해 중대한 저해(gravely hampered)를 받고 있다. 예를 들어 구체적으로 아래의 항목과 같다.
- 개념의 유행이 엔지니어링(공학 및 기술활동)의 한 분야라기 보다 패션업계와 비슷함.
- 확실히 널리 수용된 이론적 기초가 결여되어 있음.
- 매우 많은 방법론(methods)과 그 파생들. 또한 그것들 사이의 차이를 거의 이해할 수 없는 상태로 작위적으로 강조되고 있음.
- 신뢰할 수 있는 실험적 평가(experimental evaluation)와 타당성 확인(validation)이 결여되어 있음.
- 산업계의 실천법(industry practice)과 학계의 연구(academic research)와의 괴리가 존재함.
우리들은, 견고한 이론 및 검증된 원칙과 베스트 프랙티스에 기초하여  소프트웨어 공학을 재건(refound)하고자 한다.
 그 방법은 이하의 특징을 가지고 있다.
널리 합의된 요소들로부터 특정용도에 확장 가능한 핵심(Kernel)을 가져,
기술의 문제와 사람의 문제 양쪽을 모두 포용할 수 있고,
산업계, 학계, 연구자 그리고 사용자들에게 지지를 받는,
(새로운) 요구사항들과 기술(technology)의 변화에도 대응가능하며,
(표준으로서) 따를 수 있도록 하는 확장성을 제공한다. 
처음 이 글을 읽었을 때의 느낌이 생생하다. 당시 사내에 적용할 개발방법론에 대한 자료를 찾느라 머리가 너무 복잡했던 때라 더 큰 감동을 느꼈다. Essence에 대해 조금이나마 알고나니 '세상에 난무하는 모든 방법론을 하나의 언어로 표현한다는 것이 과연 가능한 일일까?'라는 의문은 깨끗하게 풀려버렸다. 이 사람들 정말 대단하다라는 생각 밖에 들지 않았다.

Essence에 대해 조금만 알아보기로 하자. 실은 나도 아직 정확하게 이해하고 있다고 자신하기는 어려운 상황이기는 하다.


Essence는 가장 핵심적인 개념인 커널을 가지고 있다. 크게 4가지 요소(알파, 액티비티 스페이스, 패턴, 컴피턴시)가 있고 그 중에서도 SW를 개발하면서 어떤 것을 고려해야 하는가를 표현하는 알파가 가장 중요하다. 알파는 7개가 있고 그것들 사이의 관계는 아래와 같다.



각 알파는 그 안에 프로세스처럼 표현되는 상태(state)를 가지고 있고, 각 상태는 완료조건이 되는 체크리스트를 가지고 있다.

상태와 체크리스트는 범용적으로 적용될 수 있는 내용들인데 이 항목들만 잘 챙기더라도 SW개발 프로젝트를 성공시킬 가능성이 매우 높아질 것이라 확신한다. 그간 성공의 법칙은 뛰어난 PM, 아키텍트, 개발자의 머리속에만 있었을 텐데 그 지식들이 세상밖을 튀어나온 것이라 해도 무방하지 않을까?

여기까지 보면 대충 Essence의 알파가 어떤 구조로 되어 있는지 감을 잡을 수는 있을 것이다. 자세한 것은 검색을 해보거나 책을 읽어보거나 표준문서를 직접 읽어 보는 것을 권한다.

파악하기 가장 좋은 방법은 아래의 카드를 입수해서 내용을 읽어보고 카드놀이를 좀 해보는 것일 것이다. 현재는 KOSTA에서 비매품으로 교육생들 대상으로 배포하고 있다. BA전문가포럼 세미나에서 구입할 수 있는 방법이 있는지 물어봤었는데 계획이 없다고 한다. 진가를 느껴보고 싶다면 어떻게든 입수해 보기 바란다.


카드같은 오프라인으로 하는 방법이 기본이겠지만 SW프로그램으로 만나볼 수도 있다.
아래는 아이패드용 앱으로 사용 가능한 Alpha State Explorer라는 앱이다. 영어로 되어 있어 불편함은 있겠으나 알파를 이해하고 프로젝트에 적용해보기 가장 좋은 SW라고 생각한다.

실제로 JIRA에 구현할 때도 이 앱을 레퍼런스 삼아서 비슷하게 구현했다.


글씨가 작아서 잘 보이지 않을 수도 있으나 느낌만 받아도 충분하리라 생각한다.

JIRA에 구현한 내용을 간략하게 설명해 보도록 하겠다.
기본적으로 JIRA Agile Kanban을 사용하고, 이슈타입은 7개의 알파로 생성하고 각 상태를 JIRA의 아이템으로 생성했다. 상태의 완료체크리스트는 커스텀 필드로 만들어서 한글 번역된 카드의 내용을 그대로 타이핑해서 입력해 두었다. Agile board에서 각 아이템을 클릭하면 체크리스트 내용이 표시된다. 화면에 노랗게 보이는 아이템들은 깃발을 올린 아이템들이다. 깃발을 올리는 것으로 상태가 완료되었음을 표시하는 것이 가능하다.

이렇게 만들어 두니 한 화면에서 프로젝트의 진행상황을 일목 요연하게 보는 것이 가능하다. 각 상태들은 JIRA의 이슈아이템이기 때문에 담당자들이 상세내용을 입력할 수도 있고 다른 페이지 링크를 하거나 산출물을 첨부파일로 업로드 하는 것도 가능하다.

아직 실제 프로젝트에 적용까지 해보지는 못한 상태이나 매우 유용하게 사용될 것이란 확신이 든다. 나중에 적용하게 되면 실제 사례내용도 업데이트 할 것이다.

앞으로의 계획은 현재 준비중인 사내 개발방법론2.0의 핵심개념이자 실제로 시스템에서 동작하는 도구로 제공하고 프로젝트 관리에 사용하도록 이끌어 나가는 것이다. 사내 표준으로 승인받아야 하는 과정이야 있겠으나 꼭 설득에 성공해서 실제 프로젝트에 적용해 보고 싶다.







태그 :  , , ,   With No comments 

0 개의 댓글:

댓글 쓰기