56P by kciter1 2023-08-16 | favorite | 댓글 10개

소프트웨어는 어떠한 문제를 해결하기 위해 존재합니다. 그렇기 때문에 개발자는 문제를 이해하고 그것에 맞게 설계하여 구현합니다. 이때 문제를 이해하고 설계하는 데 있어 개발자에게 추상적 사고와 구조적 사고는 큰 무기입니다.

보통 추상적, 구조적 사고는 난해하거나 두루뭉술하게 설명될 때가 많습니다. 하지만 이러한 사고를 하는 구체적인 방법론은 분명히 존재합니다. 이 발표에서는 개발자가 추상적이고 구조적인 사고를 하는 구체적인 방법과 이러한 사고를 통해 도메인 모델링, 리팩토링, 아키텍처 등 소프트웨어를 설계하는 법을 소개합니다.

  • 개발자가 하는 일은 프로그램을 만드는 것
  • 프로그램을 만드는 이유는 특정 문제를 해결하기 위함이고 문제를 해결하는 이유는 비즈니스를 위한 것
  • 프로그램을 만들 때 네 가지 단계로 이루어져 있음
    • 이해 / 분석 -> 설계 -> 구현 -> 피드백
  • 개발자는 시니어가 될 수록 코드 작성 뿐만 아니라 이 모든 단계에 관여하게됨
  • 시니어는 경험을 기반한 직관을 통해 문제를 빠르게 해결함
  • 하지만 직관은 위험할 수 있음. 따라서 방법론을 익히는 것이 중요
  • 추상적, 구조적 사고가 그러한 방법론의 기초
  • 추상은 요소에서 공통적인 것 혹은 관심있는 것을 추출하는 것
  • 그래서 추상은 사물을 단순화 한다음 재해석하는 것이라 볼 수 있음
  • 요소 환원주의 사고를 통해 단순화하고 재해석 할 수 있음
  • 요소 뿐만 아니라 행동도 추상화가 가능하다.
  • 추상화는 계층이 존재한다.
    • 적절한 추상화 수준을 정해야 한다.
    • 과도한 추상화는 실체를 알 수 없기 때문에 좋지 않다.
  • 구조적 사고는 내용을 겹치지 않고 빈틈없이 정리하는 것
    • MECE 프레임워크와 유사
  • 중요한 것은 무조건 겹치지 않고 빈틈없이 정리되야 한다는 점은 아님
  • 구조화도 추상화처럼 단계가 있습니다. 한 발자국 더 멀리서 보는 것이 가능
  • 추상적이고 구조적인 사고 방식을 하는 구체적인 방법이 존재함
    • 탑다운과 바텀업
    • 모델
      • Classification
      • Abstraction
      • Generalization
    • 프레임워크 사고
  • 소프트웨어 설계에 추상적, 구조적 사고 적용 가능함
  • 소프트웨어 구현 단계를 크게 3가지로 나누면 도메인 모델링, 아키텍처, 코드 작성으로 나눌 수 있음
  • 도메인 모델링은 요구사항을 추상적으로 뽑아내고 점진적으로 확장하는 것이 가능
  • 아키텍처는 일을 하는 방법을 나타냄
    • 어떻게 일하는가, 어떻게 나누는가
  • 아키텍처는 요구사항 -> 컨셉 -> 구현 -> 피드백 프로세스를 따름
  • 추상적인 아키텍처 컨셉을 점진적으로 구체화하는 것이 가능
  • 프로그래밍 패러다임은 소프트웨어의 구성요소를 바라보는 시선
  • 로직은 세가지 측면으로 바라볼 수 있음. Function, Usecase, Aspect
  • 문법 설탕은 추상화된 프로그래밍 문법
    • 독이 될 수도 있음
  • 리팩토링은 패러다임, 코드 크기, 소유권, 중복 여부, 수정 가능성, 의존이라는 6가지 관점으로 볼 수 있음
  • 리팩토링은 세 가지 방법이 존재. 추상화, 구조화, 일반화
  • 추상적이고 구조적인 사고력을 기르기 위해선 다양한 경험을 하는 것이 좋음
  • 도식화를 하는것은 큰 도움이됨
  • 직관은 경험주의적 사고. 시간을 절약할 수 있지만 위험할 수 있음
  • 패턴은 추상적인 사고를 익히는데 도움이 됨
  • 꼭 추상적이고 구조적인 것이 만능은 아님

발표 자료와 내용 요약 고맙습니다.

아이디를 보니 발표자 본인이시군요! 인포콘 추첨실패로 못들었는데,, 발표자료 공유해주셔서 감사합니다 :)

감사합니다. :D 제 자료가 도움이 되었으면 좋겠네요!

상세한 요약 감사합니다.

요약이 생각보다 오래걸리더라구요 ^^;; 봐주셔서 감사합니다!

좋은글과 요약 감사합니다~

좋게 봐주셔서 감사합니다 :D

잘 읽었습니다!

적절한 추숭화 수준을 정해야 한다.
-> 여기 오타가 있습니다 :)

확인 감사합니다. :) 그런데 한 번 포스팅하면 수정이 불가능한 것 같네요 ㅠㅠ

아하 제가 몰랐네요. 확인 감사합니다!