[정보처리기사도전기]#2 소프트웨어 수명주기

Ben·2021년 7월 6일
0

2. 소프트웨어 수명주기

계획 -> 분석 -> 설계 -> 구현 -> 시험,디버깅 -> 운영/유지보수
What: 계획, 분석
How: 설계, 구현, 시험, 디버깅, 운영/유지보수

(1) 소프트웨어의 생명주기 개요

  • 소프트웨어 제작 공정 과정이다.
  • 시스템 개발주기(System Development Life Cycle: SDLC)라 부른다
  • 개발 단계에서 점차 변화해 가면서 나오는 소프트웨어 형상(configuration)을 기사화한다.
  • 소프트웨어가 개발되기 위해 정의되고 사용이 완전히 끝나 폐기될때까지의 전 과정이다.

(2) 일반적인 소프트웨어 생명주기

1) 정의 단계

  • 무엇(What)을 개발할 것인지를 명확히 밝히는 단계
  • 시스템 정의와 프로젝트 계획 및 사용자 요구분석을 하는 단계
  • 관리자와 사용자의 참여가 가장 높은 단계

2) 개발 단계

  • 어떻게(How) 개발할 것인지에 대한 절차를 밝히는 단계
  • 설계구현, 시험 단계
  • 설계는 품질에 많은 영향을 미치는 단계

3) 지원 단계 (유지보수 단계)

  • 수정 및 변경에 관한 문제를 다루는 단계
  • 가장 오랜 시간이 들며 비용이 가장 많이 들어가는 단계
  • 유지보수의 유형 : 완전, 수정, 적응, 예방 유지보수

(3) 소프트웨어 수명주기 모형(폭포수형 모형(선형순차모형, 전형적인 생명주기 모형 : Boehm, 1979))

1) 개요

  • 소프트웨어의 개발 시 프로세스에 체계적인 원리를 도입할 수 있는 첫 방법론이다.
  • 적용사례가 많고 널리 사용된 방법이다.
  • 단계별 산출물이 명확하다.
  • 각 단계의 결과가 확인된 후에 다음 단계로 진행하는 단계적, 순차적, 체계적인 접근 방식이다.
  • 기존 시스템 보안에 좋다.
  • 응용 분야가 단순하거나 내용을 잘 알고 있는 경우 적용한다.
    비전문가가 사용할 시스템을 개발하는 데 적합하다.

2) 단계
[1] 계획단계

  • 문제를 파악하고 시스템의 특성을 파악하여 비용과 기간을 예측한다.
  • 개발의 타당성을 분석하고 전체 시스템이 갖추어야 할 기본기능과 성능 요건을 파악한다.
    문제제기
    예측(비용, 일정)
    팀구성

[2] 요구 분석 단계

  • 사용자 요구를 정확히 분석, 이해하는 과정으로 구현될 시스템의 기능이나 목표, 제약사항 등 정확히 파악한다.
  • 소프트웨어의 기능, 성능, 신뢰도 등 목표 시스템의 품질을 파악하는 것이다.
    요구사항 파악
    요구사항 = 기능 -> 기능요구
    비기능요구 -> 성능, ...등

[3] 설계 단계

  • 요구사항을 하드웨어 또는 소프트웨어 시스템으로 분배하는 과정이다.
  • 모든 시스템의 구조를 결장하게 되는데, 소프트웨어 설계는 프로그램의 데이터 구조, 소프트웨어 구조, 인터페이스 표현, 알고리즘의 세부 사항들에 초점을 맞춰 진행한다.
  • 한 개 이상의 실행 가능한 프로그램으로 변환할 수 있는 형태로 소프트웨어의 기능을 표현한것이다.
    기본설계(개략설계)
    상세설계 -> 구조, 알고리즘

[4] 구현 단계

  • 설계의 각 부분을 실제로 프로그래밍 언어를 이용하여 코드화하는 단계이다.
  • 각 모듈(module) 단위로 코딩을 한다.
    코딩
    프로그래밍

[5]시험 단계

  • 각 프로그램 단위의 내부적으로 이상 여부 및 입력에 따라 요구되는 결과로 작동하는지의 여부를 확인한다.
    오류수정

[6] 운영(operation) 및 유지보수(maintenancce) 단계

  • 사용자에게 전달되어 실제로 사용되며, 전달 이후에 발생하는 변경이 있다면 변경 요구를 수용하고 계속적인 유지를 해주어야 한다.
    인수인계

3) 폭포수 모델의 문제점

  • 단계별로 구현되지만, 병행되어 진행되거나 다시 거술러 올라 갈 수 없으며, 반복을 허용하지 않는다.
  • 실제 프로젝트가 순차적이라기보다는 반복적인 성향을 가지므로 개발 모델로 적합하지 않은 경우가 많다. 그래서 실제 프로젝트 수행 시 이 모델의 연속적 단계를 따르는 경우가 드물다.
  • 시초에 사용자들의 모든 요구사항들을 명확히 설명하는 것이 어렵다.
  • 모든 분석은 프로젝트가 시작되기 전에 완성되어야 한다. 즉, 프로그램의 모든 요구사항을 초기에 완전히 파악하도록 요구하므로 개발 프로젝트의 불명확성을 미연에 방지할 수 없다.
  • 개발 과정 중에 발생하는 새로운 요구나 경험을 설계에 반영하기 힘들다.
profile
프로그램을 만드는것을 업으로 삼은 사람입니다

0개의 댓글