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

SASD 구조적 분석 설계 개발 방법론 (RVC예제)

by 코딩하는 동현😎 2024. 10. 8.

절차적 프로그래밍이란?

Procedural Programming (절차적 프로그래밍)은 프로그램이 절차(Procedure) 또는 함수(Function) 중심으로 구성되는 프로그래밍 패러다임입니다. 이 방식에서는 프로그램이 실행될 일련의 명령어가 절차적으로 작성되며, 데이터 구조와 알고리즘, 실행 순서가 주요 요소로 다뤄집니다.

 

주요 내용:

  1. 프로그램 구조:
    • 절차(Procedure) 또는 함수(Function)가 프로그램의 기본 빌딩 블록입니다.
    • 함수나 절차는 변수의 값을 변경하는 명령문(statements)으로 구성됩니다.
    • 데이터 구조와 알고리즘을 바탕으로 문제를 해결하며, 순차적인 단계(sequencing of steps)가 매우 중요합니다.
  2. 알고리즘:
    • 알고리즘(Algorithm)은 문제를 해결하기 위한 일련의 명령어로 구성됩니다. Control-centric한 방식으로, 제어 흐름에 초점을 맞춰 문제를 해결합니다.
  3. 데이터 구조:
    • 데이터 구조(Data structure)는 데이터를 특정 방식으로 구성하기 위한 구조를 의미합니다. 이는 Data-centric 방식으로, 데이터를 관리하고 처리하는 방법에 중점을 둡니다.
  4. 절차적 프로그래밍 언어:
    • FORTRAN에서 C에 이르는 대부분의 전통적인 컴퓨터 언어들이 절차적 프로그래밍 언어에 해당합니다. 이러한 언어들은 함수 및 절차를 기반으로 코드를 작성하고 문제를 해결합니다.

SASD (Structured Analysis and Structured Design)

SASD(구조적 분석 및 설계)는 절차적 프로그래밍을 위한 전통적인 소프트웨어 개발 방법론입니다. SASDTop-Down Divide and Conquer 원칙에 기반하여 복잡한 문제를 해결하는 방법론입니다.

  1. Top-Down Divide and Conquer:
    • 큰 문제를 더 작은 단위로 나눠 해결하는 방식으로, 복잡한 문제를 다루기 쉽게 만듭니다. 문제를 작은 단위로 나눠서 각각 해결한 후, 전체 시스템을 구성하는 방식입니다.
  2. 기능적 문제 접근 방식:
    • 문제를 DFD(Data Flow Diagram, 데이터 흐름도)를 이용해 기능적으로 분석합니다. DFD를 통해 시스템의 각 기능이 어떻게 동작하고, 데이터가 어떻게 흐르는지 시각적으로 표현할 수 있습니다.

요약: 절차적 프로그래밍은 함수와 절차를 중심으로 프로그램을 구성하는 방식입니다. SASD는 이런 절차적 프로그래밍에 적합한 구조적 분석 및 설계 방법론으로, 큰 문제를 더 작은 문제로 나누어 해결하는 Top-Down 방식을 채택합니다.


Structured Analysis (구조적 분석)

정의 (Definition)

  • Structured Analysis (SA): 사용자가 이해하기 쉬운 시스템 명세서를 개발할 수 있도록 돕는 기술과 그래픽 도구의 집합.
    • 데이터/기능 모델링(Data/Functional Modeling): DFD (Data Flow Diagram), ERD (Entity Relationship Diagram) 사용.
    • 상태 지향 모델링(State-Oriented Modeling): STD (State Transition Diagram) 또는 FSM (Finite State Machine) 사용.
    • 대규모, 복잡한 문제를 작고 관리 가능한 문제로 나누는 Top-Down Divide and Conquer 접근법 활용.

