소프트웨어 개발 방법론, 아키텍처 패턴과 디자인 패턴
소프트웨어 공학 중 햇갈리는 개념인
소프트웨어 개발 방법론, 아키텍처 패턴과 디자인 패턴에 대해서 정리할 겸 알아봄
한줄로 요약하면
소프트웨어 개발 방법론은 프로젝트 개발 절차에 관한 내용,
아키텍처는 프로젝트의 설계도,
디자인 패턴은 건축 자재와 시공 방법으로 정리할 수 있겠다
1. 소프트웨어 개발 방법론
- Software Development Methodology
소프트웨어를 생산하는데 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여, 프로그래머들이 프로그래밍 개발 과정에서 각 개인이 개발과정에서 일관성을 유지하고, 프로그래머들간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론
소프트웨어를 개발하는 방법에 대한 이론
소프트웨어 개발 과정, 절차, 방법, 산출물 기법, 도구 등을 체계적으로 정리하고 표준화 시킨 것
소프트웨어 개발 방법론 종류
크게 구조적 방법론, 정보공학 방법론, 객체지향 방법론, CDB방법론, 애자일 방법론으로 나눌 수 있다
폭포수 방법론, 애자일 방법론, Lean 방법론 등
2. 아키텍처 패턴
Architecture Pattern
주어진 상황의 소프트웨어 구조에서 발생하는 문제점을 해결하기 위한
아키텍처는 더 큰 뼈대를 말하고, 디자인 패턴은 코드 수준에서의 설계를 담당
소프트웨어 아키텍처가 한 소프트웨어의 뼈대나 고수준의 기반을 담당하는데에 반해, 디자인 패턴은 각각의 모듈들이 어떤 것을 하는지, 클래스의 범위, 함수의 목적 등 코드 수준의 디자인을 담당하는 것.
아키텍처 패턴의 종류
- MVC (Model-View-Controller)
- MVP (Model-View-Presenter)
- MVVM (Model-View-ViewModel)
- 계층화 패턴(Layer)
- 클라이언트-서버 패턴(Client-Server)
- 마스터-슬레이브 패턴
- 브로커 패턴(Broker)
- Peer to Peer 패턴(P2P)
- 이벤트-버스 패턴(Event-Bus)
- 블랙보드 패턴(Blackboard Pattern)
- 인터프리터 패턴(Interpreter Pattern)
3. 디자인 패턴
소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책
패턴은 재사용할 수 있는 코드 조각이 아니라, 특정 문제를 해결하는 방식을 알려주는 일반적인 개념임
아키텍처 패턴보다 작은 개념. 아키텍처 패턴이 프로젝트 전체의 뼈대를 구성하는 패턴이라면, 디자인 패턴은 하나의 함수, 일부 기능 등의 수준에서의 디자인을 담당함
디자인 패턴 종류
- 생성 패턴 : 객체의 생성과 관련된 패턴
- 구조 패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
- 행위 패턴 : 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