소프트웨어공학

[소프트웨어공학] 4. Software Processes (2)

leziwn.cs 2023. 9. 21. 19:01
Coping with change (변경에 대처하는 방법)

▶ 모든 대규모 소프트웨어 프로젝트에서 변경은 불가피하다.

  • 비즈니스 변화 --> 새롭고 변경된 시스템 요구사항
  • 새로운 기술 --> 설계, 구현 개선에 대한 새로운 접근 가능성
  • 플랫폼 변경 --> 애플리케이션 변경

 
▶ 변경 비용

  • 요구사항 재분석
  • 새로운 기능 구현
  • 수정에 대한 검증

 

Reducing the costs of rework 

▶ 프로토타이핑
▶ 점증적 인도 (incremental development process)
 


Prototype system (프로토타입 시스템)

▶ 프토토타입
: 제품의 아이디어를 시연하고, 디자인 선택 사항들을 시도해볼 수 있는 시스템의 초기 버전 (=/= 최종적인 결과물)
 
▶ 프로토타입 사용

  • 요구공학 프로세스: 시스템 요구사항 도출, 검증
  • 설계 프로세스: 소프트웨어에서 선택 가능한 옵션 탐색, UI 개발(UI 개발 시, 프로토타입을 활용해서 수정한다.)

 

Benefits of prototyping
  • 사용자의 설계 요구사항에 가까워질 수 있다. 
    (프로토타입 시스템은 시스템의 일부 주요 기능을 고객에게 보여주기 위해 개발될 수 있다.)
  • 사용성 향상
  • 디자인 품질 향상
  • 개발 노력 감소

 

Prototype development

▶ 프로토타입 사용 시 주의점

  • 신속한 프로토타이핑 언어 또는 도구를 기반으로 할 수 있다.
  • 프로토타입은 잘 이해되지 않는 제품 영역에 초점을 맞춰야 한다.
  • 오류 검사/복구는 프로토타입에 포함되지 않을 수 있다.
  • 비기능 요구사항보다 기능 요구사항에 중점을 둔다.

 
▶ 폐기(Thrown-away) 프로토타입 -- 프로토타입은 생산 시스템의 좋은 기반이 아니므로 개발 후 폐기해야 한다.

  • 비기능 요구사항을 충족하도록 시스템을 조정하는 것은 불가능할 수 있다.
  • 프로토타입은 일반적으로 문서화되지 않는다.
  • 프로토타입 구조는 일반적으로 급격한 변경으로 인해 저하된다.
  • 프로토타입은 일반적인 조직의 품질 표준을 충족하지 못할 수 있다.

--> 프로토타입: 요구공학 프로세스(요구사항 도출/검증), 설계 프로세스(옵션 탐색, UI 개발)에서만 사용한다.
 


Incremental delivery (점증적 인도)
  • 시스템을 한번에 제공하는 대신, 개발과 인도를 증분(increments)으로 나누고, 개발을 마친 증가분 일부를 고객에게 전달한다.
  • 사용자 요구사항에 우선순위를 정하고, 가장 높은 우선순위 요구사항이 초기 증분에 포함된다.
  • 일단 증분에 대한 개발이 시작되면, 추가적으로 요구사항을 분석할 수 있지만, 현재 증분에 대해서는 요구사항이 동결된다.

 


Boehm's spiral model

: 프로토타이핑과 점증적 인도 원리를 통합한 모델

  • 프로세스를 나선형으로 표시한다.
  • 나선형의 각 루프 = 프로세스의 단계
  • 위험(Risk)은 프로세스 전반에 걸쳐 명시적으로 평가되고 해결된다.

 

Boehm's spiral model of the software process

 

Spiral model sectors
  • 목표 설정 (Object setting): 단계에 대한 특정 목표를 식별한다.
  • 위험 평가 및 감소 (Risk assessment and reduction): 위험을 평가하고, 주요 위험을 줄이기 위한 활동을 수행한다.
  • 개발 및 검증 (Development and validation): 시스템 개발 모델(일반 개발 모델이 될 수 있음)을 선택/수행한다.
  • 계획 (Planning): 프로젝트를 검토하고, 나선형의 다음 단계를 계획한다.

 

Spiral model usage
  • 나선형 모델은 사람들이 소프트웨어 프로세스의 반복에 대해 생각하도록 돕고, 위험 중심 접근 방법을 도임하는데 영향을 미친다.
  • 그러나 나선형 모델은 실제 소프트웨어 개발을 위해서는 거의 사용되지 않는다.