본문 바로가기
Software Engineering/프로젝트 관리

통합 리스크 관리

by 부뚜기 2023. 3. 25.
반응형

SDLC(Software development life cycle)에서 통합 리스크 관리 

소프트웨어 개발 수명 주기(SDLC)는 소프트웨어 개발 프로세스의 각 단계에서 수행되는 작업을 정의하기 위한 개념적 모델이다.

SDLC에는 다양한 모델이 있지만, 일반적으로 SDLC는 다음과 같은 단계로 구성된다.

1. 예비 분석(Preliminary Analysis)

예비 분석은 프로젝트의 타당성과 실행 가능성을 결정하기 위해 높은 수준의 평가가 수행되는 프로젝트의 초기 단계에서 수행한다. 이 단계의 목적은 정보를 수집하고 프로젝트와 관련된 잠재적인 위험과 이점을 평가하는 것이다.

2. 시스템 분석 및 요구사항 정의

시스템 요구 사항 분석, 시스템의 기능적 및 비기능적 요구 사항 정의, 이러한 요구 사항을 충족하는 시스템 설계를 수행 한다.

3. 시스템 설계

이전 단계에서 정의된 요구 사항에 따라 시스템을 구현하기 위한 세부 계획을 수립한다. 시스템 설계 단계의 목표는 기능 및 비기능 요구사항을 충족하고 효율적이고 신뢰할 수 있으며 유지관리가 가능한 시스템 설계를 하는 것이다.

4. 시스템 개발

코드를 작성하고 시스템의 다양한 구성 요소를 통합하여 실제 작동하는 시스템을 만든다.

5. 통합 및 시스템 테스트

시스템의 다양한 구성 요소를 결합하고 시스템 전체를 테스트하여 기능 및 비기능 요구 사항을 충족하는지 확인한다.

6. 설치, 운영 및 인수 테스트

운영 환경에 시스템을 설치하고, 실제 조건에서 테스트하고, 시스템 배포에 대한 이해 관계자의 승인을 얻는 작업이 수행된다.

7. 유지 보수

시스템이 계속 올바르게 작동하고 이해 관계자의 요구와 기대를 충족하도록 시스템을 모니터링하고 유지 관리하는 작업이 수행된다.

8. 폐기

폐기는 SDLC의 마지막 단계로 시스템을 서비스에서 제거하고 시스템을 폐기한다.

 

이러한 단계와 개발 중인 소프트웨어의 위험을 줄이기 위해 위험 평가 및 관리가 이 과정에서 어떻게 수행되는지 확인해 본다.

SDLC단계 별 리스크 관리 

1. 예비 분석(Preliminary Analysis)

사전 분석 단계에서는 잠재적인 리스크를 식별하고 완화 방법을 결정하기 위해 확인해야 할 몇 가지 사항이 있다. 고려해야 할 주요 사항은 다음과 같다.

  • 프로젝트 범위: 프로젝트 범위가 너무 넓거나 좁아서 지연, 비용 초과 또는 불완전한 결과물이 발생할 위험이 있다. 이러한 위험은 프로젝트 범위에 대한 철저한 분석을 수행하고 현실적이고 달성 가능한지 확인함으로써 완화할 수 있다.
  • 리소스 가용성: 인력, 장비 또는 재료와 같은 필요한 리소스를 사용할 수 없거나 프로젝트 요구 사항에 충분하지 않을 수 있는 위험이 있다. 리소스 요구 사항을 식별하고 프로젝트 일정 내에 리소스를 사용할 수 있거나 얻을 수 있는지 확인하여 관리할 수 있다.
  • 기술적 타당성: 선택한 기술이 프로젝트 요구 사항에 적합하지 않아 시스템 오류 또는 제한이 발생할 위험이 있다. 기술적 타당성 평가를 수행하고 프로젝트에 가장 적합한 기술을 선택함으로써 완화될 수 있다.
  • 규제 및 법적 요구 준수: 프로젝트가 관련 법률, 규정 또는 표준을 준수하지 않아 법적 또는 재정적 처벌을 받을 수 있다.  규제 및 법적인 요구 사항을 식별하고 프로젝트가 이를 준수하는지 확인하여 관리할 수 있다.
  • 이해관계자 요구사항: 이해관계자가 상충되거나 불분명한 기대 또는 요구 사항을 가지고 있어 프로젝트 지연이나 오해로 이어질 있다. 이해 관계자의 요구 사항을 식별하고 그들의 기대치가 프로젝트 목표와 일치하도록 함으로써 완화될 수 있다.
  • 재정적 요소: 프로젝트가 예산을 초과하거나 예상되는 이익을 제공하지 못하여 재정적 손실로 이어질 수 있다. 재무 분석을 수행하고 프로젝트가 재정적으로 실행 가능하고 조직의 목표와 일치하는지 확인하여 관리할 수 있다.