History of SASD (Structured Analysis and Structured Design)

  1. 1970년대 후반: DeMarco, Yourdon, Constantine이 구조적 프로그래밍(Structured Programming) 등장 이후 개발.
  2. IBM 도입: 1970년대 후반~1980년대 초반, IBM 개발 주기에 SASD 통합.
  3. Yourdon 저서: 1989년, "Modern Structured Analysis" 출판.
  4. 1990년대 CASE 도구: CASE(Computer-Aided Software Engineering) 도구 등장으로 그래픽 SASD 모델 생성 및 수정 가능


An Overview of SASD (SASD 개요)

System Context Diagram, Event List는 DFD Level 0으로 볼수 있습니다.


Statement of Purpose (목적 명세)

  • 시스템 개발 목적을 명확하고 간결한 텍스트로 설명.
    • 고위 경영진 및 시스템에 직접 관여하지 않는 사용자에게 적합하도록 의도적으로 모호하게 작성.
  • 예: User Requirements (사용자 요구 사항)
    • PFR (Preliminary Functional Requirements) 형식으로 작성.


System Context Diagram (시스템 컨텍스트 다이어그램) = DFD Level 0

  • DFD (Data Flow Diagram) Level 0의 특별한 형태.
    • 시스템과 외부 세계의 경계를 강조.
    • 시스템과 상호작용하는 사람, 조직, 외부 시스템을 나타냄.

Notation (표기법)

  1. Process: 제안된 시스템.
  2. Terminator: 외부 엔티티.
  3. Flow: 입력/출력 데이터 흐름.

Event List (이벤트 목록)

  • 시스템 외부에서 발생하는 이벤트/자극 목록으로 시스템이 응답해야 함.
    • 컨텍스트 다이어그램의 상세 설명에 사용.

이벤트 유형 (Types of Input Events)

  1. Flow-Oriented Event: 데이터 입력에 의해 트리거됨.
  2. Temporal Event: 내부 시계에 의해 트리거됨.
  3. Control Event: 외부의 예측 불가능한 사건에 의해 트리거됨.

Data Flow Diagram (데이터 흐름 다이어그램, DFD)

  • 기능 분해(Functional Decomposition)를 가능하게 함.
    • 계층적으로 구성된 DFD 계층(Hierarchies of DFDs)로 표현.

Notation (표기법)

  1. Data Process: 데이터 처리 작업.
  2. Control Process: 제어 처리 작업.
  3. Terminator: 외부 엔티티.
  4. Data Store: 데이터 저장소.
  5. Data Flow: 데이터 흐름.
  6. Control Flow: 제어 흐름.

Process Specification (프로세스 명세)

  • DFD에서 암시되지만 표시되지 않은 프로세스 세부사항을 명세.
    • 모듈의 입력, 출력, 알고리즘 정의.
    • 의사코드(Pseudo-code) 또는 표 형식(Table Format)으로 작성.
    • DFD 계층의 모든 프로세스를 명세


Data Dictionary (데이터 사전)

  • 데이터 요소 정의를 통해 다른 해석 방지.
    • 단순 형식으로 사용


Structured Design (구조적 설계)

필요 조건 (Requirements)

  1. Transform Analysis (변환 분석)
    • 데이터는 스스로 입력, 처리, 출력되지 않음.
    • 입력/출력 프로세스를 호출하는 로직 필요.
  2. SA에 해당하는 기능 분해 설계
    • 정보 은닉(Information Hiding)
    • 모듈화(Modularity)
    • 낮은 결합도(Low Coupling)
    • 높은 응집도(High Cohesion)

제한점 (Limitations)

  • 제안된 많은 모델 중 일부만 실질적으로 사용됨.
    • 예: Structured Charts (구조적 차트).

 


Structured Charts - Notation (구조적 차트 표기법)

  1. Modules: 독립된 작업 단위.
  2. Library Modules: 재사용 가능한 모듈.
  3. Module Call: 모듈 호출.
  4. Data Flow: 데이터 흐름.
  5. Control Flow: 제어 흐름. (함수)
  6. Data module : 데이터 저장소
  7. Asynchronous Module Call: 비동기 호출.
  8. Iteration/Decision: 반복 및 분기(if)

반응형

댓글