新人技術者のためのロジカル・シンキング入門(2)

――プログラミングにおける良いデータ構造

冴木元

ここでは,組み込みソフトウェアにおけるデータ構造とその管理方法について解説する.どのようなデータ構造をとるかをシステム開発の早い段階で決めておくことで,保守性の高いプログラムを設計できる.指針を立てるためには,自分が設計するシステム,あるいは機能ブロックがどのような性質のデータを扱うのか,プログラミング言語で実装するにはどの種類の変数(外部変数,ローカル変数,テーブルなど)を使えばよいのかを十分に検討することがたいせつである.

(編集部)

● どこもかしこも外部変数

 Bさんはプロジェクトに参加するにあたって,ソース・コードを資料として渡されていました.「どれどれ」と思いながらプログラムを読み進めたBさんは,まもなく頭を抱えることになります.外部変数と思われる変数があちこちに散らばっていて,関数の挙動が読みにくかったからです.

 外部変数であるということは,ソース・コードのどこからでもリード/ライトが可能ということです.そのため,これらのソース・コードをデバッグしようとすると,ソース・コードの中にかたっぱしからgrep 注1をかけて,ソース・コードのどこからのアクセスが最初かを特定しなければなりません.

注1:特定文字列の照合(パターン・マッチング)を行うコマンド.

 立ち上げ時からこのプロジェクトを率いているベテランSEのPさんにこのことを話すと,「そのとおりなんだ.若い連中は開発の基本がわかっていないよね.もう一度基本に立ち返って開発を立て直すためにレビューが必要なんだ」とのことでした.

 でもよく考えてみると,Pさんがそれなりに早い段階で方針を定めていれば,ソース・レビューを行う以前に,こういうソース・コードは生まれなかったのではないでしょうか….「Pさんに評論家以上の役割を期待するのは無理かな」と,Bさんはふとため息を漏らしてしまうのでした.

 これからBさんが担当する機能ブロックは,既存のコードを多数流用する必要があります.もし開発の切れ目で時間がある程度とれるのであれば,なんとか保守性を高めたソース記述にしたいのですが,どうすればよいのでしょうか?

【1】外部変数の役割とは

【2】外部変数に対する解決策

【3】DSPソフト開発のデータ管理方針

【4】自分のブロックが原因かどうかを判定

Copyright 2007 CQ Publishing Co.,Ltd.


Webmaster@kumikomi.net