소프트웨어 위기를 극복한 디자인 패턴의 탄생과 발전

2023. 5. 9. 15:51CS/디자인 패턴

728x90

먼저 디자인 패턴의 정의부터 바로 알아보겠습니다!

디자인 패턴은 S/W 설계에서 자주 발생하는 문제들을 해결하기 위해 사용되는 재사용 가능한 해결책이다.

아마 이 글을 읽으시는 분들 중 디자인 패턴에 대해 검색해 보셨다면 위와 같은 설명을 많이 보셨을 겁니다.

 

그런데 말입니다

여기서 "자주 발생하는 문제들" 이란 대체 무엇일까요?

디자인 패턴은 모든 개발자들에게 중요한 개념이지만,

주니어 개발자들이 알아야 하는 필수 덕목 중 하나라는 데...

 

아가 개발자 그런거 잘 몰라...

만약 위 짤 설명과 비슷한 생각이 든다면 정상입니다!

저도 그랬으니깐요

왜냐하면 디자인 패턴이라는 개념은 사실 소프트웨어 분야가 발전한 역사,

즉 과거와 밀접한 관련이 있기 때문이죠.

 

그렇기에 앞으로 이 카테고리에 설명할 디자인 패턴의 종류가 뭐가 있고

각각을 어떻게 구현하고 실사용 예시는 뭐가 있는지 단순히 배우는 것보단,

앞서 디자인 패턴이 왜 중요하다고 하는지 그 필요성에 대해 역사를 통해 알아보겠습니다!

 

역사

때는 1970년대.

소프트웨어 개발이 급속도로 확산되면서

개발자들은 여러 가지 복잡한 문제와 도전 과제에 직면했습니다.

 

그중 하나는 바로 소프트웨어 위기(software crisis)입니다.

1970년대에는 하드웨어의 발전 속도가 소프트웨어 개발 속도를 앞서갔었기에

새로운 하드웨어 기술을 활용하여 더 복잡한 시스템을 구축하는데 어려움을 겪었었죠.

 

그 예시로 IBM의 System/360을 들 수가 있습니다.

IBM System/360

당시 엄청난 좋은 컴퓨터였지만, 소프트웨어 개발 속도가 따라가지 못해

하드웨어의 제성능을 낼 수가 없었죠.

 

하드웨어가 더 발전하면 그냥 더 좋은 컴퓨터가 나왔다고 생각을 할 수도 있습니다!

하지만 하드웨어 발전한다는 의미에는 단순히 성능, 기능이 더 좋아진다의 의미를 넘어서

시스템의 규모가 커져 관리해야 할 사항이 전보다 훨씬 더 많아졌다는 얘기예요.

 

즉, 비유를 하자면 기능 10개짜리 웹/앱 프로젝트와 기능 1000개짜리 웹/앱 프로젝트를 비교한다 해보죠!

 

기능이 더 많은 1000개짜리의 프로젝트가 일반적으로 더 많은 것을 수행할 수 있습니다.

하지만 만약 이 프로젝트를 10개의 코드만 관리하던 방식으로 관리한다면

그 효율성은 크게 떨어지게 됩니다.

특히 기능끼리의 의존성까지 추가된다면 더욱더 복잡해지고요!

 

이로 인해 과거 개발자들에게는 효율성과 품질 향상에 대한 요구가 많아졌습니다.

 

1980년대

그래서 효율성과 품질 향상을 위해 Agile 개발, OOP(Object Oriented Programming), CBD(Component Based Development)과 같은 신규 방법론들이 등장했습니다.

이들의 공통점은

  1. 기존의 개발 프로세스 개선
  2. 재사용 가능한 코드
  3. 모듈화

였죠.

 

위 방법들은 분명 개선에 큰 이바지를 했습니다.

하지만 여전히 개발자들은 소프트웨어 개발의 효율성과

품질 향상에 목말라 있었습니다.

 

1990년대 : GoF

그래서 1990년대 S/W 개발자들 개발하면서 반복적으로 겪는 문제점들을

해결하기 위한 일반적인 해결책을 찾기 시작합니다.

 

그리고 이때 나온 게 바로 디자인 패턴이라는 개념입니다!

GoF(Gang of Four)라 불리는 4명의 소프트웨어 공학자들이 쓴 책에 처음

디자인 패턴이라는 단어가 나오며, 디자인 패턴이라는 단어가 세상에 처음 나오게 되죠.

디자인 패턴: 재사용 가능한 객체지향 소프트웨어의 요소

이 책은 디자인 패턴 연구의 기초가 되었으며

향후 디자인 패턴에 대한 연구가 발전해

지금 날 우리가 많이 사용하는 프레임워크, 라이브러리에 녹아들어 있고

그러기 때문에 우리는 이러한 디자인 패턴에 대해 배워야 한다고 하는 것이죠!

 

마무리

길이 너무 길다고요? 정리해드리겠습니다!

  1. 디자인 패턴은 소프트웨어 개발에서 반복적으로 발생하는 문제를 해결하기 위한 재사용 가능한 해결책으로,
    역사적으로 1990년대 GoF(Gang of Four) 책을 통해 처음 소개되었습니다.
  2. 이러한 패턴은 현재 많이 사용되는 프레임워크와 라이브러리에 녹아들어 있어
    개발자들에게 필수적인 개념으로 인식되고 있습니다.
  3. 따라서 개발자들은 소프트웨어 개발의 효율성과 품질 향상을 위해 디자인 패턴을 배워야 합니다.

앞으로는 여러 대표 디자인 패턴들의 소개로 찾겠습니다!

728x90

'CS > 디자인 패턴' 카테고리의 다른 글

싱글톤(Singleton) 패턴  (1) 2023.05.09