사전 분석 단계에서 이러한 사항을 확인함으로써 잠재적 위험을 식별하고 이를 완화하기 위한 적절한 위험 관리 전략을 개발할 수 있다.

2. 시스템 분석 및 요구사항 정의

시스템 분석 및 요구 사항 정의 단계에서 확인해야 하는 사항은 다음과 같다.

  • 기능 요구 사항: 시스템의 기능 요구 사항을 확인하고 불완전하거나 부정확한 요구 사항으로 인해 발생할 수 있는 잠재적 위험 요소.
  • 비기능적 요구 사항: 성능, 확장성 및 보안과 같은 비기능적 요구 사항을 검토하고 이러한 요구 사항으로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 요구 사항 변동성: 개발 중에 요구 사항이 자주 변경되면 지연, 비용 초과 또는 불완전한 결과물로 이어질 수 있는 위험이 있다. 기능 및 비기능 요구 사항을 철저히 분석하고 요구 사항을 잘 정의하고 완전하며 안정적인지 확인함으로써 관리할 수 있다.
  • 이해관계자 의견: 이해관계자 의견을 검토하고 충돌하거나 명확하지 않은 이해관계자 요구 사항으로 인해 발생할 수 있는 잠재적 위험 요소.
  • 기술적 타당성: 기술적 타당성을 검토하고 기술적 한계로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 기존 시스템과의 호환성: 기존 시스템의 호환성을 검토하고 비호환성으로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 표준 준수: 업계 표준(De facto) 및 모범 사례 준수를 검토하고 비준수로 인해 발생할 수 있는 잠재적 위험 요소.
  • 변경 관리: 변경 관리 프로세스를 검토하고 요구 사항 또는 시스템 설계의 변경으로 인해 발생할 수 있는 잠재적인 위험 요소.

3. 시스템 설계

시스템 설계 단계에서 확인해야 하는 사항은 다음과 같다.

  • 시스템 아키텍처: 시스템 아키텍처를 검토하고 설계 결함이나 불일치로 인해 발생할 수 있는 위험 요소.
  • 데이터 흐름 및 스토리지: 데이터 흐름 및 저장 아키텍처를 검토하고 데이터 손실, 손상 또는 무단 액세스로 인해 발생할 수 있는 잠재적 위험 요소.
  • 시스템 인터페이스: 시스템 인터페이스를 검토하고 인터페이스 실패, 지연 또는 보안 침해로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 보안 및 접근 통제: 보안 및 접근 통제 메커니즘을 검토하고 무단 액세스, 데이터 위반 또는 시스템 오류로 인해 발생할 수 있는 잠재적 위험 요소.
  • 성능 및 확장성: 시스템의 성능 및 확장성 요구 사항을 검토하고 열악한 시스템 성능 또는 확장성 문제로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 테스트 및 검증: 테스트 및 검증 프로세스를 검토하고 부적절한 테스트 또는 검증 절차로 인해 발생할 수 있는 잠재적인 위험 요소.

4. 시스템 개발

시스템 개발 단계에서 확인해야 하는 사항은 다음과 같다.

  • 코드 품질: 코드 품질을 검토하고 코딩 오류, 보안 취약성 또는 성능 문제로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 버전 제어: 버전 제어 프로세스를 검토하고 충돌, 오류 또는 불일치로 인해 발생할 수 있는 잠재적인 위험 요소.
  • 개발 팀 관리: 개발 팀이 프로젝트를 성공적으로 완료하는 데 필요한 기술이나 경험이 부족하여 작업이 지연되거나 품질이 저하될 위험이 있다. 숙련되고 경험이 풍부한 개발 팀을 고용하고 필요에 따라 교육 및 지원을 제공하며 효과적인 프로젝트 관리를 수행하면 이러한 위험을 완화할 수 있다.
  • 일정 지연: 기술적인 어려움이나 요구 사항의 변경과 같은 예상치 못한 상황으로 인해 프로젝트가 일정보다 늦어질 수 있는 위험이 있다. 현실적인 프로젝트 일정을 수립 하고고, 진행 상황을 면밀히 모니터링하고, 필요에 따라 비상 계획을 구현하여 관리할 수 있다.
  • 기술적 요소: 개발 과정에서 기술적 문제가 발생하여 작업이 지연되거나 품질이 저하될 위험이 있다. 철저한 테스트 및 품질 보증 프로세스를 수행하고 적절한 기술 통제를 하고 기술 문제를 신속하게 해결함으로써 관리할 수 있다.
  • 변경 관리: 요구 사항 또는 범위에 대한 변경이 제대로 관리되지 않아 혼란, 지연 또는 작업 품질 저하로 이어질 위험이 있다. 효과적인 변경 관리 프로세스를 통해 모든 이해 관계자에게 변경 사항을 명확하게 전달하고 변경 사항을 적절하게 문서화하고 승인함으로써 관리할 수 있다.
  • 의사소통: 이해관계자 간에 의사소통 단절이 발생하여 오해 또는 지연이 발생할 위험이 있다. 명확한 커뮤니케이션 라인을 설정하고 역할과 책임을 명확하게 정의하고 개발 프로세스 전반에 걸쳐 이해 관계자에게 정보를 제공함으로써 관리할 수 있다.

