정보시스템 구축관리 1강. 개발 방법론과 프로세스 개선
좋은 사람을 모아 놓으면 좋은 소프트웨어가 나올까요. 1980년대 미국 국방부는 아니라고 답했습니다. 사람이 아니라 과정을 관리해야 한다고요.
풀고 시작
방법론은 개발의 문법입니다
소프트웨어 개발 방법론은 개발 절차와 산출물과 기법을 하나로 묶은 체계입니다. 저마다 시대의 문제의식을 담고 태어났죠.
구조적 방법론은 1970년대의 답이었습니다. 프로그램을 기능 단위로 나누고 위에서 아래로 쪼개 내려가는 하향식 접근이며, 자료 흐름도를 주요 도구로 씁니다. 정보공학 방법론은 기업 전체의 데이터를 중심에 두고 정보 시스템을 계획부터 구축까지 설계합니다. 객체지향 방법론은 데이터와 기능을 객체로 묶어 재사용성을 높였고, 컴포넌트 기반 방법론(CBD)은 이미 만들어진 부품을 조립하는 방식으로 개발 기간을 줄였습니다. 애자일 방법론은 문서보다 동작하는 소프트웨어를, 계획 준수보다 변화 대응을 앞에 둡니다.
방법론을 그대로 쓰는 일은 드뭅니다. 프로젝트의 규모와 기술과 조직에 맞게 절차와 산출물을 덜어내고 더하는 작업을 테일러링(tailoring)이라고 합니다. 내부 기준으로는 목표 환경과 요구사항과 프로젝트 규모를, 외부 기준으로는 법적 제약과 표준 품질 기준을 고려합니다.
만든 것을 다시 씁니다
새로 만드는 것보다 있는 것을 쓰는 편이 싸고 빠릅니다. 그래서 재사용이 방법론의 중요한 축이 되었습니다. 함수와 객체 단위로 재사용하는 방식, 여러 모듈을 묶은 컴포넌트 단위, 아예 시스템 전체를 다른 환경에 적용하는 방식으로 나뉩니다.
이미 있는 시스템을 되살리는 일도 있습니다. 재공학(reengineering)은 기존 소프트웨어를 분석하고 수정해 유지보수성을 높이는 활동으로, 분석과 재구조화와 역공학과 이식의 단계를 밟습니다. 여기서 역공학(reverse engineering)은 완성된 소프트웨어에서 거꾸로 설계와 명세를 뽑아내는 일이죠. 개발 방향이 정반대라는 점만 잡으시면 헷갈리지 않습니다.
성숙도는 조직의 실력입니다
1980년대 미국 국방부는 소프트웨어 납품 지연에 시달렸습니다. 원인을 조사한 카네기멜런 대학의 결론은 뜻밖이었습니다. 문제는 개발자의 실력이 아니라 조직이 같은 일을 같은 품질로 반복하지 못하는 데 있다는 것이었죠. 여기서 나온 것이 능력 성숙도 모델, 오늘날의 CMMI입니다.
| 단계 | 이름 | 상태 |
|---|---|---|
| 1 | 초기 | 정해진 절차 없이 개인의 역량에 의존한다 |
| 2 | 관리 | 프로젝트 단위로 절차가 관리된다 |
| 3 | 정의 | 조직 표준 프로세스가 정의되어 있다 |
| 4 | 정량적 관리 | 프로세스를 수치로 측정하고 통제한다 |
| 5 | 최적화 | 지속적으로 프로세스를 개선한다 |
SPICE(ISO 15504)도 함께 나옵니다. 프로세스 전체를 한 등급으로 매기는 대신 프로세스마다 수준을 매기며, 불완전부터 최적화까지 여섯 단계를 씁니다. CMMI는 다섯 단계, SPICE는 여섯 단계라는 숫자 대비가 그대로 문제가 됩니다.
생명주기 표준인 ISO 12207도 알아 두세요. 개발과 운영과 유지보수를 아우르는 기본 생명주기 프로세스, 문서화와 형상 관리 같은 지원 프로세스, 관리와 교육 같은 조직 프로세스로 나뉩니다.
이제 방법론과 성숙도의 틀이 잡혔으니, 다음 강에서는 실제 프로젝트를 굴리는 데 필요한 비용 산정과 일정 관리를 봅니다.
인출 문제
생각해볼 질문 (정답 없음)
성숙도가 높은 조직은 예측 가능한 대신 느릴 수 있습니다. 절차의 엄격함과 변화의 속도 중, 지금 우리 시대는 어느 쪽에 더 값을 매기고 있을까요.
이전: 4과목 5강 운영체제와 네트워크 기초 · 다음: 2강 비용 산정과 일정 관리