티스토리 뷰

Software Development Life Cycle

 

정의

- 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
- 시스템의 개발부터 유지보수까지의 어떠한 작업이 이루어지는지 단계별로 정리

소프트웨어 생명주기 모델 단계

- 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

 

 

1. 요구사항 분석(Requirement Analysis)

목적: 사용자의 요구사항을 명확하게 파악하고 분석하여 개발해야 할 소프트웨어의 기능적, 비기능적 요구사항을 정의하는 단계
주요 활동
      1. 이해관계자와의 인터뷰: 고객, 사용자, 비즈니스 전문가 등과 논의하여 소프트웨어가 수행해야 할 기능을 파악
      2. 요구사항 수집: 다양한 요구사항(예: 사용자 요구사항, 시스템 요구사항, 비즈니스 요구사항) 문서화
      3. 요구사항 명세서(SRS) 작성: 수집한 요구사항을 체계적으로 문서화
      3. 기능 요구사항
            1. 정의: 시스템이 제공하는 기능으로 서비스에 대한 요구사항
            2. 특징: 기능성, 완전성, 일관성
            3. 예: 쇼핑몰 장바구니 기능, 결제수단은 신용카드 포인트 결제, 무통장 입금 등이 가능해야 함
      4. 비기능 요구사항
            1. 정의: 시스템이 수행하는 기능 이외의 사항으로 시스템 구축에 대한 제약사항에 관한 요구사항
            2. 특징: 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 등
            3. 예: 시스템은 24시간 가동 필요, 특정 함수 호출은 3초 초과 금지 등


2. 설계(Design)

- 목적: 요구사항 분석 단계에서 수집한 내용을 바탕으로 소프트웨어의 전체 구조와 세부 설계를 하는 단계
- 설계의 유형
      1. 아키텍처 설계(High-level Design): 시스템의 전반적인 구조, 모듈 간 관계, 데이터 흐름, 하드웨어 및 소프트웨어 구성 등을 결정
      2. 세부 설계(Detailed Design):  각 모듈 및 컴퓨터의 세부 동작, 인터페이스, 데이터 구조, 알고리즘 등을 설계
      3. 주요 활동
            1. 시스템 구조 설계: 시스템을 어떻게 모듈화할 것인지 결정
            2. 데이터베이스 설계: 데이터베이스 테이블, 관계 등을 설계
            3. UI/UX 설계: 사용자 인터페이스 및 사용자 경험 설계
            4. 산출물: 시스템 설계 문서, 데이터베이스 설계 문서, 인터페이스 설계 문서

 

 

3. 구현(Implementation)

- 목적: 설계된 내용을 바탕으로 실제 코드를 작성하여 소프트웨어를 개발하는 단계
- 주요 활동
      1. 코딩: 프로그래밍 언어를 사용해 설계된 시스템을 코드로 구현
      2. 모듈별 개발: 설계에 따라 시스템을 여러 모듈로 나누어 개발
      3. 코드 리뷰: 코드의 품질을 높이기 위해 동료 개발자 간의 코드 검토
      4. 산출물: 소스코드, 실행파일

 


4. 테스트(Testing)

- 목적: 구현된 소프트웨어가 요구사항을 충족하는지, 오류가 없는지 확인하는 단계
- 테스트의 유형
      1. 단위 테스트(Unit Test): 개별 모듈이 올바르게 동작하는지 테스트
      2. 통합 테스트(Hitegration Test): 모듈 간의 상호작용이 동작하는지 테스트
      3. 시스템 테스트(System Test): 시스템 전체가 요구사항을 충족하는지 확인
      4. 회귀 테스트(Regression Test): 수정된 코드가 다른 부분에 영향을 주지 않는지 테스트
- 주요 활동
      1. 테스트 케이스 작성: 각 기능에 대해 수행할 테스트 항목 정의
      2. 버그 수정: 테스트 과정에서 발견된 오류를 수정
      3. 산출물: 테스트 결과 보고서, 수정된 코드

5. 배포(Deployment)

- 목적: 테스트가 완료된 소프트웨어를 실제 환경에 배포하고 사용자에게 제공하는 단계
- 주요 활동
      1. 배포 준비: 배포 전 소프트웨어 패키징 및 배포 계획 수립
      2. 실제 배포: 소프트웨어를 서버에 배포하거나 사용자에게 설치할 수 있도록 제공
      3. 배포 후 모니터링: 배포 후 발생하는 문제를 모니터링하고 즉시 대응
      3. 산출물: 설치 프로그램, 배포 문서

 6. 유지보수(Maintenance)

- 목적: 배포된 소프트웨어가 지속적으로 안정적으로 동작할 수 있도록 문제를 해결하고, 필요에 따라 새로운 기능을 추가하거나 성능을 개선하는 단계
- 유형
      1. 수정 유지보수(Corrective Maintenance): 버그 수정이나 오류 처리
      2. 예방 유지보수(Preventive Maintenance): 미래의 문제를 방지하기 위한 예방적 조치
      3. 적응 유지보수(Adaptive Maintenance): 운영 환경 변화에 맞추어 시스템을 수정
      4. 완전 유지보수(Perfective Maintenance): 성능 향상 또는 신규 기능 추가
- 주요 활동
      1. 버그 수정: 사용자나 시스템에서 발견된 문제 해결
      2. 기능 개선: 새로운 요구사항에 따라 소프트웨어 기능 업데이트
      3. 성능 개선: 시스템의 성능을 향상시키기 위한 최적화 작업
      4. 산출물: 수정된 코드, 업데이트된 문서

 


SDLC의 **모델**

SDLC는 다양한 모델에 따라 적용될 수 있음. 프로젝트의 특성에 맞는 모델을 선택하는 것이 성공적인 소프트웨어 개발을 위한 핵심

1. 폭포수 모델(Waterfall Model)

- 단계가 순차적으로 진행되며 각 단계가 완료된 후에 다음 단계로 넘어가는 방식
- 절차: 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 장점: 각 단계가 명확하게 정의되어 있어 관리가 용이함
- 단점: 초기 요구사항 변경에 유연하지 않음

 

2. V-모델(V-Model)

- 폭포수 모델을 확장한 형태로 각 개발 단계바다 대응하는 테스트 단계가 있음
- 장점: 테스트를 개발 단계와 병행하여 품질을 높일 수 있음
- 단점: 폭포수 모델과 같이 유연성이 부족함

 

3. 프로토타입 모델(Prototype Model)

 - 사용자의 요구사항이 불명확하거나 프로젝트의 요구사항이 자주 변경될 가능성이 있는 경우에 사용
 - 장점: 명확한 요구사항 도출, 사용자 참여가 가능, 리스크 감소
 - 단점: 시간과 비용의 증가, 비효율성

 

4. 나선형 모델(Spiral Model)

- 리스크 분석을 기반으로 소프트웨어를 점진적으로 개발하는 방법
- 절차: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 장점: 리스크를 줄이면서 대규모 프로젝트에 적합
- 단점: 복잡한 구조와 높은 비용

 

6. 반복적 모델(Iteration Model)

- 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 모델

 

5. 애자일 모델(Agile Model)

- 개발을 반복적이고 점진적으로 진행하며, 짧은 주기로 피드백을 받아 개선하는 방식
- 장점: 고객 요구 변화에 신속히 대응 가능, 빠른 피드백
- 단점: 대규모 프로젝트나 명확한 요구사항이 필요한 프로젝트에서는 효율성이 떨어질 수 있음


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함