Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか?

~ ソースコード理解とパッチ適用判断問題で腕試し ~

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/09/11 16:00

 コードレビューなどで、他の人のソースコードを読んだり理解したりする速度が気になることはありませんか? 私たちの研究グループで実施した観察でもソースコードを読む速度は個人差が大きいことを確認しています。この読者参加企画では、オンラインのコードレビューハンズオンにご協力いただくことで、ご自身のスキル確認やスキル向上に役立ていただくとともに、研究にも活用させていただくことを期待しています。

目次

ソースコード読解力は個人差が大きい

 コードレビューなどで、他の人のソースコードを読んだり理解したりする速度が気になることはありませんか? また、読む速度や理解する速度がとても速い人がいると感じたり、自分が周りの人よりも速いと思ったりすることがあるのではないでしょうか。私たちの研究グループで実施した観察でもソースコードを読む速度は個人差が大きいことを確認しており、同じソースコードを理解するための時間に6倍の差がある事例を確認しています。

 では、自分自身のソースコードを読む速度や理解する速度が、平均と比べて速いのか遅いのかを知るためにはどうしたらよいでしょうか? 最も簡単な方法は、社内などの身の周りの人とコードレビュー時間を比べてみることでしょう。他にも、参加者全員でソースコードを読むような社外勉強会に参加する方法もありそうです。

文献からは大まかな速度を知ることができる

 書籍、標準、論文の情報も参考になるでしょう。表1は国際標準や文献に掲載されているコードレビュー速度の一覧です。文献によっては、プログラミング言語が明記されていないものもあります。他にも、どのようなプロジェクト、前提、手順で実施したものかも勘案する必要があるので、これらのコードレビュー速度は大まかな指標として捉えるのがよいでしょう。

表1 標準や文献での参考値
文献名 コードレビュー速度
(1時間あたり)
公開年
IEEE: IEEE Standard for Software Reviews and Audits(1028-2008) 100~200行(Technical reviews) 2008
ワッツハンフリー: TSPi ガイドブック(Introduction to the Team Software Process)、秋山義博 監訳、JASPIC TSP研究会訳、翔泳社 200行以下(インスペクション) 2008(1999: 原著)
M. Fagan: "Design and code inspection to reduce errors in program development", IBM Systems Journal, vol. 15, No. 3, p 181-211 700~900行(問題発見)、500~700行(問題指摘)、(インスペクション、COBOL, コメント行含まず) 1976

ハンズオンワークショップでの事例

 私たちの国際研究グループが主催した「ソフトウェアインスペクションワークショップ2009」では、レビュー観点をセキュリティに限定し、1時間10分で4,500行のJava言語から欠陥の発見をするハンズオンを実施しました(図1)。ワークショップ参加者は、実務でソフトウェア開発に携わる様々な企業に所属する方です。事後アンケートから、参加者93名のうち32名が普段の業務でのコードレビューのほうが速い(時間当たりに読み進めるソースコード量が多い)と回答しました。表1の値とはずいぶん異なりますが、特定の観点に限定することで読むべき部分を限定し、みかけ上の読む速度が上がることもあると考えることができそうです。

図1 ワークショップでのレビューの様子
(この後、参加者どうしでグループディスカッションをしました)
図1 ワークショップでのレビューの様子(この後、参加者どうしでグループディスカッションをしました)

オンラインでもハンズオンワークショップを

 紹介したハンズオンのアンケートをはじめ「オンラインでもできるものを」という要望をたくさんいただいています。そこで、対象ソースコード、読みすすめ方など、条件をある程度そろえ、参加者の結果を共有できる題材(ハンズオン題材)を用意することを考えました。ハンズオンは、参加者にとっては腕試し、私たち研究グループにとっては研究題材になります。題材の準備や研究テーマは奈良先端科学技術大学院大学 博士前期課程の保田 裕一朗氏が中心となって進めています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 森崎 修司(モリサキ シュウジ)

    国立大学法人 奈良先端科学技術大学院大学 情報科学研究科 助教 ソフトウェアレビュー/ソフトウェアインスペクション、ソフトウェア計測を専門とし、研究・教育活動をしている。奈良先端科学技術大学院大学にて工学博士を取得後、情報通信企業でソフトウェア開発、開発管理、レビューに従事。現在、同大学院に奉...

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5