国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Refactoring des logiciels existants?: des défis aux opportunités
L'accumulation de dette technique
Limites structurelles
Gestion du développement et alignement stratégique
Impact des co?ts de base
Tournant?: nouveaux défis et décisions stratégiques
Conclusion et prochaines étapes
Maison développement back-end tutoriel php De l'héritage logiciel à l'opportunité stratégique : le point de départ (I)

De l'héritage logiciel à l'opportunité stratégique : le point de départ (I)

Jan 15, 2025 am 06:14 AM

Refactoring des logiciels existants?: des défis aux opportunités

Cet article explique comment nous gérons l'internationalisation d'un système de gestion logistique (OMS) et les défis de l'intégration avec les nouvelles plateformes de commerce électronique. Le système a été développé en 2018 pour optimiser le processus de préparation des commandes d'une entreprise de commerce électronique en plein essor et s'intégrer efficacement avec différents opérateurs logistiques. Construit à l'aide de PHP (Symfony), MySQL, Socket.io et jQuery, il couvre l'ensemble du processus, de l'emballage à l'expédition, y compris des fonctionnalités telles que le suivi des commandes, les connexions de messagerie, la génération d'étiquettes et les mesures de performances de préparation des commandes.

L'accumulation de dette technique

Ce système a bien fonctionné pendant de nombreuses années, mais à mesure que l'entreprise se développait, ses limites sont devenues de plus en plus apparentes. La dette technique est particulièrement inquiétante, car elle affecte plusieurs niveaux d’un projet. En termes d'infrastructure technique, l'application fonctionne sur des frameworks et des versions linguistiques de base obsolètes?:

  • La version Symfony (4.0) n'est pas une version de support à long terme (LTS) et ne recevra plus de mises à jour de sécurité à partir de janvier 2019.
  • PHP 7.1 a également terminé son cycle de vie et le système manque de mises à jour de sécurité critiques.

