# מודרניזציה ותחזוקה למערכות Legacy

> חידוש מערכות Legacy עם אוברסייט: מיפוי קוד ותלויות, ייצוב, החלפת רכיבים ופיתוח המשך. גם תחזוקה ייעודית לאחר בדיקת התאמה.

העמוד המלא: https://oversight.co.il/solutions/legacy-modernization

## בקצרה

המערכת ותיקה. האפשרויות שלה לא חייבות להישאר מאחור.

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

- חידוש מדורג
- כניסה לקוד קיים
- המשך למערכת ותיקה

## הפירוט

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

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

## מה כלול

- **ממפים את מה שקיים**: קריאת קוד, תלויות ותהליכים, והשלמת תיעוד חסר. המיפוי בונה תמונה שממנה אפשר להחליט מה לייצב, לחדש או להחליף.
- **מייצבים לפני ההרחבה**: סביבת בדיקה, בקרת גרסאות וגיבויים לפי הצורך, לצד תיקון תקלות. מגדירים בסיס עבודה לפני שמוסיפים שינוי מורכב.
- **מחדשים רכיב אחר רכיב**: שיפור מבנה קוד, החלפת רכיבים ושדרוג גרסאות וסביבת ריצה. המהלך מחולק לפי התלויות והפעולות שהמערכת צריכה להמשיך לבצע.
- **פותחים אפשרויות חדשות**: פיתוח יכולות בתוך המערכת ויצירת API או שכבת חיבור. אפשר להרחיב את השימוש בלי לבחור מראש בהחלפה מלאה.
- **תחזוקה שמכירה את הוותק**: מסגרת ייעודית למערכת Legacy לאחר בדיקת התאמה. ההמשך מוגדר סביב המערכת ומצבה, לא כהבטחת קבלה של כל קוד או מעטפת אחידה.

## היתרונות

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

## התהליך

1. **נכנסים למערכת**: בוחנים קוד, תשתית ותהליכים וממפים את התלויות. מגדירים מה ידוע, מה דורש בדיקה ומה חשוב לעסק לשמר.
2. **מגדירים בסיס ותוכנית**: מכינים סביבת עבודה לפי הצורך ובוחרים את סדר הטיפול. מפרידים בין ייצוב, חידוש רכיבים והרחבות כדי לתכנן מהלך מדורג.
3. **מייצבים ומחדשים**: מבצעים את התיקונים והשינויים שנבחרו ובודקים את התהליכים הרלוונטיים. תיעוד והסברים מצטרפים להחלטות ולשינוי בקוד.
4. **מגדירים את ההמשך**: מסכמים את המערכת המעודכנת ואת ההמלצות. אם נבחר מסלול תחזוקה ייעודי, מגדירים את היקפו ואת התלויות שנותרו.

## שאלות ותשובות

### האם אפשר לעבוד על מערכת שלא אתם פיתחתם?

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

### מה עושים כשהתיעוד חסר?

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

### איך מחליטים בין חידוש לשכתוב מלא?

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

### האם אפשר לחדש רכיבים בהדרגה?

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

### האם אפשר לחלץ או להעביר מידע?

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

### מה ההבדל בין המהלך הזה לתחזוקה שוטפת?

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

## פרויקטים

- [Nadlan.com](https://oversight.co.il/projects/nadlan.md): Nadlan.com
- [LYB](https://oversight.co.il/projects/lyb.md): LYB
- [Bible DNA](https://oversight.co.il/projects/bible4dna.md): Bible DNA
- [CargoSys](https://oversight.co.il/projects/cargosys.md): CargoSys

## פתרונות משלימים

- [תחזוקת מערכות](https://oversight.co.il/solutions/systems-maintenance.md)
- [בדיקות ובקרת איכות (QA)](https://oversight.co.il/solutions/qa.md)
- [מיגרציה בין מערכות](https://oversight.co.il/solutions/migration.md)
- [ייעוץ טכנולוגי](https://oversight.co.il/solutions/tech-consulting.md)

## מידע מקצועי

- [מסמך אפיון שחוסך שלושה חודשי פיתוח: מה חייב להופיע בו](https://oversight.co.il/knowledge/guides/characterization-doc-guide.md): שבעה פרקים שהופכים אפיון מרשימת משאלות לתוכנית עבודה, כולל מה שמותר להשאיר פתוח בכוונה.

## טכנולוגיות

- PHP
- C#
- SQL
- Docker
