3학년 2학기 공부 과정/소프트웨어공학

02. 프로세스와 방법론

환성 2022. 12. 19. 21:52
728x90

프로세스와 방법론의 비교

 

 

2.1 소프트웨어 생명주기

  • SW 개발에 대한 기술적, 관리적 이슈를 다루는 작업
  • 서로 다른 목적, 서로 협력하여 전체 목적 만족

 

2.2 프로세스

  • SW 시스템을 구축하기 위하여 수행되는 작업 단계
  • SW 개발에 대한 기술적, 관리적 이슈를 다루는 작업
  • 프로젝트 중심 프로세스
    • 개발 프로세스
    • 관리 프로세스
  • 기타 프로세스
    • 형상 관리 프로세스
    • 프로세스 관리 프로세스

 

 

프로세스의 정의

  • 작업 결과와 검증 조건 명확히 정의
  • 작업 방법
  • 진입 조건, 출구 조건

 

  • 좋은 프로세스 특성 : 예측 가능성, 테스팅과 유지보수 용의성
  • 좋은 프로세스 특성2 : 변경 지원, 결함 제거

2.3 프로세스 모델

  • 일반적인 모델이 될만한 프로세스를 기술한 것
  • 대표적인 프로세스 모델
    • 폭포수 모델
     
    • 프로토타이핑 모델
    • 나선형 모델
    • 진화적 모델
    • Unified Process
    • 애자일 프로세스

폭포수 모델(Waterfall model)

  • 가장 오래되고 널리 사용된 프로세스 모델
  • 각 단계가 다음 단계 시작 전에 끝나야 함(순서적)
  • 직능 중심의 프로젝트
  • 결과물 정의가 중요, 크고 복잡한 오래 지속되는 프로젝트에 적합
  • 프로세스가 단순하여 초보자 쉽게 적용 가능, 중간 산출물이 명확, 관리 용이
  • 소용없는 다종 문서 생산, 애매한 부분이 남아 있을 때 수용 X, 시스템 완성 후 시작(시간 오래 걸림)

 

V 모델(V model)

  • 검증을 강화하는 관점에서 폭포수 모델 확장한 모델

프로토타이핑 모델(Prototyping model)

  • 요구 사항에 대한 피드백을 받기 위해 시스템을 실험적으로 만들어 사용자에게 보여주고 평가하는 방법
  • 도구
    • 화면 생성기
    • 시스템의 작동을 시뮬레이션 하여 사용자가 볼 수 있는 반응 보여줌
  • 공동 참조 모델
    • 사용자와 개발자의 의사소통을 도와주는 좋은 매개체
  • 목적
    • 단순한 요구 추출 - 만들고 버림
    • 제작 가능성 타진
  • 장점
    • 사용자 의견 반영 Good
    • 사용자 관심 증대, 개발자는 요구 명확히 도출
  • 단점
    • 오해, 기대심리 유발
    • 관리가 어려움
  • 적용
    • 개발 착수 시점에 요구가 불투명할 때
    • 실험적으로 실현 가능성 타진해보고 싶을 떄

 

나선형 모델(Spiral model)

  • SW의 기능을 나누어 점증적으로 개발
    • 실패 위험 줄임
    • 테스트 용이
    • 피드백
  • 여러 번의 점증적인 릴리스(incremental release)
  • 반복 순환 단계
    • 목표, 방법, 제약 조건 설정
    • 위험 요소 분석 및 해결
    • 개발과 평가
    • 다음 단계의 계획
  • 장점
    • 대규모 시스템 개발에 적합
    • 반복적인 개발, 테스트
  • 단점
    • 관리가 복잡
    • 위험 분석을 잘못하여 지나친 경우 피해가 큼
    • 성공 사례가 많지 않음
  • 적용
    • 재정적 또는 기술적 위험 부담이 큰 경우
    • 요구 사항이나 아키텍처 이해가 어려운 경우

 

 

진화적 모델(Evolution model)

  • 개발 사이클이 짧은 환경
    • 빠른 시간 안에 시장에 출시하여야 이윤 직결
    • 개발 시간 줄이는 법 - 시스템을 나누어 릴리스
  • 릴리스 구성 방법
    • 점증적 방법 - 기능별 릴리스
    • 반복적 방법 - 릴리스 할 떄마다 기능의 완성도 높임
  • 장점
    • 몇 가지 부족해도 초기에 사용 가능
    • 사용자 요구 빠르게 반영
    • 새로운 기능을 가진 SW에 대한 시장 빨리 형성
    • 문제를 신속, 꾸준하게 고쳐 나갈 수 있음
  • 단점
    • 큰 프로젝트에 부적합
    • 실패의 위험이 큼
    • 프로젝트 진행이 위험 분석에 크게 의존