En plus des versions obsolètes, le projet présente également de sérieuses failles dans les fondamentaux du développement logiciel?:

  • Manque ou insuffisance de tests?: Un manque de tests automatisés (tests unitaires, d'intégration et de bout en bout) entrave non seulement la détection précoce des bugs, mais rend également toute modification susceptible de compromettre la stabilité du système.
  • Manque de normes de codage?: La base de code ne suit aucun modèle ou norme documenté, et même s'il existe, ils ne sont pas conformes aux meilleures pratiques de l'industrie. Cela rend difficile à la fois la maintenance et l’intégration de nouveaux développeurs dans le projet.
  • Documentation inadéquate?: La documentation existante est rare et souvent incomplète. Cela affecte non seulement le développement technique mais également la compréhension des processus métier implémentés dans le code.
  • Contr?le de version incomplet?: L'historique de Git manque d'explications, la granularité des commits est approximative, les messages ne suivent aucune convention et manquent d'informations générales sur les modifications apportées. Cela rend difficile la compréhension de l’évolution du code et des décisions prises au fil du temps.

L'accumulation de dette technique constitue non seulement une menace pour la stabilité et la sécurité du système, mais aussi :

  • Réduction de la vitesse de développement des nouvelles fonctionnalités
  • Risque accru d'introduction de bugs
  • Augmentation de la difficulté pour les nouveaux membres de rejoindre l'équipe
  • Augmentation des co?ts de maintenance
  • Complique le diagnostic et la résolution des problèmes

Limites structurelles

L'architecture d'origine présentait des problèmes de couplage qui affectaient sérieusement sa flexibilité et son évolutivité?:

  • Entièrement dépendante de la plateforme e-commerce principale?: L'application ne peut pas fonctionner de manière indépendante, et toutes les opérations logistiques dépendent directement des données et des processus de la plateforme e-commerce. Cela signifie que toute modification apportée à la plate-forme principale peut interrompre la fonctionnalité du système.
  • Base de données partagée entra?nant des problèmes de performances?: Les applications logistiques et les plateformes de commerce électronique utilisent la même base de données, ce qui entra?ne des problèmes de performances, en particulier pendant les périodes de charge de pointe pour l'une ou l'autre application. De plus, cette configuration complique la gestion des autorisations car tout accès à la base de données peut compromettre des données importantes provenant d'autres systèmes.
  • Ne peut pas fonctionner de manière autonome?: Cette application est con?ue pour fonctionner uniquement avec les plateformes de commerce électronique. Non seulement cela limite sa portabilité, mais cela empêche également les tests dans un environnement isolé ou la migration vers d'autres plates-formes. Ses dépendances ne sont pas correctement encapsulées, toute tentative d'isolation nécessiterait des modifications importantes et co?teuses dans l'ensemble du système, et le principe de responsabilité unique (SRP) n'est pas respecté dans la classe principale.
  • Difficulté à mettre en ?uvre de nouvelles fonctionnalités : Le manque de respect du principe d'ouverture/fermeture (OCP) et du principe de substitution de Liskov (LSP) freine grandement l'évolution du système. Les nouvelles fonctionnalités nécessitent des modifications du code existant, augmentant ainsi le risque d'introduire des régressions. De plus, les dépendances directes entre les modules rendent presque impossible le respect du principe d'inversion de dépendance (DIP).

Ces limitations structurelles réduisent non seulement la maintenabilité et l'évolutivité du système, mais augmentent également les risques associés à toute modification ou évolution, laissant l'application dans un état techniquement fragile et stratégiquement vulnérable.

Gestion du développement et alignement stratégique

L'un des défis les plus importants n'est pas seulement technique, mais aussi stratégique. Bien que le développement externe soit fonctionnellement correct, il existe des limites organisationnelles importantes?:

  • Déconnecté de la stratégie globale?: Le développement se fait en silos sans une compréhension complète des objectifs et des processus internes de l’entreprise. Il en résulte des fonctionnalités qui, bien que techniquement correctes, ne répondent pas toujours aux besoins réels de l'entreprise.
  • Manque de priorisation stratégique?: La mise en ?uvre de nouvelles fonctionnalités manque d'un processus clair d'évaluation et de priorisation. Il n’y a aucun doute quant à savoir si une fonctionnalité est vraiment nécessaire, si c’est la meilleure fa?on de la mettre en ?uvre ou s’il existe une alternative plus efficace.
  • Développement réactif vs développement proactif?: Le développement suit principalement un modèle réactif, répondant aux besoins immédiats sans tenir compte des impacts à long terme ou des synergies potentielles avec d'autres processus de l'entreprise.
  • Manque de processus de validation?: L'absence d'un processus structuré d'examen et de validation entra?ne des fonctionnalités qui, bien que fonctionnant, ne fournissent pas toujours la meilleure solution pour l'utilisateur final ou pour les objectifs généraux de l'entreprise.

Cette situation est intenable à long terme car elle :

  • Ce qui donne lieu à des produits de plus en plus éloignés des besoins réels
  • Entrave l'intégration avec d'autres systèmes et processus de l'entreprise
  • Complique les décisions stratégiques concernant les produits
  • Limite la capacité de l’équipe à innover et à s’améliorer continuellement

Impact des co?ts de base

Un aspect souvent négligé mais particulièrement important dans ce projet est le co?t de base, qui, à mon avis, est un concept clé dans le développement de logiciels et fait référence au co?t de maintien d'un système en fonctionnement même sans ajouter de nouvelles fonctionnalités ou apporter des améliorations minimales requises.

Dans notre cas, les co?ts de base incluent tous les co?ts associés à la maintenance d'un framework et de versions linguistiques obsolètes, à la résolution des urgences dues à l'accumulation de dette technique, à la gestion des dépendances avec d'autres systèmes, à l'adaptation à des architectures couplées et aux co?ts de connaissance du domaine encourus en raison d'une compréhension insuffisante. . Tout cela consomme une quantité importante de ressources disponibles et a un impact direct sur la capacité à investir dans l’innovation et l’amélioration continue.

Bien que ce facteur n'ait pas été décisif dans notre décision d'internaliser le développement, il a été assez influent dans le diagnostic initial du projet. Les co?ts de base sont souvent ignorés lors de l’évaluation de la durabilité d’un système, mais dans ce cas, cela démontre clairement que les stratégies actuelles ne sont pas viables à long terme. De plus, comme nous le verrons dans les articles suivants, toute tentative de maintenir la structure existante augmentera de fa?on exponentielle le co?t de base au fil du temps.

Pour une explication plus détaillée des concepts de base des co?ts et de leur importance, il est recommandé de se référer à l'article original d'Eduardo Ferro.

Tournant?: nouveaux défis et décisions stratégiques

Dans tout projet de refactoring, plusieurs stratégies peuvent être employées, et le dilemme est souvent rencontré : fig étrangleur ou réécriture big bang.

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

La décision technique initiale était de travailler au sein du même projet existant en utilisant le Strangler Pattern, une approche qui implique le développement d'un nouveau module ou système qui remplace progressivement des parties de l'ancien système. Cette stratégie nous permet d'apporter des changements parallèles, de réduire les risques et de maintenir les fonctionnalités actuelles tout en construisant une base plus solide pour prendre en charge les fonctionnalités futures.

Cependant, d'un point de vue commercial, cette option présente un risque excessif pour le système existant (qui est déjà opérationnel et remplit ses fonctions). Nous avons décidé d'éviter de toucher au projet existant et de développer plut?t une application autonome pour répondre aux nouveaux besoins.

Ce changement nous a amené à bifurquer de la base de code existante, une décision qui était techniquement réalisable mais présentait certains inconvénients?:

  • Duplication des bases de codes : Deux bases de codes distinctes doivent désormais être maintenues.
  • Séparation des bases de données?: les structures de données doivent être copiées et adaptées pour chaque système.
  • Réplication de l'infrastructure?: nécessite le déploiement de serveurs indépendants et la garantie d'une observabilité appropriée pour chaque système.
  • Charge cognitive accrue sur l’équipe : Toute cette duplication nécessite des efforts supplémentaires pour maintenir la cohérence entre les deux systèmes, augmentant ainsi la complexité de l’équipe et le risque d’erreurs.

Cette approche nous permet d'évoluer vers des solutions indépendantes, assurant la stabilité des systèmes existants tout en développant un projet aligné sur de nouveaux objectifs stratégiques. Cependant, une analyse détaillée des avantages et des inconvénients est nécessaire pour planifier et relever ce défi en toute confiance. De plus, nous sommes parvenus à un consensus avec le niveau commercial pour ne pas étendre les fonctionnalités et contr?ler étroitement le retard du projet jusqu'à ce que la migration vers la nouvelle plateforme de commerce électronique soit terminée.

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

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

Conclusion et prochaines étapes

La décision d'internaliser et de réécrire un logiciel existant n'est jamais facile, surtout lorsque le logiciel est capable de faire son travail. Le dicton ? Si ?a marche, n’y touchez pas ? sera toujours là. Cependant, il faut parfois un pas en arrière pour faire deux pas en avant.

Dans les articles suivants de cette série, nous explorerons comment nous avons répondu à ces défis, les décisions techniques et stratégiques que nous avons prises et comment nous avons transformé ces défis en opportunités d'amélioration et de développement d'équipe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Jun 20, 2025 am 01:03 AM

ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Jun 19, 2025 am 01:05 AM

Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Jun 19, 2025 am 01:07 AM

En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Jun 19, 2025 pm 05:13 PM

Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Jun 19, 2025 am 01:07 AM

Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Jun 23, 2025 am 12:56 AM

TostayCurrentwithPhpDevelopments andBestPractices, suiventyewnewsources likephp.netandphpweekly, engagewithcommunitiesonforumums et conférences, keeptoolingupdated etgradualadoptnewfeatures, etreadorontruttetoopensourceprojects.

Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebDevelopmentDuetoitSeaseOflearning, Samoussentegration withhtml, widespreadhostingsupport, andalargecosystemysteclustingframeworkslikeLaravelandcmsplateformeslikewordpress.itexcelSinlingFormSubMissions, ManagetingSeSeSessions, interactif, interactif

Comment définir le fuseau horaire PHP? Comment définir le fuseau horaire PHP? Jun 25, 2025 am 01:00 AM

Tosetherighttimezoneinphp, usedate_default_timezone_set () Fonctionnellestartofyourscriptwithavalididentifiersuchas'america / new_york'.1.usedate_default_timezone_set () beforeanydate / timefunctions.20

See all articles