ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

クラス合成とタスク合成

昔、組み込みやっていて組み込み系の設計技法については多少知っているいるけど、その中の一つにタスク合成という手法がある。具体的にはリアルタイムOSでの設計ではタスクを分ける事によって並列処理を行なうが、逆にタスクを分けすぎると各タスクの構造化は促進される一方、タスクのスイッチッングが頻発してオーバーヘッドが起きるためだ。

以下の基準に従って結合して行く。

  • 時間的な結合

  • シーケンシャルな処理の結合

  • コントロールな結合

  • 機能による結合

一方、クラス合成はどうだろう。単一責務の原則や今流行のスモールオブジェクトの基準に従えばできるだけ分けた方がいいんだろう。

合成する基準を自分なりに考えてみた。

  • オブジェクト(プリミティブ変数)間のやりとりが煩雑になる。所謂カプセル化が破られている状態。逆にこの辺をどうするかが振るまい割当のコツかな?

  • システムの設定値等、分かれれていても問題ないがまとめていた方が何気に管理し易い。

  • 関連するユーテリィティクラス等

  • メモリやオブジェクトの生成処理がオーバーヘッドになる。

この辺をタスク合成みたいにシステマティックに検討する手法を編み出せば設計が楽になるかも?