clean-architecture

29. 클린 임베디드 아키텍처

소프트웨어는 닳지 않지만, 펌웨어와 하드웨어는 낡아가므로 결국 소프트웨어도 수정해야 한다.

→ 소프트웨어는 닳지 않지만, 펌웨어와 하드웨어에 대한 의존성을 관리하지 않으면 안으로부터 파괴될 수 있다.

펌웨어 정의

ROM에 상주하는 코드만이 펌웨어는 아니다.

저장되는 위치가 펌웨어를 정의하지는 않는다.

이보다는 무엇에 의존하는지, 그리고 하드웨어 발전에 맞춰 수정하기가 얼마나 어려운지에 따라 정의된다.

앱 개발자 역시 업무 로직을 안드로이드 API로부터 분리하지 않는다면 펌웨어를 작성하는 셈이다.

통신 관련 서브시스템을 재설계 할 때 했던 경험

엔지니어와 프로그래머에게 전하는 메시지는 분명하다. 펌웨어를 수없이 양산하는 일을 멈추고, 코드에게 유효 수명을 길게 늘릴 수 있는 기회를 주어라.

앱-티튜드 테스트


켄트 백은 소프트웨어를 구축하는 세 가지 활동을 다음과 같이 기술했다.

빠르게 만들어라 → 같은 목표는 아주 세세한 최적화를 틈만 나면 수행해야 달성되는 목표다.

동작하는 것을 배워라. 그러고 나서 더 나은 해결책을 만들어라.

대다수의 앱들도 코드를 올바르게 작성해서 유효 수명을 길게 늘리는 데는 거의 관심 없이, 그저 동작하도록 만들어진다.

타깃-하드웨어 병목현상


임베디드 개발자들은 임베디드가 아니었다면 다루지 않아도 될 특수한 관심사를 많이 가지고 있다.

제한된 메모리 공간, 실시간성 제약과 처리완료 시간, 제한된 입출력, 특이한 사용자 인터페이스, 여러 센서와 실제 세상과의 상호작용 등이다.

임베디드가 지닌 특수한 문제 중 하나는 타깃-하드웨어 병목현상이다.

타깃이 테스트가 가능한 유일한 장소라면 타깃-하드웨어 병목현상이 발생하여 진척이 느려질 것이다.

결론


임베디드 소프트웨어를 개발하는 사람들은 임베디드 소프트웨어 바깥의 경험에서 많은 것을 배울 수 있다.

이 책을 선택한 당신이 임베디드 개발자라면 소프트웨어 개발에 대한 풍부한 지혜의 말과 생각들을 얻을 수 있을 것이다.

모든 코드가 펌웨어가 되도록 내버려두면 제품이 오래 살아남을 수 없게 된다. 오직 타깃 하드웨어에서만 테스트할 수 있는 제품도 마찬가지이다. 클린 임베디드 아키텍처는 제품이 장기간 생명력을 유지하는 데 도움을 준다.