--- title: Post Mortem 삼성전자무선 HM520 장비 NPE에서 조명값 0 되는 문제 --- # 삼성전자무선 HM520 장비 NPE에서 조명값 0 되는 문제 사후 분석 (Post Mortem) 참고 - https://devocean.sk.com/vlog/seminar/Postmortem.pdf ## 사후 분석 진행 2023.5.9 RM101 15:30~17:00 참석자 : 한석원 팀장, 구자현 수석, 박형근 수석, 최태원 수석, 박상지 책임, 유승민 연구원 ### 1. 결함 식별 - 결함 내용 1. **부품을 더블클릭하여 NPE를 열면 조명값이 0으로 바뀌어져 있다.** 2. **부품을 더블클릭하여 NPE를 열면 'Chip부품을 FlipChip부품그룹으로 변환하겠습니까?' 라는 메시지 뜬다.** - 결함이 발견된 시기와 장소: - 결함 생성 : - 4.23 r61416에 커밋 - 결함 배포 : - T-Solution NPE 4.600.000.017, HM520 MMI V1.480.E22.029_SP2 - 결함 발견 : - 2023.5.4 목 13:00 구미 삼성전자 무선 (공동연차날) 나승춘 과장이 적용후 문제 발견하여 한상현 책임통해 유승민 연구원에게 전달됨. - 결함이 발견된 시스템/모듈/기능: - HM520장비의 NPE에서 발견 - T-Sol NPE에도 동일 문제 (4.6.000.017버전) - 결함의 유형: - **생산은 가능하나 부품 편집 불가하고, 조명 0인 채로 저장할 경우 데이터 날라가는 심각한 결함** ### 2. 결함 분석 - 결함 발생 원인: - 커밋 내용 ``` Revision: 61416 Author: seungmin.you Date: 2023년 4월 24일 월요일 오후 5:09:06 Message: [review_최태원][artf119974]: [한양디지텍][NPE] 설정된 Pitch 값이 자동화 추천 데이터와 다를 때, 자동화 버튼 적색 표기 - Pitch 값에 대한 자동화 데이터를 AutomationData 모듈으로부터 받아올 때, SetAutoFeederPitch 플래그만 올려서 받아온다. - 표준 칩 부품의 경우, 부품 그룹이 변경되면 Pitch 값이 자동으로 변경되는데 이때 자동화 Pitch 데이터를 새로 받아온다. ---- Modified : /trunk/src/NPE/NewPartEditor/NewUPE/ViewModels/CommonData/CommonDataViewModel.cs Modified : /trunk/src/NPE/NewPartEditor/NewUPE/ViewModels/EssentialViewModel.cs Modified : /trunk/src/NPE/NewPartEditor/NewUPE/ViewModels/Menu/TitleAndNavigationviewModel.cs Modified : /trunk/src/NPE/NewPartEditor/NewUPE/ViewModels/Menu/VisionAndShapeViewModel.cs ``` - EssentialViewModel.cs 아래 코드 추가로 발생 ```C# // Added by Seungmin You [2023-04-24] // [artf119974]: [한양디지텍][NPE] 설정된 Pitch 값이 자동화 추천 데이터와 다를 때, 자동화 버튼 적색 표기 // 표준 칩 부품의 경우, 부품 그룹이 변경되면 Pitch 값이 자동으로 변경되는데 이때 자동화 데이터 새로 받아온다. var commonDataVM = ServiceLocator.Current.GetInstance<CommonDataViewModel> (); if (titleVM != null && commonDataVM != null) { if (UPEUtility.IsCurrentPartTypeAllowCheckDiffAutomationData ()) { titleVM.UpdateAutomationData (true); commonDataVM.ChangeAutomationPitchButtonStyle (); } } ``` - 결함이 발견되지 않았던 이유: - 유: 그룹변경 메세지 현상은 검증시 발생하지 않았음. - 유: 피치관련 내용 변경이여서 조명 데이터가 변경되었는지는 확인하지 않았다. - 리뷰는 했는가? - 유: 코드리뷰 하지 않았다. VOC가 많아서 급해서 커밋은 해두고 릴리즈 전에 리뷰하려고 했는데 리뷰하지 못했다. - 최: 리뷰해도 못잡았을 수도. - 구: 이제까지 리뷰 못했던 경우가 얼마나 되나? - 유 : 30% 정도 - 결함이 야기한 영향: - SW 다운그레이드로 고객사에 품질이슈 발생 - 해외고객사에 T-Sol 새버전 설치되어 ini 수정하도록 가이드함. (이길우 대리) - 코리아EMS에 T-Sol 새버전 설치되어 ini 수정하도록 가이드함. (김영진 과장) ### 3. 결함 수정 - 수정된 코드/패치: - 하기와 같이 수정 (UPEUtility.IsInitializedNPE 체크 추가) ``` Index: EssentialViewModel.cs =================================================================== --- EssentialViewModel.cs (revision 61562) +++ EssentialViewModel.cs (revision 61563) @@ -652,7 +652,14 @@ if (titleVM != null && commonDataVM != null) { - if (UPEUtility.IsCurrentPartTypeAllowCheckDiffAutomationData ()) + if (UPEUtility.IsCurrentPartTypeAllowCheckDiffAutomationData () && UPEUtility.IsInitializedNPE) { titleVM.UpdateAutomationData (true); commonDataVM.ChangeAutomationPitchButtonStyle (); ``` - 수정된 코드/패치의 효과: - 내부검증 확인완료. 패치 적용은 안되었다. - 장비 SP3에 적용되었고 내부 검증 확인 완료. ### 관련 논의 - 한 : 근본적으로 해결할 방법은 없는가? 추후에라도 또 발생할 여지는 없는가? 신입사원이나 아무나 수정하더라고 이런 문제가 없도록 하자. assert를 넣자. - 최 : 자동화 값은 임시로 저장되어야 하는데 왜 실제 데이터에 엎어 써 졌는가? - 유승민 : 좀 더 확인 필요하다. - 한석원 : 의문이 없을때까지 파고들어가야 한다. - 유 : 자동화 데이터는 그 안에서 저장된다. - 구 : 그룹 변경 메세지에 대해서는 아직 확인 안된거 같다. 재연시키고 원인 확인 해야 한다. - 한 : SelectedPartgroupID의 set에 기능이 들어있는데 분리하는게 어떨까? - 한 : 수동으로 피치값 변경시에는 적색표시가 안되는거 아닌가? - 유 : 변경부분에도 적색표시 한다. 부품 Y값 바뀔때에도 적색표시 한다. - 한 : 공급각도 따라서도 달라질수 있으니 여기도 확인해야 한다. - 유 : 확인해 보겠습니다. - 최 : 표준 칩 때문에 넣은거라면 안 넣어도 되었을듯. 피치 변경 부분에 이미 넣어져서. - 유 : 확인해 보겠습니다. - 박 : 초기화 확인해야 하는것을 그당시 알았는가? - 유 : 몰랐다. - 박 : 초기화 되어야만 동작되는 부분을 근본적으로 수정은 안될지? - 최 : 대대적인 수정 필요할듯. 여러 군데에서 현재 사용하고 있다. ### 4. 결함 예방 - 이러한 결함이 다시 발생하지 않도록 하는 방법: 박형근 : titleVM.UpdateAutomationData (true, IsInitializedNPE) 이렇게 내부에서 체크하도록 하면 어떨까? - 한 : 부품 저장시 변경 내용 보여주는 창을 띄워주면 어떨까. 디버깅 모드에서라도. 자주 검증시 발견되도록. - 결함 예방을 위해 변경된 프로세스/절차: - 검증시 부품 새로 저장해서 생각치않은 변경이 있는지 꼭 확인하자. (변경내용 보여주는 창 필요) - 코드리뷰를 반드시 할 수 있게 절차 변경 고민 : 한팀장님이 고민해보기로함. - 한 : 코드리뷰시 문제발생할 가능성 있는지 새로운 관점으로 보려 노력하는것 필요. - 박 : 교차검증을 하면 좋겠다. - 추가적인 QA/QC 검증: ## KPTA - Keep (잘한점) - 자료가 신속하게 왔다. 로그, PCB 1시간후에 왔다. - 구 : 왜 실험실에서 재연 안되었나? - 유 : 실험실에서 ini 설정 안되어 있어서. - 로그가 있어서 쉬고있던 최수석이 발견 할 수 있었다. - 공동연차였는데 유승민 출근하여서 다행히 빨리 되었다. - Problem (개선할점) - 코드리뷰 안했다 - 검증에서 발견 안되었다. - 검증할때 연관된 기능도 사이드이펙트 없는지 확인하였으면 좋겠다. - 유 : 코드리뷰가 제일 아쉽다. - 한 : 승민에게 일이 많이 몰려서 문제. 업무 부하량 조정 필요. - Try (시도할것) - 최 : 승민에게 술 사주기 - Action (할일) - **데이터 변경 확인 창 만들기** - **assert 넣기** - **아직 물음표인 부분 빨리 확인하기 : 그룹변경 메시지 왜 뜨나? 조명값 왜 반영되었는가? 공급각도 부분도 확인하기** - **코드 리뷰 꼭 하기** ## 기타