אינטליגנציית מודרניזציה של COBOL

אנו בונים את מפת בסיס הקוד שלכם לפני שנוגעים ולו בשורה אחת.

רוב פרויקטי המודרניזציה נכשלים כי הכלים קוראים קוד כטקסט, לא כטופולוגיה. CodeGraph מפענח את נכס המיינפריים שלכם לגרף ידע מוטה-טיפוסים ופותר את הסגירה הטרנזיטיבית המלאה של תלויות של שינוי, על פני copybooks, REDEFINES, COMP-3, DB2 ו-JCL, עם מקור file:line לכל קשת והוכחה כמה הצליח לפתור. המפה היא המוצר. תרגום הוא תרחיש שימוש במורד הזרם.

9/9 מול 3/9

תלויות ששוחזרו: גרף מול חלון קובץ בודד

על מתקן TRN-LIMIT, מול סט אמת-ייחוס ידוע

97.1%

הפניות שפוענחו (33 of 34), 1 מסומן לבדיקה

שער שלמות דטרמיניסטי, אותה תוצאה בכל הרצה

47 / 70

צמתים וקשתות על פני 7 סוגי צמתים

מתקן הבנק הסינתטי שסופק

זו הדגמה ניתנת-להרצה. הנכס סינתטי ונכתב עבור ההדגמה, הגרף בזיכרון יחד עם SQLite, ותצוגות DB2, JCL והקובץ-הבודד הנאיבי הן קבצי מתקן וסימולציות, לא מחברים חיים.

מודרניזציה נכשלת בהבנה, לא בתרגום

אופן הכשל הוא עיוורון הקשרי, ומודל גדול יותר אינו מסיר אותו.

70 to 80% מפרויקטי מודרניזציית מיינפריים אינם עומדים ביעדיהם (מטא-אנליזה תעשייתית, 2025). לא כי התרגום שגוי, אלא כי הכלים מתייחסים לקוד כטקסט במקום כטופולוגיה. מתרגם מדף קורא את הקובץ האחד שהוא רואה. העובדה שבאמת חשובה בלתי נראית בחלון הקשר של קובץ בודד.

הסיכונים אינם אקדמיים. כ-220 billion שורות COBOL עדיין רצות בייצור, ונושאות כ-95% מעסקאות הכספומט, 43% ממערכות הבנקאות, ו-3 trillion דולר של פעילות ביום (Reuters, 2017), מול הערכת 1.52 trillion דולר של חוב טכני מצטבר בארה״ב (CISQ, 2022). זהו ליבת מחסנית הבנקאות והביטוח, וזה בדיוק הקוד שאף אחד לא רוצה לגעת בו בעיניים עצומות.

המשל המוחשי הוא תוכנית העברה בנקאית שמחשבת על שדה בשם TRN-LIMIT. בקובץ האחד שמתרגם יכול לראות, החשבון נראה טריוויאלי. אבל TRN-LIMIT הוא COMP-3 packed decimal המוגדר שלושה copybooks משם, הפרשנות שלו נבחרת על ידי דגל שמוגדר בתוכנית אחרת, ואת הדגל כותבת עבודת אצווה JCL בשעה 2 לפנות בוקר שרצה לפני עבודת ההעברה. כשמקבלים רק את העובדות הנראות, מודל פולט long פשוט, ה-Java מתקמפל, עובר בדיקות יחידה, ואז משחית את מסד הנתונים בהעברה החיה הראשונה. כשל שלמות-ההפניות הזה מתגלה ב-UAT. הכשל היה עיוורון הקשרי.

זה אינו מתיישן ככל שהמודלים משתפרים. נכס אמיתי הוא 1 to 10 million שורות או יותר ואינו נכנס לשום חלון הקשר, בהווה או בעתיד. החלק הקשה הוא לאחזר את הפרוסה הטרנזיטיבית המדויקת ששינוי נוגע בה ולהוכיח שמצאתם את כולה. זו בעיית טופולוגיה, אחזור וראיות, לא בעיית איכות-הסקה. סוכנים מייעצים, הקוד מחליט.

כיצד CodeGraph עובד

פענחו את הנכס לגרף מוטה-טיפוסים, ואז הריצו ניתוחים דטרמיניסטיים. אף LLM אינו יושב בנתיב הקריטי.

