はじめに
Web、アプリ開発も新規開発は少なくなり追加開発の比重が増えているかと思います。最新のフレームワークを使う新規開発に比べ、追加開発のような地味で後ろ向きな開発はあまり派手な情報は出回りません。が、その中で役に立つ文献を何冊かピックアップしました。
「派生開発」を成功させるプロセス改善の技術と極意
組み込み開発は前機種からのソースコードに追加、修正して開発する場合がほとんどです。
その場合に問題になるのが以下の3つです。
- どこを修正すれば良いか。
- 修正すればどこまで影響が出るのか?
- そもそも何を変更して、何を変更すべきではないか?
これが理由でプロジェクトが予想以上に遅延および成果物の品質が低下します。
この問題に対応するために編み出されたのがXDDPという手法です。
詳細はググればわかるのですが、主にWhat(仕様)、Where(変更箇所)、How(変更方法)をコーディング前にあぶり出す手法です。
成果物のガチガチに決まった組み込み向けの開発手法なので、Web開発でそのまま適用するのは難しく、地味な内容が故にチームで取り組むのは難しいですが、個人の思考ツールとして観点だけでも応用するだけでもそれなりの成果がでます。
テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計
テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計
組み込み向けのテスト駆動開発の本ですが、30ページ程レガシーコードの改善に割かれており大変読みやすく要点がコンパクトにまとまっています。
レガシーコード改善ガイドが分厚くて読みにくい場合は参考になるかと思います。
プログラムスライシング技術と応用
2000年問題対応で使われた手法。読んでみたいがプレミアがついている。手法の一部は経験則で編み出して活用していると思う。
レガシーソフトウェア改善ガイド
[レガシーソフトウェア改善ガイド - クリス・バーチャル (著), 吉川邦夫 (翻訳)] (https://www.amazon.co.jp/dp/B01MSLAFPT)
ビジネス的判断からリファクタリングするか、リアーキテクティング、ビッグ・リライトを選択するための指針が書かれています。
単なるエゴ、興味、クセからリライトを選択しがちですが、大事なのは状況に応じて的確に判断することです。本書はこのための重要な指針を示してくれます。
組込みソフトウェア開発のためのリバースモデリング (組込みエンジニア教科書)
組込みソフトウェア開発のためのリバースモデリング (組込みエンジニア教科書)
ソースの解析、現状の設計情報(アーキテクチャ?)の抽出、立て直し方法を体系的に解説した本になります。
観点はWeb、アプリでも役に立つはずです。
『チームで育てるAndroidアプリ設計』
進化的アーキテクチャ――絶え間ない変化を支える
[進化的アーキテクチャ――絶え間ない変化を支える]
(https://www.oreilly.co.jp/books/9784873118567/)
まだちゃんと読んでいないが、つまる所、レガシーコードは事業と現状のコードの剥離と言う事で。
番外編 プログラマーのためのソースコードを読む技術
[プログラマーのためのソースコードを読む技術]
(https://www.amazon.co.jp/dp/477414293X)
何はともあれ、人のソースコードが読めなければどうしようもありません。ソースコードを読むための技術が書いてある本。初心者向け。
追記
レガシーコードをベースにした開発手法については、長年、この種の問題に苦しめられてきた組み込み業界の方がノウハウが多いです。
後、レガシーコード改善ガイドは除いています。あまりに有名で色んな方が書評しており、特にここで評価する必要性はないので。。。