亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
レガシー ソフトウェアのリファクタリング: 課題からチャンスへ
技術(shù)的負(fù)債の蓄積
構(gòu)造上の制限
開発管理と戦略的連攜
基本コストの影響
転換點(diǎn): 新たな課題と戦略的決定
結(jié)論と次のステップ
ホームページ バックエンド開発 PHPチュートリアル ソフトウェアの遺産から戦略的機(jī)會(huì)へ: 出発點(diǎn) (I)

ソフトウェアの遺産から戦略的機(jī)會(huì)へ: 出発點(diǎn) (I)

Jan 15, 2025 am 06:14 AM

レガシー ソフトウェアのリファクタリング: 課題からチャンスへ

この記事では、物流管理システム (OMS) の國際化と新しい電子商取引プラットフォームとの統(tǒng)合の課題に當(dāng)社がどのように対処するかについて説明します。このシステムは、急成長(zhǎng)を遂げている電子商取引企業(yè)の注文準(zhǔn)備プロセスを最適化し、さまざまな物流事業(yè)者と効率的に統(tǒng)合するために 2018 年に開発されました。 PHP (Symfony)、MySQL、Socket.io、および jQuery を使用して構(gòu)築されており、注文追跡、宅配便接続、ラベル生成、注文準(zhǔn)備パフォーマンス メトリクスなどの機(jī)能を含む、梱包から出荷までのプロセス全體をカバーしています。

技術(shù)的負(fù)債の蓄積

このシステムは長(zhǎng)年にわたってうまく機(jī)能していましたが、ビジネスが成長(zhǎng)するにつれて、その限界がますます明らかになりました。技術(shù)的負(fù)債は特に憂慮すべきものであり、プロジェクトの複數(shù)のレベルに影響を及ぼします。技術(shù)インフラストラクチャの観點(diǎn)から見ると、アプリケーションは古いフレームワークと基本言語バージョンで実行されます:

  • Symfony バージョン (4.0) は長(zhǎng)期サポート (LTS) バージョンではないため、2019 年 1 月からセキュリティ更新プログラムの受信を停止します。
  • PHP 7.1 もライフサイクルを終了しており、システムには重要なセキュリティ アップデートがありません。

バージョンが古いことに加えて、このプロジェクトにはソフトウェア開発の基礎(chǔ)にも重大な欠陥があります:

  • テストの欠如または不十分: 自動(dòng)テスト (単體テスト、統(tǒng)合テスト、エンドツーエンドのテスト) が不足していると、バグの早期検出が妨げられるだけでなく、変更が行われると安定性が損なわれる可能性があります。システムの。
  • コーディング標(biāo)準(zhǔn)の欠如: コードベースは文書化されたパターンや標(biāo)準(zhǔn)に従っておらず、たとえ存在していたとしても、業(yè)界のベスト プラクティスと一致していません。これにより、メンテナンスとプロジェクトへの新しい開発者のオンボーディングの両方が困難になります。
  • 不十分なドキュメント: 既存のドキュメントは希薄で、多くの場(chǎng)合不完全です。これは技術(shù)開発だけでなく、コードに実裝されたビジネス プロセスの理解にも影響します。
  • 不完全なバージョン管理: Git 履歴には説明が不足しており、コミットの粒度は粗く、メッセージは規(guī)則に従っておらず、加えられた変更に関する背景情報(bào)が不足しています。このため、時(shí)間の経過とともに行われるコードの進(jìn)化と決定を理解することが困難になります。

技術(shù)的負(fù)債の蓄積は、システムの安定性とセキュリティに脅威をもたらすだけでなく、次のような脅威にもなります。

  • 新機(jī)能の開発速度を低下させました
  • バグが侵入するリスクの増加
  • 新しいメンバーがチームに參加するのが難しくなりました
  • メンテナンスコストの増加
  • 問題の診斷と解決が複雑になります

構(gòu)造上の制限