הצינור מריץ נכס מתקן, אחר כך פענוח (COBOL, copybooks, JCL, DB2 DDL), אחר כך בניית גרף ידע מוטה-טיפוסים, אחר כך השפעת סגירה טרנזיטיבית פלוס מקור, אחר כך הניתוחים הדטרמיניסטיים, אחר כך ייצוא ביקורת וראיות, אחר כך לוח הבקרה האינטראקטיבי. בטעינה האפליקציה מריצה זאת בשידור חי על Server-Sent Events, כך שכל שלב מקריין עם ההשהיה הנמדדת האמיתית שלו בקונסולה, הפאנלים מתמלאים בהדרגה, ומסילת שלבים קבועה מאפשרת לפתוח את עקבות הקלט, העיבוד והפלט של כל שלב. פקד יחיד מנגן מחדש את כל ההרצה.

ממשק CodeGraph מריץ את צינור הניתוח החי שלו על התוכנית WIRETXN, עם השהיה לכל שלב המוצגת בקונסולה: סריקה, פענוח, בניית גרף, סגירת השפעה, שחזור עובדות, ותכנון וביקורת.
הצינור החי: סריקה, פענוח, בניית גרף, סגירת השפעה, שחזור עובדות, ותכנון וביקורת, כל שלב עם ההשהיה הנמדדת האמיתית שלו.

גרף הידע המוטה-טיפוסים

בנוי עם networkx ומוחזק בזיכרון יחד עם SQLite, לגרף שבעה סוגי צמתים (program, copybook, variable, table, jcl, dataset, ומציין-מקום לא מפוענח) וקשתות טיפוסיות כגון DEFINES, IMPORTS, REDEFINES, CONTROLS_TYPE_OF, WRITES_VAR, REFERENCES, CALLS, READS ו-WRITES, EXECUTES, USES_DATASET ו-PRECEDES. במתקן שסופק לגרף 47 צמתים ו-70 קשתות: 14 programs, 5 copybooks, 17 variables, 3 טבלאות DB2, 3 עבודות JCL, 4 datasets, ו-1 צומת לא מפוענח.

ארבעה ניתוחים דטרמיניסטיים

אלה אלגוריתמי גרף פשוטים, לא קריאות למודל, כך שאותו מתקן מניב אותה תוצאה בכל הרצה.

1. סגירת השפעה עם מקור

פרוסת התלויות הטרנזיטיבית של שינוי, כשכל קשת נושאת את מקור file:line שלה, כך שניתן לראות לא רק מה מושפע אלא היכן חיה הראיה.

2. recall נאיבי מול גרף

סגירת הגרף מנוקדת מול סט התלויות באמת-הייחוס הידועה של המתקן, מול חלון קובץ בודד מדומה, שהוא מה שכלי מבוסס-טקסט באמת מאכיל למודל.

3. רצף חילוץ

ציון צימוד ורדיוס-פיצוץ לכל תוכנית (צימוד משוקלל שלוש, מלכודות COMP-3 משוקללות שתיים, קריטיות JCL משוקללת שתיים, קריאות לא מפוענחות משוקללות חמש) שמדרג סדר הגירת strangler-fig בטוח.

4. נגישות קוד-מת ושער שלמות

כל הפניית PERFORM, CALL, COPY ו-DB2 חייבת להתפענח או להיות מסומנת כדורשת בדיקה, לעולם לא להיות מושמטת בשקט. פסקאות בלתי-נגישות מדווחות כהמחשה, לא מנוקדות כמדד כותרת.

מתג אחד הופך את ההבדל למוחשי. סמנו את תצוגת ההקשר הנאיבית של AI והגרף מתעמעם לקובץ המקור הבודד עם כמה שורות הקשר. שש מתוך תשע עובדות ההעברה הבנקאית נעלמות, באנר אדום מציין את התוצאה, וההיפוך חזרה משחזר 9/9 עם קבלות. המתג הוא המחשה של איזה הקשר שכבת האחזור חייבת לספק, לא מקור הערך.

כשמסיימים, ייצוא JSON כותב קובץ migration-evidence.json, ודוח ראיות מייצר דוח Codebase Topology and Completeness Report להדפסה: סיכום הצמתים והקשתות, סגירות לכל מודול עם מקור file:line, תוצאת ה-recall והשיטה, רצף החילוץ המדורג, רשימת הקוד המת, וחותמת זמן. אנו ממקמים זאת כמלאי נכסי ICT של DORA וכתקבלה של בקרת-שינויים SOC-2. שכבת Pydantic-AI אופציונלית יכולה לענות על שאלות על הסגירה, אך היא כבויה כברירת מחדל ונעולה במפתח, וההדגמה הדטרמיניסטית מתעדת את התוצאה בלי כל מפתח.

