본문으로 건너뛰기

ARXML 익스포트

이 장에서 할 일​

검증을 마친 설계를 AUTOSAR ARXML 문서로 내보낸다.

  • EDITOR 뷰 DESIGN 머리글의 Export 아이콘을 클릭한다. 저장 위치를 묻지 않고 프로젝트의 export 폴더에 바로 쓴다.
  • 만들어진 ARXML 5개를 확인하고, 앞 장들에서 만든 PNC(Partial Network Cluster) 설계가 어느 파일의 어느 요소로 기록되는지 대조한다.
  • PNC_System.arxml에서 <PNC-MAPPING> 블록을 직접 읽고, XML 편집기의 스키마 검사가 0 오류인지 확인한다.

이 장을 마치면 export 폴더에 ARXML 5개가 생긴다. 그중 4개는 AUTOSAR R25-11 스키마 검사에서 오류 0건이다. PNC_COM.arxml에는 익스포트 자체에서 생기는 오류가 보고되며(완성 예제에서 22건), 이 오류는 스키마 검사 결과 확인하기에서 설명한다.

시작하기 전에​

  • System 에디터와 검증을 마쳐 VALIDATION 패널이 "No validation issues." 상태여야 한다.
  • 저장하지 않은 편집이 없어야 한다. 탭 이름에 ● 표시가 있으면 Ctrl+S로 저장한다.
  • 익스포트에는 활성 라이선스와 서버 연결이 필요하다. 익스포트·임포트의 전체 기능은 PAIO 매뉴얼의 Import and Export를 참고한다.

프로젝트를 ARXML로 익스포트하기​

  1. 왼쪽 EDITOR 뷰에서 DESIGN 머리글 오른쪽에 있는 아이콘 4개 가운데 두 번째에 마우스를 올린다. 툴팁 Export가 보인다. 네 아이콘에는 툴팁 말고는 이름이 없으며, 툴팁은 왼쪽부터 Import, Export, PRTE Code Generation, PARA Code Generation이다.

    EDITOR 뷰 DESIGN 머리글의 Export 아이콘과 툴팁

    그림 12-1. DESIGN 머리글의 Export 아이콘. ① 뷰 머리글 EDITOR: PNC. ② 누를 아이콘 Export. 마우스를 올려 툴팁 Export가 보인다. DESIGN과 MODULE은 펼쳐져 있고 DOC, CODE, EXPORT는 접혀 있다. 열린 탭이 없어 오른쪽 편집기 영역에는 Open a file to start editing이 보인다.

    DESIGN 머리글 확대

    그림 12-2. 같은 머리글을 확대한 화면. ① 뷰 머리글 EDITOR: PNC. ② Export와 그 툴팁. 왼쪽 아이콘은 Import, 오른쪽 아이콘 두 개는 PRTE Code Generation과 PARA Code Generation이다.

참고. Export는 Explorer(창 맨 왼쪽 아이콘 막대 맨 아래의 Explorer 아이콘)에서 design 폴더를 우클릭하면 열리는 메뉴에도 있다. 두 곳 모두 같은 익스포트를 실행한다.

  1. Export를 누른다. 저장 위치를 묻는 파일 선택 창은 나오지 않는다. 결과는 항상 프로젝트의 export 폴더에 만들어진다.

  2. 화면 가운데에 Exporting to AUTOSAR 진행 창이 뜬다. 익스포트는 1초 안팎으로 끝난다.

    완료된 Exporting to AUTOSAR 진행 창

    그림 12-3. 완료된 Exporting to AUTOSAR 창. 메시지는 Export complete: 298 elements exported to PNC_*.arxml, 그 아래로 ✓ Complete!, 100%, 3 / 3 elements 1s elapsed, 그리고 Close 버튼이다.

    익스포트가 끝난 순간의 화면 전체

    그림 12-4. 익스포트가 끝난 순간의 화면 전체. 진행 창은 화면 가운데에 뜨고 뒤쪽은 어둡게 가려진다. 저장 위치를 묻는 창은 없었고, 왼쪽 EDITOR 뷰는 클릭 직전과 같은 모습이다.

  3. 창은 약 2초 뒤에 저절로 닫힌다. Close를 눌러 바로 닫아도 된다. 창을 천천히 읽을 시간은 없으므로, 결과는 다음 절처럼 export 폴더에서 확인한다.

