본문으로 건너뛰기

M31.01 · 작업 명세·환경·완료 기준·작은 변경 루프

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 모호한 요청을 입력·환경·변경 범위·산출물·비목표가 있는 작업 명세로 고친다.
  • 결과를 보기 전에 정상·경계·실패 입력과 완료 기준을 정하고 실제 검증 범위를 판정한다.
  • 작은 변경의 차이·실행 기록·결과를 같은 소스와 입력에 연결해 완료 또는 추가 확인을 결정한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

일반 코딩 경험과 M01.02의 자료 계약, M01.05의 소스/환경 재현 명세를 사용한다. 언어 문법·ROS·GPU·특정 에이전트 설치는 필요 없다. 아래의 완전한 합성 명세와 기록을 분석하며 기존 장비 실험의 재현을 완료했다고 주장하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

요청을 실행 가능한 판정으로 바꾼다

“로봇 로그 변환을 고쳐 줘”라는 요청만으로는 어디까지 바꿔도 되는지, 어떤 결과가 맞는지 알 수 없다. 개발자나 AI 도구가 많은 파일을 만들었다는 사실도 그 질문의 답이 되지 않는다. 작업 명세는 작업자가 무엇을 입력받아 어디까지 바꾸고 어떤 근거를 제출해야 하는지 합의한 기록이다. 완료 기준은 그 근거를 보고 통과/실패/미확인을 결정하는 조건이다. 도구가 자신 있게 설명한 문장과 별도로 적는다.

일반 코딩을 할 수 있어도 AI/로봇 작업은 코드 밖의 조건에서 자주 어긋난다. 같은 숫자 250도 mm인지 m인지에 따라 다르고, 같은 배열도 축·좌표·시간의 계약이 다르면 다른 입력이다. 실험에 쓰는 소스·패키지·설정·데이터의 식별자와 허용 변경 범위를 함께 고정해야 결과의 원인을 좁힐 수 있다. M01.05에서 익힌 환경 기록이 여기서는 작은 작업의 시작 조건이 된다.

작업 범위는 작아도 목표는 관찰 가능해야 한다. “정확도를 높인다”보다 “제공된 거리 행을 mm에서 m로 바꾸되 행 ID와 원본을 보존하고, 거부 행의 이유를 남긴다”가 검사 가능하다. 모델 학습·실물 연결·배포처럼 이번에 하지 않는 일도 비목표로 적는다. 비목표는 나중에 할 수 없다는 뜻이 아니라 이번 결과로 증명하지 않는 범위다.

작은 명세의 다섯 칸

다음은 실제 저장소가 아니라 교육용 합성 작업이다. RevA, LockA, DataA 같은 표시는 실제 버전이나 해시가 아니다. 소스 함수의 거리 변환이 잘못되었지만 언어 문법은 이미 작성되어 있다고 가정한다.

칸이번 작업의 합의
목적·입력DataA의 행 ID와 distance_mm을 읽어 거리 m와 거부 이유를 만든다. distance_mm은 유한한 수이며 0 이상인 거리로 정의한다.
실행 환경소스 RevA, 수정 전 작업 트리, 패키지 LockA, 설정 ConfigA, 입력 DataA를 기록한다. 실제 프로젝트에서는 실행 인터프리터·작업 디렉터리·명령·빌드 공간도 남긴다.
변경 범위거리 변환 함수 한 곳만 수정한다. 입력·기대값·판정 오차·장치 설정은 바꾸지 않는다. 더 넓은 수정이 필요하면 먼저 근거와 명세 변경을 검토한다.
산출물소스 차이, 사용한 입력/설정 식별자, 결과표, 실행/검증 기록, 미확인 항목을 제출한다. “완료” 한 문장은 산출물을 대신하지 않는다.
완료·비목표아래 정상/경계/실패 판정 모두 충족, 원본 불변. ROS·추론·GPU·실물·제어 주기 성능은 이번 검증 대상이 아니다.

거리 계약에서 0은 정상 경계다. 반면 음수는 이 자료에서 금지한 거리 값이라 거부한다. 이 규칙을 모든 로봇 좌표에 확대하면 안 된다. 기준 원점 반대편의 위치나 부호 있는 속도는 음수일 수 있으므로 다른 자료의 계약을 다시 읽어야 한다. 텍스트나 누락을 임의로 0으로 바꾸면 측정 실패와 실제 거리 0을 구분할 수 없게 된다.

