ワークプロダクトレビューの技術とプロセス ~レビュー技術・事例と標準化最新動向の紹介~

2ヶ月ほどまえに参加したセミナーについて、ブログってみました。

有料だったのでどうかなと思ったのですが、にしさんから許可(?)もらったので、掲載しちゃいます。

 

www.ipsj.or.jp

 

所感 

非常に費用対効果が高いセミナーでした。こんなセミナー、もうないんじゃないかなぁと思うほどの満足度の高さです。ありがとうございました。

 

森崎さんの講演で、「チェックリストは「やり方が」書かれていない。どうやってそれを確認するのか?が書かれていない。」というお話がありました。

社内でも、「ツール」を使った、そのツールが**です、という報告はあるが「どう使われたのか、使った目的は何か」というところに触れられていないことがあるのとリンクするなぁと思いました。手段・方法は、プロセス・目的と一緒にセットで情報を持っていないと意味がない。そう思いました。

 

細谷さんの講演では、グランドルールありき、チームビルディングありきの改善かもしれない、とおしゃっられていたことが印象的でした。

個人ではなくチームでルールを作り、自分たちで決めたことは守る、ということを厳しく貫いているところがおおきな成功要因なんだなぁ、と思います。

パネルディスカッションを見ることが一番の目的でした。ここだけで、もう本1冊分の価値があったのではないかなぁと思うような内容でした。「レビュー」と「テスト」って、似て非なるもの。そこを痛感するパネルでした。

 

開催概要

  • タイトル:ワークプロダクトレビューの技術とプロセス ~レビュー技術・事例と標準化最新動向の紹介~
  • 日時: 2017年 10月18日(水) 13:15~18:00
  • 会場: 機械振興会館 地下3階 研修1号室
  • 概要:

ソフトウェアの品質向上のため、要件定義書や設計書などワークプロダクトのレビューは重要です。2017年2月にISO/IEC 20246:2017 (ワークプロダクトレビュー)がレビュー技術やプロセスを定義する国際標準として発行されました。
 本セミナーでは、このISO/IEC 20246:2017発行を機会に、レビュー技術や事例、また標準化最新動向を紹介・解説します。まず、レビューの技術やプロセスについて一般的なものから最新情報など、また、産業界での適用事例を紹介します。さらに、ISO/IEC 20246:2017の解説を行います。最後に、パネルディスカッションを行い、レビュー技術の事例や国際標準の意見交換を行います。

 

 

●ソフトウェアプロダクトレビューの基礎と研究動向(森崎さん(名古屋大学))

ソフトウェアプロダクトレビューは実行可能なプログラムが存在しない時点でも実施できる欠陥検出技法です。本講演では、ソフトウェアプロダクトレビューの基礎と研究動向を紹介します。ソフトウェアプロダクトレビューの基礎として、目的、参加者の役割、欠陥の検出例を示し、ソフトウェアプロダクトレビューの原理を理解いただきます。次に、検出した欠陥を早期に修正することによって得られる欠陥の修正コストや欠陥の見逃しリスクの低減といった効果を解説します。最後に、これまで研究分野で議論されてきたソフトウェアプロダクトレビューの技法や技術を紹介した上で、近年注目を浴びているModern Code ReviewやArchitecture Tradeoff Analysis Methodを紹介します。

 

  • レビューは、ソースコードがない状態でも欠陥を検出できる。
  • だれがやっても同じようにできる必要がある。レビューは準備が大事。
  • レビューは、「どのような条件がそろうと、達成されるとやった意味がある、と思われるか」を考えよう。
  • テストの場合は、あまり属人性があると聞いたことがないけど、レビューは人のスキルに依存することが非常に多い。
  • レビューで、特殊なタイミングや競合、バッファオーバフローやセキュリティなどはレビュー時点で検出したほうが良い。⇒ 病気と一緒
  • チェックリストは「やり方が」書かれていない。どうやってそれを確認するのか?が書かれていない。
  • モダンコードレビューというものがグーグルで行われている。
  • 目的は協調であり、欠陥検出ではない。ペアプログラミングの代替手段となっている。

 

 

●狙いの明確化によるレビュー改善事例(細谷さん(三菱電機(株)))

ソフトウェア開発において、ドキュメントやコードのレビューは、品質向上のために重要な活動ですが、開発現場では、レビューに投入したコストに見合った効果が得られている実感がないという課題がありました。そこで、レビューで検出したい欠陥を明確化し狙いに合わせたレビューの実施時期、実施方法を定めることにより、開発現場が効果を実感できるレビューに改善しました。本セッションでは、レビュー観点の分類、レビュー技法の使い分け、実施シナリオなど改善活動の中で定めた実施方法について紹介します。

  •  産学連携して行ったカイゼンで、Melcoグループ内のガイドラインとして作成した内容を紹介。
  • レビュー技法は使い分ける。
  • 序盤は、例えば運用シナリオ、ユースケースなど、多く記述しそうなものであれば、最初でやり方・書き方の合意をレビュー内で行う。
  • 残りのものに水平展開する。後半は工数を削減することができる。
  • 中盤は、重要と思われる機能の部分など、ピンポイントで見るべきものに絞ってレビューを行っていく。
  • レビュー観点とレビューの仕方を関連付ける。
  • 4象限で観点を明確化することは効果がある。
  • プロジェクト内で合意を得ながら実施する。
  • ナレッジメンバーを任命。ナレッジメンバー=レビューの有識者
  • 有識者だからといって、レビューができるとは限らないので教育をする。教育の中には、演習も入っている。
  • いくつかシナリオを用意して、人格攻撃をしない、とかディスカッションを交えた教育を行っている。
  • グランドルールありきの改善かもしれない。チームビルディングありき。

  

