BCP整合性チェックシステム 新規開発

概要

災害時に現行システムをサテライトで継続運用するための災対システムの開発プロジェクトの一環。

前任者によって、

「稼働中の現行システムのデータをBCP対応として、バックアップサイトへ定期的に送信する」

という機能が実装・リリースされており、その付随機能として、バックアップサイトへ送信されたデータの整合性を検証し、問題箇所にパッチを適用することで、サテライトオフィスでの業務継続を可能にする整合性チェックプログラムの開発が、本プロジェクトの目的である。

  • 開発期間:2008年4月〜2010年3月
  • システム形態:バッチシステム
  • 使用技術
    • 言語:C言語(その他に、C, COBOL, VBで書かれた現行システムを読み解く作業を実施)
    • DB:Symfoware

PJ体制と担当業務

  • PJ人数:6名
  • 開発スタイル:ウォーターフォール型開発
  • 役割:PJリーダー
  • 担当フェーズ:基本設計、詳細設計、コーディング、テスト

行ったこと&思い出

30年物の現行システムのソースコードを読み解いて仕様整理

「基本的な開発は完了しているから、あとは最後に簡単なツールを作るだけ。現行システムの有識者たちに細かな仕様を確認して、簡単なパッチを充てるツールを作ればいいだけだから」

と前任者に言われて引き継いだプロジェクトだったが、 現行システムは、仕様書がほとんど存在しない30年来のシステムであり、誰も全体像を正確に把握していなかった。複数の有識者たちの言うことは一致せず、同じ人でも日によって言うことが変わるような状況だった。

有識者たちに振り回されるだけで、何が正しいのか自分で判断できないことに業を煮やし、

「ソースを読み解いて現行システムの仕様を調べるので、時間をください」

と課長に許可を得て、30年分の複雑に絡み合ったソースコードの解析に着手した。

経験のなかったCOBOLはネットで調べながら読み解き、すさまじいスパゲッティコードで書かれたVBのコードも整理しながら紐解いた。そして、システムの動作を図式化して整理し、有識者たちの確認を得ながらシステム全体の仕様を明確にまとめ上げた。

この時の経験から、どんなシステムでも読み解いて整理できるスキルと自信が身に付いた。

自分史上唯一の”リリースされなかった”システム

こうして、現行システムの全体仕様を整理した結果、災対システムの設計に根本的な欠陥があることが判明した。

既にリリース済みの災対システム本体では、稼働中の現行システムのデータをバックアップサイトへ定期的に送信していたが、データサイズが膨大なため分割して送信していた。しかし、システムの仕様を考慮せずに無作為に分割していたため、「バックアップサイト側で簡単なパッチを適用すれば使える状態になる」というレベルではなかった。バックアップサイト側での継続稼働を実現するには、システムを完全に作り直す必要があったが、顧客にはメインの開発が完了していると既に報告済みだったため、それは不可能な状況だった。

せめて、少しでもマシなシステムにしようと努力したが、最終的には上長判断により、同じ顧客先の別プロジェクトが炎上したどさくさに紛れさせる形でリリースを曖昧にする対応が取られ、2年半かけて開発を進めたシステムはリリースされることなくお蔵入りする形で終了した。

特に炎上したわけでもなく、人間関係も特に大きな問題のないプロジェクトだったが、キャリア20年を振り返ってみても、一番、自分にとって苦しかったプロジェクトだった。

やればやるほどに、どうしようもないことがわかっていくシステム。

どれだけ頑張っても、"マシ"にすることまでしかできないシステム。

決して”良いシステム”にすることができないシステム。

胸を張ってお客さんに提供することができないシステム。

エンジニアの自分にとって、“良いシステム”を作るために尽力できることが、とても大切なことなのだという気づきを与えてくれたプロジェクトでもある。