30代からの再勉強日記(ビジネス系/IT系の一般論の理屈を考えてみる)

徐々に、新たなタスクを起こし任せる側になりました。将来検討のためにも、一般論やセオリーを勉強・考察し外部へ共有する事で学びを深めたいと思います。皆さんにも役立つ所があれば幸いです。※最近ミッション変更となり、更新頻度落が落ちます。

【IT勉強】 ソフトのバグがテスト工程で潰し切れない理由(テストはバグを見付けるだけ)

 ソフトのバグを出さないようにと周りから言われますし、私もいうと思いますが・・・現実的には難しいと言われますよね。無名ベンダどころか、超有名で実力もあるGAFAレベルでもバグはあります。バグが混在する原因や理由はいろいろ異なると思いますが、テスト工程で何で見つけきれないのか、整理してみました。

 

■備忘メモ

JSTQB  http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018.J02.pdf (P17より)

 ●テストの7原則

     1.テストは欠陥があることは示せるが、欠陥がないことは示せない

       →ある条件下においてバグがないと証明する事が限界。

  負荷状態、ハード条件、各アプリのバージョン、入力条件なら正常でしたなど。

 

     2.全数テストは不可能

  →現実的に入力される情報が無数にあるので現実的ではない。

   漢字、数字、半角、画像などなど、バリエーションが無数にある。   

 

     3.早期テストで時間とコストを節約

  →実装や結合が進んでからの修正は影響範囲が広くなるので早期に修正すべし。

 

   4.欠陥の偏在

       →特定の部分にバグが集中する傾向がある。

   もともと複雑な処理部分や経験が薄い人物によるコーディングなど。

 

      5.殺虫剤のパラドックスにご用心

  →同じテストを繰り返すと、最終的にそのテストで新たなバグは見つからなくなる。テスト条件を変える事が必要。

 

      6.テストは状況次第

  →システムの社会やビジネス影響によって変えるべき。

   生命にかかわるようなシステムと社内に閉じるシステムで同じテストは不要。

 

      7.「バグゼロ」の落とし穴

  →バグゼロは困難かつ、仮に修正や改良を加えたとした場合に、他の満たすべき機能や非機能(処理時間等)が使いにくければ本末転倒になる。

   ある処理が時間かかりすぎて実用に足らないだと使われないソフトになる。

 

 

■Tips

 バグがテスト工程で、「ゼロ」や「著しく低い」場合は、テスト自体が甘い可能性があるとの指摘も散見されました。進捗報告を受ける際に、バグがほぼないので順調ですと言われた際は、テスト自体は大丈夫ですか?と一つ確認するのもいいかなと思いました。とはいえ、今度はバグばかりです、なんて言われたらそもそもソフトの品質が悪いのかとなるので、システム開発は難しいですね。

 誠実な対応もらえるとして、他のシステムと比べてバグは明らかに多い・少ないですかと?比較して判断していくのが1つ回答なんですかね。

 

【IT勉強】 クラウド移行に逆らう観点(オンプレの方が安いと反論してみたい)

 今の世の中、オンプレよりクラウドの方がいいだろうとの前提で話が進む時があり、捻くれてる所がある私は本当にそうかと思う部分があり、「あえて恣意的」に反対材料を集めてみました。

 

■オンプレの方が安い事例

 ●クラウドが安く理由は、需要に応じてリソース量を流動的に変化できるため。

  →長期的に利用する場合は、オンプレの方が安いとの事。

 

xtech.nikkei.com

 

 ●DeNAの事例より

Web+DB PLUS (P72)をベースに言葉短くまとめてみました。

 クラウドはサーバを使用した分だけコストが発生し、その単価はオンプレミスより高い。課金体系はわかりやすい反面、サーバのシャットダウン漏れがコスト増に直結するなど、オンプレミスとは異なる注意が必要。
 DeNAはオンプレミスで約3,000 台のサーバを運用しており、サーバのスペックや構成を変えずにクラウドに移行した場合のコストを試算したところ、約3倍に増えることがわかりました。

 理由は、同一スペックのサーバの大量購入で調達価格を下げたり、減価償却を終えたサーバを使い続けたりしてオンプレミスのコストを抑えているのでクラウドとのコスト差は大きくなっているため。

 

■まとめ

 ここから、ハードEOL対応からの脱却など保守の手間も考えるべきなのだと思いますが、シャットダウンとかをしなく、年単位の長期で使うサーバの購入費とクラウドのサーバ利用費だけを比較するなら、オンプレにも利があるみたいですね。

 ただ、上記2社とも自社でサーバ管理を十分できる高スキル会社だと思うので、本業がサーバ管理とは別の企業は、クラウド利用した方がいいのかもしれないと納得しました。

