54 votes

Le développement de logiciels non programmés est-il réalisable ?

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.

12voto

Daniel Pryden Points 22167

Vous dites :

Une sorte de compromis entre le deux concepts serait d'implémenter une sorte de DSL comme un langage de templating langage de modélisation. Je ne suis même pas sûr que cela que ce soit une réussite, car tous les créateurs de contenu, à une exception près exception, ne sont absolument pas techniques.

Honnêtement, cela ressemble exactement à l'approche que j'utiliserais. Même les utilisateurs "non techniques" peuvent devenir maîtriser (suffisamment) un DSL ou un langage de modélisation simple pour effectuer un travail utile.

Par exemple, je travaille beaucoup avec des logiciels de modélisation scientifique. De nombreux modélisateurs, bien qu'ils soient beaucoup plus à l'aise avec la science qu'avec toute forme d'ingénierie, ont été contraints d'apprendre un ou plusieurs langages de programmation afin d'exprimer leurs idées d'une manière utilisable. Pour autant que je sache, le Fortran est encore un cours obligatoire pour obtenir un diplôme de météorologie, puisque tous les principaux modèles météorologiques actuellement utilisés sont écrits en Fortran.

En conséquence, il existe une certaine communauté de "programmation scientifique" qui est principalement composée d'experts du domaine ayant relativement peu de formation formelle en génie logiciel, d'expertise ou même d'intérêt. Ces personnes sont plus à l'aise avec des langages/plateformes comme Matlab, R, et même Visual Basic (puisqu'elles peuvent l'utiliser pour script des applications comme Excel et ESRI ArcMap). Récemment, j'ai vu Python gagner du terrain dans cet espace également, principalement je pense parce qu'il est relativement facile à apprendre.

Je pense que ce que je veux dire, c'est que je vois de forts parallèles entre ce domaine et votre exemple. Si les experts de votre domaine sont capables de réfléchir rigoureusement à leurs problèmes (ce qui n'est peut-être pas le cas, mais votre question est suffisamment ouverte pour que ce soit le cas), alors ils sont certainement capables d'exprimer leurs idées dans un langage spécifique approprié au domaine.

