임베디드 소프트웨어 개발의 총 12가지 기본사항은 다음과 같다.
1. 코드 크기
애플리케이션 최적화를 통해 더 작은 디바이스를 사용할 수 있어 비용을 절감할 수 있다.
코드 크기와 벤치마크에 유의해야 하는 이유는 무엇일까? 코드 크기를 작게 유지함으로써 주어진 디바이스에 더 많은 기능을 구현할 수 있다는 것이다. 프로세서의 벤치마크를 추적하면 플래시 크기가 더 작은 더 저렴한 디바이스를 사용할 수 있다. 따라서 이 두 요소 모두가 비용 최적화에 기여한다.
예를 들어, 동일한 제품군 및 실리콘 공급업체의 일부 인기 있는 Cortex-M4 디바이스를 살펴보자.
정확히 동일한 MCU와 주변 디바이스를 고려해 보면 주요 유통업체에서 단일 수량으로 $17.34(2022년 11월 기준)에 판매하는 512kB 플래시가 포함된 디바이스와 동일한 공급업체서 단일 수량으로 $21.47에 판매하는 1024kB 플래시가 포함된 유사한 디바이스의 경우 부품당 $4.13의 차이가 있다. 코드를 더 작은 디바이스에 맞출 수 없다면 그렇지 않은 경우보다 실리콘에 23.8% 더 많은 비용을 지출해야 한다는 것이다. 10,000개의 소량 생산에서도 추가 비용은 $41,000 이다.
가격 차이는 아키텍처와 실리콘 공급업체에 따라 약간 다를 수 있지만 총 비용 절감 규모는 상당할 수 있다.
2. 코드 성능
애플리케이션 성능이 BOM(재료 명세서)에 어떤 영향을 미칠 수 있을까?
이전에 우리는 덜 효율적인 컴파일러를 사용하는 경우 더 많은 코드를 허용하기 위해 하나의 디바이스에 더 큰 플래시 공간이 있다는 점을 제외하고 정확히 동일한 두 디바이스를 살펴보았다. 대부분의 파라메트릭 검색에서는 최대 클럭 속도로 검색할 수 없기 때문에 디바이스의 최대 클럭 속도로 유사한 분석을 수행하는 것은 조금 까다롭다.
그러나 같은 실리콘 공급업체 제품군으로 패키징, 플래시 크기 및 RAM 크기, 32비트 타이머 수, D/A 변환기 수 등이
동일한 유사한 Cortex-M4 디바이스를 비교하면 통신 인터페이스(예: I2C 및 SPI의 수)가 약간 다를 수 있지만 주요 차이점은 최대 클록 속도(100MHz 대 180MHz)입니다.
그렇다면 180MHz는 100MHz보다 얼마나 더 비쌀까? 주요 공급업체에 따르면 꽤 차이가 있다.
10,000개 수량 기준으로 180MHz 디바이스의 가격은 부품당 $3.78이며 100MHz 디바이스는 부품당 $2.89이다.
이는 애플리케이션에 필요한 성능을 얻기 위해 더 큰 클럭 속도까지 올려야 할 경우 30.8%의 차이를 의미한다.
10,000개 생산 시 $9,000 이상의 차이가 난다. 속도 최적화는 BOM에 훨씬 더 큰 영향을 미칠 수 있으며, 특히 대량 생산의 경우에는 더욱 그렇다.
3. DevOps
생산성 향상을 위한 컴파일 시간 단축. 일반적으로 코드 라인을 추가하거나 소프트웨어를 수정하면 최악의 경우 최신 개발 워크플로우에서 소프트웨어 프로젝트 전체를 다시 빌드하게 된다. 이 경우 코드가 너무 많으면 빌드하는 데 시간이 오래
걸리고 결과적으로 이러한 대기 시간만큼 개발 기간이 늘어납니다. 따라서 개발과 관련된 빌드 시간을 줄이고 개발 팀의 생산성을 향상시키는 것이 특히 중요하다. 여분의 시간은 더 많은 코드를 작성하거나 (코드 생성을 위해) 디자인 툴을 사용하거나 소스 코드의 품질에 집중하는데 사용하여 결과적으로 개발 조직의 효율성을 높일 수 있다.
4. 디버깅
디버깅이 너무 오래 걸리면 릴리스와 새 버전이 지연된다. R&D는 점점 더 복잡해지는 소프트웨어 시스템의 문제를
찾고 해결하는 데 점점 더 많은 시간을 소비하고 있다. 많은 프로그래머가 GDB와 같은 범용 디버거에 의지한다.
이를 통해 프로그래머는 코드를 통해 조금씩 앞으로 나아가고 감시점을 설정할 수 있다. 이는 아마도 인류에게 가장
효율적인 디버그 방법일 것이다. 불행하게도 임베디드 소프트웨어 개발자는 종종 툴 제한으로 인해 중단점 및 싱글
스테핑으로 디버깅하는 것이 기본이다. 디버깅 시간을 줄이기 위해 개발자는 최신 마이크로 컨트롤러에서 사용할 수
있고 전문 개발 툴에서 지원하는 고급 디버깅 전략을 익혀야 한다.
5. 코드 품질
결함 비용. Steve McConnell의 저서 “Code Complete”에 따르면 평균적으로 개발자는 1,000줄의 코드당 70개의 버그를 생성한다. 그 중 약 20%(코드 1,000줄당 15개의 버그)가 고객까지 전달된다. 그리고 씁쓸한 사실이지만 버그 한 개를 수정하는 것은 코드 한 줄을 작성하는 것보다 30배 더 오랜 시간이 걸린다.
개발 주기 초기에 코드 품질 관리를 도입하면 오류의 영향과 그러한 오류를 제거하는 노력을 최소화할 수 있다. 코딩 표준이 잘 정의된 각 개발자의 컴퓨터에 바로 정적 분석을 제공하면 개발 중에 소스 코드에서 문제를 찾을 수 있어 오류 비용이 제품이 출시된 이 후 문제의 해결 비용보다 작다. 또한 많은 사람들이 재사용을 위한 코드 설계에 대해 이야기하지만 소프트웨어 추정 모델에서는 단순히 새 코드를 작성하는 노력의 50% 이상이 코드 재사용에 소요된다고 주장한다.
위 그림은 Boehm의 COCOMO 비선형 재사용 효과 방법에 대해 설명한 그래프이다.
위 COCOMO 방법은 점선에서 코드 작성의 상대적 비용이 재사용된 소프트웨어에 대한 수정에 따라 영향을 받는 방식을 추정한다. x축은 재사용하려는 코드에 대한 수정 비율이고 y축은 새로운 코드를 작성했을 때의 비율을 나타낸다.
코드의 3개 데이터 샘플 중 2개에 대해서는 재사용된 것으로 추정되는 코드의 많은 부분을 수정하여 코드를 처음부터 다시 작성하는 노력의 50%로 갑자기 점프할 필요가 없었다. AAM(Adaptation Adjustment Modifier, 적응 조정 수정자) 라인은 재사용된 제품의 작은 수정이 균형이 안 맞을 정도로 큰 비용을 발생시킬 수 있음을 보여주는 그래프이다.
6. 개발 유지 비용
컴파일러나 라이브러리에 있는 버그와 같이 무료 툴에 문제가 있는 경우 사용자가 할 수 있는 유일한 일은 직접 수정하거나
해당 저장소에 문제를 게시하는 것이다. 그들은 GNU 커뮤니티가 문제를 해결하거나 누군가 해결하거나 기능을 추가하도록 희망한다. 이로 인해 사용자에게 실제로 어떤 비용(시간과 금전)이 들지는 예측할 수 없다.
예를 들어 GCC/LLVM에 기반한 EMBECOM의 사례 연구 “컴파일러 비용 계산”에 따르면 포괄적인 지원 및 서비스 계약으로 인한 비용 절감액을 쉽게 계산할 수 있다. 즉, 툴체인 유지 관리에는 매월 0.25개월의 엔지니어 노력이 필요하다. 일반적으로 고용 비용은 복리후생, 급여세 및 기업 책임 보험에 따라 급여의 1.25~1.4배이다. 미국 컴파일러 엔지니어의 연간 평균 급여 117,000달러에 1.4배 하면, 유지 관리 또는 심각한 버그를 수정하는 데 매월 3,400달러가 든다는 계산이 나온다.
7. 개발 환경
하나의 IDE에서 가장 광범위한 디바이스 지원으로 개발자의 생산성 향상.
오늘날의 전자 기기는 종종 8, 16, 32 및 64비트 어플리케이션의 포트폴리오를 포함하는 점점 더 많은 수의 임베디드 시스템을 요구하고 있다. 동시에 임베디드 애플리케이션은 점점 더 복잡해지고 정교해지고 있다. 더욱 차별화된 기능을 갖춘 신제품에 대한 갈망이 커짐에 따라 단일 제품의 출시 시간이 회사 전체의 성공을 위한 결정적인 요인이 될 수 있다.
개발 시간을 단축할 수 있는 효율성을 제공하는 통합 개발 환경을 제공하는 컴파일러를 선택하는 것이 무엇보다 중요하다. 그리고 이것은 일관된 애플리케이션 안정성을 보장하는 핵심 요소이다.
일반적으로 개발 팀은 여러 다른 프로세서와 동시에 작업한다. 그들은 당면한 애플리케이션에 가장 적합한 프로세서를 선택할 수 있어야 한다. 그리고 어떤 이유로 프로세서를 변경해야 하는 경우 처음부터 시작할 필요가 없고 툴도 변경하지 않아도 되므로 큰 이점이 있다. 그러니까 개발환경이 중요하다는 말이다.
결론
제품 개발 시간에 대한 지속적인 관리는 비용을 관리하고 납품 목표를 달성하는 데 매우 중요하다.
엔지니어가 제품을 신속하고 효율적으로 만들 수 있도록 설계된 툴과 서비스를 이용해야 하며, 제품 설계에서 특정 디바이스를 사용할 목적으로 진입 장벽을 낮추기 위해 제공되는 “무료” 툴에 비해 초기 비용이 드는 상용 툴을 사용하는 것은 개발 일정을 유지하고 전체적인 제품 개발 비용을 줄이는 효과적인 방법이 될 수 있다.
'임베디드 시스템 (자동차)' 카테고리의 다른 글
자동차 급발진 사례 모음 / 급발진 차종 순위 (2) | 2024.05.15 |
---|---|
자동차 규격 용어 이해 (전장, 전고, 전폭, 축거, 윤거) (0) | 2024.05.09 |
SI 업체란? SI 업체 연봉, 야근, 개발자, 장점, 프로세스 등등 알아보자. (1) | 2024.05.04 |
연봉별 자동차 추천 #연봉에 맞는 차 (1) | 2024.04.28 |
자동차 할부와 리스 차이, 뭐가 좋을까? 비교 (0) | 2024.04.27 |