Top

[UML 상태차트를 이용하여 C/C++ 패턴과 이디엄으로 만드는]
실시간 임베디드 퀀텀 프로그래밍

  • 원서명Practical Statecharts in C/C++ (ISBN 1578201101)
  • 지은이Miro Samek
  • 옮긴이김기영, 김건혜
  • ISBN : 8989975492
  • 40,000원
  • 2004년 09월 08일 펴냄
  • 페이퍼백 | 410쪽 | 190*250mm
  • 시리즈 : 임베디드 시스템

책 소개

비싼 중량형 CASE 툴 없이 반응형 시스템을 모델링 하자. 퀀텀 프로그래밍은 상태차트를 특정 툴의 사용방법이 아닌 설계방식으로 다루는 새로운 패러다임이다.
멀티스레드 임베디드 애플리케이션에 맞는 완벽한 소프트웨어 기반구조도 수록하고 있다. 유연하고 효율적이며 이식가능할 뿐 아니라 확장가능하고 관리하기 쉬운 이 경량형 퀀텀 프레임워크를 통해 여러분은 C나 C++를 이용해 UML 상태차트에서 리얼타임 시스템을 쉽게 코팅할 수 있다.
퀀텀 프레임워크는 완벽한 구현환경이고, 거의 모든 RTOS에서 동작할 수 있게끔 설계한 능동객체 프레임워크이다. 신속하게 원형을 제작하고 어떤 개발단계에서도 쉽게 상태와 전이를 수정하며 타겟 시스템의 리소스 제한에 맞춰 C나 C++ 중 구현언어를 선택할 수 있다. 무엇보다 매우 간결해서 전체 CF 코드에서도 5KB 미만의 코드와 데이터를 요할 뿐이다.


[ 책 소개 ]

20년쯤 전, David Harel은 복잡한 반응형 -이벤트 구동형- 시스템을 기술하는 강력한 방식으로써 상태차트를 개발했다. 동시에 상태차트는 뛰어난 형식으로써 프로그래머들로부터 거의 절대적인 지지를 얻었으며, 많은 소프트웨어 방법론의 컴포넌트로 채택됐다. 특히 이 중에서 가장 주목받은 것은 UML(Unified Modeling Language)이다. 이 책은 UML 상태차트로 만든 명세를 C/C++ 패턴과 이디엄에 따라 반응형 시스템을 모델링하는 방법을 알려주는 책이다.

기본적으로 이 책은 설계 자동화 툴에 심플하고 경량의 대안으로 구체적이고 효과적이며 입증된 상태차트의 구현을 소개함으로써, C나 C++에 익숙한 사람이라면 며칠 내로 상태차트의 구현을 시도할 수 있게끔 한다. 또한 상태차트와 상태차트 기반 컴퓨팅 모델을 구현함으로써, 새로운 프로그래밍 패러타임의 초석을 닦는다. 저자는 이것을 퀀텀 프로그래밍(Quantum Programming; QP)이라 이름 붙였다. 프로그래밍 패러다임으로써의 QP는 이 책에서 수록한 단순한 코드보다 훨씬 많은 것을 여러분에게 제공한다. 저자는 QP를 C나 C++ 같은 기존의 프로그래밍 언어의 추상화 수준을 향상시키는 기법의 모음으로 간주했으며, 또 그렇게 사용한다. QP에서 추가된 추상화를 통해, 필자는 반응형 시스템을 C++와 C를 이용해 효과적으로 모델링할 수 있다. QP의 역할은 객체지향(object-oriented, OO) 프로그래밍 언어의 역할에 견줄 수 있다. Smalltalk, C++, Java가 세 가지 OO 설계 메타패턴인 추상화, 상속, 다형성을 직접 지원함으로써 객체지향 프로그래밍(OOP)을 가능하게 해주는 것과 마찬가지로, QP는 다른 기본 메타패턴인 계층형 상태머신(hierarchical state machine; HSM)을 통해 C나 C++에서 직접 모델링할 수 있게 해준다. QP는 프로그래밍 방법론이 아닌 반응형 시스템을 모델링하고 구현하는데 필요한 구체적 기법의 모음이다. QP는 더 잘 설계되고 안전하며 효율적인 이벤트 구동형 소프트웨어로 가는 가장 빠른 길을 제공한다. 여러분이 가는 길에는 어떤 장애물도 없기 때문이다. 여러분은 QP를 사용하면서 여러가지 문제가 바뀌었음을 알게 될 것이다. 더 이상 복잡한 if문이나 switch문과 씨름할 필요가 없으며, 어떻게 상태패턴을 적용할 것이고 어떻게 문제를 능동객체로 분할할 것인지를 생각하는데 시간을 더 할애할 것이다.

