ALM
태그 :
- 개념
- •비즈니스 요건 관리 부분과 실제 소프트웨어 개발 프로세스를 융합 하고 자동화 툴을 이용하여 개발에 필요한 활동들을 관리하도록 하는 소프트웨어 관리 체계 •소프트웨어 개발의 요구사항 관리 및 아키텍처, 코딩, 테스트 그리고 이슈 추적과 릴리즈 관리 등 모든 과정에 전문화된 도구를 이용하여 소프트웨어 개발 프로세스를 개선하는 체계 •소프트웨어 개발의 전체 주기, 즉 요구 사항 수집에서부터 모델링, 프로그래밍(개발), 형상관리 그리고 테스트 및 프로젝트 관리에 이어지는 소프트웨어 개발의 전 과정을 체계적으로 통합하고 시각화해 관리하기 위한 접근방법
1. 소프트웨어 개발 프로세스 개선을 위한 ALM의 개요
가. ALM(Application Lifecycle Management)의 정의
- 비즈니스 요건 관리 부분과 실제 소프트웨어 개발 프로세스를 융합 하고 자동화 툴을 이용하여 개발에 필요한 활동들을 관리하도록 하는 소프트웨어 관리 체계
- 소프트웨어 개발의 요구사항 관리 및 아키텍처, 코딩, 테스트 그리고 이슈 추적과 릴리즈 관리 등 모든 과정에 전문화된 도구를 이용하여 소프트웨어 개발 프로세스를 개선하는 체계
- 소프트웨어 개발의 전체 주기, 즉 요구 사항 수집에서부터 모델링, 프로그래밍(개발), 형상관리 그리고 테스트 및 프로젝트 관리에 이어지는 소프트웨어 개발의 전 과정을 체계적으로 통합하고 시각화해 관리하기 위한 접근방법
나. ALM의 등장 배경
- 기존 SW개발 프로세스의 한계 : 다양한 소프트웨어 공학 이론 및 도구들이 존재 하나 학문적 완성도는 높지만 실제 개발 현장에서 적용 어려움
- 프로젝트 관리의 어려움 : 거시적인 방법론은 자세한 Task 관리 프로세스에 대한 정의 미비, Agile의 경우 Task 관리 전략이 제시되어 있지만 전체 일정관리, 프로젝트 관리의 어려움 존재
- 추적관리의 어려움 : 요구 사항으로부터 실제 코드의 변경과 이력, 구현까지 일관된 추적관리 어려움
- 프로세스 일관성 유지 어려움 : 요구 사항관리와 아키텍처, CASE Tool, 산출물, 코드관리, 일정관리 등이 각기 다른 제품과 다른 프로세스로 구현되어 일관성을 가지기 어려움
ALM의 주요 특징
특징 |
설명 |
유기적 통합 |
개발 전과정 중에서도 코딩, 단위/통합테스트에 집중 |
이슈기반 통제 |
위험 조기제거 및 이슈추적을 통한 작업관리 및 통제 |
개발방법론과 통합 |
개발 주기간의 유기적인 통합을 통한 생산성 및 품질 향상 |
프로세스 자동화 |
어플리케이션 생명주기 전 공정을 관리하는 자동화된 프로세스 구현 |
2. ALM의 기능 구성도 및 구성별 주요 내용
가. ALM의 기능 구성도
- 고객, PM, 개발자간의 ALM 기반의 요구사항의 상호 유기적, 효과적 의사소통 및 관리활동이 가능해짐
나. ALM의 구성별 주요 내용
주요 구성 |
설 명 |
|
이슈 관리 |
일정관리 |
- 이슈 별 진행 상황 실시간 추적 (통계 및 리포팅 자동화) - 주요 마일스톤 관리(각 이슈 별 목표 치의 정량화) |
위험도 관리 |
- 작업 별 우선순위 및 위험도 지정하여 리스크 관리 - 우선 순위 기준으로 작업 순서 및 작업 자 배정 관리 가능 |
|
작업관리 |
- 인력별 작업 부하 및 성과 측정 - 작업 진척 사항 모니터링 |
|
개발 환경 |
표준개발/빌드환경 |
- 개발 환경의 통합 (IDE+WAS+테스트 환경) - Daily Build 가능한 통합 환경 제공, 테스트 자동화 연계 |
테스트 환경 |
- 테스트 도구와 환경을 제공하여 개발자가 손쉽게 테스트 케이스 생성 - 소스 코드 체크인시 자동 테스트 후 오류 발생 시 즉시 모니터링 |
|
코딩규칙 검사 |
- 시스템 적으로 코딩 규칙을 검사하여 코드 가독 품질 향상 - 코드 표준화의 강제화 통한 조직 내 의사소통 강화 |
|
테스트 커버리지 검사 |
- 테스트 커버리지 측정을 통한 테스트 범위 명확화 - 각 이슈 별로 커버리지를 다르게 적용 가능 |
|
소스 관리 시스템 |
소스 공유 |
- 팀원간 소스 및 형상을 공유, 공동 작업 가능 |
변경내역 추적 및 관리 |
- 소스코드 변경에 대한 이력을 관리 (체크아웃, 체크인) - 잘못된 변경에 대하여 이전 버전으로 복구 할 수 있는 기능 제공 |
|
브렌치별 버전관리 |
- 릴리즈 버전 별로 소스/문서 등의 형상물을 관리 - 릴리즈 버전 별로 소규모 업데이트 가능하도록 별도 관리 가능 |
|
빌드 자동화 시스템 |
통합 빌드 |
- 매일 통합 빌드롤 통해서 코드 통합 오류 방지(Daily Build) |
자동 테스트 |
- 빌드 시 Unit 테스트 및 통합 테스트 자동화로 변경 Defect조기 검출 |
|
코드오류 검사 |
- 코딩 Rule검사, 잠재적인 Defect보유 코드 제거 |
|
복잡도분석 |
- 코드 복잡도 분석으로 테스트 위험도 높은 코드의 자동 검출 |
3. ALM 구축시 전략적 고려사항 및 기술적 고려사항
가. ALM 구축시 전략적 고려사항
고려사항 |
설명 |
프로세스개선 |
- 요구사항이 End-to-End 까지 흐를 수 있는 프로세스가 사전에 정의 되어야함 - 전사 개발 프로세스를 최적화 및 Best practice의 테일러링 필요 |
효율성/효과성 |
- ALM을 도입함으로써 요구사항 대응의 품질 향상이 이루어 저야 함 - 조직에 품질목표와 전략에 따라 도입규모를 결정해야함 |
조직문화 |
- 이슈관리를 중심으로 요구사항의 대응 절차에 따르는 조직이 되어야 함 - ALM 프로세스와 도구가 사용되도록 개발조직이 통제되어야 함 - ALM프로세서는 개발 조직의 능력에 맞춰서 성숙 되어야 함 |
Step By Step |
- 팀과 리소스, 일정에 맞는 ALM모델이 설정 되어야 함 - 단계별 발전 모델을 정의 하고 단계별로 ALM을 구축하여야 함 |
나. ALM 구축시 기술적 고려사항
고려사항 |
설명 |
Simple & Easy |
- 요구사항이 인식되고 정의되는 부분이 프로세스와 잘 부합되어야 함 - 모든 개발 구성원들이 쉽게 사용 할 수 있어야 함 - 관리를 위한 공수가 개발의 공수를 넘어서지 않도록 편한 UI 및 관리 도구 제공 |
Seamless Integration |
- 요구사항이 바로 자신의 업무 항목이 되도록 개발 툴과 통합되는 것이 필요 - ALM을 구성하는데 필요한 기술과 제품들이 하나의 제품처럼 유기적 결합 필요 - 기존 개발 도구와 통합이 쉽거나 비슷한 인터페이스를 가져야 함 |
Liquid Flow |
- ALM Process가 물 흐르듯이 자연스럽게 연결되어야 함 - 각 프로세스의 Input과 Output이 명확히 정의되고 독립적으로 구성되어 각 구성원이 자신의 프로세스만 신경 쓰면 자동으로 진행되는 시스템이어야 함 |
Control & Maturing |
- 요구사항의 처리가 각 작업 구성원의 평가 자료로 활용 될 수 있는 정량화된 수치를 제공해야 함 - ALM 프로세스의 현황 및 자원 투입사항 비용 등 다양한 다각도로 측정되어야 함 |
System Integrity |
- 요구사항을 만족한 코드가 정합성을 가지고 반영되도록 확인하는 시스템 필요 - 체크 아웃/체크인을 통하여 Daily Build 시 정확한 테스트 및 반영 필요 - 각 조직 별 표준 코딩 규칙 등의 반영이 가능한지 확인 필요 |
4. ALM의 기대효과 및 발전방향
가. ALM의 기대효과
복잡도 감소 : 팀 단위의 개발 시 개발 프로세스에 대한 통합으로 개발 복잡도의 감소
협업 환경 구축 : 팀 커뮤니케이션 도구와 방법을 단일화 하고 커뮤니케이션 및 협업을 원활하게 지원
품질 향상 : 개발 프로세스 단계에서 생성 되는 산출물에 대한 형상관리, 코드 품질 관리에 대한 자동화 체계를 통해 코드 품질, 산출물 품질 및 성능 향상
추적성 관리 : 향상 요구 사항으로부터 실제 코드의 변경과 이력까지의 추적성 제공
나. ALM의 발전 방향
Application Framework화 |
- 어플리케이션 개발/실행/운영 플랫폼을 바탕으로 어플리케이션의 라이프사이클을 관리하여 개발 및 유지 보수 ROI 를 향상 |
SOA기반 아키텍처 지원 |
- 표준화된 데이터 포맷과 프로그래밍 모델을 제공하여 비즈니스 변화에 대응한 IT 기민성 및 시스템 유연성을 극대화 함 - WSDL, UDDI, SOAP등의 주요 SOA 기술지원 및 MCA, EAI, RBMS, ESB등의 SOA의 핵심 솔루션과의 자연스러운 통합을 지원 |
대규모 시스템 지원 |
- 플랫폼 독립적이고 Layer의 구분이 명확한 아키텍처를 제공하여 대용량 처리를 안정적으로 지원해야 함 - 34*365 무 중단 서비스 환경 지원 |
협업환경 지원 |
- XML, SOAP, REST 등 Web 2.0의 커뮤니케이션 기술을 지원 - Web 2.0의 표준기술 및 공개기술을 기반으로 하여 보다 진보된 웹 서비스를 지원 |
Open Source화 |
- 이크립스 등 공개 소프트웨어 진영에서 ALM을 적극 개선 개발 하고 있음 - 각 조직에 맞게 쉽게 테일러링이 가능하기 때문에 많은 발전이 예상됨 |
[참고1] ALM 주요구성
Task Management |
- 프로젝트 Task에 대한 진행 상황, 스케줄링, 리소스 관리 방법론 제공 - 인력 별로 진행 중인 이슈와 완료된 이슈 추적을 통해 인력 별 작업 부하와 성과 측정 - 작업 진척 사항 체크 |
Build Environment |
- Implementation 단계에서 사용되는 개발환경 제공 - 자동빌드시스템을 기반으로 점진적 방식의 통합 진행 |
Test Automation |
- 단위테스트와 통합 테스트에 비중을 두고 테스트 - 자동화와 회귀테스트를 중점적을 진행 - 코드 오류 검사 수행, 테스트 커버리지 분석, 코드 복잡도 분석 |
Collaboration |
- 프로젝트 진행 시 의사 소통과 공동 작업을 돕기 위한 기법과 시스템 - 코드리뷰, 정보 공유 시스템, 양방향 커뮤니케이션 시스템 |
- 고객, PM, 개발자간의 ALM 기반 상호 유기적, 효과적 의사소통 및 관리활동이 가능해짐.
- 특히 이슈관리시스템과 빌드 자동화 시스템을 통한 현황파악과 생산성 향상이 중요함.