ソフトウェア設計における状態管理

ソフトウェア設計における大きなテーマである状態と状態管理についてまとめる.

いわゆるStatusと呼ばれるもの.

📝状態(計算機科学)

計算機科学における状態とは, 必要とされる計算の途中結果を含む, 値の時系列.

状態の導入によって, プログラムに時間の概念を与える.

📝状態変数

プログラムで状態遷移を表現する最も簡単な方法は, 変数に意味のある状態を定義して保存して管理する方法.

📝フラグ

flag. 最もシンプルな状態変数は, 俗にフラグと呼ばれるもの.

状態はon/offの2つ. これはbooleanの値(true/false)で表現することができる.

おそらく元々は回路設計だったりハードウェアレジスタから組込み開発での変数名になったのかと.

📝ステートマシン

状態変数が増えてくると, 複雑な判定条件でバグを生みやすくなっていく. そこでうまく状態変数を管理する方法としてステートマシンが用いられる.

see more: 📝ステートマシン(FSM)

🔖状態管理ライブラリ

状態管理Insights

そもそもシステムとコンポーネントとは

システムはそもそもアプリケーションが長い間起動しているときに必要となる考え. スクリプトやユーティリティの実行では必要ないのだ. それらは処理の終了がプログラムの終了でありリソースの開放である.

バックグラウンド実行をし続ける部分で構成されるアプリケーション, その部分が依存関係にあり初期化時に関係を構築するもの, これがシステム.

システム構築する部品=コンポーネントは単純化すれば, On/Offの操作によるStatefulなObjectである.

ref: Systems in Clojure

ステートマシンの文脈におけるstateと一般的なstatusの違いは?