TIS株式会社様
「Jtest」のアプリケーションカバレッジ機能を導入し、システムマイグレーション後の結合テストの品質評価と効率化を実現
- ソフトウェア品質保証
- 関連サービス/製品:
-
Java対応静的解析・単体テストツール Jtest
— みずほトラストシステムズについて、ご紹介ください。
当社は、みずほフィナンシャルグループの信託銀行業務と公共法人のIT戦略を具現化することに特化したシステムインテグレータです。
信託銀行向けの基幹業務システムとしては、「勘定系・情報系オンラインシステム」をはじめ、「不動産信託システム」、「資産流動化システム」などを開発・保守しています。
また、地方公共団体をはじめとする各種公共法人向けのシステムとしては、「地方公務員の共済年金に関する各種システム」をはじめ、「地方公務員の医療給付および福祉に関する基幹システム」、「特別徴収システム」などを開発・保守しています。
— みずほトラストシステムズにおけるソフトウェア品質向上の取り組みについて教えてください。
当社が専門特化して開発している金融関連のシステムには、不具合を出すことが許されない高い信頼性が求められます。万が一、システムの不具合によって業務が行なえないなどの問題が発生すれば、社会的なインパクトは大きく、企業や個人の資産にも影響することになりかねないからです。そのため、開発するシステムの品質には細心の注意を払わなくてはなりません。
当社では、ソフトウェア開発の品質向上と効率化、標準化を目指し、2008年頃からシステム開発環境のフレームワークの構築に取り組んできています。主にJavaを対象としたこの開発フレームワークには、自社開発ツールをはじめ、プロジェクト管理ツール、単体テストツール、CIツールなど様々なツールを取り入れています。
開発フレームワークへ追加するツールは、予算や導入の優先順位、既存の開発環境との相性なども考慮しなければなりませんが、不具合を引き起こす原因となるバグを1つでも多く潰すことができれば、積極的に導入を検討しています。
— 今回、開発フレームワークに追加でJtest 導入を検討した理由は何だったのでしょうか。
解析の実施をルールとして定めてきました。しかし、運用については各開発者に一任しており、使用するコーディングルールの統一をおこなったり、解析状況を全て把握するまでには至っていませんでした。
しかし、このような状況では今後も複雑化・多機能化が進む金融システムの開発において、品質の確保は難しくなっていくため、組織的な運用ができるツールが必要と考え始めました。また、恒常的に品質の高いソースコード開発を実現するためには、ツールの運用におけるサポート面も無視できません。何か問題が発生した際の迅速な対応という意味で既存のOSSツールでは限界があるのではと感じていました。
さらに効率的な品質確保のために、コーディング段階でできるだけバグを見つけ出し、早い段階で対応しておきたいとも考えていました。そうすることで、結合テスト以降におけるバグの残存を防止し、手戻りによるリリーススケジュールの遅延やコスト増加のリスクを避けられます。
このような理由から、既存の静的解析ツールに代わるものを検討していた際に見つけたツールが、今回導入にいたったJtestです。
「金融関連のシステムには、常に高い
信頼性が求められます」
(小林氏)
— 今回、Jtest のどのような点を評価し、導入されたのですか。
従来の静的解析ツールでおこなっていたコーディング規約チェックに加え、「静的フロー解析」が実施できるようになることが決め手の1つです。これまで利用してきた静的解析ツールでは、ファイル間をまたがっ た処理フローによって発生するバグに関しては検出することが困難でした。また複雑に遷移する処理フローをコードレビューによって一つひとつチェックしていくことは、現実的には不可能に近くなります。さらに、ある特定の処理でしか発生しない非常に稀な不具合を見つけることは特に困難で、バグが潜在化してしまう傾向にあります。
Jtestのフロー解析機能はファイル間をまたがった複雑な処理フローも網羅的に解析し、不具合の原因となるバグを指摘してくれます。コードレビューで見つけるには多くの工数が必要となっていたバグも効率的に検出できるようになる上、これまでは結合テスト以降でしか見つけることが難しかったバグも、コーディング段階で見つけることができるようになり、バグの早期対応も実現できます。
パイロットとして既存のプロジェクトに対してJtestによる解析を行ってみたところ、不具合の要因と予測されていたソースコード上の問題を的確に検出することができました。また同時に、バグの原因となるポイントを開発者に知らせることができるため、自然と正しいソースコードの書き方が開発者に浸透していくことにも期待できました。
導入にいたれば、新規開発するソフトウェアや改修するソフトウェアは、Jtestを組み込んだ新しい開発フレームワークを活用していくことになります。Jtestにより個人レベルだけはでなく、組織としてのレベルアップにもつながり、品質の向上とスキルアップを恒常的に実現できる仕組みが確立できると感じました。
他にもいくつかの商用ツールを検討したのですが、導入実績が豊富で、コーディングルールチェックや単体テストなど機能面でも充実していること、さらにサポート体制がしっかりしていることもJtestを選定したポイントとなりました。
— Jtest を組み込んだ開発フレームワークを使用して開発したソフトウェアはどういったものですか。
年金の一元化にともない新しく開発した共済年金関連のソフトウェアが第一号となります。ソースコード行数は100万行規模のもので、当社で開発しているシステムでは中規模程度のものになります。 — Jtest を導入した効果について教えてください。 「問題点の早期発見」、「コードレビューの充実」、「受け入れソフトウェアの品質向上」といった効果を実感しています。詳細は、次の通りです。
【効果1】問題点の早期発見
Jtestによる解析の結果、これまで見つけることが難しい問題点や、品質向上につながる改善ポイントを、コードレビューの前段階で洗い出せるようになりました。具体的な数値などでは表しにくいのですが、少なくとも結合テスト時になって「NullPointerException」などの問題が発覚するということはなくなりました。
【効果2】コードレビューの充実
解析結果に基づいたコードレビューを実施することで、潜在化しがちであった問題点や課題を可視化し、組織内でそれらを知識やノウハウとして共用できるようになりました。そのため、コードレビュー自体の内容が充実し、開発の現場の意識変革にもつながっていると考えています。その結果、個人レベルのスキルだけに頼るのではなく、組織としてソフトウェアの品質を担保する体制づくりが、確立されつつあると捉えています。
【効果3】受け入れソースコードの品質向上
外部協力会社に開発を委託したソースコードを受け入れる際、これまでのコードレビューによるチェックに加え、今回さらにJtestによる解析結果も新たな品質の指標として加わりました。複数の協力会社で開発されたソースコードの品質を、一定の基準で比較・評価できるようになり、分析結果に基づき協力会社へ具体的な指示が出せるようにもなりました。協力会社側でもJtestの解析を意識した品質の高いコーディングが次第に浸透し、プロジェクトが進むにつれてJtestによる指摘事項も減っていくという傾向が見られました。ソフトウェア開発における品質レベルが上がり、定着しつつある証だと考えています。
「結合テスト時に、初歩的なソースコードに
起因する問題が減りました」(江上氏)
— Jtest を導入する際に、苦労した点などはありましたか。
見つけたいバグを検出するためには、適切なコーディングルールをJtestで設定する必要がありました。そこで、テクマトリックスに従来の社内ルールドキュメントを元にJtestで対応できるルールを選定していただくとともに、標準機能では対応できないルールに関してはカスタマイズで対応していただきました。
— 今後の取り組みについて、教えてください。
今後はまず「開発早期からの定常的な解析の実施」を徹底していきたいと考えています。今回のプロジェクトでは、開発早期からJtestによる解析の実施を明確に示せてなかったため、開発フェーズが移る際にまとめて解析をかけるような使い方になってしまいました。それでも大きな成果はあったのですが、定期的に解析を実施することで、より品質の高いコーディングの習慣が定着するのではないかと考えています。また、新規のプロジェクトに対してはもちろんですが、過去のプロジェクトに対して改修が発生した場合には、Jtestによる再解析を行っていくことも検討しています。
— テクマトリックスへの要望や期待等があればお聞かせください。
JtestはもとよりJenkins連携に関するアドバイスなども的確で、ここまできちんと対応してくれるツールベンダーは他にはいません。テクマトリックスには、Jtestの導入効果を高めるサポートや提案を期待すると同時に、これまで変わらない丁寧かつ迅速な対応を期待しています。
「テクマトリックスの丁寧かつ迅速な
サポートには助けられました」
(渡辺氏)
お忙しい中、貴重なお話をお聞かせいただきありがとうございました。
システム技術部
部長
システム技術部
システム技術部
ソフトウェアエンジニアリング事業部