728x90
지난 글에 이어서 소프트웨어 프로세스에 대해서 알아보자.
The software process (소프트웨어 프로세스)
- 소프트웨어 프로세스란 소프트웨어에서 시스템을 개발하는 데 필요한 구조화된 활동의 집합이다.
- 다양한 소프트웨어 프로세스가 존재하지만 모두 아래의 내용을 포함하고 있다.
- Specification (명세)
- Design and Implementation (Development) (설계 및 구현)
- Validation (Testing) (검증)
- Evolution (Maintenance) (진화)
- 소프트웨어 프로세스 모델
- 특정 관점에서 본 프로세스의 표현으로 볼 수 있다.
Plan-driven and agile processes (계획 주도 및 애자일 프로세스)
- Plan-driven processes
- 모든 활동이 사전에 계획된다.
- 진척도는 이 계획에 따라 측정한다.
- Agile processes
- 계획이 점진적으로 이루어진다.
- 시스템은 여러 버전/증분(version/increments) 으로 개발된다.
- 고객 요구사항 변화에 더 쉽게 대응할 수 있다.
- 실제로는 두 접근법이 혼합되어 사용된다.
- 옳고 그른 소프트웨어 프로세스는 없다.
소프트웨어 프로세스 모델
The waterfall model (폭포수 모델)
- 명세와 개발 단계가 분리되어 있다. (각 단계가 명확히 구분되어, 한 단계가 끝나야 다음 단계로 넘어갈 수 있다.)
- Plan-driven 모델
- 장점
- 각 단계마다 문서화가 이루어진다.
- 단점
- 프로젝트를 명확히 구분된 단계로 나누면 고객 요구 변화에 대응하기 어렵다.
- 대부분의 비즈니스 시스템은 요구사항이 안정적이지 않다.
- 예) 토딩 단계에서 설계 문제 발견 가능
- 프로젝트를 명확히 구분된 단계로 나누면 고객 요구 변화에 대응하기 어렵다.

Incremental development (점진적 개발)
- 기본 아이디어 : 초기 구현 → 사용자 피드백 → 여러 버전을 통해 개선
- 소프트웨어를 증분(increment) 단위로 나누어 개발한다.
- Plan-driven 또는 Agile 모두 가능
- 예) Throw-away prototyping (폐기형 프로토타이핑)
- 더 나은 요구사항 정의를 위해 사용한다.
- 요구사항이 불명확할 때 프로토타입을 구현하여 실제로 필요한 것을 명확히 한다.
- 장점
- 사용자가 시스템을 이해하면서 명세를 점진적으로 개발 가능하다.
- 명세의 불확실성 해결이 쉽다.
- 단점
- 시스템 구조가 약해질 수 있다.
- 변경이 많아질수록 유지보수 비용이 증가한다.
- 어디에 적합한가?
- 소규모/중간 규모의 대화형 시스템
- 사전에 잘 이해되지 않는 대형 시스템의 일부 (예: 사용자 인터페이스)

Integration and configuration (통합 및 구성)
- Reuse-oriented approach
- 기존 컴포넌트나 애플리케이션을 통합하여 시스템을 구축하는 재사용 중심 접근법이다.
- 많은 비즈니스 시스템에서 표준적인 방법이다.
- Plan-driven 또는 Agile 모두 가능
- 장점
- 새로 개발해야할 소프트웨어의 양이 감소한다.
- 비용 및 위험이 감소하며, 빠른 납품이 가능하다.
- 단점
- 요구사항의 타협이 불가피하다.(inevitable)
- 시스템이 실제 사용자 요구를 충족하지 못할 수도 있다.
- 재사용 컴포넌트의 버전이 바뀌면 시스템 진화가 어렵다.
- 요구사항의 타협이 불가피하다.(inevitable)

728x90
재사용 가능한 소프트웨어 유형
- Stand-alone application system (독립 실행형 애플리케이션 시스템)
- 특정 환경에 맞게 구성한다.
- 예) CRM 소프트웨어 (Salesforce, Microsoft, Dynamics 365)
- Collections of objects (패키지로 개발된 객체 집합)
- 컴포넌트 프레임워크와 통합
- 예) Python PyPI, Spring Framework(Java)
- Web Services (웹 서비스)
- 서비스 표준에 따라 개발하고, 원격 호출이 가능하다.
- 예) REST, SOAP
이번 글에서는 소프트웨어 프로세스와 프로세스 모델에 대해 알아보았다.
다음으로 작성할 내용은 프로세스 활동, 소프트웨어 명세, 소프트웨어 설계 및 구현 등에 대해 정리하고자 한다.
728x90
'CS > Software Engineering' 카테고리의 다른 글
| [소프트웨어공학/Software Engineering] Polymorphism 다형성 (0) | 2026.04.10 |
|---|---|
| [소프트웨어공학/Software Engineering] 객체 지향이란? (2) | 2026.04.09 |
| [소프트웨어공학/Software Engineering] 애자일 소프트웨어 개발 (0) | 2026.04.07 |
| [소프트웨어공학/Software Engineering] 소프트웨어 프로세스 (2) (2) | 2026.04.03 |
| [소프트웨어공학/Software Engineering] 소프트웨어란? (0) | 2026.04.02 |