Szoftverfejlesztési életciklusának adatsablonja
Szoftverfejlesztési életciklusának adatsablonja
- Javasolt attribútumok
- Követendő tevékenységek
- Adatok kinyerése a ServiceNow DevOps rendszerből
A szoftverfejlesztési életciklus attribútumai
| Név | Leírás | ||
|---|---|---|---|
| Fejlesztési elem DevelopmentItem | Egyetlen munkaegység egyedi azonosítója. Ilyen egység lehet például egy funkció, hiba vagy feladat, amely végighalad a fejlesztési életcikluson. | ||
| Leírás A Development Item az elsődleges esetazonosító, amely egy különálló, nyomon követett munkaegységet jelöl. Összekapcsolja az adott elemhez tartozó összes tevékenységet a kezdeti ötlettől és tervezéstől a fejlesztésen és tesztelésen át az éles bevezetésig. A process mining elemzésben ez az attribútum alapvető az egyes munkaelemek teljes útjának rekonstruálásához. Segítségével megjeleníthetők a folyamatok, kiszámítható a teljes ciklusidő, és azonosíthatók az egyes funkciók vagy hibajavítások folyamatváltozatai. Az összefüggő folyamattérkép elkészítéséhez a napló minden eseményét egy Development Item elemhez kell kapcsolni. Miért fontos? Ez az alapvető azonosító kapcsolja össze egyetlen folyamatpéldánnyá az összes kapcsolódó fejlesztési tevékenységet, így minden munkaelem teljes életciklusa elemezhető. Hol szerezhető be? Ez az azonosító általában a storykat, hibákat vagy feladatokat kezelő táblák elsődleges kulcsa, például a ServiceNow „rm_story”, „rm_bug” vagy „task” táblájából. Példák STRY0010015BUG0034092TASK0050118 | |||
| Kezdési idő EventTime | Az adott tevékenység vagy esemény bekövetkezésének pontos időbélyege. | ||
| Leírás Ez az attribútum adja meg a fejlesztési életciklus egyes tevékenységeinek rögzítési dátumát és időpontját. Nélkülözhetetlen az események időrendi sorrendbe állításához és minden időalapú elemzéshez. A process mining során a kezdési idő alapján számítható ki a tevékenységek közötti időtartam, azonosíthatók a várakozási idők, és mérhető a folyamat teljes ciklusideje. Teljesítményt elemző dashboardokhoz is szükséges, például az SDLC teljes ciklusidejét vizsgáló elemzéshez, valamint olyan KPI-k kiszámításához, mint a kódellenőrzés átfutási ideje. Miért fontos? Ez az időbélyeg szükséges az események helyes sorrendbe állításához és minden teljesítménymutató kiszámításához, beleértve a ciklusidőket, az időtartamokat és a várakozási időket. Hol szerezhető be? Általában a rendszer által létrehozott időbélyegmezőkben található, például az auditnapló vagy a feladattáblák „sys_updated_on” vagy „sys_created_on” mezőjében. Példák 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Tevékenység neve ActivityName | A bekövetkezett fejlesztési életciklus-esemény neve, például „Fejlesztés megkezdve” vagy „Kódellenőrzés elvégezve”. | ||
| Leírás Ez az attribútum rögzíti a szoftverfejlesztési életciklus során elvégzett mérföldkövek és feladatok nevét. Ezek a tevékenységek alkotják a folyamat egymást követő lépéseit a létrehozástól az éles bevezetésig. A process mining elsődleges feladata e tevékenységek sorrendjének és gyakoriságának elemzése. Ez teszi lehetővé a folyamattérkép elkészítését, a lépések közötti szűk keresztmetszetek feltárását, valamint a szabályoktól eltérő vagy nem hatékony folyamatváltozatok felismerését. A meghatározott tevékenységek közé tartoznak a fő szakaszok, például a tervezés, a fejlesztés, a tesztelés és az éles bevezetés. Miért fontos? Meghatározza a folyamattérkép lépéseit, így elemezhető a folyamat menete, feltárhatók a szűk keresztmetszetek, és felismerhetők a szabványos SDLC-től való eltérések. Hol szerezhető be? Általában az állapotváltozások, eseményrekordok vagy naplóbejegyzések egységes tevékenységnevekhez rendelésével állapítható meg. Például a „state” mező „In Progress” értékre váltása a „Fejlesztés megkezdve” tevékenységnek felelhet meg. Példák Fejlesztés megkezdveKód véglegesítveQA-tesztelés befejezveÉles környezetbe bevezetve | |||
| Forrásrendszer SourceSystem | Megadja, melyik rendszerből származnak a kinyert adatok. Ebben az esetben ez a ServiceNow DevOps. | ||
| Leírás Ez az attribútum az eseményadatok forrásrendszerét jelöli. Ennél a folyamatnál az értéke mindig „ServiceNow DevOps”. Bár az érték állandónak tűnhet, a forrásrendszer feltüntetése fontos az adatirányítás szempontjából, különösen akkor, ha több rendszerből, például a Jirából vagy az Azure DevOpsból származó adatokat egyesítenek. Egyértelművé teszi az adatok eredetét, és segít az adatminőségi vagy kinyerési problémák feltárásában. Miért fontos? Biztosítja az adatok nyomon követhetőségét és integritását, különösen akkor, ha több fejlesztőeszköz adatait kapcsolják össze. Hol szerezhető be? Állandó érték, amelyet az adatok kinyerése és átalakítása során kell hozzáadni. Példák ServiceNow DevOps | |||
| Utolsó adatfrissítés LastDataUpdate | Annak időbélyege, hogy mikor frissült utoljára az eseménynapló adata a forrásrendszerből. | ||
| Leírás Ez az attribútum rögzíti, mikor nyerték ki vagy frissítették utoljára az adatkészletet a ServiceNow DevOps rendszerből. A teljes adatkészletre vonatkozik, nem az egyes eseményekre. Ez az időbélyeg megmutatja, mennyire frissek az elemzés adatai. Tájékoztatja a felhasználókat arról, hogy mennyire aktuálisak a folyamatra vonatkozó megállapítások, és segít megtervezni az adatfrissítéseket. Ha ez az információ megjelenik a dashboardokon, kontextust ad a mutatókhoz és az ábrákhoz, így a döntések naprakész adatokon alapulhatnak. Miért fontos? Megmutatja, mennyire frissek az adatok, így a felhasználók tisztában vannak azzal, hogy milyen aktuális a folyamatelemzés. Hol szerezhető be? Az adatok kinyerésekor jön létre és kerül hozzáadásra, rögzítve a kinyerés időpontját. Példák 2023-11-15T08:00:00Z | |||
| Érintett modul/komponens ModuleComponentAffected | Az a konkrét szoftvermodul, alkalmazás vagy komponens, amelyhez a fejlesztési tétel kapcsolódik. | ||
| Leírás Ez az attribútum a fejlesztési munkát az érintett rendszerkomponens szerint kategorizálja. Ilyen lehet például egy mikroszolgáltatás, felhasználói felületi komponens vagy háttérrendszeri alkalmazás. A folyamat modul vagy komponens szerinti bontása segít az adott területre jellemző szűk keresztmetszetek azonosításában. A „Komponensenkénti szűk keresztmetszetek” dashboard és a „Szakasz átlagos időtartama komponensenként” KPI ezt az attribútumot használja annak feltárására, hogy a kódbázis egyes részeihez rendszeresen hosszabb fejlesztési ciklus, több utómunka vagy gyakoribb telepítési hiba társul-e. Így a fejlesztési erőfeszítések oda összpontosíthatók, ahol a legnagyobb szükség van rájuk. Miért fontos? Lehetővé teszi az alkalmazás vagy komponens szerinti elemzést, így elkülöníthetők a rendszer egyes részeihez kötődő szűk keresztmetszetek és minőségi problémák. Hol szerezhető be? Ez gyakran egy egyéni mező vagy a Configuration Management Database (CMDB) rekordjára mutató hivatkozás, amely a munkaelemet egy „cmdb_ci” rekordhoz kapcsolja. További információért tekintse meg a ServiceNow DevOps dokumentációját. Példák Számlázási szolgáltatásFelhasználói hitelesítési felületJelentéskészítési adatbázisAPI-átjáró | |||
| Fejlesztési tétel állapota DevelopmentItemState | A fejlesztési tétel eseménykori állapota, például „Nyitott”, „Folyamatban” vagy „Lezárt”. | ||
| Leírás Ez az attribútum a fejlesztési tétel hivatalos állapotát mutatja a ServiceNow rendszerben. A tevékenységek a folyamat lépéseit jelölik, az állapot pedig a rendszerben rögzített formális szakaszt. Az állapotból gyakran levezethetők a tevékenységek. Adatellenőrzésre és a folyamat egyszerűbb, magas szintű áttekintésére is használható. Az egyes állapotokban eltöltött idő elemzése például más képet adhat a szűk keresztmetszetekről, mint a tevékenységek közötti idő vizsgálata. Az attribútum arra is alkalmas, hogy azonosítsa az elakadt vagy már lezárt tételeket. Miért fontos? Megadja a munkaelem hivatalos rendszerbeli állapotát. Ez gyakran a tevékenységek levezetésének alapja, és adatellenőrzésre, valamint az állapotok magas szintű elemzésére is használható. Hol szerezhető be? A ServiceNow feladatokhoz kapcsolódó tábláiban ez általában egy szabványos mező, amelynek neve „state” vagy „stage”. Példák FüggőbenFolyamatbanTesztelésre készSikeresen lezárva | |||
| Fejlesztési tétel ciklusideje DevelopmentItemCycleTime | A fejlesztési tétel létrehozásától a végleges lezárásáig vagy telepítéséig eltelt teljes idő. | ||
| Leírás Ez a számított mutató egyetlen fejlesztési tétel teljes, elejétől a végéig tartó időtartamát adja meg. Esetenként az első és az utolsó tevékenység időbélyege közötti különbségként számítjuk ki. Ez az SDLC-folyamat egyik fő teljesítménymutatója, és közvetlenül támogatja az „SDLC átlagos ciklusideje” KPI-t. Magas szinten mutatja a folyamat sebességét és hatékonyságát. Ha ezt az értéket időben, illetve különböző szempontok, például prioritás vagy csapat szerint elemzi, nyomon követheti a folyamatfejlesztési kezdeményezések hatását. Miért fontos? A munkaelem teljes, elejétől a végéig tartó időtartamát mutatja. Ez a folyamat általános hatékonyságának és sebességének fontos mérőszáma. Hol szerezhető be? Ez nem szerepel a forrásrendszer mezői között. A process mining eszköz számítja ki úgy, hogy esetenként kivonja a legkisebb StartTime értéket a legnagyobb StartTime értékből. Példák 15 nap 4 óra3 nap 12 óra32 nap 8 óra | |||
| Fejlesztési tétel típusa DevelopmentItemType | A munkaelem besorolása, például „Funkció”, „Hiba”, „Technikai adósság” vagy „Feladat”. | ||
| Leírás Ez az attribútum megkülönbözteti az SDLC-folyamaton áthaladó munka különböző típusait. Egy kritikus hiba javítása például eltérő, gyorsabb folyamatot követhet, mint egy új funkció fejlesztése. A munkaelem típusa szerinti elemzés árnyaltabb képet ad a teljesítményről. Segít megválaszolni például az ilyen kérdéseket: „A hibák esetében magasabb az utómunka aránya, mint az új funkcióknál?” vagy „Elfogadható a technikai adósság csökkentésének átfutási ideje?” Ez a bontás többet mutat, mint ha minden munkát egyetlen folyamatként vizsgálnánk. Miért fontos? Megkülönbözteti a különböző munkatípusokat, például a funkciókat és a hibákat, amelyek eltérő folyamatútvonalat, prioritást és várható időtartamot követhetnek. Hol szerezhető be? A rekord forrástáblája alapján is meghatározható, például „rm_story” vagy „rm_bug”, illetve egy általános feladattáblán található „type” mezőből. Példák FunkcióHibaFeladatFeltáró feladat | |||
| Felelős csoport AssignmentGroup | Az a csapat vagy csoport, amely az adott tevékenység idején a fejlesztési tételért felel. | ||
| Leírás Ez az attribútum azonosítja a munkaelemhez rendelt csapatot, például a „Frontend fejlesztők”, a „Backend szolgáltatások” vagy a „Minőségbiztosítási csapat” csoportot. A munkaelem a folyamat során gyakran több felelős csoport között kerül átadásra. A felelős csoport nyomon követése elengedhetetlen a csapatok közötti együttműködés és átadások megértéséhez. Segít feltárni azokat a rendszeres késéseket, amelyek akkor jelentkeznek, amikor a munka egyik csapattól a másikhoz kerül. Az attribútum támogatja a csapatszintű teljesítmény és terhelés elemzését, valamint annak azonosítását, hogy mely csapatok jelentenek szűk keresztmetszetet a teljes folyamatban. Miért fontos? Nyomon követi, melyik csapat felel a munkáért. Segítségével elemezhető a csapatok teljesítménye és terhelése, valamint a csapatok közötti átadások hatékonysága. Hol szerezhető be? Ezt az információt az „assignment_group” mező tárolja, amely a ServiceNow feladatokhoz kapcsolódó tábláinak szabványos mezője. Példák PlatformmérnökségMobilalkalmazás-fejlesztő csapatMinőségbiztosításDevOps | |||
| Hozzárendelt fejlesztő AssignedDeveloper | A fejlesztési elemhez a tevékenység időpontjában hozzárendelt fejlesztő vagy felhasználó neve, illetve azonosítója. | ||
| Leírás Ez az attribútum azonosítja az adott feladat vagy tevékenység végrehajtásáért felelős személyt. Értéke változhat, ahogy a fejlesztési elem különböző szakaszok és csapatok között halad. Ez az attribútum fontos az erőforrások elosztásának, a munkaterhelésnek és az átadásoknak az elemzéséhez. Közvetlenül támogatja a „Fejlesztői munkaterhelés és átadások” dashboardot és a „Tevékenységek száma fejlesztőnként” KPI-t. A mező változásainak követésével mérhető az átadások ideje, és feltárhatók a fejlesztők, illetve a fejlesztési és QA-csapatok közötti együttműködés szűk keresztmetszetei. Miért fontos? Nélkülözhetetlen az erőforrások szerinti elemzéshez, például a munkaterhelés eloszlásának és az átadások hatékonyságának vizsgálatához, valamint a csapatokra jellemző teljesítményminták feltárásához. Hol szerezhető be? Ez az információ általában a ServiceNow feladatokhoz kapcsolódó tábláinak „assigned_to” mezőjében található. Példák David MillerAnna WilliamsJames Brown | |||
| Prioritás DevelopmentItemPriority | A fejlesztési elemhez rendelt prioritási szint, például „Magas”, „Közepes” vagy „Alacsony”. | ||
| Leírás Ez az attribútum az üzleti sürgősségük alapján sorolja kategóriákba a fejlesztési elemeket. A prioritási szintek segítenek a csapatoknak a legsürgősebb feladatokra összpontosítani, és gyakran az SLA-k, valamint az érintettek elvárásainak kezelésére is használják őket. A process miningben a prioritás fontos összehasonlítási szempont. Segítségével a folyamattérkép a kiemelt prioritású elemekre szűrhető, így látható, hogy ezek gyorsabb vagy eltérő útvonalon haladnak-e. A „Kiemelt prioritású funkciók szállítási ideje” dashboard és KPI kiszámításához is szükséges, mert megmutatja, hogy a kritikus elemek valóban gyorsabban készülnek-e el. Miért fontos? Lehetővé teszi a különböző prioritású folyamatok szűrését és összehasonlítását, így ellenőrizhető, hogy a kiemelt prioritású elemek gyorsabban és hatékonyabban haladnak-e. Hol szerezhető be? Ez egy szabványos mező, amelynek neve a ServiceNow feladatokhoz kapcsolódó tábláiban gyakran „priority”. Példák 1 - Kritikus2 - Magas3 - Közepes4 - Alacsony | |||
| Utómunka-e IsRework | Logikai jelző, amely akkor igaz, ha a tevékenység egy utómunka-ciklus része, például tesztelés után visszakerül a fejlesztéshez. | ||
| Leírás Ez a származtatott attribútum azonosítja azokat a tevékenységeket, amelyek akkor történnek, amikor a folyamat visszalép egy korábbi szakaszba. Ha például ugyanannál a tételnél a „Fejlesztés megkezdése” tevékenység a „QA-tesztelés befejezése” után következik, a rendszer utómunkaként jelöli meg. Ez a jelző szükséges az utómunka méréséhez és megjelenítéséhez. Közvetlenül támogatja az „Utómunka és elutasítás folyamatának elemzése” dashboardot, és az „Utómunka aránya tesztelés után” KPI kiszámítására is használható. A jelölt események alapján az elemzők könnyen szűrhetnek, és megvizsgálhatják az utómunka gyakoriságát, okait, valamint a teljes ciklusidőre gyakorolt hatását. Miért fontos? A jelzővel egyszerűen mérhető és elemezhető az utómunka. Segít felmérni a folyamat minőségét és feltárni az ismétlődő munka okait. Hol szerezhető be? Ezt az attribútumot a process mining eszköz számítja ki az egyes esetek tevékenységsorrendjének elemzésével, hogy felismerje a folyamatban történő visszalépéseket. Példák truefalse | |||
| Befejezési idő EventEndTime | A tevékenység befejezésének pontos időbélyege. Az azonnali eseményeknél megegyezik a kezdési idővel. | ||
| Leírás Ez az attribútum adja meg, mikor fejeződött be a fejlesztési életciklus egyes tevékenysége. Különösen hasznos a mérhető időtartamú tevékenységeknél, például a „Kódellenőrzés elvégezve” vagy a „QA-tesztelés” esetében. A process mining során a kezdési és befejezési idő együttesen lehetővé teszi a tevékenységek feldolgozási idejének pontos kiszámítását, elkülönítve azt a tevékenységek közötti várakozási időtől. Így megállapítható, hogy a késést a hosszú feladatok vagy az erőforrásokra való várakozás okozza-e. Az azonnalinak tekintett eseményeknél, például a „Build elindítva” eseménynél, a befejezési idő megegyezhet a kezdési idővel. Miért fontos? Lehetővé teszi a tevékenység feldolgozási idejének pontos kiszámítását, így elkülöníthető a tényleges munkával és a várakozással töltött idő. Hol szerezhető be? Előfordulhat, hogy ezt az értéket ki kell számítani. Lehet a következő tevékenység kezdési időbélyege, vagy származhat a forrásrendszer külön „end date” mezőjéből, ha ilyen rendelkezésre áll. Példák 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| Commitazonosító CommitId | A fejlesztési munkához kapcsolódó forráskód-commit egyedi azonosítója. | ||
| Leírás Ez az attribútum közvetlen kapcsolatot teremt a fejlesztési tétel és a forráskód-tárolóban, például a Gitben végrehajtott konkrét kódmódosítás között. A rendszer a „Code Committed” tevékenység rögzítésekor menti el. A process mining során a Commit ID a folyamatadatokat mérnöki adatokkal egészíti ki. Az elemzők visszakereshetik, hogy egy problémás telepítés pontosan melyik kódmódosításhoz kapcsolódik, vagy összevethetik a kód összetettségi mutatóit a fejlesztési ciklusidőkkel. Ez részletesebb, műszaki szintű gyökérok-elemzést tesz lehetővé. Miért fontos? A folyamat eseményét egy konkrét kódmódosításhoz kapcsolja, így a folyamatmutatók és a kódszintű részletek összevetésével mélyebb gyökérok-elemzés végezhető. Hol szerezhető be? Ezt a ServiceNow DevOps Githez vagy SVN-hez hasonló forráskód-kezelő rendszerekkel való integrációi rögzítik. Az adatok a fejlesztési tételhez kapcsolódó táblákban találhatók. Példák a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Telepítés állapota DeploymentStatus | A telepítési tevékenység eredményét jelzi, jellemzően „Sikeres” vagy „Sikertelen” értékkel. | ||
| Leírás Ez az attribútum rögzíti az adott környezetbe történő telepítés eredményét. Fontos információ a kiadási folyamat megbízhatóságának és stabilitásának megértéséhez. Ez az attribútum szükséges a „Sikeres és sikertelen telepítések alakulása” dashboardhoz és a „Sikertelen telepítések aránya” KPI-hoz. A telepítési hibák gyakoriságának és alakulásának elemzésével a szervezetek feltárhatják a tesztelés, az infrastruktúra vagy a kiadások összehangolása mögött meghúzódó problémákat. Az eredmények segítenek a szoftverkiadás minőségének és megbízhatóságának javítására összpontosítani. Miért fontos? Közvetlenül méri a telepítési tevékenységek sikerességét. Ez szükséges a sikertelen telepítések arányának kiszámításához és a kiadási folyamat stabilitásának elemzéséhez. Hol szerezhető be? Ezt az állapotot általában a telepítéseket nyomon követő feladatok vagy a ServiceNow DevOps rendszerbe integrált CI/CD-folyamatok végrehajtási rekordjai rögzítik. Példák SikeresSikertelenFigyelmeztetésekkel befejezve | |||
| Tervezett kiadási verzió PlannedReleaseVersion | Az a célként megadott szoftverkiadás vagy verzió, amelyben a fejlesztési tétel átadását tervezik. | ||
| Leírás Ez az attribútum egy konkrét, tervezett kiadáshoz kapcsolja a fejlesztési tételt, például a „2.3-as verzióhoz” vagy a „2023. negyedik negyedévi kiadáshoz”. A projektmenedzsment és a kiadástervezés fontos eleme. A process mining szempontjából ez az attribútum szükséges a „Kiadási terv teljesülésének nyomon követése” dashboardhoz. A tényleges befejezési dátumok és a tervezett kiadási dátumok összevetésével a csapatok mérhetik az ütemterv betartását, azonosíthatják a kiadásból várhatóan kimaradó tételeket, és elemezhetik a késések okait. Közvetlen kapcsolatot teremt a fejlesztési folyamat részletei és a magas szintű üzleti célok között. Miért fontos? A fejlesztési munkát konkrét kiadásokhoz kapcsolja, így elemezhető az ütemterv betartása és a folyamat késéseinek hatása a kiadási határidőkre. Hol szerezhető be? Ezt az információt általában a „release” vagy „planned_release” mező tárolja, amely gyakran a ServiceNow kiadáskezelési táblájára hivatkozik. További információért tekintse meg a ServiceNow DevOps dokumentációját. Példák v3.4.12024. első negyedévi kiadásA Phoenix projekt éles indulása | |||
| Utómunka oka ReworkReason | Annak besorolása vagy leírása, hogy tesztelés után miért kellett újra dolgozni a fejlesztési tételen. | ||
| Leírás Ha egy tétel nem felel meg a QA- vagy UAT-tesztelésen, ez az attribútum rögzíti a hiba okát. Ilyen lehet egy konkrét hibakategória, a követelmények félreértése vagy egy környezeti probléma. Ez az információ fontos hátteret ad az „Utómunka és elutasítás folyamatának elemzése” dashboardhoz. Az elemzők nemcsak azt látják, hogy történt-e utómunka, hanem annak okát is megérthetik. Így célzott fejlesztések végezhetők, például pontosabban meghatározhatók a követelmények, bővíthető az egységtesztelés, vagy stabilabbá tehetők a tesztkörnyezetek, csökkentve az utómunka teljes arányát. Miért fontos? Segít megérteni, miért van szükség utómunkára. Ez lehetővé teszi a célzott folyamatfejlesztést, a minőség javítását és az ismétlődő munkafázisok csökkentését. Hol szerezhető be? A teszt sikertelensége esetén ez a „close_notes” mezőben vagy egy erre szolgáló egyéni „rework_reason” mezőben szerepelhet. További információért tekintse meg a ServiceNow DevOps dokumentációját. Példák A követelmény félreértelmezéseRegressziós hibaSikertelen teljesítménytesztFelhasználói felületi vagy felhasználói élményt érintő probléma | |||
A szoftverfejlesztési életciklus tevékenységei
| Tevékenység | Leírás | ||
|---|---|---|---|
| Éles környezetbe bevezetve | Ez az esemény az éles környezetbe történő bevezetés sikeres befejezését jelöli. A ServiceNow DevOps kifejezetten rögzíti, amikor a CI/CD-eszköz sikeres pipeline-végrehajtást jelez. | ||
| Miért fontos? Ez az SDLC-folyamat elsődleges sikeres végpontja. Lezárja az értékteremtési folyamatot, és szükséges a teljes ciklusidő kiszámításához. Hol szerezhető be? A Pipeline Execution [sn_devops_pipeline_execution] rekord „completion_status” mezőjéből vagy a hozzá kapcsolódó Stage Execution Run rekordból nyerhető ki. Az eseményt a befejezési időpontban szereplő „Success” állapot jelöli. Rögzítés Akkor kerül naplózásra, amikor az éles bevezetési pipeline sikeresen befejeződik. Eseménytípus explicit | |||
| Fejlesztés megkezdve | Ez a tevékenység azt jelöli, amikor a fejlesztő ténylegesen elkezdi a kódolást vagy a fejlesztési elem megvalósítását. Általában abból következtethető ki, hogy az elem állapota „In Progress”, „Development” vagy „Coding” értékre vált. | ||
| Miért fontos? Ez fontos mérföldkő, amely a tényleges értékteremtő fejlesztési szakasz kezdetét jelzi. A fejlesztői átfutási idő és a kódellenőrzési ciklusidő méréséhez is szükséges. Hol szerezhető be? A fejlesztési elem rekordjában, például a Story [rm_story] rekordban található „State” mező „In Progress” vagy ennek megfelelő értékre frissítésének időbélyegéből következtethető ki. Rögzítés Az „In Progress” vagy hasonló állapotra váltás időbélyege alapján. Eseménytípus inferred | |||
| Fejlesztési elem létrehozva | Ez a tevékenység egy új fejlesztési elem, például story, hiba vagy epic létrehozását jelöli a ServiceNow rendszerben. Az esemény rendszerint akkor rögzül, amikor új rekord kerül az érintett táblába, például a Story [rm_story] táblába. | ||
| Miért fontos? Ez az SDLC-folyamat elsődleges kezdőeseménye. Segítségével mérhető a teljes, elejétől a végéig tartó ciklusidő, és nyomon követhető a kezdeti igény beérkezése. Hol szerezhető be? A sys_audit vagy sys_history_line táblában rögzül, amikor rekord jön létre egy fejlesztéshez kapcsolódó táblában, például a Story [rm_story], Epic [rm_epic] vagy Defect [rm_defect] táblában. A létrehozás időbélyege általában magán a rekordon található. Rögzítés A fejlesztési elem rekordjának létrehozási időbélyegéből nyerhető ki. Eseménytípus explicit | |||
| Kódellenőrzés elvégezve | Ez a tevékenység a kód szakmai ellenőrzésének befejezését jelzi, amely általában egy pull vagy merge requesthez kapcsolódik. Az esemény közvetlenül rögzíthető a DevOps-integrációkon keresztül, vagy kikövetkeztethető a kapcsolódó rekordok állapotváltozásaiból. | ||
| Miért fontos? Ez fontos minőségellenőrzési pont. Az időtartam elemzésével feltárhatók a felülvizsgálati folyamat szűk keresztmetszetei, amelyek gyakran késleltetik az SDLC-t. Hol szerezhető be? A ServiceNow Git-integrációjában szereplő Pull Request rekord „Merged” vagy „Completed” eseményéből rögzíthető, illetve a fejlesztési elem „Code Review Complete” állapotba váltásából következtethető ki. Rögzítés Akkor kerül naplózásra, amikor a munkaelemhez kapcsolódó Pull Request összeolvad. Eseménytípus explicit | |||
| QA-tesztelés befejezve | Azt jelzi, hogy a minőségbiztosítási csapat sikeresen befejezte a fejlesztési elem tesztelését. Általában abból következtethető ki, hogy az elem tesztelési állapotból például „Ready for UAT” vagy „Done” állapotba lép. | ||
| Miért fontos? Ez a mérföldkő egy fontos minőségellenőrzési szakasz végét jelzi. Előfeltétele a következő lépéseknek, például a felhasználói átvételi tesztelésnek vagy a kiadás előkészítésének. Hol szerezhető be? A tesztelési állapotból, például „In QA”, egy tesztelés utáni állapotba, például „Ready for UAT” vagy „Resolved” történő váltás időbélyegéből következtethető ki. Rögzítés A „Testing” állapotból a következő állapotba történő váltás időbélyege alapján. Eseménytípus inferred | |||
| Sikertelen éles bevezetés | Azt jelzi, hogy a fejlesztési elem éles környezetbe történő bevezetése sikertelen volt. A ServiceNow DevOps kifejezetten rögzíti, amikor a CI/CD pipeline hibát jelez. | ||
| Miért fontos? Ez egy kritikus hibavégpont. Gyakoriságának és okainak elemzése segít stabilabbá tenni a kiadásokat és csökkenteni a sikertelen bevezetések arányát. Hol szerezhető be? A Pipeline Execution [sn_devops_pipeline_execution] rekord „completion_status” mezőjéből nyerhető ki. Az eseményt a befejezési időpontban szereplő „Failed” állapot jelöli. Rögzítés Akkor kerül naplózásra, amikor az éles bevezetési pipeline hibát jelez. Eseménytípus explicit | |||
| UAT jóváhagyva | Azt jelzi, hogy az üzleti érintettek a felhasználói átvételi tesztelés után hivatalosan jóváhagyták a fejlesztési elemet. Ez fontos mérföldkő, amely például az „In UAT” állapotból „Ready for Release” vagy „Approved” állapotba váltásból következtethető ki. | ||
| Miért fontos? Ez az utolsó üzleti jóváhagyás, mielőtt az elem éles bevezetésre kerülhet. Fontos minőségellenőrzési és irányítási pont. Hol szerezhető be? A fejlesztési elem rekordjának olyan állapotváltásából következtethető ki, amely az UAT sikeres befejezését jelzi. Az esemény az elem tevékenységelőzményeiben szerepel. Rögzítés Az „UAT” állapotból jóváhagyott vagy kiadásra kész állapotba történő váltásból következtethető ki. Eseménytípus inferred | |||
| Build elindítva | Ez az esemény a CI/CD pipeline buildjének kezdetét jelzi, amelyet gyakran egy kódvéglegesítés indít el. A ServiceNow DevOps pipeline-végrehajtásként naplózza, és összekapcsolja az eredeti fejlesztési elemekkel. | ||
| Miért fontos? Ez a tevékenység köti össze a fejlesztést az automatizált teszteléssel vagy éles bevezetéssel. A véglegesítés és a build kezdete közötti idő elemzésével feltárhatók a CI/CD-folyamat késései. Hol szerezhető be? Kifejezetten a Pipeline Execution [sn_devops_pipeline_execution] táblában rögzül, amikor az integrált CI/CD-eszközben, például a Jenkinsben vagy az Azure DevOpsban elindul egy build. Rögzítés A Pipeline Execution tábla rekordjának kezdési időpontjából nyerhető ki. Eseménytípus explicit | |||
| Éles bevezetés megkezdve | Ez a tevékenység az éles környezetbe történő bevezetési pipeline elindítását jelöli. A ServiceNow DevOps kifejezett eseményként rögzíti, amikor megkezdődik a CI/CD pipeline éles környezethez tartozó szakaszának végrehajtása. | ||
| Miért fontos? Ez jelzi az életciklus utolsó, gyakran legkritikusabb szakaszának kezdetét. Követésével elemezhető a bevezetés időtartama, és feltárhatók az automatizálási lehetőségek. Hol szerezhető be? Kifejezetten a Stage Execution Run [sn_devops_stage_execution] táblában naplózódik, az éles környezethez tartozó szakaszokra szűrve. Rögzítés A Pipeline Execution éles bevezetési szakaszának kezdési időpontjából nyerhető ki. Eseménytípus explicit | |||
| Fejlesztési elem megszakítva | A fejlesztési elem befejezés előtti lezárását jelöli. Ez egy alternatív végállapot, amely általában abból következtethető ki, hogy az elem állapota „Cancelled” vagy „Closed Incomplete” értékre vált. | ||
| Miért fontos? A megszakítások követése segít feltárni a felesleges munkát, és megérteni a terjedelem módosításának vagy az újrapriorizálásnak az okait. Így a folyamat lehetséges kimeneteiről is teljesebb kép kapható. Hol szerezhető be? A fejlesztési elem rekordjában található „State” mező nem befejezett, végállapotra, például „Cancelled” értékre frissítésének időbélyegéből következtethető ki. Rögzítés A „Cancelled” vagy ennek megfelelő végállapotra váltásból következtethető ki. Eseménytípus inferred | |||
| Kiadásra előkészítve | Ez a tevékenység azt jelzi, hogy a fejlesztési elem megfelelt minden minőségellenőrzési ponton, és bekerült egy adott kiadásba. Abból következtethető ki, hogy az elemhez Release rekord kapcsolódik, vagy az állapota „Ready for Deployment” értékre vált. | ||
| Miért fontos? Ez a lépés azt jelzi, hogy az elem műszakilag és funkcionálisan elkészült. Az ebben az állapotban töltött idő a tervezett éles bevezetési időpontra való várakozást mutathatja. Hol szerezhető be? A „State” mező „Ready for Release” értékre váltásából, illetve abból következtethető ki, hogy a fejlesztési elem rekordjának „Release” mezője kitöltődik vagy frissül. Rögzítés Állapotváltásból vagy egy Release rekordhoz való kapcsolásból következtethető ki. Eseménytípus inferred | |||
| Kód véglegesítve | Azt jelöli, amikor a fejlesztő a fejlesztési elemhez kapcsolódó verziókezelő rendszer adattárába véglegesíti a kódot. A ServiceNow DevOps az integrált SCM-eszközökből, például a Gitből vagy a GitHubból, kifejezetten rögzíti ezeket az eseményeket. | ||
| Miért fontos? A véglegesítések követése részletes képet ad a fejlesztés előrehaladásáról és a tevékenységek gyakoriságáról. Segít az egyes kódmódosításokat a hozzájuk tartozó fejlesztési elemhez kapcsolni. Hol szerezhető be? Kifejezett eseményként rögzül a ServiceNow DevOps Commits [sn_devops_commit] táblában, amelyet az integrált forráskód-kezelő rendszer webhookjai töltenek fel. Rögzítés Akkor kerül naplózásra, amikor az SCM-eszköz webhookja beérkezik a véglegesítésről. Eseménytípus explicit | |||
| QA-tesztelés megkezdve | A hivatalos minőségbiztosítási tesztelési szakasz kezdetét jelöli. Szinte mindig abból következtethető ki, hogy a fejlesztési elem állapota például „In QA”, „Testing” vagy „Ready for Test” értékre vált. | ||
| Miért fontos? Ez a tevékenység a fejlesztés és a QA-csapat közötti átadást jelzi. Segítségével mérhető a tesztelési szakasz időtartama, és feltárhatók a tesztelési kapacitás szűk keresztmetszetei. Hol szerezhető be? A fejlesztési elem rekordjában, például a Story vagy Defect rekordban található „State” mező QA-specifikus állapotra frissítésének időbélyegéből következtethető ki. Rögzítés A „Testing” vagy ennek megfelelő állapotra váltás időbélyege alapján. Eseménytípus inferred | |||
| Tervezés megkezdve | Azt a szakaszt jelöli, amelyben elkészül a fejlesztési elem műszaki terve vagy megoldásarchitektúrája. Ez rendszerint a fejlesztési elem rekordjának állapotmezőjéből következtethető ki, amikor az érték például „Design” vagy „Solutioning” lesz. | ||
| Miért fontos? A tervezési szakasz időtartamának elemzésével feltárhatók a követelmények pontosításában és a megoldás megtervezésében jelentkező szűk keresztmetszetek, még a fejlesztési munka megkezdése előtt. Hol szerezhető be? A fejlesztési elem rekordjának állapotváltásaiból következtethető ki, például a Story [rm_story] rekordból. Keresse a „State” vagy egy egyéni „Stage” mező tervezéshez kapcsolódó értékre váltását. Rögzítés A „Design” vagy egy hasonló állapotra történő váltásból következtethető ki. Eseménytípus inferred | |||
| UAT megkezdve | A felhasználói átvételi tesztelés kezdetét jelöli, amely során az üzleti érintettek ellenőrzik a funkcionalitást. Az esemény az „UAT”, „In UAT” vagy „User Acceptance Testing” állapotba váltásból következtethető ki. | ||
| Miért fontos? Ez a szakasz fontos annak ellenőrzéséhez, hogy a fejlesztett funkció megfelel-e az üzleti követelményeknek. Az időtartam elemzése feltárhatja a felhasználói részvétellel vagy a követelményekkel kapcsolatos eltéréseket. Hol szerezhető be? A fejlesztési elem rekordjának állapotváltásából következtethető ki. Ehhez az szükséges, hogy az ügyfél állapotmodelljében külön UAT-állapot szerepeljen. Rögzítés Az „UAT” állapotba váltásból következtethető ki. Eseménytípus inferred | |||
| Utómunka szükséges | Azt jelzi, hogy a tesztelés során hibát találtak, ezért az elemet vissza kell küldeni fejlesztésre. Az esemény a folyamat visszalépéséből következtethető ki, például amikor az állapot „In QA” értékről „In Progress” értékre vált. | ||
| Miért fontos? Az utómunka követése segít megérteni a minőségi problémákat és a folyamat hatékonysági hiányosságait. Ha gyakran fordul elő, az fejlesztési problémákra vagy nem egyértelmű követelményekre utalhat. Hol szerezhető be? A sys_audit vagy sys_history_line táblák „State” mezőjének előzményeiből következtethető ki. Ha egy későbbi szakasz állapota, például „Testing”, egy korábbira, például „In Progress” értékre vált, az utómunkát jelez. Rögzítés Visszalépést jelző állapotváltásból következtethető ki, például „Testing” -> „In Progress”. Eseménytípus inferred | |||
Útmutatók az adatok kinyeréséhez
Lépések
- Ismerje meg az állapotmodellt: A jelentések létrehozása előtt dokumentálja, hogy a fejlesztési elem állapotmezőjének mely értékei felelnek meg a szükséges tevékenységeknek. Az állapotmező például a Story
[rm_story]vagy a Defect[rm_defect]táblában található. Az „In Progress” állapot például a „Development Started” tevékenységnek felelhet meg. - Lépjen a jelentéskészítéshez: Jelentkezzen be a ServiceNow-példányába. A Filter navigatorban nyissa meg a
Reports > View / Runmenüpontot, majd kattintson aCreate a reportgombra. - Készítsen jelentést az állapotváltozásokról: Elsőként készítsen jelentést az állapotvezérelt tevékenységek rögzítéséhez. Állítsa be a következőket:
- Jelentés neve:
ProcessMind - State Change Events - Forrás típusa:
Table - Tábla:
Audit [sys_audit] - Típus:
List - Oszlopok beállítása: Adja hozzá a
Document key,Created on,Table name,Field name,Old valueésNew valuemezőket. - Szűrés: A
Table namemezőnél válassza ki a fejlesztési elemeket tartalmazó táblák egyikét, például aStoryértéket, aField namemezőnél pedig az állapotmezőt, például aStateértéket. A kívánt időszakra vonatkozóan szűrjön aCreated onmező alapján.
- Jelentés neve:
- Készítsen jelentést az elemek létrehozásáról: Hozzon létre új jelentést a kezdeti létrehozási esemény rögzítéséhez.
- Jelentés neve:
ProcessMind - Item Creation Events - Forrás típusa:
Table - Tábla:
Story [rm_story](vagy az elsődleges fejlesztésielem-tábla) - Típus:
List - Oszlopok beállítása: Adja hozzá a szükséges attribútumok mezőit, például a
Number,Created on,Assigned to,PriorityésStatemezőt. - Szűrés: Szűrjön a
Created onmező alapján.
- Jelentés neve:
- Készítsen jelentést a kódvéglegesítésekről: Készítsen jelentést a véglegesítésekhez kapcsolódó, kifejezett DevOps-eseményekről.
- Jelentés neve:
ProcessMind - Commit Events - Forrás típusa:
Table - Tábla:
Commit [sn_devops_commit] - Típus:
List - Oszlopok beállítása: Adjon hozzá olyan mezőket, mint a
Work item,Commit timeésAuthor. - Szűrés: Szűrjön a
Commit timemező alapján.
- Jelentés neve:
- Készítsen jelentéseket a buildelésekről és telepítésekről: Ismételje meg az előző lépéseket a
Build [sn_devops_build]és aDeployment [sn_devops_deployment]táblához. Ezek a táblák aBuild Triggered,Deployment to Production Started,Deployed to ProductionésDeployment Failedtevékenységek rekordjait tartalmazzák. - Exportálja az összes jelentést: Futtassa le külön-külön az elkészített jelentéseket. Mindegyiknél kattintson a helyi menü ikonjára, vagyis a három pontra vagy a lefelé mutató nyílra, majd válassza az
Export > CSVvagy azExport > Excellehetőséget. Mentse el az összes fájlt. - Egyesítse és alakítsa át az adatokat: Nyissa meg az exportált fájlokat egy táblázatkezelőben, vagy használjon adat-előkészítő eszközt. Egyesítse kézzel az összes fájl adatait egyetlen munkalapra. Hozza létre a szükséges eseménynapló-oszlopokat, például a
DevelopmentItem,ActivityNameésEventTimemezőt, majd rendelje hozzájuk a forrásoszlopok adatait. Például az auditjelentésDocument keymezőjét és a Story-jelentésNumbermezőjét rendelje aDevelopmentItemoszlophoz. - Rendelje hozzá a tevékenységneveket: Hozza létre az
ActivityNameoszlopot a forrásadatok átalakításával. Az állapotváltozásokról szóló jelentésnél a dokumentált állapotmodell alapján rendelje aNew valueértékeit a tevékenységnevekhez. Például a „Testing” állapothoz rendelje a „QA Testing Started” tevékenységet. A többi jelentésnél minden sorhoz rendeljen egy rögzített tevékenységnevet. Például a véglegesítési export összes sora a „Code Committed” tevékenységet kapja. - Végezze el a végső beállításokat, majd mentse a fájlt: Adja hozzá a
SourceSystemés aLastDataUpdateoszlopot, és minden sorban adjon meg rögzített értékeket. Ellenőrizze, hogy az időbélyegek formátuma egységes-e. Mentse a véglegesített adatokat egyetlen CSV-fájlba, amely ezután feltölthető a ProcessMindbe.
Konfiguráció
- Szükséges táblák: Az adatkinyeréshez elsősorban az
Audit [sys_audit]tábla szükséges a következtetett eseményekhez, a megfelelő fejlesztésielem-táblák, például aStory [rm_story]és aDefect [rm_defect], valamint a ServiceNow DevOps alapvető táblái:Commit [sn_devops_commit],Build [sn_devops_build]ésDeployment [sn_devops_deployment]. - Fontos szűrők: A legfontosabb szűrő az időszak. Minden jelentésben egységesen alkalmazza egy időbélyegmezőre, például a
Created on,Commit timevagyKezdési időmezőre. Asys_auditjelentésnél mindenképpen szűrjön aTable namemezőre, példáulrm_storyértékkel, és aField namemezőre, példáulstateértékkel, hogy csak a releváns állapotváltozások kerüljenek az eredménybe. - Javasolt időszak: Érdemes 3–6 hónapnyi adatot kinyerni, így reprezentatív adathalmazt kap, és elkerülheti a teljesítményproblémákat. Nagyobb rendszereknél fontolja meg az adatok havi kötegekben történő kinyerését.
- Az állapotmodell meghatározása: Pontosan ismernie kell a szervezet munkaelemeinek állapotmodelljét. Erre azért van szükség, hogy a
sys_audittáblában rögzített állapotértékeket helyesen rendelje hozzá az olyan üzleti tevékenységekhez, mint a „QA Testing Started” vagy az „UAT Approved”. - Előfeltételek: Az adatkinyerést végző felhasználóknak
report_userszerepkörrel vagy azzal egyenértékű jogosultsággal kell rendelkezniük a jelentések létrehozásához és futtatásához. Emellett olvasási hozzáférésre van szükségük a fent említett DevOps- és alkalmazásfejlesztési táblákhoz. A ServiceNow DevOps bővítménynek telepítve kell lennie, és aktív integrációval kell rendelkeznie az SCM- és CI/CD-eszközökkel.
Példa-lekérdezés sql
/*
This extraction method uses the ServiceNow report builder UI. The following sections describe the configuration for each report that must be created and exported.
The exported data must then be manually combined and transformed into a single event log file.
*/
---
-- REPORT 1: Item Creation Events
---
Report_Name: ProcessMind - Item Creation Events
Source_Table: rm_story
Report_Type: List
Columns:
- Number (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- 'Development Item Created' (create a formula or static column for ActivityName)
- Assigned to (maps to AssignedDeveloper)
- Priority (maps to DevelopmentItemPriority)
- State (maps to DevelopmentItemState)
- cmdb_ci (maps to ModuleComponentAffected)
- Type (maps to DevelopmentItemType)
- Assignment group (maps to AssignmentGroup)
Filters:
- sys_created_on ON Last 6 months
---
-- REPORT 2: Inferred State Change Events
---
Report_Name: ProcessMind - State Change Events
Source_Table: sys_audit
Report_Type: List
Columns:
- documentkey (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- newvalue (maps to ActivityName, requires translation)
- user (maps to AssignedDeveloper)
ActivityName_Mapping_Logic (Example):
- WHEN newvalue IS '[Your Design State]' THEN 'Design Started'
- WHEN newvalue IS '[Your In Progress State]' THEN 'Development Started'
- WHEN newvalue IS '[Your QA State]' THEN 'QA Testing Started'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your In Progress State]' THEN 'Rework Identified'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your UAT State]' THEN 'QA Testing Completed'
- WHEN newvalue IS '[Your UAT State]' THEN 'UAT Started'
- WHEN newvalue IS '[Your UAT Approved State]' THEN 'UAT Approved'
- WHEN newvalue IS '[Your Release Ready State]' THEN 'Prepared For Release'
- WHEN newvalue IS '[Your Cancelled State]' THEN 'Development Item Cancelled'
Filters:
- tablename = 'rm_story'
- fieldname = 'state'
- sys_created_on ON Last 6 months
---
-- REPORT 3: Code Commit Events
---
Report_Name: ProcessMind - Commit Events
Source_Table: sn_devops_commit
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- commit_time (maps to EventTime)
- 'Code Committed' (create a formula or static column for ActivityName)
- author.name (maps to AssignedDeveloper)
Filters:
- commit_time ON Last 6 months
---
-- REPORT 4: Build Events
---
Report_Name: ProcessMind - Build Events
Source_Table: sn_devops_build
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime)
- 'Build Triggered' (create a formula or static column for ActivityName)
Filters:
- start_time ON Last 6 months
---
-- REPORT 5: Deployment Events
---
Report_Name: ProcessMind - Deployment Events
Source_Table: sn_devops_deployment
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime for 'Started' activities)
- end_time (maps to EventTime for 'Completed' or 'Failed' activities)
- state (maps to ActivityName, requires translation)
ActivityName_Mapping_Logic:
- WHEN state IS 'in_progress' THEN 'Deployment to Production Started'
- WHEN state IS 'successful' THEN 'Deployed to Production'
- WHEN state IS 'failed' THEN 'Deployment Failed'
Filters:
- start_time ON Last 6 months
- [Filter for production deployments based on your environment configuration]
---
-- Additional events like 'Code Review Performed' may require a separate report
-- on a table like `sn_devops_pull_request` if available and configured.
--- Lépések
- Előfeltételek: Ellenőrizze, hogy hozzáfér-e hálózaton keresztül a ServiceNow-példányhoz, és rendelkezik-e dedikált, olvasási jogosultságú szolgáltatásfiókkal. Kezdésként megfelelő lehet az
itilés azsn_devops.viewerszerepkör. A felhasználónak hozzá kell férnie többek között azrm_story, asys_audittáblához és azsn_devops_*sémához. - A ServiceNow ODBC Driver telepítése: Töltse le az operációs rendszerének megfelelő ServiceNow ODBC drivert a ServiceNow támogatási portáljáról. Kövesse a telepítési útmutatót.
- DSN beállítása: Hozzon létre új System DSN-t (Data Source Name) azon a gépen, amelyen a lekérdezést futtatja. Az ODBC Data Source Administratorban adja hozzá a ServiceNow drivert, majd adja meg a példány URL-címét (például
yourinstance.service-now.com), a felhasználónevet és a jelszót. - Kapcsolódás SQL-klienssel: Csatlakozzon a ServiceNow rendszerhez a beállított DSN-en keresztül egy SQL-klienssel, például a DBeaverrel, a Microsoft SQL Server Management Studióval (linked server használatával), vagy egy ODBC-könyvtárat használó programnyelvvel, például Pythonnal.
- Az állapotmodell azonosítása: A lekérdezés futtatása előtt állapítsa meg, hogy a szervezet pontosan milyen értékeket használ az
rm_storyvagyrm_defectfejlesztésielem-táblákstatemezőjében. A megadott lekérdezés gyakori példákat, például az „In Progress” és az „In QA” értéket használja. Ezeket cserélje le a saját rendszerében használt értékekre. - Az SQL-lekérdezés testreszabása: Másolja be a megadott SQL-lekérdezést a kliensbe. Módosítsa a lekérdezés elején található helyőrzőket, köztük a kinyerés kezdő dátumát és a fejlesztési életciklus tevékenységeinek megfelelő állapotértékeket.
- A lekérdezés futtatása: Futtassa le a teljes SQL-lekérdezést a ServiceNow-adatbázison, az ODBC-kapcsolaton keresztül. Az időszaktól és az adatmennyiségtől függően ez hosszabb időt vehet igénybe.
- Adatok ellenőrzése: A lekérdezés befejezése után röviden ellenőrizze az eredményül kapott adathalmazt. Nézze meg, hogy többféle tevékenység szerepel-e benne, és a fontos oszlopok, például a
DevelopmentItem, azActivityNameés azEventTimemegfelelően ki vannak-e töltve. - Exportálás CSV-fájlba: Exportálja a teljes eredményhalmazt CSV-fájlba. A fájl kódolása legyen UTF-8, az oszlopfejlécek pedig egyezzenek meg a ProcessMind által elvárt attribútumnevekkel, például
DevelopmentItem,ActivityNameésEventTime. - Feltöltés előkészítése: Ellenőrizze, hogy a végleges CSV-fájl végén nincs-e üres sor, és az
EventTimeésLastDataUpdatedátumformátuma egységes, a ProcessMind által támogatott formátum-e, példáulYYYY-MM-DD HH:MM:SS.
Konfiguráció
- Előfeltételek: Hozzáférés egy olyan ServiceNow-példányhoz, amelyen engedélyezve van a DevOps-modul. Szükség van egy dedikált felhasználói fiókra, amely olvasási jogosultsággal rendelkezik a szükséges táblákhoz. A ServiceNow ODBC drivert telepíteni és beállítani kell az ügyfélgépen.
- ODBC Driver beállítása: A kapcsolathoz szükség van a példány URL-címére, egy felhasználónévre, valamint jelszóra vagy OAuth-tokenre. Összetett lekérdezések futtatása előtt feltétlenül ellenőrizze a DSN-kapcsolatot.
- Időszak szűrése: A megadott lekérdezésben szerepel egy
s.sys_created_on >= '2023-01-01'helyőrző, amely korlátozza a kinyert adatok mennyiségét. Javasoljuk, hogy meghatározott időszakra, például az elmúlt 6–12 hónapra kérje le az adatokat, így a lekérdezés futási ideje kezelhető marad. - Az állapotmodell testreszabása: A következtetett események pontossága teljes mértékben az állapotmodelltől függ. Cserélje le a helyőrző állapotértékeket (például
[Your 'In Progress' State Value],[Your 'In QA' State Value]) a ServiceNow-beállításban használt pontos értékekre. Az értékek megkülönböztetik a kis- és nagybetűket. - Munkatételek táblái: A lekérdezés a Story táblára (
rm_story) készült. Ha a szervezet Defect (rm_defect), Enhancement (rm_enhancement) vagy más feladattípusokat is használ, vegye fel őket a kezdetiDevItemsCommon Table Expression (CTE) lekérdezésbe aUNION ALLhasználatával. - Teljesítmény: A ServiceNow éles példányán közvetlenül futtatott lekérdezések befolyásolhatják a rendszer teljesítményét. A nagy adatmennyiség kinyerését érdemes csúcsidőn kívülre időzíteni. Nagyon nagy adathalmazoknál használjon fokozatos kinyerést a
sys_updated_onmező alapján.
Példa-lekérdezés sql
WITH DevItems AS (
-- This CTE selects the base set of development items to analyze.
-- Add other tables like rm_defect or rm_enhancement here using UNION ALL if needed.
SELECT
s.sys_id,
s.number,
s.sys_created_on,
s.sys_updated_on,
s.assigned_to,
s.priority,
s.state,
s.cmdb_ci, -- Module/Component Affected
s.sys_class_name, -- Development Item Type
s.assignment_group,
DATEDIFF(second, s.sys_created_on, s.closed_at) AS cycle_time_seconds
FROM rm_story s
WHERE s.sys_created_on >= '2023-01-01' -- *** Placeholder: Set your desired start date ***
),
StateChanges AS (
-- This CTE unnests the audit trail for state changes, which are used for inferred activities.
SELECT
a.documentkey AS item_sys_id,
a.sys_created_on AS change_time,
a.oldvalue,
a.newvalue,
-- *** Placeholder: Define the numeric order of your states to detect rework. Adjust values and names. ***
CASE a.oldvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS old_state_order,
CASE a.newvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS new_state_order
FROM sys_audit a
WHERE a.tablename = 'rm_story' AND a.fieldname = 'state'
)
-- 1. Development Item Created
SELECT
i.number AS DevelopmentItem,
'Development Item Created' AS ActivityName,
i.sys_created_on AS EventTime,
'ServiceNow DevOps' AS SourceSystem,
GETDATE() AS LastDataUpdate,
us.name AS AssignedDeveloper,
i.priority AS DevelopmentItemPriority,
i.state AS DevelopmentItemState,
ci.name AS ModuleComponentAffected,
i.sys_class_name AS DevelopmentItemType,
grp.name AS AssignmentGroup,
i.cycle_time_seconds AS DevelopmentItemCycleTime,
CAST(0 AS BIT) AS IsRework
FROM DevItems i
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id
LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id
LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 2. Design Started
SELECT i.number, 'Design Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Design'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 3. Development Started
SELECT i.number, 'Development Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In Progress'' State Value]' AND sc.old_state_order < 3 -- *** Placeholder: Adjust state value and order ***
UNION ALL
-- 4. Code Committed
SELECT i.number, 'Code Committed', c.committed_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_commit c JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 5. Build Triggered
SELECT i.number, 'Build Triggered', b.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_build b JOIN sn_devops_commit_build cb ON b.sys_id = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 6. Code Review Performed
SELECT i.number, 'Code Review Performed', pr.closed_at, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_pull_request pr JOIN DevItems i ON pr.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE pr.state = 'merged' -- Or 'closed', depending on process
UNION ALL
-- 7. QA Testing Started
SELECT i.number, 'QA Testing Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In QA'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 8. Rework Identified
SELECT i.number, 'Rework Identified', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(1 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.new_state_order < sc.old_state_order AND sc.new_state_order > 1 -- Moved to an earlier state
UNION ALL
-- 9. QA Testing Completed
SELECT i.number, 'QA Testing Completed', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In QA'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 10. UAT Started
SELECT i.number, 'UAT Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In UAT'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 11. UAT Approved
SELECT i.number, 'UAT Approved', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In UAT'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 12. Prepared For Release
SELECT i.number, 'Prepared For Release', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Ready for Release'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 13. Deployment to Production Started
SELECT i.number, 'Deployment to Production Started', se.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' -- *** Placeholder: Adjust stage name ***
UNION ALL
-- 14. Deployed to Production
SELECT i.number, 'Deployed to Production', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'SUCCESS' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 15. Deployment Failed
SELECT i.number, 'Deployment Failed', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'FAILURE' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 16. Development Item Cancelled
SELECT i.number, 'Development Item Cancelled', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Cancelled'' State Value]'; -- *** Placeholder: Adjust state value *** Kezdje el még ma?
Kezdje el még ma átalakítani szoftverfejlesztési életciklusát. Ezzel az adatsablonnal feltárhatja a rejtett hatékonysági problémákat, és folyamatosan fejlesztheti a folyamatot.
Ne halogassa: optimalizálja még ma szoftverfejlesztési életciklusát
Tárja fel a hatékonysági problémákat, és csökkentse legalább 30%-kal az SDLC-ciklusidőt.
Nincs szükség bankkártyára, kezdje el még ma az optimalizálást