Skip to content

Latest commit

 

History

History

zhoon

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

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

Introduction

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

  • 더그 슈미트
  • 소프트웨어
    • 긴 시간 유용하게 쓸 수 있음
  • 펌웨어
    • 하드웨어가 발전할수록 낡아갈 것
  • 더그의 주장에 아래와 같이 덧붙일 것

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

  • 더그가 내린 펌웨어 정의가 마음에 들지만, 또 다른 정의도 찾아보았다.
    • 펌웨어는 ROM, EPROM 혹은 플래시 메모리 같은 비휘발성 메모리에 유지된다.
    • 펌웨어는 하드웨어 장치에 프로그래밍된 소프트웨어 프로그램 혹은 명령어 집합이다.
    • 펌웨어는 개발 하드웨어에 내장되는 소프트웨어다.
    • 펌웨어는 읽기 전용 메모리 ROM 에 쓰여진 소프트웨어 (프로그램이거나 데이터) 다.
  • 필자는 펌웨어는 더 적게 만들고, 소프트웨어를 많이 만드는 것을 바라지만, 펌웨어 엔지니어들이 펌웨어를 너무 많이 양산해내는 상황을 실망스러워 한다.
  • 필자는 오래전부터 소프트웨어를 하드웨어로부터 분리할 필요성을 느끼고 또 이해하고 있었지만, 더그의 말을 듣고 나서야 소프트웨어와 펌웨어라는 용어의 상호 관계가 명확해졌고, 이에 기초해 두 용어를 어떻게 사용해야 할 지 명쾌하게 됨
  • 엔지니어와 프로그래머에게 전하는 메시지는 분명함
    • 펌웨어를 수없이 양산하는 일을 멈추고, 코드에게 유효 수명을 길게 늘릴 수 있는 기회를 주어라

앱-티튜드 테스트

  • 켄트 백은 소프트웨어를 구축하는 세 가지 활동을 다음과 같이 기술함
    • 먼저 동작하게 만들어라
    • 그리고 올바르게 만들어라
    • 그리고 빠르게 만들어라
  • 앱이 동작하도록 만드는 것을 필자는 개발자용 앱-티튜드 테스트라고 부름
  • 프로그래머가 오직 앱이 동작하도록 만드는 일만 신경 쓴다면 자신의 제품과 고용주에게 몹쓸 짓을 하는 것
  • 프로그래밍에는 단순히 앱이 동작하도록 만드는 것보다 중요한 것이 훨씬 많음

타깃-하드웨어 병목현상

  • 임베디드가 지닌 특수한 문제 중 하나는 타킷-하드웨어 병목현상
  • 임베디드 코드가 클린 아키텍처 원칙과 실천법을 따르지 않고 작성된다면,
    • 대개의 경우 코드를 테스트할 수 있는 환경이 해당 특정 타킷으로 국한될 것
    • 그리고 그 타킷이 테스트가 가능한 유일한 장소라면 타킷-하드웨어 병목현상이 발생하여 진척이 느려질 것

클린 임베디드 아키텍처는 테스트하기 쉬운 임베디드 아키텍처다

HAL 사용자에게 하드웨어 세부사항을 드러내지 말라

인터페이스를 통하고 대체 가능성을 높이는 방향으로 프로그래밍하라

DRY 원칙: 조건부 컴파일 지시자를 반복하지 말라

결론

  • 임베디드 소프트웨어를 개발하는 사람들은 임베디드 소프트웨어 바깥의 경험에서 많은 것을 배울 수 있음
  • 클린 임베디드 아키텍처는 제품이 장시간 생명력을 유지하는 데 도움을 줌