●パネルディスカッション「レビュー技術の研究と活用」

パネラー:森崎さん(森)/増田さん(増)/細谷さん(細)/西さん(西)


1.V&V V字の左側でもやるべきだということが言われているが、妥当性確認について どう考えているのか?レビューで妥当性確認ができるか?どうやればいいのか?

  • 森:最後に言われても困るので、途中でいうことに意味がある。スクリプトテスト・探索的テストに代わるものがレビューにもあると思っている。終盤にいわれても直せない、ということになってしまう。どのタイミングでどういう指摘を行っていくか、をレビュー計画で合意することは大事。 ⇒細谷さんの事例に重なる
  • 細:事前にレビューしてほしい観点を渡してレビューしてもらったりした。
  • 増:ただしくつくったか?つくったものはただしかったか?を確認するのがV&V。正しく作っているか?というところにたいして、定義しているのが20246である。つくったものはただしいか?という観点でのチェックまでは言及していない。
  • 西:V&Vは時代遅れ。妥当性確認としてどういう観点で確認したらいいかを分解しておいて、テストでは何を確認すればいいのか、を合意していくべきである。


2.オフショア・ニアショア 品質確保(検証)の良いやり方を教えてほしい。

  •  森:共同研究内容。発注工程の前工程でのQ&A(=ドメイン知識)の内容に着目する。前提知識が同じになっているかどうかでわかってくる。受注側からの質問の質で受注側のスキルを測るとよい。実績も大事。技術力がない受注側をレビューで何とかするのはむり。発注先を変える勇気も必要。ドメイン知識と技術両方ないとうまくいかない。オープンクエスチョンで聞いてくる人は、ちょっと危ない。YES/NOで聞いてくるところは安心できるかも。
  • 細:契約の序盤でレビューしたりする仕組みを入れないと難しいと思う。そういうことを盛り込めるような契約にしていくべきだと思う。ワークショップ的なものを一緒にやる。ユースケース的なものを一緒に作ったりして、やり方を教えたりしている。内部品質に着目するのであれば、機能設計を一緒にやるとかを考えないといけない。
  • 増:レビューのトレーニングとしてレビューを捉えることも大事。有効な手段。ツールで効率化するなども、選択肢の一つである。国際標準規格は、受注側の技術力が低い場合にも、「こうやるとうまくいくよね」というものを想定して作られている。重量級の国際標準は発注側の視点で考え方や技術などが細々と書かれているので有用である。

  

3.再現性・・・属人性排除、次回も同じようにできる、などについて

  •  増:できる。そのために規格を作成している。再現性があるのか、品質があがるのか、という条件に関しては、組織それぞれでの前提条件などがあるとおもうので、それを文書化していくとよい。
  • 細:属人性の排除。レビューの仕方はやり方があるので、できる。役割の設定、レビュー技法も取り入れられるはず。その人たちの能力の範囲でできると思う。能力の質の属人性は別の話。組織としてのいいところは狙えるけど、ひとのスキルに依存するばらつきは排除できないと思う。「組織のスキルの限度において」よい仕事ができる。
  • 森:着眼点が一緒、属人性の排除。前提条件の抜けが認識できていなければ無理。 結果を予測できるようなものになるというのも、属人性の排除には重要。技術力が低いのであれば、「ないものねだりをしない」のが大事。 

 

文化、マインド・・・の話:
  • 森:素質、再現性、プロセスを定義する、マインドの話・スキルの話。マインドがあるけどスキルがないからうまくいかない、スキルがあるけどマインドが低いからうまくいかない・・四象限的。
  • 細:細かく繰り返すというのに重要視している。どこを目的としていて、どう改善していくか、が大事と思っている。  
  • 増:F2Fでやったほうが効率が高いと聞いて、実行している。すべてがトップダウンで行っているわけではなく、プロジェクトのアウトプットが高まる行為であればOK。ツールであろうが、マインドにかかわる話であろうが、上記の効果が期待できるものであれば実施する。

 

4.レビュー文化:個人主義の国(欧米とか)・組織・エンジニアは、レビューのような皆のための仕事はしないので、枠や型が必要なのではないか?

  •  森:レビューを手伝った人は人事評価をよくするなどの仕組み的対処が必要。レビューで後ろから打たれるような状況を作ってはいけない。
  • 増:自分が書いた試験に自分で回答して自分で丸付けして100点というのは本当かどうかわからないから、確認が必要。欧米ではテスト専門の職業などがあるけど、日本ではなかなか受け入れられない。   
  • 西:組織の方針と仕組みは国とか個人の考えをオーバーライドするので、そういうマネジメントをしてしまっているだけなので、マネジメントの怠慢だと思います。

   ⇒森:レビューは社風が出る。けん制しあって向上するという文化とか。文化が異なる同士のレビューはそれぞれ違和感を感じるだろう。

 


