카테고리 없음

추상화, 일반화, 단순화 그리고 자동화

BEOKS 2023. 1. 12. 20:37

기억하기

개발자로서 일을 하다 보면 여러 회의를 거치면서 제목과 같은 단어들이 오가는 것을 알 수 있다. 

 

하지만 같은 의미인데도 다른 뜻과 의도로 말하는 경우가 많다.

 

기획자 - (간략) 저희가 데이터를 수집하고 검증화를 하려고 하는데 일일이 하기에는 시간이 오래 걸릴 것 같아요, 그래서 자동화를 하는 시스템을 만들었으면 좋겠어요.

 

나 - (자동화..? 크롤링 같은 걸 말하는 건가? 일단 데이터 수집 방식에 대해서 여쭤봐야겠다.) 아 그럼 데이터는 어떻게 수집하시나요?

 

기획자 - 그것도 있고 저희가 책에 있는 내용을 수기로 입력하기도 해요. 그리고 이 데이터가 올바른지 검증하는 시스템을 자동화했으면 좋겠어요.

 

나 - (데이터 검증 기준이 있으니 그걸 코드로 구현해 달라고 하시는 건가?) 그럼 데이터가 올바른지 판단하는 기준이 있나요?

 

기획자 -  기준은 따로 없고, 관련 전문가 분이 자문을 해주실 거예요. 

 

나 - (어?) 그럼 전문가 분들이 데이터를 일일이 검증하시는데 여기서 어떤 걸 자동화하시길 원하는 거죠?

 

기획자 - 저희가 데이터를 입력하면 이걸 각 전문가분들이 바로바로 받아서 하실 수 있으면 좋겠어요.

 

나 - (단순화를 말씀하시는 건가..?)  

 

사실 나도 각 단어의 의미에 애매하다고 생각한 점이 있었기 때문에 대화를 하면서 나중에 각 단어에 대해서 다시 정리해 봐야겠다는 생각이 들었다.

 

공부하기

1. 추상화 

미술에서의 추상화(抽象畫)는 뽑을 추(), 코끼리 상(象, 모양을 뜻하기도 한다), 그림 화(畫)를 조합한 한자어다. 한글로 풀자면, 모양을 추출한 그림이라고 할 수 있다. 사전적인 의미론 사물에서 점, 선, 면 등 일부 요소를 추출해 표현한 것을 의미한다. 

개발자가 자주 쓰는 추상화도 이와 별반 다를 게 없다. 차이점은 사물 대신 컴퓨터 과학의 복잡한 요소를 고려한다는 점이다. 나는 좀 더 일반적으로 "논리에서 특징을 추출하는 작업"이라고 표현하고 싶다. 

 

2. 일반화 

사전적인 의미론 개별적이거나 특수한 것들을 일반적인 것으로 만드는 것을 의미한다. 

음... 좀 더 쉽게 풀어보자. 일반화를 뜻하는 generalization의 정의는 다음과 같다. "a written or spoken statement in which you say or write that something is true all of the time when it is only true some of the time:"

특정한 때에만 사실이었던 것들을 항상 사실이라고 표현하는 것을 의미한다. 음 좋아 충분히 쉬운 표현이다. 이러니까 근거 없는 일반화는 성급한 일반화의 오류를 초래한다고 하는구나.

 

3. 단순화

사전적인 의미론 복잡하지 않고 간단하게 되다. 또는 그렇게 만들다는 것을 의미한다.

  • 단순화한 공정.
  • 단순화한 체계.
  • 단순화한 형태.
  • 과정을 단순화하다.
  • 구조를 단순화하다.
  • 우리는 생산자와 직접 거래를 함으로써 농산물을 유통 과정을 단순화했다.
  • 기계에 익숙하지 않은 노년층을 위해 복잡한 기능을 단순화한 휴대 전화가 출시되었다.
  • 가: 이 화가의 작품들은 모두 쉽고 간단하게 그려진 것 같아요.
    나: 복잡한 형태를 단순화하여 표현한 것이 이 작품들의 가장 큰 특징이죠.

내 생각에 추상화와 매우 유사한 의미라고 생각한다. 위 예시 문장에서 단순화를 추상화로 바꾸어 보면 일단 어색하진 않다. 복잡한 것을 간단하게 만드는 방법은 대부분 추상화를 통해서 이루어지기 때문이다. 내가 생각한 다른 점이라면 추상화는 "방법"이며 단순화는 "목적"이라는 생각이 든다.

 

