검증
이 장에서 할 일
이 장에서는 지금까지 만든 설계에 결함 세 개를 일부러 심고, PAIO 검증이 그것을 어떻게 보고하는지 본다. PAIO 는 창이 프로젝트를 여는 즉시 검증하므로, 푸터의 V 아이콘으로 VALIDATION 패널을 열어 네 행(오류 셋, 경고 하나)과 배지를 읽기만 하면 된다. 그다음 행을 클릭해 문제 요소로 바로 이동하고, 화면에서 값을 고쳐 저장한다.
고칠 곳은 세 군데이다. Fusion 의 DLT 애플리케이션 ID 를 FUSN 으로 되돌리고, EM 프로세스에 함수 그룹 상태 MachineFG : Startup 을 넣고, Sensor 의 P 포트 인터페이스를 Service: Sensor 로 되돌린다. Fusion 을 처음부터 끝까지 절차로 보이고, 나머지 둘도 같은 흐름으로 따라간다.
이 장을 마치면 VALIDATION 패널이 다시 No validation issues. 가 되고, 패널 제목 옆과 푸터의 배지가 사라진다. 세 값은 로그와 DLT까지 마친 설계와 같아진다.
시작하기 전에
- 로그와 DLT를 마친 상태에서 시작한다. 이때 VALIDATION 패널은
No validation issues.이다. - 이 장의 화면은 그 설계에 아래 결함 세 개가 들어 있는 상태이다. 편집기는 하나도 열려 있지 않고, VALIDATION 패널도 닫혀 있다.
| 결함 | 파일 (design/SWC/AdaptiveApplication/) | 원래 값 | 심은 값 |
|---|---|---|---|
Fusion 의 DLT 애플리케이션 ID 가 Sensor 와 같음 | Fusion.swc.io.model › process.log-config.application-id | FUSN | SENS |
EM 프로세스에 함수 그룹 상태가 없음 | EM.swc.io.model › process.startup-configs[0].function-group-states | MachineFG : Startup 한 행 | [] (빈 목록) |
Sensor 의 P 포트가 없는 인터페이스를 가리킴 | Sensor.swc.io.model › ports[0].port-interface | Sensor | SensorIf |
참고. 결함을 직접 만들어 따라 하려면 위 표의 값을 바꾼다. 첫째는
Fusion의 LOG CONFIG 에서 APPLICATION ID 를SENS로 바꾸면 되고, 둘째는EM의 FUNCTION GROUP STATE 행 끝 ×(툴팁 Remove Function Group State)로 행을 지우면 된다. 셋째는 화면에서 만들 수 없다. PORT INTERFACE 드롭다운에는Service: Sensor하나만 있기 때문이다. 셋째는 PAIO 를 닫은 상태에서Sensor.swc.io.model의"port-interface": "Sensor"를"port-interface": "SensorIf"로 고쳐 만든다.
이 장에서 키보드로 입력하는 값은 APPLICATION ID 의 FUSN 하나뿐이다. 나머지는 클릭, + 버튼, 드롭다운 선택, Ctrl+S, Close 이다.
검증을 돌리고 VALIDATION 패널 읽기
VALIDATION 패널 열기
-
화면 왼쪽 아래 푸터의 V 아이콘을 본다. PAIO 는 창이 프로젝트를 열 때 편집기를 열지 않아도 프로젝트 전체를 검증하므로, 아이콘에는 이미 빨간 배지
4가 붙어 있다. 아이콘에 마우스를 올리면 툴팁이Validation: 3 error(s), 1 warning(s), 0 info(s)이다. -
푸터의 V 아이콘을 클릭한다. 화면 아래에 VALIDATION 패널이 열린다. 제목 옆에 빨간 배지
3(툴팁3 error(s))이 있고, 열 머리글은 ELEMENT TYPE, NAME, DESCRIPTION, CONSTR 이다. 그 아래 네 행이 있다. 오류 세 행과 경고 한 행이다. 패널 배지는 오류 행만 세고, 푸터 배지는 모든 행을 센다.
그림 12-1. 패널을 연 화면. ① 패널 제목 VALIDATION 옆의 배지
3, ② 네 행, ③ 푸터의 V 아이콘(배지4). 편집기는 열려 있지 않아 가운데는 빈 편집기 영역(Open a file to start editing)이다. 기본 열 너비에서는 네 행 모두 설명이…로 잘린다.
열 읽기
패널의 한 행은 검증이 찾은 문제 하나이다. 열의 뜻은 다음과 같다.
| 열 | 내용 |
|---|---|
| ELEMENT TYPE | 문제가 있는 요소의 종류 |
| NAME | 그 요소의 이름 |
| DESCRIPTION | 무엇이 잘못됐는지 설명하는 문장 |
| CONSTR | AUTOSAR 제약 번호(constr_*). 이 장의 네 행은 모두 PAIO 자체 규칙이라 비어 있다 |
-
설명이 잘려 보이면 DESCRIPTION 머리글의 오른쪽 경계를 오른쪽으로 끌어 넓힌다. 이 단계는 선택 사항이다. 넓히면 네 문장이 모두 끝까지 보인다.

