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보유 코드 제거

복잡도분석

- 코드 복잡도 분석으로 테스트 위험도 높은 코드의 자동 검출

- 기존의 제품개발을 위한  PLM 프로세스를  SW개발에 맞게 기능을 재 구성 및 보강 하여 관리

 

3. ALM 구축시 전략적 고려사항 및 기술적 고려사항

  가. ALM 구축시 전략적 고려사항

고려사항

설명

프로세스개선

- 요구사항이  End-to-End 까지 흐를 수 있는 프로세스가 사전에 정의 되어야함

- 전사 개발 프로세스를 최적화 및  Best practice의 테일러링 필요

효율성/효과성

- ALM을 도입함으로써 요구사항 대응의 품질 향상이 이루어 저야 함

- 조직에 품질목표와 전략에 따라 도입규모를 결정해야함

조직문화

- 이슈관리를 중심으로 요구사항의 대응 절차에 따르는 조직이 되어야 함

- ALM 프로세스와 도구가 사용되도록 개발조직이 통제되어야 함

- ALM프로세서는 개발 조직의 능력에 맞춰서 성숙 되어야 함

Step By Step

- 팀과 리소스, 일정에 맞는  ALM모델이 설정 되어야 함

- 단계별 발전 모델을 정의 하고 단계별로  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 기반 상호 유기적, 효과적 의사소통 및 관리활동이 가능해짐.

- 특히 이슈관리시스템과 빌드 자동화 시스템을 통한 현황파악과 생산성 향상이 중요함.

댓글