2022-09-20 소프트웨어공학_3

2022. 9. 20. 01:51학부 강의/소프트웨어공학

소프트웨어 개발 생명 주기

 

저번 시간에 이어서 소프트웨어 개발 생명 주기의 종류에 대하여 알아본다.

 


나선형 모델

 

폭포수 모형의 장점 + 원형 모형의 장점을 수용하고 위험 분석을 추가한 점증적 모델

 

프로젝트 수행 시 발생하는 위험을 관리하고 최소화하려는 것이 목적

 

각 단계가 명확히 구분되지 않음.

 

 

고비용의 시스템 개발이나 시간이 많이 소요되는 큰 시스템 구축에 적합.

 

 


소프트웨어 개발 방법론

 

소프트웨어 개발 생명주기 내의 각 단계에서의 수행 방법과 활동들을 구체적으로 정의한 것

 

종류

  • UP (Unified Process)
  • XP (eXtreme Programming)
  • 마르미 (한국전자통신연구원 소프트웨어 공학 연구팀에서 국내 여건을 반영한 한국형 소프트웨어 개발 방법론)

 


UP (Unified Process)

 

Jacobson, Booch, Rumbaugh에 의해 개발된 객체지향 소프트웨어 개발 방법론

 

소프트웨어 개발 단계를 시간 순서에 따라 네 개의 범주(도입 → 상세 → 구축 → 이행)로 나눔.

 

각 범주에는 개발 생명주기가 포함되어 있음.

 

 

특징

  • 반복적이고 점진적인 개발
  • 유스케이스 기반
  • 아키텍처 중심의 개발 지향
  • 위험 관리 중시

 

단계

  1. 도입 (Inception)
    • 개발에 관련된 사람들과 개발을 준비
    • 프로젝트의 목표, 실현 가능성, 대략적인 비용을 파악하고 개발 여부 결정
    • 요구사항을 대략적으로 이해
  2. 상세 (Elaboration)
    • 요구사항과 기본적인 아키텍처 작성
    • 시스템 위험 요소를 식별, 완화
    • 구축 단계에 대한 계획 수립
    • 시스템의 중요한 일부 기능에 대하여 구현 및 평가
  3. 구축 (Construction)
    • 설계 기반으로 시스템 구축
    • 거의 모든 시스템 구축 및 평가
  4. 이행 (Transition)
    • 제품의 완성 단계
    • 구현 및 평가 작업
    • 구현을 마무리하고 품질을 보장하여 제품을 인도
    • 인수 테스트, 사용자 교육 진행

 

장점

  • 위험요소를 초기에 완화
  • 진척사항을 가시화
  • 발주자가 원하는 실제 요구사항에 근접
  • 피드백을 반복할수록 개선된 소프트웨어 개발 가능

 


XP (eXtreme Programming)

 

1990년 초 Kent Beck이 고안

 

Agile 소프트웨어 개발 선언문 적용

 

애자일 소프트웨어 개발 선언

우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다.
이 작업을 통해 우리는 다름을 가치있게 여기게 되었다.

* 공정과 도구보다 개인과 상호작용을
* 포괄적인 문서보다 작동하는 소프트웨어를
* 계약 협상보다 고객과의 협력을
* 계획을 따르기보다 변화에 대응하기를

가치있게 여긴다.
이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.

 

XP 용어

 

 

XP 역할

 

 

XP의 개발 활동

 

 

그림에는 없지만 마지막에 고객의 인수 테스트 진행.

 

XP의 가치

 

 

XP의 13가지 실천사항

  1. 계획 게임
  2. 작은 릴리스
  3. 메타포
  4. 단순 설계
  5. 테스트 우선 개발
  6. 리팩토링
  7. pair programming
  8. 공동 코드 소유
  9. 지속적인 통합
  10. 주당 40시간 작업
  11. 고객의 참여
  12. 코딩 표준
  13. 전체 팀