chemical-and-materials-engineering
כלים ומסגרות פופולריים בקרב מפתחי הנדסה אזרחית
Table of Contents
מבוא: מדוע בדיקות-Driven Development Matters in Civil Engineering Software
תוכנה להנדסה אזרחית שולטת בהחלטות המשפיעות על בטיחות הציבור, יושרה מבנית, ופרויקטים של תשתיות מיליארדי דולרים. באג יחיד בחישוב עומס, סימולציה של דינמיקת נוזלים, או ניתוח אלמנט סופי יכול להוביל לכשלים קטסטרופליים.פיתוח הניסוי-Driven (TDD) מציע גישה מובנית להפחית סיכונים אלה על ידי כתיבת בדיקות לפני יישום זה בוחן את הכלים והמסגרות הפופולריות בקרב תוכנות אזרחיות אשר מאמצים מפתחים ל-TDD.
בעוד ש-TDD מקורו בפיתוח תוכנה למטרות כלליות, עקרונותיה חשובים במיוחד בתחומי הנדסה אזרחית שבהם תיקון הקוד אינו ניתן להשגה.הפרקטיקה מאמצת לולאת משוב הדוקה: לכתוב מבחן כושל, לכתוב את הקוד המינימלי כדי להעביר אותו, ולאחר מכן מחדש, זה בונה חבילת תגמול מקיפה שתופסת שגיאות ומסמכים באופן מיידי את ההתנהגות הצפויה של כל רכיב.
המונחים: Engineering Software
מעגל ה- Red-Green-Refactor
מחזור ה- TDD הבסיסי הוא פשוט:
- (ב) [ה]:0] RedveFLT:1 [ה] כתוב מבחן המגדיר פונקציה או התנהגות רצויה.המבחן צריך להיכשל כי התכונה עדיין אינה קיימת.
- [01:0] ירוק: כתוב הקוד הפשוט ביותר שגורם לבחינה לעבור.
- (ב) [ה]הה', [ה], [ה],] ,[דרוש מקור], [ה], [ה], [ה],] [ה], [ה]], [ה], [התחילה] היא [ה], ו[הצעד הזה מחייב עיצוב נקי ושמירה על יכולת.
בתוכנות הנדסה אזרחית, מחזור זה מוחל ברמות מרובות: מפונקציות בודדות המיישרות את אוילר-Bernoulli beam de השתקפות אינטגרציה בדיקות אשר לאמת צינור ניתוח מבני.המשמעת של כתיבת המבחן הראשון מבטיחה כי המפתח חושב על התוצאה הצפויה לפני שאבדו בנתוני יישום.
יחידה, אינטגרציה ו- End-to-End Testing
TDD מתמקד בדרך כלל בבדיקות יחידה, אך תוכנה להנדסה אזרחית מרוויחה גישה שכבתית:
- (ב) עיין ב-[[1924]] ב[[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]]]
- (FLT:0) בדיקות אינטגרציה 1FLT מאשר כי תת-מערכות לעבוד יחד - לדוגמה, כי מודול קלט גיאומטריה עובר נתונים תקפים ליבת יסוד סופית.
- (FLT:0) בדיקות מקצה לקצה 1FLT סימולציה של זרימת עבודה מלאה, כגון ייבוא קובץ CAD, הפעלת ניתוח מבני, ומייצרת דו"ח איטי יותר אך לתפוס פגמים עדינים בין רכיבים.
כלי TDD פופולריים תומכים בכל הרמות האלה, אם כי המאמר יתמקד בכלים המבחינים של היחידה בדרך כלל מאומצים לראשונה על ידי צוותים הנדסיים.
המונחים: Popular TDD Tools
הבחירה של כלי לעתים קרובות תלויה בשפת התכנות המשמש ליישום הנדסי.תוכנות הנדסה אזרחית כתובה בתערובת של שפות: Java עבור מערכות ארגוניות, Python עבור מודלים ולמידה של מכונות מונחות על ידי נתונים, C# עבור יישומי BIM מבוססי Windows, ו- C++ עבור פותרים קריטיים ביצועים. להלן הם הכלים הנפוצים ביותר בכל מערכת אקולוגית.
Java Ecosystem: JUnit ו- Mockito
(ב) סימולציה:0JunitigmFLT:1 ; סטנדרט דה-פו עבור בדיקות יחידה ב- Java.It מספק מוטציות כגון FLT:0, 7FLT:1, ו-FLT:2 לתהליכי בנייה, יחד עם שיטות כגון: FLT 3 ו-FLT:4 כלי הנדסה אזרחיים רבים שנבנו על Java - לדוגמה, יצירת זרימה באמצעות סימולציה של 5;
Python Ecosystem: PyTest, לעג, ו Hypothesis
(הופנה מהדף הנדסה אזרחית לתסריט, ניתוח נתונים, והדרכה מהירה (FLT:0) ,PyTestFLT:1) הוא מסגרת בדיקות עבור סינתזה, תיקונים חזקים אלה, ואדריכלות גמישה, אשר לא ניתן לשחזר את בדיקות ה-Double-Fite (למשל, 4 LT) עבור בדיקות עיבוד נתונים פונקציונליות פשוטות ובדיקות מורכבות.
.NET Ecosystem: NUnit, xUnit.net ו-MoQ
(ה) , ביישומי הנדסה אזרחית שנבנו על פלטפורמת .NET - כגון Revit plugins או Autodesk interoperability Tools - בדרך כלל להשתמש ב-FLT:0NUnitFLT 1 או FLT:2xUnion:2xUnion.netuaFLT Both מספקת קבוצה עשירה של טענות וגילוי מבוסס תכונות.
C++ Ecosystem: Google Test and Catch2
(הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
שפות ומכשירים אחרים
חלק מההנדסת האזרחי משתמש גם ב- JavaScript/TypeScript עבור לוחות נתונים מבוססי אינטרנט, ו-Go או Rust עבור מערכות ביצועים גבוהות חדשות.In the JavaScript, FLT:0JestcioFLT:1 ו-FLT:2MochaoriFLT 3: הם פופולריים; עבור Go, חבילת ה-inFLT פועלת היטב עם עקרונות TDD.
מסגרות תמיכה ב- TDD: ocking, Fakes ו- Beyond
מעבר למסגרות בדיקה בסיסיות, מספר ספריות עוזרות למהנדסים ליישם את TDD במערכות מורכבות ומקושרות.מסגרות מיקוטין, MoQ, MockPy) הן חיוניות כאשר קוד תלוי בחומרה חיצונית (רגישים, GPS, מדחות) או על סימולציות יקרות שלוקחות שעות לרוץ. במקום לחכות להזנת אמיתי, מפתח יכול לכתוב בדיקות המספקות נתונים מזויפים ולוודא את התוכנה הנכונה תהליכים.
קטגוריה נוספת היא המכילי מבחן - ספריות שספיןפו מקרים חד-פעמיים של מסד נתונים או ברוקרים הודעה לבדיקות אינטגרציה.בהנדסת אזרחים, זה יכול לשמש כדי לדמות מסד נתונים של תכונות חומריות או ניתוח מבוסס ענן נקודות קצה. כלים כמו FLT:0Test ContainersFLT:1 עבור Java או עמיתו יכול להיות משולב עם TDD כדי להבטיח כי שכבות מתמשך לעבוד כראוי ללא אופטימיזציה של נתונים.
מסגרות בדיקה מפוכחות הן גם ערך.הקודים של הנדסה צריכים לעתים קרובות להתמודד עם מקרים רבים - ערכי גבול, קיצוניות נקודת צף, שדות קלט חסרים.Junnit 5'sFLT:9, PyTest's (FLT:10, ו- Google Test's FLT:11) מאפשרים מבחן אחד להפעיל נגד עשרות קבוצות קלט, צמצום השכפול ושיפור הכיסוי.
הצצה ל- TDD לתוך זרימת עבודה להנדסה אזרחית
איכות קוד ושמירה
היתרון הברורה ביותר של TDD הוא שיפור איכות הקוד.בהנדסת אזרחים, "איכות" כוללת דיוק מספרי, טיפול הולם של יחידות, ודבקות בשוליים הבטיחותיים.TDD מסייעת לתפוס תוקפנות מוקדם - למשל, אם שינוי לתפקוד עומס עומס, ניהול נאות בטעות כפול גורם הבטיחות, מבחן היחידה הקיים להיכשל באופן מיידי.
שילוב CI/CD
(ה) מגיע הפוטנציאל המלא שלו בשילוב עם שילוב מתמשך ומשלוח מתמשך (CI/CD) כל מבצע גורם ייצור אוטומטי והפעלה של הניסויים בהקמה ומבצעת בדיקה. עבור פרויקטים הנדסיים אזרחיים, זה עשוי לכלול בדיקות יחידות הפעלה תוך שניות, בדיקות אינטגרציה בתוך דקות, ובדיקות ביצועים בין לילה. פלטפורמות CILT:0GitLabFLT:1, אך לא ניתן להפעיל את הסיקור המינימלי של GIFLT5Git (ה-Hub) אלא גם את כל כלי פעולה, למעט סיקור כולל:
המונחים: Computational Complexity
תוכנה הנדסית מלאה חישובים צפים שהינם בלתי-מסוגים של כלי TDD חייבים להתמודד עם השוואות סובלנות. JUnit 5 מספק FLT:13 לערכים כפולים; PyTest יש LT:14; Google Test מציעה טיפול השוואת סובלנות (FLT:15) טעות נפוצה היא לבדוק כללים מדויקים, גרימת כשלים כוזבים בשל רכיבי epsilon צריך להגדיר סובלנות מתאימה עבור מודלים 1-6, כולל תכונות טיפוליות עבור 1-6 מעלות צלזיוס.
שיטות עבודה הטובות ביותר עבור TDD בהנדסת מטוסים
מבחן נמס וארגון
שמות מבחן טובים משמשים כתיעוד חי. השתמש באמנת שמות הכוללת את השיעור תחת מבחן, השיטה, וההתנהגות הצפויה.לדוגמה: (FLT:16 מבחנים קבוצתיים על ידי מודול (למשל, FLT:17, FLT:17, FLT 18, FLT 18, FLT:19) כדי לשקף את מבנה הקוד. ב ++ עם Google Test, להשתמש בסוויטות בדיקה כדי לארגן בדיקות קשורות; PyTest שימוש בקבצים, שימוש בקבצים נפרדים או קובצים.
מבחן ניהול נתונים
בדיקות הנדסיות דורשות לעתים קרובות קבצים קלט גדולים (מודלים CAD, יומני חיישן, מסדי נתונים חומריים) להימנע מבדיקת קבצים בינאריים לתוך בקרת גרסאות - במקום זאת, השתמש בתקנות המייצרות נתונים קטנים, נציגות באופן מתודולוגי.לדוגמה, לכתוב פונקציה במפעל שיוצרת 5-node truss עם עומסים ידועים ונקודות מבט צפויות. כאשר קבצים חיצוניים הם בלתי נמנעים, ממות אותם לדוגמה האימות הקטנה ביותר כי יש בדיקות ספציפיות;
התמודדות עם תלות חיצונית
תוכנה להנדסה אזרחית עשויה לממשק עם ספריות צד שלישי עבור FEM, BIM, או GIS. ספריות אלה הן לעתים קרובות בינארי וקשה ללעג. טקטיקה נפוצה היא לעטוף אותם בשכבה מופשטת (ממשק או מתאם) שניתן להחליף אותם במהלך בדיקות.לדוגמה, במקום לקרוא פתרון מסחרי ישירות, להגדיר ממשק 20 עם שיטת LT:21 עם שיטת LT:21 בייצור, פתרון אמיתי כגון: "מוחזק" הוא לעתים קרובות, אבל הוא פתרון" מראש של לעג, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא פתרון לעג, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא פתרון לעג, אבל הוא פתרון יעיל יותר, אבל הוא פתרון לעג, אבל הוא פתרון יעיל יותר, אבל הוא לעתים קרובות, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא פתרון יעיל יותר, אבל הוא נקרא מראש של לעג, אבל הוא פתרון יעיל יותר, אבל הוא נקרא לעג, אבל הוא לעתים קרובות, אבל הוא לעתים קרובות, אבל הוא לעתים קרובות, אבל הוא נקרא לעג, אבל הוא לעתים קרובות, אבל הוא פתרון יעיל יותר, אבל הוא נקרא לעג, אבל הוא פתרון יעיל יותר, אבל הוא לעתים קרובות
אתגרים ופתרונות
קוד מורשת
פרויקטים הנדסיים אזרחיים רבים הם בני שנים רבים, והם נבנו ללא בדיקות.הצגת TDD רטרואקטיבית קשה כי הקוד לא תוכנן עבור בדיקת אחריות.הגישה המומלצת היא ליצור "מבחן כריזמה" - מבחן המרשם את הפלט הנוכחי עבור קלט נתון, גם אם זה עשוי להיות לא נכון לאחר שיש לך בסיס, אתה יכול לשנות לאט, באמצעות הבדיקות כדי לזהות שינויים לא מתואמים כמו Capprovalation, או 1Frovtites.
בדיקות ביצועים
TDD אינו מתייחס ישירות לביצועים, אך הוא יכול למנוע את התקיפות של ביצועים. השתמש באותן מסגרות המוכיחות את ביצועי התעודה, הקובע כי פונקציה משלימה בתוך פרק זמן.לדוגמה, קונסולת 5 של JUnit 5 (FLT:23, FLT:24, או Google Test's FLT:25 על ערך.זה מבטיח כי פיצוי כי במקרה להציג פונקציה קטנה של אלגוריתם יכול להיות נתפס אפילו סימולציה של אלגוריתם קטן.
מערכות בטיחות-Critical Systems
כאשר התוכנה משמשת בהקשרים ביקורתיים יותר (למשל, עיצוב גשר, מודלים צמחיים גרעיניים), TDD תורמת למסגרת אימות רחב יותר ואימות (V&V) כלים כמו FLT:0VectorCASTFLT:1 או FLT:2LDRAFLT 3: משמשים להשגת DO-17C או IEC 615 הסמכה, אך הם משלבים את אותם שיטות בדיקה פורמליות, אך הם כוללים את אותם שיטות בדיקה פורמליות, אך ורקמות, אך ורק לאחר מכן, ללא בדיקות טיפוליות, אך ורק לאחר מכן, הן פועלות, הן אינן פועלות, הן אינן פועלות, הן אינן פועלות, אלא הן אינן פועלות, אלא הן אינן פועלות, אלא הן כוללות את אותן שיטות בדיקה פורמליות, אלא שיטות בדיקה פורמליות, אלא גם את אותן שיטות בדיקה פורמליות, אלא גם עם דרישות בדיקה פורמליות, אלא גם את אותן שיטות בדיקה פורמליות, אך הן אינן מתקנות של שיטות בדיקה פורמליות, אך הן אינן ניתנות.
מסקנה: Embracing TDD עבור Robust Engineering Software
אימוץ של פיתוח Test-Driven בתוכנות הנדסה אזרחית אינו מותרות - זוהי אחריות מקצועית. הכלים והמסגרות המתוארים כאן - JUnit, PyTest, NUnit, Google Test, וספריות הלעג שלהם - לתת למפתחים את האמצעים להבטיח נכונות, שמירה על יכולת, ואמון בקוד שלהם. על ידי שילוב כלים אלה לתוך CI / נוירונים, טיפול בסובלנות מספרית, באופן מפורש עבור קבוצות מבחן הטוב ביותר, ובאופן משמעותי של ניהול נתונים, באופן משמעותי, ולהפחית את שיטות ניהול נתונים.
ההשקעה מעלה בכתיבה מבחנים משלמת באופן אקספוננציאלי כאשר פונקציה של עומס משתנה פועל במשך שנים ללא שגיאות, או כאשר חבר צוות חדש יכול לשנות בבטחה אלגוריתם הליבה מבלי לשבור תכונות קיימות. כמו תוכנה להנדסה אזרחית הופכת מורכב יותר ויותר משולבת הדוק עם תאומים דיגיטליים ו-IoT, TDD יהיה רק חיוני יותר.הכלים הם בוגר, הקהילה פעילה, והיתרונות מוכחים עם מודול אחד, לכתוב ולאבד את הניסוי.