סגירת ההעברה הבנקאית של TRN-LIMIT, מקצה לקצה

שינוי אחד בשדה אחד, מפוענח מול סט אמת-ייחוס ידוע. כל תמונה למטה היא צילום מסך של האפליקציה הרצה.

תשע עובדות, ושש שקובץ בודד אינו יכול לראות

תצוגת ברירת המחדל נוחתת על תת-מערכת ההעברה הבנקאית עם TRN-LIMIT נבחר. פאנל ההשפעה מציג שליפת גרף ב-9/9 (100%) מול הקשר קובץ-בודד נאיבי של 3/9 (33%), מנוקד מול סט התלויות באמת-הייחוס הידועה של המתקן. שלוש עובדות נראות בקובץ האחד: WIRETXN משתמש ב-TRN-LIMIT ב-COMPUTE (WIRETXN.cbl:33), copybook CBACCT מיובא בשם (WIRETXN.cbl:13), ו-UPDATE על טבלת DB2 ACCOUNTS מתרחש (WIRETXN.cbl:37). השש שמכריעות נכונות אינן: TRN-LIMIT הוא PIC S9(9)V99 COMP-3 packed decimal שחייב להפוך ל-BigDecimal ולא ל-long (CBACCT.cpy:11), TRN-LIMIT-ALPHA REDEFINES אותו כטקסט על אותם שישה בתים (CBACCT.cpy:12), LIMIT-TYPE-FLAG מחליט איזו פרשנות חיה (CBACCT.cpy:13), שתי תוכניות (LIMITSET ו-BATCHUPD) כותבות את הדגל, ועבודת JCL NIGHTLY ב-02:00 רצה לפני WIREJOB כך שהדגל מוגדר לפני שההעברה רצה.

פאנל ההשפעה של TRN-LIMIT: שליפת גרף 9/9 מול קובץ-בודד נאיבי 3/9, עם עובדות F1 עד F3 מסומנות כבתוך-הקובץ ו-F4 עד F9 מסומנות כמוסתרות וקריטיות או גבוהות, כל אחת נושאת מקור file:line.
שליפת גרף 9/9 מול קובץ-בודד נאיבי 3/9. שלוש העובדות הנראות הן בתוך-הקובץ; השש שמכריעות את הטיפוס מוסתרות מתצוגת קובץ בודד, כל אחת עם מקור file:line.

הפעימה המרכזית: עברו לחלון קובץ בודד וראו שש עובדות נעלמות

סמנו את תצוגת ההקשר הנאיבית של AI והגרף מתעמעם למה שחי בתוך WIRETXN.cbl. טיפוס ה-COMP-3, שכבת-העל REDEFINES, דגל הבקרה, שני הכותבים חוצי-המודולים שלו, והקודם ב-JCL ב-02:00 כולם מתאפרים, ובאנר אדום מציין את התוצאה: כשמקבלים רק את שלוש העובדות הנראות, מודל פולט TRN_LIMIT מסוג long פשוט וכותב בתים משובשים ל-ACCOUNTS.TRN_LIMIT, שזה כשל ה-UAT. זה בדיוק פער העיוורון ההקשרי שכלי חלון-טקסט אינו יכול לסגור מבנית, נעשה נראה בלחיצה אחת.

תצוגת ההקשר של קובץ בודד נאיבי: באנר אדום מסביר שרק 3 of 9 עובדות חיות בתוך WIRETXN.cbl, ועובדות F4 עד F9 מעומעמות, כולל טיפוס ה-COMP-3, שכבת-העל REDEFINES, דגל הבקרה, והקודם ב-JCL ב-02:00.
תצוגת הקובץ הבודד הנאיבית: שש עובדות מתעמעמות ובאנר אדום מציין את כשל הייצור הנובע. היפוך חזרה ו-9/9 חוזר עם קבלות.

סדר חילוץ בטוח, מדורג לפי רדיוס פיצוץ

