티스토리 뷰
[LabVIEW] 디자인패턴 그리고 랩뷰
랩뷰 및 다른 언어를 이용하여 조금 더 효율적으로 프로그래밍하고자 한다면 어떤 방법을 사용할 수 있을까요? 프로그래머라면 한번씩은 다들 들어본 디자인 패턴이 이에 대한 방법이 될 수 있을 것입니다. 그럼 디자인패턴이란 무엇일까요?
프로그래밍 언어이 발전하면서 각 세대에 유행하는 언어가 만들어졌습니다. 이 언어들의 차이는 객체지향-절차지향 혹은 구문에 대한 차이만 있을 뿐 프로그래밍에서 자료구조와 알고리즘은 동일하게 처리가 되고 있습니다. 그 이유는 프로그래밍 언어가 달라져도 처리해야 하는 요구사항은 비슷하기 때문일 겁니다.
프로그래머들이 프로그래밍을 하면서 시간이 흐름에 따라 A 알고리즘을 구현할 때는 A 방식으로 짜고, B 알고리즘을 구현할 때는 B 방식으로 짜는 게 효율적이라고 경험상 느낄 수 있었을 겁니다. 1995년 GOF(Gang of Four)는 이러한 경험들을 정리하여 디자인패턴이라는 이름을 발표하였습니다. 즉, 디자인 패턴은 지금까지 구현에 대한 경험을 바탕으로 알고리즘 및 시스템 구현에 효율적인 방법을 제시하는 하나의 방법론이라고 생각을 하시면 됩니다.
GOF가 제안한 디자인패턴은 C/C++을 기반으로 하고 있으며, 추후 많은 저자들을 통해서 C#, JAVA에 적용할 수 있는 기틀을 마련하였습니다. 디자인 패턴을 이용하게 되면 아래와 같은 장점을 가질 수 있습니다.
- 개발시간 단축
- 코드 수명 증가
- 코드 가독성 증가
- 프로그램 유지보수 용이
디자인 패턴 자체가 기존의 경험을 바탕으로 제안하고 있는 프로그래밍 방법론이기 때문에 당연히 효율성과 비용을 줄이는 점에 초점을 두고 있습니다. 하지만, 많은 개발업체들이 이러한 장점에도 불구하고 개발의 우선과 빠듯한 일정으로 구현부터 하고 있는게 대한민국의 프로그래밍 산업의 현실입니다.
그럼 LabVIEW의 디자인패턴은 무엇이 있을까요? LabVIEW에서는 아래와 같은 디자인패턴을 제시하고 있습니다.
- 기능적 글로벌 변수 (Functional Global Variable)
- 상태 머신 (State Machine)
- 이벤트 드리븐 유저 인터페이스 (Event-driven UI)
- 생산자 / 소비자 (Producer / Consumer)
- 큐 상태머신 생산자 / 소비자 (Queued State Machine – Producer / Consumer)
그럼 왜 LabVIEW에서 이러한 디자인 패턴을 적용해야 할까요? LabVIEW의 디자인패턴은 기존의 언어와는 조금 다르게 접근을 해야할 것이라 생각합니다. 물론 가지는 장점은 같습니다.
아래의 코드를 한번 보도록 하겠습니다. LabVIEW를 통해서 개발자는 아주 열심히 구현을 하였습니다. 다만 가독성이 너무 떨어집니다. 어느 부분에 어떠한 내용이 구현이 되었는지, 이코드가 도대체 어떠한 기능을 하는지 알 수 없습니다. 만약 여기에 추가적인 요구사항이 생겨 기능을 추가해야한다면, 추가적인 기능 구현이 쉽게 될 것 같지는 않습니다.
LabVIEW는 기존의 텍스트 언어와는 달리 G언어(Graphical Language) 이기 때문에 가독성이 가장 중요한 포인트가 아닐까 생각을 합니다. LabVIEW는 기본적으로 프로그래의 흐름이 왼쪽에서 오른쪽으로 와이어를 연결하여 처리합니다. 아래의 코드는 왼쪽에서 오른쪽으로 코드의 흐름이 구현이 되어 있긴하지만 입력과 출력이 코드상 워낙 많아 언제 어떻게 처리되는지 파악하기 힘듭니다.
위와 같은 문제를 해결하기 위해서 LabVIEW는 디자인패턴을 이용할 수 있습니다. 생산자-소비자 패턴과 LVOOP(LabVIEW OOP), 이벤트를 적용하여 구현을 하게 되면 위의 코드는 아래와 같이 구현할 수도 있습니다.
동일한 코드임에도 불구하고, 코드의 가독성이 훨씬 나아짐을 확인할 수 있습니다. 아래의 코드에는 새로운 요구사항이 추가되어도 충분히 추가 기능을 구현할 수 있을 뿐 아니라, 추가 기능을 통해서도 코드가 위와같이 복잡해 지지는 않을 것입니다.
디자인 패턴이 무엇이며, 텍스트 언어 및 LabVIEW에서 디자인 패턴을 적용하게 되면 얻게 되는 장점에 대해서 알아보았습니다. 그리고 디자인 패턴을 적용하였을 때 LabVIEW에서 실질적으로 어떻게 가독성 및 유지보수성이 좋아지는지를 예를 통해 살펴보았습니다.
앞으로 시간이 날때마다, LabVIEW의 디자인 패턴에 대해서 차례차례 설명을 드리도록 하겠습니다. 감사합니다.
이 글이 도움이 되셨나요?
그렇다면 아래의 그림을 클릭해주세요.
'National Instruments > LabVIEW' 카테고리의 다른 글
[LabVIEW] 랩뷰 자격증 CLD 취득!! (1) | 2015.02.14 |
---|---|
[LabVIEW] 랩뷰 디자인 패턴 1 - 상태머신 (17) | 2015.01.27 |
[LabVIEW] 랩뷰에서 .NET 2.0, 3.0, 3.5 어셈블리 로드하기 (0) | 2015.01.24 |
[LabVIEW] VIPM(VI Package Manager) 문제 해결 방안 (2) | 2015.01.21 |
[LabVIEW] 랩뷰에서 사용 가능한 변수 (1) | 2015.01.13 |