AUTOSAR를 공부하거나 실무 프로젝트에 들어가면 가장 자주 듣는 용어 중 하나가 SWC(Software Component) 이다.
그리고 AUTOSAR 구조를 제대로 이해하려면 가장 먼저 잡아야 하는 개념도 SWC다.
실무에서는 이런 말이 자주 나온다.
- 이 기능은 어느 SWC에 넣을까?
- Port 연결됐나?
- Runnable 주기 몇 ms야?
- Interface 맞췄나?
- RTE Generate 했나?
- 다른 ECU와 Signal 맵핑 끝났나?
즉, AUTOSAR 개발은 결국 SWC를 설계하고 연결하는 작업이라고 해도 과언이 아니다.
이번 글에서는 SWC의 개념, 구조, Port 종류, Interface 의미, 동작 방식, 실무 예제까지 그림과 함께 자세히 정리한다.
1. AUTOSAR SWC란?
SWC는 Software Component 의 약자다.
자동차 기능을 독립적인 단위로 나눈 소프트웨어 모듈이다.
쉽게 말하면 자동차 안의 기능 하나하나를 블록처럼 나누어 만든 구조다.
예를 들면:
- 도어 제어 SWC
- 사이드미러 제어 SWC
- 램프 제어 SWC
- 시트 제어 SWC
- 와이퍼 제어 SWC
- HVAC 제어 SWC
- 진단 응답 SWC
즉, 차량의 기능 단위를 소프트웨어 컴포넌트로 쪼개서 관리하는 방식이다.
2. 왜 SWC 구조를 사용하는가?
기능이 적을 때는 단순한 C 코드 구조도 가능하다.
MainFunction()
{
DoorControl();
MirrorControl();
LampControl();
}
하지만 실제 차량은 수백 개 이상의 기능이 동시에 동작한다.
이 상태에서 모든 코드를 한곳에 넣으면 문제가 발생한다.
대표 문제점
1. 유지보수 어려움 - 한 기능 수정이 다른 기능에 영향 준다.
2. 협업 어려움 - 여러 개발자가 같은 파일을 수정하게 된다.
3. 재사용 어려움 - 다른 차종에 특정 기능만 가져가기 어렵다.
4. 테스트 어려움 - 기능 단위 검증이 어렵다.
그래서 AUTOSAR는 기능을 SWC 단위로 분리한다.
즉, 기능별 독립 개발, 병렬 개발 가능, 재사용 가능, 테스트 용이, 구조적 확장 가능이라는 장점을 얻는다.
SWC는 Application Layer에 존재한다. 즉, 차량 기능 로직은 SWC 안에 들어간다.
3. SWC 핵심 구조

