💡 소프트웨어 설계와 분석의 핵심 개념 정리
개발자라면, 또 정처기 응시생이라면 반드시 이해하고 있어야 할 핵심 설계 원칙과 분석 기법, 그리고 설계 도구들을 한눈에 정리했습니다. 이 글은 소프트웨어 아키텍처와 설계에 입문하거나 복습하고자 하는 분들을 위한 정리글입니다.
📌 1. 자료 흐름도(DFD)의 4대 구성요소
**자료 흐름도 (Data Flow Diagram)**는 시스템의 데이터를 어떻게 입력 받고 처리하고 저장하고 출력하는지를 시각화한 도구입니다.
구성요소 기호 설명
| 처리 (Process) | ⭕ 원 | 데이터를 처리하는 기능, 예: 주문 처리 |
| 자료 흐름 (Data Flow) | ➡️ 화살표 | 데이터가 흐르는 방향을 표현 |
| 자료 저장소 (Data Store) | = 두 평행선 | 데이터를 저장하는 공간, 예: DB, 파일 |
| 단말 (Terminator) | ⬛ 사각형 | 외부 시스템 또는 사용자 |
🎯 2. 클래스 설계 5대 원칙 (SOLID)
객체지향 프로그래밍에서 유지보수성과 확장성을 높이기 위한 설계 원칙입니다.
- SRP (단일 책임 원칙, Single Responsibility Principle)
- 하나의 클래스는 오직 하나의 책임만 가져야 한다.
✅ 변경 이유가 하나뿐이어야 함. - OCP (개방-폐쇄 원칙, Open-Closed Principle)
- 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
✅ 기존 코드를 수정하지 않고 기능을 확장할 수 있도록. - LSP (리스코프 치환 원칙, Liskov Substitution Principle)
- 자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 한다.
✅ 다형성에 대한 안정성을 보장. - ISP (인터페이스 분리 원칙, Interface Segregation Principle)
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
✅ 인터페이스는 작고 명확하게 분리. - DIP (의존성 역전 원칙, Dependency Inversion Principle)
- 구현 클래스가 아닌 추상화에 의존해야 한다.
✅ 상위 모듈과 하위 모듈의 결합도를 낮춘다.
🏗️ 3. 아키텍처 설계 과정
시스템의 큰 그림을 설계할 때 따르는 단계입니다.
- 설계 목표 설정
- 성능, 유지보수성, 확장성 등 정의
- 시스템 타입 결정
- 웹, 모바일, 분산 시스템 등
- 아키텍처 패턴 적용
- MVC, Layered, Microservices 등
- 서브시스템 구체화
- 각 모듈의 책임 분배
- 설계 검토 및 보완
- 전문가 리뷰, 성능 테스트 등
🧱 4. 디자인 패턴이란?
**디자인 패턴 (Design Pattern)**은 객체 지향 설계에서 자주 마주치는 문제들에 대한 반복 가능한 해결책입니다.
- 예시: Singleton, Factory Method, Observer, Strategy 등
- 장점: 코드 재사용, 설계 표준화, 유지보수성 향상
🔍 5. 대표적인 객체지향 분석 기법
✅ RumBaugh (럼바우 방법)
- 객체 모델링 중심
- 세 가지 모델: 객체 모델 / 동적 모델 / 기능 모델
✅ Booch (부치 방법)
- 미시적/거시적 개발 모두 포함
- 복잡한 시스템을 구조적으로 분석하고 클래스/객체를 식별
✅ Jacobson
- Use Case 중심 분석
- 사용자 요구를 중심으로 시스템을 정의
✅ Coad & Yourdon
- ERD 기반 분석 기법
- 개체 간 관계를 시각화하고 논리 모델링에 적합
✅ Wirfs-Brock
- 고객 명세서 기반 설계
- 유저 시나리오에 따라 분석 및 설계 진행
🔗 6. 시스템 용어 및 개념 정리
용어 설명
| EAI (Enterprise Application Integration) | 기업 내 여러 운영 프로그램들을 통합해 연동하는 기술 |
| FEP (Front-End Processor) | 입력 데이터를 사전 처리하거나 분산 제어하는 장치 |
| GPL (General Public License) | 소스코드 공개를 조건으로 배포되는 자유 소프트웨어 라이선스 |
| Duplexing (이중화) | 장애 발생 시 대비를 위해 동일한 구성 요소를 2개 이상 두는 방식 |
📝 마무리
소프트웨어 설계와 분석은 단순한 코드 작성 이상의 사고를 요구합니다.
자료 흐름, 객체지향 설계 원칙, 디자인 패턴, 그리고 분석 기법까지 숙지한다면 더욱 견고하고 유지보수 가능한 시스템을 설계할 수 있습니다. 궁금한 점은 언제든지 댓글이나 문의로 남겨 주세요! 😊
'CERT > 정보처리기사' 카테고리의 다른 글
| [정보처리기사] 소프트웨어 설계부 오답 개념 정리 -6 (4) | 2025.07.28 |
|---|---|
| [정보처리기사] 소프트웨어 설계부 오답 개념 정리 -5 (8) | 2025.07.28 |
| [정보처리기사] 소프트웨어 설계부 오답 개념 정리 -4 (4) | 2025.07.28 |
| [정보처리기사] 소프트웨어 설계부 오답 개념 정리 -3 (5) | 2025.07.26 |
| [정보처리기사] 소프트웨어 설계부 오답 개념 정리 -1 (10) | 2025.07.24 |