top of page
Clock Gears

הסבה טכנית

מעבר לסביבה טכנולוגית אחרת

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

מתודולוגיה, כלים, אוטומציה

הסבה טכנית, היא הסבה של רכיב תשתיתי אחד או יותר לתשתית אחרת תוך שינוי מינימאלי בלוגיקה העסקית. ניתן לחשוב על כך כסוג של "קומפילציה" שהתוצאה היא קוד (או הגדרות) בסביבה תשתיתית אחרת.
ההסבה יכולה להתבצע:

  • לבסיס הנתונים, למשל מבסיס נתונים של Mainframe כמו IMS, VSAM, IDMS ל-Oracle, DB2, SQL

  • לשפת התכנות, למשל מ-COBOL ל-C++, JAVA, Python

  • ל-User Interface, למשל ממסכים של Mainframe (מסכים ירוקים), מסכי VMS לסביבת דפדפן

  • לתוכניות הבקרה, למשל ל-JCL, CLIST, Scheduler, CL 

  • למערכת הפעלה, למשל מ-zOS או iOS ל-Windows, Unix, Linux

 

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

הסבה כזו יכולה לספק פתרון מְגַשֵר (לעיתים אף לטווחי זמן ארוכים יחסית) עד לבנייה (או הגירה) למערכת חדשה.

