テスト駆動によるリファクタリング実践トレーニング
トレーニングの着地
問題の発見と評価は客観的な解析方法を用いる
経年劣化を防ぐものなので、抜本的な原因分析は行わずに、解決策の立案を行う
コード変更の前後で振舞いが変わっていないことを保証する
日常的な活動として「リファクタリング」を実施できるよう効率化する
トレーニング内容
現在の組込みソフトウェア開発の現場は、多くの製品バリエーションと短い周期でのバージョンアップに追われています。長期間、保守されてきたコードは、多くの人が追加修正し、今では「なぜこうなっているのか?」誰も説明できないものも数多くあります。今のコードを使い続けるべきか、一度捨てて再構築するのか...グローバルに競争が激化した今の経営環境では、再構築を選ぶ余地はなく、大規模あるいは小規模な「リファクタリング」を続けながら、少しずつコードを改善し、状況も改善していく...それが唯一残された道と言えます。
しかし、「リファクタリング」への一歩を踏み出すのは、容易なことではありません。その理由としては、次の3つがあげられます。
・開発に忙しく、時間が取れない
・「リファクタリング」するためのノウハウがない
・検証に不安がある
これらが解決されないまま「リファクタリング」をしてしまうと、「リファクタリング」が失敗に終わるだけでなく、プロジェクト自身にも大きなダメージを与えてしまいかねません。
サービスや料金について
詳しく知りたい方はこちら
基本情報
対象者 | ・人のコードを引き継ぎ、「リファクタリング」の実践が必要な人 ・現状のコードベースの開発を少しでも良くしていきたいと考えている人 ・修正による副作用が心配で、「リファクタリング」に踏み切れない人 |
受講前提 | C言語による開発経験 |
必要時間 | 1日間 |
テスト駆動開発を実施
~自動テストフレームワーク"Gooqle Test"~
「リファクタリング」は、Before/ Afterで振舞いを変えないことが鉄則です。それを保証するために、テスト駆動のプロセスを使います。
「リファクタリング」をする前に、「リファクタリング」対象範囲の振る舞いを確認するためのテストプログラムを作成し、実行したログを保存しておきます。そこで保存したログが、「リファクタリング」後に満たすべき振舞いの目標となります。
本トレーニングでは、自動テストフレームワークとして "GoogleTest"を使います。
継続的インテグレーションの有効性を理解
~CIフレームワーク"Jenkins"~
~自動テストフレームワーク"Gooqle Test"~
継続的インテグレーション(Continuous Integration = CI)とは、開発における品質と生産性の向上のために、ビルドからテストまでの一連の動作をシステムを使って自動化し、関係者で情報共有して早期に問題賭け欠をする、開発の習慣を指します。
テスト駆動開発による「リファクタリング」では、一連の作業をCI(継続的インテグレーション)により自動化することで、「リファクタリング」を効率的に実施することを狙いとしています。
継続的インテグレーション(CI)を実現するためには、自動化ツールが不可欠です。上図で示しているのは、コードの構成管理も含めたシステムの例です。このよに、複数のツールを連携し、CIフレームワーク上にさまざまなツールを組み込むことで、CI(継続的インテグレーション)を実現します。
下図はJenkinsのダッシュボードの画面です。このように、品質の状況とトレンドをすぐに把握することができます。
本トレーニングでは、CIフレームワークとしてJenkinsを例に、リファクタリング・品質改善の活動にどのように役に立つのかを具体的に説明します。
サービスや料金について
詳しく知りたい方はこちら
お客様の声
2018年9月
リファクタリングと単体テストの関係性が良く分かりました。
役立ち度
2018年9月
今まで手動でテストしていた部分の時間が短くできそうです。
役立ち度
2018年9月
リファクタリングに対する基本姿勢、考え方をおさらいできた。
役立ち度
2018年10月
改造案件が多いので、体系だった手法があるのはとても助かる。
役立ち度
2018年9月
どの観点から修正すべきなのか、演習を通して理解することが出来た。
役立ち度
集合トレーニング
USDM入門/実践トレーニ.. システムアーキテクチャ設.. MATLAB/SimulinkによるMB.. XDDP入門/実践トレーニン.. テスト駆動によるリファク..モデリングスキル強化トレ.. 思考整理トレーニング モデリキ基礎トレーニング モデリキ応用トレーニングSPLトレーニングレガシーリファクタリングの関連サービス
適用支援
レガシーリファクタリング実施支援サービス
ソースコード診断による問題の把握から、あるべき姿への改善まで、設計技術支援とプロセス設計によって、レガシーコードの改善を総合的に支援します。
適用支援
要求仕様書作成サービス
「要求仕様書」を作成したいのに作成する工数が取れないといったお客様に向けて、エクスモーションが制御仕様書や機能仕様書などの既存資料の調査や開発者へのヒアリングを行って「要求仕様書」を作成します。
適用支援
レガシーシステム開発救済診断
「レガシー開発」の良し悪しを、定量・定性の両面で、経験豊富なコンサルタントが診断し、救済への道筋を提示します。
適用支援
レガシーシステム開発
レスキュー隊派遣サービス
「レガシー開発」を救済するためのプロジェクトを主導していく、通称『レスキュー隊』を派遣します。経験豊富なコンサルタントが、救済プロジェクトを主導していくとともに、「見える化」・「自働化」・「リファクタリング」など、ソフトウェア開発技術の知見と経験を併せ持つレスキュー隊が、実際に手を動かして、「レガシー開発」を救済いたします。
リファクタリング関連ソリューション
レガシーリファクタリング
「派生開発」で肥大化・複雑化したシステムを救済するために欠かせない「リファクタリング」の失敗しないためのポイントと進め方。静的解析による問題の特定と、経験豊富なコンサルタントによる、プロセス・環境・人材をトータルで改善する「失敗しないリファクタリング」
レガシー救済プロジェクト
「テスト駆動」「CI(継続的インテグレーション)」「ライトなリファクタリング」等の導入で、無理なく開発プロジェクトを救済します。理想的な開発をあえて目指さず、リスクが低減した制御可能なプロジェクトを目指します。