株式会社NTTデータ オートモビリジェンス研究所
NTTデータグループ

ZIPCプロダクト

SOLUTION

ZIPC Family

ZIPC V10

導入実績 No.1を獲得し続ける
状態モデリングCASEツールの決定版

課題・背景

近年の組込みソフトウェア開発では大規模化、複雑化が急速に進んでいます。 従来の開発では基本ケースの設計が中心となり、異常ケースや例外ケースの設計にモレ抜けが発生しやすく、文章やフリーフォーマットによる設計では不具合に対してコードのみに修正を行い、設計書との乖離が起こりがちです。 また、実装するまで動的な検証することができずプログラムの作成後、初めて不具合が顕在化して大幅な手戻りで開発工数のロスが発生してしまいます。 機能安全のような規格を満たす必要のある分野は勿論のこと、大規模化、複雑化に対応するには形式的または半形式的な表記で設計を行う必要があります。

解決策

ZIPC V10は状態遷移が存在するあらゆるシステム、ソフトウェア開発に適用可能です。

  • 状態遷移表による事象と状態の組み合わせを網羅的に設計することで、異常ケースや例外ケースのモレ抜けを防止します。
  • 抽象的な設計段階でも動的検証することができるのでモデルの段階で問題を発見、解決できます。
  • 充分に振舞い検証されたモデルからプログラムコードを自動生成できるため実装段階での不具合が激減し、ソフトウェアの品質、開発の生産性が飛躍的に向上します。
  • モデルから生成されたプログラムコードなので設計書とコードの乖離が発生しません。

ZIPC V10の特長

状態遷移表の専用エディタ

拡張階層化状態遷移表(EHSTM)により、組込みソフトウェアの振舞い設計に必要な表現が網羅されています。また、階層化でメンテナンス性、再利用性の高い状態モデリングが可能です。その他にも、状態図、シーケンス図、タイミング図、タスク関連図のエディタを備えています。

豊富なシミュレーション機能

日本語記述の抽象度の高い段階から、Cコードを含んだ詳細設計レベルの状態遷移表まで全ての設計フェーズでシミュレーションが可能です。実行ログ生成、変数ウォッチ、ブレイクポイント設定など、豊富なシミュレーション機能で実装前に不具合を発見できます。

コードジェネレーション

事象と状態で決定される状態遷移に関わるCコードを自動生成します。これにより、コーディング工数が削減されます。また、シミュレーションで不具合が除去された、正しく振舞う状態遷移表からコードを生成するので、ヒューマンエラーを排除した高品質のCコードを生成できます。

動作環境
OS Windows8.1 (32bit,64bit)
※2023年01月10日延長サポート終了
Windows10
CPU 1GHz以上相当
メモリ 2GB RAM以上
ディスク容量 1GB以上
ZIPC Quick Guide

ZIPC V10

はじめての方のための「早わかりZIPC」

はじめに

ZIPCは、高信頼性が求められる電力制御ソフトウェア開発の中で生まれたCASEツールです。
早期から検証することでソフトウェアの品質を確保するのを支援します。

早期からの検証とは

ソフトウェアはいくつかの段階を経て開発するのが一般的です。この時、作り込めば作り込むほど複雑さは高くなりますが、後工程になるほど検証、修正するのは難しく、コストもかかります。
そこで、各段階で検証できることは検証しておき、早い段階から品質を確保します。

早期からの検証とは

品質確保の4ステップ

ZIPCでは、設計から検証まで4ステップで品質を確保します。

1)モレヌケなく設計

人は組み合わせを網羅的に考えるのは得意ではないので、状態遷移表をかいてモレヌケをなくします。例えば、操作シナリオや状態遷移図から状態遷移表を作成することで、仕様のモレヌケをなくします。ここで見つけたモレヌケには組込み開発で重要な、例外、異常処理などが含まれます。

モレヌケなく設計

2)仕様を動かして確認

日本語で書いた状態遷移表を動かして確認します。動かしてみて気づくこともあるので、この段階で修正します。また、実機ができる前から検証を始められます。

仕様を動かして確認

3)状態遷移表からコードを生成