תצוגת החילוץ מדרגת את כל 14 programs לפי ציון צימוד ורדיוס-פיצוץ. AUDITLOG הוא החילוץ הראשון הבטוח ב-rank 1 עם ציון סיכון 0 וצימוד אפס. WIRETXN יושב ב-rank 11 (risk 4, מלכודת COMP-3 אחת פלוס קריטיות JCL). DISPATCH ב-rank 12 (risk 5) בגלל CALL דינמי לא מפוענח, ותוכנית-האל ACCTMGR מחולצת אחרונה ב-rank 14 (coupling 5, risk 15). זה סדר strangler-fig שניתן להגן עליו, סיכון נמוך ביותר ראשון, צימוד גבוה ביותר אחרון.

טבלת רצף החילוץ המדרגת 14 programs לפי צימוד, מלכודות COMP-3, קריטיות JCL וציון סיכון, עם AUDITLOG ראשון ב-risk 0 ותוכנית-האל ACCTMGR אחרונה ב-risk 15, לצד תצוגת diff מורשת-למודרניזציה.
סדר ה-strangler-fig: AUDITLOG ראשון ב-risk 0, ACCTMGR אחרון ב-risk 15, עם הסיבה לכל דירוג מוצגת בעמודות הצימוד, המלכודות וה-JCL.

שער שלמות שמסמן מה שאינו יכול לפענח

לשונית הביקורת מדווחת על 97.1% מההפניות שפוענחו, שזה 33 of 34, עם בדיוק אחת מסומנת לבדיקה ולא מושמטת בשקט. זו CALL הדינמי WS-PROGNAME של DISPATCH, שמטרתו מחושבת בזמן ריצה (DISPATCH.cbl:15) ולכן לא ניתן לפענח אותה סטטית. הלשונית גם מפרטת קוד מת לפי נגישות: פסקת LEGACY-FORMAT של AUDITLOG ופסקת OLD-LIMIT-CHECK של WIRETXN אינן נגישות. הסירוב לזייף פענוח הוא ההתנהגות הישרה, וזו ההתנהגות שרגולטור רוצה לראות.

לשונית הביקורת מציגה 97.1% הפניות שפוענחו ו-1 מסומן לבדיקה, עם ה-CALL הדינמי WS-PROGNAME של DISPATCH מודגש כמסומן לא מושמט בשקט, ורשימת קוד-מת המציינת AUDITLOG LEGACY-FORMAT ו-WIRETXN OLD-LIMIT-CHECK.
97.1% פוענח, 1 מסומן. ה-CALL הדינמי שאינו ניתן לפענוח מסומן לבדיקה, לא מושמט, ורשימת הקוד המת מדווחת לצד.

פריט ביקורת שניתן לייצא

כל האמור לעיל מיוצא לדוח Codebase Topology and Completeness Report להדפסה: הסיכום של 47-node, 70-edge, הכיסוי 97.1%, תשע עובדות התלות של TRN-LIMIT עם נראות הקובץ-הבודד ומקור file:line, רצף החילוץ המדורג, וחותמת יצירה. מכיוון שהנכס סינתטי ונכתב, סט התלויות האמיתי ידוע מתוקף הבנייה, וזה מה שהופך את נתון ה-recall למדידה מתויגת שניתנת לשחזור ולא לטענה. אנו מייחסים 9/9, 3/9 ו-97.1% למתקן שסופק זה, לעולם לא כערבות עולם-פתוח על נכסי COBOL שרירותיים.

דוח Codebase Topology and Completeness Report להדפסה המציג 47 nodes, 70 edges, 97.1% הפניות שפוענחו, עובדות התלות F1 עד F9 של TRN-LIMIT עם נראות קובץ-בודד ומקור, ורצף חילוץ ה-strangler-fig.
דוח Codebase Topology and Completeness Report לייצוא: סיכום צמתים וקשתות, תשע עובדות התלות עם מקור, ורצף החילוץ המדורג, ממוקם כמלאי נכסי ICT של DORA.

חלון הקשר של קובץ בודד מול הגרף

אותו מתג שההדגמה משווה מולו, זה לצד זה, על מתקן ההעברה הבנקאית.

