Développement Moldable : Simplifier les Insights Logiciels
Découvrez comment le développement malléable transforme la compréhension des logiciels avec des outils personnalisés.
― 7 min lire
Table des matières
Le développement malléable rend le logiciel plus facile à comprendre. Ça permet aux développeurs de créer des outils personnalisés pour répondre à des questions spécifiques sur le logiciel. Ce truc rend le système plus explicable, où les utilisateurs peuvent explorer de manière interactive le fonctionnement interne du logiciel.
Introduction : Développement Malléable en Bref
Les systèmes logiciels contiennent beaucoup de connaissances qui peuvent aider les développeurs et les utilisateurs. Mais y accéder, c'est souvent le casse-tête. Les ressources habituelles pour évaluer un logiciel, comme le code source ou les systèmes en fonctionnement, ne donnent pas toujours des réponses claires. La doc peut aussi être à jour ou incomplète.
Bien que les outils d'analyse logicielle aident, ils sont souvent limités car chaque système est unique. Souvent, les développeurs passent beaucoup de temps à comprendre ce que fait un système et comment il fonctionne. C'est un coût important dans le développement logiciel.
Pour améliorer ce truc, le développement malléable crée des systèmes capables de répondre à leurs propres questions. En rendant facile l'ajout de plusieurs outils personnalisés, ça donne un modèle dynamique du logiciel que les utilisateurs peuvent explorer. Ces outils peuvent inclure des fonctionnalités comme des inspecteurs, des éditeurs de code, des débogueurs et des carnets.
Par exemple, dans un jeu comme le Ludo, au lieu de juste voir le code source ou de jouer, les développeurs peuvent créer des Vues personnalisées pour poser des questions spécifiques sur le jeu et obtenir des réponses faciles. Ils peuvent visualiser les mouvements, voir l'état actuel du jeu et interagir avec celui-ci de manière plus compréhensible.
Modèles de Développement Malléable
Le développement malléable peut être décomposé en plusieurs modèles qui fonctionnent ensemble. Ces modèles fournissent un cadre pour créer ces systèmes.
Modèles d’Outils
Ces modèles se concentrent sur la création d'outils personnalisés faciles à créer et à utiliser.
Outil Malléable
Si les outils existants ne répondent pas aux besoins d'un domaine spécifique, un outil malléable peut être développé. Au lieu de créer des plugins complexes et coûteux, un outil malléable permet de personnaliser à l'exécution. Par exemple, un exécuteur de tests pourrait identifier automatiquement les cas de test selon des conventions de nommage, rendant plus simple l'exécution de tests spécifiques à un domaine.
Terrain de Jeu Contextuel
Avec un outil malléable, un terrain de jeu contextuel permet d'explorer des entités logicielles de manière interactive. Cet environnement permet aux utilisateurs d'écrire et de tester des petits bouts de code sans avoir besoin de passer d'un outil à l'autre. Par exemple, dans une application Python, un terrain de jeu pourrait permettre aux utilisateurs de manipuler des instances d'objets en direct et de tester leurs idées sans mettre en place des tests séparés.
Vue Personnalisée
Les vues personnalisées aident à présenter les infos du domaine efficacement. Au lieu d'utiliser une vue générique qui pourrait ne pas mettre en avant des détails importants, les développeurs peuvent créer des vues sur mesure. En prenant l'exemple d'un jeu de Ludo, ils peuvent créer une vue personnalisée montrant les mouvements de chaque joueur, facilitant la compréhension de l'état actuel du jeu.
Recherche Personnalisée
Dans des modèles de domaine complexes, naviguer entre les entités peut être galère. Les fonctionnalités de recherche personnalisée permettent aux utilisateurs de localiser rapidement des entités selon divers critères. Par exemple, dans une application de carnet d'adresses, les utilisateurs peuvent chercher des contacts ou adresses spécifiques, augmentant l'efficacité.
Action Personnalisée
Pour les tâches répétitives, les actions personnalisées simplifient l'exécution. Au lieu de lancer les mêmes bouts de code encore et encore, un développeur peut encapsuler des actions communes en un seul clic dans l'outil malléable. Ça aide à rationaliser les processus et réduit les erreurs.
Récit Composé
Expliquer un système logiciel peut parfois être difficile. Un récit composé combine différentes vues en une histoire cohérente, aidant les utilisateurs à comprendre des fonctionnalités ou des problèmes spécifiques. En passant par plusieurs étapes, les utilisateurs peuvent voir comment naviguer dans un système ou résoudre un problème efficacement.
Modèles de Modélisation
Ces modèles se concentrent sur la structuration des entités de domaine pour améliorer la compréhension et la requête.
Objet Malléable
Un objet malléable est une instance en direct d'une entité de domaine que les développeurs peuvent interroger. Au lieu d'écrire du code dans un éditeur de texte traditionnel, ils peuvent interagir avec un objet vivant pour poser des questions et recueillir des infos. Ce processus d'exploration peut mener à la création d'outils personnalisés qui améliorent la compréhension.
Objet Exemple
Les objets exemples servent d'instances concrètes montrant des états ou comportements spécifiques dans le système. Ils peuvent être utiles pour tester et documenter, permettant aux développeurs de rapidement référencer ou démontrer des fonctionnalités.
Wrapper de Données Malléable
Lorsqu'on travaille avec des données existantes, appliquer un wrapper de données malléable facilite leur gestion. Plutôt que de travailler avec des structures de données brutes, les développeurs peuvent envelopper des données dans une classe dédiée qui représente mieux les concepts du domaine. Ça permet de créer des vues et actions personnalisées qui reflètent l'interprétation des données.
Wrapper de Collection
Tout comme les wrappers de données malléables, les wrappers de collection traitent des groupes d'objets de domaine. Ils permettent d'appliquer des outils personnalisés aux collections, améliorant les capacités de navigation et d'exploration.
Modèles de Processus
Les modèles de processus guident l'organisation et la gestion des tâches impliquées dans le développement malléable.
Journal de Projet
Tenir un journal de projet aide à suivre les progrès, les décisions et les expériences. Plutôt que de créer une documentation après la fin d'un projet, les développeurs peuvent utiliser un carnet en direct pour documenter leur parcours. Cette approche permet de garder une trace des changements et décisions qui peuvent améliorer les efforts de développement futurs.
Mise en Place des Outils
Avant de commencer le développement malléable, il peut être nécessaire de mettre en place des outils fondamentaux. Ça peut inclure des parsers pour des formats spécifiques ou des ponts vers d'autres systèmes. Investir dans ces outils au début peut accélérer le processus de développement réel.
Angle Mort
Identifier les "angles morts" d'un système est crucial. Ce sont des zones que les parties prenantes trouvent difficiles à comprendre ou à surveiller. En se concentrant sur ces angles morts, les développeurs peuvent créer des outils qui apportent de la visibilité et aident les parties prenantes à voir la valeur du développement malléable.
Vue Simple
Quand on développe une vue personnalisée, commencer simple est clé. Créer une vue qui transmet les infos essentielles permet d'être efficace. S'il faut plus de complexité plus tard, des améliorations peuvent être faites.
Outil d'Analyse Éphémère
Parfois, pendant des évaluations ou investigations de bugs, des outils personnalisés rapides sont utiles. Ces outils jetables peuvent être développés pour fournir une compréhension immédiate de problèmes spécifiques sans avoir besoin de composants réutilisables.
Conclusion
Le développement malléable offre un moyen de rendre les systèmes logiciels plus explicables et plus faciles à explorer. En décomposant le processus en modèles compréhensibles, les développeurs peuvent se concentrer sur des besoins spécifiques dans leurs projets. En faisant évoluer continuellement ces systèmes avec des outils personnalisés qui s'adaptent aux besoins des utilisateurs, le logiciel peut devenir plus accessible tant pour les parties techniques que non techniques.
Titre: Moldable Development Patterns
Résumé: Moldable development supports decision-making by making software systems explainable. This is done by making it cheap to add numerous custom tools to your software, turning it into a live, explorable domain model. Based on several years of experience of applying moldable development to both open-source and industrial systems, we have identified several mutually supporting patterns to explain how moldable development works in practice. This paper targets (i) readers curious to learn about moldable development, (ii) current users of the Glamorous Toolkit moldable IDE wanting to learn best practices, and (iii) developers interested in applying moldable development using other platforms and technology.
Auteurs: Oscar Nierstrasz, Tudor Gîrba
Dernière mise à jour: Sep 27, 2024
Langue: English
Source URL: https://arxiv.org/abs/2409.18811
Source PDF: https://arxiv.org/pdf/2409.18811
Licence: https://creativecommons.org/licenses/by-sa/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://www.micahsmith.com/blog/2021/02/sharing-a-preprint-using-acmart/
- https://www.europlop.net
- https://gtoolkit.com
- https://pharo.org
- https://web.archive.org/web/20240523010248/
- https://www.jetbrains.com/help/idea/customizing-views.html
- https://web.archive.org/web/20240413225707/
- https://www.jetbrains.com/help/writerside/custom-search-service.html
- https://web.archive.org/web/20240916005104/
- https://en.wikipedia.org/wiki/Narrative
- https://api.github.com/orgs/feenkcom
- https://www.lifeware.ch
- https://web.archive.org/web/20231213144857/
- https://book.gtoolkit.com/adding-simple-list-views-for-ludo-players--3g9kpmxty3fj9eev3ucmqkztc
- https://hillside.net/plop/2013/papers/proceedings/papers/cunningham.pdf
- https://web.archive.org/web/20240917092258/
- https://en.wikipedia.org/wiki/Zettelkasten
- https://web.archive.org/web/20240820082136/
- https://docs.jupyter.org/en/latest/
- https://docs.jupyter.org/
- https://roamresearch.com
- https://lepiter.io/feenk/steering-agile-architecture-by-example--th-e2p6aps2brbby94deek31xqxh/
- https://web.archive.org/web/20240430071604/
- https://jupyterbook.org/en/stable/interactive/interactive.html
- https://xkcd.com/1319/