Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

đŸ§± PowerBuilder — RAD “DataWindow” (CRUD massif, SI lourds)

Type : RAD Client/Serveur (historique) ‱ Points forts : DataWindow (CRUD + reporting + binding DB ultra productif), forte intĂ©gration SQL, productivitĂ© sur applications “mĂ©tier” volumineuses ‱ RĂ©alitĂ© terrain : encore prĂ©sent dans des SI legacy (banques, assurances, industrie, admin) et maintenu sur de longues durĂ©es. Positionnement : 👉 “WinDev old-school + super composant Data-centric”.

1.1

PowerBuilder — dĂ©finition & pourquoi ça a dominĂ©

RAD orientĂ© DB : Ă©crans CRUD + logique + SQL. L’avantage clĂ© : DataWindow (binding, validation, updates).

RADClient/ServerLegacy SI

DataWindow (le “killer feature”)

Composant data-centric : query → dataset → UI → validation → update DB. TrĂšs fort pour Ă©crans lourds et grilles.

CRUD++Binding SQLGrid

Architecture (n-tiers, services)

Historique client/serveur, puis n-tiers : services, middle-tier, DB. Gouverner les accĂšs DB et isoler logique.

N-tiersServicesDB
1.2

CRUD massif : Ă©crans “mĂ©tier” lourds

Gestion de dossiers, saisie, contrĂŽles, tables rĂ©fĂ©rentielles, Ă©tats : PowerBuilder excelle sur volumĂ©trie d’écrans.

Back-officeFormsOps

SQL & Data Access

Culture SQL “native” : queries, transactions, concurrency. Sujet clĂ© : gouverner transactions, locks, erreurs.

SQLTransactionsConcurrency

Maintenance SI lourd

La réalité : refactor, stabilisation, sécurisation, tests, packaging, compatibilité OS/DB, dette technique.

RefactorStabilityDebt

Sécurité & gouvernance

RBAC, audit, secrets DB, durcissement rĂ©seau. Risque historique : clients “trop proches” de la DB.

RBACDB SecretsAudit

Modernisation / migration

StratĂ©gies : wrap services, strangler, réécriture progressive, “screen by screen”. Objectif : rĂ©duire lock-in UI.

StranglerAPIPhased
2.1

Performance (DB-centric)

Perfs = SQL + index + network + batch updates + pagination. DataWindow peut charger trop si mal cadrée.

IndexesPaginationTuning

ALM / releases

Builds, packaging, environnements, gestion de versions. Sur legacy : reproduire builds + dépendances = enjeu.

BuildReleaseEnv
3.1

Use-cases & anti-usecases

OĂč PB est encore “ROI” (maintien SI lourd), et quand basculer vers web/services/low-code moderne.

LegacyOpsDecision

Tradeoffs

Productivité CRUD vs UX moderne/web, dette technique, disponibilité des compétences, stratégie de modernisation.

TradeoffsSkillsModernize

Quickstart (audit 10 jours)

Plan “SI existant” : cartographie, DataWindows critiques, SQL hotspots, sĂ©curitĂ©, build reproducible, plan migration.

AuditHotspotsPlan
★

Cheat-sheet PowerBuilder

Checklists : DataWindow, transactions, locks, perfs SQL, sécurité DB, refactor, modernisation progressive.

ChecklistDB-centricLegacy
PowerBuilder — overview “densifiĂ©â€ (DataWindow, architecture DB-centric, modernisation)
Mental model (Ă  retenir)
DataWindowcomposant “dataset↔UI↔DB updates” (productivitĂ© CRUD)
SQL-firstrequĂȘtes, transactions, curseurs, locks : la DB est au centre
Apps lourdesbeaucoup d’écrans mĂ©tiers, beaucoup de rĂšgles de saisie
Legacy SIdurée de vie longue, évolution progressive, stabilisation
Modernisationwrapping services + strangler + réécriture ciblée
Pourquoi PowerBuilder reste présent
RaisonEffetConséquence
Coût de remplacementSI stable + gros périmÚtremaintenance plutÎt que rewrite
CRUD massifécrans + grilles + étatsproductivité historique
DB cƓur mĂ©tierSQL proche, transactions maĂźtrisĂ©estuning “DB-centric”
Positionnement “trùs fort sur CRUD / DataWindow”
PowerBuilder (image) :
- tu construis vite des écrans data-centric (listes, grilles, formulaires)
- la DataWindow fait le gros du boulot : binding, update, validation, rendering
- tu codes la logique métier + navigation + contrÎles
- la DB est le centre : perfs = SQL + index + transactions + réseau

