An Empirical Study of API Misuses of Data-Centric Libraries
Dit artikel presenteert een empirische studie naar API-misbruik in vijf data-centric bibliotheken, waarbij door analyse van Stack Overflow en GitHub wordt aangetoond dat de aard van deze misbruiken vergelijkbaar is met die van deep learning-bibliotheken en dat ontwikkelaars vaak fouten maken ongeacht de documentatie.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat softwareontwikkelaars bouwers zijn die een huis bouwen. Om dat huis te bouwen, gebruiken ze geen bakstenen en cement uit hun eigen kelder, maar halen ze kant-en-klare onderdelen van derden: deuren, ramen, kranen en elektrische systemen. In de programmeerwereld heten deze onderdelen API's (Application Programming Interfaces) van bibliotheken.
Deze auteurs van het paper hebben een onderzoek gedaan naar een specifiek type "onderdelen": die voor data. Denk hierbij aan bibliotheken zoals pandas (voor tabellen), NumPy (voor rekenen) en seaborn (voor grafieken).
Hier is wat ze hebben ontdekt, vertaald naar alledaags taalgebruik:
1. Het probleem: De "Geheime Regels"
De meeste mensen denken dat als je een deurbel op een deur klikt, die gewoon gaat rinkelen. Maar bij deze data-bibliotheken is het anders. Het is alsof je een heel slimme, maar soms verwarrende robot hebt die je helpt bouwen.
De robot zegt: "Ik kan een deur installeren." Maar hij heeft geheime regels:
- "Als je een houten deur wilt, moet je eerst de muur van baksteen maken."
- "Als je een elektrische deur wilt, moet je eerst de stroom aanzetten."
Als je deze regels niet kent, of ze negeert, gebeurt er iets raars. Soms werkt de deur niet (crash), maar vaak is het erger: de deur werkt wel, maar hij is verkeerd geplaatst. Je hebt een deur in de muur, maar hij zit achterstevoren. De robot zegt niets, maar je huis ziet er raar uit.
2. Wat hebben ze gevonden?
De onderzoekers keken naar 5 populaire data-bibliotheken en zochten naar fouten die ontwikkelaars maakten. Ze vonden 49 verschillende soorten fouten. Hier zijn de belangrijkste bevindingen:
De "Data-Afhankelijkheid" (Het meest belangrijke punt):
Bij normale software is een fout altijd een fout. Bij deze data-bibliotheken hangt het af van wat voor data je invoert.- Voorbeeld: Stel je voor dat je een kleurenpalet kiest voor een schilderij. Als je de kleuren kiest voor een lijst met namen (bijv. "Jan", "Pieter"), werkt het perfect. Maar als je dezelfde instructie geeft voor een lijst met getallen (bijv. 1, 2, 3), verandert de robot van gedachten en gebruikt hij een heel ander, ongewenst kleurenpalet. De code is hetzelfde, maar het resultaat is anders omdat de data anders is.
- Conclusie: 55% van de fouten hangt af van de data. Als je de verkeerde data invoert, werkt de "correcte" code ineens niet meer.
De "Verkeerde Knop" (Parameters):
De meeste fouten (51%) komen doordat ontwikkelaars de verkeerde knop indrukken of een knop vergeten.- Analogie: Je hebt een wasmachine. Je zet het op "Wol", maar vergeet te zeggen dat je geen wasmiddel gebruikt. De machine draait, maar je kleren zijn nu nat en zonder zeep. De machine doet wat hij moet doen, maar niet wat jij wilde.
De "Stille Fouten":
Dit is het gevaarlijkste deel. Bij veel fouten krijg je een felrood waarschuwingsbordje (een crash). Maar bij deze data-bibliotheken krijg je vaak niets.- Analogie: Je maakt een verkeerde bocht in je auto. De auto geeft geen alarm, de motor stopt niet. Je rijdt gewoon door, maar je bent nu in de verkeerde stad. Je merkt pas dat er iets mis is als je ergens aankomt en ziet dat je niet op de juiste plek bent. In software betekent dit: je berekent iets, het resultaat ziet eruit als een getal, maar het is volledig onzin.
3. Waarom gebeurt dit?
De onderzoekers ontdekten dat de handleidingen (documentatie) vaak wel de regels bevatten, maar dat ontwikkelaars ze toch missen.
- Het is te complex: De handleidingen zitten vol met technische details. Het is alsof je een handleiding voor een robot hebt die 50 pagina's lang is, maar de belangrijkste regel staat in de kleine lettertjes op pagina 42.
- De "Stille" verwachtingen: Soms verwacht de robot dat je iets weet dat niet in de handleiding staat. Bijvoorbeeld: "Wees voorzichtig met getallen, want anders verandert de kleur." Als je dat niet weet, maak je een fout.
4. Wat betekent dit voor de toekomst?
De onderzoekers zeggen: "We moeten de robots (de software) slimmer maken."
- Betere waarschuwingen: De programmeertaal moet zeggen: "Hé, je gebruikt deze knop op een verkeerd type data!" voordat het fout gaat.
- Beter leesbare handleidingen: De makers van deze bibliotheken moeten hun regels duidelijker maken, zodat niemand ze over het hoofd ziet.
- Slimmere hulpmiddelen: Er moeten nieuwe tools komen die niet alleen kijken naar de code, maar ook kijken naar de data die erin zit, om fouten te voorspellen voordat ze gebeuren.
Samengevat:
Deze studie laat zien dat het werken met data-software vaak voelt als het spelen met een legpuzzel waarbij de stukjes soms van vorm veranderen als je ze niet goed bekijkt. Veel fouten komen niet door domme fouten, maar omdat de regels van het spel afhangen van de stukjes die je in handen hebt. De onderzoekers willen dat we betere regels en duidelijker instructies krijgen, zodat we niet meer per ongeluk een huis bouwen dat op zijn kop staat.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.