開発者の退職、開発会社との関係悪化、納品の停滞が起きても業務がアプリケーションに依存している場合、ソフトウェア開発の引き継ぎが急務になります。別のチームを見つけることは決定の一部にすぎません。また、何を管理するのか、実稼働環境で実際にどのバージョンが実行されるのか、顧客の作業を中断することなく新しい人がソフトウェアを変更できるかどうかも確立する必要があります。
ソフトウェア プロジェクトの引き継ぎは、アクセス、ビルドの再現性、データの回復、および重要なビジネス動作についての証拠に基づく評価から始める必要があります。評価を実装のコミットメントから分離し、次期チームが責任を負う前に何を証明する必要があるかについて合意します。動作する Web サイトとコピーされたリポジトリは出発点としては役立ちますが、どちらもプロジェクトが安全に運用できることを証明するものではありません。
このガイドは、買収を評価する投資家ではなく、買収を依頼する企業を対象としています。その目的は、有用なソフトウェアを保持し、配信リスクを明らかにし、より良い証拠に基づいて次の支出の決定を下すことです。これは、内部ビジネス アプリケーション、顧客ポータル、または外部チームによって保守されている製品に適用されます。
ソフトウェア開発の引き継ぎが必要になる場面
アプリケーションは、新しいアーキテクチャを必要とせずに、新しい所有者を必要とする場合があります。おそらく、リリースが不在の開発者に依存しているか、重要な変更に時間がかかりすぎるか、サポートの責任が不明確になっている可能性があります。このような場合、最初の目標は継続性です。信頼性の高い開発および運用プロセスを確立することで、以前は不可能と思われていた改善が可能になる可能性があります。
技術的な解決策を求める前に、ビジネス上の問題について説明してください。導入中に送信が失われる注文システムには、まったく構築できないプロトタイプとは異なる評価が必要です。引き続き機能しなければならないもの、次に必要な変更、およびそれを逃した場合の結果について述べます。これにより、新規サプライヤーに調査の優先順位を付けるための基礎が与えられます。
フラストレーションをすぐに書き直す要旨に変えることは避けてください。既存のシステムには、誰も文書化していない長年にわたるビジネス ルールが含まれている可能性があります。これを交換すると、目に見えない動作を失いながら、目に見える画面を再現できます。買収の評価では、代替案を提案する前に、何が価値があり、何が危険で、どの変更を独立して行うことができるかを特定する必要があります。
責任範囲を明確にする
ビジネス言語でアプリケーションの境界を描きます。ユーザーが依存するインターフェイス、ユーザーの記録を保持するデータベース、情報を移動する統合、何かが失敗したときに対応する人々が含まれます。リポジトリの境界は、顧客がサプライヤーに期待する運用上の責任よりも小さいことがよくあります。
たとえば、サプライヤーが顧客ポータルを維持し、社内の従業員が ID を管理し、別の会社が請求を実行する場合があります。新しいチームは、各システムの変更を誰が承認できるかを知る必要があります。そうしないと、一見小規模な更新が、アクセス、資格情報、またはプロジェクトに属するものだと誰も考えていなかった統合に関する紛争になる可能性があります。
何が除外されるのか、何が含まれるのかを慎重に記録してください。アプリケーションのメンテナンスの引き継ぎには、ビジネス プロセスの再設計、履歴データのクリーニング、接続されているすべてのサービスの操作が自動的に含まれるわけではありません。これらのタスクは必要になる可能性がありますが、配信計画では予期せぬ仮定ではなく、指名された所有者による個別の決定として現れるべきです。
本番環境の変更前にアクセス権と所有関係を確認する
ソース リポジトリ、ホスティング、ドメイン、デプロイメント システム、データベース、接続されたサービスをカバーする、制御されたアクセス インベントリを求めます。アカウント所有者、請求所有者、およびアクセスを回復できる人を特定します。必要に応じて会社管理のアカウントを使用し、評価に適した個別のアクセス権を新規サプライヤーに提供します。
技術的なアクセスは、素材を使用または変更するための契約上の許可とは別のものです。コードの権利、サードパーティのコンポーネント、およびサプライヤーとの契約に関する不確実性を、適切なアドバイザーを通じて解決するよう事業主に依頼してください。技術報告書は不足している証拠を特定することができますが、リポジトリを所有することですべての所有権の問題が解決されるかのように見せるべきではありません。
すべての資格情報を電子メールや参加者全員と共有するドキュメントにコピーすることから始めないでください。安全な転送方法と各タスクに必要な最小限のアクセスについて合意します。置き換える必要がある資格情報、それに依存する統合、運用を中断することなく変更を承認できる人の登録を維持します。
リポジトリの移管だけでは引き継ぎは完了しない
GitHub のリポジトリ転送ドキュメント には、関連する Webhook、サービス、シークレット、およびデプロイ キーが転送されたリポジトリに残ると記載されています。また、転送中のコラボレーターの動作についても説明します。表示される所有者の変更は、すべての古い統合またはアクセス パスを自動的に削除するものとして扱うべきではないため、これらの詳細は重要です。
移行後の実際のメンバーシップと自動化を確認します。どの資格情報が送信側サプライヤーにまだ属しているのか、どのサービスが古いリポジトリの場所を想定しているのか、送信先の組織がどの権限を適用しているのかを判断します。アクセス制御を改善してもリリース パイプラインや重要なコールバックが無効にならないように、依存関係チェックを使用して資格情報の置換を計画します。
リポジトリを運用システムに接続する引き継ぎ記録を保持します。関連するブランチ、デプロイメントソース、ビルド構成、および外部依存関係を特定する必要があります。運用アプリケーションが別のブランチから構築された場合、またはバージョン管理に入っていない手動のサーバー変更が含まれている場合、妥当なコードでいっぱいのリポジトリでは不十分です。
新しいチームがアプリケーションを再現できると示す
最初にシステムを構築した人ではない人に、付属の説明書とクリーンなチェックアウトに基づいて作業環境を作成するよう依頼してください。必要なランタイム、依存関係、構成、およびデータの前提条件を記録します。欠落している手順は、別の開発者のラップトップ上で目に見えない回避策ではなく、文書化された発見となるはずです。
デモンストレーションでは、既知のソース リビジョンを既知のアプリケーション アーティファクトに結び付ける必要があります。既存のデプロイメント パイプラインが利用可能な場合は、それを検査し、適切な非運用環境で実行します。唯一の作業用コピーがサーバー上に存在する場合は、上書きする前に何を回復して比較できるかを確立します。保存は整理整頓の前にあります。
再現可能なビルドはすべての機能が正しいことを証明するものではありませんが、引き継ぎに関する会話は変わります。チームは個人の記憶に頼ることなく、行動を調査し、テストを追加し、変更をリハーサルできるようになりました。再現が失敗した場合、固定の実装価格内に不確実性を隠すのではなく、評価で障害となる証拠を説明し、制限付きの回復タスクを推奨する必要があります。
コード品質の評価前に業務上の動作を把握する
ビジネス価値を創造、移動、保護する取り組みから始めましょう。顧客ポータルの場合、これは登録、権限、注文の送信、ステータスの更新を意味する場合があります。内部アプリケーションの場合、これは、レコードのインポート、例外の修正、財務上の意思決定に使用されるレポートの作成を意味する場合があります。
運用スタッフに正しい結果と誤った結果の例を示すよう依頼してください。販売デモで使用されるハッピー パスだけでなく、例外パスも観察してください。アプリケーションは、キャンセルされた注文、重複したインポート、または異常なアカウント権限を持つ顧客を誤って処理しながら、標準的な注文を正しく受け入れる場合があります。これらの詳細は受け入れテストの基礎となります。
コードのスタイルは徐々に改善できます。顧客の残高を変更したり、記録を紛失したりする文書化されていない行為には、早めに注意を払う必要があります。評価では、技術的な発見をビジネス上の結果、提案されたアクション、および問題を解決するために必要な証拠に結び付ける必要があります。乱雑なファイルの長いカタログは、安全な操作を妨げるものについての短い説明よりも役に立ちません。
範囲を定めてセキュリティ要件を確認する
OWASP ASVS は、Web アプリケーションのセキュリティ制御と安全な開発の要件をテストするための基盤を提供します。新しいチームは、要件の適切な選択を使用して、セキュリティ評価を明示的に行うことができます。提案書には、何を調査するのか、企業がどのような証拠を受け取るのかを記載する必要があります。
実際のアプリケーションに関連する制御 (認証、認可、機密データの処理、公開されたインターフェイス) を優先します。依存関係スキャンは証拠に貢献しますが、ユーザーが別の顧客の記録を読み取ることができないことを証明するものではありません。同様に、限られたレビューで明らかな問題が見つからなかったとしても、アプリケーションが安全であるという保証はありません。
リスクが正当である場合、乗っ取りの発見を専用のセキュリティ テスト業務から分離します。テスト前に、環境アクセス、テスト権限、操作上の制約を定義します。有用な結果は、優先順位が付けられた一連の調査結果と修復証拠であり、何が未調査のままであるかを企業が理解できるように制限が明確に記載されています。
バックアップ表示ではなく復旧を実証する
バックアップが成功したことを示すダッシュボードは心強いものですが、乗っ取りには企業が使用可能なデータを回復できるという証拠が必要です。何をバックアップするのか、どのアプリケーション コンポーネントに依存するのか、誰がリカバリ マテリアルにアクセスできるのかを特定します。アプリケーションがデータベース レコードを解釈するために必要な場合は、添付ファイル、構成、その他の状態を含めます。
隔離された環境で回復のリハーサルを行い、有意義なビジネス成果を確認します。復元されたポータルに注文とその関連文書を表示できますか?権限のある従業員は必要なワークフローを完了できますか?手順、観察された期間、不足している前提条件を記録します。テストされていない回復の約束を、慎重なリハーサルの代わりにしないでください。
データ損失の許容範囲とサービス中断について事業主と合意します。これらは評価すべき要件であり、新しいサプライヤーが推測すべき数値ではありません。現在の設定がそれらを満たせない場合は、ギャップとそれを改善するためのオプションを示します。リカバリの変更を無関係な機能の作業から切り離して、その影響を意図的に確認できるようにします。
連携と見えない定期処理を調べる
ビジネス アプリケーションは、メイン ユーザー インターフェイスにないジョブやコールバックに依存することがよくあります。スケジュールされたエクスポート、支払い通知、電子メール配信、および夜間の同期は、それらが作成された理由を誰も覚えていない場合でも実行し続けることができます。退任するチームと運用ユーザーに、それらのプロセスとその構成場所を特定するよう依頼してください。
それぞれの重要な境界を越えて代表的な記録を追跡します。宛先が利用できない場合、同じメッセージが再度到着した場合、および送信後にユーザーがレコードを修正した場合に何が起こるかを確立します。デモで一度機能した統合でも、中断後に重複が作成されたり、レコードが永続的にスタックしたままになったりする可能性があります。
すべての重要な統合に運用所有者と障害を検出する方法を与えます。アクセスの有効期限、サービス資格情報、および手動リカバリをハンドオーバーに含めます。この作業により、引き継ぎにコードを読み取るよりもコストがかかる理由が説明できます。新しいチームは依存関係のネットワークを継承しており、その動作がアプリケーション自体の外部のビジネスに影響を与えます。
証拠に基づく引き継ぎの受け入れ条件を決める
受け入れには、「チームはコードを理解しています」などの大まかな表現ではなく、目に見えるデモンストレーションが必要です。サプライヤーに、クリーンなビルド、制御された展開、重要なワークフロー、およびリカバリーのリハーサルを示すよう依頼してください。制限事項と、評価終了時に未解決の作業の所有者が誰であるかを文書化します。
次のマトリックスは議論の出発点です。散文で書かれたその中心的なメッセージは、制御、配信、ビジネス動作、回復にはそれぞれ独自の証拠が必要であるということです。 1 つを通過しても、他のものも通過することを意味するものではありません。作業記述書にテストを含める前に、アプリケーションの責任に合わせてテストを調整します。
| エリア | 要求する証拠 | 支持する決定 |
|---|---|---|
| アクセス | 指定された所有者とレビューされた権限 | ビジネスがシステムを管理しているかどうか |
| ビルドする | 既知のアーティファクトを生成するクリーンなチェックアウト | 将来の変更が再現可能かどうか |
| 行動 | 重要なジャーニーをユーザーに確認 | 必要な結果が維持されているかどうか |
| 回復 | 分離された復元とワークフローのチェック | 継続計画が現実的かどうか |
| 運営 | モニター、エスカレーション、ランブック | チームがインシデントをサポートできるかどうか |
調査費用と引き継ぎ後の実装費用を分ける
指定された成果物、アクセスの前提条件、および終了点を含む評価の範囲指定された GBP 見積もりをリクエストします。企業が別の実装サプライヤーを選択した場合でも、出力は決定を裏付けるものでなければなりません。未定義の後続プロジェクトの購入を推奨するだけのレポートでは、購入者には独立した価値がほとんどありません。
配信コストは、ビルド インフラストラクチャの欠如、アクセスの断片化、脆弱なテスト、脆弱な統合、または大幅な復旧作業など、評価で検出された内容によって異なります。これらの作業パッケージを個別に要求してください。緊急の継続性タスクには、より広範なアーキテクチャの改善よりも先に資金を投入する価値があるかもしれませんし、未解決の所有権の問題により開発が完全に妨げられる可能性があります。
定期的なサポートのコストと初期の労力を比較します。インシデントの対象範囲、メンテナンスの責任、サードパーティへの請求書、および将来の引き継ぎの取り決めを明確にします。放棄されたプロトタイプとビジネスクリティカルな生産システム全体にわたって信頼できる普遍的な価格帯は存在しません。信頼できる推定値は、不確実性とそれを軽減するために必要な証拠を説明します。
見積もりを意思決定への有用性で比較する
2 つの評価提案が同じ価格であっても、まったく異なる価値が提供される場合があります。コードの検査のみを行う場合もあれば、ビルドの再現とリカバリのリハーサルが含まれる場合もあります。成果物、アプリケーション境界、アクセスの前提条件を比較してから、それらの合計を同等のものとして扱います。どの活動に退職するサプライヤーまたはスタッフの参加が必要かを尋ねてください。
例示的な予算編成アプローチは、発見、継続作業、および計画された改善のために別個のラインを要求することです。これは相場を組み立てる方法であり、市場価格の主張ではありません。プロジェクト全体に付随する説明のないバッファーを受け入れるのではなく、偶発性を可視化し、それを文書化されていない統合などの名前付きの不確実性と結び付けます。
追加の発見が範囲にどのような影響を与えるかについて同意します。サプライヤーは、作業を拡大する前に、調査結果、その結果、利用可能なオプションについて説明する必要があります。企業は、すでに収集された証拠を失うことなく、不要な改善を延期できる必要があります。これにより、評価は無期限のコミットメントではなく、有用な購入ツールになります。
安定化、置き換え、段階的移行を選ぶ
アプリケーションが適切なビジネス プロセスをサポートし、その直接の弱点を分離できる場合、安定化は魅力的です。導入パイプラインを再構築し、構成を文書化したり、テストによる重要な作業を保護したりすることで、製品を置き換えることなく次のリリースが可能になる可能性があります。コードの古さではなく、オプションが有効にする結果によってオプションを判断してください。
要件が根本的に変化した場合、または限定的な評価により重要な制約に経済的に対処できないことが判明した場合、代替の可能性がより現実的になります。その場合でも、計画にはデータの移行、統合の継続性、既存のビジネス ルールの検証が必要です。新しいインターフェースによって、以前のシステムが何を行っていたのかを理解する必要がなくなるわけではありません。
段階的な移行では、問題のある境界を置き換えながら、有用なコンポーネントを維持できます。たとえば、アプリケーションの残りの部分が変更される前に、脆弱なレポートのエクスポートが安定したインターフェイスの背後に移動する可能性があります。共存ルールとロールバック ルートに同意します。スタッフが毎日手動で調整しなければならない 2 つの競合する真実の情報源を作成することは避けてください。
具体例:開発者が不在の顧客ポータル
顧客ポータルではまだ注文を受け付けているものの、元の開発者が不在であるという仮想の販売代理店を考えてみましょう。この企業はリポジトリにアクセスでき、請求書をホスティングできますが、誰もリリースを実証できません。これは状況を説明するためのものであり、Mecanik の顧客の結果や典型的な引き継ぎ期間の証拠ではありません。
最初の評価では、実行中のシステムを保存し、企業のアクセスを確認し、ステージングでビルドを再現します。スタッフは、通常の注文、キャンセルされた注文、および権限が制限されたアカウントをデモンストレーションします。調査の結果、倉庫に注文を送信する文書化されていない計画的な輸出が明らかになりました。たとえ顧客には見えなくても、そのプロセスは受け入れに含める必要があります。
推奨される次のステップは継続作業です。エクスポートを文書化し、障害の可視性を追加し、展開と回復をリハーサルします。再設計のリクエストには別途料金がかかります。企業は、受注を継続するために必要な作業と、外観を改善することを目的とした作業を区別できるため、意思決定がより明確になります。何を保持する必要があるかについてより良い証拠があれば、後で書き換えが行われる可能性があります。
最初の変更を管理できる形で計画する
重要なアクセスと運用の証拠が存在したら、観察して元に戻すのに十分な小さな変更を選択します。リリース プロセスを実行する際に、実際のニーズに対応する必要があります。重要なワークフローにまったく影響を及ぼさない表面的な変更は、あまりにも小さな変更であることが判明する可能性がありますが、大規模なデータ移行は最初のリリースに不必要な露出をもたらします。
開発を開始する前に、予想される動作を説明します。検証するユーザー、監視すべき操作シグナル、およびロールバックをトリガーする条件を特定します。ステージングの関連手順をリハーサルし、本番との違いを記録します。継続または回復の決定を下せる所有者とともにリリースをスケジュールします。
導入後は、ビジネスの成果と技術的な健全性を検証します。エクスポートがサイレントに停止している間、サーバーは正常に応答する場合があります。何が起こったかを記録し、詳細が新しいうちにランブックを更新します。最初に成功した制御変更は、引き継ぎプロセスが機能していることを示す有用な証拠ですが、未解決の評価結果がすべて解決されるわけではありません。
前任の開発会社と建設的に協力する
「すべてを送信してください」という漠然とした要求ではなく、具体的な引き継ぎの議題を要求してください。アプリケーションの境界、必要なアクセス、デモを事前に共有します。セッションを使用して、意思決定、運用上の癖、未解決の質問を把握します。合意があれば記録も役に立ちますが、検索可能な文書化された運用手順書は、システムが変更されたときに維持するのが容易です。
サプライヤーとの関係が緊張している場合は、話し合いを事実に基づいて行います。入手できない証拠と確認された欠陥を区別します。欠落している指示は短いセッションで回復できる場合がありますが、疑わしい問題は修復タスクになる前にテストが必要な場合があります。会議メモに曖昧な発言を残すのではなく、所有者とフォローアップアクションを割り当てます。
継続性を、退任するチームが質問に答えることに無期限に依存させないでください。可能な限り期限付きの移行取り決めに同意し、次のチームが重要なタスクを独立して完了できることを確認します。協力が得られない場合は、その制限を評価範囲と見積もりに反映させます。それは回復の取り組みを変えるものであり、受理に必要な証拠の基準を変えるものではない。
業務継続を目的とする引き継ぎを依頼する
アプリケーションの目的、現在の問題、既知のアクセス、重要なワークフロー、次に希望する変更を記載した短い概要を準備します。合意されたチャネルを通じて、利用可能なアーキテクチャ ノートと匿名化された例を提供します。例外を説明し、受け入れを承認できるスタッフを特定します。これらの情報は、サプライヤーがすべての技術コンポーネントを理解することを要求することなく、評価の範囲を設定するのに役立ちます。
Mecanik の ソフトウェア開発サービス は、継承されたアプリケーションを評価し、メンテナンスまたはさらなる開発への制御されたパスを定義するのに役立ちます。アクセス、ビルド、動作、操作を含む明示的な成果物を含む評価をリクエストします。証拠の収集、緊急の継続作業、およびオプションの改善を分離する、範囲を限定した GBP 提案を求めます。
有益な成果は、企業が責任あるサポートを受けて運用および変更できるシステムです。買収を一連の実証された能力として扱い、各決定で未解決のリスクが目に見えるようにします。これにより、次のサプライヤーに現実的な責任が与えられ、安心できるコード レビューや即時書き換えの約束よりも明確な支出の根拠が得られます。
よくある質問
元の開発者の助けなしに新しい開発者が引き継ぐことはできますか? 多くの場合、それは可能ですが、アクセス、構築手順、操作に関する知識が欠けていると、不確実性が高まります。既存のシステムを保存し、回復可能な証拠を特定する限定された評価から始めます。次のチームが重要な依存関係を理解するまでは、納期を約束しないでください。
リポジトリを移転すると、以前のサプライヤーのアクセス権が削除されますか? そうだと思わないでください。転送後に、共同作業者、組織の権限、展開資格情報、および接続されているサービスを確認します。シークレットとデプロイキーを関連付けた GitHub ドキュメントは、移行されたリポジトリに残るため、資格情報とアクセスのレビューは別個の引き継ぎタスクになります。
引き継ぎ中にアプリケーションを書き直す必要がありますか? 評価がその決定を支持する場合に限ります。配送を安定させるか、限られたコンポーネントを交換することで、中断を少なくしながら緊急の問題を解決できる可能性があります。書き換えにはビジネス ルールの理解、データの移行、統合の維持が必要なため、独自の評価範囲を持つ必要があります。
ソフトウェアプロジェクトの引き継ぎコストは何によって決まるのでしょうか? アクセスの準備、ビルドの再現性、重要なワークフロー、統合、セキュリティの範囲、およびリカバリの要件が取り組みを形成します。範囲を限定した GBP 評価の見積もりをリクエストし、緊急の継続作業と改善を分けてください。すべてのコードレビューを同じサービスとして扱うのではなく、成果物と前提条件を比較します。
引き継ぎが完了したことはどのようにしてわかりますか? 事前に受け入れデモに同意します。アクセスのレビュー、クリーンなビルド、制御された展開、重要なワークフローのチェック、必要に応じてリカバリのリハーサルを行います。運用所有者の名前を指定し、未解決の調査結果を文書化します。完了とは、単にファイルの所有者が変わったことを示すだけではなく、次期チームが証拠とともに合意された責任を遂行できることを意味します。
コメント