소프트웨어 프로세스와 생명 주기
프로세스
주어진 목적을 위해 수행되는 일련의 절차.
프로세스를 사용하는 조직원들의 공통된 행동 양식을 지정한다.
사람, 기술, 조직 구조, 관리 등을 전체적으로 통합한다.
소프트웨어 개발 프로세스
- 소프트웨어 개발의 목표 : 정해진 기한 내에, 주어진 예산을 이용해 사용자가 원하는 품질 수준으로 개발하는 것.
- 프로젝트 실패 : 요구사항이 복잡, 규보가 커짐 → 개발 난이도의 상승
- 소프트웨어 개발 프로세스의 중요성 : “소프트웨어 제품의 품질은 그 제품을 만들기 위해 사용된 프로세스의 품질에 의해 결정된다.” [Watts S. Hemphery 아저씨가]
소프트웨어 개발 프로세스를 정의한 자료 : IEEE_STD_610, Olson et al, SEI CMM 등…
소프트웨어 개발 생명주기
SDLC라고도 한다. (Software Development Life Cycle)
소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정을 뜻하는 용어.
소프트웨어를 개발하는 방식을 추상적으로 표현한다.
특징
- 개발 생명주기의 각 단계에 관련된 활동들이 정의되어 있음.
- 단계별 활동들을 통해 다음 단계에 활용될 수 있는 산출물 작성.
- 전체 프로젝트의 비용 산정과 개발 계획을 수립할 수 있는 기본 골격 제시.
- 참여자들 간에 의사소통의 기준과 용어의 표준화를 가능하게 함.
- 문서화가 충실한 프로젝트 관리를 가능하게 만듬.
종류
- 주먹구구식 개발 모델 (build-fix model)
- 폭포수 모델 (waterfall model)
- 프로토타이핑 모델 (prototyping model)
- 나선형 모델 (spiral model)
주먹구구식 개발 모델
요구사항 분석, 설계 단계 없이 일단 개발에 들어가서 될 때까지 수정하기.
규모가 매우 작은 프로젝트에선 적용할 수 있지만…
계획이 없다.
프로젝트의 진행 상황을 파악하기 어렵다.
개발 문서가 없기에 개발해도 유지보수가 어렵다.
폭포수 모델
이전 포스팅
2022-03-07 소프트웨어_분석_및_설계_1
2022-03-07 강의 내용 정리. 1. 시스템 개발 과정의 이해 학습목표 1.1 소프트웨어 위기 소프트웨어 위기 많은 개발 프로젝트에서 개발기간 지연, 실패, 중도 포기가 발생했다. 🙁 운영 시에도 문제점 수정과 보완을 위해 추가 인력 및 비용이 필요했음. 소프트웨어는 비가시성이란 하드웨어와는 다른 성질을 지닌다. 비가시성은 소프트웨어 개발기간을 지연시키고, 유지, 보수 그리고 관리하기 어렵게 한다. 소프트웨어는 하드웨어에 비하여 유지보수 단계에서 높은 비용이 발생한다. 그렇기에 표준화하고 단순하게 만들기위해서 노력한다. 같은 맥락으로 readablity를 상승시키기 위해 노력했다. 표준화, 규격화하긴 위한 노력이 이어졌고 이는 소프트웨어 공학 탄생으로 이어졌다. 소프트웨어 공학 정의 소프트웨어 공학이란? (IEEE 기준) 소프트웨어의 개발, 운영, 유지 보수 및 파기에 대한 체계적인 접근 방법으로 … 더 읽기
순차적으로 소프트웨어를 개발하는 전형적인 개발 모델.
가장 많이 사용되는 모델.

단계
- 요구사항 분석 : 기능적 비기능적 요구사항을 구별할 줄 알아야 한다.
- 설계
- 구현
- 테스팅
- 유지보수

프로토타이핑 모델
폭포수 모델의 단점을 보완.
점진적으로 개발.
프로토타입을 만들고 고객과 사용자의 피드백을 (요구사항을) 정제하여 보충된 요구사항 명세서 작성.
요구사항이 불분명할 경우 유리하다.

단계
- 요구사항 정의
- 신속 설계 : 인터페이스에 초점
- 프로토타입 개발 : RAD(Rapid Application Development) 도구 등을 사용
- 고객 평가
- 프로토타입 정제