5. 통합 및 시스템 테스트

통합 및 시스템 테스트 단계에서 확인해야 하는 사항은 다음과 같다.

  • 통합 테스트: 시스템의 다른 구성 요소 통합이 예상대로 작동하지 않아 시스템 오류 또는 불일치로 이어질 위험이 있다. 모든 구성 요소가 예상대로 함께 작동하는지 확인하여 관리할 수 있다.
  • 기능적 위험: 시스템이 기능적 요구 사항을 충족하지 않아 시스템 오류 또는 제한이 발생할 수 있는 위험이 있다. 모든 기능 요구 사항이 충족되는지 확인하여 완화할 수 있다.
  • 시스템 성능: 시스템이 로드 또는 스트레스 하에서 예상대로 작동하지 않아 시스템 오류 또는 느린 응답 시간으로 이어질 위험이 있다. 시스템이 예상되는 수준의 트래픽 및 사용량을 처리할 수 있는지 확인하여 관리할 수 있다.
  • 보안 위협: 시스템이 보안 위협이나 공격에 취약하여 데이터 침해 또는 시스템 다운타임으로 이어질 수 있는 위험이 있다. 보안 전략 수립 및 보안 테스트를 수행 통한 위험을 완화할 수 있다.
  • 사용자 사용성: 시스템을 사용하거나 이해하기 어려워 사용자 불만이나 오류로 이어질 수 있는 위험이 있다. 시스템이 직관적이고 사용하기 쉬운지 확인함으로써 관리할 수 있다.
  • 시스템 호환성: 시스템이 다른 시스템이나 장치와 호환되지 않아 시스템 오류 또는 제한이 발생할 수 있는 위험이 있다. 시스템이 필요에 따라 다른 시스템 및 장치와 작동할 수 있는지 확인하여 관리할 수 있다.

6. 설치, 운영 및 인수 테스트

설치, 운영 및 인수 테스트 단계에서 확인해야 하는 사항은 다음과 같다.

  • 시스템 설치: 시스템 설치가 성공적으로 완료되지 않아 시스템 오류 또는 지연이 발생할 위험이 있다. 설치 프로세스를 잘 문서화하고 모범 사례를 따르고 설치 후 철저한 테스트를 수행하여 완화할 수 있다.
  • 시스템 운영: 시스템이 예상대로 작동하지 않아 시스템 장애 또는 제한이 발생할 수 있는 위험이 있다. 모든 운영 요구 사항이 충족되었는지 확인하고 사용자에게 적절한 교육을 제공함으로써 완화할 수 있다.
  • 인수 테스트: 시스템이 수락 기준을 충족하지 않아 배포가 거부되거나 지연될 수 있는 위험이 있다. 승인 기준을 잘 정의하고 테스트 중에 식별된 모든 문제를 해결함으로써 완화할 수 있다.
  • 데이터 무결성: 시스템이 데이터 무결성을 유지하지 못해 데이터가 손상되거나 손실될 위험이 있다. 데이터 백업 및 복구 절차를 수립하고 데이터를 안전하게 저장하고 데이터 사용 및 액세스를 면밀히 모니터링하여 완화할 수 있다.

이러한 위험 요소와 기타 위험 요소를 식별하고 분석함으로써 조직은 포괄적인 위험 관리 계획을 개발하고 적절한 통제 및 프로세스를 구현하여 잠재적 위험을 완화함으로써 프로젝트를 수행해야 한다.

반응형

댓글