또한 이 책에서는 계층형 상태머신을 구현하고 실행하는데 쓸 수 있는 편리하고 범용적이며 효과적인 요소를 소개한다. 이러한 요소로는 이벤트의 생성, 큐잉, 전달은 물론, 상태머신과 리얼타임 운영체계(RTOS)의 통합을 비롯해 여러가지가 있다. 이들 소프트웨어 요소는 시스템마다 약간의 차이를 보이지만, 문헌에서 검색하기는 매우 힘들다. 그리고 이들 요소가 어울려 제대로 동작하게 하는 것은 더 어렵다. 이런 의미에서 이 책은 종합비타민과 비슷하다. 이 책 한 권으로 필요한 모든 영양소를 섭취할 수 있으며, 각 영양소는 균형이 잘 맞춰져 있고 서로를 잘 보완해준다. 여러분이 이것만을 염두에 두고 책을 읽어나간다면 이 책에서 의도한 가장 중요한 목표가 달성되는 것이다.


누가 이 책을 읽어야 하는가

이 책은 반응형 시스템이나 이벤트 구동형 시스템에 관심이 많은 다음과 같은 컴퓨터 전문가를 대상으로 집필됐다.

1. 임베디드 프로그래머와 컨설턴트는 실무적인 충고와 설명은 물론, 그대로 사용하거나 수정해서 이벤트 구동형 소프트웨어를 구축할 수 있는 코드를 배울 수 있다.
2. 리얼타임 시스템 설계자는 리얼타임 시스템 모델링에 쓰이는 중량형 CASE 툴의 경량형 대안을 찾을 수 있다. 선점형 RTOS와 결합된 퀀텀 프레임워크는 확실한 비헤비어를 제공하며, 상용제품에 포함될 수 있다.
3. 설계자동화 툴의 사용자는 툴의 동작원리를 더 잘 이해할 수 있으며, 더 효과적이고 자신있게 툴을 사용할 수 있을 것이다.
4. C나 C++를 사용하는 GUI 개발자와 대화식 웹페이지 디자이너, 컴퓨터 게임 프로그래머는 UML 상태차트의 코딩 방법은 물론, Microsoft Windows API와 같은 GUI 환경으로의 통합 방법을 알려주는 훌륭한 예제를 찾을 수 있다.
5. C나 C++를 클래스 라이브러리로 확장해 SoC(System on Chip) 설계를 모델링하는 방법을 찾는 하드웨어 설계자는, 계층형 상태머신의 가장 간결하고 효과적인 구현을 살펴볼 수 있다.
6. 컴퓨터공학이나 전자공학 분야의 대학원생이라면 다양한 예제와 연습문제를 통해 많은 설계패턴을 배울 수 있을 것이다.


[ 이 책의 구성 ]

이 책은 크게 두 부분으로 이뤄진다. 1부(1 ~ 6장)에서는 상태머신을 설명한다. 상태머신이 무엇이고, 어떻게 구현하며, 이를 사용하는 기본적인 방식이나 패턴에는 어떤 것이 있는지 알아본다. 이 부분은 대개 사용자 인터페이스, 리얼타임 시스템, 임베디드 시스템과 같은 이벤트 구동형 시스템에 적용할 수 있다. 2부(7 ~ 11장)에서는 퀀텀 프레임워크를 설명한다. 퀀텀 프레임워크는 임베디드 리얼타임 시스템을 대상으로 설계된 소프트웨어 아키텍처이다.


[ CD-ROM ]
부록 CD-ROM에는 퀀텀 프레임워크의 전체 소스코드, 책에 수록한 모든 연습문제의 정답과 함께 x86 프로세서 32비트 리얼타임 운영체계인 RTOS-32의 평가판이 수록돼 있다.

