Table of Contents
מבוא
תוכנה להנדסה אזרחית מבססת את העיצוב, הניתוח והניהול של תשתיות קריטיות - גשרים, כבישים מהירים, מערכות מים ובניינים. כמו מערכות אלה לגדול המורכבות, כך גם הקוד שמחייב אותם.מספק, הפרקטיקה המפוקחת של בניית קוד קיים ללא שינוי ההתנהגות החיצונית שלו, חיוני לשמירה על תוכנה הנדסית אזרחית, מדרגת, ואמין.
הרשומות הגבוהות של אישור בהנדסת אזרחים
תוכנה הנדסית אזרחית מטפלת בחישובים של הציבור, הערכות עלות וציות רגולטוריות.ההתאמה לא נכונה במודול ניתוח מבני יכולה להוביל לכשלים קטסטרופליים, בעוד באג במודל הידרולוגיה יכול לגרום לגנות מצפות לא מתוכננות.מספק, אם נעשה ללא טיפול, מציג סיכון בדיוק היכן הסיכון לא ניתן לסבול.
יצירת טעויות בפיתוח טכנולוגיות הנדסה אזרחית
1 בדיקות יעילות לפני ואחרי מתן
הטעות הנפוצה ביותר היא צלילה לשיפוץ ללא חבילת בדיקה חזקה במקום.קוד הנדסה אזרחית לעתים קרובות מסתמכ על מודלים מתמטיים עם מקרים קצה כי הם לא ברור באופן מיידי - כגון אלמנטים באורך אפס, ניתנות חומרים שליליים, או ליד מיילדות מתקרבות.ללא יחידה מקיפה, שילוב, ובדיקות רגרסנס, אין שום בטיחות כדי לתפוס שינויים כי שינוי שקט, אפילו פונקציה קטנה כי לא יכול להיות תיקון זה רק התאמות רחבות דרך פעולה זה לא יכול להיות רק התאמות.
דוגמא מתרגול
צוות אישר מודול עיצוב מורשת לשיפור יכולת הקריאה.הם התבססו על מקרה מבחן אחד משנת 2005.
שינוי בתפקוד
המנטרה של הגשמה היא "התנהגות משמרת", אך קל להפתיע לנסח.בתוכנה להנדסה אזרחית, שינויים פונקציונליים לא מקודמים לעתים קרובות נובעים מלוגיקה ספציפית לתחום, למשל, קידוד נוסחה המשתמשת ב-FLT:0 מהירויות יעילות FLT:1 בעיצוב קונקרטי מחזק עשוי להיראות שווה ערך לסיבוב או למצב גבולי, באופן דומה לא יציב, לא יכול לשנות את עצמו מבנה קידודים.
כיצד לתפוס את זה מוקדם
מומחי דומיין מנוסים עם מפתחי תוכנה במהלך מתן מחדש. השתמש בכלים מבוססי הבדל המשווים את הפלטים המספריים בפועל מן הקוד הישן והחדש על פני מגוון רחב של פרמטרים קלט - לא רק קומץ של ערכים נבחרים באופן ידני.
Over-Refactoring: Complexity Disgued asשיפור
(היתר על פני השטח) כאשר מפתחים ליישם תבניות עיצוב או מופשטות אשר מוסיפים שכבות מיותרות של עקיפה, מה שהופך את הקוד קשה יותר לעקוב ולשמור על תוכנה להנדסה אזרחית, לעתים קרובות ממריצים שימוש מופרז של היררכיות ירושה עבור תכונות חומריות (למשל, FLT:0Reinforcedconfactordetedectdexate:2Strrerthirdtures for ap) 1-Facteric Reacter (למשל, לדוגמה, כלומר, כלומר, לדוגמה, סימולציה פשוטה יותר)
סימנים שאתה מספק
- אתה מקדיש יותר זמן לתיאור העיצוב מאשר לוגיקה התחום.
- מתן קבצים חדשים רבים ללא הגבלת זמן של צמצום תפקוד.
- אתה מוצא את עצמך מוסיף אפשרויות תצורה להתנהגות שמעולם לא משתנה.
- ביצועים ביצועים מראים ירידה לאחר השיפוץ.
4.התעלמות של שינויים מבניים
תוכנה להנדסה אזרחית היא לעתים קרובות compute-intensive. a refactoring כי שיפור יכולת קריאה עשוי לשנות באופן בלתי נמנע דפוסי גישה זיכרון, להציג הקצאות מיותרות, או לולאות שטוחות שהופנו בקפידה עבור וקטוריזציה. לדוגמה, המרת שגרת מריצה מלוות ממותלות ידניות לספרייה יכולה להגדיל על ידי סדר גודל של עוד תופעה נפוצה היא תמציתית של פונקציות קטנות מדי, אפילו כדי להפחית את הזמן הקלוש של תגמולים של תגמולים של תגמולים של טריליון פעמים רבות מדי, כי לעתים קרובות.
אסטרטגיית מייגציה
פרופיל לפני ואחרי מתן מחדש. השתמש בסימנים מיקרו-מנצ'רים עבור הקרנלים המספריים הקריטיים (למשל, חישוב מטריקס קשיח, פתרון מערכת לינארית חסינה) ייסוד תקציב ביצועים ולא לאשר שינויים המפרים אותו ללא הצדקה ברורה.
אישור ללא בקרת גרסאות
למרות ששליטה בגרסה משמשת באופן נרחב, צוותים רבים מבצעים שינויים יחד עם תכונות חדשות או תיקוני באג בהתחייבות גדולה אחת.זה מקשה לבודד את התוקפנות ולהחזיר ניסיונות שלא להשתבש.טעות קשורה אינה מתייגת או מחסימת עבור פיצוי ניסיוני; כאשר ה-Euroacting נכשל, הצוות עשוי להיאבק כדי לשחזר את מצב העבודה הקודם, במיוחד אם מבצעים אחרים הופקו ב-APTS, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, אם הוא בעל יכולת פעולה משפטית, או תאימות, אשר לעתים קרובות, התקני הנדסה משפטית, או תאימות, אשר היא בעלת 3.
התרגול הטוב ביותר
המשך ביצוע פעולות טהורות - אין שום תכונה שינויים מעורבים בהודעות ביצוע תיאוריות המסבירות את ה-FLT:0 מדוע FLT:1 של השינוי המבני. שקול באמצעות ענף ייעודי עבור שיפוץ בקנה מידה גדול, ומיזוג רק לאחר שעבר את חבילת המבחן המלא ואת בדיקות אימות ספציפי דומיין.
6.הפחתת אימות דומיינים במהלך מתן אישור
תוכנה להנדסה אזרחית לעתים קרובות מאמתה מפני חישובי יד, השוואות מעודכנים, או נתוני מבחן פיזי. במהלך מתן מחדש, צוותים לעתים מסתמכים רק על בדיקות יחידה שמקורן בקוד הישן, אשר יכול לשכפל את אותם באגים.לדוגמה, בדיקת יחידה עשויה לטעון כי חישוב כוח-כוח חוזר ערך מסוים שאינו נכון - אולי משום שהקוד המקורי היה סימן שמעולם לא נתפס.
גישה מומלצת
שמור על קבוצה של מקרים של מבחן התייחסות נגזר פרסומים הנדסיים סמכותיים או תוכנה מוסמכת. להפעיל את אלה לאחר כל מפגש מספק ולהשוות תפוקה עם ערכים ידועים.אוטומט תהליך זה כחלק צינור האינטגרציה המתמשך.
אסטרטגיות למניעת שינוי שגיאות
1. בנה רשת בטיחות מקיפה של Test Safety Net First
לפני נוגע קו יחיד, להשקיע בתשתיות מבחן המכסות את התחום.זה אומר לא רק בדיקות יחידה אלא גם בדיקות אינטגרציה כי לממש את זרימת העבודה כולה (למשל, ניתוח קלט) לאחר מעבד), ובדיקות השוואות פלט אשר בודקות נגד קבצי זהב מגרסה אמינה.בתוכנה להנדסה אזרחית, בדיקות מבוסס נכסים (יצירת קלטות אקראיות ותביעות בחלופה) יכולות להיות חזקות במיוחד - לדוגמה, המבטיחות את התכונות של קוד פתוח באופן קבוע, כגון שיטות טיפול בלתי מוגדרות, כגון פעולות סודיות, כגון פעולות סודיות, כגון פעולות סודיות, כגון פעולות שאינן נבדקות, טיפול בכיסויים, טיפול קבועות של פעולות סודיות, טיפול בכיסוי קודים, או סודיות, כגון פעולות סודיות, או סודיות, כגון שימוש קבועות, או שיטות הפעלה.
קישור חיצוני: עבור מדריך מעמיק על התפתחות מבוססת-מבחן במדע חישובי, ראה (FLT:0 Better Scientific SoftwareFLT:1).
2.תחזוקה עם מבחן שיווי משקל פורמאלי
עבור שגרות מספריות קריטיות, להשתמש בכלים שיכולים להשוות פלטי נקודות צף עם דיוק מבוקר.פשוט "שווה ערך" עשוי להיכשל בשל עיגול הבדלים מאופטימיזציה של מדגמים או תיקון של פעולות. במקום, ליישם בדיקות השוואתיות עם סובלנות יחסית וכבדות המתאימה להגדרה (למשל, 1e-6 עבור חישובים, 1e3 עבור הערכות גדולות יותר, לשקול מחדש את אותם רשומות קודים מאוחר יותר, ואז להגדיר מחדש של אותו קוד מדויק, כלומר, כלומר, לאחר מכן, כלומר, כלומר, כלומר, כלומר, שינוי קוד מדויק של אותו סוג זה של אותו סוג של אותו סוג של אותו סוג של אותו סוג של אותו סוג של אותו סוג של עיבוד של אותו סוג של קידוד מדויק של אותו מחדש של קידוד מאוחר יותר של אותו סוג של אותו סוג של שינוי של קידוד מיידי, 1e- 1e- 1e- 6 עבור חישובי תיבות של קידוד מאוחר יותר, 1e-מתאים מתקדמים, כלומר, 1e-מתאים מחדש של קידוד מדויק, 1e- 6 עבור בדיקות חישובי תיבות של חישובים, 1e- 6 עבור בדיקות חישובים, 1-6 עבור חישובים, 1e- 6 עבור חישובים, 1e- 6 עבור חישובים, 1e- 6 עבור בדיקות
3.הספק בצעדים קטנים, בולטים
בצע את מחזור "אדום ירוק-factor" גם כאשר הקוד כבר עובד.כל צעד מספק צריך להיות קטן מספיק כי אתה יכול לחזור בחשאי ללא הפסד הרבה עבודה.לדוגמה, שם מחדש משתנה, לאחר מכן להפעיל בדיקות; לחלץ שיטה, ולאחר מכן להפעיל בדיקות; לשנות את מבנה הלולאה, ולאחר מכן להפעיל בדיקות.לשלב מספר רב של דפוסים משביעי רצון אחד.
4.מעורבות מומחים לדומיינים ב- Code Reviews
לא צריך להיות רק טכני.בודד מהנדס אזרחי או מפתח עם ידע דומיין חזק בתהליך הביקורת.הם יכולים לזהות כאשר לולאה פשוטה עלולה להתעלם מעומס פיזי (למשל, היחס של Posisson חייב תמיד להיות בין 0 ל-0.5 חומרים איזוטרופיים) או כאשר משתנה מאבד את הקשר האינטואיטיבי למונח בקוד העיצוב.
קישור חיצוני: 0 (Software Sustainability InstituteFLT) 1:1 מציע צעדים מעשיים לשילוב ביקורות קוד דומיין.
השתמש ב-Excelation Control to Experiment Safely
יצירת ענף ייעודי לכל מאמץ מספק. השתמש בשמות תיאוריים כמו FLT:0 כך שהמפתחים יודעים את היקף ההיקף.Mge רק לאחר שהספק עבר את כל הבדיקות התוקפנות:0andFLT:1 כבר עשה רושם חוזר על עצמו, אם השיפוץ מציג כל נסיגה, חזור ונתח מה השתבש לפני ניסיון רע גם כן, הוא התחיל להיות בעל שם מחדש, אם הוא מתחיל להחזיר את הנקודות הגדולות.
6.אוטומטי מיפוי-הפצה
מעבר לבדיקות יחידתיות גנריות.אוטומטיות את הפעלתן של דוגמאות אימות סטנדרטיות - כגון המכון הלאומי לתקנים וטכנולוגיה (NIST) מבחנים לניתוח יסוד סופי, או דוגמאות טעינת רוח ASCE 7. החנות צפויה תפוקה בגרסת repository מבוקרת. integrate בדיקות אלה לתוך צינור ההנדסה שלך כך שכל מבצע (מספק או לא) הוא תוקף נגד אלה מבטיח כי לא מקבל תוצאות מעוות מעולם לא מקובלות.
קישור חיצוני: 0(NIST Applied Math and Computational ScienceFLT:1 פורטל מספק בעיות עבור דינמיות מבניות ונוזליות.
מקרה מחקר: מתן מודול סימום תנועה
בהתחשב בתרחיש אמיתי של חברת הנדסה בינונית.תוכנה של התנועה שלהם הכילה מודול ליבה עבור חישוב אורך תור הרכב בצומת אות.הקוד המקורי נכתב ב פונקציה קו יחיד 2000, מה שהופך את זה קשה להוסיף אלגוריתמים חדשים בקרת תנועה. צוות החליט לשנות את הפונקציות הקטנות יותר עבור נתיב, תזמון, ודינמיקה הם עשו כמה טעויות המיוצרות ללא בדיקות, החל מ- 130 נקודות קצה אחד, החל מ-הטווח אחד של פעולות קבועות על ידי הסרת קוד פתוח באופן אוטומטי.
מסקנה
מתן הוא כלי רב עוצמה לשיפור יכולת התחזוקה והארוכותיות של תוכנה להנדסה אזרחית, אבל זה נושא סיכונים ייחודיים בשל הדיוק המתמטי והטבע הביקורתי של התחום.על ידי הימנעות מטעויות נפוצות של בדיקות לא מספיקות, שינויים לא מכוונים, over-refactoring, הזנחה ביצועים תלויה, בקרה גמישה של גרסאות, ואימות הנדסת תחומים ספציפי, מפתחים יכולים לפתח באופן בטוח קודים ללא יעילות אסטרטגיות - פיתוח יעיל יותר, פיתוח יעיל של פיתוח עצמי, פיתוח עצמי, תוך שימוש באסטרטגיות יעילות של פעילות יעילה יותר, תוך שימוש באסטרטגיות בטיחות, תוך שימוש באסטרטגיות יעילות, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמי, פיתוח עצמי, תוך שימוש באסטרטגיות יעילות יותר, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות של פעילות יעילה יותר, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, פיתוח עצמיות, תוך שימוש באסטרטגיות יעילות יותר, פיתוח עצמיות, פיתוח עצמיות