완료 기준을 먼저 고정한다

제공 입력은 다음 네 행 전부다. 행의 순서와 ID는 유지한다. 결과가 숫자인 정상 행만 변환하고, 실패 행은 삭제하지 않고 행 ID와 거부 이유를 결과에 남긴다.

행 IDdistance_mm기대 결과판정의 역할
r12500.250 m정상 변환, 250÷1000
r200 m허용 경계
r3-2거리 범위 오류로 거부금지한 음수 거리
r4"offline"숫자 형식 오류로 거부측정 실패를 0으로 숨기지 않음

숫자 결과는 절대 오차 0.000001 m 이하를 허용한다. r1이 0.2500004 m이면 오차 0.0000004 m로 수치 조건을 통과한다. 0.250002 m이면 오차 0.000002 m로 실패한다. 이 허용오차는 자료 변환 예제의 합성 기준이며 실제 로봇의 위치 정확도 규격이 아니다. 숫자 조건 외에도 정상 2행·거부 2행, 각 ID와 이유의 대응, 원본 DataA 불변을 모두 요구한다. 수치 하나가 맞아도 거부 행을 없애면 완료가 아니다.

기대값이나 오차 기준을 결과를 본 뒤 느슨하게 바꾸면 개선과 기준 변경을 구분할 수 없다. 기준이 잘못되었다는 새 근거를 찾았다면 그 문제를 따로 기록하고 원래/수정 기준과 영향을 검토한다. 실패를 없애려고 기준 파일만 바꾼 결과를 원래 작업 통과로 보고하지 않는다.

작은 변경 루프는 근거를 좁히는 방법이다

먼저 고정 입력에서 현재 실패를 확인한다. 합성 기록의 기존 r1 출력이 2.5 m라면 0.250 m 기준과 어긋난다. 단위 변환식을 살펴볼 가설은 생기지만 이 숫자 하나만으로 모든 구현 원인을 단정하지 않는다. 실제 코드와 경로를 확인해 수정 대상을 좁힌다.

다음으로 한 논리적 변경을 적용하고 차이를 검토한다. Git diff 공식 문서는 작업 트리·인덱스·커밋 사이의 비교 대상을 구분한다. 여기서 중요한 것은 명령 암기가 아니라 무엇과 무엇을 비교했는가다. 소스 한 함수 수정이 허용 범위였는데 입력 파일·기대값·장치 설정도 바뀌었다면 결과가 좋아진 원인을 바로 승인할 수 없다. Git status 공식 문서의 수정/미추적 상태도 함께 확인해 diff에 보이지 않은 새 입력이나 설정을 놓치지 않는다.

변경 뒤에는 수정과 관련된 판정을 다시 확인한다. 새 r1 출력만 보고 끝내지 말고 r2 경계와 r3/r4 거부 동작이 유지되는지 확인한다. 이렇게 변경 때문에 깨질 수 있는 기존 동작을 다시 확인하는 것이 회귀 확인이다. 이미 수행한 관련 검증이 통과했고 추가 변경·실패가 없다면 의미 없이 같은 검사를 반복하기보다 판정과 미확인 범위를 기록한다.

변경을 작게 나누는 것은 무조건 한 줄만 바꾸라는 뜻이 아니다. 한 계약을 일관되게 고치기 위해 여러 파일이 필요할 수 있다. 그때는 함께 바뀌어야 하는 이유·검증 범위를 설명한다. 반대로 변환 수정에 모델 교체·GUI 개편·장치 보정까지 섞으면 어떤 변화가 결과를 만들었는지 검토하기 어려워진다. 이번 명세의 범위를 넘는 요구는 다음 작업으로 분리한다.

빌드 성공·선택된 검사·완료는 서로 다르다

컴파일이나 빌드가 성공했다는 기록은 실행 산출물을 만들었다는 근거다. 입력의 단위와 거부 규칙까지 맞았다는 근거는 아니다. CMake 3.28 CTest 문서는 프로젝트에 등록한 테스트를 실행하고 결과를 보고하는 도구를 설명한다. 선택 조건으로 실제 실행한 테스트가 무엇인지와 개수, 실패/건너뜀을 읽어야 한다. “테스트 성공”이라는 요약만으로 요구한 네 사례를 모두 수행했다고 추론하지 않는다.

이 단원에서는 다음 기록을 읽는다. 모든 값과 실행 기록은 교육용이며 실제 CTest나 로봇 실행 결과가 아니다.

