컴포넌트 기반 모델링 지침
컴포넌트 기반 모델링은 조직에서 많은 기능적 요소로 구성된 Simulink® 모델을 개발하는 데 유용합니다. 생성하는 각 Simulink 컴포넌트는 인터페이스를 가지면서 시스템 또는 더 큰 컴포넌트의 어셈블리를 용이하게 하는 설계의 일부입니다. 유용한 모델 컴포넌트는 범위가 잘 정의되어 있고, 요구 사항으로 정의된 기능을 수행하며, 더 큰 시스템의 일부를 형성합니다.
모델 컴포넌트를 사용하면 다음과 같은 이점이 있습니다.
팀 기반 개발 — 파일 경합을 줄이고 잘 정의된 인터페이스를 통해 독립적으로 컴포넌트를 정교화합니다.
설계 복잡성 축소 — 각 컴포넌트가 보다 작은 문제들을 해결합니다.
컴포넌트 재사용 — 프로젝트 내에서뿐만 아니라 여러 프로젝트에서 알고리즘과 환경 모델을 재사용합니다.
단위 테스트 — 변경되지 않은 컴포넌트에 대한 재테스트를 제거하고 검증 비용을 줄입니다.
확장 가능한 성능 이점 — 메모리 사용을 줄이고 모델 불러오기 및 시뮬레이션에 필요한 시간을 줄입니다.
컴포넌트 변형 — 컴포넌트의 여러 구현 중에서 선택합니다.
지적 재산 보호 — 타사와 공유하는 컴포넌트의 기능과 내용 가시성을 제한합니다.
모델 컴포넌트를 만들어야 하는 경우
컴포넌트를 정의하고 관리하는 작업이 필요하다는 점을 고려하여, 얻는 이점이 소요되는 비용보다 클 경우에만 컴포넌트 기반 모델링을 사용해야 합니다.
기존 Simulink 모델을 컴포넌트로 분리하는 것은 큰 조각의 코드(C, Java® 또는 MATLAB® 코드)를 여러 함수로 나누는 것과 비슷합니다. 처음부터 모듈식 설계를 하지 않으면 변환에 상당한 노력과 광범위한 수정이 필요할 수 있습니다.
모델 확장성과 잠재적 요구 사항을 사전에 고려하면 Simulink 모델을 컴포넌트로 보다 쉽게 분리할 수 있습니다. 컴포넌트를 사전에 식별하면 다음과 같은 문제를 방지할 수 있습니다.
부적절한 컴포넌트 정의 — 서브시스템의 범위가 점차 늘어나면 컴포넌트 요구 사항을 충족하지 못하게 될 수 있습니다. 예를 들어, 포함된 기능이 너무 많거나 적어서 재사용하기 부적절하거나, 레거시 기능과 통합되는 코드를 생성할 수 없거나, HIL(Hardware-In-the-Loop) 테스트를 지원하지 못할 수 있습니다.
병합 충돌 — 원래 1명의 엔지니어가 개발하도록 설계한 모델에 엔지니어들이 추가로 투입되어 함께 작업하기 시작하면 병합에 시간이 많이 걸리고 오류가 쉽게 발생할 수 있습니다.
대수 루프 — 처음부터 1명의 엔지니어가 모델을 개발하면 모델 복잡성이 증가함에 따라 블록들을 서브시스템으로 그룹화할 가능성이 큽니다. 모델 내 서브시스템은 대개 시각적으로 식별 가능하고 모델 실행에 영향을 주지 않는 방식으로 그룹화되어 있습니다. 이러한 서브시스템을 아토믹으로 만들거나 참조된 모델로 변환하면 의도치 않게 진단과 수정이 어려운 대수 루프를 유발할 수 있습니다.
한 사람이 모든 세부사항을 관리하기에 설계가 너무 복잡해진 경우에도 컴포넌트를 활용하면 유용합니다. 예를 들어, 복잡한 모델은 다음을 포함하는 모델일 수 있습니다.
수천 개의 블록
수백 개의 논리적 결정
동일한 기능에 대한 여러 개의 Variant 구성
프로젝트와 소스 컨트롤을 사용하면 컴포넌트를 관리하는 데 도움이 될 수 있습니다. 자세한 내용은 What Are Projects? 항목과 Configuration Management 항목을 참조하십시오.
모델 컴포넌트 정의하기
1. Explore Types of Model Components | 하이 레벨 모델링 요구 사항에 맞는 Simulink 컴포넌트를 식별합니다. |
2. Compare Capabilities of Model Components | 어떤 유형의 모델 컴포넌트가 로우 레벨 모델링 요구 사항을 충족하는지 조사합니다. |
3. Define Interfaces of Model Components | 인터페이스에서 설계 특성을 구성하고 모델 컴포넌트의 데이터를 관리합니다. |