権限は要件か?

画面設計とか外部設計とか、もうやめようよにおいて

  • 「権限」「ステータス」など、システム内部の話がでている。→明らかに実装と要件とを勘違いしている。

と書いたら「権限って要件じゃないの?」という問い合わせをいくつかいただいた。

できるだけ簡単・簡素に考えよう

例えば「水泳選手として、指定した水泳種目の記録を折れ線グラフで見ることができる」というストーリがあったとする。*1

ここで「水泳選手を特定するために認証を実装する必要がある」と考えちゃう時点で、余分なことを考えちゃっている、と言ってよい。

極端な話、マイケル・フェルプス専用の端末を用意し、彼しか入れない部屋にそれを設置すれば、認証の実装は不要なのである。

「そんなのインチキ」と思うかもしれない。

でも、実際に開発する場合には認証もへったくれもなしで実装・テストしておいて、後から権限や認証を実装するほうが、開発もテストもすっきりする...少なくとも自分の経験ではそうなっている。

権限や認証はRole Based Access Controlなんていうパターンがあるでしょ。RailsだとControllerのbefore_filterでちょろっと書けばオッケー。Javaな人はAOPだかなんかでやればいいんでないの?

実装上の依存性を最初から考えるからややこしくなる

先に設計して後から実装する、という昔ながらの考え方に慣れちゃうと、こういう「共通処理」はあらかじめ括りだされ、先に開発されていなければならない、と思いがちである。

必然的に、「ある要件の向こう側にどんな実装が必要か」を深く考えることになっちゃう。で、要件がどんどん広がっていく。

でも、こういう「共通処理」は後から括りだしたり、追加したりできるんだな。実装技術の進化により、そういう技は昔よりは遥かに容易になった。

もちろん、自動化されたテストをちゃんと整備しておく必要はあるけどね。

*1:このストーリ例は「アジャイルな見積りと計画づくり」から頂いた