제출안변경·입력제출된 검증판정
A허용 함수만 수정, DataA/ConfigA 유지새 소스 산출물로 r1~r4 실행; 0.250/0/범위 거부/형식 거부, 원본 불변이번 자료 계약의 통과 근거가 됨
B함수 외에 입력을 DataB로 바꾸고 기대값 파일도 수정변경된 입력·기준에서 4건 성공원래 DataA/기준 통과를 입증하지 못함
C허용 함수만 수정, DataA 유지빌드 성공, 테스트 선택 결과 0건네 사례 미실행이므로 미확인; 완료 아님

A도 실물 장치에서 지연이 짧거나 안전하다는 근거는 아니다. 제출한 소스/입력/설정·검증 범위 안에서만 통과를 말한다. 같은 파일 이름의 오래된 산출물을 실행했다면 새 변경을 검증한 것인지 추가 확인해야 한다. 테스트의 입력 식별자와 실제 실행 경로, 기록한 산출물 식별자를 이어 보는 이유다.

마지막 기록은 “A의 네 사례와 원본 불변을 확인해 이번 변환 계약을 통과했다. 장치/GPU 성능은 미확인이다. 다음 작업은 새 자료 형식 지원 여부의 명세다”처럼 쓴다. 사람이나 도구가 제안한 변경, 실행 관찰, 해석, 완료 판단을 각각 구분하면 다음 작업자가 근거를 이어 받을 수 있다. 다음 M31.02에서는 이 명세를 AI 코딩 도구에 줄 때 사람 검토와 실행 권한의 경계를 다룬다. 기존 M01.05 재현 환경은 시작 조건, 기존 응용 교재의 5.12 재현성 체크리스트와 6.8 포트폴리오 패키징은 나중에 학습/배포로 확장하는 예다. 지금 전체 응용 장을 먼저 이수할 필요는 없다.

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    5.12 재현성 체크리스트

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    6.8 포트폴리오 패키징

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

장비와 설치 없이 위 네 행과 제출안 A/B/C를 이용한다. 원래 요청은 “로그 변환을 고쳐 결과가 잘 나오게 해 줘”다. 소스 RevA의 기존 r1 출력은 2.5 m이며 다른 세 행은 명세대로 동작했다고 가정한다.

  1. 다섯 칸 작업 명세를 작성한다. 목적/입력, 환경 식별자, 허용 변경, 제출 산출물, 완료 기준/비목표를 빠짐없이 적는다. 다음 과제의 명세가 아니라 이번 네 행의 명세여야 한다.
  2. r1~r4 기대값 또는 거부 이유와 정상/거부 개수를 표로 적는다. r1의 두 후보 0.2500004 m와 0.250002 m를 판정하고, 기준과 원본 보존이 필요한 이유를 적는다.
  3. A/B/C를 통과 또는 미통과/미확인으로 분류한다. 각 결론에 변경 범위·입력/기준·실행 사례라는 서로 다른 근거를 연결하고 다음 확인 한 가지를 제안한다. 실제로 도구를 실행하지 않았음을 기록한다.

막히면 먼저 입력·소스·판정 기준을 서로 다른 항목에 표시한다. “4건 성공”만 적은 답은 입력/사례 범위 근거가 빠진 부분 답이다. 언어 문법이나 새 코드를 작성할 필요는 없다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

“사진 입력을 받아 잘 추론하게 고치고 알아서 배포해 줘”라는 요청에서 작업자가 서로 다르게 해석할 수 있는 빈칸 네 가지를 찾고, 각 빈칸에 기록할 내용과 이번 작업의 비목표 예 하나를 제안하라. 새 모델·실제 배포를 반드시 수행하라는 뜻으로 해석하지 않는다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

이번 거리 계약에서 결과가 r1=0.2500004 m, r2=0 m이고 r3/r4를 결과에서 삭제했다. 개발자는 “숫자 오차 안이고 정상 2개이므로 완료”라고 말한다. 수치 판정과 전체 판정을 나누고, ID/거부 개수·원본 보존의 추가 근거를 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

변경한 소스의 빌드는 성공했지만 실행 보고서는 예전 build_old의 실행 파일을 가리킨다. 테스트 요약에는 “성공”이라고만 있고 선택한 테스트 이름·개수는 없다. 지금 완료를 승인할 수 있는가? 바꿀 코드를 추측하기 전에 확인할 근거 세 가지와 아직 주장할 수 없는 범위를 적어라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.