참고. 메시지의 298 elements와 통계의 3 / 3 elements는 세는 대상이 다르다. 앞은 내보낸 요소 수, 뒤는 익스포트 단계 수이다. 두 숫자가 다른 것은 정상이다. 요소 수는 모델 크기에 따라 달라지므로 298과 다르게 나와도 된다.

주의. 익스포트가 실패하면 Export failed: <사유>가 표시되고 창이 열린 채 남는다. OFFLINE_EXPORT_DENIED는 서버 연결이 필요하다는 뜻이고, PLAN_EXPIRED는 라이선스 문제이다. 자세한 사유는 Import and Export를 참고한다.

만들어진 파일 확인하기​

  1. 왼쪽 EDITOR 뷰에서 EXPORT 머리글을 클릭해 펼친다. EXPORT에는 프로젝트 export 폴더의 파일이 보인다. 익스포트가 끝나면 이 목록은 저절로 새로 고쳐지므로 ARXML 5개가 바로 보인다. 파일 이름은 <프로젝트 이름>_*.arxml 규칙을 따르므로, 이 튜토리얼에서는 모두 PNC_로 시작한다.

    EDITOR 뷰 EXPORT의 ARXML 5개

    그림 12-5. 펼친 EDITOR 뷰의 EXPORT. ① EXPORT와 만들어진 ARXML — 이름순으로 PNC_COM.arxml, PNC_DataType.arxml, PNC_Interface.arxml, PNC_SWC.arxml, PNC_System.arxml 5개이다. ② 그중 다음 절에서 열 PNC_System.arxml.

  2. 각 파일에 들어가는 PNC 관련 내용은 다음과 같다.

    파일PNC 관련 내용
    PNC_System.arxmlSYSTEM과 SYSTEM-MAPPING. <PNC-MAPPING> 3개(PNC 하나당 하나), SYSTEM 수준의 <PNC-VECTOR-LENGTH> / <PNC-VECTOR-OFFSET>, SWC-ECU 매핑
    PNC_COM.arxmlECU-INSTANCE와 MACHINE-DESIGN. 커넥터의 <PNC-GATEWAY-TYPE>, <PNC-FILTER-ARRAY-MASK>, <PNC-WAKEUP-CAN-ID> 계열, 클러스터와 VLAN, 스위치 포트의 PNC 참조, <I-SIGNAL-I-PDU-GROUP> 20개, NM 설정, SOME/IP 서비스 인스턴스 선언
    PNC_SWC.arxmlSWC 타입과 VFC를 나타내는 <PORT-GROUP>, 머신의 <NM-NETWORK-HANDLE> 3개와 FunctionGroup 상태 매핑, 응용 AA의 <NETWORK-HANDLE-PORT-MAPPING> 3개, PARA 플랫폼 AA와 프로세스
    PNC_Interface.arxml포트 인터페이스와 서비스 인터페이스. PNC 요청에 쓰는 <NETWORK-MANAGEMENT-PORT-INTERFACE> 1개 포함
    PNC_DataType.arxml인터페이스가 쓰는 데이터 타입. PNC 전용 요소는 들어가지 않는다
  3. PNC 관련 요소가 실제로 어느 파일에 몇 개씩 들어갔는지는 다음과 같다. 0은 그 파일에 없다는 뜻이다.

    요소COMDataTypeInterfaceSWCSystem
    PNC-MAPPING00003
    PNC-IDENTIFIER00003
    PNC-VECTOR-LENGTH00001
    PNC-VECTOR-OFFSET00001
    PNC-GATEWAY-TYPE180000
    PNC-FILTER-ARRAY-MASK1080000
    PNC-WAKEUP-CAN-ID30000
    I-SIGNAL-I-PDU-GROUP200000
    PROVIDED-SOMEIP-SERVICE-INSTANCE40000
    REQUIRED-SOMEIP-SERVICE-INSTANCE30000
    PORT-GROUP000330
    NM-NETWORK-HANDLE00030
    NETWORK-HANDLE-PORT-MAPPING00030

참고. <PNC-VECTOR-LENGTH>와 <PNC-VECTOR-OFFSET>은 PNC마다가 아니라 SYSTEM에 한 번만 나온다. 예제 값은 각각 6과 2이다.