그림 12-2. DESCRIPTION 열을 넓힌 VALIDATION 패널. ①
DltApplicationSENS행(…(Sensor).), ②DltApplicationSENS행(…(Fusion).), ③ProcessEM행, ④PortPrototypeSensor행(경고).
네 행은 패널 순서대로 다음과 같다. 행 1~3 은 오류이고 행 4 는 경고이다. 각 행 왼쪽 끝의 가는 막대가 이를 구분해 주며, 오류는 빨강, 경고는 주황이다. CONSTR 칸은 비어 있다.
| # | ELEMENT TYPE | NAME | DESCRIPTION | 클릭하면 이동하는 곳 |
|---|---|---|---|---|
| 1 | DltApplication | SENS | The DLT application-id "SENS" truncates to "SENS" and collides with "SENS" (Sensor). | AA Internal Behavior [Fusion] › EXECUTION › LOG CONFIG › APPLICATION ID |
| 2 | DltApplication | SENS | The DLT application-id "SENS" truncates to "SENS" and collides with "SENS" (Fusion). | AA Internal Behavior [Sensor] › 같은 칸 |
| 3 | Process | EM | The process "EM" declares no functionGroupState; at least one is required. | AA Internal Behavior [EM] › EXECUTION › FUNCTION GROUP STATE |
| 4 | PortPrototype | Sensor | "Sensor" of "Sensor": referenced port interface "SensorIf" not found. | VFB 편집기 System > HPC, 속성 패널 PPORT › PORT INTERFACE |
참고. 결함은 셋인데 행은 넷이다. DLT 애플리케이션 ID 가 겹치면 겹친 두 애플리케이션에 한 행씩, 두 행이 나오기 때문이다. 문장 끝 괄호는 겹친 상대편 을 가리킨다. 행 1 의 요소는
Fusion쪽이고(Sensor)는 상대편이다. 그래서 행 1 을 클릭하면Fusion이 열린다.
참고. 행은 한 번 클릭 하면 이동한다. 이동할 수 있는 행에 마우스를 올리면 툴팁
Go to the element to fix가 뜬다.
Fusion 의 DLT 애플리케이션 ID 고치기
행을 클릭해 APPLICATION ID 로 이동하기
-
VALIDATION 패널의 첫째 행(
DltApplication,SENS, …(Sensor).)을 클릭한다. VFB 편집기 탭AADesign:VFB가System > HPC안으로 열리고, 그 위에 다이얼로그 AA Internal Behavior [Fusion] 가 EXECUTION 탭으로 뜬다. 프로세스 카드와 LOG CONFIG 가 저절로 펼쳐지고, APPLICATION ID 칸(값SENS)이 빨간 라벨과 밑줄로 표시된 채 값이 선택되어 포커스를 받는다.![행 1 을 클릭해 열린 AA Internal Behavior [Fusion] 다이얼로그](/docs/ko/assets/images/12-03-fusion-row-opens-application-id-0c041b1b56a9f07eca305482eea97cd3.png)
그림 12-3. 첫째 행을 클릭한 결과. ① 다이얼로그 제목 AA Internal Behavior [Fusion]. 오른쪽 패널은 EXECUTION 탭이고, 왼쪽 캔버스에는
Fusion과 R 포트Sensor, 서비스 인스턴스 매핑Fusion/AA/Sensor가 보인다. 이 그림은 오른쪽 패널을 LOG CONFIG 까지 내린 모습이다. ② APPLICATION ID 칸(값SENS)이 빨간 라벨과 밑줄로 표시되고 값이 선택되어 있다. 칸이 보이지 않으면 오른쪽 패널을 아래로 스크롤한다.
FUSN 을 입력하고 저장하기
-
APPLICATION ID 칸에
FUSN을 입력하고Tab을 누른다. 값이 선택된 상태이므로 바로 입력하면SENS가 덮어써진다. 제목이● AA Internal Behavior [Fusion]으로 바뀐다. -
다이얼로그 안에서
Ctrl+S를 누른다. 제목의●가 사라지고, 다이얼로그가 열린 채로 푸터의 배지가2로 바뀐다. 저장하면 LOG CONFIG 가 접히므로 머리글을 클릭해 다시 펼친다. APPLICATION ID 는FUSN이고 빨간 표시는 사라져 있다.
그림 12-4. 저장한 뒤 LOG CONFIG 를 다시 펼친 화면. ① 수정됨 표시가 없는 제목 AA Internal Behavior [Fusion], ② APPLICATION ID =
FUSN. DEFAULT LOG LEVEL 은VERBOSE(VER…), LOG MODE 는CONSOLE그대로이다. 푸터의 V 아이콘 배지는2이다. -
Close 를 클릭한다. 저장했으므로 묻는 창 없이 닫힌다.
참고. 행 클릭이 펼친 아코디언은 다이얼로그가 탭을 다시 그릴 때마다 다시 접히고, 저장하면 탭이 다시 그려진다. 그래서 저장하면 LOG CONFIG 는 접히고 프로세스 카드와 STARTUP CONFIG 는 펼쳐진 채로 남는다. 직접 펼친 아코디언은 펼쳐진 채로 남는다.
다이얼로그를 닫으면 VALIDATION 패널에 두 행(오류 Process EM, 경고 PortPrototype Sensor)만 남는다. 패널 배지는 1, 푸터 배지는 2 이다. 저장하는 순간 패널이 다시 계산되므로 다시 돌릴 것은 없다. Fusion 하나만 고쳤는데 행 1 과 행 2 가 함께 사라진 것은, 두 행이 같은 충돌 하나에서 나왔기 때문이다. 행 2 는 클릭할 필요가 없다.
EM 에 함수 그룹 상태 넣기
행을 클릭해 FUNCTION GROUP STATE 로 이동하기
-
ProcessEM행을 클릭한다. 다이얼로그 AA Internal Behavior [EM] 가 EXECUTION 탭으로 열린다. 프로세스 카드EM의 FUNCTION GROUP STATE 아코디언이 펼쳐진 채 빨갛게 표시되고, 안에는No function group states defined뿐이다.
그림 12-5.
ProcessEM행을 클릭한 결과. ① 다이얼로그 제목 AA Internal Behavior [EM], ② FUNCTION GROUP STATE 의 내용No function group states defined, ③ 머리글 오른쪽의 + 버튼. STARTUP CONFIG 의 ENTER TIMEOUT 과 EXIT TIMEOUT 은 Executable 과 Process에서 넣은0이다.
Startup 상태를 추가하기
-
FUNCTION GROUP STATE 머리글 오른쪽의 + 버튼(툴팁 Add Function Group State)을 클릭한다. 행
MachineFG : Off가 추가되고 제목이● AA Internal Behavior [EM]으로 바뀐다. + 도 탭을 다시 그리므로 행 클릭이 펼친 FUNCTION GROUP STATE 아코디언이 접히고 빨간 표시도 사라진다. 머리글을 클릭해 다시 펼치면 새 행이 보인다. -
행 머리글
MachineFG : Off를 클릭해 펼친다. FUNCTION GROUP 칸은MachineFG, FUNCTION GROUP STATE 칸은Off이다. -
FUNCTION GROUP STATE 칸을 클릭한다. 드롭다운에
Off(현재 값, 체크 표시),Startup,Shutdown,Restart,Verify가 보인다.
그림 12-6. 새 행의 상태 드롭다운. ① 새 행 머리글
MachineFG : Off, ② FUNCTION GROUP STATE 칸, ③ 드롭다운 항목Startup. 제목은● AA Internal Behavior [EM]이다. -
Startup을 클릭한다. 행 머리글이MachineFG : Startup으로 바뀐다.
저장하고 닫기
-
다이얼로그 안에서
Ctrl+S를 누른다. 제목의●가 사라진다. 푸터의 배지가1로 바뀌고, 남은 한 행이 경고이므로 주황색이 된다.
그림 12-7. 저장한 뒤의 화면. ① 수정됨 표시가 없는 제목 AA Internal Behavior [EM], ② 행
MachineFG : Startup. 그 아래 FUNCTION GROUP 은MachineFG, FUNCTION GROUP STATE 는Startup이다. 푸터의 V 아이콘 배지는 주황색1이다. -
Close 를 클릭한다. 묻는 창 없이 닫힌다. VALIDATION 패널에는 경고
PortPrototypeSensor한 행이 남는다. 오류가 남지 않았으므로 패널 제목 옆의 배지는 사라지고, 푸터 배지는1이다.
EM.swc.io.model 의 process.startup-configs[0].function-group-states 는 [{"function-group":"MachineFG","state":"Startup"}] 가 된다. FUNCTION GROUP STATE 아코디언과 행은 직접 펼쳤으므로, 그림 12-7 처럼 저장한 뒤에도 펼쳐진 채로 남는다.
Sensor 포트의 인터페이스 되돌리기
행을 클릭해 PORT INTERFACE 로 이동하기
-
PortPrototypeSensor행을 클릭한다. 이번에는 다이얼로그가 열리지 않는다. 열려 있는 VFB 편집기(System > HPC)에서 노드Sensor가 주황색으로 빛나고, 그 P 포트Sensor가 선택된다. 오른쪽 속성 패널의 제목은 PPORT, NAME 은Sensor이다. PORT INTERFACE 라벨과 밑줄이 주황색이고, 값SensorIf아래에Referenced item not found가 붙는다. 이 행은 경고이므로 표시가 빨강이 아니라 주황이다.
그림 12-8.
PortPrototypeSensor행을 클릭한 결과. ① 주황색으로 표시된 노드Sensor, ② 속성 패널 PPORT 의 PORT INTERFACE(값SensorIf, 아래에Referenced item not found), ③ VALIDATION 패널에 남은 한 행. 패널 제목에는 배지가 없고, 푸터의 V 아이콘에는 주황색 배지1이 있다. 캔버스에는 커넥터 선이 보이지 않는다. 아래 "참고"를 본다.
참고. 같은 "행 클릭"이라도 이동하는 곳이 다르다.
DltApplication과Process행은 AA Internal Behavior 다이얼로그를 열고 해당 칸을 펼쳐 표시한다.PortPrototype행은 다이얼로그 없이 VFB 편집기에서 노드를 표시하고 포트를 선택해 속성 패널의 칸을 표시한다.
Service: Sensor 를 고르기
-
속성 패널의 PORT INTERFACE 칸을 클릭한다. 안내 글자
Type to search...가 있는 드롭다운이 열리고, 항목은Service: Sensor하나뿐이다.
그림 12-9. 열린 PORT INTERFACE 드롭다운. ① 입력 칸(
Type to search...), ② 유일한 항목Service: Sensor. -
Service: Sensor를 클릭한다. 칸이Service: Sensor가 되고,AADesign:VFB탭에 수정됨 표시가 붙는다. -
VFB 탭에서
Ctrl+S를 누른다. 수정됨 표시가 붙은 탭이 없어진다. VALIDATION 패널은No validation issues.이고, 패널 제목 옆과 푸터 V 아이콘의 배지도 없다.
Sensor.swc.io.model 의 ports[0].port-interface 는 Sensor 가 된다.
참고. 포트를 고치고 저장해도 캔버스에 커넥터 선이 다시 그려지지 않고, 빵부스러기에서
System을 클릭한 뒤 노드HPC [Ecu]를 다시 더블클릭해도 마찬가지이다. 파일design/SWC/Composition/HPC.swc.io.model에는 커넥터Assembly_Sensor_Fusion과Assembly_Sensor_Actuator가 그대로 있다. 포트가 없는 인터페이스를 가리키던 동안 열려 있던 VFB 탭은 탭을 닫았다가 다시 열 때까지 그 포트의 선을 그리지 않는다.AADesign:VFB탭을 닫고 EDITOR 뷰의 DESIGN 아래에서 VFB 를 클릭해 다시 연 뒤 노드HPC [Ecu]를 더블클릭하면 두 선이 그려진다. 탭을 닫을 때 묻는 창은 뜨지 않는다.
다시 검증하기
-
VALIDATION 패널을 본다. VFB 탭을 저장할 때 PAIO 가 프로젝트를 다시 검증했으므로 따로 클릭할 것은 없다. 본문이
No validation issues.이고, 패널 제목 옆과 푸터 V 아이콘의 배지가 모두 없다.
그림 12-10. VFB 탭을 저장한 직후의 화면. ①
No validation issues.행, ② 배지가 없는 푸터 V 아이콘. 속성 패널에는 PORT INTERFACEService: Sensor와 SERVICE COMSPEC(EVENTSByteArraySensorDataQUEUED-SENDER, METHODSCalculationSERVER)이 보인다. 커넥터 선은 아직 그려져 있지 않다. 위 "참고"를 본다.
참고. 건수가 0으로 돌아오면 V 아이콘의 배지는 사라지지만, V 아이콘의 툴팁에는 마지막 건수
Validation: 0 error(s), 1 warning(s), 0 info(s)가 그대로 남는다. 현재 결과는 VALIDATION 패널에서 확인한다.
패널은 저장할 때마다 다시 계산된다. 고칠 때마다 행과 배지는 다음과 같이 줄어든다.
| 고친 뒤 | 패널에 남은 행 | 패널 배지 | 푸터 배지 |
|---|---|---|---|
| 시작 | 4 (오류 3, 경고 1) | 3 | 4(빨강) |
Fusion APPLICATION ID → FUSN 저장 | 2 (Process EM, PortPrototype Sensor) | 1 | 2(빨강) |
EM → MachineFG : Startup 저장 | 1 (PortPrototype Sensor) | 없음 | 1(주황) |
Sensor 포트 → Service: Sensor 저장 | 0, No validation issues. | 없음 | 없음 |
왜 이렇게 설계하는가
EM을MachineFG : Startup에 묶는 것은 참조 설계와 일부러 다르게 한 곳이다. 참조 설계의EM프로세스에는FUNCTION-GROUP-STATE-IREF가 없다. 이 장의 둘째 결함이 바로 그 모양이고, PAIO 검증은 그것을The process "EM" declares no functionGroupState; at least one is required.로 거부한다. 그래서 이 튜토리얼은 Executable 과 Process에서EM을Startup에 묶었고, 이 장에서도 같은 값으로 되돌린다.- DLT 애플리케이션 ID 는 머신 안에서 서로 달라야 한다. 로그와 DLT에서 다섯 프로세스에
SENS,FUSN,ACTA,CM,EM을 따로 정한 이유이다. 문장의truncates to "SENS"는 규칙이 ID 를 앞 4글자로 잘라 비교한다는 뜻이다. DLT 메시지에 실리는 애플리케이션 ID 가 4글자이기 때문이다.SENS는 이미 4글자라 잘라도 같다. - 포트 인터페이스는 이름으로 이어진다. 포트는 인터페이스를 이름으로 가리키므로, 그 이름의 인터페이스가 없으면
referenced port interface "SensorIf" not found.가 된다. PAIO 는 아무것도 가리키지 못하는 참조를 경고로, 반드시 채워야 하는데 비어 있는 참조를 오류로 보고한다. 이 설계의 서비스 인터페이스는 서비스 인터페이스에서 만든Sensor하나뿐이어서 드롭다운 항목도Service: Sensor하나이다.
확인하기
- VALIDATION 패널이
No validation issues.이다. - VALIDATION 패널 제목 옆과 푸터 V 아이콘에 배지가 없다.
- AA Internal Behavior [Fusion] › EXECUTION › LOG CONFIG 의 APPLICATION ID 가
FUSN이다. - AA Internal Behavior [EM] › EXECUTION › FUNCTION GROUP STATE 에 행
MachineFG : Startup이 하나 있다. - VFB 편집기
System > HPC에서Sensor의 P 포트를 선택하면 속성 패널 PPORT 의 PORT INTERFACE 가Service: Sensor이고Referenced item not found가 없다. - 다이얼로그 제목과 탭
AADesign:VFB에 수정됨 표시●가 없다.
다음 단계
ARXML 익스포트에서 검증을 통과한 설계를 ARXML 파일로 내보내고 참조 설계와 비교한다.