5.改善内容の適用スコープは、全プロジェクトに共通というわけではないとは思う。レビューの目的やプロダクトの特性などによって改善内容を変えるべきか?レビュー設計はしているのか?

  •  細:変えているが、全プロジェクトに適用しているものもある。(インスペクションに有識者を入れるというのは100%)。レビュー設計としては、目的・観点を決めるなどのレビュー計画は行っている。
  • 森:細かいレビュー設計は、細かくすればするほど形骸化しやすい。コストが下がらなくなる。
  • 増:チェックリストはどうやってつくるの?⇒過去の障害を一般化する一般化抽象化して、全プロジェクトに適用、とか。

 

6.国際規格などを隠れ蓑にして形式的に仕事に文句をいうひとにはどう対応すべきか

  • 細:内部品質に対する意識を組織的に共通にしていくとかに使う。レビューのタイプで使い分けましょう。
  • 森:バディチェックで回避できる。
  • 増:標準は厳密に従うものではない。良いところどりをすればよい。特に20246は意識を高めてやっていこうというもの。


7.この30年間でレビューは何が変わったのか?一言で。

  • 増:ほとんど変わっていない。ソフトウエアの複雑度・テクノロジーが高度になっているので、相対的には変わっていない。
  • 細:若い人に「変わっていない」ということが伝わっていない。若い人は、「はじめてききました」という。それを伝えていく手段として、標準化された規格は使えると思う。
  • 森:本質は変わっていないが、対象範囲が広くなり、考え方もいろいろ出てきている。反復型の開発が一般敵になってくると、レビューの役割も変わるだろう。未熟な自分を理解していこう。
  • 西:テストも同じ状況だった。この先、おカネや技術が流入してきたら、変わると思う。

 

 以上!

バグの妥当な検出率?〜IPAのデータ白書と信頼区間とR〜

ソフトウェアテスト アドベントカレンダー 12/21担当のあさこです。

qiita.com

  

はじめに

テスト実施時には、バグが想定通り(?)に出ているかどうかのメトリクス分析を行う方は多いと思います。

割と、そこでベンチマークとして使われるのが、IPAから発行されているデータ白書。

参考:SEC BOOKS:ソフトウェア開発データ白書2016-2017:IPA 独立行政法人 情報処理推進機構

  

ここで多く使われているのが、二つのメトリクス(変数)を散布図で表し、回帰分析結果とその信頼区間(50%、95%)を算出したグラフです。

多くの企業が協力しているデータなので、ベンチマークには最適です。

以下例です。

f:id:okandayo:20171221060150p:plain

出典:https://sec.ipa.go.jp/files/secbooks/000057880.pdf

  

自社にて、部門間ベンチマークを行う際にも同じようにできるといいですよね。

Excelで分析のできるツールがIPAで公開されており、サイトからダウンロードできますが、ツール内でどんなことをやっているか、気になりませんか?

 内容を一部ご紹介します。

ぜひ、自社のデータでも試していただけると幸いです。

  

基本のおさらい

 メトリクスを取得する目的と、メトリクスの間の関係式を微分方程式で示すことを簡単にまとめたブログです。

 

okandayo.hatenablog.com

 

 IPAのデータ白書で散布図を用いて分析・表現されているものには、いろいろなものがあります。

基本的には以下のメトリクスが挙げられます。

  • 工数
  • 工期
  • 製造量(SLOC実績値)
  • 累積不具合検出率

 これらそれぞれの数値同志の相関をみて、その相関係数にて、上記ブログ内にある4つのタイプからその現象を説明する式を選択します。

 今回ご紹介しようとする例は、

  • 累積不具合検出率
  • 製造量(SLOC実績値)

を使って考えていきましょう。

 

考え方

  1. 対象の二つのメトリクスの関係性をみる
  2. 1で求めた関係性を使用して回帰分析を行い、近似式を求める
  3. 2で求めた近似式をもとに、信頼区間式を求める

 

1.対象の二つのメトリクスの関係性をみる

「基本のおさらい」で取り上げました内容に従い、メトリクス同士がどの微分方程式の関係性の時が相関が高いかを見ます。

自社のデータをもとに試したときは、以下の4タイプのうち、4のものが多かったので、それをとりあげます。

 

f:id:okandayo:20171221042927p:plain

 

2.1で求めた関係性を使用して回帰分析を行い、近似式を求める

回帰分析して求めた結果を使用する。

近似式の求め方は、Excelだとこんな感じ。中に書かれている値は、例です。

 

f:id:okandayo:20171221050120p:plain

 

 

3.2で求めた近似式をもとに、信頼区間式を求める

 数式で説明すると、こんな感じ。

f:id:okandayo:20171221051410p:plain

  

Rでやってみた

  1.  回帰分析を行い、近似式を求める
  2. 1で求めた近似式をもとに、信頼区間式を求める

 

0. 準備

