본문 바로가기
프로그래밍/소프트웨어 공학 (완)

1장 - 소프트웨어 개발 생명주기(SDLC) (2)

by 서가_ 2025. 6. 8.
반응형

소프트웨어 개발 생명주기(SDLC) - 체계적인 개발 프로세스

들어가며

집을 짓는다고 생각해보세요. 무작정 시멘트를 붓고 벽돌을 쌓기 시작할까요? 아닙니다. 먼저 설계도를 그리고, 기초공사를 하고, 단계별로 차근차근 진행해야 튼튼한 집이 완성됩니다.

소프트웨어 개발도 마찬가지입니다. 아무리 뛰어난 개발자라도 체계적인 계획 없이는 좋은 소프트웨어를 만들 수 없습니다. 오늘은 소프트웨어를 체계적으로 개발하기 위한 '소프트웨어 개발 생명주기(SDLC)'에 대해 알아보겠습니다.

소프트웨어 개발 생명주기(SDLC)란?

소프트웨어 개발 생명주기(SDLC: Software Development Life Cycle)는 계획 단계에서 유지보수 단계에 이르기까지 일어나는 일련의 과정을 말합니다. 마치 사람의 생명주기처럼 소프트웨어도 태어나서 성장하고 유지되는 단계가 있다는 의미입니다.

소프트웨어 개발의 6단계

소프트웨어 개발 프로세스는 크게 6단계로 나누어집니다:

1단계: 계획 (Planning)

프로젝트의 출발점입니다. 무엇을 만들 것인지, 얼마나 걸릴지, 비용은 얼마나 들지를 결정하는 단계입니다.

주요 활동들:

  • 개발 비용 산정: COCOMO 모델, 기능점수(FP) 모델을 사용하여 정확한 비용을 계산합니다
  • 일정 계획: 작업분할구조도(WBS), CPM을 사용하여 현실적인 일정을 수립합니다
  • 위험 관리: 프로젝트 진행 중 발생할 수 있는 위험요소들을 미리 파악하고 대응책을 마련합니다

2단계: 요구분석 (Requirements Analysis)

고객이 정말 원하는 것이 무엇인지 파악하는 단계입니다. 이 단계가 잘못되면 전체 프로젝트가 실패할 수 있을 만큼 중요합니다.

주요 활동들:

  • 기존 시스템의 문제점 파악
  • 새로운 요구사항 도출
  • 다이어그램 작성

개발 방법론별 표현 도구:

  • 구조적 방법론: DFD(Data Flow Diagram), DD(Data Dictionary), Mini Spec
  • 정보공학 방법론: E-R 다이어그램
  • 객체지향 방법론: UML의 유스케이스 다이어그램

최종 산출물: 요구분석 명세서

3단계: 설계 (Design)

요구사항을 바탕으로 실제로 어떻게 만들 것인지 구체적인 설계도를 그리는 단계입니다.

주요 설계 원리:

  • 분할과 정복: 큰 문제를 작은 문제로 나누어 해결
  • 추상화: 복잡한 내용을 단순화하여 표현
  • 단계적 분해: 상위 수준에서 하위 수준으로 점진적 상세화
  • 모듈화: 기능별로 독립적인 모듈로 분리
  • 정보은닉: 모듈 내부의 세부사항을 외부에서 알 수 없도록 숨김

설계 영역:

  • 소프트웨어 아키텍처 설계
  • 객체지향 설계
  • 아키텍처 스타일 결정
  • 디자인 패턴 적용
  • 모듈 평가(응집도와 결합도 고려)

4단계: 구현 (Implementation)

설계된 내용을 바탕으로 실제 코드를 작성하는 단계입니다.

주요 활동들:

  • 프로그래밍 언어 선택
  • 표준 코딩 규칙 적용
  • 모듈별 코딩 및 통합

5단계: 테스트 (Testing)

개발된 소프트웨어가 요구사항을 만족하는지, 오류는 없는지 검증하는 단계입니다.

테스트 분류:

  • 개발자 또는 사용자 시각에 따른 분류
  • 사용되는 목적에 따른 분류
  • 품질 특성에 따른 분류
  • 소프트웨어 개발 단계에 따른 분류

6단계: 유지보수 (Maintenance)

소프트웨어가 출시된 후에도 지속적으로 관리하는 단계입니다.

유지보수 유형:

  • 수정 유지보수: 오류 수정
  • 적응 유지보수: 환경 변화에 대한 적응
  • 기능보강 유지보수: 새로운 기능 추가
  • 예방 유지보수: 미래 문제 예방

관리 영역: 품질과 프로젝트 관리

개발 6단계와 함께 전체 과정을 관통하는 두 가지 중요한 관리 영역이 있습니다.

품질 관리

제품 품질 특성 평가 모델:

  • ISO/IEC 9126 모델
  • ISO/IEC 14598 모델
  • ISO/IEC 12119 모델
  • ISO/IEC 25000 모델

프로세스 품질 특성 평가 모델:

  • ISO/IEC 9000 모델
  • ISO/IEC 12207 모델
  • CMMI 모델
  • SPICE 모델

프로젝트 관리

PMBOK(프로젝트관리지식체계)의 9가지 관리 영역:

  1. 프로젝트 통합 관리
  2. 프로젝트 범위 관리
  3. 프로젝트 일정 관리
  4. 프로젝트 비용 관리
  5. 프로젝트 품질 관리
  6. 프로젝트 인적자원 관리
  7. 프로젝트 의사소통 관리
  8. 프로젝트 위험 관리
  9. 프로젝트 조달 관리

형상 관리도 프로젝트 관리의 중요한 부분입니다.

다양한 소프트웨어 개발 프로세스 모델

실제 프로젝트에서는 상황에 맞는 다양한 개발 모델을 사용합니다:

  • 주먹구구식 개발 모델: 계획 없이 진행(권장하지 않음)
  • 선형순차적 모델(폭포수 모델): 단계별 순차 진행
  • V 모델: 테스트를 강조한 모델
  • 진화적 프로세스 모델(프로토타입 모델): 시제품을 먼저 만들어 검증
  • 나선형 모델: 위험 관리에 중점
  • 단계적 개발 모델: 기능을 나누어 단계별 개발
  • 통합 프로세스 모델(UP): 반복적이고 점진적 개발
  • 애자일 프로세스 모델: 빠른 변화에 대응하는 유연한 개발

왜 SDLC가 중요한가?

1. 체계적인 접근

각 단계별로 명확한 목표와 산출물이 있어 체계적인 개발이 가능합니다.

2. 위험 관리

각 단계에서 검토와 승인 과정을 거쳐 위험을 최소화할 수 있습니다.

3. 품질 보장

단계별 검증을 통해 고품질의 소프트웨어를 개발할 수 있습니다.

4. 효율성 향상

표준화된 프로세스를 통해 개발 효율성을 높일 수 있습니다.

마무리

소프트웨어 개발 생명주기는 복잡한 소프트웨어를 체계적으로 개발하기 위한 필수적인 프레임워크입니다.

각 단계가 유기적으로 연결되어 있고, 이전 단계의 결과물이 다음 단계의 입력이 되는 구조입니다. 품질 관리와 프로젝트 관리는 전체 과정을 관통하며 성공적인 프로젝트 완료를 돕습니다.

다음 포스팅에서는 개발 초기 단계인 계획, 요구분석, 설계 단계에 대해 더 자세히 알아보겠습니다.

반응형