【IT勉強】 保守契約の金額を少しでも納得するために(相場と単金の調査)

 保守契約が安くない金額で毎年かかり続けるのがつらいと思っております。いずれ、私がその保守契約を結ぶ、または承認する際にむけて調査しました。

 

■保守契約の相場

 日経と大塚商会さんのサイトとマッチできたので、下の価格感でだいたいあうのかなと思います。

 ●ハード価格の10%~15%

 

 ●ソフト価格(ライセンス価格)の17%~22%

  ただし、条件には注意すべき。

  例として、故障連絡からの駆け付け時間や対応作業には気をつけるべき。

  (各社毎に差があるので確認が必要)

 

 

xtech.nikkei.com

 

www.otsuka-shokai.co.jp

 

 ●保守人材の単金

 JUASと呼ばれる協会の資料から、

 保守人材の単金は80万~110万

 https://juas.or.jp/cms/media/2020/03/19swm_pr.pdf (P65)

 ※前にしらべた技術者単金(90万~150万)より低めなのは感覚的にはあいますね。

  保守も難しいと思いますが、システム会社において開発が花形だと思われますので。

 

 

■Tips

  購入したベンダ以外の会社による第三者保守の方法もあるみたいですね。

比較的単純な作業ですむ装置の保守(ここではネットワーク機器(ルータやSW))を任せるようです。サーバとはやはり設定や立ち上げ方法のクセもあるんでしょうか。

 なので、簡単に復旧できそうなのは第三者保守を活用。そうではないのは元のベンダ。ただし、複雑な故障が起きた場合に切り分けが面倒になるのは厄介かもしれませんね。システム導入時に入れた会社の範囲はハード/ソフトも全部責任をもって保守してくれと言いやすいという心です・・・

 自社のスキルと価格との相談ですかね、ここケチってサービス提供に影響でると高くつくので。

xtech.nikkei.com

【経営勉強】 取引先ベンダの信用調査(取引先の妥当性説明にむけて)

 予算確保とあわせて、契約予定の会社は潰れないか?という観点も重要であり、「会計上」信用できる会社をどうか見つけるか、頭の整理をしました。開発前もそうですし、その後の保守する会社がいませんというのも怖いので。

 そして結論は面白みがない話ですが、信用調査会社を使う方が早く確実ですね。

 ※勿論、突発的なイレギュラーで破産の可能性もありえますが。

■調査方法

 ●信用調査会社の活用

 企業の状態を調査する信用調査会社があり、「帝国データバンク」と「東京商工リサーチ」の2社が非常に大きく、ほぼ寡占状態。

 -帝国データバンク:60%

 -東京商工リサーチ:30%

  何点ならよいかはあくまで目安となりますが、

 -帝国データバンクなら50点以上で「普通」

 ー東京商工リサーチなら51点以上で「普通」 

 とされているみたいですね。

 いろいろサイトみる限り、プロがしっかりと調査している所を使うべきで、本業のリソースを減らすのは本末転倒だという表現が見受けられその通りかと思いました。

 とはいえ、自分で何かできる方法があるのも知るべきですし、もう少し調べました。

 

 ●決算書のチェック(官報の決算公知も大事)

 上場企業なら、決算書がすぐに入手できるのでそれで確認

 非上場企業でも、インターネット版官報の「決算公知」を見れば情報あり。

 ※公開していない会社は何か理由がある(マイナス)と考えるべき

 

premium.toyokeizai.net

 

 ●他のテクニック

 お金の管理する社長・経理や財務部長の動き

  ー経理や財務部長が突然退職ならあやしい。

  -支払日にいないのもおかしい(資金繰りに走っている可能性有)

 SNS上の発信

  -順調なら頃との差分

  -ぽろっとした本音投稿がたまに見つかる。

 極端に、現金前払いを尊ぶ所(現金一括キャンペーン)

premium.toyokeizai.net

 

■まとめ

 技術力が大丈夫かという前提もありますが、契約先の会社として潰れるとシステム開発どころではなくなるので、調べてみました。システム完成前に気にするのもそうですが、システムの保守も絶対に必要なので開発会社が潰れると非常に困ります。自分が説明または承認する時に、この目線も持ちたいと思います。

■Tips

 会社ではないですが、信用調査系を調べていると個人の信用スコアのニュースも多いですね。確かに、学習データとして、支払った金額や期間をもとにAIに判断させれば、この人はこのくらいの金額は払える財力はあるとか傾向がわかりそうですね。

【IT勉強】 ハードとソフトの故障やエラーの傾向(バスタブ曲線とのこぎり曲線)

 運用について一度考えましたが、そもそもシステムにおけるハードやソフトの故障やエラーはどんな傾向にあるのか考えてみました。保守契約や運用体制についての考えやベンダから更改の連絡きた時に、一度私なりの案を考えられるように調査してみました。

 