בהתאם לרכיב שמסבים, הגישור יכול להיות עבור תשתית פיזית (למשל סוג מחשב אחר), תשתית תוכנה (למשל DB אחר) או תשתית אנושית (למשל מעבר לטכנולוגיה בה יותר קל למצוא כ"א).

 

ניתוח מצב קיים

 

מורכבות ההסבה נגזרת, במידה רבה, מהשימוש בתכונות השונות שהתוכניות משתמשות בהן, והיקף ההסבה נגזר מכמות התוכניות שבשימוש.
כדי לאפשר להתמקד רק במה שצריך (תכונות, פונקציונאליות, תוכניות), אנחנו מתחילים בניתוח של התוכניות (ה-Source Code ב-COBOL למשל) ו-"נקודות ההתחלה".

נקודות ההתחלה, הם מקומות המפעילים תוכניות, למשל, CL, CLIST,  JCL, הגדרת טרנזקציות וכדומה - כלומר כל מקום המתחיל או מפעיל תוכנית.

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


מתחילים בהכנת רשימה של כל נקודות ההתחלה, למשל, כל ה-CL או כל ה-CLISTS ו ה-JCL שבשימוש. אם יש כלי מרכזי להרצת ג'ובים (Scheduler), אזי מתחילים מניתוח ההגדרות בכלי ומשם יוצרים את רשימת ה-JCL שבשימוש. בצורה דומה מנתחים את כל נקודות ההתחלה האפשריות האחרות.


התוצאה היא, רשימה של כל התוכניות ה-"ראשיות" שבשימוש. באמצעות כלי ייחודי, אנחנו מנתחים את ה-Source Code של כל תוכניות אלו, מזהים תוכניות נוספות הנקראות ע"י תוכניות אלו ובצורה דומה מנתחים גם אותן.


בהתאם לניתוח יוצרים רשימה של כל התוכניות שבשימוש (וגם אלו שלא בשימוש) ובנוסף, יוצרים עצי "קריאה" דו כיווניים: עץ של תוכניות קוראות (מהאבא לבנים) ועץ של תוכניות נקראות (מהבן לאבות).


לתוכניות שבשימוש נעשה ניתוח מעמיק:

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

  • לכל קובץ, מזהים את כל התוכניות הקוראות מקובץ זה ואת כל התוכניות המעדכנות קובץ זה

  • לכל קובץ שבשימוש מוציאים רשימה של כל סוגי הפעילויות וכל סוגי הפקודות המבוצעות על הקובץ.

  • בצורה דומה, לכל קובץ שבשימוש ע"י התוכנית מוציאים רשימה של כל סוגי הפעילויות וכל סוגי הפקודות המבוצעות על הקובץ.

  • תוכנת הניתוח מזהה גם מה ההתייחסות של התוכנית לשדות השונים שבקובץ, ובהתאם יוצרת מיפוי (Cross Reference או XREF) בין תוכניות לבין שדות של הקובץ: לכל קובץ שבשימוש תוכנית רשימה של השדות מהקובץ שהתוכנית מתייחסת אליהם, רשימת שדות שתוכנית מעדכנת בהם ערך ורשימת שדות שהתוכנית מאתחלת.
    תוכנת הניתוח יוצרת גם מיפוי הפוך, כלומר לכל שדה בכל קובץ, רשימה של כל התוכניות המתייחסות לשדה, רשימה של כל התוכניות המעדכנות את השדה ורשימה של כל התוכניות המאתחלות את השדה.

  • עבור כל תוכנית אלו סוגי גישה יש לכל קובץ, תוך התחשבות גם בתוכניות ורוטינות שהיא פונה אליהם. כלומר, אם תוכנית מסוימת ניגשת לקובץ מסוים או לשדה מסוים באמצעות רוטינה (ישירה או עקיפה) תוכנת הניתוח תזהה זאת, ובכך תסייע בקבלת החלטות "נבונות" לגבי ההסבה.

  • לכל תוכנית/רוטינה רשימה של כל התוכניות המפעילות אותה באופן ישיר או באופן עקיף 

להלן דוגמאות של כמה פלטים מהניתוח:

XREFX.gif

XREF

 

Cross Reference לשימוש בשדות מקבצים ע"י תוכניות.
אופציונאלית, ה-Xref יכול להיות מוגבל לקבצים מסויים או אף לשדות מסויימים בלבד.
ה-Xref יכול לבוא בשתי צורות: (i) רשימת כל השדות שתכנית מתייחסת אליהם ; (ii) רשימת כל התוכניות התייחסות לשדה מסויים.
הניתוח מזהה גם את צורת השימוש בשדה: האם הוא read Only או האם מעדכנים ערך שדה זה ומה צורת העדכון: ערך קבוע (כלומר Initializing) או עדכון ערך שאינו קבוע.

Call List


רשימת קריאות של תוכניות: (i) רשימה של כל התוכניות/רוטינות הנקראות ע"י תוכנית מסויימת ; (ii) רשימת כל התוכניות הקוראות לתוכנית/רוטינה מסויימת.
ה-Call List יכול לכלול קריאות ישירות בלבד, או גם קריאות עקיפות, למשל, אם תוכנית A קוראת ל-B ול-C ו-B קורא ל-C ו-C ל-D אזי ברשימת הקריאות הישירות יופיע כי A קוראת ל B ול-C בלבד וברשימת הקריאות העקיפות יופיע ש A קוראת ל-B, C ו-D.
בצורה דומה ברשימה ההפוכה הישירה יופי כי D מופעלת רק ע"י C ובקריאות העקיפות יופיע כי D יכולה להיות מופעלת ע"י A ו-C.

CallingTree.gif

Calling Tree

עץ קריאות של תוכניות קוראות או תוכיות נקראות.
.

Line Out

 

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

XREF עבור Copy Books
 

רשימת כל התוכניות המשתמשות ב-Copy Book מסוים. 

קביעת חוקי ההסבה


תוצאות הניתוח משמשות להגדרת צורת ההסבה וחוקי ההסבה של הרכיבים השונים (Cookbooks).

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

רוב הכללים ב-Cookbook מבוצעים באופן אוטומטי ע"י תוכנת ההסבה הייחודית שלנו.

עם זאת בחלק מהמקרים יש צורך בהשלמה ידנית (בדרך כלל למקרי קצה שהעלות/תועלת במיכון שלהם לא כדאי). הניתוח מאפשר לקבל החלטות מושכלות של מה לבצע באופן אוטומטי ומה באופן ידני.

דוגמאות לאפשרויות הסבה 

הסבת בסיס נתונים

העברת בסיס נתונים מטכנולוגיה ישנה (כגון, IMS, IDMS, VSAM) ל-DB טבלאי (Oracle, DB2, SQL וכדומה).
הסבת ה-DB יכולה להיות עם הגירה מסביבת בסיס הנתונים (למשל מסביבת Mainframe) לסביבה אחרת (כגון Windows או Linux) או שהיא יכולה להיות ל-DB טבלאי הנתמך בסביבה הקיימת.


להלן מספר נקודות לגבי הסבה זו

  • בהתאם לבסיס הנתונים החדש שנבחר, יוצרים "Cookbook" המגדיר את צורת ההסבה של כל סוג קובץ קיים לבסיס הנתונים החדש.

  • ה-"Cookbook" מגדיר עבור כל קובץ ועבור כל שדה בקובץ אלו טבלאות ואלו שדות (attributes) יש להגדיר בבסיס הנתונים החדש, אלו שדות עזר נדרשים להחלפת הפונקציונאליות הייחודית של בסיס הנתונים הישן ואיך לבצע את ההסבה (הטכנית) מבסיס הנתונים הישן לחדש.

  • ה-"Cookbook" גם מגדיר את פקודות הגישה לבסיס הנתונים החדש שיחליפו בתוכניות כל פקודת גישה לבסיס הנתונים הישן. 

  • תוצאות ניתוח הקוד (תואר לעיל) מאפשרות הגדרה והסבה של "רק מה שצריך".

  • תוכנה ייעודית מבצעת באופן אוטומטי את השינויים ב-Source Code להחלפה של קוד הגישה לבסיס הנתונים הישן לקוד גישה לבסיס הנתונים החדש

 

הסבת שפת התכנות
כל פקודה ב-Source Code במערכת מוסב לקוד בשפת היעד. לתוכנת ההסבה יכולת ליצירה של קוד לא בהכרח באופן סדרתי, במידה רבה מזכיר צורת כתיבה אנושית.

הפלט יהיה קוד בשפת התכנות אליה מהגרים, כשבמקרה הצורך יכלול גם את ההנחיות הנדרשות להשלמה ידנית של ההסבה.
ההסבה יכולה להתבצע לקוד שירוץ בסביבה חדשה (למשל Windows או Linux) או בסביבת הקיימת.


הסבה של ממשק משתמש
המרה אוטומטית של הגדרת המסכים (למשל מסכים של mainframe) להגדרת המסכים בסביבת היעד (למשל לדפדפן).


הסבה של הסביבה הטרנזקציונלית
התוכניות המוסבות מחולקות ליחידות טרנזקציונליות המתאימות לסביבת היעד (למשל מ-Conversational ל-Pseudo-Conversational)


הסבה של לוגיקת הבקרה (JCL וכדומה)


הסבה של טבלאות ערכים וטבלאות פענוח

bottom of page