소프트웨어와 생활

모델을 만드는 다섯 걸음

어려운 것은 코드가 아니라
무엇을 버릴지 정하는 일입니다

학습 목표

  1. 모델을 만드는 다섯 걸음을 차례대로 설명할 수 있다.
  2. 관찰한 것 가운데 핵심 요소를 골라내는 기준을 대어 볼 수 있다.
  3. 결과가 어긋났을 때 어느 걸음으로 되돌아가야 하는지 판단할 수 있다.

다섯 걸음

이제 모형(model, 모델)을 직접 만들어 보겠습니다. 이 과목에서 모형과 모델은 같은 것을 가리킵니다. 순서가 있습니다. 이 순서를 건너뛰고 바로 코드부터 쓰기 시작하면 대개 도중에 멈추게 됩니다. 무엇을 만들려는지가 정해지지 않았기 때문입니다.

모델은 다섯 걸음으로 만든다 1 문제 정하기 2 덜어 내기 3 화면 정하기 4 규칙 적기 5 실행하고 고치기 어긋나면 알맞은 앞 걸음으로 되돌아간다
다섯 걸음에서 각각 하는 일과 끝나면 남는 것
걸음 하는 일 끝나면 손에 남는 것
1. 문제 정하기 무엇을 알아보려는지 한 문장으로 적는다. 「~하면 ~이 어떻게 될까」 꼴이면 좋다. 물음 한 줄
2. 덜어 내기 보이는 것을 다 적은 뒤 물음에 걸리는 것만 남긴다. 모델을 만드는 일의 알맹이다. 핵심 요소 서너 개
3. 화면 정하기 무엇을 손잡이로 열고 무엇을 그래프로 뽑을지 정한다. 화면 스케치 한 장
4. 규칙 적기 한 걸음마다 낱낱이 무엇을 하는지 적고 프로그램으로 옮긴다. 도는 프로그램
5. 실행하고 고치기 아는 답으로 맞춰 보고 어긋나면 되돌아간다. 조건을 바꿔 가며 여러 번 실행한다. 결과 표와 해석

데이터 분석과 닮았다

데이터를 분석하는 과정과 구조가 같습니다. 물음이 먼저 오고, 계산은 가운데 있으며, 마지막은 사람이 읽는 것입니다.

다른 점은 2번입니다. 분석은 세상에서 값을 모아 오지만, 모형은 무엇을 넣을지 스스로 정해 새로 짓습니다. 그래서 무엇을 넣고 뺄지가 훨씬 어렵습니다.

스스로 확인

「좋은 모델을 만들자」는 1번 걸음의 물음으로 알맞을까요? 알맞지 않다면 어떻게 고쳐 적어야 할까요?

덜어 내기

학교 급식 줄이 몰리는 문제를 보기로 삼습니다. 「지금 줄이 얼마나 긴지」를 알려 주는 데서 그치지 않고 「무엇을 바꾸면 줄이 짧아질까」를 실행해 보겠습니다.

1걸음 — 물음

「학년별로 수업을 조금씩 다른 시각에 마치면, 가장 긴 줄이 얼마나 짧아질까?」

이 물음이 좋은 까닭은 바꿀 것과 볼 것이 둘 다 들어 있기 때문입니다. 바꿀 것은 「마치는 시각의 간격」이고, 볼 것은 「가장 긴 줄」입니다.

2걸음 — 먼저 다 적는다

급식실에서 실제로 일어나는 일을 생각나는 대로 다 적어 봅니다. 이 단계에서는 거르지 않습니다.

수업이 끝나는 시각 · 교실에서 급식실까지의 거리 · 뛰어가는 사람과 걸어가는 사람 · 배식대 개수 · 한 사람이 받는 데 걸리는 시간 · 메뉴에 따라 달라지는 배식 속도 · 식판을 떨어뜨리는 일 · 친구를 기다리는 사람 · 자리가 없어 서성이는 사람 · 급식을 안 먹는 사람 · 그날의 날씨 · 앞사람과 나누는 이야기

그다음 세 가지 기준으로 거른다

