2014年4月30日水曜日

Graphviz dotを使ってプロジェクトの関係図を作る

ちょっと思うことがあって、ここ数年のプロジェクトの関係をGraphviz dotを使って整理してみました。
青がハードウェア、黄はミドルウェア、緑はソフトウェアです。

ざっくり言うとmbedがここ数年の活動の起源になっていたのかな?と思います。


NXPのプロセッサが搭載されたBlackTankなるものを設計し、ツールやミドルウェアを整備したくなって、ここから「車輪の再開発沼」に突入しました。そして、Blackfinで「高価なツールを買わないとフラッシュに書けないですって!」と、フラッシュライターの開発が始まりました。まさに「ツール開発大好き」な人の典型的な感じです。しまいには、取扱説明書の作成に便利なLCD Toolとか、「誰が使うんだ!」と思わずツッコミを入れたくなります。

こんな感じで振り返ったのも、そろそろ違うことをやりたくなってきたからなのですが、一体何をやるのかは・・・まだ考えていません。

この関係図は以下のコードから生成しました。

digraph projects {

  graph [label = "Projects"];

  // Hardware Platform
  "mbed" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "LPCXpresso" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "LPCXpresso Clock" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "BlackTank" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "BlueTank" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "ACB-BF592" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "TUNA-CAN" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "KOZOS EXPBRD" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];
  "LPC800 Mini Board" [shape=circle, style=filled, color="#feeeee", fillcolor=blue, fontcolor=white];

  // Firmware Solution
  "NT-Shell" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "NT-Monitor" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "NT-Logger" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "NT-Basic" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "tinybmpio" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "tinywavio" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];
  "UOS-LPC800" [shape=hexagon, style=filled, color="#feeeee", fillcolor=yellow, fontcolor=black];

  // Software Solution
  "Blackfin BlueBoot" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];
  "Blackfin FastFlash" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];
  "Blackfin MiniConfig" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];
  "LCD Tool" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];
  "kz_h8write" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];
  "kz_xmodem" [shape=box, style=filled, color="#feeeee", fillcolor=green, fontcolor=black];

  // The relationship
  "mbed" -> "LPCXpresso" -> "LPCXpresso Clock";
  "mbed" -> "LPC800 Mini Board" -> "UOS-LPC800";
  "BlackTank" -> "BlueTank";
  "BlackTank" -> "NT-Shell";
  "BlackTank" -> "tinybmpio";
  "LPCXpresso" -> "BlackTank";
  "tinybmpio" -> "tinywavio";
  "NT-Shell" -> "NT-Monitor";
  "NT-Shell" -> "NT-Logger";
  "NT-Shell" -> "NT-Basic";
  "NT-Shell" -> "Blackfin BlueBoot";
  "NT-Shell" -> "KOZOS EXPBRD";
  "NT-Shell" -> "BlueTank";
  "BlueTank" -> "LCD Tool";
  "ACB-BF592" -> "BlueTank";
  "ACB-BF592" -> "Blackfin BlueBoot";
  "Blackfin BlueBoot" -> "Blackfin MiniConfig";
  "Blackfin BlueBoot" -> "BlueTank";
  "Blackfin BlueBoot" -> "ACB-BF592";
  "Blackfin BlueBoot" -> "TUNA-CAN";
  "Blackfin MiniConfig" -> "Blackfin FastFlash";
  "kz_h8write" -> "kz_xmodem";
  "NT-Basic" -> "KOZOS EXPBRD";
  "kz_h8write" -> "KOZOS EXPBRD";
  "kz_xmodem" -> "KOZOS EXPBRD";
}

0 件のコメント:

コメントを投稿