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 방법을 추구하고 있다 하는 좋은 자료라 하겠습니다.