Unified 프로세스

  1. 도입(inception)
    1. 1, 2회 정도 반복으로 도입 단계 진행
    1. 유스케이스 모델, SW 구조, 계획 작성
  1. 정련(elaboration)
    1. 여러 번 반복 과정으로 이뤄짐
    1. 대부분 유스케이스 작성
    1. 아키텍처 설계
  1. 구축(construction)
    1. 남아 있는 유스케이스에 대하여 구현 통합
  1. 전환(transition)
    1. 시스템 배치 , 사용자 교육
    1. 베타 테스팅, 결함 수정, 기능 개선
  • 장점
    • 문서화가 잘 되어 있어 교육받기 좋음
    • 시간, 노력 줄임
    • 쉽고 빠르게 코드 재사용
  • 단점
    • 프로세스가 너무 복잡, 이해하기 어렵고 적용 X
    • 의사소통에 대한 가이드 X

 

애자일 프로세스

  • 2~6주간의 짧은 주기로 개발 반복
  • 실행되는 소프트웨어를 개발하여 단계적으로 시스템 전체 완성
  • 애자일 선언
    • 형식적인 문서보다 커뮤니케이션을 통하여 프로젝트가 목표를 향하여 나아가게 함
    • SW을 통하여 요구 확인
    • 사용자 요구는 비즈니스 환경에 따라 프로젝트 중간에 바뀔 수 있음
    • 짧은 주기 동안 요구정의에서 구현, 테스트까지 이루어지며 각 반복 주기의 반성의견을 다음에 포함

익스트림 프로그래밍(eXP)

  • 사용자 스토리, 매일 빌드와 통합, 테스트 주도 개발, 페어 프로그래밍

 

스크럼(Scrum)

  • 개발 팀원 모두가 함께 소통하고 협력하여 짧은 주기를 반복하며 SW를 개발 하는 작업, 역할, 결과물
  • 백로그를 정하고 여기에 우선순위 분여
  • 짧은 주기(스프린트)

2.4 지원 프로세스

  • ISO/IEC 12207에서의 프로세스 그룹

 

 

관리 프로세스

  • 비용과 품질 목표를 달성하기 위하여 프로젝트 관리하는데 필요한 모든 작업
  • 프로젝트 모니터링과 제어는 개발 프로세스의 모든 단계를 포함하므로 가장 긴 기간 동안 이루어짐

 

품질 보증 프로세스

  • 프로세스와 프로덕트와 대한 품질을 관리하고 향상
  • 인스펙션 프로세스
    • 개발 결과에서 결함을 찾거나 방지하기 위한 노력
    • 정의된 프로세스에 따라 동료 그룹이 작업 결과를 검사
  • 프로세스 관리 프로세스

 

형상 관리 프로세스

  • 개발 중에 발생하는 변경을 체계적으로 컨트롤 하는 것
  • 개발 작업과 독립적인 작업

2.5 방법론

  • SW 프로세스의 각 작업을 어떻게 수행하느냐를 정의
  • 프로세스
    • 일반적으로 개발할 때 하여하는 할 작업만을 명시
    • 어떤 관계가 있는지 나타내지 않음

 

구조적 방법론

  • 분리와 정복 원리 적용
  • 자료 흐름도를 구조도로 변경하는 과정

 

정보공학 방법론

  • 기업 중심
  • 전략적 시스템 계획 중심
  • 데이터 중심
  • 분할과 정복
  • 공학적 접근
  • 사용자의 적극적 참여

 

객체지향 방법론

  • 자료와 함수를 가까운 곳에 정의하여 객체로 묶고 객체 사이 메시지를 호출하여 원하는 기능 담당

 

세 가지 방법론 비교

'3학년 2학기 공부 과정 > 소프트웨어공학' 카테고리의 다른 글

05. 요구 모델링  (0) 2022.12.21
04. 요구 분석  (2) 2022.12.19
03. 프로젝트 계획과 관리  (0) 2022.12.19
01. 소프트웨어 공학 개요  (0) 2022.12.16
00. 소프트웨어 공학 소개  (0) 2022.12.16