CS/Software Engineering

[소프트웨어공학/Software Engineering] 소프트웨어 프로세스 (1)

binaryroot 2026. 4. 2. 18:57
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 모델
  • 장점
    • 각 단계마다 문서화가 이루어진다.
  • 단점
    • 프로젝트를 명확히 구분된 단계로 나누면 고객 요구 변화에 대응하기 어렵다.
      • 대부분의 비즈니스 시스템은 요구사항이 안정적이지 않다.
      • 예) 토딩 단계에서 설계 문제 발견 가능

waterfall model (워터폴 모델)

Incremental development (점진적 개발)

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

Incremental devlopment

Integration and configuration (통합 및 구성)

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

reuse-oriented approach

728x90

재사용 가능한 소프트웨어 유형

  • Stand-alone application system (독립 실행형 애플리케이션 시스템)
    • 특정 환경에 맞게 구성한다.
    • 예) CRM 소프트웨어 (Salesforce, Microsoft, Dynamics 365)
  • Collections of objects (패키지로 개발된 객체 집합)
    • 컴포넌트 프레임워크와 통합
    • 예) Python PyPI, Spring Framework(Java)
  • Web Services (웹 서비스)
    • 서비스 표준에 따라 개발하고, 원격 호출이 가능하다.
    • 예) REST, SOAP

 

 

이번 글에서는  소프트웨어 프로세스와 프로세스 모델에 대해 알아보았다.

다음으로 작성할 내용은 프로세스 활동, 소프트웨어 명세, 소프트웨어 설계 및 구현 등에 대해 정리하고자 한다.

728x90