ממד חלון הקשר של קובץ בודד גרף הידע של CodeGraph
תלויות TRN-LIMIT ששוחזרו 3 of 9 9 of 9, מול סט אמת-ייחוס ידוע
טיפוס COMP-3 על פני copybooks בלתי נראה מפוענח עם מקור file:line
שכבת-על REDEFINES ודגל בקרה בלתי נראה מפוענח, כולל כותבים חוצי-מודולים
קשת סדר של JCL בלבד (NIGHTLY before WIREJOB) בלתי נראה ממודל כקשת PRECEDES
הוכחת שלמות אין 97.1% מפוענח, לא-מפוענח מסומן לבדיקה
סדר חילוץ בטוח אין מדורג לפי צימוד ורדיוס פיצוץ
פריט ביקורת אין דוח טופולוגיה ושלמות לייצוא

מה שההדגמה הזו אינה עושה

  • ✓ היא אינה מתרגמת COBOL ל-Java. CodeGraph הוא שכבת ההבנה, המפה. תרגום הוא תרחיש שימוש במורד הזרם שהיא במכוון אינה מבצעת.
  • ✓ היא אינה משתמשת במחברים חיים. הגרף בזיכרון יחד עם SQLite, קלטי DB2, JCL והמתזמן הם קבצי מתקן, ותצוגת הקובץ הבודד הנאיבית היא חלון הקשר מדומה. Neo4j או Memgraph הוא נתיב הייצור הנקוב, לא מסופק כאן.
  • ✓ היא אינה מציגה את הבנק, את התוכניות שלו, או מספרים כלשהם כבסיס-קוד של לקוח אמיתי. הנכס סינתטי ונכתב עבור ההדגמה הזו. אין חקר מקרה ואין תוצאת פריסה.
  • ✓ היא אינה טוענת לכיסוי מלא של דיאלקט IBM Enterprise COBOL. המפענח מכסה תת-קבוצה סינתטית מציאותית, לא כל דיאלקט, ALTER, או OCCURS DEPENDING ON, והוא אינו טוען שהוא מנצח מפענח של ספק כלשהו.
  • ✓ היא אינה מציגה 9/9, 3/9 או 97.1% כערבויות עולם-פתוח. אלה מדידות על מתקן ההעברה הבנקאית הסינתטי שסופק, שסט אמת-הייחוס שלו ידוע מתוקף הבנייה.
  • ✓ היא אינה נושאת לקוחות, חקרי מקרה, המלצות או נתוני ROI. אף אחד מאלה אינו קיים עדיין. זו הדגמה שמוכיחה את המנגנון.

שאלות שקונים באמת שואלים

האם זה מתרגם COBOL ל-Java?

לא. CodeGraph הוא שכבת ההבנה, לא מתרגם, והוא במכוון אינו מדביק COBOL ופולט Java. הוא בונה גרף תלויות מוטה-טיפוסים של הנכס שלכם ופותר את הפרוסה הטרנזיטיבית המדויקת ששינוי נוגע בה, עם מקור file:line והוכחת שלמות. תרגום הוא תרחיש שימוש במורד הזרם, וכל כלי תרגום עדיין זקוק למפה הזו כדי לדעת במה שינוי באמת נוגע.

האם חלון הקשר גדול יותר או מודל טוב יותר פשוט יפתרו זאת?

לא, וזו הנקודה העמידה. נכס אמיתי הוא 1 to 10 million שורות או יותר ואינו נכנס לשום חלון הקשר, בהווה או בעתיד. החלק הקשה הוא לאחזר את הפרוסה הטרנזיטיבית המדויקת ולהוכיח שמצאתם את כולה, שזו בעיית טופולוגיה, אחזור וראיות, לא בעיית איכות-הסקה. מודל מושלם עדיין אינו יכול להוכיח לרגולטור אילו תלויות אוחזרו, עדיין זקוק לסדר חילוץ בטוח, ועדיין חייב מלאי נכסי ICT.

איך מוכיחים שמצאתם כל תלות לביקורת?

שער השלמות דורש שכל הפניית PERFORM, CALL, COPY ו-DB2 תתפענח או תסומן לבדיקה, לעולם לא תושמט בשקט. במתקן שסופק זה 33 of 34 הפניות שפוענחו, שזה כיסוי 97.1%, עם ההפניה האחת שאינה ניתנת לפענוח מסומנת. ניתן לייצא דוח Codebase Topology and Completeness Report להדפסה עם סיכום הצמתים והקשתות, סגירות לכל מודול עם מקור file:line, תוצאת ה-recall והשיטה, רצף החילוץ המדורג, ורשימת הקוד המת, ממוקם כמלאי נכסי ICT של DORA וכתקבלה של בקרת-שינויים SOC-2.

