Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

ソフトウェアエンジニアリング左道

「ソフトウェアエンジニアリング左道」という言葉を思いついた。生産性や品質向上を目的としたソフトウェアエンジニアリングでなく、どうしようもない状況をどうにかこうにか切り抜けたり、イヤな落とし穴をわざと作ったりするソフトウェアエンジニアリングを言う。たとえば以下のようなもの。

  • EOLを迎えたソフトウェアを「EULAは遵守してる」とかいって使い続ける
  • GPLOSSの機能を呼び出すアプリをGPLにしなくていいように、WebAPIで疎結合にする
  • TomcatのVirtualWebappLoader*1やWeb application resources*2を使って、顧客がダウンロードしたjarをWARクラスローダでロードする(依存先のOSSを納品物に含めず、顧客にダウンロードしてもらうことで瑕疵担保責任範囲から外すため)
  • ソフトウェアの動作に必須でない(けど見た目には影響する)アセットの著作権を発注元に譲渡しない(テストが大変になるので参入障壁として使える)
  • レガシーマイグレーション用のソースコードコンバータで、変換後のソースがプロプライエタリなライブラリに依存するよう仕込む
  • 開発ツールがファイル数単位で課金されるので、複数のクラスをまとめて巨大なクラスを作る
  • Delegateでなく継承でファサードを作る(責任分界点ごとに親クラスがあって、親クラスに機能が追加されていく)
  • REST APIを供えてます!と言い張ってるけど実際はJSON-RPC
  • ソースの著作権の分界点を明確化する目的でクラスの継承を使う