En 2025 :
- on le rencontre surtout en maintenance/modernisation
- l’enjeu = sĂ©curiser + stabiliser + sortir du client/serveur “pur”
          

Le piùge : laisser des clients “trop intelligents” parler trop directement à la DB sans contrîle central.

Décision rapide (maintenir vs moderniser)
  • Maintenir si : usage stable, ROI de refactor > rewrite, contraintes mĂ©tiers fortes.
  • Moderniser si : besoin web, sĂ©curitĂ©, exposition API, montĂ©e en charge, UX moderne.
1.1 DĂ©finition — PowerBuilder, son ADN RAD, et pourquoi DataWindow a changĂ© la donne
DĂ©finition “engineering”

PowerBuilder est un environnement RAD conçu pour accĂ©lĂ©rer la crĂ©ation d’applications mĂ©tier data-centric. Sa signature : DataWindow — un composant qui encapsule une requĂȘte, un dataset, un rendu UI (table, formulaire), et une logique d’update vers la base. RĂ©sultat : des Ă©crans CRUD et des grilles construits trĂšs vite.

DataWindow
SQL-first
CRUD massif
SI lourd
Les briques typiques
BriqueRÎleErreur fréquente
DataWindowdataset + UI + updatecharger “tout” sans pagination
Business logiccontrÎles, rÚgles, fluxlogique dispersée dans 80 écrans
DB connectionstransactions, commitstransactions trop longues (locks)
Reports/exportssorties métierbatch non contrÎlés (perfs)
Promesse (cadrée)
Promesse PowerBuilder :
- fabriquer vite des Ă©crans data-centric et “opĂ©rationnels”
- manipuler des données avec une productivité élevée
- s’appuyer sur SQL/DB comme source de vĂ©ritĂ©

Condition de réussite (sinon legacy douloureux) :
- architecture : limiter l'accĂšs DB direct depuis UI
- discipline : logique métier centralisée / réutilisable
- transactions courtes (locks)
- tests & build reproductible
            

Une app PB “spaghetti” devient trùs chùre à moderniser : la discipline est la seule assurance.

Forces (ce qui reste impressionnant)
ForcePourquoiRésultat
CRUD / grillesDataWindow “fait le job”beaucoup d’écrans vite
SQL natifculture DBcontrÎle fin (si bien géré)
Apps lourdesergonomie opsoutil back-office efficace
Domaines oĂč on le rencontre encore
- SI bancaires / assurance (back-office)
- industrie (gestion dossiers, stocks, référentiels)
- administration interne (process “data-heavy”)
- systĂšmes oĂč la DB est centrale et stable
            
Limites / risques
  • UX / Web : pas conçu nativement pour expĂ©rience web moderne.
  • Dette : logique dispersĂ©e, duplication, couplage UI↔DB.
  • SĂ©curitĂ© : clients historiques avec accĂšs DB direct (risque + gouvernance).
  • CompĂ©tences : raretĂ© relative des profils (dĂ©pendance interne).
Anti-pattern “legacy”
- chaque écran a ses rÚgles copiées/collées
- SQL en dur partout
- transactions longues
- pas d’API / pas de couche service
- build non reproductible

=> modernisation = chantier
            
RemĂšde
- centraliser : "services" (API) + rÚgles partagées
- rĂ©duire le couplage UI↔DB
- observer : hotspots SQL + locks + temps écran
- plan modernisation progressive (strangler)
            
Décision (maintien vs transformation)
QuestionSi “Oui”Sinon
Le SI est stable et rentable ?maintenir + refactor cibléplan modernisation
Besoin web/API urgent ?strangler + servicesmaintenance ok
Risque sécurité DB ?isoler via middle-tierdurcir accÚs
VolumĂ©trie Ă©crans Ă©norme ?migration progressive “screen by screen”rewrite plus simple possible
DataWindow — le cƓur de PowerBuilder (dataset ↔ UI ↔ DB updates) : patterns, risques, bonnes pratiques
Mental model
DataWindow = "mini framework data-centric" :
- une source (SQL / stored proc)
- un dataset (rows/columns)
- un rendu UI (grid/form/labels)
- une logique d’update (insert/update/delete)
- des validations (type, formats, rĂšgles)

Résultat :
- fabriquer vite des écrans CRUD et listes
            
Ce que ça change
En dev web classique :
- tu codes UI + binding + validation + persistence

Avec DataWindow :
- tu configures beaucoup (et tu codes l’exception)

Donc :
- productivité énorme sur CRUD
- mais discipline nécessaire (sinon charge/perf)
            
Patterns (robustes)
Pattern 1 — “Paged list” (anti-charge)
But : éviter "SELECT *" + 200k lignes.

