כתבה

שימוש חוזר בקוד: מה לבדוק לפני שמשלבים רכיב ממוצר אחר?

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

מאת אביאל שניידר · סמנכ״ל טכנולוגיות (CTO), Juliusעודכן 6 דקות קריאה

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

מה קרה כשהדרישה הישנה נשארה בקוד?

דוח ועדת החקירה של Ariane 5, מיולי 1996, תיאר פונקציית יישור שהמשיכה לפעול בעקבות דרישה שהגיעה מ־Ariane 4, אף שלא נדרשה באותו אופן במשגר החדש. מסלול הטיסה החדש יצר ערך שהמרה מספרית לא מוגנת לא יכלה להכיל. זהו מקרה היסטורי מתחום התעופה והחלל, לא פרויקט של Julius ולא השוואה בין רמות הסיכון של משגר ואתר עסקי.

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

אילו שאלות כדאי לשאול לפני שמאשרים שימוש חוזר?

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

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

מה בודקים מעבר למסלול המוצלח?

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

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

איך נראה שימוש חוזר מתועד באתר שלנו?

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

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

מתי עדיף להתאים ומתי לבנות מחדש?

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

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

בקצרה

  • בקשו לראות אילו הנחות עוברות יחד עם הרכיב.
  • בדקו הבדלים ומקרי כשל במוצר החדש.
  • השוו תחזוקה והתאמות, ולא רק את עלות ההעתקה.

מניסיון שלנו

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

שאלות שחוזרות

האם רכיב שנמצא בשימוש אצל לקוחות אחרים כבר נחשב בדוק?

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

מה לבקש בהצעת מחיר שמבוססת על קוד קיים?

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

האם צריך לכתוב מחדש רכיב AI כשמשנים את המשימה?

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

מקורות

להמשך קריאה

← חזרה לאשכול: לעבוד עם בית תוכנה