본문 바로가기

기술사 준비/SW공학 - 개발 방법론

[SW공학] SDLC (Software Development Life Cycle)

반응형

아래 내용은 예문사의 '정보처리기술사 개정 4판 1쇄'를 기본으로, 필자의 이해를 덧붙여 요약 및 정리한 자료임을 명시합니다.


SDLC

SDLC의 정의

  • SDLC (Software Development Life Cycle): 소프트웨어를 개발하는 전 과정을 단계별로 나눈 것으로 소프트웨어 개발 및 관리에 기본적인 틀을 제공하는 모델

SDLC의 의미

  • 관리적 측면: 이정표, 기준선 제공을 통한 SW개발과정 가시화
  • 기술적 측면: 방법론, 도구, 절차 적용의 기본적인 틀 제공

SDLC의 구성

구성 설명 산출물
요구정의 요구사항 명세화, 기능/제약 조건 정의 요구사항 정의서
분석 문제영역, 사용자, Task를 이해하는 단계 개념/비즈니스 모델(BM)
설계 분석모델 세분화를 통한 구현 모델로 전환 설계모델
구현 실행코드 생성 소스 코드
시험 숨어 있는 결함 발견 및 수정 알파/베타 테스트
유지보수 인수 후 일어나는 SW 생명연장 활동 Update, Fixes 등

덧) 요 → 분 → 설 → 구 → 시 → 유 로 외우면 되는데 사실 너무 당연한 회사 프로세스이긴 하다.

덧2) 일단 요구사항 정의서 날리고, BM 따지고, (수지타산이 맞으면) SW 설계하고, 코드 구현하고, 테스트 진행하고, (인수인계하고 나서) 유지보수를 한다는 것은 상식이다.

 

SDLC의 유형

유형 내용
Waterfall Model - 검토/승인을 통해 순차적, 하향식 개발 진행
- 장점: 이행 용이, 다음 단계 진행 전 결과 검증하여 관리 용이
- 단점: 초기 요구사항 도출의 어려움으로 설계/코딩의 지연, 회귀 곤란
Prototyping Model - 핵심기능 시제품화를 통한 평가 후 구현하는 점진적 모델
- 장점: 요구사항  도출/시스템 이해 용이, 의사소통 향상
- 단점: 사용자 오해(완제품), 폐기 프로토타입 존재
Spiral Model - 폭포수와 프로토타입 모델 장점에 위험분석 추가
- 장점: 집중적 개발로 실제 위험 감소, 피드백/테스트 용이
- 단점: 관리 복잡, 시간/비용/노력 증가
Iterative Model - 시스템을 여러 번 나누어 릴리즈하는 모델
- Incremental: 기능 분해 후 릴리즈마다 기능 추가 개발
- Evolutionary: 반복을 통해 시스템 버전을 업그레이드하는 방법
Clean Room Model - 클린룸의 결함 예방 개념을 적용하여 핵심 기능을 프로토타입화 함으로써 반복/증분시키는 모델
RAD Model - Rapid Application Development Model
- 고객의 참여, Case Tool의 활용을 통한 신속한 SW개발 모델
4세대 기법 - CASE 및 자동화 도구 이용 소스코드 자동 생성 모델

덧) 대체로 정보처리기사에서 나왔던 내용이다.

반응형

프로젝트 특성에 따른 SDLC 선정 사례

프로젝트 특성 SDLC 선정 선정 사유
- 요구 명확, 많은 산출물
- 비전문가 많음
Waterfall - 사례풍부, 진행과정 세분화
- 관리 및 이해 용이
- 요구사항 불명확
- 타당성 검토 필요
- GUI 중요, 아이디어 개발
Prototyping - 사용자 요구사항 도출/검증 용이
- 사용자 개발자 간 의사소통 용이
- 고비용, 장기간, 대규모
  고위험 프로젝트
- 완벽한 시스템 구축 요건
Spiral - 위험 분석 통한 대응 가능
- 반복적 시행으로 시스템 완성도 재고 가능
- CBD식 개발 요구
- 요구사항 변화 가능
Evolutionary
(Iterative)
- 핵심 개발 후 재사용 통해 진화 발전 가능
- 대규모 병행 개발 용이
- 요구사항 비교적 명확
Incremental
(Iterative)
- 개별/수준별 증분을 나누어 병렬 개발 가능
- 단기간 요구사항 만족
- 자동화 도구 사용 가능
RAD - CASE와 자동화 도구 이용 신속한 개발 가능

덧) 이건 많은 경우의 수가 있으니 SDLC의 유형에 대한 개념을 확실히 익히는 것이 더 중요하고, 참고용으로만 써야 한다.

 

 

SDLC의 적용 시 고려사항

  • 프로젝트의 규모와 성격에 따른 적용 必
  • 최대한의 생산성 확보
  • 불필요한 작업 최소화

SDLC 발전방향

  • 기업의 전략변경에 대해 신속한 대응을 위한 엔터프라이즈급 애자일 개발방법론과 연계할 수 있는 실질적 방안 필요
  • 소스를 직접 개발하는 방법에서 프레임워크를 이용한 개발환경 변화를 수용하고 설명할 수 있는 SDLC 적용 필요
  • 다양한 비즈니스에 적용할 수 있는 클라우드 컴퓨팅 환경에 접목 가능한 SDLC로 발전해야 함

SDLC와 타 개념과의 관계

관계 From To
모형 채택 SDLC 개발방법론
- 구조적 방법론
- 정보공학방법론
- 객체지방법론
- CBD방법론
- 애자일방법론
표준화 SDLC SW생명주기 표준 프로세스
- ISO12207
구체화 SW 생명주기 표준 프로세스 개발방법론
평가개선모델 제시 SW생명주기 표준 프로세스 프로세스 평가 및 개선모델
- ISO15504
- CMMi/CMM
적용 개발방법론 조직
평가 프로세스 평가 및 개선모델 조직
개선방법 제시 프로세스 평가 및 개선모델 개선방안
- PSP/TSP
개선 개선방안 조직

 

SDLC 모델 종류별 적용 프로젝트 유형

모델 적용 프로젝트
Waterfall - 요구사항이 명확히 도출된 경우
- 기술적 위험이 낮고 유사 프로젝트 경험이 있는 경우
Prototype - 사용자 요구사항이 불명확한 경우
- 요구사항 도출을 신속히 하고자 하는 경우
Spiral - 대규모 시스템 및 위험 부담 큰 시스템 개발
- 연구프로젝트 등 요구사항, 제약사항이 알려지지 않은 경우
Iterative
(Incremental)
- 요구사항이 명확한 경우
- 대규모 프로젝트인 경우
Iterative
(Evolutionary)
- 요구사항이 명확하지 않은 경우 (상용SW 패키지 개발 시, 등)
RAD - 기술적 위험이 적고, 빠른 개발이 요구될 경우


 

반응형

'기술사 준비 > SW공학 - 개발 방법론' 카테고리의 다른 글

[SW공학] CBD  (0) 2022.01.16
[SW공학] 객체지향 방법론  (0) 2022.01.16
[SW공학] 정보공학 방법론  (0) 2022.01.16