■備忘メモ

 ・ハード故障はバスタブ曲線

  →最初は故障しやすく、中盤で安定し、終盤は故障しやすくなっていく。

 ・ソフトエラーはのこぎり曲線

  →最初はエラーが多くでて、中盤で安定し、終盤はまたエラーが起きては直して、起きては直しての繰り返し。ハードと異なり摩耗はないが、不具合修正で手をいれた部分が、また新たなバグ土壌となり、初期の一番検討していたメンバも抜けてコード管理が難しくなり、徐々にソフト品質が下がる事によるエラーが増えていく事。

 

 ●バスタブ曲線

 時間経過に伴う故障率の変化から、下記の3つに分類される。

 ー初期故障期間
 主に設計や製造上の欠陥により、導入してから早期に故障が発生する。

 故障が多く発生する傾向であるが、時間経過によって故障率が低くなっていく。 


 ー偶発故障期間
 突発的事象による故障。安定期間であり、3つの期間では故障率が低い。

 ー摩耗故障期間

 製品や部品の寿命によって徐々に故障率が高くなる。

 最終的には全て壊れるため、その前に新装置へ交換および更改する。

 

●のこぎり曲線

 流石の日経クロステック、ソフトのエラーや不具合について、なかなか情報がなかったのですが、いい記事が残ってました。個人的に納得感もあり、紹介します。

 

 ー不安定期

  稼働初期の潰し切れていなかったバグによるエラーが多く発生する。

 

 ー安定期

  初期エラーを克服し、突発的なエラー ※珍しいバグ起因のエラーなど。

 

 ー保守困難期

  残っていた潜在バグや改修した部分のバグによる、エラーが発生する。大きな要因として、時間経過によるメンバ変化に伴うコード品質の低下。

 システム検討・導入を実施、エラーも多い不安定期を乗り越えたメンバは徐々に抜けていくと、やはりその現場はコード管理が難しくなっていき品質は下がる。(エラーが発生しやすくなっていく)

イメージは下図です。

ソフトのエラー発生率

保守開発におけるノコギリ曲線

引用)日経システム2011.2

■まとめ

 経年劣化や摩耗がないソフトも、エラーが起こりやすくなる傾向を「のこぎり曲線」でまとめてもらい納得感を得られました。勿論、他のOS/ソフトのバージョン変更等による相性、ハード劣化によるソフトのエラーも原因にあるかとは思うので単純化はできないとも思ってます。ただ、じゃあ来年度の予算や体制どうするといった時の指針を考える上で、不具合はこういう傾向か、なら保守契約が必要かななど、一つ理屈をもった上で計画たてたいなと~と思います。

【IT勉強】 予算確保にむけた発注者側からの要件定義のまとめ

 システムの要件定義は難しいと投げたい所ですが、予算取り等でだいたいの金額間をベンダ側から情報をえるためには、発注者側が考えた、たたき台は必要だと思うので頭の整理をしてみました。

 

■備忘メモ

 細かい要件定義の前に、【背景と目的】を整理する事が一番大事。

 そこから、下記の流れになるがよさそう

 ーシステム導入の背景と目的

 ー理想とする業務フロー(現行との比較がある)

 ーシステムの要件定義(必要とする機能は何か、どのくらいの性能を求めるか)

 

 ●必要とする機能は何か、機能要件のまとめ方

 こちらは対象とするシステムを使う担当部門に、インタビューして固めていく。

 その上で主に6つの領域毎にざっくりイメージがあるといい。

 ー画面

 ーシステムのふるまい

 ーデータモデル

 ー帳票

 ーバッチ処理

 ー外部インタフェース

 

https://www.ipa.go.jp/sec/old/users/seminar/seminar_tokyo_20150805-02.pdf

 

 ●どのくらいの性能か、抜けがちな非機能要件の決め方

 機能要件以外に必要となる条件。信頼性や応答速度など。

 ここに関してはIPAの非機能要求グレードというものがあり、これを参考にすべき。

 大きく6つあり、また詳細に各項目が規定されている。

 ー可用性:システムの信頼性をどうするのか。中断をどの程度許容するか。

 ー性能・拡張性:どのくらいの性能か、拡張性は必要か。

 ー運用・保守性:運用体制・時間やバックアップやメンテナンスはどうするか。

 ー移行性:現行からどう移行するか。将来の移行性を考慮するか。

 ーセキュリティ:セキュリティはどうするか。

 ー環境・エコロジー:耐震や法律制度の準拠など。

 

