본문 바로가기
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가지 큰 단계로 나눌 수 있으며, 각각의 단계는 명확한 활동을 포함합니다.

반응형

댓글