Testgecertificeerde migratie voor zakelijke SAS-codebases
Uw SAS-landschap werkt. Duizenden programma's, macro's, formats en geplande taken zijn door de jaren heen bijgeschaafd, en veel van wat ze doen staat nergens anders beschreven dan in de code zelf. Dat naar een nieuw platform brengen, hoe compatibel ook, brengt één werkelijk risico met zich mee: iets wat vroeger klopte is nu subtiel fout, en niemand merkt het tot het ertoe doet.
Jenner Professional Services haalt dat risico weg met één eenvoudige discipline. Voordat we iets veranderen, bouwen we een volledige, uitvoerbare vastlegging van wat uw huidige systeem doet. Daarna gebruiken we die vastlegging om test voor test aan te tonen dat het gemigreerde systeem hetzelfde doet.
Het resultaat is een migratie die u kunt aftekenen op bewijs in plaats van op vertrouwen, en een regressiesuite die voorgoed van u blijft.
Wij zijn SAS-experts, zoals blijkt uit het feit dat wij een volledige implementatie van die taal en dat systeem hebben gebouwd. Migreren daarheen is echter maar één van de wegen die u met ons kunt inslaan.
Wij kunnen onze implementatie van SAS-compatibele code, en onze testgedreven werkwijze, inzetten voor een geslaagde migratie naar Python of R, naar Snowflake of Databricks, of naar andere oplossingen — ook naar Siemens SLC.
Wij bevelen migratie naar Jenner aan omdat die tegelijk sneller, minder complex en goedkoper is voor bedrijven met een bestaande SAS-infrastructuur.
Jenner draait de SAS-taal, vrijwel elke procedure, de macrofaciliteit, graphics en een breed scala aan dataverbindingen. Voor het meeste code is migreren een kwestie van Jenner op dezelfde programma's richten. Maar een zakelijke codebasis is nooit alleen de taal. Het is ook alles wat de taal raakt:
autoexec.sas, configuratiebestanden, systeemopties (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), omgevingsvariabelen, SYSPARM, en de omvang en levensduur van de WORK-bibliotheek.
Wachtwoorden ingebed in LIBNAME-statements, met {SAS002} gecodeerde strings, inloggegevens in via %include opgenomen bestanden, Kerberos- of SSO-tickets, en de vraag waar dat allemaal in plaats daarvan hoort te staan.
SAS/ACCESS-engines voor Oracle, DB2, Teradata, SQL Server, Snowflake, Hive en andere; expliciete en impliciete pass-through-SQL; engine-opties die de resultaten beïnvloeden (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); typetoewijzing voor datums, decimalen en NULL-waarden; en gedrag dat stilletjes veranderde toen SQL naar de database werd geduwd in plaats van lokaal te draaien.
Hard ingebakken paden, Windows-stationsletters tegenover Linux-mounts, hoofdlettergevoelige bestandsnamen, NFS- en SMB-shares, FILENAME PIPE- en X-commando's, SYSGET, en bestandsrechten.
Formatcatalogi, gecompileerde of opgeslagen macro's, indexen, audit trails, views, SPDE-bibliotheken, transportbestanden, versleutelde of gecomprimeerde datasets, en datasets uit het V6/V8-tijdperk die opnieuw gegenereerd moeten worden in plaats van gekopieerd.
SAS/CONNECT-RSUBMIT-blokken, Grid, SAS/SHARE, Stored Processes, autorisatie via de metadataserver, Enterprise Guide-projecten, door DI Studio gegenereerde taken en Viya CAS-acties. Voor elk bestaat een equivalent op het nieuwe platform, maar geen identiek equivalent.
LSF, Control-M, cron, taakafhankelijkheden, conventies voor returncodes, logscrapers die naar specifieke NOTE/WARNING/ERROR-tekst zoeken, SYSERR- en SYSCC-logica, en FILENAME EMAIL-meldingen.
ODS-bestemmingen PDF, RTF, Excel en HTML, PROC TEMPLATE-stijlen, tagsets, lettertypen, grafische stuurprogramma's, en rapporten die afnemers verderop op positie uitlezen.
Afronding van drijvende komma op grenswaarden, sorteervolgorde en de volgorde bij gelijke waarden, stromen willekeurige getallen (RANUNI, RAND, STREAMINIT) die niet reproduceerbaar zijn tussen implementaties, en iteratieve procedures waarvan het convergentiepad binnen de tolerantie kan verschillen.
Niet-geïnitialiseerde variabelen, remerging in PROC SQL, impliciete RETAIN, afkapwaarschuwingen die als normaal worden beschouwd, en ongedocumenteerd gedrag dat vandaag toevallig het juiste antwoord oplevert.
Python via SASPy, R, Java- en .NET-clients over IOM, JDBC naar SAS/SHARE, Tableau en pandas die .sas7bdat-bestanden rechtstreeks lezen, en REST-aanroepen naar Viya.
Validatievereisten in gereguleerde sectoren (GxP, 21 CFR Part 11, modelrisicobeheer), beveiliging op rijniveau, omgang met persoonsgegevens, audit trails, en het ontbreken van versiebeheer in veel langlopende SAS-landschappen.
Niets hiervan is ongewoon. Het is allemaal vooraf te vinden en het is allemaal te testen. Daar gaat het proces hieronder precies over.
We inventariseren het landschap voordat we het werk schatten. Met geautomatiseerde analyse van uw broncodeboom, planningen en logbestanden maken we een afhankelijkheidsgraaf van programma's, macro's, formats, bibliotheken, externe bestanden en databaseverbindingen, en stellen we vast wat er werkelijk draait, wat dood is en van wie het is. Elke categorie hierboven wordt nagelopen en de bevindingen krijgen een score naar migratie-inspanning.
Een inventarisatie- en risicorapport met een voorstel tegen vaste prijs voor de resterende fasen. Besluit u niet door te gaan, dan houdt u het rapport.
Dit is de fase die de rest betrouwbaar maakt, en zij vindt volledig plaats op uw bestaande SAS-systeem, voordat er iets gemigreerd wordt.
Voor elk programma binnen scope bouwen we met AI-ondersteunde analyse karakteriseringstests: uitvoerbare specificaties van wat de code vandaag doet. Elke test legt vast welke invoer een programma verbruikt — datasets, macroparameters, externe bestanden, database-extracties, omgevingsinstellingen —, draait het op uw huidige SAS-installatie en registreert alles wat het voortbrengt: uitvoerdatasets, loginhoud, returncodes, ODS-uitvoer, de staat van macrovariabelen, en neveneffecten zoals weggeschreven bestanden of verzonden e-mails.
AI maakt dit pas haalbaar op ondernemingsschaal. Tienduizend programma's lezen en afleiden welke randgevallen elk daarvan afhandelt, is geen werk voor mensen met een deadline. Het genereren van de testgevallen, de fixtures en de vergelijkingslogica is precies het soort omvangrijke, patroonrijke werk waar hedendaagse modellen sterk in zijn, en elke gegenereerde test wordt gevalideerd door hem te draaien tegen het systeem dat hij beschrijft. Slaagt een test niet op uw huidige SAS, dan is het geen test van uw systeem en gaat hij eruit.
Vergelijkingsregels worden per uitvoer vastgelegd. Datasets worden standaard exact vergeleken; numerieke toleranties worden expliciet verklaard waar drijvende komma of iteratieve procedures bit-voor-bit-gelijkheid zinloos maken; logvergelijkingen zijn structureel in plaats van tekstueel, zodat een anders geformuleerde NOTE geen taak laat mislukken terwijl een gewijzigd rijaantal dat wel doet. Niet-deterministische invoer zoals de huidige datum en willekeurige seeds wordt beheerst, zodat dezelfde test op elke dag hetzelfde antwoord geeft. Waar productiedata niet gebruikt mag worden om te testen, bouwen we gemaskeerde of synthetische fixtures die dezelfde codepaden doorlopen.
Een testsuite onder versiebeheer met gemeten dekking over programma's, macro's en procedures, en een nulmeting van vastgelegde resultaten van uw huidige systeem. Deze suite is van u. Zij is geschreven om te draaien op Jenner, op SAS en op alles wat de taal verder spreekt, en zij heeft waarde los van de migratie: de meeste SAS-landschappen hebben er nooit een gehad.
Met de nulmeting op zak wordt migreren een technische oefening met een heldere definitie van klaar. We zetten Jenner op in uw omgeving, verhelpen de omgevingspunten uit Discovery (paden, bibliotheken, beheer van geheimen, databaseverbindingen, koppeling met de scheduler) en draaien de volledige suite.
Elke mislukking wordt in een van vier categorieën ingedeeld:
De code is correct en Jenner heeft het mis. Jenner levert wekelijks nieuwe builds uit; defecten die in klantmigraties worden gevonden krijgen voorrang, en de falende test wordt een blijvend onderdeel van Jenners eigen regressiesuite.
Een pad, een inloggegeven, een verbinding of een optie die ingesteld moet worden. Verholpen en opnieuw gedraaid.
De code leunt op ongedocumenteerd SAS-gedrag. We laten u de precieze regel en het precieze gedrag zien, en u kiest tussen de code aanpassen — waarbij de test aantoont dat de aanpassing veilig is — of Jenner de eigenaardigheid laten nabootsen.
Het resultaat wijkt af binnen een verklaarde tolerantie, of een logbericht is anders geformuleerd. Vastgelegd en afgetekend, nooit stilzwijgend aanvaard.
De suite draait doorlopend terwijl problemen worden opgelost, zodat voortgang een getal is en geen mening, en regressies worden opgemerkt op dezelfde dag dat ze ontstaan.
Een gemigreerde codebasis waarbij de volledige suite slaagt, of waarbij elk resterend verschil schriftelijk is afgehandeld.
Certificering is het bewijsdossier waarmee uw opdrachtgever, uw auditors en uw toezichthouders de migratie kunnen aanvaarden.
We draaien een parallelle periode waarin productietaken op beide systemen draaien en de uitvoer automatisch wordt vergeleken met dezelfde regels als de testsuite. Het certificeringsdossier bevat de inventarisatie, de testsuite en haar dekking, de nulmeting, de resultaten van de laatste run, de afhandeling van elk verschil, en de traceerbaarheid van elke eis of elk programma naar de tests die het afdekken. Voor gereguleerde klanten is het zo opgebouwd dat het IQ/OQ/PQ-validatie en audit ondersteunt.
Een ondertekend certificeringsdossier en een go/no-go-advies.
De overzetting wordt gepland rond uw batchvensters en de verlengingsdatum van uw SAS-licentie, met een beproefd terugvalpad. Schedulers worden omgezet, monitoring en alarmering worden bevestigd, en de SAS-omgeving wordt op uw tijdschema uitgefaseerd.
De testsuite blijft draaien na de overzetting. Omdat Jenner wekelijks uitlevert, krijgt u elke verbetering met hetzelfde bewijs dat er niets is veranderd aan datgene waarvan u afhankelijk bent. Uw team wordt opgeleid om de suite mee te laten groeien met de codebasis.
Productie op Jenner, een uitfaseringsplan voor SAS, en een regressiesuite die voor u blijft werken.
Vaste prijs en kort. Zij levert het voorstel voor de resterende fasen, geprijsd op de gemeten omvang en complexiteit van uw landschap in plaats van op een schatting daarvan.
Doorgaans geleverd als één opdracht met vaste scope, met acceptatie per mijlpaal gekoppeld aan de resultaten van de suite.
Beschikbaar als jaarlijkse dienst, nadat de testsuite is overgedragen en uw team is opgeleid om haar uit te breiden.
$1,000 – $21,000
Meestal op afstand uit te voeren, met een doorlooptijd van een week tot een maand.
$52,000 – $405,000
Vragen om werk op locatie en/of gevorderde domeinkennis en duren doorgaans twee tot zes maanden.
Alle bedragen zijn in Amerikaanse dollars (USD).
Hierin zitten geen softwarelicentiekosten; die zijn overigens heel overzichtelijk en scherp geprijsd. Bekijk de prijspagina.
Neem contact op met professionele dienstenStuur ons een beschrijving van uw SAS-omgeving — platform, globaal aantal programma's, gebruikte producten, databases en schedulers — en wij bakenen een Discovery af.