- filtrer par critĂšres
- pagination (par pages)
- colonnes minimales
- lazy load détails sur action utilisateur
            
Pattern 2 — “Validate then commit”
- valider champs (UI)
- valider rÚgles métier (service)
- commit court (transactions courtes)
- journaliser erreurs (corr_id)
            
Pattern 3 — “Service wrapper”
Objectif : sortir du DB direct.
- UI (PB) appelle un service
- service appelle DB, applique rĂšgles
- DB credentials uniquement cÎté service

Résultat :
- sécurité + gouvernance + audit
            
Pattern 4 — “Read model / Write model”
- lecture optimisée (vue, index)
- écriture validée (proc/service)
- réduit conflits et locks
            
Performance (les piĂšges DataWindow)
PiĂšgeSymptĂŽmeFix
Dataset énormeécran lent, mémoirepagination + colonnes minimales
Update en batch non cadrélocks, timeoutstransactions courtes, batch size
SQL non indexétemps DBindex, plans, stats
N+1 queriesréseau saturéjointures/vues, préchargement ciblé
Quality gates (obligatoires sur legacy)
  1. Chaque DataWindow a un contrat (inputs, filtres, pagination).
  2. Pas de “SELECT *” en prod.
  3. Temps écran mesuré (p95) + budget de latence DB.
  4. Transactions courtes, commits explicités, rollback propre.
  5. Erreurs standard (message utilisateur + corr_id support).
  6. RBAC cohĂ©rent (Ă©cran ≠ autorisation DB).
Architecture — du client/serveur DB-direct au n-tiers (service layer) : modùle de modernisation
Topologie 1 — client/serveur “pur” (legacy)
[PowerBuilder Client]  --->  [Database]
- logique répartie cÎté client
- accĂšs DB direct
- sécurité : complexe (credentials distribués)
            
Topologie 2 — n-tiers (cible)
[PB UI] -> [Service/API Layer] -> [Database]
- credentials DB centralisés
- rÚgles métier réutilisables
- audit + rate limit + monitoring
- plus facile Ă  exposer au web
            
Service layer : pourquoi c’est le pivot
Service layer = "ré-architecture sans tout réécrire"

Apporte :
- sécurité (DB creds jamais cÎté client)
- gouvernance (RBAC, audit)
- standardisation erreurs (corr_id)
- performance (caching, pooling)
- ouverture (web, microservices, ETL)

Idée :
- la UI devient “plus fine”
- la DB devient “moins exposĂ©e”
        
Étapes de modernisation (pragmatiques)
  1. Cartographier : écrans/DataWindows critiques + flux DB.
  2. Isoler : 10 endpoints “service” sur les opĂ©rations critiques.
  3. Basculer : PB UI → services pour ces opĂ©rations (1 pĂ©rimĂštre).
  4. RĂ©pĂ©ter : “strangler” Ă©cran par Ă©cran.
  5. Ouvrir : web / BI / mobile sur les mĂȘmes services.
CRUD massif — pourquoi PowerBuilder tient encore dans certains SI (Ă©crans, grilles, rĂšgles)
Ce que “CRUD massif” signifie (rĂ©el)
- 300 à 2000 écrans métiers (oui
)
- nombreux référentiels (clients, produits, rÚgles)
- grilles de saisie (bulk)
- validations complexes et historiques
- reporting/export pour l’opĂ©rationnel
          

La migration est coĂ»teuse surtout Ă  cause du nombre d’écrans, pas du “langage”.

StratĂ©gie “screen-by-screen”
- identifier top 20% écrans (usage)
- encapsuler rĂšgles dans services
- remplacer écrans progressivement :
  - web
  - autre RAD
  - desktop modern
- garder la DB stable pendant transition
          
SQL & transactions — le vrai “moteur” (locks, commits, erreurs, concurrence)
Rùgles d’or (DB-centric)
- transactions courtes
- commits explicites et justifiés
- indexation alignée avec filtres réels
- Ă©viter requĂȘtes “fourre-tout”
- observabilité : plan SQL + temps DB + p95 écran
        
Locks / concurrence (piĂšges legacy)
PiĂšges :
- écran ouvert = transaction non close
- batch update massif = locks longs
- “select then update” sans stratĂ©gie

Fix :
- commits courts
- “optimistic locking” quand possible
- batch size
- retry contrÎlé
        
Contrat d’erreurs (supportable)
- user_message : clair
- tech_message : log
- code : VALIDATION | CONFLICT | LOCK | TECH
- corr_id : support