状態遷移表から自動変換することで、ケアレスミスなくコードを作成します。日本語で書いていた仕様はコンパイラが扱える文字列へ変換する“辞書”を利用して変換します。

4)状態遷移表で実機検証

ZIPCで生成したコードを実機で動かしながら、その様子をほぼリアルタイムに状態遷移表で確認できます。実機試験のときに(設計図である)状態遷移表でカバレッジをとることで品質保証の根拠に利用したり、デバッグ支援に利用します。

状態遷移表からコードを生成

状態遷移表の読み方

状態遷移表の基本要素は4つあります。

  • 状態(State):事象に対して反応を変化させる状況
  • 事象(Event):対象としているシステムへの入力
  • 処理(Action):ある状況における事象に対して行う事柄
  • 遷移(Transition):次の状況

状態遷移表は状態と事象、交差するセルの組み合わせで1つの流れを成しています。

状態遷移表の読み方

なぜ状態遷移表がよいのか?

組込みソフトウェア開発で利用される代表的な設計図としてフローチャートがあります。
フローチャートは着目した流れを追うのに適していますが、網羅的に記述するのには適していません。
状態遷移は、状態と事象における処理が網羅的に見える化されるため、仕様のモレヌケを防ぐのに利用されます。

なぜ状態遷移表がよいのか?

自動生成コードのイメージ

状態遷移表から生成されるコードと実行順序の代表例は以下のようになります。
事象の発生を確認したら、現在の状態に合わせて処理するべき関数を呼び出します。
そして新しい状態に移ります。

自動生成コードのイメージ

ZIPCを利用して得る効果

ZIPCはソフトウェア開発工程を通して次のような効果をあげることができます。

フェーズ 項目 効果
要件定義 表によるモレヌケ防止 要求定義の段階から検証して品質を向上できる
動く仕様書 仕様を動作検証できる
表による最適化分析 最適な機能配置や部品化を分析できる
可視化・可動化による認識の統一 動かして確認することで認識違いがなくなる
表による試験項目 遷移網羅の試験パスが出しやすく、表でカバレッジ測定できる
レビューのしやすさ 視覚的・動的メリットによりレビューしやすい
抽象表記での動作検証 動かすためにコードを書く必要がない
アーキテクチャ
設計
/詳細設定
部分的にデータを混合したシミュレーション 確認したい部分だけコードを記述して動作検証できる
OSを含んだマルチタスクシミュレーション コード化せずにOSを含んだ動作検証が行える
外部連携によるシミュレーション ハードができる前から外観図で検証できる
異常試験環境の構築 実機で出しにくい異常試験が行える
データの流れと構造の分析 シーケンスやタイミングの動作検証ができる
ログの記録 シミュレーションログを記録して後で確認できる
実装 コード生成パターンの選択 実機の性能特性に合わせたコードパターンを選べる
コードの人依存性 コードスタイルが作成者に依存しない
MISRA対応コード 生成コードはMISRA-Cに準拠している
表による実機デバッグ 実機に載せても表で動作検証できる
Frequently Asked Questions about Products

ZIPC V10

製品ZIPC V10についてよくあるご質問

製品ZIPC V10についてよくあるご質問の一覧です。

手法 設計フェーズ シミュレーションフェーズ 実装フェーズ その他

ZIPC 手法編

可能です。
具体的には、ZIPCのメニュー[プロジェクト]-[プロジェクト設定]-[Cコード生成設定]の[STM設定]ページにて、STM一覧からSTMを選択し、[無視、不可セル関数コール]の設定をします。
無視又は不可の関数コールを設定すると、無視や不可を処理するときに、設定した関数がコールされます。
例)
v 無視関数コール書式 ign_func() //チェックをし、関数コール書式を設定
上記のように設定した場合、無視コール時にign_func関数がコールされます。
不可も同様に設定します。
無視関数と不可関数を同じ関数でコールする場合には無視or不可の設定をした後無視不可共通関数コールをチェックします。

ZIPC 設計編

ZIPC シミュレーション編

ZIPC 実装編

ZIPC その他

ZIPC Sample

ZIPC V10

EHSTM手法・ZIPC機能サンプル

1.ポーリング機構

