Je suis actuellement confronté à un problème de conception très inhabituel et j'espère qu'un développeur plus avisé que moi pourra m'éclairer.
Contexte
Sans être trop précis, j'ai été engagé par une organisation à but non lucratif pour l'aider à redévelopper son ancien logiciel, mais très précieux (en termes de valeur sociale). L'équipe de développement ne ressemble à aucune de celles que j'ai rencontrées au cours de ma carrière de développeur de logiciels. Elle se compose d'un petit nombre de développeurs et d'un groupe plus important d'experts de domaine non programmeurs. Ce qui rend l'arrangement inhabituel, c'est que les experts du domaine (appelons-les créateurs de contenu) utilisent des outils personnalisés, dont certains sont basés sur un moteur de système expert prolog, pour développer des composants/formulaires logiciels basés sur le web.
Le problème
Le système utilise un modèle postback très maladroit pour effectuer des opérations logiques côté serveur et renvoyer de nouveaux formulaires/résultats. Il est lent et susceptible d'échouer. Des choses simples, comme la création de formulaires html à l'aide de l'outillage existant, sont difficiles à réaliser. beaucoup plus ardue qu'elle ne devrait l'être. À mesure que la demande d'une expérience plus interactive et plus performante augmente, les développeurs de logiciels constatent de plus en plus qu'ils doivent contourner le système expert/l'outillage visuel utilisé par les créateurs de contenu et écrire de nouveaux composants à la main en javascript. Les créateurs de contenu ont de plus en plus l'impression d'avoir les mains liées, car ils sont désormais incapables de fournir de nouveaux composants.
Approche de la conception : Traditionnel/Typique
J'ai plaidé pour l'abandon complet du modèle précédent et l'adoption d'un processus typique de développement de logiciels. Comme je l'ai mentionné précédemment, le projet a naturellement évolué dans ce sens, car l'outil de développement non programmatique est devenu incapable de répondre aux besoins de l'entreprise.
Les créateurs de contenu ont cependant une contribution très précieuse à apporter, et j'aimerais qu'ils se concentrent sur la spécification formelle du comportement attendu du logiciel avec des outils comme Cucumber, au lieu de participer à la mise en œuvre.
Approche de la conception : Non-programmatique
Mon collègue, que je respecte beaucoup et que je soupçonne d'être beaucoup plus compétent que moi, pense que le processus existant est bon et que nous devons simplement construire un meilleur outillage. Je ne peux m'empêcher de penser qu'il y a quelque chose de fondamentalement défectueux dans cette approche. Je n'ai pas encore trouvé un seul exemple, historique ou contemporain, où ce modèle de développement logiciel a été couronné de succès. COBOL a été développé avec la philosophie de permettre aux hommes d'affaires/experts de domaine d'écrire des applications sans avoir besoin d'un programmeur, et à mon avis, cela n'a fait que créer un nouveau type de programmeur - le programmeur COBOL. S'il était possible de développer des systèmes efficaces permettant à des non-programmeurs de créer des applications non triviales, la demande de programmeurs serait certainement beaucoup plus faible ? Les seuls frameworks que je connais qui correspondent à peu près à ce modèle sont Smart Forms de SAP et Dynamix AX de Microsoft, qui sont tous deux des systèmes ERP très spécifiques à un domaine.
DSLs, langages de templating
Une sorte de compromis entre ces deux concepts serait d'implémenter une sorte de DSL comme langage de modélisation. Je ne suis même pas sûr que cela puisse réussir, car tous les créateurs de contenu, à une exception près, ne sont pas du tout des techniciens.
J'ai également envisagé de créer un IDE personnalisé basé sur Visual Studio ou Net Beans avec des outils graphiques de type boîte à outils.
Qu'en pensez-vous ?
Le développement non programmé est-il une course folle ? Cela aboutira-t-il toujours à quelque chose d'insatisfaisant, nécessitant un développement manuel par un programmeur ?
Je vous remercie d'avoir pris le temps de lire ce document et j'apprécierais beaucoup tout commentaire.