מה קורה עם תלות שאי אפשר לפענח, כמו CALL דינמי?

היא מסומנת לבדיקה, לא מושמטת בשקט, והתנהגות הכנות הזו היא הנקודה. במתקן ההפניה האחת שאינה ניתנת לפענוח היא CALL הדינמי WS-PROGNAME של DISPATCH, שמטרתו מחושבת בזמן ריצה (DISPATCH.cbl:15), ולכן לא ניתן לפענח אותה סטטית. CodeGraph מתעד אותה כדורשת בדיקה ומדרג את DISPATCH ליד סוף סדר החילוץ הבטוח בדיוק מסיבה זו.

האם זה מתחבר למיינפריים, ל-DB2 או למתזמן z/OS שלנו?

לא בהדגמה הזו. הגרף בזיכרון יחד עם SQLite, וקלטי DB2, JCL והמתזמן הם קבצי מתקן, בעוד תצוגת הקובץ הבודד הנאיבית היא חלון הקשר מדומה. פריסת ייצור הייתה נוקבת פלטפורמת גרף כגון Neo4j או Memgraph וקוראת את הנכס האמיתי שלכם, אך דבר כאן אינו מרמז על צינור z/OS חי. ההדגמה מוכיחה את המנגנון על נכס סינתטי, לא פריסה.

במה זה שונה מ-IBM watsonx Code Assistant או משרשרת הכלים של SI גדול?

איננו טוענים שאנו מנצחים את המפענח של IBM או של אינטגרטור מערכות, ומפענח ההדגמה מכסה תת-קבוצה סינתטית מציאותית של COBOL, לא כל דיאלקט, ALTER, או OCCURS DEPENDING ON. ההבחנה היא בתוצר: גרף ידע ברמת המאגר פלוס הוכחת שלמות וסדר חילוץ בטוח, ולא תרגום לכל-קובץ. זו שכבת ההבנה שכל מאמץ תרגום צריך קודם, וזו השכבה שמודל בסיס טוב יותר אינו מסיר.

האם זה מוצר חי או הדגמה?

זו הדגמה ניתנת-להרצה שמוכיחה את המנגנון, לא צינור פרוס. נכס הבנק סינתטי ונכתב עבור ההדגמה הזו, כך שסט התלויות האמיתי ידוע מתוקף הבנייה, וזה מה שהופך את מדד ה-recall למדידה מתויגת שניתנת לשחזור ולא לטענה. הפענוח, הגרף, וכל ארבעת הניתוחים הם Python דטרמיניסטי פשוט (FastAPI פלוס networkx, ממשק Cytoscape.js) שרצים בלי מפתח API ובלי מסד נתונים. שכבת LLM אופציונלית לשאלות-ותשובות קיימת אך כבויה כברירת מחדל, והערך אינו תלוי בה.

מחקר טכני

המחקר מאחורי ההדגמה הזו — הארכיטקטורה, עיצוב האימות, ותכנית האב הארגונית.

מתכננים מודרניזציה של מיינפריים?

שכבת ההבנה היא החלק הקשה. אנו בונים את המפה קודם.

אם הצוות שלכם שוקל כיצד למודרן נכס COBOL בלי הפתעת UAT מתלות שאף אחד לא יכול היה לראות, נשמח באמת לשמוע איך אתם חושבים על כך. הבעיה היא כלל-תעשייתית וגם התשובות יהיו.

הערכת טופולוגיה

  • ✓ מיפוי לאן שינוי יכול להגיע על פני copybooks, DB2 ו-JCL
  • ✓ פענוח הסגירה הטרנזיטיבית עם מקור file:line
  • ✓ ניקוד recall של שליפת תלויות מול סט אמת-ייחוס
  • ✓ הפקת הוכחת השלמות שהמבקרים שלכם צריכים

בנו את המפה

  • ✓ גרף ידע מוטה-טיפוסים על הנכס האמיתי שלכם
  • ✓ שער שלמות שמסמן מה שאינו יכול לפענח
  • ✓ סדר חילוץ strangler-fig מדורג וניתן להגנה
  • ✓ דוח נכסי ICT של DORA ובקרת-שינויים SOC-2 לייצוא
רשתות חברתיות

פורסם גם ב