見出し画像

【論文レビュー】組織構造が決める!? ソフトウェア品質の新たな予測方法

こんにちは!テツローです。
大学院に入学してから論文レビューを書こう、書こうと思っていましたが、なかなか重い腰が上がらず、とうとう10月が終わってしまいました。。。
もう目の前にLFP(リーダーシップ・ファイル・プロジェクト)が迫っているというのに、これではダメだ!と思い、今日から論文レビューはじめます。
もちろん、今までも論文は読んではいたのですが、その内容をまとめるということが億劫でした。ただ、自分で読んだ内容をまとめないとすぐに忘れてしまうし、思考も深まらないなぁということを実感しつつあったため、今日から頑張ります!

さて記念すべき第1回目の論文レビューは、ソフトウェアの品質は、そのソフトウェアを開発する組織構造の影響が大きいのではないか?という仮説を検証する論文です。


0.今日の論文

The Influence of Organizational Structure on Software Quality: An Empirical Case Study(2008)
ソフトウェア品質に対する組織構造の影響: 実証的ケーススタディ
Nachiappan Nagappan, Brendan Murphy, Victor R. Basili

1.ひとことで言うとこんな感じ

ソフトウェアの品質は、そのソフトウェアを開発する組織構造の影響が大きいのではないか?という仮説を検証する論文で、開発組織の構造や複雑さを数値化して測定することで、ソフトウェアの品質(バグの発生しやすさ)を高い精度で予測できることを明らかにした研究。

優秀なエンジニアがいれば品質が上がる、というものではなく、組織構造の複雑さによって品質に影響が出るという事実がめちゃくちゃ興味深い!

2.なぜこの研究が重要なのか(社会的背景)

自分も長いことこの業界にいるので分かるのですが、大規模なソフトウェア開発では、多くのチームや個人が協力して作業を行います。以前から「組織構造が製品の品質に大きな影響を与える」と言われていたようなのですが、それを裏付ける具体的な証拠はなかったそうです。特に近年はグローバル開発が増えて世界中にチームが分散するようになり、組織構造が品質に与える影響を理解することがより重要になってきている、という背景もあるようです。

3.研究で明らかにしたかったこと(リサーチクエスチョン)

  • 組織の複雑さは品質にどのように影響するのか

  • 組織構造を測定する指標は何があるのか

  • それらの指標は、従来使われてきた品質予測の指標よりも優れているのか

4.研究の進め方

Microsoft Windowsの開発組織を対象に、以下のような流れで研究を実施しています。

  • 組織の複雑さを測る8つの指標を定義
    1.関与エンジニア数、2.退職エンジニア数、3.コードの編集頻度、4.マスターオーナーシップの深さ(編集権限)、5.開発貢献組織の割合(実際に開発に関わった人の割合)、6.組織的コード所有権レベル(編集の割合)、7.全体的な組織所有権、8.組織交差係数

  • Windows Vistaの3,404のバイナリ(実行ファイル)について、各指標のデータを収集

  • リリース後6ヶ月間の不具合データと組織指標の関係を分析従来の品質予測指標(コードの複雑さなど)と比較評価

Victor Basili氏は、メリーランド大学の教授ですが、Microsoftの中の人と協力してこの研究を進めたので上記のようなアプローチができたんでしょうね。中の人の協力ナシでは難しい内容だと思いました。それにしてもこれらの指標を使ったり評価するのは大変だっただろうなと思います。

5.主な発見・結果

  • 組織構造の指標を使うと、不具合の発生しやすいバイナリを87%の精度で予測できた

  • この予測精度は、従来使われてきた指標(コードの複雑さ、テストカバレッジなど)よりも10-20%程度高かった

  • Windows Vistaの開発者の約33%が、以前のWindowsバージョンの開発経験者だった

非常に興味深いのは、「組織構造の指標」で不具合が発生しやすいプログラムが結構な精度でわかるということ。「組織構造の指標」というのは、わかりやすく言うと「誰が」「どのように」「どれくらい」作業に関わっているかを数字で表したものです。
本研究では、これらの指標を使って「この組織の作り方だと、プログラムにバグ(間違い)が出やすいかもしれない」ということを予測できることがわかったということでなのです。

そのため、

・大勢の人が関わっているプログラム(プロダクト)
・途中で辞めた人が多いプログラム(プロダクト)
・頻繁に修正が入るプログラム(プロダクト)
・責任者が不明確なプログラム(プロダクト)

このような特徴を持つプログラムは、バグが出やすい傾向があることがわかったのです。面白いですよねー。
であれば、開発組織が上記のような”状態”になっていないか?をウォッチすることは重要なのかも知れません。

6.この研究の面白いポイント

  • 開発現場において「人と組織」という、これまであまり注目されてこなかった要素に着目した点

  • 5000万行以上という巨大なコード、数千人規模の開発チームを分析対象とした大規模な研究である点

  • 「組織構造が品質に影響する」という経験則を、データで初めて実証した点

これだけの大規模組織を対象に研究できたということ自体がすごいですし、大変だと思うけど面白いんだろうなーと思いました。研究を進める上での様々な葛藤がどういったものだったのか、という点にも興味を持ちました。

7.実務や日常生活への応用可能性

  • 開発チームの編成や組織構造を検討する際の参考指標として活用できる

  • プロジェクトの早い段階で品質リスクを予測し、テスト計画などに活かせる

  • 30人程度の比較的小規模な組織でも応用可能

実際の現場では、組織構造がプロダクトに与える影響を丁寧に説明した上で、”参考”にしてもらう程度の理解まで進めるのがファーストステップかも知れないと思いました。

8.自分なりの考察

本研究は、ソフトウェア開発における「」の重要性を改めて示していると思いました。技術的な指標だけでなく、組織や人に関する要素を重視することで、より効果的な品質管理の可能性が見えてきそうです。また、グローバル開発が一般的になる中で、組織構造が品質に与える影響を理解し、適切なチーム編成や組織設計を行うことがより重要になっていくと思います。そして、その認知が広まっていくと良いなと思いました。
今回の論文は、まさしく自分がやりたいと考えている「エンジニア x 組織開発」の研究にドンピシャな内容だったので、大変おもしろく読ませていただきました。

この記事が気に入ったらサポートをしてみませんか?