CS/Software Engineering

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

binaryroot 2026. 4. 3. 19:02
728x90

이번 글에서는 지난 글에 이어서 프로세스 활동, 소프트웨어 명세, 소프트웨어 설계 및 구현 등에 대해 알아보자.

 

프로세스 활동

  • 기본 프로세스 활동
    • Specification (명세)
    • Design and implementation (설계 및 구현)
    • Validation (Testing) (검증)
    • Evolution (Maintenance) (진화)
  • 각 개발 프로세스마다 조작 방식이 다르다.
    • waterfall model (폭포수 모델) : 순차적 조직
    • incremental development (점진적 개발) : 활동이 상호 교차됨

Software specification (소프트웨어 명세)

  • 시스템이 제공해야 할 서비스와 시스템 운영 및 개발의 제약 조건을 정립하는 과정이다.

Requirements engineering process (요구사항 공학 프로세스)

요구사항 공학 프로세스

 

소프트웨어 설계 및 구현

  • 시스템 명세서를 실행 가능한 시스템으로 변환하는 과정이다.
  • 소프트웨어 설계
    • 명세를 실현할 소프트웨어 구조를 설계한다.
  • 구현
    • 설계 구조를 실행 가능한 프로그램으로 변환한다.
  • 설계와 구현은 밀접하게 연관되어 있으며 상호 교차될 수 있다.

설계 프로세스의 일반 모델

설계 프로세스의 일반 모델

 

Design activities (설계 활동)

  • Architectural design (아키텍처 설계)
    • 시스템의 전체 구조, 주요 컴포넌트 및 관계 식별
  • Database design (데이터베이스 설계)
    • 시스템 데이터 구조 및 데이터베이스 표현 설계
  • Interface design (인터페이스 설계)
    • 시스템 컴포넌트 간 인터페이스 정의
  • Component selection and design (컴포넌트 선택 및 설계)
    • 재사용 가능한 컴포넌트 탐색, 없을 경우 설계

아래는 안드로이드의 소프트웨어 아키텍처 예시이다.

소프트웨어 아키텍처 - 안드로이드

 

시스템 구현

  • 프로그래밍은 개인적인 활동이다.
    • 표준화된 프로그래밍 프로세스는 없다.
  • 디버깅은 프로그램의 오류를 찾아 수정하는 활동이다.

 

소프트웨어 검증

  • 검증 및 확인 Verification and Validation (V&V)
    • 시스템이 명세에 부합하고 고객 요구를 충족하는 지를 확인한다.
    • 리뷰(검토)와 시스템 테스트를 포함한다.

테스트 단계

  • 컴포넌트 테스트
    • 개별 컴포넌트를 독립적으로 테스트한다.
  • 시스템 테스트
    • 전체 시스템을 테스트한다.
  • 인수 테스트
    • 고객 데이터로 시스템이 요구를 충족하는지 확인한다.

 

plan-driven 소프트웨어 프로세스에서의 테스트 단계

 

소프트웨어 진화 (software evolution)

  • 소프트웨어는 본질적으로 유연하며 변화 가능하다.
  • 비즈니스 환경 변화에 따라 소프트웨어도 진화해야한다.

 

프로세스 반복 - 요구사항 변화 대응

  • 대규모 소프트웨어 프로젝트에서는 요구사항 변화가 불가피하다.
    • 비즈니스 변화, 신기술, 플랫폼 변화 등으로 인해 요구사항이 바뀐다.
  • 요구사항 변화는 프로세스 반복(이전 단계 재작업)으로 이어진다.
    • 대규모 시스템에서는 항상 반복(iteration)이 존재한다.
  • 관련 접근법
    • Incremental delivery (점진적 납품)

 

Incremental delivery (점진적 납품)

  • 시스템을 한 번에 납품하지 않고 여러 증분으로 개발하고 납품한다.
    • 각 증분을 일부 기능을 제공한다.
  • 사용자 요구사항은 우선순위에 따라 배치한다.
    • 우선순위가 높은 요구사항이 먼저 구현된다.
  • 증분 개발 시작 후 해방 증분의 요구사항은 고정된다.
    • 이후 증분의 요구사항은 계속 evolve 가능하다.
  • 장점
    • 각 증분마다 고객 가치 제공
    • 기능 조기 제공
    • 초기 증분이 프로토타입 역할
    • 우선순위 높은 서비스가 더 많이 테스트됨
    • 프로젝트 실패 위험 감소
  • 문제점
    • 모든 증분에 필요한 공통 서비스 식별이 어려움

아래는 Incremental delivery (점진적 납품)의 도식화이다.

Incremental delivery

 

Rational Unified Process (RUP)

  • UML 및 관련 프로세스에서 파생된 반복적 소프트웨어 개발 프로세스 프레임워크이다.
  • 3가지 관점에서 설명 가능하다.
    • 동적 관점 : 시간에 따른 단계
    • 정적 관점 : 프로세스 활동
    • 실천 관점 : 좋은 실천 방법 제안

RUP 단계 모델 - 동적 관점

  • 단계는 기술적이기보다 비즈니스와 밀접하게 연관된다.
  • 단계 반복 : 개념, 정교화, 구축, 전환

728x90

RUP 단계 - 동적 관점

  • Inception (개념)
    • 시스템의 비즈니스 사례 수립
    • 시스템의 비즈니스 기여 평가
  • Elaboration (정교화)
    • 문제 영역 이해
    • 아키텍처 프레임워크 수립
    • 프로젝트 계획 개발
    • 주요 위험 식별
  • Construction (구축)
    • 시스템 설계
    • 프로그래밍
    • 테스트
  • Transition (전환)
    • 시스템을 운영 환경에 배포

Static workflows (정적 워크플로우) - 정적 관점

  • 비즈니스 모델링
    • 비즈니스 프로세스를 비즈니스 유스케이스로 모델링
  • 요구사항
    • 시스템과 상호작용하는 액터 식별
    • 유스케이스로 요구사항 모델링
  • 분석 및 설계
    • 아키텍처, 컴포넌트, 객체, 시퀀스 모델로 설계 모델 작성 및 문서화
  • 구현
    • 시스템 컴포넌트 구현 및 하위 시스템 구조화
    • 설계 모델에서 자동 코드 생성 가능
  • 테스트
    • 구현과 함께 반복적으로 수행
    • 구현 완료 후 시스템 테스트
  • 배포
    • 제품 릴리즈 생성
    • 사용자에게 배포 및 설치
  • 구성 및 변경 관리
    • 시스템 변경 관리
  • 프로젝트 관리
    • 시스템 개발 관리
  • 환경
    • 개발팀에 적합한 소프트웨어 도구 제공

RUP의 좋은 실천 방법 - 실천 관점

  • 반복적으로 소프트웨어를 개발한다.
  • 요구사항을 관리한다.
  • 컴포넌트 기반 아키텍처를 사용한다.
  • 소프트웨어를 시각적으로 모델링한다.
  • 소프트웨어의 품질을 검증한다.
  • 변경을 관리한다.

 

 

오늘은 많은 내용을 정리했다.

소프트웨어 공학을 공부하면서 많은 것들을 알아가고 싶다.

728x90