본문 바로가기
Computer Science/Software Engineering

[소공] 2장 프로세스와 방법론

by na1-4an 2023. 9. 12.

0. 프로세스와 방법론 비교

  프로세스 방법론
특징 : 단계적인 작업의 틀을 정의한 것.
무엇을 하는가에 중점
각 단계가 다른 방법론으로도 실현 가능
결과물의 표현에 대해 언급 없음
패러다임에 독립적
: 프로세스의 구체적인 구현
어떻게 하는가에 중점
각 단계의절차, 가이드라인, 기술을 제시
결과물을 어떻게 표현하는지 표시
패러다임에 종속적
사례 폭포수 프로세스
나선형프로세스
프로토타이핑 프로세스
Unified 프로세스
애자일 프로세스
진화적 모형
구조적 분석, 설계방법론
객체 지향 방법론
컴포넌트 기방 개발 방법론
익스트림 프로그래밍

2-1 소프트웨어 생명주기

1. 소프트웨어 생명주기(5)

: (1) 요구 분석  (2) 설계  (3) 구현  (4) 테스팅  (5) 유지보수

 

2-2 프로세스

1. 프로세스 개념(2)

  - 프로세스 명세: 프로젝트에서 수행하여야하는 작업과 수행 순서를 정의한 것

  - 실행 프로세스: 실제 프로젝트할 떄 작업한 순서

2. 프로세스 모델이란?

: 프로젝트를 위한 단계및 순서, 각 단계의 작업 조건이나 제약사항을 모아 놓은 것.

프로세스 명세와 프로세스 모델

3. 프로세스의 종류(4)

프로젝트 중심 프로세스 기타 프로세스
(1) 개발 프로세스 (by 프로그래머, 설계자, 테스터)
    -> 핵심 프로세스. 개발 작업, 품질 보증 작업 포함.
(2) 프로젝트 관리 프로세스 (by 프로젝트 관리자)
    -> 비용, 품질, 일정 등의 작업을 계획, 모니터링.
(3) 형상 관리 프로세스(by 형상 관리자)
    -> 변경을 관리. 버전 관리.
(4) 프로세스 관리 프로세스(by 프로세스 관리 그룹)
    -> 프로세스를 바꾸는 과정

4. 프로세스 정의

(프로세스 관리정보: 프로세스 상태를 나타내는 정보를 생성해 프로세스 제어를 할 때 사용)

5. 좋은 프로세스의 특성(4)

 (1) 예측 가능성: 비용 및 품질 예측

중간의 굵은 선은 이 프로세스 예상 수준

 (2) 테스트와 유지보수 용이성: 테스팅, 유지 보수 노력을 낮추는 것이 목적

 (3) 변경 용이성: 변경을 쉽게 다룰 수 있는 프로세

 (4) 결함 제거 용이성: 각 단계에서 일어난 오류는 그 단계에서 수정되어야함. 요구 분석 단계에서 발생한 오류를 테스팅 단계에서 수정하면 수정비용 100배 소요.

 

2-3 프로세스 모델

1. 폭포수 모델(5)

 #가장 오래됨  #순서적  #직능중심 플젝가능  #파이프라인 가능  #결과물 정의 중요 

  - 장점(3): 단순/ 중간 산출물이 명확/ 대규모 장기간 개발에 적합

  - 단점(3): 필요없는 문서 생산 가능성/ 순차적이라 작업 취소 및 재작업 불가/ 수정 비용이 큼

2. V모델

 #검증 강화  #폭포수 모델 확장

3. 프로토 타이핑 모델

  - 목적(2): 단순한 요구 추출(만들고 버림)/ 제작 가능성 타진(유지보수 이뤄짐)

  - 장점(3): 사용자의 요구사항을 빠르게 수용/ 혁신적인 기술 사용해보고 싶을 때 적합/ 요구사항 불투명할 때 적합

  - 단점(2): 고객이 완성품으로 오해해 과도하게 요구할 수도/ 관리가 어려움(중간 산출문 정의가 난해)

