Smily Books Blog 2023年7月更新中

ソフトウェア開発プロフェッショナル スティーブ・マコネル(日経BP社)

1.ソフトウェア開発の泥沼
(1)「作ってから直す」開発方式:全PJの25%が途中打ち切られる
(2)品質について
①出荷前に全体の95%を摘出したPJが生産性が最も高い
②平均的なPJでも85%、基幹系では95%以上の摘出が求められる
(3)ソフトウェアの意味
・「ソフト」の柔軟性は無限大。ハードと組み合わせ、最適な機能性が求められる
(4)ソフトウェアエンジニアリングの半減期
・SWEBOK(Software Engineering Body of Knowledge)では
ソフトウェアエンジニアリングの知識は約10年で半減すると推定(1968年当時)
現在(2003年時点)では約30年で半減

2.個人のプロ意識
(1)マイヤーズ・ブリッグス・タイプ指標(MBTI:Meyer-Briggs Type Indicator)
①心のエネルギーがどちらに向いているか?
 外向型(E:Extroversion)と内向型(I:Introversion)
②情報を収集する時どちらを重視するか?(知覚機能)
 5感型(S:Sensing)と直感型(N:Intuition)(5感型は事実、経験重視。直感型は概念理論重視)
③情報を判断する時どちらを重視するか?(判断機能)
 熟考型(T:Thinking)と感覚型(F:Feeling)
④知覚型(P:Perceiving)と断定型(J:Judging)
 知覚型は柔軟性や可能性重視、断定型は秩序コントロール重視
・ソフトウェア技術者はISTJ型が多い(全体の25〜40%)
 ①は過半数がI型
 ②、③は意思決定スタイルに関連し、②は50%ずつだが③は80〜90%がT型
・②、③の知覚/判断のスイッチは朝起きてから寝るまで常に繰り返して生活している
・①〜④は人によってどちらかに片寄りがあり、それが「心の利き手」といえる)

3.組織のプロ意識
(1)プロセス改善
・SEI(Software Engineering Institute)の調査結果
①開発者が50人以下の組織におけるプロセス改善の成功率は、より大規模な組織と同等
②体系的な改善プログラムを実施した組織のビジネスバリュー(ほぼ投資利益率(ROI)と同じ)は
 平均約500%、最大900%実現(生産性を高める事と品質を高めることの間にトレードオフは存在しない)
③以下のプラクティスで一般的に効果あり
 公式のコード・インスペクション
 公式の設計インスペクション
 長期の技術計画
 コストと品質の見積りツール
 生産性の測定
 プロセス・アセスメント
 管理者の教育
 技術スタッフの教育
・合衆国空軍PJ調査結果
 SW-CMMレベル3でほぼ見積もり精度100%、以下低くなる程コストを過小見積り(結果的に予算超過)している
(2)ソフトウェア・プロジェクトの工数見積り
・工数=2.94×KSLOC**1.10
(KSLOCはソフトウェア見積り行(1000行単位)、**1.10は1.10乗)
最も洗練されたNASAのSEL(Software Engineering Laboratory)でも
・工数=1.27×KSLOC**0.986
(3)SW-CMMの概要
①レベル1:初期(Initial)
 「スーパープログラマ」個人の貢献に大きく依存
 「作ってから直す」方式で開発
②レベル2:反復できる(Repeatable)
 類似PJ経験の流用、反復可能
③レベル3:定義された(Defined)
 未経験PJも含め、日常的に期限通りに予算内で納入可能
④レベル4:管理された(Managed)
 PJデータを一元管理し、共通の測定基準により意味のあるデータ分析可能
 これにより成果予測が可能であり、予測にバラツキがあっても対処可能
⑤レベル5:最適化する(Optimizing)
 継続的なプロセス改善と組織全体への普及ができ、
 より効果のある新プロセスの採用も実施
※レベル5評価組織の例:NASAジョンソン宇宙飛行センターのシャトル搭載ソフトウェア・グループ
 〜通常8時から5時の勤務、メンバの約半数が女性
(4)人的要因
CocomoⅡモデルでは人的要因影響度は合計24.6
(担当能力差により、最大24.6倍の工数の差が発生)
(6)動機づけ
Microsoftでは「ヤル気」を起こすためなら何に使っても良い"ヤル気予算"がある
(映画、スキー、バーベキュー等何に使っても良い)
お金以外の"褒賞制度"(チームTシャツ、マウスパッド、小旅行等)もあり、
総費用は少なくとも、心理的効果は大きい

4.ソフトウェア業界のプロ意識
(1)コーダーのための倫理規定(ACM、IEEE Computer Societyで採択)
①公共性
 公共の利益と調和する
②顧客ならびに雇用者
 顧客と雇用者の最高の利益を実現する
③製品
 可能な限り最高の水準であることを請け負う
④(ソフトウェア技術者の)判断
 専門家の判断は誠実さと独立性を維持する
⑤(ソフトウェアエンジニアリング管理者の)管理
 管理に対する倫理的アプローチに賛同し、推し進める
⑥(ソフトウェア技術者の)専門職
 専門職を高めていく
⑦職業上の同僚
 他のソフトウェア技術者に対して、公平で協力的である
⑧自己の向上
 生涯続く学習に参加し、専門性を高める
(2)ベスト・プラクティスの発表(出版)時期
①プロジェクト計画と管理
・自動化見積りツール(1973)
・リスク管理計画(1981)
②要件エンジニアリング
・構成変更委員会(1978)
・ユーザ・インタフェース試作品の廃棄(1975)
③設計
情報隠蔽(1972)
・拡張や縮小を容易にする設計(1979)
④構築
・ソース・コード制御(1980)
・インクリメンタルな統合(1979)
⑤品質保証
・分岐カバレージ・テスティング(1979)
・インスペクション(1976)
⑥プロセス改善
SW-CMM(ソフトウェア能力成熟度モデル)(1987)
・ソフトウェア・エンジニアリング・プロセス・グループ(SEPG)(1989)