코드 품질 향상을 위해 코드를 다듬다.

코드 품질 향상을 위해 코드를 다듬다.

임베디드 시스템의 최근 동향을 보면 다양하고 복합적인 기능이 요구되고 있으며, 이는 코드의 복잡성을 증가시키고 있습니다. 또한, 자율 주행 운행과 같이 생명과 밀접한 관계를 가진  제품 들에는 안정성뿐만이 아니라 보안성 등도 함께 요구되고 있는 상황입니다. 그래서 기능 안전(functional safety)에 대한 이슈가 발생하게 됩니다. 이러한 맥락에서 좋은 품질의 코드를 생성한다는 것은 중요한 사항이라고 말할 수 있습니다.

Cortex-M 디바이스 제품을 개발하는 개발자 분들께 ARM 용 IAR Embedded Workbench(이하 EWARM)을 이용하여 활용할 수 있는 코드 품질 향상을 위한 팁들을 연재 형식으로 전달 드리려 합니다.

 

코드품질(Code Quality)

좋은 코드 품질이란 무엇일까요?  이에 대한 답을 찾기 위해 국제 규격인 ISO/IEC 25010 품질 모델에서 소프트웨어 품질 특성에 대해 명시하고 있는 항목들을 살펴보겠습니다.

  • 기능성(Function Suitability)
  • 사용성 (Performance Efficiency)
  • 호환성(Compatibility)
  • 사용성 (Usability)
  • 신뢰성 (Reliability)
  • 보안성 (Security)
  • 유지보수성 (Maintainability)
  • 이식성 (Portability)

위의 내용들을  간략하게 정리하면 사용이 편리하고 안정적으로 동작하며, 보안이 잘 구축되어 있으며, 코드의 재사용, 이식성, 유지 보수성, 호환성이 용이하게 구조화된 소프트웨어를  말하고 있습니다. 즉, 좋은 기능 동작과 좋은 구조에 대한 내용으로 압축할 수 있습니다. 한 줄로 표현된 말이지만, 이를 구현하기 위해서는 많은 시간과 노력이 요구됩니다.

임베디드 시스템에서 작성되는 코드들이 앞서 언급된 내용들을 만족 시킬 수 있다면 좋은 품질의 코드가 될 것입니다.

 

소스코드빌드실행코드

개발자들은 소스 코드를 작성합니다. 이를 빌드하여 실행 코드가 생성됩니다. 이런 관점에서 보면 최종 남아 있는 결과물은 소스 코드와 실행 코드입니다. 소스 코드 작성 시 회사마다 정해진 규칙들을 가지고 있습니다. 이러한 규칙들은 구조적인 관리를 용이하게 하기위해 반드시 필요한 사항입니다. 실행 코드의 생성은 툴(컴파일러)을 이용해야 하며, 동일한 소스 코드를 가지고 생성되는 실행 코드는 각 툴 마다 다르게 만들어 집니다. 이러한 관점에서 우리는 이러한 질문을 생각해 볼 수 있습니다. “그럼 소스 코드 를  어떻게 작성 해야하며, 실행 코드를 좀 더 효율적으로 생성할 수 있는 방법은 무엇일까? ” 하는 질문이 떠오릅니다. 어렵풋하게 해답을 그려보지만 명쾌한 답을 찾기는 쉽지 않습니다.

 

소스코드

소스 코드의 작성에 있어 고려할 사항에 대해 간략하게 생각해 보겠습니다.

복잡한 설계 내용을 명확하고 단순화시키고, 이를 검증할 수 있는 방법이 있으면 매우 유용합니다. 전체적인 로직의 흐름들을 명확하게 가시화하고 논리의 정확성을 검증할 수 있다면 개발 진행에 많은 도움이 됩니다. 

그리고 잠재적인 오류 사항을들 미리 확인하고 조치한다면 좋은 코드가 될 것입니다. 이를 위해 코딩 규격을 준수하여 코드를 작성하십시오. 보다 안정적이 코드를 작성할 수 있습니다.

또한, 가독성이 좋다는 의미는 코드를 누구나 쉽게 이해할 수 있고, 이는 유지보수 관리가 편리하게 만들어 줍니다. 팀 간의 코드 작성에서 정해진 규칙에 따라 코딩을 한다면 훨씬 수월하게 코드의 결합이 이루어 질 수 있습니다.

이식성은 독립성을 가진 코드의 의미를 담고 있습니다. 모듈화하여 서로에게 간섭을 주지 않는 구조의 코드로 작성되어야 하며, 이는 코드의 재사용을 용이하게 합니다.

마지막으로 소스 코드에서 생성되는 실행 코드와의 상관 관계에 대한 지식이 있다면 좀 더 효율적인 코딩 작업을 할 수 있습니다.

 

실행코드

제품에 사용되는 결과물은 실행 코드입니다. 이 코드는 제품의 단가하고 직접적으로 관련되며, 메모리 크기에 대한 디바이스 선택은 수량이 많은 양산 제품에는 커다란 영향을 미치게 됩니다.  그리고 빠른 실행 코드를 생성할 수 있다면 낮은 클럭에서도 동작할 수 있으며, 빠른 처리는 전류 소비를 줄이는 데도 도움이 됩니다.

오류없는 소프트웨어는 없다는 말이 있지만 제품에서 오류가 발생하면 치명적인 피해를 발생시키게 되며, 제품의 품질도 떨어지게 됩니다. 그러므로 오류들을 제품이 출시되기 전에 제거한 다는 점은 매우 중요합니다. 그러기 때문에 제품 테스트에 점점 더 많은 노력을 투자하게되는 것은 당연하다고 볼 수 있습니다.

실행 코드를 조금 더 작고, 빠르며, 그리고 오류없게 만드는 것도 코드 품질을 향상시키는 방법입니다. 이를 위해 세밀한 코드의 조율이 필요하게 됩니다. 이러한 조율 과정을 개발 업무에서 작업 흐름이 중단되지 않고 연속적으로 진행될 수 있다면, 코드의 품질과 업무의 효율성을 함께  향상시키게 됩니다.

양질의 소스 코드가  작성 되어야 실행 이미지도 좋은 결과물로 생성될 수 있습니다. 물론 인증된 제품의 툴을 사용하여 품질의 요소들을 향상시키는 것도 필요 합니다. 개발 작업을 효율적으로 구축하여 프로세서화 한다면 제품 개발에 필요한 기간을 단축 시킬 수 있을 뿐만 아니라 코드의 품질도 한 단계 더 상승하게 될 것입니다.

 

감사합니다.

© IAR Systems 1995-2017 - All rights reserved.