핵심 요소를 골라내는 세 가지 기준
기준 무엇을 묻나 걸리면
물음에 걸리나 이것이 달라지면 「가장 긴 줄」이 달라지나? 아니면 뺀다
숫자로 옮길 수 있나 몇 초 · 몇 개 · 몇 퍼센트로 적을 수 있나? 못 하면 뺀다
규칙으로 적을 수 있나 「이러면 저렇게 한다」로 쓸 수 있나? 못 하면 뺀다
관찰한 것을 세 기준으로 걸러 핵심 요소를 고른 결과
관찰한 것 남기나 까닭
수업이 끝나는 시각 남긴다 우리가 바꾸려는 바로 그것이다
교실에서 급식실까지 걸리는 시간 남긴다 층마다 다르고, 도착 시각을 정한다
배식대 개수 남긴다 동시에 몇 명이 받는지를 정한다
한 사람이 받는 시간 남긴다 줄이 줄어드는 속도를 정한다
뛰는 사람과 걷는 사람 흔들림으로 사람마다 따로 정하지 않고 도착 시각을 조금씩 흩어 표현한다
메뉴에 따른 배식 속도 뺀다 하루만 실행하는 모형이라 그날은 메뉴가 하나다
식판을 떨어뜨리는 일 뺀다 드물고, 가장 긴 줄에 큰 영향을 주지 않는다
앞사람과 나누는 이야기 뺀다 숫자로 옮기기 어렵다. 옮겨도 물음과 상관이 적다

뺀 것을 적어 둔다

표에서 「뺀다」로 적은 줄을 지우지 말고 남겨 두세요. 나중에 결과가 이상하게 나오면 여기서 뺀 것 가운데 하나가 중요했던 것일 수 있습니다. 목록이 남아 있으면 어디로 되돌아갈지 금방 찾습니다.

보고서에도 이 목록을 「다루지 않은 것」으로 넣습니다.

스스로 확인

「급식을 안 먹는 사람」은 표에 없습니다. 남겨야 할까요, 빼야 할까요? 세 기준을 차례로 대어 보고 정해 보세요.

화면 정하기

핵심 요소를 골랐으면 화면을 종이에 먼저 그립니다. 코드를 쓰기 전에 그리는 까닭은, 이 그림이 「무엇을 만들 것인가」의 목록이 되기 때문입니다.

화면 스케치 — 만들 것의 목록이 된다 조절하는 자리 마치는 시각 간격 배식대 개수 한 사람 배식 시간 보여 주는 자리 배식대 줄에 선 학생 지금 이 순간 쌓이는 자리 가장 긴 줄의 변화
화면의 세 자리와 무엇을 놓을지
화면의 자리 무엇을 놓나 정할 때 묻는 것
조절하는 자리 핵심 요소 가운데 바꿔 볼 것만 손잡이로 놓는다. 「이걸 바꿔 볼 일이 정말 있나?」
보여 주는 자리 지금 어떤 상태인지 그림으로 보인다. 「이 그림을 보면 무엇을 알 수 있나?」
쌓이는 자리 시간에 따라 달라지는 값 하나를 그래프로 남긴다. 「물음에 답하는 값이 이것 맞나?」

그래프로 뽑을 값은 물음이 정한다

우리 물음은 「가장 긴 줄이 얼마나 짧아질까」였습니다. 그러니 그래프로 뽑을 것은 「그 순간 가장 긴 줄의 길이」입니다. 「기다린 시간의 평균」을 뽑았다면 물음과 어긋난 그래프가 됩니다.

세고 싶은 것과 실제로 세는 것이 어긋나면 그 뒤의 계산이 모두 소용없어집니다.

스케치가 끝나면 만들 것의 목록이 생깁니다 — 손잡이 셋, 단추 둘, 움직이는 그림 하나, 그래프 하나. 이제 하나씩 만들어 가며 지워 나가면 됩니다.

스스로 확인

「교실에서 급식실까지 걸리는 시간」은 핵심 요소인데 손잡이로 놓지 않았습니다. 왜 그랬을까요?

실행하고 고치기

프로그램이 돌아가기 시작하면 끝난 것 같지만, 여기서부터가 진짜입니다. 처음 실행한 모형은 이상한 결과를 내는 일이 흔합니다.

먼저 아는 답으로 맞춰 본다

지금 우리 학교의 조건을 그대로 넣어 봅니다. 그리고 결과가 실제로 아는 것과 비슷한지 봅니다. 「우리 학교는 대개 12시 40분쯤 줄이 사라진다」를 알고 있다면, 모형도 그 근처에서 사라져야 합니다.

결과가 어긋났을 때 어느 걸음으로 되돌아가는지
어떻게 어긋났나 무엇을 의심하나 되돌아갈 곳
줄이 영원히 안 줄어든다 들어오는 속도가 나가는 속도보다 빠르게 되어 있다. 숫자를 잘못 넣었을 가능성이 높다. 4번(규칙)
줄이 아예 안 생긴다 도착 시각이 지나치게 넓게 흩어져 있다. 도착 시각을 흩는 부분을 확인한다. 4번(규칙)
대체로 맞는데 실제보다 훨씬 빨리 끝난다 덜어 낸 것 가운데 시간을 잡아먹는 무엇이 있었다. 수저와 물을 챙기느라 배식대 앞에서 멈추는 시간 같은 것. 2번(덜어 내기)
결과가 매번 크게 다르다 우연을 너무 크게 넣었거나, 사람 수가 너무 적어 흔들림이 크다. 4번(규칙)
숫자는 맞는데 물음에 답이 안 된다 뽑는 값이 물음과 어긋났다. 3번(화면)