元のアーキテクチャには、柔軟性とスケーラビリティに深刻な影響を與える結(jié)合問題がありました。

  • メインの電子商取引プラットフォームに完全に依存: アプリケーションは獨(dú)立して実行できず、すべての物流業(yè)務(wù)は電子商取引プラットフォームのデータとプロセスに直接依存します。これは、メイン プラットフォームに変更を加えると、システムの機(jī)能が損なわれる可能性があることを意味します。
  • パフォーマンスの問題を引き起こす共有データベース: 物流アプリケーションと電子商取引プラットフォームは同じデータベースを使用するため、特にどちらかのアプリケーションの負(fù)荷のピーク時(shí)にパフォーマンスの問題が発生します。さらに、データベースへのアクセスにより他のシステムからの重要なデータが侵害される可能性があるため、この構(gòu)成では権限管理が複雑になります。
  • スタンドアロンでは実行できません: このアプリは、e コマース プラットフォームでのみ実行されるように設(shè)計(jì)されています。これにより、移植性が制限されるだけでなく、隔離された環(huán)境でのテストや他のプラットフォームへの移行も妨げられます。その依存関係は適切にカプセル化されておらず、分離しようとするとシステム全體に大規(guī)模でコストのかかる変更が必要となり、メイン クラスでは単一責(zé)任原則 (SRP) が遵守されていません。
  • 新機(jī)能の実裝の難しさ: オープン/クローズ原則 (OCP) とリスコフ置換原則 (LSP) への準(zhǔn)拠の欠如は、システムの進(jìn)化を大きく妨げます。新しい機(jī)能を使用するには既存のコードを変更する必要があり、リグレッションが発生するリスクが高まります。さらに、モジュール間の直接の依存関係により、依存関係反転原則 (DIP) に従うことがほぼ不可能になります。

これらの構(gòu)造上の制限により、システムの保守性と拡張性が低下するだけでなく、変更や進(jìn)化に伴うリスクも増大し、アプリケーションが技術(shù)的に脆弱で戦略的に脆弱な狀態(tài)になります。

開発管理と戦略的連攜

最も重要な課題の 1 つは、技術(shù)的なものだけでなく、戦略的なものでもあります。外部開発は機(jī)能的には正しいですが、組織上の重大な制限があります。

  • グローバル戦略から切り離されている: 開発は、企業(yè)の內(nèi)部目標(biāo)とプロセスを完全に理解することなくサイロで行われます。その結(jié)果、技術(shù)的には正しくても、ビジネスの実際のニーズを必ずしも満たさない機(jī)能が生成されます。
  • 戦略的な優(yōu)先順位付けの欠如: 新機(jī)能の実裝には、明確な評(píng)価と優(yōu)先順位付けのプロセスが欠如しています。機(jī)能が本當(dāng)に必要かどうか、それを?qū)g裝する最善の方法かどうか、より効率的な代替手段が存在するかどうかについては、疑問の余地はありません。
  • 事後開発とプロアクティブ開発: 開発は主に事後モデルに従い、長(zhǎng)期的な影響や社內(nèi)の他のプロセスとの潛在的な相乗効果を考慮せずに當(dāng)面のニーズに対応します。
  • 検証プロセスの欠如: 構(gòu)造化されたレビューと検証プロセスが欠如しているため、機(jī)能は機(jī)能していても、エンド ユーザーや會(huì)社の全體的な目標(biāo)にとって必ずしも最適なソリューションを提供するとは限りません。

この狀況は次の理由から長(zhǎng)期的には持続不可能です。

  • 実際のニーズからますます逸脫する製品が生成される
  • 他の會(huì)社のシステムやプロセスとの統(tǒng)合を妨げる
  • 製品に関する戦略的意思決定が複雑になる
  • チームの革新と継続的な改善の能力が制限される

基本コストの影響

このプロジェクトで見落とされがちですが、特に重要な側(cè)面は基本コストです。これはソフトウェア開発における重要な概念であり、新機(jī)能の追加や必要な最小限の改善を行わなくてもシステムを稼働し続けるためのコストを指します。

