절차적 프로그래밍이란?
Procedural Programming (절차적 프로그래밍)은 프로그램이 절차(Procedure) 또는 함수(Function) 중심으로 구성되는 프로그래밍 패러다임입니다. 이 방식에서는 프로그램이 실행될 일련의 명령어가 절차적으로 작성되며, 데이터 구조와 알고리즘, 실행 순서가 주요 요소로 다뤄집니다.
주요 내용:
- 프로그램 구조:
- 절차(Procedure) 또는 함수(Function)가 프로그램의 기본 빌딩 블록입니다.
- 함수나 절차는 변수의 값을 변경하는 명령문(statements)으로 구성됩니다.
- 데이터 구조와 알고리즘을 바탕으로 문제를 해결하며, 순차적인 단계(sequencing of steps)가 매우 중요합니다.
- 알고리즘:
- 알고리즘(Algorithm)은 문제를 해결하기 위한 일련의 명령어로 구성됩니다. Control-centric한 방식으로, 제어 흐름에 초점을 맞춰 문제를 해결합니다.
- 데이터 구조:
- 데이터 구조(Data structure)는 데이터를 특정 방식으로 구성하기 위한 구조를 의미합니다. 이는 Data-centric 방식으로, 데이터를 관리하고 처리하는 방법에 중점을 둡니다.
- 절차적 프로그래밍 언어:
- FORTRAN에서 C에 이르는 대부분의 전통적인 컴퓨터 언어들이 절차적 프로그래밍 언어에 해당합니다. 이러한 언어들은 함수 및 절차를 기반으로 코드를 작성하고 문제를 해결합니다.
SASD (Structured Analysis and Structured Design)
SASD(구조적 분석 및 설계)는 절차적 프로그래밍을 위한 전통적인 소프트웨어 개발 방법론입니다. SASD는 Top-Down Divide and Conquer 원칙에 기반하여 복잡한 문제를 해결하는 방법론입니다.
- Top-Down Divide and Conquer:
- 큰 문제를 더 작은 단위로 나눠 해결하는 방식으로, 복잡한 문제를 다루기 쉽게 만듭니다. 문제를 작은 단위로 나눠서 각각 해결한 후, 전체 시스템을 구성하는 방식입니다.
- 기능적 문제 접근 방식:
- 문제를 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)
- 1970년대 후반: DeMarco, Yourdon, Constantine이 구조적 프로그래밍(Structured Programming) 등장 이후 개발.
- IBM 도입: 1970년대 후반~1980년대 초반, IBM 개발 주기에 SASD 통합.
- Yourdon 저서: 1989년, "Modern Structured Analysis" 출판.
- 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 (표기법)
- Process: 제안된 시스템.
- Terminator: 외부 엔티티.
- Flow: 입력/출력 데이터 흐름.
Event List (이벤트 목록)
- 시스템 외부에서 발생하는 이벤트/자극 목록으로 시스템이 응답해야 함.
- 컨텍스트 다이어그램의 상세 설명에 사용.
이벤트 유형 (Types of Input Events)
- Flow-Oriented Event: 데이터 입력에 의해 트리거됨.
- Temporal Event: 내부 시계에 의해 트리거됨.
- Control Event: 외부의 예측 불가능한 사건에 의해 트리거됨.
Data Flow Diagram (데이터 흐름 다이어그램, DFD)
- 기능 분해(Functional Decomposition)를 가능하게 함.
- 계층적으로 구성된 DFD 계층(Hierarchies of DFDs)로 표현.
Notation (표기법)
- Data Process: 데이터 처리 작업.
- Control Process: 제어 처리 작업.
- Terminator: 외부 엔티티.
- Data Store: 데이터 저장소.
- Data Flow: 데이터 흐름.
- Control Flow: 제어 흐름.
Process Specification (프로세스 명세)
- DFD에서 암시되지만 표시되지 않은 프로세스 세부사항을 명세.
- 모듈의 입력, 출력, 알고리즘 정의.
- 의사코드(Pseudo-code) 또는 표 형식(Table Format)으로 작성.
- DFD 계층의 모든 프로세스를 명세
Data Dictionary (데이터 사전)
- 데이터 요소 정의를 통해 다른 해석 방지.
- 단순 형식으로 사용
Structured Design (구조적 설계)
필요 조건 (Requirements)
- Transform Analysis (변환 분석)
- 데이터는 스스로 입력, 처리, 출력되지 않음.
- 입력/출력 프로세스를 호출하는 로직 필요.
- SA에 해당하는 기능 분해 설계
- 정보 은닉(Information Hiding)
- 모듈화(Modularity)
- 낮은 결합도(Low Coupling)
- 높은 응집도(High Cohesion)
제한점 (Limitations)
- 제안된 많은 모델 중 일부만 실질적으로 사용됨.
- 예: Structured Charts (구조적 차트).
Structured Charts - Notation (구조적 차트 표기법)
- Modules: 독립된 작업 단위.
- Library Modules: 재사용 가능한 모듈.
- Module Call: 모듈 호출.
- Data Flow: 데이터 흐름.
- Control Flow: 제어 흐름. (함수)
- Data module : 데이터 저장소
- Asynchronous Module Call: 비동기 호출.
- Iteration/Decision: 반복 및 분기(if)
반응형
'CS 지식 > 소프트웨어 공학' 카테고리의 다른 글
애자일 소프트웨어 개발 (Agile Software Development) 방법론(2) - PM, 스크럼(Scrum) (0) | 2024.10.08 |
---|---|
애자일 소프트웨어 개발 (Agile Software Development) 방법론(1) - 기법 (0) | 2024.10.08 |
소프트웨어 개발 프로세스 개선 활동 (The SEI CMMi) (0) | 2024.10.07 |
소프트웨어 개발 프로세스 4가지 기본 활동 (0) | 2024.10.07 |
소프트웨어 개발 프로세스 모델의 종류와 단계 (0) | 2024.10.06 |
댓글