Testeillä todennettu migraatio yritysten SAS-koodikannoille
SAS-ympäristönne toimii. Tuhansia ohjelmia, makroja, formaatteja ja ajastettuja töitä on hiottu vuosien ajan, eikä suurta osaa siitä, mitä ne tekevät, ole dokumentoitu muualla kuin koodissa itsessään. Sen siirtäminen mille tahansa uudelle alustalle, kuinka yhteensopivalle tahansa, sisältää yhden todellisen riskin: jokin aiemmin oikein ollut menee hienovaraisesti väärin, eikä kukaan huomaa sitä ennen kuin sillä on merkitystä.
Jenner Professional Services poistaa tuon riskin yhdellä yksinkertaisella periaatteella. Ennen kuin muutamme mitään, rakennamme kattavan, suoritettavan tallenteen siitä, mitä nykyinen järjestelmänne tekee. Sitten käytämme tuota tallennetta todistaaksemme testi testiltä, että siirretty järjestelmä tekee saman.
Lopputulos on migraatio, jonka voitte hyväksyä todisteiden eikä luottamuksen perusteella, ja regressiotestistö, joka jää teille pysyvästi.
Olemme SAS-asiantuntijoita, minkä osoittaa se, että olemme rakentaneet tuosta kielestä ja järjestelmästä täyden toteutuksen. Siirtyminen siihen on kuitenkin vain yksi niistä poluista, jotka voitte kanssamme valita.
Voimme käyttää SAS-yhteensopivan koodin toteutustamme ja testivetoisia käytäntöjämme varmistaaksemme onnistuneen siirtymän Pythoniin tai R:ään, Snowflakeen tai Databricksiin tai muihin ratkaisuihin — myös Siemens SLC:hen.
Suosittelemme siirtymää Jenneriin, koska se on yrityksille, joilla on jo SAS-infrastruktuuri, samalla nopeampi, vähemmän monimutkainen ja edullisempi.
Jenner suorittaa SAS-kieltä, lähes kaikkia proseduureja, makro-ominaisuuksia, grafiikkaa ja laajaa joukkoa tietoyhteyksiä. Suurimman osan koodista kohdalla migraatio on Jennerin osoittamista samoihin ohjelmiin. Yrityksen koodikanta ei kuitenkaan ole koskaan pelkkä kieli. Se on myös kaikki se, mihin kieli koskee:
autoexec.sas, konfiguraatiotiedostot, järjestelmäasetukset (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), ympäristömuuttujat, SYSPARM sekä WORK-kirjaston koko ja elinikä.
LIBNAME-lauseisiin upotetut salasanat, {SAS002}-koodatut merkkijonot, tunnukset %include-tiedostoissa, Kerberos- tai SSO-liput ja kysymys siitä, missä kaiken tämän pitäisi sen sijaan sijaita.
SAS/ACCESS-moottorit Oraclelle, DB2:lle, Teradatalle, SQL Serverille, Snowflakelle, Hivelle ja muille; eksplisiittinen ja implisiittinen läpivienti-SQL; tuloksiin vaikuttavat moottoriasetukset (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); tyyppien vastaavuudet päivämäärille, desimaaleille ja NULL-arvoille; sekä käyttäytyminen, joka muuttui huomaamatta, kun SQL siirrettiin tietokannan suoritettavaksi paikallisen suorituksen sijaan.
Koodiin kirjoitetut polut, Windowsin asemakirjaimet vastaan Linuxin liitospisteet, kirjainkoolle herkät tiedostonimet, NFS- ja SMB-jaot, FILENAME PIPE- ja X-komennot, SYSGET sekä tiedosto-oikeudet.
Formaattiluettelot, käännetyt tai tallennetut makrot, indeksit, kirjausketjut, näkymät, SPDE-kirjastot, siirtotiedostot, salatut tai pakatut datajoukot sekä V6/V8-aikakauden datajoukot, jotka on luotava uudelleen eikä kopioitava.
SAS/CONNECTin RSUBMIT-lohkot, Grid, SAS/SHARE, Stored Processes, metadatapalvelimen valtuutus, Enterprise Guide -projektit, DI Studion generoimat työt ja Viyan CAS-toiminnot. Jokaisella on uudella alustalla vastine, mutta ei identtistä.
LSF, Control-M, cron, töiden riippuvuudet, paluukoodikäytännöt, lokien lukijat jotka etsivät tiettyä NOTE/WARNING/ERROR-tekstiä, SYSERR- ja SYSCC-logiikka sekä FILENAME EMAIL-hälytykset.
ODS-kohteet PDF, RTF, Excel ja HTML, PROC TEMPLATE-tyylit, tagsetit, fontit, grafiikkalaiteajurit sekä raportit, joita jatkokäyttäjät jäsentävät sijainnin perusteella.
Liukulukupyöristys raja-arvoissa, lajittelun vertailujärjestys ja tasatilanteiden järjestys, satunnaislukuvirrat (RANUNI, RAND, STREAMINIT) jotka eivät toistu toteutuksesta toiseen, sekä iteratiiviset proseduurit joiden suppenemispolku voi vaihdella toleranssin sisällä.
Alustamattomat muuttujat, PROC SQL:n uudelleenyhdistäminen, implisiittinen RETAIN, normaaleina pidetyt katkaisuvaroitukset sekä dokumentoimaton käyttäytyminen, joka sattuu tuottamaan oikean vastauksen tänään.
Python SASPyn kautta, R, Java- ja .NET-asiakkaat IOM:n yli, JDBC SAS/SHAREen, .sas7bdat-tiedostoja suoraan lukevat Tableau ja pandas sekä REST-kutsut Viyaan.
Validointivaatimukset säännellyillä toimialoilla (GxP, 21 CFR Part 11, mallien riskienhallinta), rivitason tietoturva, henkilötietojen käsittely, kirjausketjut sekä versionhallinnan puuttuminen monista pitkään käytössä olleista SAS-ympäristöistä.
Mikään näistä ei ole epätavallista. Kaikki ne voidaan löytää etukäteen ja kaikki ne voidaan testata. Juuri siitä alla kuvatussa prosessissa on kyse.
Inventoimme ympäristön ennen työmäärän arviointia. Lähdepuun, ajastusten ja lokien automatisoidulla analyysillä tuotamme riippuvuusgraafin ohjelmista, makroista, formaateista, kirjastoista, ulkoisista tiedostoista ja tietokantayhteyksistä, ja tunnistamme mikä todella ajetaan, mikä on kuollutta ja kenen omistuksessa mikäkin on. Jokainen yllä mainittu kategoria käydään läpi ja havainnot pisteytetään migraatiotyömäärän mukaan.
Inventaario- ja riskiraportti sekä kiinteähintainen ehdotus jäljellä oleville vaiheille. Jos päätätte olla jatkamatta, raportti jää teille.
Tämä vaihe tekee kaikesta muusta luotettavaa, ja se tehdään kokonaan nykyisessä SAS-järjestelmässänne ennen kuin mitään siirretään.
Jokaiselle laajuuteen kuuluvalle ohjelmalle rakennamme tekoälyavusteisella analyysillä karakterisointitestejä: suoritettavia määrittelyjä siitä, mitä koodi tekee tänään. Kukin testi kaappaa ohjelman kuluttamat syötteet — datajoukot, makroparametrit, ulkoiset tiedostot, tietokantapoiminnat, ympäristöasetukset — ajaa sen nykyisessä SAS-asennuksessanne ja tallentaa kaiken, mitä se tuottaa: tulosdatajoukot, lokin sisällön, paluukoodit, ODS-tulosteet, makromuuttujien tilan sekä sivuvaikutukset kuten kirjoitetut tiedostot tai lähetetyt sähköpostit.
Juuri tekoäly tekee tästä käytännöllistä yritysmittakaavassa. Kymmenentuhannen ohjelman lukeminen ja niiden käsittelemien reunatapausten päätteleminen ei ole työtä ihmisille, joilla on takaraja. Testitapausten, testiaineistojen ja vertailulogiikan tuottaminen on täsmälleen sitä laajaa, kaavamaista työtä, jossa nykyiset mallit ovat vahvoja, ja jokainen tuotettu testi validoidaan ajamalla se kuvaamaansa järjestelmää vasten. Jos testi ei mene läpi nykyisessä SAS-ympäristössänne, se ei ole testi teidän järjestelmästänne ja se hylätään.
Vertailusäännöt asetetaan tuloste kerrallaan. Datajoukot vertaillaan oletuksena täsmällisesti; numeeriset toleranssit ilmoitetaan nimenomaisesti siellä, missä liukuluvut tai iteratiiviset proseduurit tekevät bitintarkasta yhtäläisyydestä merkityksettömän; lokivertailut ovat rakenteellisia eivätkä tekstuaalisia, joten uudelleen muotoiltu NOTE ei kaada työtä, kun taas muuttunut rivimäärä kaataa. Ei-deterministiset syötteet kuten nykyinen päivämäärä ja satunnaissiemenet hallitaan, jotta sama testi antaa saman vastauksen minä päivänä tahansa. Kun tuotantodataa ei voi käyttää testaamiseen, rakennamme peitettyjä tai synteettisiä testiaineistoja, jotka kulkevat samat koodipolut.
Versionhallinnassa oleva testistö, jonka kattavuus on mitattu ohjelmien, makrojen ja proseduurien yli, sekä lähtötasotallenne nykyisen järjestelmänne tuloksista. Tämä testistö on teidän. Se on kirjoitettu ajettavaksi Jennerillä, SAS:lla ja kaikella muulla, joka puhuu tätä kieltä, ja sillä on arvoa migraatiosta riippumatta: useimmilla SAS-ympäristöillä ei ole koskaan ollut sellaista.
Kun lähtötaso on olemassa, migraatiosta tulee insinöörityötä, jolla on selkeä valmiin määritelmä. Pystytämme Jennerin ympäristöönne, korjaamme Discoveryssä löytyneet ympäristöasiat (polut, kirjastot, salaisuuksien hallinta, tietokantayhteydet, integraatio ajastimeen) ja ajamme koko testistön.
Jokainen epäonnistuminen luokitellaan yhteen neljästä kategoriasta:
Koodi on oikein ja Jenner väärässä. Jenner julkaisee uusia koosteita viikoittain; asiakasmigraatioissa löytyneet viat priorisoidaan, ja epäonnistunut testi liitetään pysyvästi Jennerin omaan regressiotestistöön.
Polku, tunnus, yhteys tai asetus, joka on määritettävä. Korjataan ja ajetaan uudelleen.
Koodi nojaa dokumentoimattomaan SAS-käyttäytymiseen. Näytämme teille tarkan rivin ja tarkan käyttäytymisen, ja valitsette joko koodin muuttamisen — jolloin testi todistaa muutoksen turvalliseksi — tai sen, että Jenner mukautuu erikoisuuteen.
Tulos poikkeaa ilmoitetun toleranssin sisällä, tai lokiviesti on muotoiltu toisin. Dokumentoidaan ja hyväksytään, ei koskaan hiljaisesti.
Testistöä ajetaan jatkuvasti ongelmia korjattaessa, joten edistyminen on luku eikä mielipide, ja regressiot havaitaan samana päivänä kuin ne syntyvät.
Siirretty koodikanta, jossa koko testistö menee läpi, tai jossa jokainen jäljelle jäävä ero on kirjallisesti ratkaistu.
Sertifiointi on todistepaketti, jonka avulla toimeksiantajanne, tilintarkastajanne ja viranomaisenne voivat hyväksyä migraation.
Ajamme rinnakkaisjakson, jossa tuotantotyöt suoritetaan molemmissa järjestelmissä ja tulosteet vertaillaan automaattisesti samoilla säännöillä kuin testistössä. Sertifiointipaketti sisältää inventaarion, testistön ja sen kattavuuden, lähtötason, viimeisen ajon tulokset, jokaisen eron ratkaisun sekä jäljitettävyyden kustakin vaatimuksesta tai ohjelmasta niihin testeihin, jotka sen kattavat. Säännellyille asiakkaille se rakennetaan tukemaan IQ/OQ/PQ-validointia ja auditointia.
Allekirjoitettu sertifiointipaketti ja suositus siitä, edetäänkö vai ei.
Vaihto suunnitellaan eräajoikkunoidenne ja SAS-lisenssinne uusimispäivän ympärille, ja peruutuspolku on testattu. Ajastimet osoitetaan uudelleen, valvonta ja hälytykset varmistetaan, ja SAS-ympäristö poistetaan käytöstä teidän aikataulullanne.
Testistö jatkaa ajamista vaihdon jälkeenkin. Koska Jenner julkaisee viikoittain, saatte jokaisen parannuksen samalla todisteella siitä, ettei mikään, mistä olette riippuvaisia, ole muuttunut. Tiiminne koulutetaan laajentamaan testistöä koodikannan kasvaessa.
Tuotanto Jennerillä, SAS:n alasajosuunnitelma ja regressiotestistö, joka jatkaa työtään teidän hyväksenne.
Kiinteähintainen ja lyhyt. Se tuottaa ehdotuksen jäljellä oleville vaiheille, hinnoiteltuna ympäristönne mitatun koon ja monimutkaisuuden mukaan eikä niitä koskevan arvion mukaan.
Toimitetaan yleensä yhtenä kiinteälaajuisena toimeksiantona, jossa välitavoitteiden hyväksyntä on sidottu testistön tuloksiin.
Saatavana vuosipalveluna sen jälkeen, kun testistö on luovutettu ja tiiminne koulutettu laajentamaan sitä.
$1,000 – $21,000
Yleensä toteutettavissa etänä, kestoltaan viikosta kuukauteen.
$52,000 – $405,000
Vaativat jonkin verran työtä paikan päällä ja/tai syvällistä toimialaosaamista, ja kestävät tavallisesti kahdesta kuuteen kuukautta.
Kaikki summat ovat Yhdysvaltain dollareina (USD).
Tähän eivät sisälly ohjelmiston lisenssimaksut; ne ovat kuitenkin hyvin selkeät ja kilpailukykyiset. Katso hinnoittelusivu.
Ota yhteyttä ammattilaispalveluihinLähettäkää meille kuvaus SAS-ympäristöstänne — alusta, ohjelmien likimääräinen määrä, käytössä olevat tuotteet, tietokannat ja ajastimet — niin rajaamme Discovery-toimeksiannon.