저자/역자 소개

<저자 소개>

Miro Samek
은 IntegriNautics의 수석 소프트웨어 설계자로 임베디드 리얼타임 소프트웨어 개발에 10년 넘게 몸담고 있다. 그는 과거 GE Medical Systems에서 X선 진단장비 영상화에 필요한 안전중심의 리얼타임 소프트웨어를 개발했다. 그는 독일 다름슈타드에서 핵물리학으로 박사학위를 취득했다. 이 시절 중이온 실험을 수행하면서 그는 리얼타임 데이터 획득과 온라인 분석을 담당했다.


<역자 소개>

김기영 kykim-e@skec.co.kr

현재 SK건설 부설 연구소에 재직중이며 다수의 공학용 설계/계측 소프트웨어를 개발했다.
대표적인 번역서로는 Beginning Java Script, .NET Compact Framework, 플래시 MX로 만드는 비디오, JXTA, 플래시 MX 액션스크립트 요술램프가 있다.


김건혜 k2hye@yahoo.co.kr

컴퓨터 분야 전문 번역가로 다수의 번역서에서 번역, 편집, 감수를 담당했다.
대표적인 번역서로는 플래시 MX로 만드는 비디오가 있다.


<역자 서문>

일상생활에서 어떤 제품의 원리를 아는 사람이 그것을 더 잘 활용한다는 사실을 의심할 수는 없다. 원적외선으로 음식물 내의 수분을 가열한다는 전자렌지의 원리를 아는 사람이라면, 물기가 하나도 없는 음식을 데우겠다고 하지 않을 것이다. 그리고 고유진동수를 낮은 진동수로 조율, 고속회전시 덜컹거리지 않도록 한 탈수기의 원리를 알고 있는 사람이라면 처음에 탈수기가 덜컹거린다고 해서 그다지 걱정하지도 않을 것이다. 이와 같은 논리가 하드웨어나 소프트웨어에도 그대로 적용된다는 것에 반론을 제기할 독자는 없으리라고 본다. 여러분이 흔히 사용할 법한 MFC에서도, 도큐먼트-뷰 아키텍처와 같은 내부 원리는 반드시 알아야 할 것이다.

이러한 관점을 상태차트로 가져온 책이 바로 여러분이 보고 있는 이 책이다. 저자는 특정한 도구의 사용법 정도로 인식돼온 상태차트를 직접 C/C++로 구현함으로써, 여러분의 이해도를 몇 단계 끌어올려준다. 이 말은 상태차트만 더 잘 이해할 수 있다는 뜻이 아니다. 상태차트를 직접 구현해보고 상태차트를 실행할 소프트웨어 기반구조를 구축하면서, 우리는 객체지향 프로그래밍, 소프트웨어 설계패턴, 리얼타임 시스템 모델링과 같은 많은 분야의 초석을 닦을 수 있다. 마치 도큐먼트-뷰 아키텍처 하나에서 많은 프로그래밍 기법을 배울 수 있는 것처럼 말이다.
임베디드 시스템을 공부하는 여러분은 이 책을 읽어나가면서, 지금까지 보지 못한 또다른 가능성을 발견할 것이다. 역자가 그러했듯 여러분도 평소에 무시하고 지나쳤던 작은 음식점에서 최고의 음식을 찾은 것과 같은 기분을 느끼리라 생각한다. 여러분이 새로운 지식의 세계로 ‘전이’할 수 있는 ‘진입액션’의 역할을 이 책이 충실히 이행할 수 있기를 바라마지 않는다.

김기영 / 김건혜
2004. 8. 31

목차

