Yazılım geliştirme yaşam döngünüz için veri şablonu
Yazılım geliştirme yaşam döngünüz için veri şablonu
- Toplanması önerilen öznitelikler
- İzlenecek temel etkinlikler
- ServiceNow DevOps’tan veri çıkarma yönergeleri
Yazılım geliştirme yaşam döngüsü öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Başlangıç zamanı EventTime | Belirli bir etkinliğin veya olayın ne zaman gerçekleştiğini gösteren kesin zaman damgasıdır. | ||
| Açıklama Bu öznitelik, geliştirme yaşam döngüsündeki her etkinliğin kaydedildiği tarih ve saati belirtir. Olayları kronolojik olarak sıralamak ve zamana dayalı tüm analizleri yapmak için gereklidir. Process Mining analizinde başlangıç zamanı, etkinlikler arasındaki süreleri hesaplamak, bekleme sürelerini belirlemek ve sürecin genel çevrim süresini ölçmek için kullanılır. SDLC uçtan uca çevrim süresi analizi gibi performans Dashboardlarını ve kod inceleme teslim süresi gibi temel performans göstergelerini hesaplamak için önemli bir bileşendir. Neden önemli? Bu zaman damgası, olayları doğru sıralamak ve çevrim süreleri, süreler ve bekleme zamanları dâhil tüm performans metriklerini hesaplamak için gereklidir. Nereden alınır? Genellikle denetim izi veya görev tablolarındaki 'sys_updated_on' ya da 'sys_created_on' gibi sistem tarafından oluşturulan zaman damgası alanlarında bulunur. Örnekler 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Etkinlik adı ActivityName | 'Geliştirme başladı' veya 'Kod incelemesi yapıldı' gibi gerçekleşen belirli bir geliştirme yaşam döngüsü olayının adıdır. | ||
| Açıklama Bu öznitelik, yazılım geliştirme yaşam döngüsü içinde tamamlanan her kilometre taşının veya görevin adını kaydeder. Bu etkinlikler, oluşturma aşamasından dağıtıma kadar sürecin sıralı adımlarını oluşturur. Bu etkinliklerin sırasını ve sıklığını analiz etmek, Process Mining’in temel işlevidir. Süreç haritasının oluşturulmasını sağlar, adımlar arasındaki darboğazları belirlemeye yardımcı olur ve uyumsuz ya da verimsiz süreç farklılıklarını ortaya çıkarır. Tanımlı etkinlik kümesi; tasarım, geliştirme, test ve dağıtım gibi temel aşamaları içerir. Neden önemli? Süreç haritasındaki adımları tanımlar; böylece süreç akışını analiz edebilir, darboğazları belirleyebilir ve standart SDLC’den sapmaları ortaya çıkarabilirsiniz. Nereden alınır? Genellikle durum değişiklikleri, olay kayıtları veya denetim izi girdileri standart bir etkinlik adı listesiyle eşleştirilerek elde edilir. Örneğin, 'state' alanının 'In Progress' olarak değişmesi 'Geliştirme başladı' etkinliğiyle eşleştirilebilir. Örnekler Geliştirme başladıKod commit edildiQA testi tamamlandıÜretim ortamına dağıtıldı | |||
| Geliştirme öğesi DevelopmentItem | Bir özellik, hata veya görev gibi geliştirme yaşam döngüsünde ilerleyen tek bir iş biriminin benzersiz tanımlayıcısıdır. | ||
| Açıklama Geliştirme öğesi, izlenen belirli bir iş birimini temsil eden temel vaka tanımlayıcısıdır. İlgili öğenin ilk fikir ve planlama aşamalarından geliştirme, test ve dağıtıma kadar tüm etkinliklerini birbirine bağlar. Process Mining analizinde bu öznitelik, her iş öğesinin uçtan uca yolculuğunu yeniden oluşturmak için temel niteliktedir. Süreç akışlarını görselleştirmenizi, toplam çevrim sürelerini hesaplamanızı ve tek tek özellikler ya da hata düzeltmeleri için süreç varyantlarını belirlemenizi sağlar. Tutarlı bir süreç haritası oluşturmak için günlükteki her olay bir geliştirme öğesiyle ilişkilendirilmelidir. Neden önemli? İlgili tüm geliştirme etkinliklerini tek bir süreç örneğinde birleştiren temel tanımlayıcıdır. Böylece her iş öğesinin yaşam döngüsünün tamamını analiz edebilirsiniz. Nereden alınır? Bu tanımlayıcı genellikle ServiceNow içindeki 'rm_story', 'rm_bug' veya 'task' tabloları gibi hikâyeleri, hataları ya da görevleri yöneten tablolardaki birincil anahtardır. Örnekler STRY0010015BUG0034092TASK0050118 | |||
| Kaynak sistem SourceSystem | Verilerin çıkarıldığı sistemi belirtir. Bu örnekte kaynak sistem ServiceNow DevOps’tur. | ||
| Açıklama Bu öznitelik, olay verilerinin geldiği sistemi belirtir. Bu süreçte değer her zaman 'ServiceNow DevOps' olur. Sabit bir değer gibi görünse de kaynak sistemi açıkça belirtmek, veri yönetişimi açısından ve Jira ya da Azure DevOps gibi birden fazla sistemden veri alınan ortamlarda önemlidir. Verinin kaynağını netleştirir ve veri kalitesi ya da veri çıkarma sorunlarını teşhis etmeye yardımcı olur. Neden önemli? Verilerin izlenebilirliğini sağlar ve özellikle birden fazla geliştirme aracından veri alırken veri bütünlüğünü korumak için gereklidir. Nereden alınır? Bu sabit değer, veri çıkarma ve dönüştürme işlemi sırasında eklenmelidir. Örnekler ServiceNow DevOps | |||
| Son veri güncellemesi LastDataUpdate | Bu olay günlüğündeki verilerin kaynak sistemden en son yenilendiği zamanı gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, veri setinin ServiceNow DevOps’tan en son ne zaman çıkarıldığını veya güncellendiğini kaydeder. Tek tek olaylar yerine veri setinin tamamı için geçerlidir. Bu zaman damgası, analizin ne kadar güncel olduğunu anlamak için önemlidir. Süreç içgörülerinin güncelliğini gösterir ve veri yenilemelerini planlamaya yardımcı olur. Bu bilgiyi Dashboardlarda göstermek, tüm metriklere ve görselleştirmelere bağlam kazandırır; böylece kararlar güncel verilere dayanır. Neden önemli? Verilerin ne kadar güncel olduğuna ilişkin önemli bir bağlam sunar ve kullanıcıların süreç analizinin güncelliğini anlamasını sağlar. Nereden alınır? Bu zaman damgası, veri çıkarma işlemi sırasında oluşturulup eklenir ve işlemin ne zaman yürütüldüğünü kaydeder. Örnekler 2023-11-15T08:00:00Z | |||
| Atama grubu AssignmentGroup | Etkinlik sırasında geliştirme öğesinden sorumlu ekip veya grup. | ||
| Açıklama Bu öznitelik, iş öğesine atanan ekibi (ör. 'Ön uç geliştiricileri', 'Arka uç hizmetleri' veya 'Kalite güvence ekibi') belirtir. İş öğesi ilerledikçe farklı atama gruplarına devredilebilir. Atama grubunu izlemek, ekipler arası iş birliğini ve devir teslimleri anlamak için önemlidir. İş bir ekipten diğerine geçerken ortaya çıkan sistemik gecikmeleri belirlemenize yardımcı olur. Bu öznitelikle ekip performansını ve iş yükünü analiz edebilir, genel akışta darboğaz oluşturan ekipleri saptayabilirsiniz. Neden önemli? İşten hangi ekibin sorumlu olduğunu izler; ekip performansını, iş yükü dengesini ve ekipler arasındaki devir teslimlerin verimliliğini analiz etmenizi sağlar. Nereden alınır? Bu bilgi, ServiceNow’da görevlerle ilgili tablolarda standart bir alan olan 'assignment_group' alanında saklanır. Örnekler Platform mühendisliğiMobil uygulama ekibiKalite güvencesiDevOps | |||
| Atanan geliştirici AssignedDeveloper | Etkinliğin gerçekleştiği sırada geliştirme öğesine atanmış geliştiricinin veya kullanıcının adı ya da kimliğidir. | ||
| Açıklama Bu öznitelik, belirli bir görevi veya etkinliği gerçekleştirmekten sorumlu kişiyi belirtir. Geliştirme öğesi farklı aşamalar ve ekipler arasında ilerledikçe bu değer değişebilir. Kaynak dağılımını, iş yükünü ve devir teslimleri analiz etmek için bu öznitelik önemlidir. 'Geliştirici iş yükü ve devir teslimleri' Dashboardunu ve 'Geliştirici başına etkinlik hacmi' KPI’ını doğrudan destekler. Bu alandaki değişiklikleri izleyerek devir teslim sürelerini ölçebilir, geliştiriciler arasındaki veya geliştirme ve QA ekipleri arasındaki iş birliği darboğazlarını belirleyebilirsiniz. Neden önemli? İş yükü dağılımı, devir teslim verimliliği ve ekiplere özgü performans örüntülerinin belirlenmesi dâhil, kaynak temelli analizler için gereklidir. Nereden alınır? Bu bilgi genellikle ServiceNow’daki görevle ilgili tablolarda bulunan 'assigned_to' alanında saklanır. Örnekler David MillerAnna WilliamsJames Brown | |||
| Etkilenen modül/bileşen ModuleComponentAffected | Geliştirme öğesinin ilgili olduğu belirli yazılım modülü, uygulama veya bileşen. | ||
| Açıklama Bu öznitelik, geliştirme çalışmalarını etkiledikleri sistem bölümüne göre sınıflandırır. Bu bölüm belirli bir mikro hizmet, kullanıcı arayüzü bileşeni veya arka uç uygulaması olabilir. Süreci modül ya da bileşene göre bölümlere ayırmak, belirli alanlardaki darboğazları belirlemek için önemlidir. 'Bileşene göre darboğaz içgörüleri' Dashboardu ve 'Bileşene göre ortalama aşama süresi' KPI’ı, kod tabanının belirli bölümlerinin sürekli olarak daha uzun geliştirme çevrimleri, daha yüksek yeniden çalışma oranları veya daha sık dağıtım hatalarıyla ilişkili olup olmadığını saptamak için bu özniteliği kullanır. Böylece iyileştirme çalışmalarınızı en çok ihtiyaç duyulan alanlara yöneltebilirsiniz. Neden önemli? Analizi uygulama veya bileşene göre bölümlere ayırmanızı sağlar; böylece sistemin belirli kısımlarına özgü darboğazları ya da kalite sorunlarını belirleyebilirsiniz. Nereden alınır? Bu, genellikle özel bir alan ya da iş öğesini 'cmdb_ci' kaydına bağlayan Configuration Management Database (CMDB) referansıdır. ServiceNow DevOps dokümantasyonuna başvurun. Örnekler Faturalandırma hizmetiKullanıcı kimlik doğrulama arayüzüRaporlama veritabanıAPI ağ geçidi | |||
| Geliştirme öğesi çevrim süresi DevelopmentItemCycleTime | Geliştirme öğesinin oluşturulmasından son kez kapatılmasına veya dağıtılmasına kadar geçen toplam süre. | ||
| Açıklama Bu öznitelik, tek bir geliştirme öğesinin baştan sona geçen süresini gösteren hesaplanmış bir metriktir. Her vaka için ilk etkinliğin zaman damgası ile son etkinliğin zaman damgası arasındaki fark alınarak hesaplanır. Bu metrik, SDLC sürecinin tamamını değerlendiren temel performans göstergelerinden biridir ve 'Ortalama SDLC çevrim süresi' KPI’ını doğrudan destekler. Sürecin hızını ve verimliliğini üst düzeyde ölçer. Bu metriği zaman içinde ve öncelik ya da ekip gibi farklı boyutlarda inceleyerek süreç iyileştirme çalışmalarının etkisini izleyebilirsiniz. Neden önemli? Bir iş öğesinin baştan sona geçen toplam süresini gösterir; genel süreç verimliliğini ve hızını ölçmek için önemli bir metriktir. Nereden alınır? Kaynak sistemde bir alan değildir. Process Mining aracında her CaseId için minimum StartTime değerinin maksimum StartTime değerinden çıkarılmasıyla hesaplanır. Örnekler 15 gün 4 saat3 gün 12 saat32 gün 8 saat | |||
| Geliştirme öğesi durumu DevelopmentItemState | Olay sırasında geliştirme öğesinin durumu; örneğin 'Açık', 'Devam ediyor' veya 'Kapalı'. | ||
| Açıklama Bu öznitelik, geliştirme öğesinin ServiceNow içindeki resmî durumunu gösterir. Etkinlikler süreç adımlarından türetilirken durum, sistemdeki resmî aşamayı belirtir. Etkinlikler çoğu zaman durum bilgisinden türetilir. Bu bilgi, verileri doğrulamak ve sürecin daha sade, üst düzey görünümlerini oluşturmak için kullanılabilir. Örneğin her durumda geçirilen süreyi incelemek, darboğazları etkinlikler arasındaki süreyi incelemekten farklı bir açıdan görmenizi sağlar. Ayrıca beklemede kalan veya çözüme kavuşturulan öğeleri belirlemeye de yardımcı olur. Neden önemli? Bir iş öğesinin sistemdeki resmî durumunu gösterir. Etkinlikleri türetmek için çoğu zaman bu bilgi kullanılır; doğrulama ve üst düzey durum analizi için de yararlanılabilir. Nereden alınır? ServiceNow’da görevlerle ilgili tablolarda genellikle 'state' veya 'stage' adıyla bulunan standart bir alandır. Örnekler BeklemedeDevam ediyorTeste hazırTamamlandı ve kapatıldı | |||
| Geliştirme öğesi türü DevelopmentItemType | İş öğesinin sınıflandırması; örneğin 'Özellik', 'Hata', 'Teknik borç' veya 'Görev'. | ||
| Açıklama Bu öznitelik, SDLC sürecinden geçen farklı iş türlerini birbirinden ayırır. Örneğin kritik bir hatayı düzeltme süreci, yeni bir özellik geliştirme sürecinden farklı ve daha hızlı olabilir. İş öğesi türüne göre analiz yapmak, performansı daha ayrıntılı anlamanızı sağlar. 'Hatalarda yeniden çalışma oranı yeni özelliklere göre daha mı yüksek?' veya 'Teknik borcu azaltma çevrim süremiz kabul edilebilir mi?' gibi soruları yanıtlamanıza yardımcı olur. Bu bölümleme, herkese uyan tek bir süreç görünümünden daha derin içgörüler sunar. Neden önemli? Özellikler ve hatalar gibi farklı iş türlerini birbirinden ayırır. Bu türlerin süreç akışları, öncelikleri ve beklenen süreleri farklı olabilir. Nereden alınır? Bu bilgi, kaydın kaynak tablosundan (ör. 'rm_story' veya 'rm_bug') ya da genel görev tablosundaki 'type' alanından belirlenebilir. Örnekler ÖzellikHataTaskAraştırma çalışması | |||
| Öncelik DevelopmentItemPriority | Geliştirme öğesine atanan öncelik düzeyidir; ör. 'High', 'Medium' veya 'Low'. | ||
| Açıklama Bu öznitelik, geliştirme öğelerini iş açısından ne kadar acil olduklarına göre sınıflandırır. Öncelik düzeyleri, ekiplerin en önemli görevlere odaklanmasına yardımcı olur ve genellikle SLA’ları ve paydaş beklentilerini yönetmek için kullanılır. Process Mining analizinde öncelik, karşılaştırma yapmak için temel bir boyuttur. Yüksek öncelikli öğelerin daha hızlı veya farklı bir yol izleyip izlemediğini görmek için süreç haritasını filtrelemenizi sağlar. Kritik öğelerin gerçekten daha hızlı işlenip işlenmediğini doğrulamaya yardımcı olan 'Yüksek öncelikli özelliklerin teslim süresi' Dashboardu ve KPI’ı için gereklidir. Neden önemli? Farklı öncelik düzeylerindeki süreçleri filtreleyip karşılaştırmanızı sağlar. Böylece yüksek öncelikli öğelerin daha hızlı ve verimli işlenip işlenmediğini doğrulayabilirsiniz. Nereden alınır? ServiceNow’da görevlerle ilgili tablolarda genellikle 'priority' adıyla bulunan standart bir alandır. Örnekler 1 - Kritik2 - Yüksek3 - Orta4 - Düşük | |||
| Yeniden çalışma mı IsRework | Etkinlik testten sonra geliştirmeye dönme gibi bir yeniden çalışma döngüsünün parçasıysa true değerini alan bir boole işaretidir. | ||
| Açıklama Bu, süreç önceki bir aşamaya döndükten sonra gerçekleşen etkinlikleri belirleyen türetilmiş bir özniteliktir. Örneğin aynı öğe için 'Geliştirme başladı' etkinliği, 'Kalite güvencesi testi tamamlandı' etkinliğinden sonra gerçekleşirse yeniden çalışma olarak işaretlenir. Bu işaret, yeniden çalışmayı ölçmek ve görselleştirmek için gereklidir. 'Yeniden çalışma ve ret akışı analizi' Dashboardunu doğrudan destekler ve 'Test sonrası yeniden çalışma oranı' KPI’ını hesaplamak için kullanılır. Analistler bu etkinlikleri işaretleyerek yeniden çalışmanın sıklığını, nedenlerini ve toplam çevrim süresine etkisini kolayca inceleyebilir. Neden önemli? Bu işaret, yeniden çalışmayı ölçmeyi ve analiz etmeyi kolaylaştırır; süreç kalitesini değerlendirmenize ve tekrarlanan işlerin temel nedenlerini belirlemenize yardımcı olur. Nereden alınır? Bu öznitelik, her vakanın etkinlik sırası incelenerek süreç akışındaki geriye dönüşler saptanmak suretiyle Process Mining aracında hesaplanır. Örnekler truefalse | |||
| Bitiş zamanı EventEndTime | Bir etkinliğin ne zaman tamamlandığını gösteren kesin zaman damgasıdır. Anlık olaylarda başlangıç zamanıyla aynıdır. | ||
| Açıklama Bu öznitelik, geliştirme yaşam döngüsündeki her etkinliğin tamamlandığı tarih ve saati belirtir. Özellikle 'Kod incelemesi yapıldı' veya 'QA testi' gibi ölçülebilir süresi olan etkinliklerde kullanışlıdır. Process Mining analizinde hem başlangıç hem de bitiş zamanının bulunması, etkinliklerin işlem sürelerini etkinlikler arasındaki bekleme süresinden ayırarak hassas biçimde hesaplamayı sağlar. Böylece gecikmelerin uzun görevlerden mi yoksa kaynak beklemekten mi kaynaklandığını belirleyebilirsiniz. 'Derleme tetiklendi' gibi anlık kabul edilen olaylarda bitiş zamanı başlangıç zamanıyla aynı olabilir. Neden önemli? Etkinliklerin işlem süresini hassas biçimde hesaplamayı sağlar. Böylece çalışmaya ayrılan süreyle beklemeye ayrılan süreyi birbirinden ayırabilirsiniz. Nereden alınır? Bu değer türetilerek elde edilebilir. Sonraki etkinliğin başlangıç zaman damgası kullanılabilir veya kaynak sistemde varsa ayrı bir 'end date' alanından alınabilir. Örnekler 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| Commit kimliği CommitId | Geliştirme çalışmasıyla ilişkili kaynak kod commit’inin benzersiz tanımlayıcısı. | ||
| Açıklama Bu öznitelik, geliştirme öğesi ile Git gibi kaynak kod deposundaki belirli kod değişikliği arasında doğrudan bağlantı kurar. 'Kod commit edildi' etkinliği gerçekleştiğinde kaydedilir. Process Mining analizinde Commit kimliği, süreç verilerini mühendislik verileriyle ilişkilendirerek analizi zenginleştirir. Analistlerin sorunlu bir dağıtımı tam olarak hangi kod değişikliğinin tetiklediğini izlemesine veya kod karmaşıklığı metrikleriyle geliştirme çevrim sürelerini karşılaştırmasına olanak tanır. Böylece temel neden analizine çok daha derin ve teknik bir boyut eklenir. Neden önemli? Süreç olayını belirli bir kod değişikliğine bağlar; süreç metriklerini kod düzeyindeki ayrıntılarla karşılaştırarak temel nedenleri daha derinlemesine analiz etmenizi sağlar. Nereden alınır? Bu bilgi, ServiceNow DevOps’un Git veya SVN gibi kaynak kodu yönetim sistemleriyle entegrasyonları üzerinden alınır. Veriler, geliştirme öğesine bağlı ilişkili tablolarda bulunur. Örnekler a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Dağıtım durumu DeploymentStatus | Dağıtım etkinliğinin sonucunu belirtir; genellikle 'Başarılı' veya 'Başarısız' değerini alır. | ||
| Açıklama Bu öznitelik, belirli bir ortama yapılan dağıtımın sonucunu kaydeder. Sürüm sürecinin güvenilirliğini ve kararlılığını anlamak için önemli bir bilgidir. Bu öznitelik, 'Dağıtım başarı ve başarısızlık eğilimleri' Dashboardu ve 'Dağıtım başarısızlık oranı' KPI’ı için gereklidir. Kuruluşlar, dağıtım hatalarının sıklığını ve eğilimlerini inceleyerek test, altyapı veya sürüm koordinasyonundaki temel sorunları belirleyebilir. Bu bilgi, yazılım teslimatının kalitesini ve güvenilirliğini artırmaya yönelik çalışmalara odaklanmanıza yardımcı olur. Neden önemli? Dağıtım etkinliklerinin başarısını doğrudan ölçer. Dağıtım başarısızlık oranını hesaplamak ve sürüm kararlılığını analiz etmek için gereklidir. Nereden alınır? Bu durum genellikle dağıtım izleme görevlerine veya ServiceNow DevOps ile entegre CI/CD işlem hattı yürütme kayıtlarına yazılır. Örnekler BaşarılıBaşarısızUyarılarla tamamlandı | |||
| Planlanan sürüm PlannedReleaseVersion | Geliştirme öğesinin teslim edilmesinin planlandığı hedef yazılım sürümü. | ||
| Açıklama Bu öznitelik, geliştirme öğesini '2.3 sürümü' veya '2023 4. çeyrek sürümü' gibi belirli bir planlanan sürüme bağlar. Proje yönetimi ve sürüm planlamasında önemli bir yer tutar. Process Mining çalışmalarında bu öznitelik, 'Sürüm planına uyum izleme' Dashboardu için önemlidir. Ekipler, gerçek tamamlanma tarihlerini planlanan sürüm tarihleriyle karşılaştırarak takvime uyumu ölçebilir, sürüme yetişmeme riski taşıyan öğeleri belirleyebilir ve sürüm gecikmelerinin nedenlerini inceleyebilir. Böylece ayrıntılı geliştirme süreci ile üst düzey iş hedefleri arasında doğrudan bağlantı kurulur. Neden önemli? Geliştirme çalışmalarını belirli sürümlere bağlar; takvime uyumu ve süreç gecikmelerinin sürüm takvimlerine etkisini analiz etmenizi sağlar. Nereden alınır? Bu bilgi genellikle 'release' veya 'planned_release' alanında saklanır ve çoğu zaman ServiceNow’daki bir sürüm yönetimi tablosuna referans verir. ServiceNow DevOps dokümantasyonuna başvurun. Örnekler v3.4.12024 1. çeyrek sürümüProject Phoenix canlıya geçişi | |||
| Yeniden çalışma nedeni ReworkReason | Bir geliştirme öğesinin testten sonra neden yeniden çalışma gerektirdiğini açıklayan sınıflandırma veya açıklama. | ||
| Açıklama Bir öğe kalite güvencesi veya kullanıcı kabul testini (UAT) geçemediğinde, bu öznitelik başarısızlığın nedenini kaydeder. Neden belirli bir hata kategorisi, gereksinimlerin yanlış anlaşılması veya ortamla ilgili bir sorun olabilir. Bu bilgi, 'Yeniden çalışma ve ret akışı analizi' Dashboardu için önemli bir bağlam sağlar. Analistler, yalnızca yeniden çalışma yapıldığını görmekle kalmaz, nedenini de anlayabilir. Böylece genel yeniden çalışma oranını azaltmak için gereksinimleri daha iyi tanımlama, birim testlerini geliştirme veya test ortamlarını daha kararlı hâle getirme gibi hedefli iyileştirmeler yapılabilir. Neden önemli? Yeniden çalışmanın nedenlerine ilişkin niteliksel içgörü sunar; kaliteyi artırmak ve tekrarlanan çalışma döngülerini azaltmak için süreç iyileştirmelerini hedeflemenizi sağlar. Nereden alınır? Test başarısız olduğunda bu bilgi 'close_notes' alanına veya özel olarak oluşturulmuş 'rework_reason' alanına kaydedilebilir. ServiceNow DevOps dokümantasyonuna başvurun. Örnekler Gereksinim yanlış yorumlandıRegresyon hatasıPerformans testi başarısızKullanıcı arayüzü/kullanıcı deneyimi sorunu | |||
Yazılım geliştirme yaşam döngüsü etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Dağıtım başarısız oldu | Geliştirme öğesinin üretim ortamına dağıtım girişiminin başarısız olduğunu belirtir. CI/CD işlem hattı başarısızlık bildirdiğinde ServiceNow DevOps bunu açıkça kaydeder. | ||
| Neden önemli? Bu, başarısızlıkla sonuçlanan önemli bir bitiş noktasıdır. Sürüm kararlılığını artırmak ve dağıtım hatası oranını düşürmek için sıklığını ve nedenlerini analiz etmek gerekir. Nereden alınır? Pipeline Execution [sn_devops_pipeline_execution] kaydındaki 'completion_status' alanından alınır. Bitiş zamanındaki 'Failed' durumu bu olayı belirtir. Kaydedin Üretim ortamına dağıtım işlem hattı başarısızlık durumu bildirdiğinde kaydedilir. Olay türü explicit | |||
| Geliştirme başladı | Bu etkinlik, geliştiricinin geliştirme öğesi için kod yazmaya veya uygulamayı hayata geçirmeye başladığı anı belirtir. Genellikle öğenin durumunun 'In Progress', 'Development' veya 'Coding' olarak değişmesinden çıkarılır. | ||
| Neden önemli? Bu önemli kilometre taşı, değer yaratan üretim aşamasının başlangıcını gösterir. Geliştirici teslim süresini ve kod inceleme çevrim sürelerini ölçmek için gereklidir. Nereden alınır? Geliştirme öğesi kaydındaki (ör. Story [rm_story]) 'State' alanının 'In Progress' veya eşdeğer bir duruma güncellendiği zaman damgasından çıkarılır. Kaydedin 'In Progress' veya benzer bir duruma geçişin zaman damgasına dayanır. Olay türü inferred | |||
| Geliştirme öğesi oluşturuldu | Bu etkinlik, ServiceNow içinde hikâye, hata veya epic gibi yeni bir geliştirme öğesinin oluşturulduğunu belirtir. Yeni bir kayıt, Story [rm_story] tablosu gibi ilgili bir tabloya eklendiğinde bu olay genellikle açıkça kaydedilir. | ||
| Neden önemli? Bu, SDLC sürecinin temel başlangıç olayıdır. Uçtan uca toplam çevrim süresinin ölçülmesini ve ilk talep girişinin izlenmesini sağlar. Nereden alınır? Story [rm_story], Epic [rm_epic] veya Defect [rm_defect] gibi geliştirmeyle ilgili bir tabloda kayıt oluşturulduğunda sys_audit ya da sys_history_line tablolarına kaydedilir. Oluşturma zaman damgası genellikle doğrudan kaydın üzerinde bulunur. Kaydedin Geliştirme öğesi kaydının oluşturulma zaman damgasından alınır. Olay türü explicit | |||
| Kod incelemesi yapıldı | Bu etkinlik, genellikle bir pull request veya merge request ile ilişkili eşler arası kod incelemesinin tamamlandığını belirtir. DevOps entegrasyonları üzerinden açıkça kaydedilebilir veya ilişkili kayıtlardaki durum değişikliklerinden çıkarılabilir. | ||
| Neden önemli? Bu, önemli bir kalite kontrol aşamasıdır. Süresini analiz ederek SDLC’deki yaygın gecikme kaynaklarından biri olan inceleme sürecindeki darboğazları belirleyebilirsiniz. Nereden alınır? ServiceNow Git entegrasyonundaki bir Pull Request kaydının 'Merged' veya 'Completed' olayından alınabilir ya da geliştirme öğesinin durumunun 'Code Review Complete' olarak değişmesinden çıkarılabilir. Kaydedin İş öğesine bağlı bir Pull Request birleştirildiğinde kaydedilir. Olay türü explicit | |||
| QA testi tamamlandı | Kalite güvence ekibinin geliştirme öğesi için test çalışmalarını başarıyla tamamladığını belirtir. Öğenin durumu test aşamasından 'Ready for UAT' veya 'Done' gibi bir duruma geçtiğinde genellikle bu sonuç çıkarılır. | ||
| Neden önemli? Bu kilometre taşı, önemli bir kalite kontrol aşamasının tamamlandığını gösterir. Kullanıcı kabul testi veya sürüm hazırlığı gibi sonraki aşamalara geçmek için ön koşuldur. Nereden alınır? Test durumundan (ör. 'In QA') test sonrası bir duruma (ör. 'Ready for UAT' veya 'Resolved') geçişin zaman damgasından çıkarılır. Kaydedin 'Testing' durumundan sonraki bir duruma geçişin zaman damgasına dayanır. Olay türü inferred | |||
| UAT onaylandı | İş paydaşlarının kullanıcı kabul testinin ardından geliştirme öğesini resmen onayladığını belirtir. 'In UAT' durumundan 'Ready for Release' veya 'Approved' durumuna geçiş gibi bir durum değişikliğinden çıkarılan önemli bir kilometre taşıdır. | ||
| Neden önemli? Bir öğenin üretim ortamına dağıtım için onaylanmasından önceki son iş onayıdır. Önemli bir kalite ve yönetişim kontrol noktasıdır. Nereden alınır? UAT’nin başarıyla tamamlandığını gösteren geliştirme öğesi kaydındaki durum geçişinden çıkarılır. Öğenin etkinlik geçmişine kaydedilir. Kaydedin 'UAT' durumundan onaylanmış veya sürüme hazır bir duruma geçişten çıkarılır. Olay türü inferred | |||
| Üretim ortamına dağıtıldı | Bu olay, üretim ortamına dağıtımın başarıyla tamamlandığını belirtir. CI/CD aracı işlem hattının başarıyla tamamlandığını bildirdiğinde ServiceNow DevOps tarafından açıkça kaydedilir. | ||
| Neden önemli? Bu, SDLC sürecinin temel başarı bitiş noktasıdır. Değer akışını tamamlar ve toplam çevrim süresini hesaplamak için gereklidir. Nereden alınır? Pipeline Execution [sn_devops_pipeline_execution] kaydındaki 'completion_status' alanından veya ilişkili Stage Execution Run kaydından alınır. Bitiş zamanındaki 'Success' durumu bu olayı belirtir. Kaydedin Üretim ortamına dağıtım işlem hattı başarıyla tamamlandığında kaydedilir. Olay türü explicit | |||
| Derleme tetiklendi | Bu olay, genellikle bir kod commitinin tetiklediği CI/CD işlem hattı derlemesinin başladığını belirtir. ServiceNow DevOps bunu bir işlem hattı yürütmesi olarak kaydeder ve başlangıçtaki geliştirme öğeleriyle ilişkilendirir. | ||
| Neden önemli? Bu etkinlik, geliştirme ile otomatik test veya dağıtım arasındaki bağlantıyı kurar. Commit ile derlemenin başlaması arasındaki süreyi analiz etmek, CI/CD sürecindeki gecikmeleri ortaya çıkarabilir. Nereden alınır? Entegre CI/CD aracında (ör. Jenkins, Azure DevOps) derleme başladığında Pipeline Execution [sn_devops_pipeline_execution] tablosuna açıkça kaydedilir. Kaydedin Pipeline Execution tablosundaki kaydın başlangıç zamanından alınır. Olay türü explicit | |||
| Geliştirme öğesi iptal edildi | Bir geliştirme öğesinin tamamlanmadan sonlandırıldığını belirtir. Bu alternatif bitiş durumu genellikle öğenin durumunun 'Cancelled' veya 'Closed Incomplete' olarak ayarlanmasından çıkarılır. | ||
| Neden önemli? İptalleri izlemek, boşa harcanan emeği belirlemeye ve kapsam değişikliklerinin ya da önceliklerin yeniden belirlenmesinin nedenlerini anlamaya yardımcı olur. Sürecin olası tüm sonuçlarını daha eksiksiz biçimde gösterir. Nereden alınır? Geliştirme öğesi kaydındaki 'State' alanının 'Cancelled' gibi tamamlanmamış bir son duruma güncellendiği zaman damgasından çıkarılır. Kaydedin 'Cancelled' veya eşdeğer bir son duruma geçişten çıkarılır. Olay türü inferred | |||
| Kod commit edildi | Bir geliştiricinin, geliştirme öğesine bağlı sürüm kontrol sistemi deposuna kod commit etmesini belirtir. ServiceNow DevOps, bu olayları Git veya GitHub gibi entegre SCM araçlarından açıkça kaydeder. | ||
| Neden önemli? Commitleri izlemek, geliştirme ilerlemesi ve etkinlik sıklığı hakkında ayrıntılı görünürlük sağlar. Belirli kod değişikliklerini üst geliştirme öğesiyle ilişkilendirmeye yardımcı olur. Nereden alınır? Entegre kaynak kodu yönetim sisteminden gelen webhooklarla doldurulan ServiceNow DevOps Commits [sn_devops_commit] tablosuna açık bir olay olarak kaydedilir. Kaydedin SCM aracından commit webhooku alındığında kaydedilir. Olay türü explicit | |||
| QA testi başladı | Resmî kalite güvence test aşamasının başlangıcını belirtir. Neredeyse her zaman geliştirme öğesinin durumunun 'In QA', 'Testing' veya 'Ready for Test' gibi bir değere değişmesinden çıkarılır. | ||
| Neden önemli? Bu etkinlik, geliştirme ekibinden QA ekibine devir teslimi gösterir. Test aşamasının süresini ölçmenizi ve test kapasitesindeki darboğazları belirlemenizi sağlar. Nereden alınır? Geliştirme öğesi kaydındaki (ör. Story, Defect) 'State' alanının QA’ya özgü bir duruma güncellendiği zaman damgasından çıkarılır. Kaydedin 'Testing' veya eşdeğer bir duruma geçişin zaman damgasına dayanır. Olay türü inferred | |||
| Sürüm için hazırlandı | Bu etkinlik, geliştirme öğesinin tüm kalite kontrollerini geçtiğini ve belirli bir sürüme eklendiğini belirtir. Öğe bir Release kaydıyla ilişkilendirildiğinde veya durumu 'Ready for Deployment' olarak değiştiğinde bu sonuç çıkarılabilir. | ||
| Neden önemli? Bu adım, öğenin teknik ve işlevsel açıdan tamamlandığını gösterir. Bu durumda geçirilen süre, planlanan dağıtım aralığı öncesindeki kuyrukta bekleme süresini yansıtabilir. Nereden alınır? 'State' alanının 'Ready for Release' olarak değişmesinden veya geliştirme öğesi kaydındaki 'Release' alanının doldurulduğu ya da güncellendiği zamanın izlenmesinden çıkarılır. Kaydedin Durum değişikliğinden veya bir Release kaydıyla ilişkilendirilmesinden çıkarılır. Olay türü inferred | |||
| Tasarım başladı | Geliştirme öğesinin teknik tasarımının veya çözüm mimarisinin oluşturulduğu aşamayı belirtir. Bu aşama genellikle geliştirme öğesi kaydındaki durum alanının 'Design' veya 'Solutioning' gibi bir değere değişmesinden çıkarılır. | ||
| Neden önemli? Tasarım aşamasının süresini analiz ederek geliştirme çalışmaları başlamadan önce gereksinimlerin çözüme dönüştürülmesindeki ve çözüm planlamasındaki darboğazları belirleyebilirsiniz. Nereden alınır? Geliştirme öğesi kaydındaki durum geçişlerinden çıkarılır (ör. Story [rm_story]). 'State' veya özel bir 'Stage' alanının tasarımla ilgili bir değere değişip değişmediğini kontrol edin. Kaydedin 'Design' veya benzer bir duruma geçişten çıkarılır. Olay türü inferred | |||
| UAT başladı | İş paydaşlarının işlevselliği doğruladığı kullanıcı kabul testinin başlangıcını belirtir. Bu olay, durumun 'UAT', 'In UAT' veya 'User Acceptance Testing' olarak değişmesinden çıkarılır. | ||
| Neden önemli? Geliştirilen özelliğin iş gereksinimlerini karşıladığından emin olmak için bu aşama önemlidir. Süresini analiz ederek kullanıcı katılımıyla veya gereksinim uyumsuzluklarıyla ilgili sorunları ortaya çıkarabilirsiniz. Nereden alınır? Geliştirme öğesi kaydındaki durum geçişinden çıkarılır. Bunun için müşterinin durum modelinde UAT’ye özgü ayrı bir durum bulunmalıdır. Kaydedin 'UAT' durumuna geçişten çıkarılır. Olay türü inferred | |||
| Üretim ortamına dağıtım başladı | Bu etkinlik, üretim ortamına dağıtım işlem hattının başlatıldığını belirtir. CI/CD işlem hattının üretim aşaması yürütülmeye başladığında ServiceNow DevOps bunu açık bir olay olarak kaydeder. | ||
| Neden önemli? Bu, yaşam döngüsünün son ve çoğu zaman en önemli aşamasının başlangıcını gösterir. Bu aşamayı izlemek, dağıtım sürelerini analiz etmeye ve otomasyon fırsatlarını belirlemeye yardımcı olur. Nereden alınır? Üretim ortamıyla ilgili aşamalar filtrelenerek Stage Execution Run [sn_devops_stage_execution] tablosuna açıkça kaydedilir. Kaydedin Pipeline Execution içindeki üretim dağıtım aşamasının başlangıç zamanından alınır. Olay türü explicit | |||
| Yeniden çalışma belirlendi | Test sırasında bir sorun bulunduğunu ve öğenin geliştirme ekibine geri gönderilmesi gerektiğini belirtir. Süreç akışındaki geriye doğru bir hareketten, örneğin durumun 'In QA' değerinden yeniden 'In Progress' değerine geçmesinden çıkarılır. | ||
| Neden önemli? Yeniden çalışmayı izlemek, kalite sorunlarını ve süreç verimsizliklerini anlamak için gereklidir. Bu etkinliğin sık görülmesi, geliştirme veya gereksinimlerin açıklığıyla ilgili sorunlara işaret eder. Nereden alınır? sys_audit veya sys_history_line tablolarındaki 'State' alanı geçmişi incelenerek çıkarılır. Daha ileri bir aşama durumundan (ör. 'Testing') önceki bir duruma (ör. 'In Progress') geçiş, yeniden çalışma olduğunu gösterir. Kaydedin Geriye doğru durum geçişinden çıkarılır; ör. 'Testing' -> 'In Progress'. Olay türü inferred | |||
Veri çıkarma rehberleri
Adımlar
- Durum modelinizi anlayın: Rapor oluşturmadan önce, gerekli etkinliklere karşılık gelen geliştirme öğesi durum alanındaki değerleri belgeleyin (ör. Story
[rm_story]veya Defect[rm_defect]tablosunda). Örneğin, 'In Progress' durum değeri 'Development Started' etkinliğine karşılık gelebilir. - Rapor oluşturma sayfasına gidin: ServiceNow örneğinizde oturum açın. Filtre gezgininde
Reports > View / Runyolunu izleyin veCreate a reportdüğmesine tıklayın. - Durum değişiklikleri için rapor oluşturun: Durum değişikliklerine bağlı etkinlikleri kaydetmek üzere ilk raporu oluşturun. Şu şekilde yapılandırın:
- Rapor adı:
ProcessMind - State Change Events - Kaynak türü:
Table - Tablo:
Audit [sys_audit] - Tür:
List - Sütunları yapılandırın:
Document key,Created on,Table name,Field name,Old valueveNew valuealanlarını ekleyin. - Filtre:
Table namealanını geliştirme öğesi tablolarınızdan biri (ör.Story) olacak şekilde,Field namealanını da durum alanınız (ör.State) olacak şekilde ayarlayın. İstenen dönem içinCreated onalanına tarih filtresi ekleyin.
- Rapor adı:
- Öğe oluşturma raporu oluşturun: İlk oluşturma etkinliği için yeni bir rapor oluşturun.
- Rapor adı:
ProcessMind - Item Creation Events - Kaynak türü:
Table - Tablo:
Story [rm_story](veya birincil geliştirme öğesi tablonuz) - Tür:
List - Sütunları yapılandırın:
Sayı,Created on,Assigned to,Priority,Stategibi gerekli özniteliklerin sütunlarını ekleyin. - Filtre:
Created onalanına tarih filtresi uygulayın.
- Rapor adı:
- Kod commit’leri için rapor oluşturun: Commit’lerle ilgili açık DevOps etkinliklerini kaydetmek üzere bir rapor oluşturun.
- Rapor adı:
ProcessMind - Commit Events - Kaynak türü:
Table - Tablo:
Commit [sn_devops_commit] - Tür:
List - Sütunları yapılandırın:
Work item,Commit time,Authorgibi sütunları ekleyin. - Filtre:
Commit timealanına tarih filtresi uygulayın.
- Rapor adı:
- Derleme ve dağıtım raporları oluşturun: Önceki adımdaki işlemleri
Build [sn_devops_build]veDeployment [sn_devops_deployment]tabloları için tekrarlayın. Bu tablolardaBuild Triggered,Deployment to Production Started,Deployed to ProductionveDeployment Failedetkinliklerinin kayıtları bulunur. - Tüm raporları dışa aktarın: Oluşturduğunuz raporları tek tek çalıştırın. Her raporda bağlam menüsü simgesine (üç nokta veya aşağı ok) tıklayın ve
Export > CSVya daExport > Excelseçeneğini belirleyin. Tüm dosyaları kaydedin. - Verileri birleştirin ve dönüştürün: Dışa aktarılan dosyaları bir elektronik tablo programında açın veya veri hazırlama aracı kullanın. Tüm dosyalardaki verileri tek bir sayfada elle birleştirin. Gerekli Event Log sütunlarını (
DevelopmentItem,ActivityName,EventTimevb.) oluşturun ve kaynak sütunlardaki verileri eşleyin. Örneğin, denetim raporundakiDocument keyve Story raporundakiSayıdeğerleriniDevelopmentItemsütununa eşleyin. - Etkinlik adlarını eşleyin: Kaynak verileri dönüştürerek
ActivityNamesütununu oluşturun. Durum değişikliği raporunda,New valuedeğerlerini etkinlik adlarıyla eşlemek için belgelediğiniz durum modelini kullanın (ör. 'Testing' durumunu 'QA Testing Started' ile eşleyin). Diğer raporlarda her satıra sabit bir etkinlik adı atayın (ör. commit dışa aktarımındaki tüm satırlara 'Code Committed' adını verin). - Son düzenlemeleri yapıp kaydedin: Tüm satırlara sabit değerler içeren
SourceSystemveLastDataUpdatesütunlarını ekleyin. Tüm zaman damgalarının aynı biçimde olduğundan emin olun. Birleştirilmiş son dosyayı tek bir CSV olarak kaydedin. Dosya artık ProcessMind’e yüklenmeye hazırdır.
Yapılandırma
- Gerekli tablolar: Bu veri çıkarma işlemi için gereken temel tablolar, çıkarımla belirlenen etkinlikler için
Audit [sys_audit], kullandığınız geliştirme öğesi tabloları (ör.Story [rm_story],Defect [rm_defect]) ve temel ServiceNow DevOps tabloları olanCommit [sn_devops_commit],Build [sn_devops_build]veDeployment [sn_devops_deployment]tablolarıdır. - Temel filtreler: En önemli filtre,
Created on,Commit timeveyaBaşlangıç zamanıgibi bir zaman damgası alanına göre belirlenen tarih aralığıdır. Bu filtre tüm raporlara tutarlı biçimde uygulanmalıdır.sys_auditraporunda, verileri yalnızca ilgili durum değişiklikleriyle sınırlamak içinTable name(ör.rm_story) veField name(ör.state) alanlarına göre filtreleme yapmak önemlidir. - Tarih aralığı önerisi: Performans sorunlarına yol açmadan temsili bir veri seti elde etmek için 3 ila 6 aylık verileri çıkarmanız önerilir. Büyük sistemlerde verileri aylık gruplar halinde çıkarmayı değerlendirin.
- Durum modelini tanımlama: Kuruluşunuzun iş öğesi durum modelini açıkça anlamanız gerekir.
sys_audittablosunda kaydedilen durum değerlerini 'QA Testing Started' veya 'UAT Approved' gibi ilgili iş etkinlikleriyle doğru biçimde eşlemek için bu bilgi gereklidir. - Ön koşullar: Veri çıkarma işlemini yapacak kullanıcıların rapor oluşturup çalıştırmak için
report_userrolüne veya eşdeğer izinlere sahip olması gerekir. Ayrıca yukarıda belirtilen DevOps ve uygulama geliştirme tablolarına okuma erişimleri olmalıdır. ServiceNow DevOps eklentisi yüklenmiş ve SCM ile CI/CD araçlarınıza etkin biçimde entegre edilmiş olmalıdır.
Örnek sorgu 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.
--- Adımlar
- Ön koşullar: ServiceNow örneğinize ağ erişiminiz olduğundan ve size okuma izinlerine sahip özel bir hizmet hesabı verildiğinden emin olun (
itilvesn_devops.viewerrolleri iyi bir başlangıçtır). Bu kullanıcınınrm_story,sys_auditgibi tablolara vesn_devops_*şemasına erişebilmesi gerekir. - ServiceNow ODBC sürücüsünü yükleyin: İşletim sisteminize uygun ServiceNow ODBC sürücüsünü ServiceNow destek portalından indirin. Verilen yükleme yönergelerini izleyin.
- DSN’yi yapılandırın: Sorguyu çalıştıracağınız makinede yeni bir System DSN (Data Source Name) oluşturun. ODBC Data Source Administrator’da ServiceNow sürücüsünü ekleyin ve örnek URL’nizi (ör.
yourinstance.service-now.com), kullanıcı adınızı ve parolanızı girerek yapılandırın. - SQL istemcisiyle bağlanın: Yapılandırdığınız DSN’yi kullanarak ServiceNow’a bağlanmak için DBeaver veya Microsoft SQL Server Management Studio (bağlı sunucu kullanarak) gibi bir SQL istemcisi ya da ODBC kitaplığıyla Python gibi bir betik dili kullanın.
- Durum modelini belirleyin: Sorguyu çalıştırmadan önce, geliştirme öğesi tablolarınızdaki (ör.
rm_story,rm_defect)statealanı için kuruluşunuzun kullandığı değerleri tam olarak belirleyin. Verilen sorguda 'In Progress' veya 'In QA' gibi yaygın örnekler kullanılır. Bunları kendi değerlerinizle değiştirmeniz gerekir. - SQL sorgusunu özelleştirin: Verilen SQL sorgusunu istemcinize kopyalayın. Sorgunun başındaki yer tutucuları, veri çıkarma başlangıç tarihi ve geliştirme yaşam döngüsü etkinliklerinize karşılık gelen durum değerleri dâhil olmak üzere düzenleyin.
- Sorguyu çalıştırın: SQL sorgusunun tamamını ODBC bağlantısı üzerinden ServiceNow veritabanında çalıştırın. Tarih aralığına ve veri miktarına bağlı olarak bu işlem uzun sürebilir.
- Verileri gözden geçirin: Sorgu tamamlandığında dönen veri setini kısaca inceleyin. Çeşitli etkinliklerin yer aldığını ve
DevelopmentItem,ActivityNameveEventTimegibi temel sütunların beklendiği şekilde doldurulduğunu kontrol edin. - CSV olarak dışa aktarın: Sonuç kümesinin tamamını CSV dosyasına aktarın. Dosyanın UTF-8 kodlamalı olduğundan ve sütun başlıklarının ProcessMind’in gerektirdiği öznitelik adlarıyla, örneğin
DevelopmentItem,ActivityNameveEventTimeile eşleştiğinden emin olun. - Yüklemeye hazırlayın: Son CSV dosyasının sonunda boş satır bulunmadığından ve
EventTimeileLastDataUpdatealanlarındaki tarih biçiminin tutarlı ve ProcessMind tarafından desteklendiğinden emin olun (ör.YYYY-MM-DD HH:MM:SS).
Yapılandırma
- Ön koşullar: DevOps modülü etkinleştirilmiş bir ServiceNow örneğine erişiminiz olmalıdır. Gerekli tablolara okuma izni olan özel bir kullanıcı hesabı gerekir. ServiceNow ODBC sürücüsü istemci makinesine yüklenmiş ve yapılandırılmış olmalıdır.
- ODBC sürücüsünü yapılandırma: Bağlantı için örnek URL’si, kullanıcı adı ve parola ya da OAuth belirteci gerekir. Karmaşık sorguları çalıştırmadan önce DSN bağlantısını test etmeniz önemlidir.
- Tarih aralığı filtresi: Verilen sorguda, çıkarılacak veri miktarını sınırlamak için
s.sys_created_on >= '2023-01-01'yer tutucusu bulunur. Sorgu süresini yönetilebilir tutmak için son 6 ila 12 ay gibi belirli bir döneme ait verileri çıkarmanız önemle önerilir. - Durum modelini özelleştirme: Çıkarımla belirlenen etkinlikler için sorgunun doğruluğu tamamen durum modeline bağlıdır. Yer tutucu durum değerlerini (ör.
[Your 'In Progress' State Value],[Your 'In QA' State Value]) ServiceNow yapılandırmanızda kullanılan değerlerle tam olarak değiştirin. Bu değerler büyük küçük harfe duyarlıdır. - İş öğesi tabloları: Sorgu, Story tablosu (
rm_story) için yazılmıştır. Kuruluşunuz Defect (rm_defect), Enhancement (rm_enhancement) veya başka görev türlerini de kullanıyorsa bunları başlangıçtakiDevItemsCommon Table Expression (CTE) bölümüneUNION ALLkullanarak eklemeniz gerekir. - Performans: Üretim ortamındaki ServiceNow örneğine doğrudan sorgu göndermek performansı etkileyebilir. Büyük veri çıkarma işlemlerini yoğun olmayan saatlerde çalıştırmanız önerilir. Çok büyük veri setlerinde
sys_updated_onalanına dayalı artımlı veri çıkarma yöntemini değerlendirin.
Örnek sorgu 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 *** Başlamaya hazır mısınız?
Yazılım geliştirme yaşam döngünüzü bugün iyileştirmeye başlayın. Gizli verimsizlikleri ortaya çıkarmak ve sürekli iyileştirme sağlamak için bu veri şablonunu kullanın.
Beklemeyin: Yazılım geliştirme yaşam döngünüzü bugün iyileştirin
Verimsizlikleri belirleyerek SDLC çevrim sürenizi %30 veya daha fazla kısaltın.
Kredi kartı gerekmez, iyileştirmeye bugün başlayın