www.ipa.go.jp

 また、非機能要件の現実的な目標数値(故障なしはできないので)を、ユーザのシステム用途別に出してくれている。例えば、信頼性の部分は、このシステムが止まっても問題ない、ビジネス影響あり、社会生活に影響あり、でそれぞれの目標数値が記載されてます。手探りでやるよりも現実的ですかね。

■結論

 特効薬的な考えはないですが、一旦は上記の事を踏まえて可能な限り、システム開発の要求を具体的にしていき、ベンダと協力して進めていく以外の解答はないですかね。

 プロのベンダ側にはきっと類似事例の案件があるはずですし、結局素人ながらの要件定義も手戻りにもなると思うので、ある程度目途をつけた上で、ベンダからの情報に期待するが大人のやり方なのかと思います。

■Tips

 現行踏襲とは記載してはならない、それを●●機能で▲▲秒以内で実行するなど、具体的に記載する。

【IT勉強】 開発コストの見積もり交渉にむけて(技術者の単金・人月から)

 先日より、継続してIT勉強中です。新システムの開発コストや予算はどの程度か、私なりにまとめてみました。IT業界でずっと話題となる問題であり、正解の答えなどないと理解しつつ、とはいえ毎年の予算どりや対ベンダとの交渉時に、叩き台のベースとなる値がないと何も進まないので、仮の値を私なりに出せるようになっておきたいからです。

 結論は、技術者単金は80万~150万の間が平均的な値だという所ですかね。

 ※見積もり違いで、怒られても心の中では考え抜いた結論だし、仕方ないと思えるよう・・・怒られるという発想がすでにサラリーマンですね。

 

■備忘メモ

 主に3つの見積もり方法がある。

 ー類推見積もり

  →類似のシステム開発の経験から推定する手法

   同業種や同業務のシステムの開発経験があれば、より精度上がる。

 ー係数モデル見積もり

  →外部入力やインタフェース等、機能毎に分解しつつ、見積もりを行う。

   機能毎に難易度をつけて必要な全体コストを算出する。

 ー工数見積もり

  →必要と思われる作業工数を出して、単価で計算する。

 

 また、忘れてはならないのは、システム要件がきれいにかたまならいと、正確な金額の見積もりは出せない。しかし、予算取りや、実開発を進めるにあたって金額なしで契約もできないので、やはり要件定義が固まる前に、何か値としての金額は必要。

 

 ●業界で良くないとされつつ、わかりやすい人月と単金による計算

 正確な要件定義ができないが金額を弾くには、必要期間と技術者の単金で計算するのが、「万人にわかりやすい」ため、使われるようです。

 ※私も結局は使ってますし、決裁者なら納得しやすいですよね・・・

 

 ●単金 ※有料サービスなのでぼかします。

 ー積算資料による単金(技術者のレベルで4段階)

  大企業という枠だと、PMこなせる方が約150万、PGが約90万。

 ー日経クロステックの調査だと、ざっくり100万が平均

  (会社によって、80万~200万)

  ※注2003年ですので、参考どまりですね。

 

xtech.nikkei.com

 

 ーJUASによる単金計算

  これも2005年ですが、90万円とありますね。

xtech.nikkei.com

 

 あまりに特殊なシステムでなければ、有名なSIERなら対応できるはずでお互い競合として意識している(はず)。

 価格戦略を考えれば、競合価格と業界慣習価格を意識するはずなので、この平均的な値から大きくズレる事もないと考えてるのが妥当かと思います。

 

 ●まとめ

 当たり前の結論だと思いますが、私なりにあくまで予算取り用に数値を出すなら、

 ①類似サービスを導入した会社から情報をもらい、参考にする。

  (グループ会社等で機密情報のやりとりできる前提)

  ※ベンダも開発実績あるなら、その値はある程度信用する。

 ②ざっくりながらも、ベンダにイメージを伝えて、

  必要期間 × 人数で出してもらう。

  単金が平均的な値になっているかチェックする。

   ②-1別システム導入などで該当ベンダの単金把握をして乖離がないか確認。

   ②-2一般的な相場(80万~150万)内か確認。

 

 身もふたもない事言えば、要件洗い出してしっかりとベンダに見積もり出してもらう!、これ以上の正解はないと思いつつ、現実的には難しいと思うので、上の考えもこの場に残しておきたいと思います。

 

■メモ

 多段階契約という手法があり、1回の契約で全て対象とせず、分割して契約をする手法がある。上流工程で1契約、下流工程で1契約など。

 無難なんでしょうか、勤め人の立場からすると2回契約処理しなくてはならない理由や分割損などの説明が必要で、つらいですね。あまりに大規模開発なら、多段階という方法もあるという所をおぼえておくくらいにしようかと思います。