목차
  • 서문
  • 상태차트 / STATECHARTS
  • 1장 간략히 살펴보는 퀀텀 프로그래밍
    • 1.1 Ultimate Hook - GUI 애플리케이션 해부
    • 1.2 더 좋은 프로그래밍 방법 - 계산기
    • 1.3 객체지향과의 유사성
    • 1.4 퀀텀 프로그래밍과 양자역학
    • 1.5 요약
  • 2장 상태차트 / Crash Course in Statecharts
    • 2.1 유한 상태머신의 핵심
    • 2.2 UML 상태차트의 기초
    • 2.3 상태모델 예제
    • 2.4 요약
  • 3장 표준 상태머신 구현 / Standard State Machine Implementations
    • 3.1 상태머신 인터페이스
    • 3.2 중첩 switch 문
    • 3.3 상태 테이블
    • 3.4 상태 설계패턴
    • 3.5 최적 FSM 구현
    • 3.6 상태머신과 C++ 예외처리
    • 3.7 멤버 함수에 대한 포인터의 역할
    • 3.8 가드, 연결점, 선택점 구현
    • 3.9 진입액션과 탈출액션 구현
    • 3.10 상태계층 처리
    • 3.11 요약
  • 4장 비헤비어 상속 구현/ Implementing Behavioral Inheritance
    • 4.1 구조
    • 4.2 예제
    • 4.3 휴리스틱과 이디엄
    • 4.4 이벤트 처리기
    • 4.5 C 구현
    • 4.6 유의사항
    • 4.7 요약
  • 5장 상태패턴 / State Patterns
    • 5.1 Ultimate Hook
    • 5.2 Reminder
    • 5.3 Deferred Event
    • 5.4 Orthogonal Component
    • 5.5 Transition to History
    • 5.6 요약

  • 6장 상태모델 상속 / Inheriting State Models
    • 6.1 C++ 상태차트 개선 예제
    • 6.2 C에서의 상태차트 개선 예제
    • 6.3 유의사항
    • 6.4 요약

  • 퀀텀 프레임워크 / QUANTUM FRAMEWORK
  • 7장 퀀텀 프로그래밍이란/ Introducing the Quantum Framework
    • 7.1 멀티스레딩의 일반 접근법
    • 7.2 QF의 컴퓨팅 모델
    • 7.3 QF의 역할
    • 7.4 요약
  • 8장 퀀텀 프레임워크 설계 / Design of the Quantum Framework
    • 8.1 임베디드 리얼타임 시스템
    • 8.2 오류와 예외조건 처리
    • 8.3 메모리 관리
    • 8.4 상호배제와 블로킹
    • 8.5 이벤트 전달
    • 8.6 능동객체
    • 8.7 초기화와 삭제
    • 8.8 시간 관리
    • 8.9 QF API의 간단한 레퍼런스
    • 8.10 요약
  • 9장 퀀텀 프레임워크 구현/ Implementations of the Quantum Framework
    • 9.1 QF - Parnas 패밀리
    • 9.2 코드 구성
    • 9.3 공통요소
    • 9.4 DOS : 멀티태스킹 커널이 없는 QF
    • 9.5 Win32 : 데스크탑에서의 QF
    • 9.6 RTKernel-32 : QF와 선점형 우선순위 기반 커널
    • 9.7 요약
  • 10장 샘플 퀀텀 프레임워크 애플리케이션/Sample Quantum Framework Application
    • 10.1 QF 애플리케이션 제작
    • 10.2 QF 애플리케이션 개발 규칙
    • 10.3 애플리케이션 개발에 있어서의 휴리스틱
    • 10.4 이벤트 큐와 이벤트 풀의 크기
    • 10.5 시스템 통합
    • 10.6 요약
  • 11장 결론 / Conclusion
    • 11.1 QP의 핵심요소
    • 11.2 QP의 목적
    • 11.3 제안
  • 부록 “C+” - C 객체지향 프로그래밍/ “C+” - Object Oriented Programming in C
    • A.1 추상화(Abstraction)
    • A.2 상속(Inheritance)
    • A.3 다형성
    • A.4 비용과 오버헤드
    • A.5 요약
  • 부록 B 표기법 안내 / Guide to Notation
    • B.1 클래스 다이어그램
    • B.2 상태차트 다이어그램
    • B.3 시퀀스 다이어그램
    • B.4 타이밍 다이어그램
  • 부록 C CD-ROM
    • C.1 소스코드 구조
    • C.2 설치
    • C.3 연습문제의 정답
    • C.4 자료
  • 참고문헌
  • 인덱스
  • www.quantum-leap.com

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안