Programmer!/Good Program

S/W Process

petitCoding 2012. 4. 12. 11:28

Software process

 : 소프트웨어 시스템을 개발하기 위해 요구된 활동들의 집합(요구사항 명세화, 설계, 확인, 진화)

   소프트웨어 프로세스 모델은 프로세스의 추상적 표현이다.

1. 폭포수 모델

: 요구사항 정의-시스템/소프트웨어 설계-실행/테스트-통합/시스템 테스트-유지보수 의 단계

  소프트웨어 개발 프로세스중 가장 첫번째로 발표된 모델이다.

  시스템 공학 프로세스로부터 유도됨. 순차적 프로세스 모델로 위의 단계로 개발이 진행되며 각 개

  발이 끝날때마다 과정의 끝을 알리고 산출물이 출력된뒤 다음단계로 진행된다.

  프로젝트의 수행 단계의 파악이 용이하지만 실제 프로젝트는 요구사항이 안정적이지 않고 명확한

  단계를 구분하기 어려우며 변경을 수용하기도 어렵다.

 

2. 진화적 개발

: 실험적 개발 - 고객과 함께 요구사항을 찾아내며 최종 시스템 만든다. 시스템은 고객에의해 제안된 새로운 기능을 추가하여 발전된다(고객과 함께 작업

  쓰고 던지는 프로토타이핑 : 이해가 잘 되지 않는 고객의 요구사항을 실험하는데 집중

  장점- 고객의 즉각적 요구사항 반영, 빠른 피드백, 시스템의 이용성을 높인다.

  단점 -산출물관리가 용이하지 않으며 요구사항의 계속적인 변경으로 소프트웨어의 구조 훼손 가

  능성이 있다.

  적용가능한것 - 작거나 중간규모의 상호작용 시스템, 큰시스템의 한 부분, 짧은 수명을 가지는 시

  스템

 

3. 컴포넌트 기반 소공

: 소프트웨어 프로젝트의 대부분은 재사용을 기반. (각 단계에 의한 산출물 필요)

 

 

-프로세스 반복

: 프로젝트 과정에서 시스템 요구사항은 항상 진화한다. (소프트웨어 프로세스가 한번에 끝나는 프로세스가 아니라는것 의미) ->점증적 인도, 나선형 개발 이용.

===Final system이미 존재, 요구사항 증가===

1. 점증적 인도 : 폭포수 모델과 진화적 개발의 장점을 결합한 중간적인 방법

  소프트웨어의 요구사항 명세화, 설계, 구현이 여러개의 증분(구사항 단위)로 나누어져 개발

 증분에 대한 서비스의 할당은 사용자 요구사항의 높은 우선순위에 의해 좌우된다.

->고객은 전체 시스템이 인도될때까지 기다릴 필요가 없다. 첫번째 증분은 고객의 가장 중요한 요구사항을 만족시키기에 소프트웨어를 즉시 사용 가능함.

전체 프로젝트 실패에 대한 위험이 적다.

가장 높은 우선순의 서비스가 먼저 인도되고 추후의 증분이 통합되기 때문에 가장 중요한 시스템 서비스가 가장 많이 시험된다. ->고객이 시스템의 가장 중요부분에서 소프트웨어 실패를 만날 확률이 적게 된다는것 의미.

*Agile method(빠른 배달을 위해)

->설계보다 코드에 포커스가 잡힌다. 시간이 없으니까 코딩부터 먼저하라. 소프트웨어 개발을 위해 반복적인 접근에 기반을 둔다. 작거나 중간 크기의 프로젝트에 적합. 하나의 예로 Extreme programming을 들수 있다. 증분 개발이 되면 고객에게 즉시 인도되어진다.

 

2. 나선형 개발 : 소프트웨어의 프로세스를 나선으로 나타낸다. 목표 설정, 위험평가및 감소, 개발과 검증, 계획 수립의 4단계를 계속 반복한다.

-목표설정 : 프로젝트 단계에 대한 목표 설정, 제약조건 식별, 대안전략 수립

-위험 평가및 감소 : 위험을 식별, 상세분석, 위험을 줄이기 위한 단계가 취해짐

-개발과 검증 : 위험 평가후 시스템에 대한 개발 모델이 선택됨

-계획 수립 : 프로젝트가 검토되고, 나선에 대한 추가 반복을 수행할지에 대해 결정

장점 : 초기위험 제거, 대규모 시스템에 적합, 프로젝트가 실패로 끝날수 있는 위험을 방지하는방법.

단점 : 위험 평가를 위한 전문적 지식을 요구, 정제가 어려우며 효과를 본 조직이 많지 않다.

 

 

프로세스 활동

1. 소프트웨어 명세화: 요구공학이라고도 한다. 시스템에서 요구되는 서비스 정의/이해

-요구공학 프로세스 : 타당성 조사, 요구사항 추출 및 분석, 요구사항 명세화, 요구사항 검증

2. 소프트웨어 설계 : 설계자가 받아서 설계문서 제작. 알고리즘 정의

-설계 프로세스 : 구조설계, 추상명세, 인터페이스 설계, 컴포넌트 설계, 자료구조/알고리즘설계

3. 소프트웨어 구현 : 설계문서를 프로그래머에게 주면 코딩함.

4. 소프트웨어 확인 : 고객의 요구사항대로 시스템이 잘 돌아가는지 확인

-Verification : 문서들이 일관성이 있는지 없는지 검증

5. 소프트웨어 진화 : 새로운 요구사항 발생시 수행.

 

-알파테스팅 : 특정 고객이 존재하며 미리 고객의 요구사항이 준비되어있다.

-베타테스팅 : 불특정 다수 고객에게 뿌림.

 

RUP(The Rational Unified Process)

-UML(Unified Modeling Language)와 관련된 프로세스 모델

-동적 관점, 정적 관점, 실무 관점에서 나온 UML기반의 프로세스.

 

RUP phases

-개념화, 초기 구조 구축단계, 시스템 완성 단계, 시스템 이전 단계 각 단계마다 마일스톤 생성.

반응형

'Programmer! > Good Program' 카테고리의 다른 글

Design Pattern  (0) 2012.08.28
S/W 계층 구조  (0) 2012.04.12
Critical System  (0) 2012.04.12
소프트웨어 공학 - 프로젝트 관리  (0) 2012.04.12
소프트웨어 공학, 개론.  (0) 2012.04.12