私たちの場(chǎng)合、基本コストには、古いフレームワークと言語バージョンの維持、技術(shù)的負(fù)債の蓄積による緊急事態(tài)の解決、他のシステムとの依存関係の管理、結(jié)合されたアーキテクチャへの適応、理解が不十分なために発生したドメイン知識(shí)コストに関連するすべてのコストが含まれます。 。これらすべては利用可能なリソースを大量に消費(fèi)し、イノベーションと継続的な改善への投資能力に直接影響を與えます。

この要因は、開発を社內(nèi)化するという決定の決定的な要因ではありませんでしたが、プロジェクトの初期診斷には非常に影響を與えました。システムの持続可能性を評(píng)価する際、基本コストは無視されることがよくありますが、この場(chǎng)合、現(xiàn)在の戦略が長(zhǎng)期的には持続不可能であることが明確に示されています。さらに、今後の記事で説明するように、既存の構(gòu)造を維持しようとすると、基本コストは時(shí)間の経過とともに指數(shù)関數(shù)的に増加します。

基本的なコストの概念とその重要性の詳細(xì)については、Eduardo Ferro の元の記事を參照することをお?jiǎng)幛幛筏蓼埂?

転換點(diǎn): 新たな課題と戦略的決定

どのようなリファクタリング プロジェクトでも、採用できる戦略は複數(shù)あり、絞殺図かビッグバン書き換えかのジレンマによく遭遇します。

De software legacy a oportunitat estratègica: El punt de partida (I)

最初の技術(shù)的な決定は、ストラングラー パターン を使用して同じレガシー プロジェクト內(nèi)で作業(yè)することでした。これは、古いシステムの一部を徐々に置き換える新しいモジュールまたはシステムを開発することを含むアプローチです。この戦略により、変更を並行して行い、リスクを軽減し、現(xiàn)在の機(jī)能を維持しながら、將來の機(jī)能をサポートするためのより強(qiáng)力な基盤を構(gòu)築することができます。

しかし、ビジネスの観點(diǎn)から見ると、このオプションは既存のシステム (すでに稼働しており、その機(jī)能を?qū)g行している) に過度のリスクをもたらします。私たちは既存のプロジェクトには觸れず、代わりに新しいニーズを満たすスタンドアロン アプリケーションを開発することにしました。

この変更により、既存のコードベースをフォークすることになりました。これは技術(shù)的には可能ですが、いくつかの欠點(diǎn)がありました。

  • コード ベースの重複: 2 つの別個(gè)のコード ベースを維持する必要があります。
  • データベースの分離: データ構(gòu)造をコピーし、各システムに適合させる必要があります。
  • インフラストラクチャのレプリケーション: 獨(dú)立したサーバーを展開し、各システムの適切な可観測(cè)性を確保する必要があります。
  • チームの認(rèn)知的負(fù)荷の増加: この重複により、2 つのシステム間の一貫性を維持するために余分な労力が必要となり、その結(jié)果、チームの複雑さとエラーのリスクが増大します。

このアプローチにより、新しい戦略目標(biāo)に沿ったプロジェクトを開発しながら、既存のシステムの安定性を確保しながら、獨(dú)立したソリューションに移行することができます。ただし、自信を持ってこの課題に計(jì)畫を立てて対処するには、長(zhǎng)所と短所を詳細(xì)に分析する必要があります。さらに、新しい電子商取引プラットフォームへの移行が完了するまでは機(jī)能を拡張せず、プロジェクトのバックログを厳密に管理するというビジネス レベルの合意に達(dá)しました。

De software legacy a oportunitat estratègica: El punt de partida (I)

優(yōu)點(diǎn) 缺點(diǎn)
在非生產(chǎn)環(huán)境中工作,降低生產(chǎn)環(huán)境的風(fēng)險(xiǎn) 需要暫時(shí)維護(hù)多個(gè)項(xiàng)目
自由地從零開始實(shí)施新技術(shù)和模式 在維護(hù)方面的努力暫時(shí)重復(fù)
不必?fù)?dān)心舊系統(tǒng)的技術(shù)限制或依賴關(guān)系 由于需要在系統(tǒng)之間同步更改,功能的重復(fù)可能會(huì)長(zhǎng)期減緩開發(fā)速度
能夠?qū)W⒂诒匾奶匦?/td> 截止日期的風(fēng)險(xiǎn),因?yàn)橛袃蓚€(gè)代碼庫
有機(jī)會(huì)從一開始就實(shí)施最佳實(shí)踐 項(xiàng)目管理的復(fù)雜性
更容易從一開始就實(shí)施測(cè)試 需要與歷史數(shù)據(jù)保持兼容性
靈活地適應(yīng)新的業(yè)務(wù)需求 初始時(shí)間和資源成本更高
更好地與公司的整體戰(zhàn)略相一致 可能暫時(shí)丟失非必要的特性

