知識マップ: ソースコードも仕様書もないシステムを引き継いだら ── 止めずに運用・保守するための実務手順
記事「ソースコードも仕様書もないシステムを引き継いだら ── 止めずに運用・保守するための実務手順」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
ソースコードも仕様書もない業務システムを引き継いだ場合、最初にすべきは改修ではなく現状の保全で、Disk2vhdによるディスクイメージ化とVSSを使ったバックアップを取得し、復元できることまで確かめる。次に実行ファイル・自動起動・スケジュールタスクなどをAutorunsやProcess Monitorで棚卸しし、業務利用者へのヒアリングや実挙動の観測から仕様を復元していく。中身の復元可能性は技術スタック次第で、通常のIL形式の.NETアセンブリはILSpyでかなり読める一方、Native AOT発行やVB6は逆コンパイルによる復元が現実的でなく、著作権法第30条の4や使用許諾契約の解析禁止条項も事前に確認する必要がある。中身の分からないシステムの調査は準委任契約で進め、仕様が固まった個別改修だけ請負に切り替えるのが健全な進め方である。
flowchart LR
accTitle: ソース・仕様書のないシステム引き継ぎの知識マップ
accDescr: 現状の保全・棚卸し・仕様復元という実務の順序と、技術スタックによる逆コンパイルの可否、著作権法上の留意点、契約形態の選び方の関係を示す図
legacy_system_handover["ソースコード・仕様書がないシステムの引き継ぎ"]
environment_preservation["現状の保全"]
spec_recovery["仕様の復元"]
disk2vhd["Disk2vhd"]
vss["VSS(ボリュームシャドウコピーサービス)"]
asset_inventory["構成要素の棚卸し"]
autoruns["Autoruns"]
procmon["Process Monitor(procmon.exe)"]
user_hearing["業務利用者へのヒアリング"]
decompilation["逆コンパイル"]
ilspy["ILSpy"]
dotnet[".NET(Core以降)"]
native_aot["Native AOT"]
vb6["Visual Basic 6.0(VB6)"]
obfuscation["難読化(オブファスケーション)"]
pdb["PDB(プログラムデータベース)"]
copyright_law_article_30_4["著作権法第30条の4"]
eula_restriction["使用許諾契約(EULA)の解析禁止条項"]
quasi_mandate_contract["準委任契約"]
ukeoi_contract["請負契約"]
legacy_system_handover -->|"前提とする"| environment_preservation
environment_preservation -.->|"利用する"| disk2vhd
disk2vhd -->|"利用する"| vss
legacy_system_handover -->|"前提とする"| asset_inventory
asset_inventory -.->|"利用する"| autoruns
asset_inventory -.->|"利用する"| procmon
legacy_system_handover -->|"前提とする"| spec_recovery
spec_recovery -->|"利用する"| user_hearing
spec_recovery -->|"利用する"| procmon
spec_recovery -.->|"前提とする"| decompilation
decompilation -.->|"利用する"| ilspy
decompilation -.->|"前提とする"| dotnet
decompilation -->|"用いるのは非推奨"| native_aot
decompilation -->|"用いるのは非推奨"| vb6
obfuscation -.->|"軽減する"| decompilation
pdb -.->|"推奨される対応"| decompilation
decompilation -->|"前提とする"| copyright_law_article_30_4
eula_restriction -.->|"両立しない"| decompilation
legacy_system_handover -.->|"前提とする"| quasi_mandate_contract
quasi_mandate_contract -->|"より先に行うべき"| ukeoi_contract
environment_preservation -->|"より先に行うべき"| asset_inventory
asset_inventory -->|"より先に行うべき"| spec_recovery
概念間の関係(全22件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- ソースコード・仕様書がないシステムの引き継ぎは現状の保全を前提とします。
- 現状の保全はDisk2vhdを利用します。
- Disk2vhdはVSS(ボリュームシャドウコピーサービス)を利用します。
- ソースコード・仕様書がないシステムの引き継ぎは構成要素の棚卸しを前提とします。
- 構成要素の棚卸しはAutorunsを利用します。
- 構成要素の棚卸しはProcess Monitor(procmon.exe)を利用します。
- ソースコード・仕様書がないシステムの引き継ぎは仕様の復元を前提とします。
- 仕様の復元は業務利用者へのヒアリングを利用します。
- 仕様の復元はProcess Monitor(procmon.exe)を利用します。
- 仕様の復元は逆コンパイルを前提とします。
- 逆コンパイルはILSpyを利用します。
- 逆コンパイルは.NET(Core以降)を前提とします。
- 逆コンパイルをNative AOTに用いることは推奨されません。
- 逆コンパイルをVisual Basic 6.0(VB6)に用いることは推奨されません。
- 難読化(オブファスケーション)は逆コンパイルを軽減します。
- PDB(プログラムデータベース)は逆コンパイルに対する本記事の推奨です。
- 逆コンパイルは著作権法第30条の4を前提とします。
- 使用許諾契約(EULA)の解析禁止条項は逆コンパイルと両立しません。
- ソースコード・仕様書がないシステムの引き継ぎは準委任契約を前提とします。
- 準委任契約は請負契約より先に行うべきです。
- 現状の保全は構成要素の棚卸しより先に行うべきです。
- 構成要素の棚卸しは仕様の復元より先に行うべきです。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。