참고. <PORT-GROUP> 33개는 VFC가 33개라는 뜻이 아니다. VFC는 VFC_Comfort, VFC_ParkAssist, VFC_Trailer 3개이고, 이 3개가 루트 컴포지션 PncVehicle과 아래의 컴포지션·SWC 타입마다 한 번씩 되풀이되어 모두 33개가 된다. 33개 모두 <CATEGORY>PARTIAL_NETWORKING</CATEGORY>이며, <PNC-MAPPING>이 가리키는 것은 그중 PncVehicle 아래의 3개이다.

참고. 표는 여는 태그, 곧 요소 선언을 센 것이다. 다른 파일에서 그 요소를 가리키는 참조(<...-REF DEST="...">)는 세지 않았다. 그래서 SOME/IP 서비스 인스턴스는 선언이 있는 PNC_COM.arxml 에서만 개수가 잡히고, PNC_System.arxml 에서는 <SERVICE-INSTANCE-REF DEST="PROVIDED-SOMEIP-SERVICE-INSTANCE"> 처럼 참조로만 나타나므로 System 열이 0이다.

참고. 위 개수는 완성 예제를 익스포트한 결과이다. 따라 만든 프로젝트에서는 I-SIGNAL-I-PDU-GROUP 같은 일부 개수가 다르게 나온다. 어느 항목이 왜 다른지는 부록 — 직접 만든 프로젝트와 완성 예제의 차이를 참고한다.

참고. <NM-NETWORK-HANDLE> 3개는 AP 머신 — NM 핸들과 FunctionGroup에서 만든 것으로, 머신의 <NM-INSTANTIATION> 안에 선언되며 이 머신은 PNC_SWC.arxml에 기록된다. 같은 파일의 <NETWORK-HANDLE-PORT-MAPPING> 3개가 <NETWORK-HANDLE-REF DEST="NM-NETWORK-HANDLE">로 이 핸들을 가리킨다.