4. 자동화

사전적인 의미론 사람의 노동력에 의존하던 것을 기계화하고 프로세스를 표준화하는 과정에서 자동적으로 이루어지도록 하는 과정을 말한다. 오.. 지금까지 나온 개념 중에 가장 의미가 길다. 차근차근 알아보자.

 

기계화와 표준화를 통해서 사람의 손을 벗어나 작업을 자동으로 수행하는 것이라는 생각이 든다. 즉, 사람이 관여하지 않아도 알아서 수행되도록 만드는 과정이다. 

 

기계화와 표준화를 위해서는 어떤 것이 필요할까? 우선 '화'의 대상을 정확히 정의해야 할 것 같다. 올바를 변화를 주기 위해선 대상을 정확히 알아야 한다. 

 

정확히 알게 되면 추상화와 일반화가 필요하다.

조사한 자동화 대상은 아래와 같다.

목재를 두 손으로 든다. -> 트럭으로 옮긴다. -> 트럭 위에 있는 사람에게 전달한다. -> 트럭 위에 있는 사람은 두 손으로 받아 차곡차곡 적재한다. -> 트럭을 운전한다. -> ( 역순으로 목재를 하역한다.)

 

추상화를 하게 되면 "목재를 트럭에 적재한다 -> 운전한다. -> 목재를 하역한다." 3가지로 요약이 가능하다.

여기서 기계화의 대상을 정해보자. 운전은 기술적 난의도가 높으므로 적재와 하역을 위한 기계를 우선 만들어보자.

즉, 세부적인 작업에서 기계화를 위한 작업을 추출하기 위해 추상화가 필요하다.

 

기계화를 위해선 다음으로 대상 일반화가 필요하다.

목재의 특징에 따라서 기계화의 "방법"이 달라질 것이다. 

목재의 모양이 제각각이어서 각 모양에 맞는 기계화를 진행하려면 엄청난 시간이 걸리기 때문이다.

다행히 지금까지 들어온 목재를 분석하니 다음과 같은 정확한 일반화를 할 수 있다면 올바른 자동화를 달성하기 쉬울 것이다.

[목재가 3미터 이상 5미터 이하의 지름 1미터 이하인 통나무인 경우]

 

즉, 자동화는 내가 생각하기에 "작업을 정의하고 특징을 파악해 이를 대신할 수 있는 기계를 만드는 것"이라고 생각한다. 

 

회고하기

기억을 되짚어 보자.

 

단어의 뜻을 제대로 알았다면 아래와 같이 좀 더 명확한 대화를 할 수 있을 것 같다. 

 

기획자 - (간략) 저희가 데이터를 수집하고 검증화를 하려고 하는데 일일이 하기에는 시간이 오래 걸릴 것 같아요, 그래서 최대한 자동화를 하는 시스템을 만들었으면 좋겠어요.

 

나 - (자동화라면 어떤 작업을 기계화하고 싶은지 정의해야겠다.) 우선 데이터를 수집하고 검증하는 과정 전체에 대해서 설명해 주실 수 있나요?

 

기획자 - 데이터는 웹 크롤링을 하거나 저희가 직접 수기로 입력해요. 검증은 저장된 데이터를 전문가 분들이 직접 진행하실 예정이에요

 

나 - (작업에서 자동화 대상을 추상화해 보자) 이 과정에서 어떤 부분을 자동화하시길 원하시나요?

 

기획자 -  저희가 모은 데이터는 검수자가 결제를 위해 보고서로 만들어야 하는데 이 부분을 자동화하고 싶어요.

 

나 - (그럼 자동화 대상의 특징은 무엇일까?) 그럼 모은 데이터와 보고서의 형태는 어떤 식인가요?

 

기획자 - 웹 크롤러 데이터와 저희가 모은 데이터 모두 같은 엑셀 형식으로 저장돼요. 보고서에는 엑셀 중에서 키워드, 출처 그리고 데이터 본문이 있고 각 검수자의 이름과 결제 확인란이 존재해요. 

 

나 - (ㅇㅋ 이제 충분하다)  

 

개발자이기 전에 같은 회사원으로써 상대방을 이해하기 위한 노력은 결국 나에게 좋은 보상으로 돌아오지 않을까?