관리 메뉴

RUBY

[220616] 소프트웨어 개발 방법론 _ 소프트웨어 생명주기(작성중) 본문

자격증/정보처리기사

[220616] 소프트웨어 개발 방법론 _ 소프트웨어 생명주기(작성중)

ruby-jieun 2022. 6. 16. 16:48

 

1. 소프트웨어 생명주기(SDLC; Software Development Life Cycle)

 

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화 한 절차
  • 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화 한 것

 

2. 소프트웨어 생명주기 모델 프로세스

 

 

  1) 요구사항 분석

 


     * 다양한 이해 관계자의 상충할 수도 있는 요구사항을 고려하여 새로운 제품이나 변경된 제품에 부합하는
       요구와 조건을 결정하는 단계

     * 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계

     ---

     * 기능 요구사항
     * 비기능 요구사항

 

  2) 설계

 


     * 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계


     ---

     * 시스템 구조 설계

     * 프로그램 설계
     * 사용자 인터페이스 설계

 

  3) 구현

 


     * 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계
     * 프로그래밍 언어 선택 기법, 스타일, 순서 등을 결정하는 단계

     ---

     * 인터페이스 개발
     * 자료 구조 개발
     * 오류 처리

 

  4) 테스트

 


     * 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계

     ---

     * 단위 테스트
     * 통합 테스트
     * 시스템 테스트
     * 인수 테스트

 

  5) 유지보수



     * 시스템이 인수되고 설치된 후 일어나는 모든 활동

     ---

     * 예방, 완전, 교정, 적응, 유지보수

 

 

3. 소프트웨어 생명주기 모델 종류

 

  1) 폭포수 모델(Waterfall Model)

     * 선형 순차 모델(linear sequential model), 고전적 소프트웨어 생명 주기
     * 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어 가는 모델

       (기본적으로 아래 방향으로 진행되나, 실제로는 수정 및 재작업을 위해 이전 단계로의 피드백이 불가피함)

     * 폭포수 모델의 확장 형태로 V 모델이 있음
     * 가장 오래된 모델
     * 모형의 적용 경험과 성공 사례가 많음
     * 단계 별 정의와 산출물이 명확함
     * 요구사항 변경이 어려움

     * 장점
        - 단순한 선형 모델 / 이해 쉬움
        - 단계별로 정형화 된 접근 방법 / 체계적 문서화 가능 / 관리가 편리
        - 프로젝트 진행 상황 명확히 파악 가능

     * 단점
        - 요구사항을 완벽하게 작성해야 함
        - 변경 수용 어려움
        - 시스템의 동작을 후반에 확인 가능
        - 대형 프로젝트에 적용 부적합
        - 지나친 문서화
        - 위험 분석 결여
        - 일정 지연 가능성 큼

 

 

1. 타당성 조사 단계


     * 문제점을 파악하고 해결 방안을 제시하여 투입 대비 이익을 평가

       - 조직 측면의 타당성: 조직의 전략적 목표를 충족하는가
       - 경제적 타당성 : 비용 대비 수익 효과가 큰가
       - 기술적 타당성 : 정해진 시간 안에 현재의 기술 수준으로 개발할 수 있는가
       - 운영의 타당성 : 운영/사용 능력, 다른 시스템과의 연동 가능성 판단

     * 짧은 기간 내에 분석과 미래 예측을 해야하기 때문에 시간적 제약과 정신적 압박감이 존재하는 단계
       - 타당성 조사 보고서: 문제 정의, 해결 방안, 기대 효과, 타당성, 비용, 인도 날짜 등을 포함
 


2. 요구 분석과 명세 단계


     * 프로젝트의 성패를 좌우하는 중요한 단계 - 무엇을 개발할 것인지 결정

     * 요구사항
       - 문제의 해결을 위해 시스템이 갖추어야 하는 조건과 능력
       - 요구사항 명세서, 계약서에 명시

     * 요구사항 명세서(SRS)
       - 발주자-개발자 간의 의사소통 수단
       - 정확성, 일관성, 완전성 필요

     * 요구사항 명세서의 구성
       - 시스템의 목적과 범위 - 문제점을 구체적으로 기술하고 대안을 제시
       - 기능적 요구사항, 비기능적 요구사항, 기타 제약 조건 등을 포함
 


3. 설계와 명세 단계


     * 요구사항을 기반으로 명확하고 조직화된 구조로 설계
     * 설계 단계: 아키텍쳐 설계 → 인터페이스 설계 →  프로그램 설계

     * 설계 방법
       - 전통적(구조적) 설계 방법
       - 객체지향 설계 방법
 