PNC_System.arxml에서 PNC-MAPPING 읽기​

  1. EXPORT에서 PNC_System.arxml을 더블클릭한다. PNC:PNC_System.arxml 탭이 XML 편집기의 보기 모드로 열린다.

  2. Ctrl+F를 눌러 찾기 창에 <PNC-MAPPING>을 입력한다. 1 of 3이 표시되고 첫 매핑으로 이동한다. 예제에서는 617행의 PNC_Comfort이다.

    PNC_System.arxml을 연 화면

    그림 12-6. PNC_System.arxml을 연 화면 전체. ① 탭 PNC:PNC_System.arxml. ② 찾기 창. <PNC-MAPPING>을 입력하면 1 of 3이 표시된다. ③ 아래쪽 PROBLEMS 패널. 접힌 상태이며 개수 배지가 없다. 그 아래 상태 표시줄은 Ln 617, Col 28 · UTF-8 · 13 selected · Schema: R25-11 · ✓ No problems이다. 13 selected는 찾은 <PNC-MAPPING> 13자가 선택되었다는 뜻이다.

    첫 PNC-MAPPING 블록

    그림 12-7. 첫 <PNC-MAPPING> 블록을 확대한 화면. <SHORT-NAME> PNC_Comfort, 물리 채널 참조 3개, PNC-CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUPS, 이어지는 PNC-GROUP-REFS까지 보인다.

  3. 블록 전체는 다음과 같다. 앞 장들에서 만든 것이 한곳에 모여 있다.

    <PNC-MAPPING>
    <IDENT>
    <SHORT-NAME>PNC_Comfort</SHORT-NAME>
    </IDENT>
    <PHYSICAL-CHANNEL-REFS>
    <PHYSICAL-CHANNEL-REF DEST="ETHERNET-PHYSICAL-CHANNEL">/System/CommunicationCluster/Ethernet/Backbone/VLAN_Body</PHYSICAL-CHANNEL-REF>
    <PHYSICAL-CHANNEL-REF DEST="CAN-PHYSICAL-CHANNEL">/System/CommunicationCluster/Can/WestCAN/WestCAN_Channel</PHYSICAL-CHANNEL-REF>
    <PHYSICAL-CHANNEL-REF DEST="CAN-PHYSICAL-CHANNEL">/System/CommunicationCluster/Can/EastCAN/EastCAN_Channel</PHYSICAL-CHANNEL-REF>
    </PHYSICAL-CHANNEL-REFS>
    <PNC-CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUPS>
    <CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUP-REF-CONDITIONAL>
    <CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUP-REF DEST="CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUP">/System/Service/CpServiceGroup/PNC_Comfort_ServiceGroup</CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUP-REF>
    </CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUP-REF-CONDITIONAL>
    </PNC-CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUPS>
    <PNC-GROUP-REFS>
    <PNC-GROUP-REF DEST="I-SIGNAL-I-PDU-GROUP">/System/Pdu/ISignalIPduGroup/WestCAN_PNC_Comfort_Rx</PNC-GROUP-REF>
    <PNC-GROUP-REF DEST="I-SIGNAL-I-PDU-GROUP">/System/Pdu/ISignalIPduGroup/WestCAN_PNC_Comfort_Tx</PNC-GROUP-REF>
    <PNC-GROUP-REF DEST="I-SIGNAL-I-PDU-GROUP">/System/Pdu/ISignalIPduGroup/EastCAN_PNC_Comfort_Rx</PNC-GROUP-REF>
    <PNC-GROUP-REF DEST="I-SIGNAL-I-PDU-GROUP">/System/Pdu/ISignalIPduGroup/EastCAN_PNC_Comfort_Tx</PNC-GROUP-REF>
    </PNC-GROUP-REFS>
    <PNC-IDENTIFIER>17</PNC-IDENTIFIER>
    <SERVICE-INSTANCE-REFS>
    <SERVICE-INSTANCE-REF DEST="PROVIDED-SOMEIP-SERVICE-INSTANCE">/System/Service/Instance/SOMEIP/Provider/ComfortControl_Provider_West</SERVICE-INSTANCE-REF>
    <SERVICE-INSTANCE-REF DEST="PROVIDED-SOMEIP-SERVICE-INSTANCE">/System/Service/Instance/SOMEIP/Provider/ComfortControl_Provider_East</SERVICE-INSTANCE-REF>
    <SERVICE-INSTANCE-REF DEST="REQUIRED-SOMEIP-SERVICE-INSTANCE">/System/Service/Instance/SOMEIP/Consumer/ComfortControl_Consumer</SERVICE-INSTANCE-REF>
    </SERVICE-INSTANCE-REFS>
    <SHORT-LABEL>PNC_Comfort</SHORT-LABEL>
    <VFC-IREFS>
    <VFC-IREF>
    <CONTEXT-COMPOSITION-REF DEST="ROOT-SW-COMPOSITION-PROTOTYPE">/System/PncVehicle/PncVehicle</CONTEXT-COMPOSITION-REF>
    <TARGET-REF DEST="PORT-GROUP">/SwComponentType/Composition/PncVehicle/VFC_Comfort</TARGET-REF>
    </VFC-IREF>
    </VFC-IREFS>
    <WAKEUP-FRAME-REFS>
    <WAKEUP-FRAME-REF DEST="CAN-FRAME-TRIGGERING">/System/CommunicationCluster/Can/WestCAN/WestCAN_Channel/FT_WestCAN_NmFrame_DoorCtrl_FL</WAKEUP-FRAME-REF>
    <WAKEUP-FRAME-REF DEST="CAN-FRAME-TRIGGERING">/System/CommunicationCluster/Can/EastCAN/EastCAN_Channel/FT_EastCAN_NmFrame_DoorCtrl_FR</WAKEUP-FRAME-REF>
    </WAKEUP-FRAME-REFS>
    </PNC-MAPPING>
  4. 각 요소가 어느 장에서 만든 것인지 대조한다.

    요소값만든 장
    PHYSICAL-CHANNEL-REFSVLAN_Body, WestCAN_Channel, EastCAN_Channel토폴로지 설계
    PNC-IDENTIFIER17PNC 정의와 커넥터 PNC 속성
    PNC-GROUP-REFSI-PDU Group 4개신호·PDU·프레임과 I-PDU Group
    SERVICE-INSTANCE-REFSSOME/IP 인스턴스 3개인터페이스와 SOME/IP 서비스
    VFC-IREFSVFC_Comfort (PORT-GROUP)VFB와 VFC
    WAKEUP-FRAME-REFSFT_WestCAN_NmFrame_DoorCtrl_FL, FT_EastCAN_NmFrame_DoorCtrl_FR신호·PDU·프레임과 I-PDU Group

