0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【形式手法】すごく分かりやすい資料があった

Last updated at Posted at 2020-01-05

すごく分かりやすい資料があった

 「フォーマルメソッド導入ガイダンス」をざっと読み流すつもりでしたが、それでもなかなかのボリューム感がありました。そろそろプログラム触ってみたいと思っていたところ、導入としてすごく分かりやすい資料を発見。作成日も新しい。知りたかったことが、ずばりとまとめられている。嬉しい。とっかかりの人は、この資料から入ると分かりやすいと思います。

 ほかにも良い資料・サイトをご存知の方がいらっしゃれば、教えていただければ幸いです。

やはり使いどころが難しい

 感想としては、形式手法を適用するコストはやはり高く、システム全体に適用するのは現実的ではなさそう。
効果的な箇所に絞って適用するのが良いと思いました。方向性としては、以下のような箇所でしょうか?

  • 制御・状態遷移が複雑で、多様な使われ方をするプログラム → 品質確保が難しそう
  • 品質リスクの大きいプログラム → 品質確保のコスパが高そう
  • 他のシステム・プログラムから共通して使用されるプログラム → 使用頻度が高く、品質確保のコスパが高そう
  • 他のプログラムとの境界が明確 → 定義しなければならないルールの範囲が明確

 具体的にいえば、以下のような箇所が良いという印象です。

  • フレームワーク
  • 共通部品
  • API

確かに、対象ドメインの知識が必要そう。ハードルが高い

 上記の資料のなかに、形式手法を認証制御に適用検証した事例がありました。
まさにこういう箇所が、適しているという感想です。

 認証制御は私も実装したことがありますが、制御が結構複雑です。全体の制御をきちんと理解して、神経をはりめぐらせていないと、いろんな落とし穴にはまってしまいます。
例えば、管理者が一人しかいない状況で、その管理者がパスワードを忘れるとシステム全体として詰んでしまいます(パスワードを再設定できるのは管理者だけだが、その管理者がいない)。
 こういった仕様バグを抽出するには、制御の全体が分かる人が頭の中で「困ったことが起こらないか」を考えていくしかありませんでした。うまくバグを抽出できるかはその人次第になります。チェックリスト等を作ったところで抽出することはできません。形式手法が適していそうです。

 これを形式手法で定義していくためには、まず「利用者がパスワードを忘れる」という状態を思いつく必要があります。システムの外側(人間側)にある状態なので、認証制御の開発・運用の経験がないと考慮がもれてしまいそうです。
「形式手法の適用には対象ドメインの知識が必要」というのは、こういうことなのかと腹に落ちました。ハードルが高い……。

いや、そろそろプログラムに触りたくね?

 と、感想ばっかり書いても仕方ないので、プログラムにもう触ります。
 でも仮説をもって技術に触れるのは、検証の観点も明確になっていいことだと思う……という言い訳。
 自分の妄想がどこまであっていたか、プログラムに触りながら答え合わせをしていきたいと思います。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?