סביבה ושפה מומלצת לפיתוח אוטומציה ב-EMBEDDED

dida1988

New member
סביבה ושפה מומלצת לפיתוח אוטומציה ב-EMBEDDED

שלום רב,

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

נ.ב : אני לא מדבר על פיתוח קוד רגיל בתחום ה-EMBEDDED שדורש C או C++ ,אני מדבר על פיתוח אוטומציה.

תודה לעוזרים ושיהיה שבוע טוב
 

עמית ו

New member
כנראה שכדאי להתחיל עם שאילת השאלות הנכונות

נתחיל עם כמה אמירות פשוטות, אבל חשובות למדי:
1. כדי לכתוב אוטומציה צריך לדעת לתכנת.
2. צריך לדעת לתכנת היטב.
3. זה נכון שבעתיים אם רוצים להקים תשתית מאפס.
4. אין באמת הבדל גדול בין השפות השונות. יש כמה הבדלים בכלים שזמינים בכל שפה, ויש כמה דברים שקל יותר או קשה יותר לכתוב כתלות בשפה בה עובדים, אבל בחירת השפה היא כנראה החלק הפחות חשוב בכל הפרוייקט.
5. סלניום זו ספרייה שמזיזה דפדפנים - אין לה שום קשר לתוכנה משובצת, אלא אם התוכנה המשובצת הזו מתקשרת עם דפדפן.
&nbsp
עכשיו, אולי כדאי שנעבור לשאלות שבאמת מעניינות אותך -
1. למה אתה מתכוון כשאתה אומר "אוטומציה"? מה אתה מצפה שיתבצע באופן אוטומטי? ולא - "שירוצו בדיקות" זו לא תשובה. השאלה היא מה קורה בזמן שבדיקה רצה - האם נשלחות הודעות ממקום למקום? האם יש דברים פיזיים שצריך להזיז? האם צריך לבדוק שמנורות דולקות, או שמספיק לקבל תשובה בפרוטוקול התקשורת? האם צריך להפיק דו"ח ריצה יפה וקריא, או שמספיק לקבל stacktrace עם הודעות שגיאה? אפשר להמשיך עם השאלות, אבל נראה לי שזה מספיק כדי להבין.
2. באילו שפות יודע לתכנת מי שעומד לכתוב את המבדקים? אם הוא לא יודע לתכנת - חבל על המאמץ.
3. באילו שפות כותבים צוות הפיתוח? האם יש מניעה להשתמש באותה שפה ובאותם כלים שהם משתמשים בהם? האם יש סיבות לבחור שפה אחרת?
4. איזו תמיכה יש לפרוייקט הזה מצד צוות הפיתוח? זה נחמד נורא לבוא ולומר "אני הולך לכתוב אוטומציה", אבל כדי לעשות את זה יהיה לך צורך ביכולת לתקשר באופן תכנותי עם המערכת, מה שיהיה משמעותית קל יותר אם צוות הפיתוח ידאג לתמיכה בחיבורים כאלה במקום לומר "תסתדר".
&nbsp
&nbsp
בקצרה, לפי השאלות שלך, נראה שהדרך הנכונה מבחינתכם להקים פרוייקט אוטומציה תהיה:
1. למצוא חברה חיצונית שיש לה ניסיון בהקמת תשתיות בדיקה למוצרי אמבדד ולשכור אותם לפרוייקט כזה. לחילופין, אפשר לגייס מישהו בעל ניסיון דומה.
2. במקביל, אתה צריך ללמוד לתכנת. השפה לא קריטית, אבל זה יעזור אם תלמד את השפה בה החברה החיצונית תכתוב את האוטומציה.
3. תוך כדי הקמת הפרוייקט, אתה (או מישהו שנוח לו יותר עם קוד, תלוי בכם ובזמן שלכם) צריך ללוות את החברה החיצונית וללמוד ממה שהם עושים. ככה, כשהם ילכו ויכריזו על "סוף פרוייקט", יהיה מישהו שיודע מה הולך שם, ויהיה מישהו בחברה שיודע דבר או שניים על הקמת תשתיות לבדיקות אוטומטיות בחברה שלכם.
4. זה אמור לקרות עם כל חברה טובה שתשכרו, אבל צריך להחליט מה המטרות העסקיות של פרוייקט האוטומציה, זה יעזור לכם למקד את הפרוייקט לדברים שחשובים לכם באמת. עדיף לעשות את זה בתחילת הדרך, אבל אני מניח שאם שכרתם מישהו עם ניסיון רלוונטי, השאלות האלו תישאלנה.
&nbsp
בהצלחה.
 