4. 나선형 모델

  #점증적인 릴리스(incremental releases)

  - 단계(4): 목표, 방법, 제약 조건 결정 → 위험 요소 분석 및 해결 → 개발과 평가 → 다음 단계의 계획

  - 장점(6): risk reduction mechanism/ 강인성 향상/ 한 사이클에 추가 못한 기능은 다음 단계에 추가 가능/ 재정적, 기술적 위험부담이 큰 개발에 적합/ 대규모 개발에 적합/ 요구사항이나 아키텍처 이해가 어려운 경우 적합

  - 단점(3): 성공사례 별로 없음/ 관리 복잡/ 위험 분석을 잘못한 경우 피해가 큼

5. 진화적 모델

  - 구성 방법(2): 점증적 방법(기능별로 릴리스), 반복적 방법(릴리스 할 때마다 기능의 완성도 높임)

  - 장점(3): 사용자 요구 빠르게 반영/ 빠르게 시장에 출시해야하는 경우 적합/ 릴리스마다 다른 영역에 초점 가능

  - 단점(3): 소규모 플젝엥는 부적합/ 반복으로 끝이 안보일 수 있어 실패의 위험이 커짐/ 위험 분석에 크게 의존

6. Unified 프로세스

  - 단계(4): 도입(계획작성) 정련(유스케이스작성, 상세설계, 구현) 구축(구현 및 통합) 전환(사용자교육, 베타테스팅)

  - 장점(4): 잘 문서화 돼 교육받기 굳/ 요구변경이나 리스크를 적극적 해결/ 코드 재사용/ 통합을 위한 비용을 줄일 수 있음.

  - 단점(3): 프로세스가 너무 복잡/ 협동, 의사소통에 대한 가이드가 없음/ 조직화되지 않은 개발을 하게 됨.

 

7. 애자일 프로세스

  : 플젝에 대한 피드백을 빨리 받아 2-6주의 짧은 주기로 개발을 반복.

  - 애자일 선언(4): 개인과 상호작용/ 작동하는 소프트웨어/ 고객 협조/ 변경에 대응하는 것을 중점적으로 가치를 두자!

  - 종류(1): 익스트림 프로그래밍 - 소규모 조직, 매일 빌드와 통합, 테스트 주도 개발, 페어 프로그래밍, 인스펙션

  - 종류(2): 스크럼 - SW를 빠르게 배포, 결함을 빠르게 감지 후 수정/ 문서화에 노력x - 새 개발자 어려움/ 지속적인 상호작용 필요로 노력 요구

 

2-4 지원프로세스

1. 시각별 국제 표준 프로세스 그룹(5)

2. 주요 지원 및 관리 프로세스(3)

  - 관리 프로세스: 비용과 품질 목표 달성을 위한 작업.  계획 → 모니터링 분석&제어

관리 프로세스와 개발 프로세스의 관계

  - 품질 보증 프로세스: 프로세스와 프로덕트에 대해 품질을 관리, 향상시키는 것

     (1) 인스펙션 프로세스: 동료 그룹이 작업 결과를 검사하는 것.

           - 특징(4): 전문기술인력이 담당/ 참석자 역할 미리 정해짐/ 해결법이 아니라 문제에 집중/ 검토자료 모니터링에 사용

           - 장점: 결함을 결과물 안에서 찾을 수 있음. 초기에 발견함으로 가성비 높은 품질 보증 작업임.

     (2) 프로세스 관리 프로세스: 플젝 관리는 플젝 기간에만 수행, 프로세스 관리는 플젝 기간을 초과한 긴 시간동안 수행

  - 형상 관리 프로세스: 개발 중에 발생하는 변경을 관리하는 것. 개발 작업과는 독립적임.

2-5 방법론

1. 방법론이란?

: 소프트웨어 프로세스의 각 작업을 어떻게 수행하느냐를 정의. 

2. 방법론 종류(3)

: 복잡성,

  구조적 방법론 정보 공학 방법론  객체지향 방법론
특징 프로그램 로직 중심, 그림을 그려 요구사항 분석, 문서화하는 체계적인 방법 기업 정보 중심이며 전략 계획을 수립한 후 데이터 중심으로 CASE 도구를 사용하여 공학적으로 접근한다. 비지니스를 유스케이스로 분석하고, 자료와 함수를 묶은 클래스를 파악하여 상호작용하는 객체들로 시스템을 구성하는 방법.
설계 관심사 함수 위주 자료(데이터) 위주 클래스 위주
설계의 핵심 모듈 엔티티 객체
중심 방법 프로그래밍 기법 기업의 전략 및 산출물 중심 설계의 표현

구조적 방법론
정보공학 방법론
객체지향 방법론