오늘은 멘토링때 대답하지 못한validation과 verification의 차이에 대해 알아보자! 정보처리기사 공부하면서 암기했던 부분인데 까먹었다..하하ㅏ하..나 hoxy 시험만 보면 모든것을 잊어버리는 병에 걸린건가.. 오랜만에 정보처리기사 책을 펼쳐 개념들을 다시 확인해보았다.
validation(검사): 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지를 확인하는 것이다. verification(검증): 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지 점검하는 것이다.
사실 이러한 개념으로는 정확히 이해가 가지 않기 때문에 조금 더 쉬운 설명들로 이해해보자!
✔ validation
Are we building the right system?
우리가 올바른 제품을 빌드하고 있나?
실제 제품을검사하고테스트하는동적인 방법이다.
최종적으로 만든 결과물이 잘 나왔는지를 말한다.
검증은 항상코드실행을 수반한다.
✔ verification
Are we building the system right?
우리가 제품을 올바르게 빌드하고 있나?
디자인과 코드를 검사하는정적인 방법이다.
각 단계의요구사항을 잘 지켜가며 만들었는지를 확인하는 것이다.
검사는 인간기반의문서와 파일의 검사이다.
쉽게말하면
validation은 사용자의 관점에서 우리가 제품을 잘 만들고 있는가 verification은 논리적인 관점에서 해당 스펙대로 잘 수현했는가
R&R : Role and Responsibilities - 기업/부서에서 조직원들이 수행해야 하는 역할과 책임을 정하는 것
AP : Advanced Pilot, 양산금형 시작단계, P1 이전 단계
- AP단계 : P1단계에 준하는 부품 투입요건으로 평가
P1 단계 : 연구소 파일럿동에서 양산에 준하는 설비 및 금형 지그를 이용하여 처음 행하는 단계로 Main Body Ass'y의 착수 이후 의장조립 완료까지를 포함한다. 품질확보 계획에 따라 품질확인차(법규 인증차 일부 포함)를 조립하면서 품질문제, 작업성, 생산성 등을 확인하며 Body 부품과 의장부품의 Data를 수집하고 작업자 교육을 실시한다. 부품 투입조건은 양산금형(ALL TOOL) 및 치수합격품(Dimension OK)이다.
P2 단계 : 연구소 파일럿동에서 P1에 적용한 부품 및 지그 설비의 문제점을 반영한 결과 확인과 미개선, 미완료된 문제점 개선 Data를 수집하는 단계로 작업지도요원의 반복 교육을 통해 작업자 지도 능력을 확보한다. 부품 투입조건은 양산공정(Full Tool), 치수합격품(Dimension OK), 신뢰성(ES, MS) 및 조립성(Function+FIT)합격품이다.
M1 단계 : 연구소 파일럿동에서 사용한 설비 및 지그를 양산공장으로 이관하여 양산공장에서 오프라인 및 인라인 생산훈련을 통한 공정원의 작업 숙지 단계이다. 부품 투입조건은 P2 품확치 동일 수준으로 P2 품질수준을 확인한다.
M2 단계 : P1, P2 단계의 문제점, 대책, 조치결과를 최종 확인하는 단계로 완성차의 품질, 설비, 치구와 양산성을 최종적으로 확인함을 의미한다.
T1 단계 : 양산공장에서 신차 생산을 위한 설비와 지그의 설치 및 개조 등의 설비 트라이아웃 단계로써 설비 단독 시운전을 통한 설비 능력을 확인한다. 공정원에 대하여 오프라인 조립교육을 실시하고 조립공법계획서를 작성 배포한다.
T2 단계 : 양산공장에서 P1운영시 발췌된 설비 및 지그 문제점을 개선 반영하고 흐름 시운전을 통한 P1 품질 수준을 확인하며, 양산성을 확인하는 단계이다. 오프라인 및 인라인 작업교육을 통한 작업편성 조정 등 작업성을 확인한다. 부품 투입조건은 P1 품확차 동일 수준이다.
Modern Vehicles all come equipped with a CAN-BUS Controller Area Network, Instead of having a million wires running back and forth from various devices in your car to the battery, its making use of a more clever system.
All electronic functions are connected to the TIPM, (Totally integrated Power Module), such as solenoids/relays to lock the doors or mini motors to wind the windows ect ect.
From each node (IE Switch pod that controls your windows or electric door locks) it broadcasts a message across the CAN. When the TIPM detects a valid message it will react accordingly like, lock the doors , switch on lights and so on.
WHY? Because you can :-)
What you need. Arduino UNO + Seeed CAN-BUS Shields You can get the CAN-BUS Shield from SeeedStudio.com
Add TipAsk QuestionCommentDownload
Step 1: Setting Up an Interface for Connecting Your Laptop.
The Seeed CAN-BUS Shield has a header dedicated for the CAN-High (+) and CAN-Low (-)
Obviously all vehicles aren’t the same so the location to tap into the CAN-BUS will differ from vehicle to vehicle. In this instructable I’m using a Jeep Wrangler (AKA Jeep JK) 2010, Rubicon 2DR , with a manual shifter.
The easiest way into the bus is to connect into the radio, at the back of the radio it has a White/Orange (- CAN-L) and White Grey ( + CAN-H ) wire. From there I routed the cable through to the glove box of the Jeep.
Add TipAsk QuestionCommentDownload
Step 2: Programming the Arduino to Accept Messages From the CAN-BUS
First of all you need the Seeed CAN-BUS Shield’s Library downloadable atGIT-HUB
After downloading the CAN-BUS Library you need to import it into your Arduino Libraries folder. In the Arduino Editor SelectSketch --> Import Library --> Add Libraryand then point it to the Zip file you downloaded, (No need to unzip the contents it can be imported as is.
Tip:You might have to rename the zip as the Arduino IDE does not like unusual characters , so maybe try canbus.zip instead of can-bus.zip
Something important to note:
The CAN-BUS Shield library comes with a working example, it does not include getting the CAN-ID which is quite important to know when analysing the data, So i modified it slightly to include the ID also to seperate all values with a comma so that you can use it as a csv file.
Copy and paste the below code into your Arduino Sketch Editor.
#include "mcp_can.h"<br>
INT32U canId = 0x000;
unsigned char len = 0;
unsigned char buf[8];
char str[20];
void setup()
{
Serial.negin(115200);
START_INIT:
if(CAN_OK == CAN.begin(CAN_125KBPS))
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}
Step 3: Connecting to the Arduino + CAN-BUS Shield to Get CAN Data
Now you need to make sure the CAN-BUS Shield has been connected to the vehicle's CAN-BUS, via the CAN-H & CAN-L Connector.
If you are sure everything has been connected then use putty to connect to the shield via Serial.
Putty is actually a SSH Client but can also handle serial data and it works great for this purpose.
Look at the Image attached to this step for the Serial port configuration.
Once you connect, Your vehicle's CAN-BUS will bombard putty with CAN-BUS Data.
Add TipAsk QuestionCommentDownload
Step 4: Analyze the Data
From here you need to figure out how to detect the messages, such as turning on lightts, open windows ect ect.
When connecting with putty you can log all incomming data to file as explained in the screenshot from the previous step.
Connect and log to a file called file1.csv and let it run with all windows closed, vehicle's key in on position but not started, and let it run for about 5 minutes, Kill the putty session, then restart the Arduino (The Sketch does not clear the buffer), And this time log all data to file2.csv , once putty starts duming data, quickly press a buton (Only one at a time cus you will not know which message goes to which button), once you pressed a button a few times quickly disconnectputty from the can bus.
So theoretically all messages in File2.csv thats also in File1.csv should be ignored/filtered the messages thats left over in File2.scv should be the message button presses.
If you have some programming skills you might find a better way to manage this. I cretated a basic application in VB6 , you can look for more information about the tool on myBlog Unfortunatly the application is a bit incomplete, eventhough it has the capability to connect directly to the Arduino Via Serial it doesnt work propperly, so please ignore the Serial Connection part.
It will basically take the fisrt file run which you were dumping data for ~5 Minutes (ignoredatabase.can) and incomming.can as the log file which includes button presses.
I encourage you to find a better way to analyse the data as this can be very stime consuming.
Add TipAsk QuestionCommentDownload
Step 5: Sending a Message Into the CAN-BUS
To send a message into the CAN-BUS is pretty straight forward.
The below will send the "Sway-Bar" disconnect on a Jeep Wrangler.
Note the CAN-ID needs to be converted into HEX format, an easy way to convert it is to use the Windows Calculator, Using "Programmer Mode" for Windows 7 Calculator
From the below code you can see its sending it to CAN-ID 2B0 = 688
Step 6: A Prototype Built Using the Information From This Instructable
Not going into much detail, this is just to show you whats possible.
This Arduino + Seeed CAN-BUS Shield has an added feature, I built a Button & 4 LED Display. When pressing the red button it will cycle through all posible LED states and each state represents a feature.
Pressing the yellow button will send the message to the bus.