変数をループ監視するようなタスクの作り方は?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(969KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(402KB:2010年2月修正)]

2.通常割込み

シミュレーションで割込みを発生させるには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(681KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(266KB:2008年9月公開)]

3.周期割込み

シミュレーションで周期割り込みを発生させるには?(μITRON2.0-custom使用)

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(739KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(331KB:2008年9月公開)]

4.マルチタスク(簡易型)

シミュレーションでマルチタスクにて簡易的にメッセージイベントを発生させるには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(379KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(131KB:2008年9月公開)]

5.起動判断

起動時に動作を振り分けるには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(276KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(77KB:2008年9月公開)]

6.初期化処理

STMにて初期化処理を定義するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(468KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(167KB:2008年9月公開)]

7.メイン関数

Cコードにて作成したメイン関数にてSTMを動作させるには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(970KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(394KB:2008年9月公開)]

8.BCB外観図

BCB(C++Builder 5:ボーランド株式会社)にて外観図を作成するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(2,422KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(1,042KB:2008年9月公開)]

9.状態番号取得

STMのアクティブな状態を取得するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(1,495KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(671KB:2008年9月公開)]

10.VC外観図

VC(Visual C++ 6.0:マイクロソフト株式会社)にて外観図を作成するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(2,734KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(1,221KB:2008年9月公開)]

11.ステート/イベントの移動

ステート/イベントを簡単に移動させるには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(681KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(259KB:2008年9月公開)]

12.クローン手法

1つのSTMを複数のSTMのように使用するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(954KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(383KB:2008年9月公開)]

13.無視不可関数

無視セルや不可セルの処理を定義するには?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(917KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(398KB:2008年9月公開)]

14.STM階層化

STMを階層化するときのレベル番号定義方法は?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(368KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(123KB:2008年9月公開)]

15.VB文字化け

VBで作成した外観図が文字化けしたときの対応方法は?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(271KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(7,597KB:2008年9月公開)]

16.外観図のデバッグ

外観図のデバッグ方法は?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(379KB:2008年9月公開)]

17.遷移の型

遷移の型とは?

ドキュメント

本内容について説明しているドキュメントです。
[PDF形式(745KB:2008年9月公開)]

サンプル

本内容についての参考サンプルです。
圧縮ファイル(ZIP形式)をダウンロード後、解凍しご利用ください。
[ZIP形式(279KB:2008年9月公開)]

ZIPC Sample

ZIPC V10

導入支援・教育用サンプル

キャッツではZIPC導入に際して、状態遷移設計手法の教育やZIPCを利用したプロトタイプ開発、検証環境の開発などのサービスを行っています。
導入支援では、身近な機器の状態遷移モデルを作成しながら、ZIPCによる開発を身につけていく教育も行っております。是非、ご相談ください。

ICカードリーダーの検証環境の構築

概要

ICカードリーダーは、非接触ICカードへの認証および、読込/書込を利用し、さまざまなサービスを提供する機器です。非接触ICカードは、電子マネーサービス、ICカード乗車券規格や、住民基本台帳カード仕様など、身近なさまざまな場面で利用されています。 本ICカードリーダーモデルでは、FeliCa技術を用いた非接触ICカードのカードリーダーを想定しています。残高照合、認証、支払い、チャージ機能のサービスをZIPCの状態遷移表により、記述し、検証する環境を実現しています。

ICカードリーダーの検証環境の構築

システム構成

ソフトウェア構成

本システムは3つのタスクと1つのハンドラにより構成されています。 タスクは、アプリケーションタスク、カードリーダ受信タスク、ICカードタスクから構成されています。アプリケーションタスクは、ICカードとの通信および、ユーザー操作の受付を行ないます。カードリーダ受信タスクは、ICカードからの受信データにより、コールバックを処理しています。また、ICカードタスクは、カードリーダからのコマンドにより、認証、データの読み書きなどの機能を実現しています。 ハンドラは、周期ハンドラにより構成され、定期的にカードの捕捉処理を行っています。

FeliCaはソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。
ソニー Felicaのサイトはこちら

ICカードリーダーの検証環境の構築

ドラム式洗濯機モデルの検証環境の構築

概要