Objectif :
- rĂ©duire le “debug au tĂ©lĂ©phone”
        
Maintenance d’un SI PowerBuilder — refactor, dette, tests, build reproductible, compatibilitĂ©
La rĂ©alitĂ© “SI lourd”
  • StabilitĂ© opĂ©rationnelle > nouvelles features.
  • CompatibilitĂ© OS/DB/drivers/outils build.
  • Refactor incrĂ©mental (sans casser).
  • Documentation minimale : flux, Ă©crans, DB objects, dĂ©pendances.
Top 10 chantiers rentables
  1. Build reproductible (versions, deps).
  2. Cartographie DataWindows critiques.
  3. Standard erreurs + corr_id.
  4. Centraliser rÚgles partagées.
  5. Durcir accĂšs DB.
  6. Mesurer perfs SQL (hotspots).
  7. Réduire transactions longues.
  8. Automatiser tests “happy path”.
  9. Mettre une couche service pour opérations critiques.
  10. Plan de modernisation progressif (strangler).
“Debt radar” (symptîmes)
- duplication de logique (copier/coller)
- SQL en dur partout
- écrans trÚs couplés à la DB
- absence de standards
- temps écran non mesuré
- incidents rĂ©currents “alĂ©atoires”
- release risquée (pas de test)

=> ce sont des signaux de modernisation
          
SĂ©curitĂ© & gouvernance — risques historiques (DB direct) et modĂšle de durcissement (services, RBAC, audit)
Risque “legacy” #1 : DB credentials cĂŽtĂ© client
Si le client se connecte directement :
- distribution de secrets DB
- contrĂŽle d’accĂšs hĂ©tĂ©rogĂšne
- audit incomplet
- surface d’attaque large
          

Le pivot sécurité = service layer (DB creds uniquement cÎté serveur).

ModĂšle de durcissement (pragmatique)
1) Séparer lecture/écriture
2) Centraliser accĂšs DB via services
3) RBAC cÎté services (pas seulement UI)
4) Audit : qui / quoi / quand (corr_id)
5) Rotation secrets + moindre privilĂšge
6) Segmenter réseau (DB non exposée)
          
Modernisation / migration — stratĂ©gies rĂ©alistes (wrap, strangler, screen-by-screen, coexistence)
4 stratégies (choisir selon contexte)
StratégieIdéeQuand
Wrap servicesAPI autour DB/logicurgence sécurité / ouverture web
Stranglerremplacer par morceauxbeaucoup d’écrans
Rewrite cibléréécrire 20% critiqueROI rapide
Rewrite totalnouveau SIrare, si dette extrĂȘme
Plan “6 mois” (trùs pragmatique)
M1 : cartographie + hotspots SQL + risques sécurité
M2 : service layer (10 endpoints) + auth/RBAC + audit
M3 : migrer 5 écrans critiques vers services
M4 : construire un front web pilote (ou autre UI) sur mĂȘmes services
M5 : industrialiser ALM (dev/test/prod, release, tests)
M6 : Ă©tendre “screen by screen” + KPI adoption + rĂ©duction incidents
        
Risques (Ă  anticiper)
  • Inertie mĂ©tier : Ă©cran historique “indispensable”.
  • Écrans cachĂ©s : usage rĂ©el non documentĂ©.
  • Couplage DB : trop de rĂšgles dans UI/SQL.
  • Perf : nouveaux services doivent ĂȘtre dimensionnĂ©s (pooling, cache).
Performance — tuning DB-centric (SQL, index, pagination, batch, rĂ©seau)
Les 7 leviers les plus rentables
LevierMesureAction
Plans SQLtop slow queriesindex + stats + réécriture
Paginationrows per screenpage size + filtres
Colonnespayloadsélection minimale
Transactionslock timecommits courts
Batchupdate throughputbatch size + fenĂȘtre
Réseauround-tripséviter N+1
Cachehit ratioréférentiels en cache
Mini protocole d’audit perf (2 jours)
- instrumenter : temps écran + temps DB + rows loaded
- extraire top 30 queries
- vérifier index + stats + cardinalités
- identifier 10 DataWindows "gros datasets"
- appliquer : pagination + colonnes minimales + filtres
- re-mesurer p95
      
ALM / releases — build reproductible, environnements, dĂ©pendances, “no-touch-prod”
Build reproductible (la priorité #1)
Objectif :
- reconstruire la mĂȘme version Ă  l’identique

Actions :
- figer versions (compilo, libs, drivers)
- documenter dépendances
- automatiser build si possible
- artefacts signés / hash
        
Environnements
Minimum legacy :
- DEV : développement
- TEST : validation + perf
- PROD : exécution

RĂšgle :
- DB migrations contrÎlées
- credentials distincts
        
Release “safe”
1) build + tag version
2) tests fonctionnels (happy path)
3) sauvegarde DB + plan rollback
4) déploiement
5) smoke tests
6) monitoring post-release
        
