慶應義塾大学 システムデザイン・マネジメント研究科(SDM)の公開講座「現代ソフトウェアエンジニアリングの俯瞰図」の第一回に行ってきた!報告
内容は、こんなかんじ。
■慶應義塾大学 システムデザイン・マネジメント研究科(大学院)の紹介
2008年新設
20代〜60代、過半数は社会人学生
システムズエンジニアリング講座 JAXA向け
デザイン指向(チームによるイノベーション)講座
■第一回「高品質のソフトウェアを効率的に開発するための
ソフトウエアエンジニアリング」 松田所長
・1946年 ENIAC 最初の大型汎用デジタルコンピューター
1960年後半〜70年代 商用コンピューターIBM 360シリーズ
→ソフトウェア危機:全人口がプログラマにならないと・・・
→68年 国際会議で、はじめてソフトウェアエンジニアリングという言葉
1970年代 IBM370
1971年 電電公社 DIPS−1
現在:ソフトウェアの問題は、解決したのか?
(1)ソフトウェア開発プロジェクトの現状
・自分で使うオフとウェアの開発
・他人に使ってもらうソフトウェアの開発
自分の趣味の延長にあるのではないかという誤解
→ぜんぜん違うもの
こちらの問題を扱う
・ソフトウェアの規模は、どうはかる?
・ソースプログラムの行数(SLOC)
B5に1枚30行印刷すると10万行は3400ページ
広辞苑の机上版にの1冊分3460ページ
→Windows3.1 300万行
Windows2000 6000万行
第3次オン 数百万行
自動車組み込み レクサスLS460 700万行
ナビを入れると1700万行
ECUが70から100個/台、1ECU:10万行。
ケータイ 500万行
→スマホだとダウンロードできるので、もっと多い
・ソフトウェア開発プロジェクトのデータ収集・分析
「ソフトウェア開発データ白書」:現在、23社 2584プロジェクト
ソースの行数:10万行以下が6割強、ただし、尾が長い
期間:1年以内が8割、中央値7ヶ月
工数:だいたい150人月までが8割強、真ん中36人月
全体の規模と、開発している規模はちょっと違うけど・・・
(2)ソフトウェア開発プロジェクトの成功とは?
QCDというパラメータとS
Q:品質
C:コスト
D:納期
S:スコープ(ソフトウェアの実現範囲)
・ソフトウェアは成功したか?
QCDのすべてが成功 60%
QCDの成功が2つ 25%
→60%位が成功 :会場では、60%以下の人が多数。
→優良プロジェクトで、データを取っているもののうち、60%ということで、
悪いプロジェクトもあわせれば、もっと数字が悪くなるはず・・・
・日経コンピューター
成功30%というのが、平均的らしい。
管理指標を導入している:成功40数%
導入していない:24%
80項目のデータをIPAはとっている:きちんと管理しているプロジェクト
→残念ながら、QCDがほぼ計画通り言ったものは、30%というのが、世の中
・ソフトウェアエンジニアリング
技術面+管理面
・ソフトウェアエンジニアリングの難しさ−1
自然現象、物理現象:一定の原理、法則に支配
ソフトウェア:人間の知的活動によって作られた人工物
普遍的な原理原則に基づくものではない
ソフトウェア工学
現実の開発事例をできるだけ多数集めて、良い結果が
生まれたモノを類型化して、広く使える方法として一般化
ソフトウェア・エンジニアリング・センター:2004年設立
現場の事例の一般化
・ソフトウェアエンジニアリングの難しさ−2
ソフトウェアは見えない
→はだかの王様
ソフトウェアも・・・
みんな残業して、一生懸命
期限の前に、いや、遅れています・・・
Tomデマルコ 「測定できないものは制御できない」
(ソフトウェア開発プロジェクト技法)
→定量的プロジェクト管理(8,11,12回で)
・QCDは計画通りだったか
それぞれについて
→計画の+−10%くらい:C86%、Q78%、D84%
→品質は犠牲?
CとDは1400答えている、Qは1000
→品質は測ってない?
(3)ソフトウェア開発のC(コスト)とD(納期)
・開発規模:プログラム行数などの推定
↓・開発大勝があいまいな状況の見積もり
・仕様が決まらない、途中で変わる
工数:人月などの推定
↓・規模からの工数推定の確かさ?
・同規模でもしゅしゅの要因で変動
コスト・納期
・推定が、どの程度正確か?
<<規模について>>
割合乗っかってる。
計画した規模より大きくなるものも
少なかったケースは少ない
→規模は、大体推定できる
<<工数について>>
規模は見積もれたけど、工数は外れたというケース
・工数見積もり方法
経験ベース型 デルファイ法など
データ駆動型 Cocomo,ANOVA
混合型 CoBRA法(経験と勘とデータでKKD 10回)
・生産性
言語による生産性:開きがある
1人が1時間で5〜6行
1人月160人時
1人月60万〜120万
→1時間当たり6000円、1行1000円
→10万行で1億円
(4)ソフトウェア開発のQ
・ソフトウェア品質
機能性、信頼性、使用姓、効率性・・・
→信頼性をとりあげる
3.11直後のみずほトラブル
どれくらいの頻度で起きている?
報道ベースで、大体月に1件とか2件
SECジャーナル「情報システムの障害状況 2010年データ」
・組み込みソフトの不具合事例
エアバスA320の墜落
Therac-25:放射線を過剰に被爆
発熱→実はソフトの不具合
・電子カルテシステムに不具合
:日経コンピューター/動かないコンピュータ
→組み込みでなくても・・
・ソフト事故
・ソフト事故の影響範囲の拡大
・ソフト事故の損失の甚大か
・ソフト事故の質的な変化
・新規発生不具合
・キロ当たり0.02件、0,03件
・クスマノも0.02件
→各国に比べ、1桁、2桁いい
それでも、事故が起こっている
・正しいソフトウェアを正しく作る
・仕様どおりソフトウェアを正しく作る
→かなり正確に
・用途に適合した正しいソフトウェアを作る
→相変わらず残っている・・
・Financial Electronic Data Interchange softwear
要件定義のバグが30%
どういうものを、どういう条件で
機能要求 非機能要求
→セットで!
非機能要件の例:第6回
・開発の失敗(第5回)
2012年2月2日 日経コンピューター:特許庁
2012/3/31 日経産業長官
日本IBM
・上流工程の品質向上策
要件定義
形式的仕様記述(第14回)
形式手法の利用レベル
レベル0:形式的仕様記述
1:形式的開発及び検証
2:形式的証明
自動改札機運賃計算仕様書
→形式的仕様記述(VDM++)
外部設計書の検証
(5)変化へ対応できるソフトウェア開発
(6)むすびは省略
■質問&コメント
・開発の仕方が変わっていくよね。
環境の違いの中で、ある部分では継続、ある部分は環境適応、その辺の取り組みは?
(4)までは、スコープ固定、
最近は、環境によっても、変動していくよね。
そのなかでの対応をちょっとしたかった。
どういう対応はなかなかむずかしい、
今まであるもの、かえていかないものは、どこにあるかをみながら、
しゅうせいしないといけないよね
問題意識は持っている。
最後のほうで話す。アジャイル(17回)
・形式仕様のよさは、なかなか見えないよね。
それを改善するにはSECは何してる?
できるだけ、成功事例を積み上げ、普及すれば・・
これをやれば大丈夫と言うわけではない。
いろんな現場から拾い上げ、
・ソフトウェアエンジニアリングから
システムエンジニアリングへ
上流、超上流、超超上流と少しづつシフトへ・・
内容は、こんなかんじ。
■慶應義塾大学 システムデザイン・マネジメント研究科(大学院)の紹介
2008年新設
20代〜60代、過半数は社会人学生
システムズエンジニアリング講座 JAXA向け
デザイン指向(チームによるイノベーション)講座
■第一回「高品質のソフトウェアを効率的に開発するための
ソフトウエアエンジニアリング」 松田所長
・1946年 ENIAC 最初の大型汎用デジタルコンピューター
1960年後半〜70年代 商用コンピューターIBM 360シリーズ
→ソフトウェア危機:全人口がプログラマにならないと・・・
→68年 国際会議で、はじめてソフトウェアエンジニアリングという言葉
1970年代 IBM370
1971年 電電公社 DIPS−1
現在:ソフトウェアの問題は、解決したのか?
(1)ソフトウェア開発プロジェクトの現状
・自分で使うオフとウェアの開発
・他人に使ってもらうソフトウェアの開発
自分の趣味の延長にあるのではないかという誤解
→ぜんぜん違うもの
こちらの問題を扱う
・ソフトウェアの規模は、どうはかる?
・ソースプログラムの行数(SLOC)
B5に1枚30行印刷すると10万行は3400ページ
広辞苑の机上版にの1冊分3460ページ
→Windows3.1 300万行
Windows2000 6000万行
第3次オン 数百万行
自動車組み込み レクサスLS460 700万行
ナビを入れると1700万行
ECUが70から100個/台、1ECU:10万行。
ケータイ 500万行
→スマホだとダウンロードできるので、もっと多い
・ソフトウェア開発プロジェクトのデータ収集・分析
「ソフトウェア開発データ白書」:現在、23社 2584プロジェクト
ソースの行数:10万行以下が6割強、ただし、尾が長い
期間:1年以内が8割、中央値7ヶ月
工数:だいたい150人月までが8割強、真ん中36人月
全体の規模と、開発している規模はちょっと違うけど・・・
(2)ソフトウェア開発プロジェクトの成功とは?
QCDというパラメータとS
Q:品質
C:コスト
D:納期
S:スコープ(ソフトウェアの実現範囲)
・ソフトウェアは成功したか?
QCDのすべてが成功 60%
QCDの成功が2つ 25%
→60%位が成功 :会場では、60%以下の人が多数。
→優良プロジェクトで、データを取っているもののうち、60%ということで、
悪いプロジェクトもあわせれば、もっと数字が悪くなるはず・・・
・日経コンピューター
成功30%というのが、平均的らしい。
管理指標を導入している:成功40数%
導入していない:24%
80項目のデータをIPAはとっている:きちんと管理しているプロジェクト
→残念ながら、QCDがほぼ計画通り言ったものは、30%というのが、世の中
・ソフトウェアエンジニアリング
技術面+管理面
・ソフトウェアエンジニアリングの難しさ−1
自然現象、物理現象:一定の原理、法則に支配
ソフトウェア:人間の知的活動によって作られた人工物
普遍的な原理原則に基づくものではない
ソフトウェア工学
現実の開発事例をできるだけ多数集めて、良い結果が
生まれたモノを類型化して、広く使える方法として一般化
ソフトウェア・エンジニアリング・センター:2004年設立
現場の事例の一般化
・ソフトウェアエンジニアリングの難しさ−2
ソフトウェアは見えない
→はだかの王様
ソフトウェアも・・・
みんな残業して、一生懸命
期限の前に、いや、遅れています・・・
Tomデマルコ 「測定できないものは制御できない」
(ソフトウェア開発プロジェクト技法)
→定量的プロジェクト管理(8,11,12回で)
・QCDは計画通りだったか
それぞれについて
→計画の+−10%くらい:C86%、Q78%、D84%
→品質は犠牲?
CとDは1400答えている、Qは1000
→品質は測ってない?
(3)ソフトウェア開発のC(コスト)とD(納期)
・開発規模:プログラム行数などの推定
↓・開発大勝があいまいな状況の見積もり
・仕様が決まらない、途中で変わる
工数:人月などの推定
↓・規模からの工数推定の確かさ?
・同規模でもしゅしゅの要因で変動
コスト・納期
・推定が、どの程度正確か?
<<規模について>>
割合乗っかってる。
計画した規模より大きくなるものも
少なかったケースは少ない
→規模は、大体推定できる
<<工数について>>
規模は見積もれたけど、工数は外れたというケース
・工数見積もり方法
経験ベース型 デルファイ法など
データ駆動型 Cocomo,ANOVA
混合型 CoBRA法(経験と勘とデータでKKD 10回)
・生産性
言語による生産性:開きがある
1人が1時間で5〜6行
1人月160人時
1人月60万〜120万
→1時間当たり6000円、1行1000円
→10万行で1億円
(4)ソフトウェア開発のQ
・ソフトウェア品質
機能性、信頼性、使用姓、効率性・・・
→信頼性をとりあげる
3.11直後のみずほトラブル
どれくらいの頻度で起きている?
報道ベースで、大体月に1件とか2件
SECジャーナル「情報システムの障害状況 2010年データ」
・組み込みソフトの不具合事例
エアバスA320の墜落
Therac-25:放射線を過剰に被爆
発熱→実はソフトの不具合
・電子カルテシステムに不具合
:日経コンピューター/動かないコンピュータ
→組み込みでなくても・・
・ソフト事故
・ソフト事故の影響範囲の拡大
・ソフト事故の損失の甚大か
・ソフト事故の質的な変化
・新規発生不具合
・キロ当たり0.02件、0,03件
・クスマノも0.02件
→各国に比べ、1桁、2桁いい
それでも、事故が起こっている
・正しいソフトウェアを正しく作る
・仕様どおりソフトウェアを正しく作る
→かなり正確に
・用途に適合した正しいソフトウェアを作る
→相変わらず残っている・・
・Financial Electronic Data Interchange softwear
要件定義のバグが30%
どういうものを、どういう条件で
機能要求 非機能要求
→セットで!
非機能要件の例:第6回
・開発の失敗(第5回)
2012年2月2日 日経コンピューター:特許庁
2012/3/31 日経産業長官
日本IBM
・上流工程の品質向上策
要件定義
形式的仕様記述(第14回)
形式手法の利用レベル
レベル0:形式的仕様記述
1:形式的開発及び検証
2:形式的証明
自動改札機運賃計算仕様書
→形式的仕様記述(VDM++)
外部設計書の検証
(5)変化へ対応できるソフトウェア開発
(6)むすびは省略
■質問&コメント
・開発の仕方が変わっていくよね。
環境の違いの中で、ある部分では継続、ある部分は環境適応、その辺の取り組みは?
(4)までは、スコープ固定、
最近は、環境によっても、変動していくよね。
そのなかでの対応をちょっとしたかった。
どういう対応はなかなかむずかしい、
今まであるもの、かえていかないものは、どこにあるかをみながら、
しゅうせいしないといけないよね
問題意識は持っている。
最後のほうで話す。アジャイル(17回)
・形式仕様のよさは、なかなか見えないよね。
それを改善するにはSECは何してる?
できるだけ、成功事例を積み上げ、普及すれば・・
これをやれば大丈夫と言うわけではない。
いろんな現場から拾い上げ、
・ソフトウェアエンジニアリングから
システムエンジニアリングへ
上流、超上流、超超上流と少しづつシフトへ・・