イチから全部作ってみよう(21)ソフトウェア開発の見積もりは「KKD」がカギに:山浦恒央の“くみこみ”な話(190)(3/3 ページ)
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第21回は、ソフトウェア開発における見積もり作業の全体像を説明する。カギは「KKD」にあり!
4.なぜ見積もりが難しいのか
さまざまな不確定要素があるなかで、精度の高い見積もりをすることは簡単ではありません。場合によっては、決められた期間では終わらず、赤字になることもあるでしょう。なぜ見積もりが難しいかを以下に示します。
4.1 発注側との認識の相違
ソフトウェアは、建造物のように完成形を目で見ることは困難です。よって、プログラムは、発注側から見ると、「何でも簡単に実現できる魔法の箱」と見えがちです。例えば、「この画面ぐらいすぐできるよね」などの楽観的な要求が来ることも少なくありません。このような認識のズレが見積もりの難しさを増大する要因となります。
4.2 事前情報がほとんど得られない
見積もりは、要求仕様フェーズ確定前に行うケースがほとんどです。この段階では、詳細な要求が定まってないため、精度が高い見積もりが非常に困難です。最終的に、「度胸」による判断で決定していることが実情でしょう。
4.3 途中で話が変わる
要求仕様書をきっちり作っていても、発注側の都合や方針変更により、仕様変更となることが少なくありません。ヒアリングで「これもついでにお願いします」と軽い気持ちでお願いされることが少なくなく、うっかり「了解です」と答えると、「機能追加」となります。追加や変更規模によっては、手戻りや追加人員の配置をする必要があり、当初の見積もりから逸脱する要因となります。
5.終わりに
今回は「見積もり」をテーマとして、その概要とざっくりとした手順を解説しました。見積もりの具体的な作業は、まず開発項目を把握し、ソースコードの行数を大ざっぱに計算し、勘と経験と度胸(KKD)で必要な人月を見積もります。そのうえで、エンジニアの単価を掛け合わせた金額で決定します。
見積もり自体はシンプルですが、精度の高い見積もりをすることは非常に困難です。場合によっては、見積もりの失敗によって、会社が倒産する可能性もあります。
ソフトウェアエンジニアではない方にとって、ソフトウェアの見積もりはイメージしにくいかもしれません。しかし、このような業務もソフトウェア開発の重要な業務です。学生のように、好きなだけ時間をかけられるプログラミングは、「ビジネスとしてプログラム開発をしている一般プログラマー」には、非常にうらやましく思えます。時間とコストを無限に投入することで、研究としてのプログラミングが進化するのです。
ソフトウェア開発では、プログラミングだけでなく、見積もりの技術や技法も含めた「開発全体」に目を向けていただければと幸いです。
山浦先生執筆の書籍が販売中です!
本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
人間環境大学 環境情報学科 教授(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
イチから全部作ってみよう(20)生成AIを使えばイチから要求仕様書を作らずに済む
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第20回は、生成AIを活用してより効率の良い要求仕様書の作成に挑戦してみよう。イチから全部作ってみよう(19)今までの知識を総動員して要求仕様書を作成する
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第19回は、シリーズ第18回まで解説してきた知識を活用してECサイトの要求仕様書を作成してみよう。イチから全部作ってみよう(18)生成AIと協力してプログラミングする時代がきた
ソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」。第18回は、ちょっとした寄り道として、うるう年判定プログラムをテーマに、生成AIを活用したプログラミングのやり方を紹介する。イチから全部作ってみよう(17)レビューは記録することで効率的に実施できる
ECサイトを題材にソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」がスタート。シリーズ第17回は、レビュー工程を効率的に進めるためのレビュー記録の方法を紹介する。イチから全部作ってみよう(16)レビューは要求仕様書完成に向けた最後の関門
ECサイトを題材にソフトウェア開発の全工程を学ぶ新シリーズ「イチから全部作ってみよう」がスタート。シリーズ第16回は、「セルフチェック」に続けて行う「開発者レビュー」「顧客レビュー」といったレビューの全体像を把握する。