ソフトウェア品質：「見える化」ではなく「見せる化」

# 第一者、第二者、第三者
ソフトウェアといっても、
自分で自分のために作ったソフトウェアと、
誰かから頼まれて作ったソフトウェアと、
市場に向けて出すソフトウェアで、
品質の測定方法も、測定項目も異なる。

それぞれに、無償の場合と有償の場合でも異なる。

||無償|有償|
|:--|:--|:--|
|1者|自分用|*1|
|2者|*2|見積もり|
|3者|OpenSource|Service, Package|

*1 自分用で有償というのはあまり考えられない。
しいていえば、給料をもらって仕事をしている人が、その給料をもらてちる時間に、自分用のソフトウェアを作っている場合が該当するかもしれない。
学校や、研究期間などで研究用のソフトウェアを作る場合である。
*2 は、学校などで研究の一環として学生に無償でソフトウェアを書いてもらう場合があるかもしれない。本人が自分用で作る場合もあれば、自分はこんなものはいらんけど先生がいるからいやいや作っている場合もあるかもしれない。

２者で有償の場合に、事前の見積もりがなく、出来高払いの場合もあるかもしれない。
系列会社で、決めた期間内に作れば、何人投入してもOKみたいな感じで、金額の見積もりをしないこともあるらしい。

３者向けでは、最初は自分用に作ったものが便利そうだから、２者向けに販売したり、３者向けに配布・販売をすることもある。
一度、配布・販売の手順が決まると、その後は最初から、市場向けの企画をたてることもある。

大事なのは、誰が、何のためにソフトウェアを作るのかが、明確な場合と、不明確なまま作り始めることが、これまでもいっぱいあったということを理解しているかどうかだ。

【やめとけ】となぜ言われるのか？：組み込みエンジニアの現実 タテプロ姫野
https://www.youtube.com/watch?v=mpPPTmY_jjE&list=PLxTMKJ0lqP8fqVKo1vog35aUbEx-XGHtC

上記動画では、自社向けと請負に分類している。
自社向けが、第三者に販売するもののソフトウェアであれば、表の３に分類できる。
自社内でしか動作さえないのであれば、表の１に分類できる。

自分向けに成功したソフトウェアを、第二者、第三者に販売することは、プログラマとしての経験ではよくある。

誰でもわかるVZエディタ。0から始める。
https://qiita.com/kaizen_nagoya/items/afe6c4cdccbfdd94baab

VZeditorは、c.mosさんが、自分用に作ったエディタを、EZエディタとして本にソースコード付きで販売し、その後、ヴィレッジセンターからパッケージソフトウェアとして販売したもの。
当初は、c.mosさん専用の設定や、VZエディタ専用の設定があった。その後、当時はやりだったMifesに似た設定ファイルを大野元久さんが作成し、同梱するようになった。

１者向けのソフトウェアが、３者向けのソフトウェアになるには、市場の同行、意見をうまく取り入れることが大事だとわかる。

# ソフトウェア品質
ソフトウェアの品質は、CPUの品質が測定できていないと、測ったことにならないかもしれない。
ソフトウェアの品質は、システムの中に組み込んで使う場合には、そのシステムの品質を測定する方法が確率していないと測れないかもしれない。

システムの品質　＝　ハードウェアの品質　＊　ソフトウェアの品質
システムの品質が、時間で測定するか、空間で測定するか、エネルギー（移動量・消費電力）で測定するかで、ソフトウェアの測定方法も異なる。

ソフトウェアには、静的解析というソフトウェアを動かさなくても予測できる空間的な品質測定方法がある。
それに対して、動的解析というソフトウェアを動かしてみる方法がある。例えば同時に入力があったときに値が不定になるハードウェアが存在するかどうかで、ソフトウェアの記述の品質の測定方法を考えることになる。
動的測定には、ある空間を確保したり、あるデータを検索したり、ある計算をしたりする時間が、一定ではなく確率分布に従う場合の測定がある。統計を取り、想定した確率モデルどおりに動いているかどうかで、想定内の動作であることが品質指標になる。

必要なのは、横顔（profile）で、どの品質測定にはどの値であったかの統計値を列記するとよい。同じソフトウェアを異なるハードウェアで動かしたり、異なる言語で記述しなおしたり、異なるＯＳで動かしたりして、比較して、必要な横顔の形で比較するのがシステム品質の見える化である。

同じＣＰＵ、同じＯＳ，同じ言語であっても、ライブラリが異なる場合を比較したり、エンジンベンチ・モータベンチの異なる時間間隔の表を使ったり、比較するのが見える化である。

ハードウェアの一定範囲に対して、同じソフトウェアが使えることも、ソフトウェア品質の一つの指標である。これは、いくつかの事業で、同じソフトウェアを使った場合と、それぞれのハードウェアに調整したソフトウェアを使った場合の、試験費用、保守費用、などを比較する。可搬性は見えるかの別の視点である。

ソフトウェアの万能の見える化の道具も既存の方法論もない。
Methodologyと言えるのは、システムの特徴を表す指標とその測定方法の集合を、うまく横顔(profile)として見せるだけである。「見える化」ではなく「見せる化」


品質(0)一覧
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

DoCAP（ドゥーキャップ）って何ですか？官(13)
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

プログラマにも読んでほしい「QC(2)検定にも役立つ！QCべからず集」OSEK(71) 統計(43) https://qiita.com/kaizen_nagoya/items/d8ada7b7fceafe2e5f0e
「QC(9)検定にも役立つ！QCべからず集」四分類と逆が真な事例案 統計(85) https://qiita.com/kaizen_nagoya/items/fb920fedc445e7fd1eb8
プログラマがQC(10)検定を受ける意味・価値・課題 統計(86) https://qiita.com/kaizen_nagoya/items/b03216eb6ab09eacc957

品質(8)の基礎　資料集(1) 有限修正 https://qiita.com/kaizen_nagoya/items/9dc46647f65e5aa0d37c
品質(11)の基礎　資料集(2) カイ２乗適合度検定 https://qiita.com/kaizen_nagoya/items/4ede6c50bc0c36f0d856
品質(13)の基礎 資料集(3)特性値 https://qiita.com/kaizen_nagoya/items/26e3cd8f41806f333f2c
品質(14)の基礎 資料集(4)相関分析・単回帰分析 https://qiita.com/kaizen_nagoya/items/7ac599dc5a4e37f503ac
品質(15)の基礎　資料集(5)管理図 https://qiita.com/kaizen_nagoya/items/346bdf625d05aaef63a2
品質(16)の基礎 資料集(6)実験計画法 https://qiita.com/kaizen_nagoya/items/1dcf9fe2db02e8add277
品質(17)の基礎　資料集(7)期待値 https://qiita.com/kaizen_nagoya/items/3244fac2488f44116690
品質(18)の基礎 資料集(8)標準偏差 https://qiita.com/kaizen_nagoya/items/c406bbddfd033e059e62
品質(19)の基礎　資料集(9) 散布図 https://qiita.com/kaizen_nagoya/items/6bbca2f3844c8ab4289d

ソフトウェア品質見える化。セキュリティの見える化。
時間領域、空間領域。消費電力。動力。