참고. PNC-CONSUMED-PROVIDED-SERVICE-INSTANCE-GROUPS가 가리키는 PNC_Comfort_ServiceGroup은 화면에서 만든 것이 아니다. PAIO가 익스포트할 때 PNC마다 서비스 디스커버리 start/stop 그룹을 자동으로 만들어 넣는다.

참고. SHORT-LABEL과 IDENT의 SHORT-NAME은 둘 다 PNC_Comfort이다. 나머지 PNC 2개(PNC_ParkAssist, PNC_Trailer)는 찾기 창의 ↓ 버튼으로 이어서 볼 수 있다.

스키마 검사 결과 확인하기​

XML 편집기는 파일을 열면 번들된 AUTOSAR XSD로 한 번 검사한다. 실행 버튼은 없다.

  1. 편집기 아래쪽 PROBLEMS 머리글을 눌러 패널을 펼친다. 오류가 0건이면 머리글의 개수 배지는 표시되지 않고, 패널이 저절로 펼쳐지지도 않는다.

  2. 표에 No problems found만 있는지, 상태 표시줄에 Schema: R25-11과 ✓ No problems가 있는지 확인한다.

    펼친 PROBLEMS 패널과 상태 표시줄

    그림 12-8. 펼친 PROBLEMS 패널. 열은 # / LINE / ELEMENT / ERROR TYPE / DESCRIPTION / SUGGESTION이고 내용은 No problems found 뿐이다. 아래 상태 표시줄에 Schema: R25-11과 ✓ No problems가 보인다.

  3. 나머지 4개 파일도 EXPORT에서 하나씩 더블클릭해 같은 방법으로 열어 확인한다. 완성 예제에서 PNC_DataType.arxml, PNC_Interface.arxml, PNC_SWC.arxml은 PNC_System.arxml처럼 오류 0건이다. PNC_COM.arxml은 오류 22건을 보고한다. PROBLEMS 패널이 개수 배지 22를 달고 저절로 펼쳐지고, 상태 표시줄에는 ✓ No problems 대신 22 errors가 표시된다.

    PROBLEMS 패널에 스키마 오류 22건이 보이는 PNC_COM.arxml

    그림 12-9. PNC_COM.arxml을 연 직후의 화면. ① 탭 PNC:PNC_COM.arxml. ② 저절로 펼쳐진 PROBLEMS 패널과 개수 배지 22. 첫 행들은 NM-COORDINATOR-ROLE의 Invalid Enum Value 오류로, 설명은 Value 'NONE' in <NM-COORDINATOR-ROLE> is not a valid enumeration value, 제안은 Allowed values: ACTIVE, PASSIVE이다(SUGGESTION 열에서는 끝이 잘려 보인다). ③ 상태 표시줄 끝, Schema: R25-11 다음의 22 errors.

참고. PNC_COM.arxml의 오류는 지금의 PAIO 익스포트가 R25-11 스키마가 받아들이지 않는 값 두 종류를 쓰기 때문에 생긴다. 완성 예제에서는 22건이다. 12건은 Invalid Enum Value 오류로, NM COORDINATOR ROLE이 NONE인 NM 노드(NM 설정)가 <NM-COORDINATOR-ROLE>NONE</NM-COORDINATOR-ROLE>으로 기록되지만 스키마는 ACTIVE와 PASSIVE만 허용한다. 나머지 10건은 Invalid Value 오류로, <SOMEIP-SD-SERVER-SERVICE-INSTANCE-CONFIG> 5개에서 <REQUEST-RESPONSE-DELAY>의 <MAX-VALUE>와 <MIN-VALUE>가 숫자 대신 undefined라는 글자로 기록된다(Value must be an xsd:double). 나머지 4개 파일은 영향을 받지 않는다.