Je commencerais par discuter avec les créateurs de contenu de la manière dont ils souhaitent exprimer leurs décisions et leurs choix. À mon avis, ils seraient heureux d'écrire du "code" (même si vous n'êtes pas obligé de l'appeler code) pour décrire ce qu'ils veulent. Donnez-leur un "débogueur" (un outil permettant d'explorer de manière interactive les conséquences des modifications apportées à leur "code") et une belle application de support "IDE", et je pense que vous aurez une solution très viable.

8voto

Winston Ewert Points 17746

Pensez aux feuilles de calcul.

Les feuilles de calcul sont un système simple qui permet aux utilisateurs non techniques d'utiliser les capacités de calcul d'un ordinateur. Ce faisant, ils ont permis aux ordinateurs de résoudre un grand nombre de tâches qui auraient normalement nécessité le développement d'un logiciel personnalisé pour les résoudre. Donc, oui, le développement de logiciels non programmés est possible.

D'un autre côté, regardez les feuilles de calcul. Malgré leurs capacités de calcul, vous n'aimeriez vraiment pas, en tant que programmeur, avoir à développer des logiciels avec elles. En fin de compte, la plupart des techniques qui rendent les langages de programmation meilleurs pour les programmeurs les rendent pires pour la population en général. La possibilité de définir une fonction, par exemple, facilite grandement la vie d'un programmeur, mais je pense qu'elle dérouterait la plupart des autres.

En outre, à partir d'un certain degré de complexité, l'utilisation d'une feuille de calcul serait un véritable casse-tête. Le tableur fonctionne bien dans le domaine pour lequel il a été conçu. Une fois que vous vous éloignez trop de ce domaine, il est tout simplement impossible de travailler. Et encore une fois, ce sont les outils mêmes que les programmeurs utilisent pour gérer la complexité qui empêcheront un système d'être à la fois largement utilisable et suffisamment puissant.

Je pense que pour n'importe quel domaine problématique donné, vous pouvez développer un système qui permet aux experts de spécifier une solution. Il sera beaucoup plus difficile de développer ce système que de résoudre le problème en premier lieu. Toutefois, si vous rencontrez régulièrement des problèmes similaires pour lesquels les experts peuvent développer des solutions, cela peut être intéressant.

7voto

duffymo Points 188155

Je pense que le développement par des non-développeurs est vouée à l'échec. C'est assez difficile lorsque les développeurs de l'essayer. Quel est le taux d'échec? 50% ou plus?

Mon conseil serait d'acheter le produit commercial le plus proche, vous pouvez trouver ou embaucher quelqu'un pour vous aider à développer une solution personnalisée à votre non-développeur d'entretien caractéristiques à l'esprit.

Être un développeur moyen de garder un million de détails à l'esprit à la fois et de se soucier des détails tels que le contrôle de version, de déploiement, les tests, etc. La plupart des gens qui ne se soucient pas de ces choses rapidement pneu de la complexité.

Par tous les moyens d'impliquer les experts du domaine. Mais ne faites pas de la selle avec le développement et la maintenance.

Vous pourriez mettre votre organisation à risque avec un mal fait solution. S'il est important, de le faire correctement.

5voto

Loren Pechtel Points 5730

Je ne pense pas qu'une solution extensive de non-programmeur puisse fonctionner. La programmation est plus qu'un langage, c'est savoir comment faire les choses raisonnablement. Quelque chose conçu pour être convivial pour les non-programmeurs contiendra presque certainement tous les pièges qu'un programmeur sait éviter, même s'il est exprimé en anglais ou par une interface graphique.

Je pense que ce qu'il faut dans un cas comme celui-ci, c'est que les créateurs de contenu s'occupent de créer du contenu et qu'un véritable programmeur le traduise en code informatique raisonnable.

J'ai travaillé avec deux systèmes ERP qui étaient destinés à des non-programmeurs et, dans les deux cas, on pouvait faire à peu près toutes les erreurs possibles avec ces systèmes.

4voto

Norman Ramsey Points 115730

... Des choses simples, comme la création de formulaires html à l'aide des outils existants, sont beaucoup plus ardues qu'elles ne devraient l'être...

Plus ardu pour qui ? Vous prenez un modèle de développement qui fonctionne (même si c'est mal) pour les créateurs de contenu non programmateurs, et parce que quelque chose est ardu pour quelqu'un, vous proposez de le remplacer par un modèle où les créateurs de contenu sont complètement laissés pour compte ? Ça me semble fou.

Si vos créateurs de contenu peuvent apprendre un outil personnalisé construit autour d'un moteur de règles Prolog, ils ont montré qu'ils pouvaient apprendre suffisamment de formalisme pour contribuer au projet. Si vous pensez que d'autres aspects du développement doivent être modifiés, je ne vois que deux choix honorables :

  • Mettre en œuvre le formalisme existant ("outillage personnalisé") en utilisant la nouvelle technologie qui, selon vous, améliorera les choses d'une autre manière. Les créateurs de contenu contribuent exactement comme ils le font actuellement.

  • Concevez et implémentez un langage spécifique au domaine qui gère le décalage d'impédance entre ce que vos créateurs de contenu savent et peuvent faire et la façon dont vous et les autres développeurs pensez que le travail doit être fait.

Votre scénario est un cas classique où un langage spécifique au domaine est approprié. Mais la conception d'une langue n'est pas chose facile, surtout lorsqu'elle est associée à de sérieuses questions de convivialité. Si vous avez de la chance, vous pourrez engager une personne experte en conception linguistique et en convivialité pour vous aider. Mais si vous êtes à but non lucratif, vous n'avez probablement pas le budget nécessaire. Dans ce cas, une possibilité est de chercher de l'aide auprès d'un autre organisme à but non lucratif - une université voisine, si vous en avez une.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X