האצת פיתוח אפליקציה משובצת מחשב זה לא רק כתיבת קוד מהירה יותר

מאת: אבי כהן, פרטק אמבדד סולושנס

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

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

תרשים 1. קומפילציה מקבילה בסביבת Atollic TrueSTUDIO מקצרת את זמן הבניה

תרשים 2. קומפילציה מקבילית מקצרת את זמן הבניה

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

מהדרים
דוגמאות לתכונות מתקדמות של מהדר בסביבת  Atollic TrueSTUDIO כולל כלי בניה אוטומטיים ואופטימיזציה ל- C/C++ GNU, תמיכה בספריות ויכולת בניה ידנית (make) או גרפית. על מנת להקל על המפתחים, חברת Atollic מציעה כלי שמאפשר לפתח תוכנת שירות ב- PC ששולחת נתוני קונפיגורציה למחשב המטרה, או מקבלת מידע ממחשב המטרה ללא צורך בשימוש בתוכנת VisualStudio.
אחת הבעיות בסביבות הפיתוח המסורתיות, זה זמן הבניה (build) שלפעמים יכולות לבזבז שעות בזמן הפיתוח היקר. Atollic TrueSTUDIO פתרה את הבעיה על ידי שימוש בבניה מקבילה (parallel build).  הבניה נעשית דרך הפעלה של תהליכים מקבילים של אסמבלרים וקומפיילרים, כשכל אחד בונה קובץ אחד בפרויקט.
תרשים 1 ממחיש את ההבדל בין בניה מסורתית (עוקבת) לבין בניה מקבילה.  אמנם הדוגמה פשוטה יחסית אבל היא מראה את החשיבות.  הבניה במחשב עם מרובה ליבות והכולל הרבה קבצים, מקצר בצורה דרסטית את זמן הבניה.
בניה מקבילה יכולה להתקיים גם במחשבים שאינם מרובי ליבות.  במקרה זה, קומפילציה מתבצעת על קובץ אחד כאשר בניה של קובץ אחר ממתינה לגישה לדיסק הקשיח.
תרשים 2 ממחיש כיצד זמן הבניה מתקצר כאשר משתמשים במחשב עם ליבה אחת. האות R מתייחסת לקריאה מהדיסק, האות C לקומפילציה, והאות W לכתיבה של אובייקט הקובץ לדיסק.

ניפוי שגיאות
כלים מתקדמים אמורים לכלול מנפי שגיאות (debuggers) למעבדים מרובי ליבה ויכולות של real-time tracing לכל המאפיינים כמו עצירה מותנת לפי מצב של קוד או (data (conditional breakpoint, ויכולת לבדוק ולשנות את מצב המעבד והרגיסטרים.  מעבר לזאת, הכלים צריכים לכלול יכולות אנליזה וניטור של קוד רץ כמו לדוגמה מעקב אחרי ה-  (Serial Wire Viewer (SWV במעבדים של ®ARM.
במעבדים מרובי ליבה, אחת היכולות המתקדמות מאפשרת ניפוי שגיאות באפליקציות שרצות על ליבות שונות, באותו זמן דרך אותו דיבגר.  סביבת Atollic TrueSTUDIO מאפשרת יכולת דיבג של כל שילוב אפשרי של מחשב ליבה אחת או מרובה ליבות דרך ממשק אחד.  הדבר מאפשר גם ניפוי שגיאות במערכת הכוללת כרטיסים שונים המתקשרים ביניהם או מחשב המתקשר עם כרטיס בודד.
ניהול קוד
דרישות פרויקטי תוכנה משתנים וכתוצאה מכך הקוד חייב להשתנות ולהתרחב.  בנוסף, מפתחים עלולים לעזוב את הפרויקט ובסופו של דבר אף אחד לא ידע איך הקוד עובד, מדוע ואיך נעשו בו שינויים, וכיצד נראה הקוד בעבר.  כדי למנוע מצב כזה נדרשת מערכת ניהול תצורה הכוללת את כל רביזיות הקוד ומסמכים המתעדים את השינויים.
סביבת Atollic TrueSTUDIO כוללת התממשקות למערכות ניהול תצורה פופולריות ואפילו יכולה להציג בצורה גרפית כל פעולה שנעשתה בקוד כולל שינויים ומיזוגים בין גרסאות.
קבוצות פיתוח אמורות גם לנהל את כל הבקשות להוספת יכולות, דיווחים על תקלות ורשימת מטלות. נושאים אלה בדרך כלל מקוטלגים במערכות ניהול מרכזיות על השרת בעזרת תוכנות כמו Trac או Bugzilla.  כך הופכת מערכת ניהול זו למקום המרכזי לכל פעילות הפיתוח, תכנון העבודה וניהול העדיפויות.
כלי פיתוח מתקדם יוכל לגשת לשרת ולהשתלב בצורה חלקה בסביבות הקיימות האלה.

סקירת תקלות, ניתוח ובדיקות של קוד
סקירת קוד על ידי צוות הפיתוח נחשבת לדרך הזולה והיעילה להפקת תוכנה איכותית.  ברור שזול יותר למצוא תקלה לפני שהיא מתקדמת לשלב הבדיקה.  סביבת  Atollic TrueSTUDIO מאפשרת להחליט איזה קבצים בפרויקט יעברו סקירה ועל ידי מי מאנשי הצוות.  הסוקרים יכולים להיעזר בכלי הניווט ולהוסיף הערות שידונו בהם עם הקולגות שלהם בפגישת ה- code review. כעת בזמן שכל הפונקציות מובנות בכלים, איכות הקוד יכולה להשתפר בצורה ניכרת.
יכולות סקירת הקוד ישתפרו בצורה ניכרת תוך שימוש בכלי אוטומטי כמו static code analysis.  מרבית הכלים בודקים את סגנון הכתיבה מול סטנדרים רשמיים כמו MISRA-C. תכונה חשובה נוספת זו היכולת להוסיף סטטיסטיקה על הקוד כמו בדיקה של מורכבותו.  כלי זה צריך להיות חלק מסביבת הפיתוח כדי שיעשה בו שימוש יומי יעיל כמו במקרה של Atollic TrueINSPECTOR המגיע כחלק מסביבת Atollic TrueSTUDIO.  הכלי מוציא דו”ח גרפי מלא על כל הפרת סטנדרטים של קוד.
רוב קבוצות הפיתוח אינם משתמשים במתודולוגיות בדיקה פורמלית, למרות שחלקם בוחנים שימוש בבדיקות יחידה (unit tests).  בדיקות יחידה הם למעשה function calls לפונקציות ++C/C כאשר כל  function call משתמשת בקומבינציה שונה של משתנים בקלט על מנת ליצור נתיב ריצה שונה בתוך הפונקציה. הבעיה היא שכתיבת בדיקות יחידה גוזלת הרבה משאבים וברוב המקרים אינה מכסה את כל נתיבי הריצה החשובים של הקוד.  דרך טובה יותר לבדיקה זה שימוש במערכת בדיקת קוד אוטומטי.  כלי כמו Atollic TrueVERIFIER המובנה בסביבת Atollic TrueSTUDIO מאפשר יכולות בדיקת תוכנה מתקדמים ביותר.

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

תגובות סגורות