Testcertifierad migrering för SAS-kodbaser i företagsklass
Er SAS-miljö fungerar. Tusentals program, makron, format och schemalagda jobb har finslipats under åren, och mycket av det de gör finns inte dokumenterat någon annanstans än i koden själv. Att flytta det till en ny plattform, hur kompatibel den än är, bär på en verklig risk: något som förut var rätt blir subtilt fel, och ingen märker det förrän det spelar roll.
Jenner Professional Services tar bort den risken med en enkel disciplin. Innan vi ändrar något bygger vi en heltäckande, körbar dokumentation av vad ert nuvarande system gör. Sedan använder vi den för att bevisa, test för test, att det migrerade systemet gör detsamma.
Resultatet är en migrering ni kan godkänna på bevis i stället för tillförsikt, och en regressionssvit ni behåller för alltid.
Vi är SAS-experter, vilket visas av att vi har byggt en fullständig implementation av det språket och det systemet. Att migrera dit är dock bara en av de vägar ni kan gå med oss.
Vi kan använda vår implementation av SAS-kompatibel kod, och våra testdrivna arbetssätt, för att säkerställa en lyckad migrering till Python eller R, till Snowflake eller Databricks, eller till andra lösningar — även Siemens SLC.
Vi förordar migrering till Jenner eftersom den är både snabbare, mindre komplex och billigare för företag som redan har en SAS-infrastruktur.
Jenner kör SAS-språket, nästan varje procedur, makrofunktionen, grafiken och ett brett spann av datakopplingar. För det mesta av koden handlar migrering om att rikta Jenner mot samma program. Men en kodbas i företagsklass är aldrig bara språket. Den är också allt som språket rör vid:
autoexec.sas, konfigurationsfiler, systemoptioner (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), miljövariabler, SYSPARM, samt WORK-bibliotekets storlek och livslängd.
Lösenord inbäddade i LIBNAME-satser, {SAS002}-kodade strängar, uppgifter i filer som dras in med %include, Kerberos- eller SSO-biljetter, och frågan om var allt detta borde ligga i stället.
SAS/ACCESS-motorer för Oracle, DB2, Teradata, SQL Server, Snowflake, Hive och andra; explicit och implicit pass-through-SQL; motoroptioner som påverkar resultaten (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); typmappning för datum, decimaler och NULL; och beteenden som tyst ändrades när SQL sköts ned i databasen i stället för att köras lokalt.
Hårdkodade sökvägar, Windows enhetsbokstäver mot Linux-monteringar, skiftlägeskänsliga filnamn, NFS- och SMB-utdelningar, FILENAME PIPE- och X-kommandon, SYSGET samt filrättigheter.
Formatkataloger, kompilerade eller lagrade makron, index, granskningsspår, vyer, SPDE-bibliotek, transportfiler, krypterade eller komprimerade datamängder, och datamängder från V6/V8-eran som måste genereras om snarare än kopieras.
SAS/CONNECT-RSUBMIT-block, Grid, SAS/SHARE, Stored Processes, auktorisering via metadataservern, Enterprise Guide-projekt, jobb genererade av DI Studio och CAS-åtgärder i Viya. Var och en har en motsvarighet på den nya plattformen, men inte en identisk.
LSF, Control-M, cron, jobbberoenden, konventioner för returkoder, loggskrapare som letar efter specifik NOTE/WARNING/ERROR-text, logik med SYSERR och SYSCC, samt FILENAME EMAIL-varningar.
ODS-destinationerna PDF, RTF, Excel och HTML, PROC TEMPLATE-stilar, tagsets, typsnitt, grafikdrivrutiner, och rapporter som konsumenter längre fram tolkar utifrån position.
Flyttalsavrundning vid gränsvärden, sorteringskollation och ordning vid lika värden, strömmar av slumptal (RANUNI, RAND, STREAMINIT) som inte är reproducerbara mellan implementationer, och iterativa procedurer vars konvergensväg kan skilja sig inom toleransen.
Oinitierade variabler, remerging i PROC SQL, implicit RETAIN, trunkeringsvarningar som betraktas som normala, och odokumenterat beteende som råkar ge rätt svar i dag.
Python via SASPy, R, Java- och .NET-klienter över IOM, JDBC mot SAS/SHARE, Tableau och pandas som läser .sas7bdat-filer direkt, samt REST-anrop in i Viya.
Valideringskrav i reglerade branscher (GxP, 21 CFR Part 11, modellriskhantering), säkerhet på radnivå, hantering av personuppgifter, granskningsspår, och avsaknaden av versionshantering i många långlivade SAS-miljöer.
Inget av detta är ovanligt. Allt går att hitta i förväg, och allt går att testa. Det är just det processen nedan handlar om.
Vi inventerar miljön innan vi uppskattar arbetet. Med automatiserad analys av ert källträd, era scheman och era loggar tar vi fram en beroendegraf över program, makron, format, bibliotek, externa filer och databasanslutningar, och identifierar vad som faktiskt körs, vad som är dött och vem som äger vad. Varje kategori ovan gås igenom och fynden poängsätts efter migreringsinsats.
En inventerings- och riskrapport med ett fastprisförslag för de återstående faserna. Om ni väljer att inte gå vidare behåller ni rapporten.
Det här är fasen som gör resten pålitlig, och den görs helt och hållet på ert befintliga SAS-system, innan något migreras.
För varje program inom omfattningen bygger vi med AI-stödd analys karakteriseringstester: körbara specifikationer av vad koden gör i dag. Varje test fångar de indata ett program förbrukar — datamängder, makroparametrar, externa filer, databasuttag, miljöinställningar — kör det på er nuvarande SAS-installation och registrerar allt det producerar: utdatamängder, logginnehåll, returkoder, ODS-utdata, makrovariablernas tillstånd och sidoeffekter som skrivna filer eller skickade e-postmeddelanden.
Det är AI som gör detta praktiskt möjligt i företagsskala. Att läsa tiotusen program och härleda vilka gränsfall vart och ett hanterar är inget arbete för människor med en deadline. Att generera testfallen, testdatan och jämförelselogiken är precis den sortens omfångsrika, mönstertunga arbete som dagens modeller är starka på, och varje genererat test valideras genom att köras mot det system det beskriver. Om ett test inte går igenom på ert nuvarande SAS är det inte ett test av ert system, och det kastas.
Jämförelseregler sätts per utdata. Datamängder jämförs exakt som standard; numeriska toleranser deklareras uttryckligen där flyttal eller iterativa procedurer gör bitvis likhet meningslös; loggjämförelser är strukturella snarare än textuella, så en omformulerad NOTE fäller inte ett jobb medan ett ändrat radantal gör det. Icke-deterministiska indata som dagens datum och slumpfrön kontrolleras, så att samma test ger samma svar vilken dag som helst. Där produktionsdata inte får användas för test bygger vi maskerade eller syntetiska testdata som går genom samma kodvägar.
En versionshanterad testsvit med uppmätt täckning över program, makron och procedurer, samt en baslinje av registrerade resultat från ert nuvarande system. Sviten är er. Den är skriven för att köras på Jenner, på SAS och på allt annat som talar språket, och den har värde oberoende av migreringen: de flesta SAS-miljöer har aldrig haft en.
Med baslinjen på plats blir migreringen en teknisk uppgift med en tydlig definition av klart. Vi sätter upp Jenner i er miljö, åtgärdar miljöpunkterna från Discovery (sökvägar, bibliotek, hantering av hemligheter, databasanslutningar, integration mot schemaläggaren) och kör hela sviten.
Varje fel sorteras in i en av fyra kategorier:
Koden är rätt och Jenner har fel. Jenner släpper nya versioner varje vecka; fel som hittas i kundmigreringar prioriteras, och det test som fallerar blir en permanent del av Jenners egen regressionssvit.
En sökväg, en inloggningsuppgift, en anslutning eller en option som behöver sättas. Åtgärdas och körs om.
Koden lutar sig mot odokumenterat SAS-beteende. Vi visar er den exakta raden och det exakta beteendet, och ni väljer mellan att ändra koden — med testet som bevis för att ändringen är säker — eller att låta Jenner efterlikna egenheten.
Resultatet avviker inom en deklarerad tolerans, eller ett loggmeddelande är formulerat annorlunda. Dokumenteras och godkänns, aldrig accepterat i tysthet.
Sviten körs löpande medan problemen åtgärdas, så framsteg är en siffra och inte en åsikt, och regressioner fångas samma dag som de införs.
En migrerad kodbas där hela sviten går igenom, eller där varje kvarvarande skillnad är avgjord skriftligt.
Certifieringen är det bevispaket som låter er uppdragsgivare, era revisorer och era tillsynsmyndigheter godta migreringen.
Vi kör en parallellperiod där produktionsjobb körs på båda systemen och utdata jämförs automatiskt med samma regler som testsviten. Certifieringspaketet innehåller inventeringen, testsviten och dess täckning, baslinjen, resultaten från den sista körningen, hanteringen av varje skillnad, och spårbarheten från varje krav eller program till de tester som täcker det. För kunder under tillsyn struktureras det så att det bär IQ/OQ/PQ-validering och revision.
Ett undertecknat certifieringspaket och en rekommendation om att gå vidare eller inte.
Övergången planeras kring era batchfönster och förnyelsedatumet för er SAS-licens, med en beprövad väg tillbaka. Schemaläggare pekas om, övervakning och larm bekräftas, och SAS-miljön avvecklas enligt er tidplan.
Testsviten fortsätter att köras efter övergången. Eftersom Jenner släpper varje vecka får ni varje förbättring med samma bevis för att inget ni är beroende av har ändrats. Ert team utbildas i att bygga ut sviten allteftersom kodbasen växer.
Produktion på Jenner, en avvecklingsplan för SAS, och en regressionssvit som fortsätter att arbeta åt er.
Fast pris och kort. Den tar fram förslaget för de återstående faserna, prissatt utifrån den uppmätta storleken och komplexiteten i er miljö snarare än en uppskattning av dem.
Levereras vanligen som ett enda uppdrag med fast omfattning, med delleveransgodkännande knutet till svitens resultat.
Finns som årlig tjänst, efter att testsviten lämnats över och ert team utbildats i att bygga ut den.
$1,000 – $21,000
Går oftast att göra på distans, med en varaktighet från en vecka till en månad.
$52,000 – $405,000
Kräver visst arbete på plats och/eller fördjupad domänkunskap och tar vanligen två till sex månader.
Alla belopp anges i amerikanska dollar (USD).
Detta omfattar inte licensavgifter för programvaran; de är dock mycket lättöverskådliga och konkurrenskraftiga. Se prissidan.
Kontakta professionella tjänsterSkicka en beskrivning av er SAS-miljö — plattform, ungefärligt antal program, produkter i bruk, databaser och schemaläggare — så ramar vi in en Discovery.