テクノロジー
技術レポート:アーカイブ
Category:カーエレクトロニクス
レビュー支援ツール「電子DIFF」の開発

近年、ソフトウェア開発における品質向上の施策の一つとして、三菱電機(株)姫路製作所における自動車制御ソフトウェア開発では、ソースコードレビューに重点をおいて取り組んでいる。レビュー実施方法は、ソースコードを印刷し、レビューアが目視確認しつつ、レビュー進捗や指摘内容を手書きするのが一般的であった。一方、自動車制御ソフトウェアは、法規への対応や環境問題への取組等により複雑化、大規模化の一途を辿っている。このため、目視、手書きによるソースコードレビュー作業の効率化や品質向上が強く求められていた。これを支援するために、ソースコードレビューをPCで実施可能なレビュー支援ツール「電子DIFF」を開発した。本稿では、ツール機能の概要と導入効果を紹介する。
参考情報:
レビュー支援ツール「電子DIFF」の開発 1.まえがき 近年、ソフトウェア開発における品質向上の施策の一つとして、三菱電機(株)姫路製作所における自動車制御ソフトウェア開発では、ソースコードレビューに重点をおいて取り組んでいる。レビュー実施方法は、ソースコードを印刷し、レビューアが目視確認しつつ、レビュー進捗や指摘内容を手書きするのが一般的であった。一方、自動車制御ソフトウェアは、法規への対応や環境問題への取組等により複雑化、大規模化の一途を辿っている。このため、目視、手書きによるソースコードレビュー作業の効率化や品質向上が強く求められていた。これを支援するために、ソースコードレビューをPCで実施可能なレビュー支援ツール「電子DIFF」を開発した。本稿では、ツール機能の概要と導入効果を紹介する。 2.従来のソースコードレビューの問題点 自動車制御ソフトウェア開発では流用開発が多数を占めており、流用開発ではソースコードの変更箇所に着目したレビューを実施する。電子DIFF導入前のソースコードレビューは、図1に示すとおりソースコードの印刷、変更箇所の目視確認、手書きによる記録であり、全て目視、手作業で実施していた。このレビュー作業の問題点は、下記の4点である。(1)進捗状況の把握が困難印刷物に対して、確認済みのマーキングや指摘コメントを記入する。このため、対象ソースコードの確認完了数や指摘件数といった状況を定量的に把握できない。(2)確認・処置漏れの発生レビューが必要な箇所や指摘コメントが手書きされている箇所は、目視で確認する。このため、レビュー漏れや指摘コメントを見落とす可能性がある。(3)レビュー報告書作成作業の増大レビュー実施の都度、実施範囲、指摘内容や指摘密度等のデータを報告書にまとめる。レビュー結果を手書きした印刷物から、これらのデータを目視で収集し、報告書へ転記するが、レビュー対象の規模の増加やレビュー頻度の増加に伴い、報告書作成工数も増加している。(4)紙資源の大量消費レビュー対象行数は、少ない場合は数十行、多い場合は数万行にもなる。これらをレビューアの人数分印刷する必要があった。3.ツールの概要流用開発のレビューにおける、差分管理や2章で述べた問題点の解決と効率化を目指して、表1に示す9つの機能を実現した。機能の詳細は3.1節以降で述べる。今次開発した電子D I F F は、W i n d o w s 上の. N E TFramework(注1)を利用して動作するGUIツールとして開発した。表1.機能一覧機能目的差分表示差分管理、「紙資源の大量消費」を解決マーキング・カバレッジ「進捗状況の把握が困難」を解決コメント・課題管理「確認・処置漏れの発生」を解決フォルダ比較差分管理レビュー資料管理「レビュー報告書作成作業の増大」を解決レビュー結果の更新効率化、「紙資源の大量消費」を解決レビュー結果のマージ効率化レポート出力「レビュー報告書作成作業の増大」を解決影響箇所の分析支援効率化一般論文レビュー支援ツール「電子DIFF」の開発姫路事業所 開発部 開発第4課奥川 佐代子、末友 貴大図1.従来方式レビューのフロー図(注1).NET Frameworkは米国マイクロソフト社が提供するアプリケーションの開発・実行環境。73レビュー支援ツール「電子DIFF」の開発3.1 差分表示機能差分表示機能は、差分箇所を明示する機能である。図2のようにPC上で変更前後のソースコードを横並びに表示し、変更箇所は行単位やカラム単位で色塗り表示する。これにより、紙で実施していたときと比べ、レビューが必要な箇所の視認性を向上することができる。3.2 マーキング・カバレッジ機能マーキング機能は、従来印刷物に蛍光ペンで確認済み箇所へ色塗りしていた作業を、画面表示したソースコードに色塗りすることで実現したものである。カバレッジ機能は、図3のようにレビュー対象行数に対し、マーキングした割合を確認完了(カバレッジ)率として表示する。これにより、進捗状況を可視化し、レビュー漏れ防止をすることができる。3.3 コメント・課題管理機能コメント機能は、従来印刷物へ手書きしていた指摘コメントを画面表示したソースコードに対し、テキスト入力するものである。図4のように、ソースコード上にテキストボックスを挿入する。指摘コメントは、質問や確認などの一般コメント、処置すべき課題コメントとして設定できる。課題コメントとして分類したものは、コメント内容に加え、処置状況も登録できる。課題管理機能は、課題コメントとして登録した課題の処置状況を一覧表で確認する機能である。従来は、印刷物に手書きした指摘コメントを抽出し、その処置状況を目視確認していたが、図4のように画面に指摘コメント一覧を表示することで、課題の処置漏れを防止できる。3.4 フォルダ比較機能フォルダ比較機能は、ソースコードを格納しているフォルダ単位でファイル比較を行うものである。自動制御ソフトウェア開発における1プロジェクトあたりのソースファイル数は200以上であり、フォルダは機能ごとに階層化された複数のサブフォルダから構成されている。このようなフォルダ同士でレビューする際に、本機能を用いることで、フォルダ全体のレビューが必要な箇所を容易に確認できる。図2.ソースコード差分表示例図3.マーキングカバレッジの表示例図4.コメントの登録例74レビュー支援ツール「電子DIFF」の開発また、図5のようにファイルツリービューを用い、ファイル単体の差分行数やカバレッジ率、課題数などと併せて、サブフォルダ単位の集計結果も表示する。フォルダ全体の差分行数やカバレッジ率、課題数は一覧でも表示し、一目で進捗状況が確認できる。3.5 レビュー資料管理機能レビュー資料管理機能は、ソースコードレビューに係る複数のドキュメントを1ファイルに集約するものである。従来のソースコードレビューでは、レビュー時のコメント一覧表、レビュー対象のソースコード、レビュー進捗管理表等の複数のドキュメント管理が必要であった。これらの資料はレビュー毎に手作業で更新する必要があり、レビュー用ドキュメントの管理に多くの工数を要していた。そこで、図6のように、レビューに係るドキュメント一式を電子DIFFプロジェクトファイルとして集約することで、ドキュメント管理を自動化し、管理工数を削減した。3.6 レビュー結果の更新機能更新機能は、3.5節で述べた電子DIFFプロジェクトファイル内に保持しているソースコードを最新状態へ更新するものである。ユースケースは、レビュー時の指摘コメントに基づきソースコードを修正し、再レビューする場合である。電子DIFF導入前の紙によるレビューでは、次の手順で再レビューを実施していた。①流用元ソースコードと指摘コメントに基づき修正したソースコードの差分を印刷②前回レビュー時に確認が完了した箇所へのマーキングと指摘コメントを印刷物へ手書きで転記電子DIFFでは、①②を自動で行い、再レビューを即実施可能とした。前回レビュー時の確認済みマーキングと指摘コメントを自動的に引き継いだ上で、指摘コメントに基づき修正した行については、確認済みマーキングを削除することで再レビューを促す。3.7 レビュー結果のマージ機能レビュー結果のマージ機能は、複数人が同一プロジェクトに対し、個々にレビューした結果をマージするものである。ユースケースは、複数人がレビューをファイル単位で分担し、その結果をまとめる場合や同一ソースコードを対象に複数人がレビューした結果をマージする場合である。本機能では、各自が入力したマーキングや指摘コメントを1つのファイルにまとめることができ、カバレッジ機能や課題管理機能を利用してレビュー漏れや処置漏れをなくすことができる。図5.フォルダ情報表示例図6.管理対象ドキュメントの比較75レビュー支援ツール「電子DIFF」の開発3.8 レポート出力機能レポート出力機能は、レビュー結果をエビデンスとして残すことを目的に、マーキング行や指摘コメントに加え、ソースコード行数やソースコードに含まれるコメント行数等の統計情報をPDFファイルやExcelファイルへ出力するものである。出力形式は、図7のような統計情報と図8のように各ファイルの差分を一覧表示した形式があり、レビュー報告書の添付用資料として利用できる。3.9 影響箇所の分析支援機能影響箇所の分析支援機能は、ソースコードの変更で影響を受ける箇所の分析を支援するものである。本機能は、客先指定の変数名や関数名をソースコードから検索し、一致した行に対して、差分表示機能を用いて色塗り表示する。図9のように明示することで影響箇所としての確認を促す。確認作業では、前述のマーキング・カバレッジ機能、コメント・課題管理機能やレポート出力機能等を活用し、漏れなく、効率よく影響箇所を確認できる。図7.DIFFリスト出力例図9.影響分析支援図8.ファイル情報の出力例76レビュー支援ツール「電子DIFF」の開発4.電子DIFF導入による効果電子DIFF導入による効果を表2に示す。ある部門におけるレビューでは、電子DIFFを利用することにより、資料の作成や管理などに要する時間が1レビューあたり平均約0.5h削減できる見込みである。年に約1000回のレビューが実施されるため、レビュー時間の削減は約500hr/年となる。また、紙資料の印刷が不要になることから、1レビューあたり、平均A4約15枚の印刷物が削減できる見込みである。起用した部門においては、約15,000枚/年の削減となる。表2.従来方式と電子DIFFのレビュー方法項目従来方式電子DIFF導入管理工数大小印刷したソースコード、コメント一覧等多数のファイル電子DIFFプロジェクトで管理レビュー精度低高目視確認のため、漏れ発生の可能性あり。進捗状況を自動計算して表示することで漏れを防止レポート作成工数大小目視でレビュー結果を確認し、手作業で作成。レビュー統計情報(指摘数、指摘内容)を自動収集し、レポートを作成。資源消費大小紙資料の印刷が必要紙資料の印刷が不要5.今後の展開自動車制御ソフトウェアのソースコードだけでなく、WordやExcelで作成している仕様書や契約書のレビューに使用したいとの要望が多く、是非これを実現したい。また、ソフトウェアの流用開発だけでなく、新規開発時のレビューにも対応する必要があると考えている。電子DIFFはレビューを実施している部門であれば、他事業所、社外においても有益なツールと考えるため、ツールの機能強化とともに、利用ユーザ数を増加させるべく展開を図っていく。6.むすび電子DIFFの開発に際し、ご支援ご協力いただいた関係者の方々に深く感謝申し上げる。執筆者紹介奥川 佐代子 オクガワ サヨコ2000年入社。主にECUソフトウェア開発支援システムのソフトウェア開発に従事。現在、姫路事業所開発部開発第4課。末友 貴大 スエトモ タカヒロ2015年入社。主にECUソフトウェア開発支援システムのソフトウェア開発に従事。現在、姫路事業所開発部開発第4課。