halperin

New member
מנהל
תשובה גנרית שהייתה מאוד נכונה אלמלא היה מדובר ב-Emb ...

 

עמית ו

New member
כיוון שאתה המומחה - פרט נמק והרחב?

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

dida1988

New member
בהמשך לשאלה שלי

שלום ותודה רבה על התשובה המורחבת וסליחה על התגובה שלקחה דיי הרבה זמן.
המוצר שאנו רוצים לעשות עליו את האוטומציה הינו מכשיר שעושה בין היתר את הדברים הבאים:
1.תקשורת מול מכונה כמו מכונת שתיה/חטיפים בפרוטוקול MDB.
2.תקשורת מול מכשיר סליקת אשראי.
3.שליחת טלמטריה.
4.תקשורת מול אתר אינטרנט לצורך שליחה וקבלת מידע(לכן אזכרתי את התוכנה סלניום).
5.התקשורת של המכונה עם העולם החיצון הינו עם LAN (חיבור ישיר לאינטרנט) או Cellular(תקשורת סלולרית).

כיום כל הבדיקות המבוצעות על המכשיר הנ"ל ,מבוצעות באופן ידני ובעזרת כבל RS232 לצורך שליחת קומץ פקודות למכשיר(כגון אתחול למכשיר, שהמכשיר יצור תקשורת עם אתר האינטרנט לצורך עדכון הפרמטרים שעליו וכו') ובעיקר הזנה למכשיר(סניפינג) וכמו כן גם באתר אינטרנט לצורך שליחת וקבלת מהמכשיר ולמכשיר.
כרגע אין אפשרות להעסיק חברה חיצונית לצורך עניין זה.
בנוגע לאוטומציה עצמה ,המכשיר עצמו אינו Real-Time ,נכון לעכשיו אנחנו נמנעים כרגע בלעסוק באוטומציה של תנועה פיזית של דברים או בעזרת צב"ד, אילה רק דרך שליחה וקבלת מידע מהמכשיר ולמכשיר, שליחת וקבלת מידע למכשיר הסליקה(דרך המכשיר) ושליחה וקבלת מידע למכונת השתייה/חטיפים למשל (דרך המכשיר).
כמו שהזכרתי קודם ,המכונה מתקשרת בפרוטוקול MDB.
לצוות הפיתוח תהיה תמיכה מלאה בתהליך זה והם משתמשים בשפת C לצורך הפיתוח, הצורך בשפה אחרת כגון PYTHON היא לפשט את פיתוח האוטומציה, אך אשמח לשמוע איזו שפה יותר עדיפה, כמו כן סביבת הפיתוח של המפתחים היא בעזרת כלים של IAR דרך .

שוב תודה רבה לכם ואשמח לשמוע ממכם שוב J
 

עמית ו

New member
חסר פרט אחד קטן -

