기존에는 만들어야 할 시스템의 요건을 모두 정한 후에 개발을 시작하는 '워터풀형 개발'이 주류였지만, 이 방법으로는 대응할 수 없는 사태가 늘고 있습니다. 그래서 주목을 받고 있는 것이 애자일 개발입니다.
워터풀형 개발에서는 '전부 만드는 것'을 전제로 하여, 사용자의 요건이 모두 정해지지 않으면 개발에 착수할 수 없습니다. '반드시 사용한다', '사용할 것 같다', '장래에 사용할지도 모른다' 등을 고려하여 사양을 굳혀 갑니다. 개발은 기능 단위로 진행하는데, 기능이란 입력 화면, 장표 인쇄, 집계 등 일련의 업무처리를 구현하는 부품입니다. 이러한 것을 나눠서 만든 후 나중에 모두 연결하여 처리의 흐름을 만듭니다.
따라서 모든 기능을 완성시키고 연결하기 전까지는 현장 사용자에게 사용해 보라고 할 수가 없습니다. 또한, 만들기 시작하면 도중에 변경하는 것이 어려우며, 일단 전부를 다 만드는 것이 우선시됩니다. 변경이나 품질 보증은 코드를 전부 다 쓴 마지막에 확인하고 대처해야 합니다.
한편 애자일 개발은 '전부 만들지 않는다'는 것을 전제로 합니다. 이 점이 워터풀 개발과 본질적으로 다른 점으로, 애자일 개발은 '업무상 필요성이 높은 프로세스를 선별하여 우선순위를 정하고, 정말로 사용할 업무 프로세스만 만들자'라는 개념입니다.
여기서 말하는 업무 프로세스는 '출하 지시 버튼을 누르면 창고 출하 전표가 인쇄되어 출력된다', '경비 전산 장표에 데이터를 입력하면 경리 부서에 데이터가 전달된다'와 같이 하나로 연결된 업무의 흐름입니다. 이를 '업무 수행하는 데 있어서 중요도가 높은 순서'로 우선순위를 정해 순차적으로 개발해 갑니다. '필요한지 아닌지 모르겠다', '있으면 좋을지 모르겠다'라는 만들지 않는 것이 좋습니다.
하나의 업무 프로세스는 1~2주일 정도에 개발할 수 있는 규모로 하여 대략의 개발 기간과 필요한 인원을 계획하여 개발을 시작합니다. 그리고 '반복형 개발(Iterative Development)'나 '지속적인 통합(Continuous Integration)이라는 기법을 사용하여 비즈니스 요구에 즉시 대응하고 있습니다.
※ 오늘은 소프트웨어 공학의 기초인 '애자일 개발'에 대하여 알아보았습니다.
이 포스트는 학부에서 제공하는 기본적인 컴퓨터, 소프트웨어 공학 강의와 책들을 토대로 알기 쉽게 내용을 작성하였습니다. 하지만 계속 더 유익하고 논문 및 전문 서적을 읽어가며 더 추가돼야 할 내용이 있으면 컴퓨터, 소프트웨어 공학,프로그래밍 포스트와 콘텐츠들을 계속 고도화하는 방식으로 진행하려고 합니다.
'소프트웨어 공학' 카테고리의 다른 글
[소프트웨어 공학] 소프트웨어 공학과 컴퓨터 과학의 차이점은 무엇인가? (0) | 2019.10.14 |
---|---|
[소프트웨어 공학] '소프트웨어 공학'이란 무엇인가? (0) | 2019.10.14 |
[소프트웨어 공학] '소프트웨어'란 무엇인가? (0) | 2019.10.14 |
[소프트웨어 공학] 애자일 개발의 장점 (0) | 2019.10.02 |
[소프트웨어 공학] TDD (Test Driven Development) (0) | 2019.10.01 |