---
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 넣기**
- **아직 물음표인 부분 빨리 확인하기 : 그룹변경 메시지 왜 뜨나? 조명값 왜 반영되었는가? 공급각도 부분도 확인하기**
- **코드 리뷰 꼭 하기**
## 기타