ドラム式洗濯機は、ドラムが縦に回転する洗濯機で、洗濯物を持ち上げ、落下によってたたき洗いを行います。本ドラム式洗濯機モデルでは、操作パネル部と制御部で構成されるシステムを想定しています。各デバイスの動作状況を検証する環境を実現しています。

ドラム式洗濯機モデルの検証環境の構築

システム構成

ハードウェア構成

ハードウェアは、操作パネル(UI)部と、制御部で構成されます。ZIPC の適応範囲は、制御部側となっています。

ドラム式洗濯機モデルの検証環境の構築

ソフトウェア構成

本システムは、3つのタスクと1つのハンドラにより構成されています。 タスクは、MainTask、Scheduler、DrumMoterTaskにより、構成されています。 MainTaskは全体制御を行います。Schedulerはコース設定によるスケジューリングを行います。DrumMoterTaskはドラムモーターの回転制御を行います。ハンドラは周期ハンドラにより構成され、タイマの制御します。

ドラム式洗濯機モデルの検証環境の構築

給湯器の検証環境の構築

概要

本給湯器モデルでは、給湯器本体とユーザー操作パネルを有するリモコンによるシステムを想定しています。ZIPCのマルチシミュレーション機能により、複数のユニットにより構成されるシステムを検証する環境を実現しています。

給湯器の検証環境の構築

システム構成

ソフトウェア構成

本システムは、給湯器とリモコンの2つのシステムで構成されています。給湯器側は、1つのタスクと1つのハンドラにより構成されています。タスクは、Heaterタスクのみで構成され、主に燃焼処理、リモコンとの通信をおこないます。ハンドラは、監視タイマで構成され、各デバイスの異常チェックや、動作状態の通知を行います。リモコン側は、1つのタスクで構成されています。タスクはRemoteタスクのみで構成され、ユーザーからの操作受付、給湯器との通信を行います。

給湯器の検証環境の構築

セキュリティカメラ検証環境の構築

概要

セキュリティカメラは、センサ機器を1つ以上有し、主に防犯・セキュリティを目的として様々な建物で使用されています。近年では、個人住宅にも普及しています。本センサカメラモデルでは、一般的に個人住宅で使用され、ネットーワーク上からユーザが遠隔操作できるセキュリティカメラを想定しています。人感(動体)センサ、赤外線投光器、照明の動作をZIPCの状態遷移表により記述し、検証できる環境を実現しています。

セキュリティカメラ検証環境の構築

システム構成

ソフトウェア構成

本システムは、それぞれの機器が電源以外の他機器からの影響を受けずに動作するため、複数のタスクで構成されています。 タスクは、制御タスク(電源、カメラ、赤外線、ライト、センサ点灯、センサ、入力、通知、出力)と外部機器、Webブラウザから構成されています。 電源制御タスクは、各機器(カメラ本体、赤外線投光器、ライト、人感センサ)への電力供給を制御します。カメラ制御タスクは、カメラの撮影情報を外部機器(外部接続モニタ等)に送信します。赤外線制御タスクは、夜間撮影用の赤外線投光器を制御します。ライト制御タスクは、照明機器の動作を制御します。センサ点灯制御タスクは、人感センサからのセンサ検知を受け取り、自動的に照明を点灯および消灯させます。センサ制御タスクは、人感センサの動作制御およびセンサ検知を、センサ点灯制御タスクおよび通知制御タスクに送信します。入力制御タスクは、Webブラウザからのユーザ操作を受け取り、各制御タスクに動作命令を送信します。通信制御タスクは、各制御タスクからの状態とセンサ検知を受け取り、出力制御および外部機器に送信します。出力制御は、通知制御からの情報をWebブラウザに送信します。 Webブラウザタスクは、出力制御タスクからの情報をWebブラウザ上に表示します。また、各制御タスクへの命令を送信するボタン等のGUIを有します。 外部機器には、外部モニタ、録画用HDD、ドアフォン等があります。

セキュリティカメラ検証環境の構築

ルームエアコン検証環境の構築

概要

