/design/ko/software-design
Software Design
This category delves into the principles and methodologies behind structuring software systems. Explore topics such as modularity, separation of concerns, SOLID principles, and architectural patterns like MVC and layered architecture. Gain insight into how thoughtful design choices contribute to scalability, maintainability, and long-term success in software projects.
시리즈2
글23
Beginner
요구사항 이해하기
기능적 요구사항과 비기능적 요구사항에 대해 알아보고, 요구사항 개발 프로세스와 검토 방법을 단계별로 알아봅시다.
애자일 방법론(Agile methodology)
애자일 방법론(Agile methodology)은 소프트웨어 개발 및 프로젝트 관리에 있어 유연하고 반복적인 접근 방식을 지향하는 방법론입니다.
XP(eXtreme Programming)
애자일 방법론(Agile methodology)의 정의와 주요 가치, XP(익스트림 프로그래밍) 중심의 단계별 프로세스를 살펴봅니다.
UI Design
UI 설계 원칙의 핵심 개념과 CLI, GUI, NUI, VUI, OUI 등 UI 종류를 단계별로 알아봅니다.
CASE(Computer Aided Software Engineering)
CASE(Computer Aided Software Engineering)는 소프트웨어 개발 과정 일부 또는 전체를 자동화하기 위한 도구입니다.
자료 흐름도(DFD)
자료 흐름도(DFD, Data Flow Diagram)는 시스템 내에서 데이터가 어떻게 흐르고 변환되는지를 시각적으로 표현하는 도구입니다.
초보 개발자를 위한 소프트웨어 생명 주기 핵심 정리
초보 개발자를 위한 소프트웨어 생명 주기 모델(폭포수, 나선형, 프로토타입, HIPO)을 단계별로 쉽게 정리했습니다.
소프트웨어 다이어그램
다이어그램은 소프트웨어의 구조와 동작을 시각적으로 표현하여 이해를 돕는 도구로, 크게 구조(정적) 다이어그램과 행위(동적) 다이어그램으로 나눌 수 있습니다.
하향식 설계와 상향식 설계
하향식 설계는 가장 위의 큰 개념(상위 컴포넌트)을 먼저 설계하고, 이를 순차적으로 세부 기능으로 나누어 설계하는 방식입니다. 상향식 설계는 가장 아래의 세부 모듈부터 먼저 설계한 뒤, 이를 점차 결합하면서 최상위 모듈을 완성하는 방식입니다.
객체 지향
객체 지향(Object-Oriented)이란 프로그램을 객체들의 모임으로 바라보고, 각각의 객체가 서로 소통하며 동작하도록 설계하는 방식입니다.
럼바우(Rumbaugh) 객체지향 분석 기법
럼바우(Rumbaugh) 객체지향 분석 기법은 OMT(Object Modeling Technique)라고 불리며, 객체지향 시스템을 체계적으로 분석하고 설계하기 위한 방법론입니다.
Architecture Pattern
Architecture Pattern
클라이언트-서버, 레이어드, 파이프-필터 등 대표적인 소프트웨어 아키텍처 패턴을 일상적인 비유와 함께 정리합니다.
Layered Architecture
소프트웨어 아키텍처의 기본 중 하나인 Layered Architecture(계층형 아키텍처)는 시스템을 계층(Layer)로 구성하는 방법 중 하나입니다.
클라이언트-서버 패턴(Client-Server Pattern)
Client-Server 패턴은 클라이언트가 요청을 보내고, 서버가 이를 처리하여 응답하는 구조로, 웹 애플리케이션 등에서 널리 사용되는 분산 시스템 모델입니다.
Pipe Filter Pattern
Pipe-Filter 패턴은 데이터를 여러 개의 필터(처리 단계)를 거쳐 파이프(데이터 흐름)를 통해 전달하는 구조로, 각 필터는 독립적으로 작동하며, 데이터 흐름 중심 시스템에 적합한 패턴입니다.
Model-View-Controller Pattern
Model-View-Controller 패턴은 사용자 인터페이스를 모델(데이터), 뷰(UI), 컨트롤러(로직)로 분리하여 유지보수성과 재사용성을 높이는 UI 중심 설계 패턴입니다.
MVVM Pattern
MVVM(Model-View-ViewModel) 패턴은 사용자 인터페이스(UI)와 비즈니스 로직을 분리하고, 중간에 ViewModel이라는 중재자를 두어 데이터와 UI를 양방향으로 자동 연결해주는 소프트웨어 아키텍처입니다.
MVP Pattern
MVP(Model-View-Presenter) 패턴은 사용자 인터페이스(View)와 비즈니스 로직(Model) 사이를 Presenter가 중재하는 구조로, MVC의 변형 중 하나입니다.
Peer-To-Peer Pattern
Peer-To-Peer 패턴은 모든 노드가 동등한 위치에서 요청과 응답을 동시에 처리할 수 있는 구조로, 중앙 서를 최소화 하여 각 노드가 독립적으로 통신하는 패턴입니다.
Event-Bus Pattern
Event-Bus 패턴은 이벤트 생산자와 소비자가 느슨하게 결합되어 있으며, 이벤트 버스를 통해 메시지를 주고받는 방식으로 실시간 알림, 로그 처리에 유용합니다.
Blackboard Pattern
Blackboard 패턴은 다양한 컴포넌트가 공유된 중앙 데이터 공간(블랙보드)을 통해 협력하여 문제를 해결하는 구조를 가진 패턴으로 음성인식이나 AI 진단 시스템에서 사용됩니다.
Master-Slave Pattern
Master-Slave 패턴은 마스터가 작업을 제어하고, 여러 슬레이브가 실제 처리를 수행하는 구조로, 병렬 처리와 부하 분산에 적합한 패턴입니다.
Broker Pattern
Broker 패턴은 분산된 컴포넌트 간의 통신을 중개자(브로커)를 통해 연결하는 패턴으로, 클라이언트와 서버가 직접 연결되지 않고 중재 계층을 통해 상호작용하는 패턴입니다.