ProcessModel

소프트웨어 프로세스 모델

다루는 주제

소프트웨어 개발이란 무엇인가

소프트웨어 개발 프로세스

소프트웨어 개발은 지속적이고 절차적인 활동

위 활동들은 무엇인가요? 뭔데

요구사항에서 최종 시스템까지 그림인데 이걸 말하는걸까

소프트웨어 개발을 위한 여러 경로를 어떻게 표현할 수 있나요?

소프트웨어 프로세스 모델이란

소프트웨어 생산 프로세스

생산 프로세스의 목표

소프트웨어 생명주기 모델 (Software Life Cycle Model)

프로세스 모델이 중요한 이유는?

Pasted image 20241026233648.png
블랙박스 프로세스 (Black-Box Process)

소프트웨어 생산 활동

소프트웨어 프로세스 모델

대표적인 프로세스 모델


Build and Fix Model(빌드 앤 픽스 모델)

Pasted image 20241026234425.png

Waterfall Model(폭포수 모델)

Pasted image 20241026234905.png

  1. 타당성 검토
  2. 요구사항 수집
  3. 설계
  4. 코딩 및 모듈 테스트
  5. 통합 및 시스템 테스트
  6. 제공, 배포 및 유지보수

특징

기여

폭포수 모델의 문제점

폭포수 모델의 변형

Evolutionary Model(진화 모델)

개발 전략

  1. Deliver
    • 실제 사용자에게 무언가를 제공
    • 실제 사용자에게 Deliver하고 피드백 받음
  2. Measure
    • 사용자에게 추가된 가치를 측정
  3. Adjust
    • 관찰된 현실을 기반으로 설계와 목표를 조정

수정가능성은 생명주기 단계에서 사라짐

진화적 모델 2가지 유형:

Incremental Approach(증분 접근법)

Pasted image 20241027013521.png

  1. 첫 번째 빌드구현&테스트
  2. 연속하는 빌드구현, 통합 및 테스트
  3. 제품이 완성될 때까지 반복

증분 접근법 특징

이점

문제점

(Rapid) Prototying(프로토타이핑)

Pasted image 20241027014716.png

  1. 1번째 빌드 구현&테스트(prototype)
    • if prototype이 원하는 형태면 다음 단계 진행
  2. 연속하는 빌드구현, 통합 및 테스트제품이 완성될 때까지 반복

Throw away Prototype

Evolutionary Prototype(진화 프로트타입)

이점

문제점

추가적인 프로트타입 종류

신속한 애플리케이션 개발

소프트웨어 시스템을 신속하게 개발할 수 있는 방법

왜 소프트웨어를 신속하게 개발해야 하는가

신속한 애플리케이션 개발

신속한 소프트웨어 개발에서

신속한 개발 ➔ 애자일 개발

애자일 방법론(Agile Methods)

XP 프로세스 (Extreme Programming)

역할과 책임

XP의 4가지 가치

  1. 의사소통 (Communication)
  2. 단순성 (Simplicity)
  3. 피드백 (Feedback)
  4. 용기 (Courage)
    • 모든 생각, 의견을 공유하기 위해서서

XP의 12가지 실천사항

개발 사이클

Pasted image 20241027111603.png

Scrum(스크럼)

스크럼의 3단계

  1. 초기 단계
    • 대략적인 계획을 수립, 프로젝트의 일반적인 목표를 설정하고 소프트웨어 아키텍처를 설계
  2. 스프린트 사이클
    • 여러 스프린트 사이클이 이어지며, 각 사이클은 시스템의 증분개발
  3. 프로젝트 마무리 단계
    • 프로젝트를 정리하고 필요한 문서 작업을 완료하며, 프로젝트에서 얻은 교훈을 평가

산출물(중요)

스크럼

Pasted image 20241027114412.png

Transformation Model(변환 모델)

문제점

Spiral Model(나선형 모델)

Pasted image 20241027120501.png

Meta model

신중한 프로세스 설계를 통해 고위험 문제를 식별하고 제거하는 데 중점

문제점

V Model

Pasted image 20241027121327.png

특징

장점

단점

CBSE Process (컴포넌트 기반 소프트웨어 공학 프로세스)

DevOps = Develpment + Operations

전통적인 소프트웨어 개발 방식

DevOps 목

DevOps란 무엇인가

Pasted image 20241027125426.png

개발부터 실행까지 DevOps 생명주기
  1. Plan
  2. code
  3. build
  4. test
  5. release
  6. deploy
  7. Operate
  8. Monitor
DevOps의 기본 생각
DevPos의 장점
DevPos Tool Example

Pasted image 20241027130449.png


다른 프로세스 모델

?

프로젝트 특징에 의한 SDLC

Characteristics Waterfall Prototyping Spiral Incremental Iterative Agile
Large scale
Lots of Risks
Ambiguous Reqs.
Long-Term
Sufficient Budget
Easy Technology
High Correctness
Customer Involvement

주요 산출 문서

단계 문서 구성 요소 비고
프로젝트 계획 프로젝트 관리 계획서 - 관리 이슈 (비용, 스케줄, 자원 등)
- 품질 관리 계획
- 형상 관리 계획
요구사항 수집 요구사항 설명서 (RDD 또는 REQD) - 시스템 설명
- 기능적 요구사항
- 비기능적 요구사항
요구사항 분석 소프트웨어 요구사항 명세서 (SRS) - 기능적 분석 모델
- 데이터 모델
설계 소프트웨어 설계 설명서 (SDD) - 초기 설계
- 상세 설계 (데이터, 인터페이스 등)
- 배포
일부 경우에 분리됨
구현 소스 코드 리스트 - 코드
테스트 테스트 계획서
테스트 결과
- 테스트 목표 (종료 기준), 테스트 케이스
- 테스트 실행 보고서

Standards for Software Process

Pasted image 20241027131353.png

ISO/IEC/IEEE 12207

목적

역사

참여 국가

아키텍처 기본 컨셉

Pasted image 20241027131700.png

프로세스 기본 컨셉

Pasted image 20241027131823.png

Legacy Software

동기

Reengineering = Reverse engineering + Forward engineering

  1. Reverse engineering(역공학)
  2. 소스코드를 넣고 툴을 돌리면 클래스 구성 등의 정보를 줌
  3. refactoring
  4. Forward engineering(순공학)