되돌아가는 것은 실패가 아니다

표의 「실제보다 훨씬 빨리 끝난다」 줄을 보세요. 2번으로 되돌아가 뺐던 것 하나를 다시 넣는 일입니다. 이것은 잘못 만들어서가 아니라, 덜어 낸 것 중 무엇이 중요한지 미리 알 수 없기 때문에 생깁니다.

그래서 한 번에 하나씩만 되넣습니다. 두 개를 한꺼번에 넣으면 무엇이 맞았는지 알 수 없습니다. 입력을 하나씩 바꾸는 것과 같은 이유입니다.


맞춘 뒤에 비로소 물음에 답한다

아는 답에 맞춰졌으면 그제야 모르는 것을 물어볼 차례입니다. 손잡이를 하나씩 바꿔 가며 실행하고, 표에 적어 가며 봅니다.

결과를 적는 표의 예

조건별로 다섯 번씩 실행한 결과를 적는 표의 예
마치는 시각 간격 가장 긴 줄(평균) 다섯 번의 값이 퍼진 정도
0분(모두 동시에) — 여기가 기준이 된다
2분 — —
5분 — —

「다섯 번의 값이 퍼진 정도」 칸을 꼭 넣으세요. 평균만 적으면 「2분과 5분의 차이」가 진짜인지 우연인지 알 수 없습니다. 다섯 번의 값이 넓게 퍼져 있다면, 평균이 조금 다른 것은 아무 뜻이 없을 수 있습니다.

그리고 이 모형이 말할 수 없는 것

「간격을 5분으로 하면 가장 긴 줄이 짧아진다」가 나왔다고 합시다. 그래도 「그러니 그렇게 하자」로 바로 갈 수 없습니다. 이 모형은 수업 시간이 줄어드는 학년이 생긴다는 것도, 선생님들의 시간표가 엉킨다는 것도 모릅니다.

모형이 하는 일은 「줄에 대해서는 이렇게 된다」까지입니다. 나머지는 사람들이 모여 정할 일입니다.

스스로 확인

모형이 실제보다 훨씬 빨리 끝난다면 2번으로 되돌아간다고 했습니다. 뺐던 것 가운데 무엇을 먼저 되넣어 보시겠습니까?

핵심 정리

다섯 걸음

  • 문제 정하기 → 덜어 내기 → 화면 정하기 → 규칙 적기 → 실행하고 고치기.
  • 코드부터 쓰기 시작하면 도중에 멈추기 쉽다.
  • 분석과 다른 점은 2번이다. 분석은 값을 모아 오지만, 모형은 무엇을 넣을지 스스로 정해 새로 짓는다.

덜어 내기

  • 먼저 다 적은 뒤 세 기준으로 거른다 — 물음에 걸리나, 숫자로 옮길 수 있나, 규칙으로 적을 수 있나.
  • 사람마다 다른 것은 흔들림으로 표현할 수 있다.
  • 뺀 것을 지우지 말고 적어 둔다. 되돌아갈 곳이 된다.

화면 정하기

  • 화면은 조절하는 자리 · 보여 주는 자리 · 쌓이는 자리 셋이다.
  • 그래프로 뽑을 값은 물음이 정한다. 어긋나면 뒤가 다 소용없어진다.
  • 스케치가 곧 만들 것의 목록이 된다.

실행하고 고치기

  • 먼저 아는 답으로 맞춰 보고, 어긋난 모양에 따라 되돌아갈 곳을 정한다.
  • 되돌아가는 것은 실패가 아니다. 다만 한 번에 하나씩 되넣는다.
  • 모형은 「줄에 대해서는」까지만 말한다. 나머지는 사람들이 정할 일이다.

확인 퀴즈

배운 내용을 확인해 봅시다.

Q1

「앞사람과 나누는 이야기」를 모형에서 뺀 가장 알맞은 까닭은?

Q2

뺀 것의 목록을 남겨 두는 까닭은?

Q3

「가장 긴 줄이 얼마나 짧아질까」가 물음일 때 그래프로 뽑을 값은?

Q4

모형이 실제보다 훨씬 빨리 끝난다면 어디로 되돌아가나요?