최근 IT프로젝트는 업무의 전산화를 넘어 전문지식과 융합, 다양한 고객환경 지원, 보안 등 여러 역할을 요구받고 있다. 이에 프로젝트 규모 및 투입 인원이 더욱 대형화되고 투입되는 기술, 전문지식도 다양화되는 추세다.
개발환경, 고객 요구사항, 기술의 진화 및 프로젝트 규모의 대형화로 인해 프로젝트 수행조직에도 변화가 오고 있다. 대규모 개발자가 담당 전문영역별 조직으로 나뉘어 개발의 각 단계를 개별적으로 수행하며 서로 협업하는 형태로 바뀌었다. 과거처럼 소수의 능력 있는 개발자들로 구성돼 요구사항에서부터 테스트까지 전 단계를 수행하는 형태가 아니다.
이에 따라 개발 도구 및 기반 기술의 세분화·고도화로 인해 사실 특정 전문가에 대한 의존도가 높다. 프로젝트 단계 간의 정보 및 의사 결정에 대한 커뮤니케이션이 단절될 확률도 크다. 다양한 개발 환경으로 개발 표준 준수도 힘들어진다. 부족한 정보에 의한 잘못된 의사결정으로 재작업 발생과 같은 경미한 상황을 비롯해 서비스 오픈 연기 또는 실패와 같은 최악의 상황이 발생할 가능성도 있다.
산업 내 경쟁 심화로 신속한 시장 대응 능력이 요구됨에 따라 프로젝트 개발 주기는 갈수록 단축되고 있다. 이에 프로젝트 오류 위험도도 더욱 높아지고 있어 대응책이 필요하다.
프로젝트 전 공정에서 품질 및 생산성 향상이 성공적인 사업 수행을 위한 핵심 고려사항이 된 것이다. 이를 위해 전 개발공정에서의 관리를 지원할 수 있는 툴을 도입해 이를 해결하는 사례가 늘어나고 있다. 바로 애플리케이션수명주기관리(ALM) 툴이다.
◇ALM, 개발 주기 관리 위한 통합 플랫폼=ALM은 개발 주기상의 모든 활동 즉 △요구사항 △모델링 △개발 △구축 △테스트 △적용 △변경 단계에서의 자동화, 표준화, 협업 지원을 통해 체계적인 수행 및 관리 기반을 조성한다. 프로젝트 공정을 투명하게 보여줘 오류 추적을 가능케 한다.
사용 정보를 누적해 한번 발굴된 좋은 사례를 조직 전반에 쉽게 적용토록 지원하는 역할도 한다. 프로젝트에 잠재된 위험 요인들을 제거해 프로젝트의 생산성 향상과 품질 제고에도 기여한다.
최근 개발 단계에서의 관리 및 효율화뿐 아니라 전체 애플리케이션 수명 주기 관점에서 각 공정의 관리 및 공정 간의 유기적인 연계가 점차 중요해지고 있다. 기존의 단계별로 분리된 개발 지원 도구 형태에서 전체 수명 주기를 관리할 수 있는 통합 ALM 플랫폼으로 전환해야 할 필요성은 점차 커지고 있다.
ALM의 주요 기능 중 하나는 고객이 요청한 요구사항으로부터 도출된 모든 정보 및 산출물에 대한 추적 기능이다. 요구사항이 구현됐는지 일치성을 보장하고 요구사항의 변경 관리를 쉽게 한다. 분석·설계 단계에서 설계 모델 및 데이터의 표준 준수 및 결함 예방 활동을 강제화해 재작업 항목을 줄인다.
뿐만 아니라 분석 결과로부터 설계 모델·소스 코드·환경 변수·빌드 파일 등을 자동 생성한다. 설계 내용과 개발 내용의 일치성을 보장해 개발자의 수작업을 줄인다. 코딩·테스트 단계에서는 반복적인 수작업을 사람 대신 툴이 수행토록 한다. 샘플링이 아닌 코드의 전수 검사와 정량화된 코드 품질 지표 분석을 통해 시스템 소스 코드의 높은 품질도 유지시킨다.
◇ALM 도입을 위한 고려 사항=ALM 도입은 가전제품과 같이 구매 후 설치하는 것만으로 안 된다. ALM 솔루션은 IT 프로젝트에서 일하는 방식의 패러다임 변화를 유도하는 제품이기 때문이다.
첫 번째 고려사항은 개발자 수준에 적합한 사용 난이도다. 소프트웨어개발수명주기(SDLC) 지원을 위한 유명 상용 제품들은 전문가가 아닌 경우 실제 프로젝트에 적용하는데 긴 학습 시간이 필요하다. 대규모의 차세대 프로젝트 등을 통해 새로운 환경으로 IT 인프라 기반을 전환하는 경우에는 더욱 큰 부담으로 다가올 수 있다. 이에 필수 기능부터 전체 흐름과 통합해 단계적으로 제공할 필요가 있다.
두 번째 고려사항은 충실한 개발단계 지원 기능 및 프레임워크와 연계 지원 여부다. ALM 도입으로 생산성 향상과 품질 제고 등 직접적 효과를 체감할 수 있는 영역이 개발 단계다. 개발 단계에서의 비효율성은 자동화된 툴에 의해 제거될 수 있다. 개발자에게 표준 적용 및 설계 연계와 같은 항목들보다 비즈니스 로직에 좀 더 집중할 수 있도록 해 더 높은 생산성과 품질을 기대할 수 있게 한다. 설계-개발 간 정확한 정보전달을 통한 연계성 보장, 개발 환경의 표준화 지원 및 점검, 보안 취약성 탐지·경고 기능은 매우 필수적인 기능이다.
세 번째 고려사항은 신속하고 안정적인 적정 인력 지원이다. 값비싼 솔루션이 기술 지원 인력 부족으로 해당 조직의 요구에 맞게 적시에 수정되지 않아 활용되지 못하는 경우가 많다. ALM과 같이 기존의 일하는 프로세스·방식에 영향을 주는 제품의 경우 도입 조직의 특성에 맞도록 제품 자체를 커스터마이징하거나 프로세스·방법론 교육이 수반돼야 한다. 안정적인 컨설팅, 방법론 전문가 및 기술 인력 지원이 프로젝트 성패의 주요 관건이다.
네 번째 고려 사항은 다양한 환경을 지원할 수 있는 유연한 구조다. 도입 조직이 처한 상황에 따라 다양한 방식으로 전체 ALM 체계를 구상하더라도 제품 수준에서 요구를 반영·지원할 수 있는 구조가 필요하다. 기업이 소프트웨어 형상관리(Software Configuration Management) 등 제품을 보유한 경우 이를 완전히 배제하고 새로운 제품 구성으로 ALM 구축을 강요하긴 어렵다. 비용 및 일정 등과 같은 상황에 따라 프로젝트 일부 단계에서부터 선택적으로 도입하거나 특정 단계에서 타 벤더 제품과 연계가 필요한 경우가 있다. 아직 ALM 벤더들 역시 전체 단계에 대해 전체 세트를 제공하는 경우보다 각 제품들이 서로 상이한 기반 기술 위에서 구현되는 경우가 많기 때문에 유연성과 개방성은 특히 중요하다.
다섯 번째 고려 사항은 ALM 관리 및 사용법 습득 용이성이다. 프로젝트 진행 및 애플리케이션 관리 과정에서 공정별 표준 및 산출물의 일관성 유지가 매우 중요하다. 만약 ALM 도구를 개별 단위 제품으로 구성 시 제품별 업그레이드가 발생돼 버전관리 및 관련 연동모듈 업데이트 등 어려움이 생긴다.
제품별로 상이한 사용환경의 습득으로 인한 사용자의 불편함 및 혼란도 크다. 전체 어플리케이션 수명주기 관리를 지원하는 모든 기능이 라인업된 통합 ALM 제품을 택하는 것도 대안이다.
채조욱 SK C&C 기술혁신센터장(상무)·한국소프트웨어아키텍트연합회장 jwchae@sk.com
관련 통계자료 다운로드 환경 변화로 인한 프로젝트의 부정적인 순환 가능성