이 그림은 AUTOSAR SWC의 Port 구조를 설명하는 매우 중요한 그림이다.
이 그림에서 꼭 이해해야 할 핵심은 아래 3가지다.
1. SWC는 Port를 통해 외부와 통신한다.
2. Port는 Required / Provided 로 나뉜다.
3. Port는 Interface 타입(Client-Server / Sender-Receiver)을 가진다.
PortPrototype이란?
그림 상단에 보면 이런 문구가 있다.
PortPrototype characterised by PortInterface
뜻은 다음과 같다.
PortPrototype = 실제 SWC에 생성된 Port
PortInterface = 그 Port가 어떤 방식으로 통신하는지 정의
즉, Port = 연결 단자, Interface = 통신 규칙이다.
Provided Port / Required Port 차이
AUTOSAR Port는 크게 두 종류다.
1. Provided Port (P-Port)
기능이나 데이터를 제공하는 Port 다.
즉, 다른 SWC가 이 데이터를 사용할 수 있다.
(예: 현재 속도 제공, 램프 상태 제공, 서비스 함수 제공 등...)
2. Required Port (R-Port)
다른 SWC의 기능이나 데이터를 요청해서 사용하는 Port 다.
(예: 차량 속도 읽기, 도어 상태 읽기, 진단 서비스 호출 등...)
쉽게 비유하면
Provided Port = 서버
Required Port = 클라이언트
또는
Provided = 출력
Required = 입력
으로 이해해도 된다.
Client-Server Interface
그림 상단 원형 아이콘 부분은 Client-Server 구조를 의미한다.
required Port → 서비스 요청
provided Port → 서비스 응답
즉, 함수 호출 구조다.
실무 예시
진단 서비스 요청:
Rte_Call_DataService_Read();
Required Port 쪽에서 호출
Provided Port 쪽에서 구현
Sender-Receiver Interface
삼각형 아이콘은 Sender-Receiver 구조다.
데이터를 송수신하는 방식이다.
Sender → 값 전송
Receiver → 값 수신
실무 예시
속도 신호 전달:
Rte_Write_PpVehicleSpeed_Value(speed);
Rte_Read_RpVehicleSpeed_Value(&speed);
대부분의 Signal 전달은 SR 방식이다.
SwConnector란?
그림 오른쪽 선 연결부에 있는 SwConnector 는 Port와 Port를 연결하는 관계다.
즉,
SWC A Provided Port
↓
SwConnector
↓
SWC B Required Port
실제 툴에서는 Port를 Drag & Drop으로 연결하거나 ARXML에서 정의한다.
attributes 의미
하단 attributes는 Port에 추가 속성을 줄 수 있다는 의미다.
예:
- Queue 사용 여부
- Init Value
- Alive Timeout
- Data Element 설정
- Communication Spec
실무에서는 단순 연결만 하는 것이 아니라 Port 세부 속성도 매우 중요하다.
4. 실제 SWC 예제
MirrorControl SWC
입력: VehicleSpeed, LockState
출력: MirrorFoldCmd
코드 예제
void Mirror_MainFunction(void)
{
uint16 speed;
uint8 lock;
Rte_Read_RpVehicleSpeed_Value(&speed);
Rte_Read_RpLockState_Value(&lock);
if ((speed >= 20U) && (lock == 1U))
{
Rte_Write_PpMirrorFoldCmd_Value(1U);
}
else
{
Rte_Write_PpMirrorFoldCmd_Value(0U);
}
}
코드 해석
1. Required Port 를 사용(Rte_Read...)하여 다른 SWC가 제공한 데이터를 읽는다.
2. Provided Port 를 사용(Rte_Write...)하여 내 SWC 결과를 외부에 제공한다.
5. SWC와 Runnable 관계
많이 헷갈리는 부분이다.
SWC = 기능 모듈
Runnable = SWC 내부 실행 함수
Runnable은 Event에 의해 실행된다.
예: 10ms 주기, 데이터 수신 시, 초기화 시 등..
6. 실무에서 SWC 설계 시 체크포인트
1) 책임 분리: 한 SWC가 너무 많은 기능을 가지면 안 된다.
2) Port 최소화: 불필요한 Signal 연결은 유지보수성을 떨어뜨린다.
3) 주기 최적화: 1ms Runnable에 무거운 로직 금지.
4) 재사용 고려: 차종 공통 기능은 독립 SWC로 분리.
정리
SWC는 AUTOSAR에서 차량 기능을 모듈화한 단위이며,
Port와 Interface를 통해 다른 컴포넌트와 연결되고 Runnable을 통해 실제 로직이 실행된다.
'AUTOSAR' 카테고리의 다른 글
| AUTOSAR Port Interface 종류 총정리 (SenderReceiver / ClientServer 쉽게 이해하기) (0) | 2026.04.21 |
|---|---|
| AUTOSAR Composition SWC란 무엇인가? 실무자가 반드시 알아야 할 계층 설계 구조 (0) | 2026.04.20 |
| ISO26262 에서 ASIL 등급이란 무엇인가? A/B/C/D 차이 완전 정리 (3) | 2026.04.17 |
| ISO 26262란 무엇인가? 자동차 기능 안전 완전 정리 (1) | 2026.04.17 |
| AUTOSAR ARXML 파일이란? 실무자가 반드시 알아야 할 핵심 개념 (1) | 2026.04.17 |