Use-cases & anti-usecases — oĂč PowerBuilder est encore “ROI”, et oĂč il faut basculer
Use-cases (réalistes)
  • Maintenance et Ă©volution d’un back-office existant (Ă©crans nombreux).
  • Refactor “sĂ©curitĂ© + perf” sans changer l’outil utilisateur.
  • Modernisation progressive : PB UI conservĂ©e, services ajoutĂ©s.
  • Migration “screen-by-screen” vers web / autre UI.
Anti-usecases (plutÎt éviter)
  • Produit web public moderne, mobile-first, UX trĂšs custom.
  • API-first cloud-native avec microservices/observabilitĂ© stricte (possible via service layer, mais alors PB n’est plus central).
  • Refonte totale sans cartographie : risque projet trĂšs Ă©levĂ©.

La bonne question : “moderniser l’architecture” plutît que “changer l’outil”.

Tradeoffs — productivitĂ© CRUD vs modernitĂ© web, dette, compĂ©tences, stratĂ©gie
Tradeoffs (table)
ChoixGainsCoûtsMitigation
Garder PBstabilité + vitesse CRUDdette + rareté skillsrefactor + documentation + formation
Service layersécurité + ouverture webchantier archistrangler progressif
Rewritearchitecture modernecoût/risquecibler 20% critique
Migration écranprogressifduréeKPI + priorisation usage
Quickstart (audit 10 jours) — cartographie + hotspots + sĂ©curitĂ© + build reproductible + plan modernisation
Plan 10 jours (SI existant)
JourObjectifLivrableCritĂšre
J1–J2Cartographietop Ă©crans/DataWindows + flux80% usage couvert
J3–J4Perf DBtop queries + index gapshotspots identifiĂ©s
J5Transactions/locksliste transactions longuesplan réduction
J6Sécuritérisques DB direct + plan durcissementpriorisé
J7Buildbuild reproductible documentérebuild ok
J8Standardsconventions + erreurs + corr_idadoptable
J9Modernisationstratégie (services/strangler)pragmatique
J10Roadmapplan 6 mois + KPIvalidable
KPI (modernisation)
- p95 temps écran (top 20)
- incidents / mois (avant/aprĂšs)
- % opérations via services (vs DB direct)
- backlog migration écrans
- taux d’adoption (utilisateurs actifs)
      
Cheat-sheet PowerBuilder — anti-galĂšre (DataWindow, SQL, transactions, sĂ©curitĂ©, modernisation)
25 rùgles “prod”
  1. Cartographier les DataWindows critiques (usage).
  2. Pagination obligatoire sur listes lourdes.
  3. Éviter “SELECT *” et colonnes inutiles.
  4. Mesurer p95 temps écran + temps DB.
  5. Top slow queries → index/stats/réécriture.
  6. Transactions courtes (locks).
  7. Batch updates : batch size + fenĂȘtre.
  8. Standardiser erreurs (VALIDATION/LOCK/TECH) + corr_id.
  9. Centraliser rÚgles partagées (éviter duplication).
  10. RĂ©duire SQL “en dur” partout.
  11. Durcir accĂšs DB (moindre privilĂšge).
  12. Éviter DB credentials cĂŽtĂ© client (si possible).
  13. Introduire service layer pour opérations critiques.
  14. RBAC cÎté serveur/service, pas seulement UI.
  15. Audit : qui fait quoi (au minimum sur opérations sensibles).
  16. Build reproductible (versions figées).
  17. DEV/TEST/PROD distincts.
  18. Plan rollback DB (backup, scripts).
  19. Documentation : flux + dépendances + runbook.
  20. Refactor hebdo (duplications).
  21. Strangler : écran par écran, priorisé usage.
  22. Exposer des APIs propres pour web/BI.
  23. Ne pas réécrire tout sans cartographie.
  24. POC perf avant bascule majeure.
  25. KPI modernisation suivis mensuellement.
Résumé (à coller dans IDEO-Lab)
PowerBuilder = RAD DB-centric historique
- force : DataWindow (CRUD + grilles + updates DB)
- encore présent dans des SI lourds (maintenance/modernisation)
- enjeux : perfs SQL, transactions/locks, sécurité (DB direct), build reproductible
- modernisation gagnante : service layer + strangler “screen-by-screen”
Positionnement : WinDev old-school + super composant data-centric