DoD와 Agile
미국 국방성 (DoD: Depart of Defense) 은 역사적으로
software의 발전에 있어 큰 역할을 해 왔고
또한 software 기술이 국방성의 업무 수행에 절대적으로
중요한 역할을 하고 있습니다.
각종 군수 장비 및 무기체계의 개발과 운영에 있어
software의 비중은 점점 더 커지고 있지요.
국방성의 Defense Science Board에서 2018년에 나온
보고서에 따르면, 중요 과제를 수행함에 있어서 software가
매우 자주 핵심적인 문제거리가 되고 있고
위험성의 60% 정도를 차지한다고 합니다.
국가의 안보까지가 점점 더
software에 의존하게 되는 것이 현실입니다
미국 국방성의 software라고 하면 우선 연상되는 것으로
CMMI (Capability Maturity Model – Integrated)가 있습니다.
우수한 software를 개발하기 위하여는
그 개발 조직의 역량이 높아져야 하니까
개발 절차와 산출물들을 세밀하게 정의해 놓고
그 표준을 얼마나 철저하게 잘 지키는가 하는
정도를 수치로 평가하는 체계입니다.
wterfall 방식을 철저하게 체계화한 형태로
복잡한 절차와 많은 문서화 작업 때문에
개발에 있어서의 부담이 엄청났었고,
이에 대한 반작용으로 Agile 개발 기법들에 대한
다양한 시도들이 이루어지게 되었습니다.
군사용 장비라던지 항공기, 군함, 인공위성, 무기체계 등
고도의 복잡성과 신뢰성을 요구하고 오랜 기간이 걸리는
software를 개발하기 위하여는
보다 정형화된 전통적 관리체계가 필요할 듯도 합니다.
그런데 국방성의 개혁을 위한 자문기구인
Defense Innovation Board (DIB)에서는
software 구매에 있어서 반드시 지켜야 할 10계명을
2018년에 다음과 같이 제시했습니다.
그 내용 중 몇 가지를 보면
Agile 개발 방법을 명시하고 있음을 알 수 있습니다.
…
2. 모든 software 구매는작게 시작해서,
성공을 기반으로 반복적으로 진행되어야 한다
3. 구매 절차는 완전하고 반복적인
software life cycle을 지원해야 한다
4. software system의 DevSecOps
(Development – Security – Operation)을 채택하라
5. 중대한 수정이 몇달이나 몇년이 아니라
며칠 내지 수주 내로 가능할 수 있도록
software testing을 자동화 하라.
…
또 DIB에서는 왼쪽에 있는 자료와 같이
“Agile 헛소리를 판별하기”라는 문서도 제시하고 있습니다.
여기에 보면
“Agile이 software 개발에 있어 유행어가 되어,
요즈음은 국방성의 모든 software 개발 과제들이
거의 관행적으로 ‘agile’이라고 선언되고 있다” 라고 전제를 하면서
진짜 agile 개발방법을 사용하는 경우와
무뉘만 agile 인 경우 (“agile-scrum-fall”)를
판별할 수 있는 지침을 제시하고 있습니다.
예를 들면 개발자들이 사용자들과 대화가 없거나
사용자들로부터의 feedback이 없다면 문제라는 겁니다.
이 문서는 미 국방성에서도 software 개발에 있어
Agile 방법을 추구하고 있다 하는 좋은 자료라 하겠습니다.
그리고 위에 언급된 10계명에 따라 국방성이 Software 구매와
개발에 있어 고쳐야 할 점들 나아갈 방향들을 제시하고 있습니다 .
예를 들면 매우 상세한 요구 규격을 개발함에 2년 여를 소비하지 말고
개발자들과 실제 사용자들이 모여서 작게 개발을 시작하고
유용한 SW를 빨리 인도하는 걸 반복하라는 겁니다.
또한 성공의 정의를 요구 규격의 100% 만족보다는
70% 정도의 수준을 짧은 시간에 (몇 달 정도 안에) 달성하고
기능을 보완해 나가는 작업을 빠르게 (주 단위로) 반복할 것을 권장합니다.
그리고 절차의 준수를 강제하기보다
SW에 전문성을 가진 역량 있는 인력을 채용하여
절차 보다는 역량을 중시할 것을 강조합니다.
SW 개발에 있어 비용과 일정, 그리고 성과를 관리할 지표들도
제시하고 있는데, 전통적인 경우와 비교하여 큰 차이들이 있습니다.
과제의 착수에서부터 간단하되 유용한 기능을 처음 배포하기 까지의
기간이 통상 3~5년이 소요되고 있는데
이를 1개월 내지 1년 이내로 단축하라는 겁니다.
중요한 기능을 규격 정의에서 운영까지 걸리는 기간이
1년 내지 5년인데 이를 3개월 이내로,
새로이 발견된 보안 문제를 수정함에 걸리는 기간이
1개월 내지 18개월이 걸리는데 이를 1주 내로 줄이라고 합니다.
이런 모든 개선 사항들은 전통적 waterfall 방식을
Agile 방법으로 바꿀 것을 강하게 권장하고 있는 겁니다.