본문 바로가기
CS 지식/소프트웨어 공학

소프트웨어 개발 프로세스 4가지 기본 활동

by 코딩하는 동현 2024. 10. 7.

소프트웨어 프로세스들의 4가지 활동 (Process Activities)

Process Activities는 소프트웨어 개발에서 필수적으로 수행해야 하는 4가지 기본 활동으로 구성됩니다. 이 활동들은 소프트웨어 개발 생명 주기(SDLC) 전반에 걸쳐 필수적인 단계이며, 각 개발 프로세스에 따라 다르게 조직되고 관리됩니다.


1. 명세 (Specification)

정의: 시스템이 수행해야 할 기능과 요구사항을 명확히 정의하는 단계로 요구 공학이 포함됩니다.
목적: 고객의 요구를 정확히 이해하고, 개발할 시스템이 어떤 기능을 제공해야 하는지 명확히 합니다.
활동 예시: 요구사항 수집, 요구사항 분석, 요구사항 문서화

 

2. 설계 및 구현 (Design & Implementation)

정의: 시스템의 구조를 설계하고, 실제로 소프트웨어를 개발하는 단계입니다.
목적: 시스템의 아키텍처를 정의하고, 설계를 바탕으로 코드를 작성하여 소프트웨어를 구현합니다.
활동 예시: 시스템 아키텍처 설계, 모듈 설계, 코딩, 단위 테스트.

 

3. 검증 (Validation)

정의: 개발된 소프트웨어가 고객의 요구사항을 충족하는지 확인하는 단계입니다.
목적: 소프트웨어가 기대한 대로 작동하며, 버그나 오류가 없는지 검증합니다.
활동 예시: 통합 테스트, 시스템 테스트, 사용자 수용 테스트, 품질 보증.

 

4. 진화 (Evolution)

정의: 고객의 요구나 환경 변화에 따라 소프트웨어를 수정하고 개선하는 단계입니다.
목적: 소프트웨어의 수명을 연장하고, 변화하는 요구에 유연하게 대응합니다.
활동 예시: 유지보수, 기능 추가, 성능 개선, 버그 수정.

 

아래에 이어서 각 단계들의 세부 과정에 대해서 알아보겠습니다.


1. Requirements Engineering Process (명세)

Requirements Engineering(RE)은 시스템이 제공해야 할 서비스와 시스템의 운영 및 개발 제약 사항들 요구사항을 정의하는 과정입니다.

  • What services: 시스템이 수행해야 하는 기능적 요구사항(FR)을 정의합니다.
  • Constraints: 시스템이 충족해야 하는 비기능적 요구사항(NFR)을 정의합니다. - quality 요구사항

 

Requirements Engineering Process는 다음과 같은 단계로 구성됩니다

  1. Requirements Elicitation and Analysis (요구사항 도출 및 분석)
    • 시스템의 이해관계자들이 시스템에서 필요로 하는 서비스나 기대하는 기능이 무엇인지 식별하는 단계입니다.
  2. Requirements Specification (요구사항 명세)
    • 요구사항을 세부적으로 정의하고 문서화하는 단계입니다.
  3. Requirements Validation (요구사항 검증)
    • 도출된 요구사항이 유효한지, 실제로 시스템에 필요한지를 검토하고 확인하는 단계입니다.

2. Software Design and Implementation (소프트웨어 설계 및 구현)

시스템 명세를 실제 실행 가능한 시스템으로 변환하는 과정입니다.

  1. Software Design (소프트웨어 설계): 시스템 명세에 기반해 시스템의 구조를 설계합니다.
  2. Implementation (구현): 설계된 구조를 기반으로 코드를 작성하여 프로그램을 개발하는 단계이고 유닛테스트도 포함합니다.

 

Design Activities (설계 활동)

  1. Architectural Design (아키텍처 설계): 시스템의 전체 구조와 주요 구성 요소(서브시스템 또는 모듈), 이들 간의 관계를 정의하고 분배합니다.
    • AD (Architecture Description): ISO/IEC/IEEE 42010:2011에 정의된 시스템 및 소프트웨어 아키텍처 설명 기준을 따릅니다.
  2. Interface Design (인터페이스 설계): 시스템 구성 요소 간의 인터페이스를 정의합니다.
  3. Component Selection and Design (컴포넌트 선택 및 설계): 재사용 가능한 컴포넌트를 찾아보고, 없다면 컴포넌트의 동작을 설계합니다.
  4. Database Design (데이터베이스 설계): 시스템 데이터 구조를 설계하고 데이터베이스에서 이를 어떻게 표현할지 정의합니다.

 

Implementation Activities (구현 활동)

  • 소프트웨어는 프로그램을 개발하거나 애플리케이션 시스템을 설정함으로써 구현됩니다.
  1. Programming (프로그래밍): 코드를 작성하는 활동입니다. 여기에는 Clean Code 작성, 리팩토링, 유닛테스트가 포함됩니다.
  2. Debugging (디버깅): 프로그램에서 오류를 찾아내고 이를 수정하는 활동입니다. fault localization
    • Testing과 다름: testing : Bug 존재여부 , debugging : 이미 버그 찾았음. 찾고 수정하는 과정

 

3. Software Validation (소프트웨어 검증)

Verification and Validation (V&V)는 시스템이 명세에 맞게 개발되었는지(Verification), 고객의 요구사항을 충족하는지(Validation)를 확인하는 과정입니다.

 

(정적) 코드 확인, 리뷰와 (동적) 테스팅을 포함합니다. 테스팅은 가장 흔하게 이용된 V&V 활동입니다.

 

 

Software Testing (소프트웨어 테스트)

테스트 단계는 다음과 같습니다:

  1. Component (Unit) Testing (단위 테스트):
    • 각각의 개별 컴포넌트가 독립적으로 테스트됩니다. 컴포넌트는 함수, 객체 또는 이들의 일관된 그룹일 수 있습니다.
  2. System Testing (시스템 테스트):
    • 시스템 전체를 테스트하며, 통합 테스트도 포함됩니다. 특히, 시스템의 종합적인 속성들을 테스트하는 것이 중요합니다.
  3. Acceptance Testing (인수 테스트):
    • 고객 데이터를 사용해 시스템이 고객의 요구를 충족하는지 확인하는 테스트입니다.

 

V-Model of Software Testing (IEC 61508)

V-Model of Software Testing은 소프트웨어 개발 과정에서 각 개발 단계와 그에 상응하는 테스트 단계를 연결하여 시각적으로 표현한 모델입니다. 이 모델은 Waterfall Model의 변형으로, 개발 과정과 테스트 과정을 병행함으로써 각 단계에서의 오류를 조기에 발견하고 해결할 수 있도록 도와줍니다.

 

 

 

4. Software Evolution (소프트웨어 진화)

소프트웨어는 비즈니스 환경의 변화에 따라 변화해야 하며, 이를 위해 지속적인 유지보수가 필요합니다.

  • Software Maintenance (소프트웨어 유지보수): 변화하는 요구사항에 맞춰 시스템을 수정하고, 오류를 수정하거나 새로운 기능을 추가하는 작업을 의미합니다.
    • S3M (SW Maintenance Maturity Model): 소프트웨어 유지보수 성숙도 모델을 따릅니다.

 

소프트웨어 개발은 Requirements Engineering(specification), Design & Implementation , V&V , Evolution 의 4가지 큰 단계로 나눌 수 있으며, 각각의 단계는 명확한 활동을 포함합니다.

반응형

댓글