מי עומד לכתוב את כל העסק, וכמה ניסיון יש להם בתכנות בכלל, ובבניית מערכת בדיקות בפרט?
בגדול, למיטב ידיעתי יש מעט מאוד תשתיות תומכות בשפת C לכתיבה של בדיקות יחידה (כאן אפשר למצוא רשימה - https://stackoverflow.com/questions/65820/unit-testing-c-code , אבל אני לא יודע לומר כמה כלים תומכים מסביב יש לזה), ולכן יש הגיון מסויים בכתיבת הבדיקות בשפה אחרת.
לגבי "איזו שפה עדיפה", זה כבר עניין דתי - שפות הסקריפטים השונות (פיית'ון, ג'אווהסקריפט, רובי) נוטות להיות פשוטות יותר בתחילת הדרך ובפרוייקטים קטנים, ולהיות נוחות פחות בפרוייקטים גדולים, שם שפות כמו C# או ג'אווה מקבלות יתרון - כי המידע הסמנטי העודף שמעכב אותך בתחילת הדרך הופך ליעיל ומסייע בתחזוקה של פרוייקטים בסדר גודל שאיננו טריוויאלי. אבל כל אחד וההעדפות שלו.
כך או אחרת, ככל הנראה השפה הכי טובה היא זו שבה נוח למי שעומד לכתוב ולתחזק את הקוד בשנה הקרובה (אגב, אם מי שאמור להיות אחראי על המערכת הזו אינו יודע לתכנת ומתכנן ללמוד את זה תוך כדי עבודה, ההמלצה שלי היא להפסיק כאן ועכשיו ולמצוא מישהו שיעשה את זה בשבילכם)
 

halperin

New member
מנהל
השפה העדיפה היא זו שתוכל לקבל לגביה תמיכה מהמפתחים

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

halperin

New member
מנהל
מנסה להבין מהיכן הגעת דווקא לצורך ב- Emb ?

מנסה להבין מהיכן הגעת דווקא לצורך ב- Emb כי שאר המונחים שהזכרת ממש לא קשורים למקרה - לדוגמא סלניום.
כשמדברים על Emb מתכוונים לרוב לתוכנה הרצה על חומרה ייעודית - מוצרי תשתיות תקשורת, מוצרים לתחום הרפואה וכד' ובקרוב גם לתחום ה- IoT שעדיין לא ברור איך נתייחס אליו משיקולי אוטומציה.
מעבר לכך שלרוב מדובר על מערכות הפעלה שאינן גנריות (למרות נטייה חדשה יחסית בשנים האחרונות לשלב לינוקס), כח עיבוד מוגבל ועוד יותר מכך זיכרון מוגבל, ההבדל המהותי יותר של Emb מול מערכות אחרות (לרוב) הוא העדר ממשק משתמש גרפי, או שממשק זה גם אם קיים אינו הממשק היחיד והעיקרי.
פעמים רבות נהוג להזכיר מוצרי Emb בנשימה אחת עם מוצרי Real-Time (למרות שלא תמיד זה אכן כך) ואז צריך להתייחס גם למהירות התגובה של המוצרים.
לא פעם בדיקת מוצרים אלו דורשת שילוב של צב"ד - ציוד בדיקה ייעודי אליו מתממשקים בצורות שונות.
במרבית מערכות ה- Emb עיקר ההתממשקות מתבצע מול ממשק CLI - Command Line Interface - ממשק פקודות אליו מתחברים בעזרת ערוצי Telnet / SSH / RS-232
הכולל פקודות ייעודיות בהתאם ליכולות החומרה הספציפית.
לעיתים (בעיקר במוצרים חדשים יותר או כאלו שדורשים התחברות למערכות ניהול-על EMS/NMS) יש גם API גנרי בעזרת REST לדוגמא.
בשל הצרכים הייחודיים של מערכות אלו וחוסר ממשק גרפי גנרי, חלק ניכר ממימושי האוטומציה מתבצע בעזרת סביבות ייעודיות הנבנות ע"ג חבילות המאפשרות את ערוצי התקשורת שהוזכרו מעל, וישנם גם כמה סביבות גנריות מן המוכן שמחד חוסכות פיתוח עצמי של טיפול בבעיות גנריות אך מאידך לרוב כוללות ממשק ושפות תכנות לא ממש סטנדרטיות - השתיים המוכרות ביותר בארץ הנן TestShell by QualiSystems ו- Coronys ETS.
שתיהן כוללות פורמט KDT בראשונה מדובר על גרפי ובשנייה מתוך עץ פונקציות - שתי שיטות אלו הוכחו כלא יעילות לאורך זמן, ולכן פרוייקטים מצליחים המבוססים עליהם לרוב עוקפים ממשק זה ע"י שכבה נוספת (לרוב כזו החושפת ה-KDT לבודקים בעזרת Excel).
עמית הזכיר מעל את נושא ההתאמה לשפת הפיתוח של הכלי - אך מכיוון שבמרבית מוצרי ה- Emb בשונה ממרבית מוצרי תוכנה אחרים הנפוצים כיום - משתמשים ב- C/C++ איני בטוח אם בחירה זו למערכת האוטומציה אכן תהיה המתאימה והנוחה בהתאם.
לסיכום - סלניום אינו מתאים במרבית המקרים פשוט מכיוון שלמרבית מוצרי ה- Emb אין ממשק גרפי המבוסס Web - וגם כאשר קיים כזה הוא לרוב אינו הממשק העיקרי, ואינו כולל חלק ניכר מהיכולות הנדרשות ל- Design for Testability .
&nbsp
לרקע נוסף על האתגרים - קרא כאן סדרת המאמרים מאת שמואל גרשון -
http://www.itcb.org.il/index.php?op...category&id=28:sites&Itemid=545&limitstart=14
 
למעלה