로봇 소프트웨어 설계 도구
📌 개요
- 설계를 머릿속·화이트보드에만 두면 공유·검증·유지가 안 됨
- 설계 도구 = 모델을 그리고, 검사하고, 코드와 연결해 주는 소프트웨어
- 시험 핵심 출제 포인트
- CASE 도구의 개념과 상위/하위 분류
- 순공학·역공학·재공학의 구분
- 모델 기반 개발(MBD)과 자동 코드 생성
- 빌드·버전 관리·CI 등 구현 단계의 개발환경 도구는 로봇 소프트웨어 개발환경에서 다룸
📖 핵심 개념
CASE 도구 (시험 단골)
-
CASE(Computer-Aided Software Engineering): 소프트웨어 개발 활동(분석·설계·구현·시험)을 컴퓨터로 지원·자동화하는 도구의 총칭
-
지원하는 단계에 따라 분류:
-
상위(Upper) CASE: 개발 앞 단계(요구 분석·설계) 지원 — 다이어그램 작성, 모델 관리, 명세 일관성 검사
-
하위(Lower) CASE: 개발 뒷 단계(구현·시험) 지원 — 코드 생성, 컴파일·디버깅, 시험 자동화
-
통합(Integrated) CASE: 전 단계를 저장소(repository) 중심으로 통합 지원
모델링 도구의 핵심 기능
UML 모델링 도구(CASE의 대표)는 그림판이 아니다 — 모델을 데이터로 다룬다.
- 다이어그램 편집: UML 표기법 지원, 요소 재사용 (다이어그램 종류 → 로봇 소프트웨어 아키텍처 모델링)
- 모델 일관성 검사: 클래스 다이어그램에 없는 클래스가 순서 다이어그램에 등장하는 등의 모델 간 불일치를 자동 검출
- 순공학(Forward Engineering): 모델 → 코드 골격 자동 생성
- 역공학(Reverse Engineering): 기존 코드 → 모델(다이어그램) 을 추출 — 문서 없는 레거시 분석
- 재공학(Re-engineering): 역공학으로 이해한 시스템을 개선해 다시 만드는 것 (역공학 + 재구조화)
- 문서 자동 생성: 모델에서 설계 문서를 출력 — 모델과 문서의 불일치 방지
모델 기반 개발 (MBD, Model-Based Design/Development)
제어 소프트웨어 분야의 강력한 흐름 (시험 포인트).
- 제어 알고리즘을 블록선도 모델로 설계 (Simulink류 도구)
- 모델을 시뮬레이션으로 검증 — 코딩 전에 제어 성능 확인 (→ 액추에이터 동역학 모델링)
- 검증된 모델에서 코드를 자동 생성해 타깃(제어기)에 탑재
- MIL→SIL→HIL 순으로 단계 검증 (Model/Software/Hardware-in-the-Loop) (→ 제어기 소프트웨어 성능시험)
- 장점: 설계–구현 간극 제거(모델이 곧 사양), 조기 검증, 수작업 코딩 오류 감소
- 유사 개념 MDA(Model-Driven Architecture): 플랫폼 독립 모델(PIM)에서 플랫폼 종속 모델(PSM)·코드로 변환해 가는 OMG 표준 접근
로봇 특화 설계·기술 도구
- 로봇 기술 형식(robot description): 로봇의 링크·관절·센서 구성을 표준 형식(URDF 등 XML 계열)으로 기술 — 시뮬레이터·시각화·기구학 라이브러리가 같은 모델을 공유
- 시뮬레이터: 설계안을 가상 로봇으로 조기 검증 (→ 로봇 소프트웨어 개발환경)
- 계산 그래프 시각화: 노드·토픽 연결의 실행 구조를 그림으로 확인 — 설계(프로세스 뷰)와 실제의 대조 (→ 로봇 미들웨어 구조 설계)
- 인터페이스 정의 도구: 메시지·서비스 형식(IDL)을 정의하면 각 언어의 코드가 자동 생성 — ICD의 기계화
도구 선택·활용의 원칙
- 도구는 방법을 대신하지 않는다 — 설계 능력 없이 도구만 있으면 "예쁜 잘못된 설계"가 나온다
- 모델과 코드의 동기화 유지가 관건: 자동 생성·역공학 루프를 쓰거나, 아키텍처 수준만 모델로 유지하는 등 팀 규칙을 정한다
- 팀 협업 기능(모델 버전 관리·병합), 표준 형식 지원(UML/XMI), 기존 도구 체인과의 연동을 함께 평가
📊 다이어그램 · 수식
CASE 분류와 공학 방향
flowchart LR
subgraph U["상위 CASE (분석·설계)"]
M["모델·다이어그램"]
end
subgraph L["하위 CASE (구현·시험)"]
C["코드·시험"]
end
M -- "순공학: 모델→코드 생성" --> C
C -- "역공학: 코드→모델 추출" --> M
C -- "재공학: 역공학 + 개선 재구축" --> C모델 기반 개발(MBD)의 흐름
flowchart LR
D["블록선도 모델 설계"] --> S["시뮬레이션 검증
(MIL)"] --> G["코드 자동 생성"] --> T["타깃 탑재·검증
(SIL → HIL)"]
S -- 미달 시 모델 수정 --> D🎯 핵심 요약 · 암기 포인트
✏️ 예상문제
1. CASE 도구 중 요구 분석·설계 등 개발 앞 단계를 지원하는 것은?
① 하위(Lower) CASE ② 상위(Upper) CASE ③ 컴파일러 ④ 디버거
정답 및 해설
정답: ② 상위 CASE는 분석·설계 단계(다이어그램·모델 관리)를, 하위 CASE는 구현·시험 단계(코드 생성·디버깅·시험 자동화)를 지원한다. 전 단계 통합은 통합 CASE다.
2. 문서가 없는 기존 코드로부터 클래스 다이어그램을 추출해 구조를 파악하는 활동은?
① 순공학 ② 역공학 ③ 재공학 ④ 정형 검증
정답 및 해설
정답: ② 코드 → 모델 방향이 역공학이다. 모델 → 코드는 순공학, "역공학 + 개선 재구축"은 재공학이다. 세 용어의 방향을 바꿔 내는 것이 단골 패턴이다.
3. 모델 기반 개발(MBD)에 대한 설명으로 옳지 않은 것은?
① 제어 알고리즘을 블록선도 모델로 설계한다 ② 코딩 전에 시뮬레이션으로 설계를 검증할 수 있다 ③ 검증된 모델로부터 코드를 자동 생성할 수 있다 ④ 모델과 코드는 항상 별개이므로 불일치해도 무방하다
정답 및 해설
정답: ④ MBD의 핵심 가치가 "모델이 곧 사양"이 되어 설계–구현의 간극을 없애는 것이다. 모델과 코드의 불일치는 MBD가 해결하려는 문제 그 자체다.
4. 제어기 검증 단계 MIL, SIL, HIL의 순서와 의미로 옳은 것은?
① HIL → SIL → MIL, 하드웨어부터 검증 ② MIL → SIL → HIL, 모델 → 소프트웨어 → 하드웨어 순 검증 ③ SIL → MIL → HIL, 소프트웨어부터 검증 ④ 세 단계는 순서 없이 동시에 수행해야 한다
정답 및 해설
정답: ② Model-in-the-Loop(모델끼리 시뮬레이션) → Software-in-the-Loop(생성 코드 검증) → Hardware-in-the-Loop(실제 제어기 연결) 순으로, 저렴하고 안전한 단계부터 점진적으로 실물에 접근한다.
5. 설계 도구 활용에 대한 설명으로 가장 적절한 것은?
① 도구를 도입하면 설계 능력과 무관하게 좋은 설계가 보장된다 ② 모델과 코드의 동기화를 유지하는 팀 규칙이 함께 필요하다 ③ 모델 일관성 검사는 사람이 눈으로만 할 수 있다 ④ 문서는 모델과 별도로 수작업 작성하는 것이 원칙이다
정답 및 해설
정답: ② 도구는 방법을 대신하지 못하며(①), 모델–코드 동기화가 무너지면 모델은 낡은 그림이 된다. 일관성 검사와 문서 생성은 도구가 자동화해 주는 대표 기능이다(③④).
🔗 관련 노트
- 객체지향 소프트웨어 설계 — 도구로 그리는 설계의 내용
- 로봇 소프트웨어 아키텍처 모델링 — UML·뷰의 개념
- 로봇 소프트웨어 개발환경 — 구현 단계의 도구(빌드·Git·CI)
- 제어기 소프트웨어 성능시험 — HIL 검증의 실제
- 액추에이터 동역학 모델링 — MBD의 모델이 되는 동역학
- _MOC 로봇소프트웨어구조설계