4. 코딩과 단위 테스트 단계


     * 설계 결과를 프로그램으로 작성

     * 구현된 모듈이 명세서를 만족하는지 테스트하여 확인


     * 고려 사항

       - 코딩 표준 준수(코딩 컨벤션)
       - 테스트 절차 준수
       - 코드 인스펙션: 코드의 정적 분석
 


5. 통합과 시스템 테스트 단계


     * 모듈 →  서브 시스템 →  전체 시스템으로 통합

       - 통합 테스트: 모듈들을 통합하여 점증적으로 시스템 구축
       - 시스템 테스트: 최종적으로 통합된 전체 시스템이 요구사항을 만족하는지 확인


     * 알파 테스트
       - 소프트웨어 개발 현장에서 수행
       - 일반 소프트웨어: 테스트 팀이 알파 테스트 수행(내부적 인수 테스트) →  베타 버전 릴리즈
       - 주문형 소프트웨어: 제품 인수 동의가 이루어질때까지 수행(인수 테스트)


     * 베타 테스트
       - 고객의 실제 사용 환경에서 수행
       - 제품 출시 전 릴리즈된 베타 버전으로 가망 사용자로부터 미리 제품 평가
 


6. 인도와 유지보수 단계


     * 인도: 실제 사용을 위해 고객에게 소프트웨어 배포
     * 유지보수(≒진화): 소프트웨어 수정 및 보완 활동
     * 유지보수의 종류
       - 수정 유지보수(corrective maintenance) 오류 수정
       - 적응 유지보수(adaptive maintenance) 환경 변화(하드웨어, OS 등) 대응
       - 완전 유지보수(perfective maintenance) 기능 개선, 성능 향상
       - 예방 유지보수(preventive maintenance) 미래 유지보수성을 향상시키기 위한 활동

 

 

 

  2) 프로포타이핑 모델(Prototyping Model)


     * 고객이 요구한 주요 기능을 프로토 타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
     * 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
     * 프로토타입은 구현 단계의 구현 골격

     * 장점
        - 요구분석 용이
        - 타당성 검증 가능


     * 단
        - 프로토 타입 폐기에 따른 비용 증가


  3) 나선형 모델(Spiral Model)

 

 

     * 시스템 개발 시 위험을 최소화하기 위해 나선으로 돌면서 계획, 위험분석, 개발 평가의 단계를 반복하면서

        점진적으로 소프트웨어를 완성하는 모델
     * 위험분석, 반복개발
     * 개발 된 Prototype을 지속적으로 발전시켜 최종 SW에 이르게 하는 모델
     * 

     * 장점
        - 위험성 감소와 변경에 유연한 대처

     * 단
        - 단계 반복에 따른 관리 어려움

  4) 반복적 모델(Iteration Model)


     * 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
     * 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성하는 모델
     * 증분형(Incremental) 모델과 진화형(Evolutional) 모델 두 가지로 구분 함
     * 증분방식으로 병행 개발 


     * 장점
        - 병행 개발로 인한 일정 단축 가능


     * 단
        - 병행 개발에 따른 관리 비용 증가

 

① 증분형 모델(Incremental)

     * 사용자의 요구사항의 일부분을 반복적으로 개발하여 대상 범위를 확대해가며 최종 제품을 완성해가는 과정

 

     * 특징
        - 폭포수 모델 변형 : 폭포수 모델의 변형으로 증분을 따로 개발하여 통합
        - 개발 기간 단축 : 개발그룹 별 증분의 병행 개발을 통해 개발 기간 단축
        - 관리 어려움 : 증분의 수가 많고 병행 개발이 많으면 관리가 어려움
        - 구조화 한 각 증분 개발 후 통합

     * 장점
        - 병행 개발 시 공정 단축 가능

     * 단
        - 과도한 증분 시 위험 증가

 

② 진화형 모델(Evolutional)

 

 

     * 시스템의 프로토타입을 개발하면서 지속적으로 개선하여 발전시켜 나가는 방법
     * 전체 기능을 대상으로 개발하되, 단계별 기능을 더 완벽하게 개발하는 형태

 

     * 특징
        - Outline 필요 : 다음 단계로의 진화를 위해 전체 과정에 대한 개요 필요
        - 요구사항 진화 : 프로토타입을 만들고 다시 분석하여 요구사항을 진화
        - 시제품 재사용 : 프로토타입의 시스템을 재사용을 전제로하여 진화
        - 구조화 한 각 증분 개발 후 통합

     * 장점
        - 병행 개발 시 공정 단축 가능

     * 단
        - 과도한 증분 시 위험 증가

 

 

Comments