結(jié)論と次のステップ

レガシー ソフトウェアを內(nèi)部化して書き直すという決定は、特にソフトウェアがその機(jī)能を?qū)g行できる場(chǎng)合には、決して簡(jiǎn)単ではありません。 「うまくいくなら觸るな」という格言は常に存在します。しかし、時(shí)には二歩前進(jìn)するためには一歩後退することもあります。

このシリーズの後続の記事では、これらの課題にどのように対応したか、技術(shù)的および戦略的決定を下したのか、そしてこれらの課題を改善とチーム開発の機(jī)會(huì)にどのように変えたかを探っていきます。

以上がソフトウェアの遺産から戦略的機(jī)會(huì)へ: 出発點(diǎn) (I)の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP変數(shù)スコープは説明されています PHP変數(shù)スコープは説明されています Jul 17, 2025 am 04:16 AM

PHP変數(shù)スコープの一般的な問題とソリューションには次のものが含まれます。1。グローバル変數(shù)は関數(shù)內(nèi)でアクセスできず、グローバルキーワードまたはパラメーターを使用して渡す必要があります。 2。靜的変數(shù)は靜的で宣言され、1回のみ初期化され、値は複數(shù)の呼び出し間で維持されます。 3. $ _GETや$ _POSTなどのハイパーグローバル変數(shù)は、任意の範(fàn)囲で直接使用できますが、安全なフィルタリングに注意を払う必要があります。 4.匿名関數(shù)は、使用キーワードを使用して親スコープ変數(shù)を?qū)毪工氡匾ⅳ?、外部変?shù)を変更する場(chǎng)合は、參照を渡す必要があります。これらのルールを習(xí)得すると、エラーを回避し、コードの安定性が向上するのに役立ちます。

ファイルアップロードをPHPで安全に処理する方法は? ファイルアップロードをPHPで安全に処理する方法は? Jul 08, 2025 am 02:37 AM

PHPファイルのアップロードを安全に処理するには、ソースとタイプを確認(rèn)し、ファイル名とパスを制御し、サーバー制限を設(shè)定し、メディアファイルを2回プロセスする必要があります。 1.トークンを介してCSRFを防ぐためにアップロードソースを確認(rèn)し、ホワイトリストコントロールを使用してFINFO_FILEを介して実際のMIMEタイプを検出します。 2。ファイルをランダムな文字列に変更し、検出タイプに従って非WEBディレクトリに保存する拡張機(jī)能を決定します。 3。PHP構(gòu)成は、アップロードサイズを制限し、一時(shí)的なディレクトリnginx/apacheはアップロードディレクトリへのアクセスを禁止します。 4. GDライブラリは寫真を再利用して、潛在的な悪意のあるデータをクリアします。

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお?jiǎng)幛幛筏蓼埂?2。使用/.../複數(shù)の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時(shí)にネストを避ける必要があります。

発電機(jī)はPHPでどのように機(jī)能しますか? 発電機(jī)はPHPでどのように機(jī)能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長(zhǎng)性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統(tǒng)合形式を使用します。 2。JSジャンプを手動(dòng)で出力する必要がある理由など、ロジックの背後にある理由を強(qiáng)調(diào)します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全體的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進(jìn)します。優(yōu)れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお?jiǎng)幛幛筏蓼?。インデックス?から始まり、範(fàn)囲外のアクセスはnull値を返し、値を割り當(dāng)てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長(zhǎng)さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお?jiǎng)幛幛筏蓼埂?/p>

PHPの學(xué)習(xí):初心者向けガイド PHPの學(xué)習(xí):初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

See all articles