La solution Web de notre société est sur sa quatrième génération majeure, ayant considérablement évolué au cours des 8 dernières années. La génération la plus récente a présenté une grande variété de constructions pour aider exactement à cette tâche car il devenait difficile de mettre à jour la génération précédente en fonction des nouvelles demandes des clients. Ainsi, j'ai passé pas mal de temps en 2009 à penser exactement à ce problème.
La seule chose que vous pouvez faire est de employer une approche Agile pour construire un logiciel. En particulier, vous devriez maintenir un environnement dans lequel une nouvelle construction peut être (et est) créée quotidiennement. Bien que les constructions quotidiennes ne soient qu'un aspect d'Agile, c'est la pratique la plus importante pour répondre à votre question. Bien que ce ne soit pas la même chose que l'évolutivité, elle introduit néanmoins une discipline dans le processus qui aide à réduire la possibilité que votre base de code devienne lourde (ou que vous deveniez Architect Astronaut).
En ce qui cadres et langues aller, il y a deux exigences principales: que le cadre soit à long terme et stable et que l'environnement d'un soutien Separation of Concerns. ASP.NET a bien fonctionné pour moi à cet égard: il a évolué de manière rationnelle et sans discontinuités qui invalident le code plus ancien. J'utilise une couche de logique métier distincte pour gérer le SoC, mais ASP.NET supporte désormais aussi le développement de MVC.En revanche, je suis venu à ne pas aimer PHP après quelques mois de travail avec lui parce que cela semblait encourager les pratiques désordonnées qui mettraient en danger les futures mises à jour.
En ce qui concerne Sélection de SGBD, tout RDMS moderne (SQL Server, MySQL, Oracle) vous sera très utile. Voici la clé cependant: vous devrez besoin de maintenir des scripts DDL pour la gestion des mises à niveau. C'est juste une réalité de la vie. Alors, comment faites-vous ce processus un tractable? L'outil le plus précieux de tout développeur tiers est ma copie de SQL Compare de Red Gate. Ce processus était un cauchemar complet et un frein significatif à ma capacité à faire évoluer mon code jusqu'à ce que je trouve cet outil. Ainsi, la recommandation générique est d'utiliser une base de données pour laquelle un outil existe pour comparer les structures de base de données. SQL Server est juste très chanceux à cet égard.
Matériel est presque un ne s'en soucie pas. Vous pouvez toujours passer à un nouveau matériel tant que votre processus de développement inclut un processus de génération de version raisonnable.
Stratégie pour des changements constants dans les exigences. Encore une fois, voir Agile. Je vous encourage à ne plus les considérer comme des «exigences» - au sens traditionnel d'un grand document rempli de spécifications. Agile change cela de manière importante. Je ne conserve pas non plus un document d'exigences, sauf lorsque je travaille sur contrat pour un client externe payant, afin que je puisse être assuré de la facturation appropriée et éviter le fluage des fonctionnalités. À ce stade, notre processus interne est si rapide et fluide que les rapports de notre logiciel de gestion des bogues/fonctionnalités (FogBugz si vous voulez savoir) nous servent de documentation lors de la documentation d'une nouvelle version pour le marketing.
La stratégie/décision pour la refonte totale est: ne pas. Si vous mettez un degré raisonnable de réflexion dans le processus que vous utiliserez, choisissez les outils courants, et appliquez une Séparation des Préoccupations alors rien de moins qu'un abandon complet de HTTP et de SGBDR devrait entraîner une refonte totale.
Si vous êtes assez agile quoi que ce soit peut changement, vous êtes probablement jamais dans une position où tout doit changement.
Grande réponse: –
+1 belle explication. En outre, l'évolution de la technologie joue également un rôle dans l'approche de la gradation.Car si l'on voit qu'une nouvelle technologie serait disponible dans un an environ, faut-il attendre ou opter pour une mise à niveau basée sur la technologie actuelle? – HotTester
HotTester - cela dépend de la technologie. En règle générale, je préfère une approche «attentiste» aux nouvelles technologies uniquement parce que j'ai été brûlé une ou deux fois pour me lancer dans une technologie qui finit par ne plus être acceptée par mes clients. Cela dit, je * suis * en train d'utiliser Visual Studio 2010 (qui n'est pas officiellement publié) et je suis toujours à la recherche de nouvelles technologies, juste parce que j'aime. –