콘텐츠로 건너뛰기
Home » LDRA로 확보하는 임베디드 SW 신뢰성: 데이터 결합·제어 결합·응집도 관리

LDRA로 확보하는 임베디드 SW 신뢰성: 데이터 결합·제어 결합·응집도 관리

임베디드 소프트웨어에서 결합(Coupling)응집도(Cohesion)는 안전성과 신뢰성에 직접적인 영향을 주는 핵심 설계 요소입니다.

모듈은 전역 변수를 이용하거나 다른 모듈의 함수를 호출하면서 서로 통신합니다. 이때 결합도가 지나치게 높거나 응집도가 낮으면 하나의 모듈에서 발생한 문제가 다른 모듈로 전파될 가능성이 커집니다.

따라서 임베디드 소프트웨어의 신뢰성을 높이려면 데이터 흐름과 제어 흐름을 분석하고, 모듈 간 의존성과 내부 응집도를 체계적으로 관리해야 합니다.

왜 결합과 응집도 관리가 중요한가?

예를 들어 하나의 모듈에서 getSpeed 함수를 다른 모듈이 호출한다고 가정해 보겠습니다.

호출 시 전달되는 매개 변수 값에 따라 함수 내부에서 Division by zero와 같은 오류가 발생할 수 있습니다. 이 문제는 단순히 해당 함수에만 머무르지 않고, 함수를 호출한 다른 모듈의 동작에도 영향을 줄 수 있습니다.

데이터 결합과 제어 결합 개념을 보여주는 예시 코드
그림1. [결합에 대한 예시 코드]

테스트 케이스를 구성해 실행하면 특정 입력값에서 오류가 발생하는지 확인할 수 있습니다. 이런 사례는 모듈 간 의존성을 충분히 관리하지 않을 경우 결함이 다른 기능으로 전파될 수 있음을 보여줍니다.

결합 예시 코드에 대한 테스트 케이스 결과 화면
그림2. [예시 코드에 대한 테스트 케이스]

결합(Coupling)과 응집도(Cohesion)

결합이란?

결합은 모듈 간 상호 의존성의 정도를 의미합니다.

결합도가 높을수록 한 모듈의 결함이 다른 모듈의 결함으로 이어질 가능성이 커지고, 한 모듈의 변경이 다른 모듈의 변경까지 요구할 가능성도 높아집니다.

응집도란?

응집도는 하나의 모듈 내부 요소들이 서로 얼마나 관련되어 있는지를 의미합니다.

인터페이스가 명확하고 다른 모듈과 독립적으로 동작하는 모듈은 응집도가 높다고 볼 수 있습니다. 응집도가 높은 모듈은 이해하기 쉽고, 유지보수와 재사용에도 유리합니다.

데이터 결합과 제어 결합, 응집도 개념 설명 도식
그림3. [결합과 응집도]

데이터 결합과 제어 결합

데이터 결합(Data Coupling)

DO-178C Annex B에서는 데이터 결합을 소프트웨어 구성요소가 자신이 직접 통제하지 않는 데이터에 얼마나 의존하는지와 관련된 개념으로 설명합니다.

두 모듈이 데이터를 공유하거나 전역 변수를 주고받는 경우 데이터 결합이 발생합니다.

데이터 결합이 낮을수록 모듈 간 의존성이 줄어들고, 각 모듈을 더 독립적으로 테스트하거나 재사용하기 쉬워집니다.

제어 결합(Control Coupling)

제어 결합은 한 소프트웨어 구성요소가 다른 구성요소의 실행 방식이나 흐름에 얼마나 영향을 주는지를 의미합니다.

한 모듈이 다른 모듈의 제어 구조를 변경하거나 실행 조건을 결정하면 제어 결합이 발생합니다.

제어 결합이 높아질수록 모듈 간 의존성이 커지고 재사용성과 유지보수성이 낮아질 수 있습니다.

ISO 26262와 DO-178C에서의 결합·응집도 관리

ISO 26262와 DO-178C 같은 안전 관련 표준은 소프트웨어 구성요소 간 결합과 모듈 내부 응집도를 중요한 품질 요소로 다룹니다.

이러한 개념을 소프트웨어 검증 활동에 반영하면 구조적인 의존성을 파악하고, 변경이나 결함이 다른 구성요소에 미치는 영향을 분석할 수 있습니다.

ISO 26262 표준의 결합과 응집도 관련 규정 내용
그림4. [ISO 26262에 결합과 응집도에 관한 내용]

LDRA를 활용한 데이터 결합·제어 결합 검증

LDRA는 제어 흐름(Control Flow)데이터 흐름(Data Flow)을 분석하여 데이터 결합과 제어 결합 검증을 지원합니다.

원문의 RASC(Airspeed) 모듈 예시를 통해 실제 검증 흐름을 확인할 수 있습니다.

데이터 결합과 제어 결합 검증에 사용된 RASC 모듈 예시
그림5. Airspeed(RASC) module

데이터 결합 검증

LDRA를 이용하면 전역 변수 사용과 데이터 흐름을 추적하여, 소프트웨어 구성요소가 자신이 독점적으로 제어하지 않는 데이터에 얼마나 의존하는지 확인할 수 있습니다.

이를 통해 모듈 간 데이터 의존성을 분석하고 예상하지 못한 데이터 경로가 있는지 검토할 수 있습니다.

LDRA를 통한 데이터 결합 검증 결과 화면
그림6. 데이터 결합 검증 결과

제어 결합 검증

제어 흐름 분석을 통해 한 소프트웨어 구성요소가 다른 구성요소의 실행에 얼마나 영향을 미치는지 확인할 수 있습니다.

이러한 분석은 모듈 간 실행 의존성을 파악하고, 특정 구성요소의 변경이 다른 기능에 미치는 영향을 검토하는 데 활용됩니다.

LDRA를 통한 제어 결합 검증 결과 화면
그림7. 제어 결합 검증 결과

데이터 결합·제어 결합 검증 자동화

결합 검증은 반복적으로 수행되는 작업이 많기 때문에 자동화가 중요합니다.

LDRA에서는 데이터 결합 및 제어 결합 검증 과정에 스크립트 기반 자동화를 적용할 수 있어 반복적인 검증 작업을 효율적으로 수행할 수 있습니다.

데이터 결합과 제어 결합 검증 자동화 스크립트 화면
그림8. 데이터 결합 및 제어 결합 검증 자동화

임베디드 SW 신뢰성을 높이는 결합·응집도 관리

임베디드 소프트웨어에서 결합과 응집도는 단순한 코드 구조 문제가 아니라 안전성과 신뢰성 확보를 위한 검증 대상입니다.

데이터 흐름과 제어 흐름을 분석하면 소프트웨어 구성요소 간 의존성을 파악할 수 있고, 이를 바탕으로 데이터 결합과 제어 결합을 관리할 수 있습니다.

LDRA를 활용하면 이러한 검증을 수행하고, 반복적인 검증 절차를 자동화함으로써 임베디드 소프트웨어의 품질과 신뢰성을 체계적으로 관리할 수 있습니다.

문의 및 기술 협력

Send us a message!

앞선 품질, 끊임없는 도전, 정직한 기술로 함께합니다.
문의 글을 작성해 주시면, 담당자 확인 후 빠르게 연락드립니다.

대표전화: (+82)02-420-3203

FAX: (+82)02-407-3511

05770 서울특별시 송파구 오금로 422, 연암빌딩 4F~6F




FAMILY SITE

advanced-floating-content-close-btn