

✅ 왜 임베디드에서 V-model을 쓸까?
하드웨어 수정 불가 : PCB가 한번 제작되어 나오면(Spin), 회로를 수정하는 비용이 막대합니다. 따라서 설계 단계에서 완벽을 기해야 합니다.
인증 및 규제 : ISO 26262(기능 안전) 같은 표준은 각 단계별 산출물과 검증 과정을 엄격히 요구합니다.
✅ 실무 프로세스
요구사항 분석 : "부팅 시간 3초 이내, 전력 소모 5W 이하" 같은 구체적 수치 확정.
설계 : HW/SW 인터페이스 정의, 메모리 맵핑, 통신 프로토콜 확정.
구현 : 회로 설계 및 코딩.
검증(Verification) : 단위 테스트 -> 통합 테스트 -> 시스템 테스트 순으로 올라가며 초기에 정의한 요구사항과 일치하는지 확인.

최근에는 임베디드에서도 Agile을 도입하려 하지만, "하드웨어는 Agile 할 수 없다"는 한계 때문에 Hybrid Agile 형태를 취함.
HW 트랙 (Waterfall) : 하드웨어는 긴 호흡으로 개발(Revision 1, 2, 3...).
SW 트랙 (Agile/Scrum) : 소프트웨어는 2~3주 단위 스프린트로 기능 개발.

✅ 구체적인 활용 사례
레지스터 비트 조작 : "Timer0 레지스터의 3~5번 비트를 1로 설정하는 매크로를 만들어줘"라고 하면 실수하기 쉬운 비트 연산((1 << 3) | ...)을 정확히 짜줍니다.
보일러플레이트 제거: CMakeLists.txt 작성, Yocto 레시피(source.bb)의 기본 골격 생성, 디바이스 드라이버의 file_operations 구조체 초기화 등을 빠르게 처리합니다.
레거시 코드 분석 : 주석이 없는 10년 된 C 코드를 던져주고 "이 함수가 인터럽트 컨텍스트에서 안전한지 분석해줘"라고 요청하여 잠재적 버그를 찾습니다.
유닛 테스트 작성 : 임베디드에서 소홀하기 쉬운 Google Test(gtest) 기반의 단위 테스트 코드를 자동으로 생성합니다.
임베디드 프로젝트의 PM은 일반 서비스 기획자와 달리 하드웨어 공정과 소프트웨어 일정 사이의 병목을 관리하는 것이 핵심입니다.
✅ 주요 역할 및 역량
Dependency 관리 (가장 중요)
: "B보드 샘플이 2주 지연됩니다." -> "그럼 SW 팀은 그 기간 동안 드라이버 개발 대신 UI 작업을 먼저 당겨서 합시다."와 같은 일정 조율 능력.
BoM Cost(자재비) vs 성능 조율
: 개발자는 고성능 칩을 원하고, 구매팀은 싼 칩을 원할 때, "이 기능을 구현하려면 최소한 스펙의 칩이 필요하다"는 기술적 근거를 가지고 중재해야 합니다.
이슈 분류 (Triage)
: 버그가 발생했을 때 이것이 "HW 납땜 불량"인지, "SW 로직 에러"인지, "기구적인 발열 문제"인지 초기 판단을 내려 적절한 담당자에게 할당해야 합니다.