참고. 스키마 검사와 System 에디터와 검증의 VALIDATION 패널은 서로 다른 검사이다. 스키마 검사는 ARXML 문서가 AUTOSAR XSD 문법에 맞는지 보고, 검증 패널은 모델이 AUTOSAR 제약(constr_*)을 지키는지 본다. 둘 다 0건이어야 다른 도구가 이 ARXML을 그대로 쓸 수 있다.

다시 임포트해 확인하기​

익스포트한 ARXML은 그대로 다시 읽어 들일 수 있다. 같은 모델로 돌아오는지 보는 것이 라운드트립 확인이다. 이 절은 선택 사항이다.

  1. 빈 프로젝트를 하나 만든다. 그래야 원래 프로젝트를 그대로 두고 비교할 수 있다. PROJECT › New Project...(또는 HELP › Welcome으로 여는 Welcome 탭의 New Project)를 쓰면 된다. 새 프로젝트는 새 창에서 열리고 PNC 창은 닫힌다.
  2. 새 창의 EDITOR 뷰에서 DESIGN 머리글 오른쪽 아이콘 4개 가운데 첫 번째인 Import를 누른다. 파일 선택 창 Select files to import가 열린다.
  3. PNC/export의 ARXML 5개를 모두 선택한다. 한 번에 여러 개를 고를 수 있다.
  4. Importing ARXML Files 진행 창이 뜨고 parsing → merging → resolving 순으로 진행된다.
  5. 임포트가 끝나면 EDITOR 뷰의 DESIGN 아래에서 System을 클릭해 System 편집기를 열고, PNC 3개와 식별자 17 / 18 / 19, 커넥터의 PNC GATEWAY TYPE이 그대로인지 확인한다.

주의. 같은 프로젝트에 다시 임포트하면 덮어쓰기가 아니라 병합으로 처리되고, 값이 다른 항목이 있으면 Conflict Resolution 다이얼로그가 뜬다. 임포트를 시작하면 열려 있는 모든 탭의 저장되지 않은 편집이 먼저 디스크에 저장된다. 자세한 동작은 Import and Export를 참고한다.

왜 파일이 5개로 나뉘는가​

PAIO는 프로젝트 하나를 ARXML 한 덩어리로 내보내지 않고, AUTOSAR 문서의 역할대로 나눠 쓴다. 데이터 타입과 인터페이스는 여러 프로젝트가 공유하는 정의이고, SWC는 소프트웨어 구조, COM은 ECU와 네트워크 배치, System은 이 둘을 잇는 매핑이다. PNC 설계가 여러 파일에 흩어져 보이는 것도 같은 이유이다. "어느 PNC가 어느 채널·PDU 그룹·서비스 인스턴스·VFC를 묶는가"는 매핑이므로 System에, "이 커넥터가 게이트웨이인가, 필터 마스크가 무엇인가"는 ECU 배치이므로 COM에 들어간다. 덕분에 다른 도구가 필요한 문서만 골라 읽을 수 있다.

확인하기​

  • EDITOR 뷰의 EXPORT에 PNC_COM.arxml, PNC_DataType.arxml, PNC_Interface.arxml, PNC_SWC.arxml, PNC_System.arxml 5개가 있다.
  • PNC_System.arxml에서 <PNC-MAPPING>을 찾으면 1 of 3이 표시된다.
  • 첫 매핑의 <SHORT-NAME>이 PNC_Comfort, <PNC-IDENTIFIER>가 17이다.
  • 같은 블록에 물리 채널 참조 3개, PNC-GROUP-REF 4개, SERVICE-INSTANCE-REF 3개, VFC-IREF 1개, WAKEUP-FRAME-REF 2개가 있다.
  • PNC_System.arxml의 상태 표시줄에 Schema: R25-11과 ✓ No problems가 보이고, PROBLEMS 표에는 No problems found만 있다.
  • 나머지 4개 파일을 열면 PNC_DataType.arxml, PNC_Interface.arxml, PNC_SWC.arxml은 오류 0건이고, PNC_COM.arxml에는 익스포트에서 생기는 오류만 있다(완성 예제에서 22건: NM-COORDINATOR-ROLE 12건, MAX-VALUE 5건, MIN-VALUE 5건).

다음 단계​

부록에서 이 튜토리얼이 만든 프로젝트의 파일 구조와, 각 모델 파일이 담고 있는 내용을 정리한다.