# ①データの読み込み
WhitePaper.data <- read.csv("testdata.csv", header=T)
head(WhitePaper.data) #読み込んだデータを確認
LIN <- WhitePaper.data$Line
TH <- WhitePaper.data$TotalBug

#②散布図のプロット

 plot(log10(LIN),log10(TH)) # 生産量(LIN)と総工数(TH)

 #③回帰分析

 # lm関数に、説明変数をLIN、被説明変数をTHとして代入

result <- lm(log10(TH) ~ log10(LIN))

 

1. 回帰分析を行い、近似式を求める

# 分析結果の要約
summary(result)
abline(result) # 回帰直線を描く

#④対数スケール(回帰直線)⇒もとのスケール(回帰曲線)にもどしてグラフを描く(データを重ねがき) #####
##summary(result) の結果から係数をもってくる。
# 回帰分析の結果 log10(y) = 2.4615 + (0.8331)*log10(x) より

x <- 0.01*c(0:7000)
prediction <- 10^(2.4615)*x^(0.8331)
plot(x, prediction , col=2,type="l", xlim=c(0,70), ylim=c(0,11000),
xlab="", ylab="", main="")
par(new=TRUE)
plot(LIN, TH, col=4, xlim=c(0,70), ylim=c(0,11000),
xlab="LIN", ylab="TH", main="")

 

2. 1で求めた近似式をもとに、信頼区間式を求める

 ###### 信頼区間
alp2 <- 0.05 # 有意水準alp/2 ⇒ 信頼係数1-alp ⇒ 95%信頼区間のとき alp=1-0.95

# 95% のとき alp2 <- 0.025
# 90% のとき alp2 <- 0.05
# 50% のとき alp2 <- 0.25

n <- length(LIN) # データ数
bar_log <- sum(log10(LIN))/n
y_hat <- 10^(2.4615)*LIN^(0.8331)

# 残差分散の平方根
s <- sqrt( 1/(n-2)*sum*1^2) ) 

### 信頼区間の計算
C <- sqrt( 1/n+(log10(x)-bar_log)^2/sum((log10(LIN)-bar_log)^2) )

K <- 0.8331*log10(x)+2.4615 + qt(1-alp2,n-2)*s*C
confidence_U <- 10^K

K <- 0.8331*log10(x)+2.4615 - qt(1-alp2,n-2)*s*C
confidence_L <- 10^K

plot(x, confidence_U, col=3,type="l", xlim=c(0,70), ylim=c(0,11000),
xlab="", ylab="", main="")
par(new=TRUE)

plot(x, confidence_L , col=3,type="l", xlim=c(0,70), ylim=c(0,11000),
xlab="", ylab="", main="")
par(new=TRUE)

 

結果

信頼区間95%の時と、50%の場合を両方求めてプロットしました。

f:id:okandayo:20171221052909p:plain

いろいろとアレなので、メモリの数字などはとっぱらてありますw

 

 さいごに

 メトリクスは扱いを間違えるとアカンことになります。

 

 

 

たまたま、この記事を書く前日にこんな感じのやり取りをしたので、参考までに。。

数値データの裏の背景などのにも目を向けて取得してつかわなきゃ~とおもいました。

 

ここまでお付き合いくださり、ありがとうございました!

 

