Together! 3行ラベリング、22本目のお題は何でしょうか! むむっ、これはシステム開発の上流工程の話題ですね!
■原文
「非機能」とは「機能」以外にシステムに要求されること、すなわち、
「どのように機能するか(How)」のことです。機能と非機能を問わず、
商品に求められる目玉となる要求をフィーチャー(特色)と呼ぶ人もいます。
一般的に非機能は「信頼性」「使用性」「性能(時間・資源)効率性」
「保守性」などを指します。例えば、駅の切符券売機に200円を入れて130円
のボタンを押したら130円の切符と70円のお釣りが出た(すなわち機能は
100%満足のいくものができた)としても、この処理に10分かかるとしたら
「性能(時間効率性)に問題あり」でしょう。だから「機能」に対する
要求だけでなく、「非機能」に対する要求もきちんと獲得してつくり込もう
(テストも十分実施しよう)ということです。■出典
事例とツールで学ぶHAYST法 ソフトウェアテストの考え方と上達のポイント (秋山浩一、201407)
これを最近新入社員に聞かれて、どう説明しようか困ったんですよね。ここに書いてあるような説明はできるんですけど、なにかもう一工夫できないかなと思いまして。何かヒントもらえませんか?
わかりました! じゃあまず前置きからいきますと、こういうことが言えますよね。
そうですね、だから原文でもその後で具体的にはこういうものがありますよ、という説明をつけてますよね。
はい、とはいえこれを列挙しただけだとたぶんイメージが湧かないんです。
おっしゃるとおりで・・・
こういうものは、全体構図を描いてあげたほうがいいんですよ。たとえば簡単な例で言うとこういうもの。
山、川、田んぼという「複数の要素」の違いを「見た目」で見せつつ、それらの「つながり」を、「山から流れてくる川の水で田んぼを作ります」という言葉で表現してますよね。非機能についても、「機能」を含む全体構図を描いてあげたいところです。
非機能、つまり信頼性、保守性などなどの概念と「機能」を含む全体構図・・・ですか?
そう言われてもすぐには発想が出てこないと思いますので、まずはここから行きましょう。「機能」を説明するときによく使われる単純なモデルにこういうのがありますよね。
これを少し改変します。たとえば「高速性」を処理開始から終了までの時間と捉えるとこんな書き方ができます。
あ、こんなちょっとしたことでいいんですか
そうですよ。でも、ちょっとした改変を重ねていくとスゴイことになるんです。
次に、「使用性」はちょっと名前を変えて「操作性」にしましょう。そのほうが一般的な用語ですので。で、これは「入力」の一部(「ボタン」の部分)と考えられますけど、お金とは分離して示しておきます。
「お金」と分離するのはなぜですか?
入力と出力を呼応させるためです。製造ラインに例えて言えば、「お金」は、出力の「商品とおつり」を作るための原材料のように見なせますよね。でも、「ボタン操作」は原材料ではなく、作業工程への製造指示にあたるものです。なので、別にしておくほうがいいです。
あ、そういう考え方、できますね、確かに・・・
機能を実現するための、装置(この場合は自動販売機)内部の仕組み、これを一般に「機構」と呼びますが、「保守性」というのは「機構」の保守のことを言うので、「機能」のハコの中に「機構」を描いてそこに「保守性」を関連づけます。
おおー
あとは一般に「資源効率」は通常「入力」の量に関する概念なので入力側に記載し、「信頼性」は通常「出力」の品質に関する概念なので出力側に記載するとこんなふうに書けますね。
そういえばそうですね・・・
というわけで、高速性も含めてまとめた最終形の一例がこちら。 「高速性」は当初、機能のハコの外に書きましたけど、中のほうがシンプルになりそうなので変更しました。 他にもいろいろな書き方がありますが、論理的にはこんな構図で整理できるはずです。
わーお! これならわかりそうです!
ちなみにこれはIDEF0(アイデフゼロ)という、アメリカ空軍が開発した機能モデリングのための手法をヒントにしています。IDEF0は「機能」に対して入力・出力・制御・機構を整理していく手法で、こんな図で表記します。
そうなんですね、これは知りませんでした。
日本ではあまり有名じゃないですからね。
IDEF0 を知っていれば、操作性は制御の部分、保守性は機構の部分だな、と見当がつくので今回のような発想が生まれるんですけど、知らないと難しいと思います。こんなふうに、知っていないと発想が出てこないものっていろいろありますので、自分でいい案が思いつかない時は人に聞いちゃった方がいいですよ。
聞いちゃっていいんですかねえ。
それが人類の進歩ってものです。車輪を再発明する必要は無いんです。先人の知恵はこき使いましょうよ。
人に聞いても、どのみち聞いただけじゃ使えるようにはなりませんし。二度三度と自分で使ってみてやっと使えるようになります。
でも、聞きさえすれば「あ、こんなやり方があるんだ」とわかって、その二度三度と試してみるチャンスがつかめますけど、聞かないとたいてい忙しいからそのまま忘れちゃうじゃないですか? そうすると結局進歩しないんですよ。聞いて自分で試してみる、それが大事です。
人に聞いても、どのみち聞いただけじゃ使えるようにはなりませんし。二度三度と自分で使ってみてやっと使えるようになります。
でも、聞きさえすれば「あ、こんなやり方があるんだ」とわかって、その二度三度と試してみるチャンスがつかめますけど、聞かないとたいてい忙しいからそのまま忘れちゃうじゃないですか? そうすると結局進歩しないんですよ。聞いて自分で試してみる、それが大事です。
なるほど! じゃあ、ガンガン聞きますので!
もちろんですとも!
ということで、まとめとしては 「複数の異なる要素が関連づく全体構図の可視化を目指そう」 ということでした!
ラベリングだけではイマイチピンと来ないときは、これが必要なことが多いです!
ラベリングだけではイマイチピンと来ないときは、これが必要なことが多いです!
ひとりではそれが難しいときは、一緒にやりましょう! Together! 3行ラベリング、です!
コメント