ルームエアコンは、個人住宅から公共施設など様々な場所に設置されています。近年のルームエアコンには、従来の温度調節だけに限らず様々な機能が追加されています。その中で代表的な機能に省エネを目的としたエコ運転があります。エコ運転とは人感センサを使用し、人を感知することで風向の調節や、人の反応がなくなり一定時間経過すると自動で運転停止を行う機能です。その他に、入/切タイマーや自動フィルター掃除などの機能を持ったルームエアコンもあります。 本ルームエアコンでは、一般的に個人住宅で使用され、リモコン操作で動作する家庭用ルームエアコンを想定しています。人感センサ、運転状態、風量などをZIPCの状態遷移表により記述し、検証できる環境を実現しています。

ルームエアコン検証環境の構築

ルームエアコン検証環境の構築

システム構成

ソフトウェア構成

本システムは、メイン制御(電源、運転管理、風向管理、風量管理、エコ運転管理、エラー管理)、受信タスク、出力制御、タイマー管理、各デバイス(人感センサ、ファンモーター、ルーバー、リモコン)から構成されています。 受信タスクは、リモコンからユーザ操作を受信し、メイン制御タスク、タイマー管理タスクへと命令を送信します。メイン制御タスクでは受信タスクからの命令を受信し、各運転管理(電源管理、運転管理、風向管理、風量管理、エコ運転管理)へ渡されます。電源管理は、ルームエアコン本体の電源を制御します。運転管理は、運転の切り替え(冷房、暖房、除湿、換気、送風)を制御します。風向管理は、ルームエアコンからの送風方向を制御します。風量管理は、ルームエアコンからの送風量を制御します。エコ運転管理は、エコ運転の開始、停止を制御します。エラー管理は、各エラー(本体、センサ、タイマー)が発生した場合、それぞれへエラー通知の制御をします。タイマー管理タスクは受信タスクとエラー管理からの命令を受信します。また、タイマー管理で入/切タイマーがONになるとその通知を電源管理に命令を送信します。出力制御タスクは、メイン制御での処理結果を受信し、人感センサ、ファンモーター、ルーバーのそれぞれへ操作は送信します。

ルームエアコン検証環境の構築

ドアホンの検証環境の構築

概要

本ドアホンモデルでは、ドアホン親機と玄関子機、火災報知機、センサーカメラによるシステムを想定しています。ZIPCのマルチシミュレーション機能+Drawrialにより、画面制御を有し複数のユニットにより構成されるシステムを検証する環境を実現しています。

ルームエアコン検証環境の構築

システム構成

ソフトウェア構成

本システムはドアホン親機、玄関子機、センサーカメラ、火災報知機から構成されています。 それぞれの機能はタスクで実現しており、時間要件は周期ハンドラを利用して実現しています。

ルームエアコン検証環境の構築

Challenge to embedded software development problem

ZIPC V10

各種製品アップデート及び関連ファイル

各種プログラム、資料のダウンロード一覧です。

ZIPC V10
ZIPC V10

導入実績 No.1を獲得し続ける
状態モデリングCASEツールの決定版

ZIPC

※以下のアップデートファイルをご希望の方は、こちらからお問い合わせください。
● ZIPC2001 サービスパック5 (SP5)
● ZIPC 2000 サービスパック2(SP2)

ZIPC Reader

※以下のアップデートファイルをご希望の方は、こちらからお問い合わせください。
● ZIPC Reader 2001 サービスパック4a (SP4a)
● ZIPC Reader 2000

※ZIPC Reader のライセンスについて

ZIPC Reader は、業務上使用及び個人使用を問わず、ご使用頂けるフリーソフトウェアです。但し、著作権は、株式会社NTTデータ オートモビリジェンス研究所にございますので、第三者への譲渡は、許可されておりません。

ツール

ZIPC FAMILY

CATS ZIPC

『ZIPC WATCHERS』

Vol.21
Vol.20
Vol.19
Vol.18
Vol.17
Vol.16
Vol.15
Vol.14
Vol.13
Vol.12
Vol.11
Vol.10
Vol.09
Vol.08
Vol.07
Vol.06
Vol.05
Vol.04
Vol.03
Vol.02
Vol.01

CONTACT

導入に関する質問やご相談、サポートに関することなど、まずはお気軽にご相談ください。