*1:log10(TH)-log10(y_hat

メトリクスの示す現象論 ~取得する目的とそのメトリクスとの関係~ 

メトリクスの示す現象論

 

 メトリクスは、何かをおこなったときの効果を定量的に測るツールになるので、「必ず」取得するための目的があります

そして、その目的を支配する法則があるのではと私は考えています。

その法則を見出すには、微分方程式から入るのが一番簡単だと思います。

 

微分方程式

現象が説明変数xと被説明変数yで記述できると仮定します。

簡単にするために、2次元で考えます。

 

yとxの微分方程式では、その間にある変化量を見ることができます。

なので、データは、以下の3つの微分方程式で表すことができます。

f:id:okandayo:20171215224829j:plain

 

それぞれの微分方程式を解くと、右の式になります。

基本形なので、すべてがこれというわけではなく、派生形も存在するということは付け加えさせていただきます。

 

副次的効果?

現象が数式で表せるということにより、以下のような嬉しいこと(笑)もできるようになります。

 

  • 数式から、統計的論理的に背景を検証することができる
  • 標本数が少ない場合には、この論理に従ってランダム関数などを使用して増やす(?)ことができる
  • モデル化されているので、メトリクス層別の判断基準の一つになる

 

 

参考資料

生産性と品質データの解析手法

www.slideshare.net

 

 

テスト対象のリスク度分析(素敵なメトリクス)

ソフトウェアテストの小ネタ  12/10担当のあさこです。

qiita.com

 

小ネタなので、すぐにできそうなところからご紹介♪

 

テスト対象のリスク度分析の一例を二つほど、ご紹介します。

ソースコードメトリクスを利用します。

 

ソースコードメトリクス

ソースコードメトリクスは、いろいろなツールで取得可能です。

 

その中から、一つ目のご紹介。

皆さんも使われている方も多いと思いますが、

サイクロマティック複雑度

を使用したテスト対象のリスク分析です。

すごく簡単。

一般的に、15を超えると保守性が低い傾向があるといわれており、バグが潜みやすい傾向にあるようです。

なので、以下のような策をとられるとよいかもしれません。

その際にはもちろん言うまでもありませんが、意味があって複雑度が高くなっているのか、それともコードを書いた人のスキルなのか、なども合わせて考慮する必要があります。

 

  • 複雑度が高いコードのコードレビューにはスキルの高い人を割り当てる
  • 複雑度を下げることができるように設計を見直す(リファクタリングをする)
  • ヒートマップなどで、どの関数が複雑度が高いかをみて、IntegTestに厚みを持たせる

 すぐにできることなので、参考になさっていただけると嬉しいです。

 

  

二つ目のご紹介。

 

以下のメトリクスを利用。

  • Essential:単純な条件構造(単純な if-else, while, do-while など)を、単一のステートメントで置き換えた制御グラフにおいて計測した複雑度
  • FanIn:関数に対する入力の数
  • FanOut:関数に対する出力の数

これは、Understandというツール

ソースコード解析ツール Understand | ソフトウェア品質保証 | テクマトリックス株式会社

www.techmatrix.co.jp

 

から取得することができます。

 

EssentialFanin・Fanout(二つのメトリクスを掛け合わせた値)このふたつをx,y軸に取り、散布図を描きます。

このメトリクスのプロットの意味するところは、もう想像がつくと思いますが、関数が複雑なうえに入出力値まで多ければ・・・そうです。ご想像の通りです。。。

ということで、判断基準としては、

Essentialの値が10以上、Fanin・Fanoutが400以上で囲まれる範囲を高リスクゾーンとし、集中的にテストを行う。

ということを一つの事例として紹介させていただきます。

 

以下のスライドの15ページ目でも、ご紹介しています。

 

www.slideshare.net

 

少しでもプロダクトの性質・特性を把握できれば、メトリクスの値と一緒に分析して品質を作りこんでいくことが楽になるかもしれません。

 

このサイトにも、ソースコードメトリクスを利用した分析の事例が掲載されています。

 

understand-jp.blogspot.jp

 

 番外編

アーキテクチャメトリクス

このメトリクスを取得できるツールは、有償無償だと、私が知っているところでは以下のものがあります。

有償:Lattix (テクマトリックス社取り扱いソフトウエア)

無償:ccfinder(32ビット版しかないかも・・・)

 

取得できるメトリクスはかなりたくさんあります。

また別の機会に、このメトリクスを利用した事例をご紹介したいと思います。

 

Enjoy your Testing life♪

 

Modeling Forum 2017 simple レポート

参加して

先週参加してきたモデリングフォーラムのレポートです。

流れが見えにくいレポートになっております。

資料と一緒に見ていただけると嬉しいです。

それぞれのセッションの資料は公開されているので、閲覧できます。

下のサイトからどうぞ~。

※原田 騎郎様の資料は、掲載されておりません。(2017/11/15現在)

 

 

umtp-japan.org

 

午後の三つしか受講できず非常に残念でしたが、どの講演も、とても興味深いものでした。

 

このフォーラムの前日に参加したJenkinsDaysJapanのとあるセッションで、「これからはビジネスを創造できる人材が特に必要であり、そのスキルが問われる。そのために生産性を上げていく必要がある」と言われていたばかりで、このモデリングフォーラムでも同じ結論が聞けるとは思ってもいなかった。

つながりを感じてさらにワクワクした一日でした。

 

開催概要

◇名称   Modeling Forum 2017
— Society5.0を支えるモデリング
◇会場   TEPIAホール
〒107-0061
東京都港区北青山2丁目8番44号
http://www.tepia.jp/
◇日程   2017年11月10日(金) 9時45分 – 17時45分 (受付開始 9時15分)
◇主催   特定非営利活動法人UMLモデリング推進協議会(UMTP/Japan)
特定非営利活動法人UMLモデリング推進協議会(UMTP/Japan)

  

●AI、IoT時代におけるモデリングとは?

株式会社エクスモーション 代表取締役社長
一般社団法人組込みシステム技術協会(JASA)理事
渡辺 博之

モデリングがどうなっていくのか?
このままうかうか過ごしていたら危ない。今日は警告を発しに来た。
日々の進化が激しくて、もうすでに欧米にかなりな遅れをとっている。日本は頑張る時期にきている。頑張るべき領域は、CPSだと考えている。
第4次産業革命⇒CyberPhysicalSystem
従来の組込みシステムもCPSである。
ただ、どう制御しようかという対象を絞っただけのモデルである。
AIはエンジン・モデル、IOTはシステム・インフラ、ビックデータはモデルの元ネタと考えることができる。
機械をオペレーティングするのはAIになるので、生産性の制約はなくなってくる。そうすると、影響範囲は大きくなる。ヘアーカットなど、日常のものにも波及してくる。
国の方向性と企業の方向性を合わせていかないと負ける一方になる。
そのおかげで、経産省のHPをよく見るようになった。


★これからの時代に求められるふたつの観点のモデル

いろいろな産業が入り込んで来るので、お互いの合意形成・説明責任のすり合わせなどが必要になるのではないだろうか。
モデリングは2種類必要になると思われる。
一つ目は制御するための制御モデル。これは、従来と同じ。機器の制御。
二つ目は、ドメインごとの「こまったこと・うれしいことなどをねん出するモデル」が仮想世界では必要になるのではないかと考えられる。新しい価値の創出である。
今までの暗黙知を可視化してモデル化する。
ビジネス領域、ビジネスを横串したときの価値とか、ビジネスモデルをどうするかということを考えていく必要がある。
様々なビジネスで使えるモデルを整備した後に出てくるのが、モデル選択の基準である。これを話し合う活動をJASAで始める。
UMTPでの活動休止!JASAで組込みIoTモデリングWGをたちあげることになった。興味がある人は参加してほしい。


★これからのエンジニアに期待されること
今後のエンジニアは、ビジネスユニットごとに人間の経験・知識・合意をとりながら、ビジネスを横断した活動が期待されることなのではないかと考えている。
・ビジネスデザインができる人
・システムを俯瞰的に見ることができる人
これが必要とされている。
日本は給料が安いから、いい人材が来ない。

でも、給料上げてきている業界もあるので、
これからそこを起爆材としてのびてくるのではないだろうか。


統計学におけるモデルの役割について:直感・説明・検証

農研機構・農業環境変動研究センター ユニット長
東京大学大学院 農学生命科学研究科 教授 三中 信宏

★モデルを立ててデータを考察する。
データをちゃんと理解しているのか?分析結果に納得できるのか?
人間は、心理学的にとても良い「差のある・なし」を判別できる能力がある。
基本的で有名なものに、分散分析というものがある。F分析・F検定で判断される。
F値というのは、我々にとってはとても直感的にわかるようなものなのかもしれない。
(平均とか)
我々が感じてきたこと・見てきたことを数値化したものなのかもしれない。

 

以下の二つの文献の文言で示されるように、一方は「データそのものから現象をみる」行為と、「ある種のパターン化されたデータのばらつき・組み合わせなどがあり、そこで現象をみる」というものが考えられる。

クラフト・エヴィング商會
データをみて人それぞれの解釈がある<>データの向こうに真実がある

・歴史・レトリック・立証(カルロ・キンズブルグ2001)
視界を妨げる壁<>開かれたまど ゆがんだガラス


証拠を逆なでしながら、それを作り出した者たちの意図をさからって読むすべを学ばなければならない。
データから先を見るには?・・・モデル。モデルで説明をする。
では、データを見たときに、どうやったら説明できるだろうか、納得できるだろうか?
データの持っている特性・特徴を見える化するのがモデル。

データを見て現象を把握するだけでなく、説明するということがこれから求められてくるので、やはりモデル化する能力・見抜く能力というのは必要なものである。

 

★モデルとデータの接点に触る
モデル(共通要因・個別要因)⇒データ(統計的誤差)
単純なモデル、複雑なモデルのどちらを選択すればよいのか?
・モデルの良し悪しの判定(モデル選択の基準)
・データの当てはまりをどう追及していけばいいのか
複雑だからよいというわけではないという判断で使うもの⇒AIC
複雑度の高いモデルは、データの実値を優先に考えるので、値のフィッティングが揺れると「弱い」予測能力になる。

p-valueの使い方にも注意してほしい。0.05というものではなく、より精度を求められる実験などを検証するときには、0.005というより厳密な値を使うことを勧める。

 

●DevOpsにも役立つモデリング

株式会社アトラクタ Founder 兼 CEO
原田 騎郎

 12年前に、モデルを役に立てようという試みをしていた。
ソフトウエア開発で一番危なっかしいのは「ビジネス」。
そこで、「ビジネスをモデリングしよう!」ということをはじめた。


DevOPSも、一種のビジネスのモデル。
素早くすることでリスクを下げる。
反応速度を早くすることで計画を立てなきゃいけない期間を短くする。
リスクを下げる。リードタイムを短くする。スループットを増やす。
1週間・2週間でSWリリースできるのにサーバ3か月もかかるのは、やってられない!

そこから、アジャイルインフラ&オペレーションを考えるようになり、リーンシンキング、ToCなどを取り入れていった。


「もの」と「情報」の流れ図(=ValueStreamMapping)
カイゼンの実行計画を考える際に、現状や未来や理想像を描くのに使う。

これもモデリングである。
見えないものはカイゼンできないならば、みえるようにする。モデルを書く。
現状のストリームの地図を描く。将来のストリームの地図を描く。
変更計画を作り出す。逆流率と直行率を出す。
手戻りの線を矢印で結んで手戻り率を計算する。
ECRS(Eliminate、Combine、Rearrange(QAの人を最初に連れてくる、とか)、Simplify)

カンバン仕事術へつながる。

 

 

 

 

Jenkins Day Japan 2017 レポート

 

先週、Jenkinsのセミナーが開かれた。

テクマトリックス主催の、太っ腹な企画。

その内容の簡単なレポート。

発表資料は、下記サイトからダウンロードできます(入力事項あり)ので、ぜひどうぞ!


日時:11/9(木)9:30~17:00
会場:ベルサール半蔵門
内容:Jenkins Day Japan 2017

 

cloudbees.techmatrix.jp

 

 

コンテンツ:
1.組織横断的な環境でのソフトウェア開発を加速させる、段階的なCI
 (原題:Multi-Stage-CI System to speed up the SW development in a cross-organizational environment)
  Robert Martin 氏 BMW Car IT GmbH SW Project Leader
2.テンプレート、Groovyを用いて、Jenkinsを”Sweet”に
  (原題:Sweeten your Jenkins with template and Groovy system)
  Harald Gottlicher 氏 Robert Bosch GmbH Software Architect
3.テストのフィードバックサイクルを早めて、変更に強いソフトウェア開発を実現
  野中 亮 テクマトリックス株式会社 システムエンジニアリング事業部
4.Jenkinsの生みの親、川口耕介氏が語る(仮題)
  川口 耕介氏  CloudBees, Inc. Chief Technology Officer

 

[全体の感想]


BMWの事例は、大規模でかつ数億行というソースコードをHW込みでテストする環境をCI化しているというすごい事例だった。
その際には、ひとつのジョブの単位の設計をしっかりやらないと、HWのテストまでどういうパイプラインで流れていくようにするかという目的を達成できなくなる。
ジョブの単位の設計はしっかりしないと、結局は手動と同じという結果になりかねない。
Jenkinsの利用により、技術的負債を増やさずに価値をすばやく判断し、ビジネスの創造に時間をかけていかなければならない、という川口氏の講演には、日本と欧米の意識の違いが大きく出ているなぁと感じた。

いや、もうすでにやっている会社さんも多くなってきたが、日本のスタンダードということにはまだなっていない感覚を持っています。

川口さんは、危機感を持ってください、ともおっしゃっていたので、その感覚もあまり間違っていないのかもしれない。

 


[概要]


1.組織横断的な環境でのソフトウェア開発を加速させる、段階的なCI


 ・BMWのHWを含めた開発で行っているCIがどう行われているか、という内容。

  大規模プロジェクトでのCIは、多段階のCIシステムにする必要がある。
  SWアーキテクチャから考えるのが大切。
  部門ごとに分けられた内容を考えるのではなくて、機能ごとに分けられているチームを考え、CIを設計する。
  最初からリリースまで、どのくらい時間がかかるかを測った。
  1人の人のたった一行のコード変更が反映されてリリースするまで、5週間かかる。
  一つのものをリリースするのに、こんなに時間がかかっていたら、担当者はやっていたことを忘れてしまう。
  CIでは、誰かがこけたら(Failしたら)次にいけないようにしている。
  自動化されていない手動の作業は、ソースコードの修正だけ、という状況にしている。
  HWのテストまでを30分以内でやらなければいけないとわかっている。
  これよりもかかるようであれば、さらに細分化する必要があると考える。

 

 ・夜間ビルドとCIの違い
  CIシステムを導入したら、Failがある場合は、必ず次に行ってはいけない。
  働き方の時間を見ながら、何分以内でCIを回す必要があるのかをちゃんと考える必要がある。
  夜間ビルドの場合は、失敗がまとめて報告されるので、切り分けが困難だったりする。ところが、失敗したら次に行かないというCIがあれば、失敗の修正と回復は最小限の時間ですむようになる。依存関係の少ないアーキテクチャを目指すべきである。
  協力会社、自社内での関係等、SWのアーキテクチャや契約もみていかないといけない。
  多段階CIシステムには、専門のCIチームを用意する用意がある。
 
 ・早い開発が何で必要になるのか。
  変更に強い、費用対効果がある(時間を削減=自由な時間ができる)、そういったことをチームで議論し続ける必要がある。


2.テンプレート、Groovyを用いて、Jenkinsを”Sweet”に


 ・テンプレートで特有のUIを作ることができる。
  いろんな商品・製品を扱っている。
  開発者でない人たちもいる。そういった人たちが意識しなくても、勝手に背後で動いている、そういうCIでなくてはいけない。
  Jenkinsを知らないひとたちでも使えるシステムを提供できる。
  ビルドを自動化するのは当たり前だが、例えば、jobをつくるなどのjenkinsの機能も自動化する。
  以下のようなテンプレートをGroovyで作成すると、管理者も楽になる。
  -マルチブランチパイプライン
  -フリースタイルジョブ
  JenkinsFile(groovyで記述)も、変更したらGitで管理する。プロジェクトマネージャがテンプレートファイルを複製してプロジェクトに提供する。
  パイプライン自体が「モノリシック」になってしまうこともあるので、注意が必要。

 

 

3.テストのフィードバックサイクルを早めて、変更に強いソフトウェア開発を実現


 ・変更があるごとにビルドなどのジョブをしかけることで、負債の蓄積も最小にすることができる。
 ・ビルド~テストを仕掛ける単位はなるべく影響範囲が小さいうちに実施したほうが良い。
 ・テスト自動化する象限は第4象限がよい。⇒実践アジャイルテスト
 ・変更を割り振っていって実行を適切に行うもの⇒jenkins


4.Jenkinsの生みの親、川口耕介氏が語る(仮題)


 ・Jenkinsの生い立ち~成長期
  生物と同じで、カンブリア爆発があり、多様性が起こった。進化そのものは徐々に起こる。
  Jenkinsへアップデートセンターを作ったので、プラグインの作成をするコミュニティがどんどん出てきて、利用が爆発的に広がった。

 ・Jenkinsの恐竜期
  昔、ツール整備する人は職人気質。自動化はチーム内でやる作業だった。
  プラグインを組み上げて自分のCICDを作っていた。そこを、ある程度標準な組み合わせを最初に用意する。
  なれて、変化点が見えてきたら自分たちの使い方に合わせた環境を作れるようなプラットフォームにしておく。合わせてドキュメンテーションをしっかり整える必要がある。

 ・現在~未来
  ビルド職人がやるという時代は終わった。ビジネス価値を早く届ける必要がある。
  実験と反復を早くやる必要がある。自動化職人はチームに所属しない。組織としての専門チームで存在しているべき。
  痛みを伴ったデジタルトランスメーションをすることで、中央に生産性向上の専門チームができることが多い。そのチームが会社の開発プロセスを決めていく。
  ビジネス価値の創造にフォーカスしていけるか、が大切である。生産性を上げることで変化に強くなる。すぐに結果などを得られるようになるからである。大規模な会社ではこういった取り組みが必要である。

 ・これからのCIのあるべき姿
  継続的デリバリーをする、そこからビジネス価値を創造する方向へどう行けばいいのか。自動化だけにフォーカスせず、一歩下がって開発全体を見なければいけない。
  パイプラインを作った一つの理由として、視野を広げやすくなることが挙げられる。一歩下がって開発全体を見て、組織を見て、ビジネスを見る。これがこれからに必要となることだ。

 

 

 

クラウドチャレンジ ~働き方どうする?~

 

クラウドチャレンジ

11月某日。私にTOCfEというものがあると教えてくれた、師匠からCLRを学ぶ機会をいただいた。

TOCfEとはtocfeblog.wordpress.com

上記のブログを参照してもらえればわかるが、3つの道具が提供されている。

  • ブランチ:物事や起きてることのつながりを考える
  • クラウド:対立の解消を考える
  • アンビシャスターゲットツリー:目標を達成することを考える

今回は、このうちの「クラウド」を教えてもらった。

 

実際にやってみた

クラウドで、対立する事象を解消させようということを試みた。

わたしが持って行ったお題はこれ。

「今後の働き方、どうすればいいかな?」

これに対して、二つの対立する事象(行動)は以下の通り。

  • このまま時短で働き続ける
  • フルタイムへ戻して、残業もある程する

時短をしていたら残業はできない。

 


f:id:okandayo:20171115211012j:image

 

両者が時間軸上で同時に起こりえない事象という条件の下で選んだ。

 

そこから、なぜなぜ分析みたいに探っていく。

まず、上の図のように、対立する「行動」を上げる。

そして、その行動を達成するのはなぜか、という観点で「要望」を上げる。

「行動」をとる。なぜならば、「要望」となるからだ。

わたしが実際にやった事例は、以下の写真の通り。

検証すると、

「時短で働き続ける」なぜならば、「子供たちの生活リズムを崩したくない」からだ。

という感じになる。

 

f:id:okandayo:20171110200101j:plain

わたしの事例

 

同じように、

フルタイム勤務に戻す」なぜならば、「もっと仕事がしたいから」である。

こんな感じ。

 

「要望」を上げた後は、その両者に共通する「目標」を考える。

ここは非常に簡単に目標を考えることができた。

「家族が幸せになる」

先生によると、この「共通の目標」部分には、「世界平和」とか「幸せになりたい」とかそういったものが来ることが多いとのこと。

 

理由を考える

骨組みができたところで、「行動」⇒「要望」、「要望」⇒「共通の目標」の理由を考えていく。自分が望んでいる理由だ。

いやぁ、いっぱい上がりましたが、先生のファシリテーションがなければ本音は出せなかったです。はい。

フルタイムに戻したいというところでは、「子供かよ!」とおもうような理由も・・・。あとは、上から目線だったり・・・^^;

  • 相方ばっかり残業できてずるい
  • 大人になったときに楽しく仕事ができるように背中を見せたい
  • 自分がやりたいことをできなかったと後悔したくない

など。

 

結局、なんとなく解決策は最初から想像ついていたのですが、こんな感じ。

 

  • 時短を続ける(あと2年しか取れない)
  • 取れなくなることには、上の子が自分のことをできる年齢(11歳)になっている

 

理由を挙げているときに、本心に触れることができてすっきりする ことが、上記の解決策を得るための一番の近道なのかもしれない、とやってみて思った。

 

まとめ

きっと、頭を整理するにも誰かに聞いてもらいたいっていう願望があるし、それはファシリテーターさんが聞いてくれるというところで解消できる。

 

いろいろな理由にも優先度とか余計なことをかんがえちゃうけど、「とりあえずぜんぶまるっとあげちゃえ!」という師匠の言葉をもらえたからこそ、いろんな心をだすことができたんだなぁ、と思ったり。

 

一度やってみると、なんとなくわかった気になってしまう。

今度は、仕事で対立すること結構あるので、やってみようと思う。

 

師匠、ありがとうございました💛