מודלים של מחזור חיי תוכנה

מסמכים קשורים
מהוא לתכנות ב- JAVA מעבדה 3

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

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

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

סדנת תכנות ב C/C++

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

מקביליות

מצגת של PowerPoint

מבוא למדעי המחשב

PowerPoint Presentation

תורת הקומפילציה

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

הגשה תוך שבוע בשעת התרגול

PowerPoint Presentation

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

Slide 1

Homework Dry 3

מקביליות

ex1-bash

מבוא למדעי המחשב

תרגול 1

מבוא לתכנות ב- JAVA תרגול 7

מבוא למדעי המחשב

מודלים של מחזור חיי תוכנה

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

מבוא לתכנות ב- JAVA תרגול 11

Overview of new Office 365 plans for SMBs

תרגול מס' 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

מבוא למדעי המחשב

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

Microsoft PowerPoint - Lecture1

Slide 1

Slide 1

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 07_tdd.ppt

Microsoft PowerPoint - 07_tdd.ppt

PowerPoint Presentation

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

שאלהIgal : מערכים דו מימדיים רקורסיה:

PowerPoint Presentation

מבוא למדעי המחשב

Microsoft PowerPoint - SWE support&QA.pptx

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

Microsoft PowerPoint - lec10.ppt

Slide 1

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

מתכונת עיצוב 3013

מקביליות

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב - חובלים

Slide 1

PowerPoint Presentation

תרגיל 3 בקורס תוכנה 1

PowerPoint Presentation

Microsoft Word - sync_LG.doc

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft PowerPoint - rec1.ppt

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

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

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

PowerPoint Presentation

w-2003

תכנות מונחה עצמים א' – תש"ע

PowerPoint Presentation

אתגר קוביות מחייכות תכולה: 12 קוביות חוברת הוראות ופתרונות ספרון הכולל 60 חידות חידות בדרגות קושי שונות תפיסה חזותית וחשיבה לוגית הקדמה המשחק פרצופים

Microsoft Word B

התגוננות בפני כוחות האופל

Slide 1

Microsoft Word - c_SimA_MoedB2005.doc

שקופית 1

שקופית 1

Slide 1

מבוא למדעי המחשב

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - rec3.ppt

PowerPoint Presentation

Microsoft Word - Ass1Bgu2019b_java docx

שאלהIgal : מערכים דו מימדיים רקורסיה:

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Microsoft PowerPoint - 10_threads.ppt

מדריך לחיפוש במאגר JCR Journal Citation Reports מעודכן לדצמבר 2015 כל הזכויות שמורות לתחום היעץ, אוניברסיטת חיפה, הספריה

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Microsoft Word - pitaron222Java_2007.doc

תרגול 3 - מערכים

Slide 1

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Slide 1

תמליל:

קידוד ובדיקת יחידות )קוב"י( Coding and Unit Testing (CUT) קידוד ובדיקת יחידות - 1

CSU Software CSC CSCI System Business פעילות הקידוד ובדיקת היחידות קלט מבנה וארגון התוכנה מודל מחלקות model) (class תהליכי תוכנה מפורטים מודל מכונת מצבים model) (state machine מודל רצפים model) (sequence תוצרים עיקריים רמת עניין קוד מקור שפת תכנות יחידות בדוקות מודולי ריצה שנבדקו באופן עצמאי בדיקות מערכת בסביבת התפעול שילוב חומרה / תוכנה ובדיקות מערכת ניתוח וארכיטקטורת מערכת הגדרת דרישות הלקוח ובעלי העניין שילוב רכיבים ובדיקות פריטים ניתוח וארכיטקטורת תוכנה שילוב יחידות ובדיקות רכיבים תכן תוכנה זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקת יחידות הגדרה ופירוט Definition and Specification קידוד ובדיקת יחידות - 2

תוכן העניינים עקרונות לקידוד נכון בדיקות יחידה קידוד ובדיקת יחידות - 3

עקרונות לקידוד נכון תוכנית מחשב נועדה לקריאה שמות מבנה שמות משמעותיים ועקביים עריכה חזותית של הקוד ע י כתיבה מדורגת )indented( שורות ריקות מבנים ברורים וברי-עקיבה מבני בקרה מבני נתונים הקטנת סיבוכיות הקוד הערות בני-אנוש לכידות (cohesion) וצימוד (coupling) )comments( הבהרות של כל מה שלא מובן מאליו קידוד ובדיקת יחידות - 4

שימוש נכון בשמות שמות משמעותיים קשר בין השם לבין מה שהוא מייצג שמות מלאים, אך ללא סירבול מיותר The_DataBase_Capacity_Counter = The_DataBase_Capacity_Counter + 1; חד משמעיות מה מייצג המשתנה?fstpt שמירה על עקביות first point? (first_point, frstpnt, point1) file start pointer? (file_start_ptr) fast prototype? (fastpt) דוגמה גרועה: ייצוג המונח תדירות )frequency( באופנים שונים freqaverage, frequencymaximum, minfr, frqncytotl קידוד ובדיקת יחידות - 5

קוד המתעד את עצמו code) *(self documenting מה עושה התוכנית הבאה* for ( i = 2; i <= num; i ++ ) { meetscriteria[ i ] = true; } for ( i = 2; i <= num / 2; i++ ) { j = i + i; while ( j <= num ) { meetscriteria[ j ] = false; i = j + i; } } for ( i = 2; i <= num; i ++ ) { if ( meetscriteria[ i ] ) { system.out.println ( i + " meets criteria." ); } } * Steve McConnell, Code Complete, 2 nd Edition, Microsoft, 2004 קידוד ובדיקת יחידות - 6

אותה תוכנית בסגנון של self-documenting code For ( primecandidate = 2; primecandidate <= num; primecandidate++ ) { isprime[ primecandidate ] = true; } for ( int factor = 2; factor < ( num / 2 ); factor++ ) { int factorablenumber = factor + factor; while ( factorablenumber <= num ) { isprime[ factorablenumber ] = false; factorablenumber = factorablenumber + factor; } } for ( primecandidate = 2; primecandidate <= num; primecandidate++ ) { if ( isprime[ primecandidate ] ) { system.out.println( primecandidate + " is prime." ); } } קידוד ובדיקת יחידות - 7

CHECKLIST: Self-Documenting Code Classes (1) Classes Does the class's interface present a consistent abstraction? Is the class well named, and does its name describe its central purpose? Does the class's interface make obvious how you should use the class? Is the class's interface abstract enough that you don't have to think about how its services are implemented? Routines Can you treat the class as a black box? Does each routine's name describe exactly what the routine does? Does each routine perform one well-defined task? Have all parts of each routine that would benefit from being put into their own routines been put into their own routines? Is each routine's interface obvious and clear? קידוד ובדיקת יחידות - 8

CHECKLIST: Self-Documenting Code Classes (2) Data Names Are type names descriptive enough to help document data declarations? Are variables named well? Are variables used only for the purpose for which they're named? Are loop counters given more informative names than i, j, and k? Are well-named enumerated types used instead of makeshift flags or boolean variables? Are named constants used instead of magic numbers or magic strings? Do naming conventions distinguish among type names, enumerated types, named constants, local variables, class variables, and global variables? Data Organization Are extra variables used for clarity when needed? Are references to variables close together? Are data types simple so that they minimize complexity? Is complicated data accessed through abstract access routines (abstract data types)? Control Is the nominal path through the code clear? Are related statements grouped together? קידוד ובדיקת יחידות - 9

תיעוד בגוף הקוד )comments( סוגי הערות חזרה על הקוד מביאות יותר טרחה מאשר תועלת X = X+1; /* add 1 to X */ הסבר של הקוד נועדו להסביר קוד מתוחכם, מסובך או רגיש קוד שקשה להסביר עדיף לשנות מאשר לתעד סימונים )זמניים( בתוך הקוד תזכורות שיש לשים לב אליהן, אך להסירן בשלב מאוחר יותר כתובות בצורה "מאירת עיניים" return NULL; // ********** NOT DONE! FIX BEFORE RELEASE סיכום / תקציר של הקוד מספר שורות קצרות תאור כוונת הקוד הסבר ברמת הבעיה, לא ברמת הפתרון update employeerecord object ולא get current employee information מידע שלא ניתן לביטוי ברור על ידי הקוד עצמו דקויות ההבנה הקיימות בזמן הכתיבה, לא יהיו מובנות מאליהן בשלבים מאוחרים יותר, או ע י אנשים אחרים! קידוד ובדיקת יחידות - 10

תחזוקת התיעוד גם התיעוד בגוף הקוד עומד להשתנות עם שינויי הקוד, קוד קשה לתחזוקה ולכן הוא צריך להיות כתוב בצורה נוחה לתחזוקה /********************************************************************** * class: GigaTron (GIGATRON.CPP) * * author: Dwight K. coder * * date: July 4, 2014 * * * * Routines to control the twenty-first century's code evaluation * * tool. The entry point to these routines is the Evaluatecode() * * routine at the bottom of this file. * **********************************************************************/ קוד קל לתחזוקה /********************************************************************** class: GigaTron (GIGATRON.CPP) author: Dwight K. coder date: July 4, 2014 Routines to control the twenty-first century's code evaluation tool. The entry point to these routines is the Evaluatecode() routine at the bottom of this file. **********************************************************************/ קידוד ובדיקת יחידות - 11

הקטנת סיבוכיות הקוד הקטנת הסיבוכיות מהווה עקרון מפתח בכל שלבי )פריטי( התכן מערכת, רכיב, מארז, מחלקה, מתודה סיבוכיות נובעת מהקומבינטוריקה של הקשרים שבין "דברים" שונים לכידות (cohesion) מידת הקירבה שיש בין שני "דברים" בתוך אותו פריט לכידות פונקציונלית cohesion) (functional כל החלקים )קוד או נתונים( של הפריט משמשים להשגת פונקציונליות אחת ללא אפקטי לוואי יש לשאוף ללכידות פונקציונלית גבוהה ולהימנע מסוגים אחרים של לכידות צימוד (coupling) מידת התלות שיש בין שני פריטים יש לשאוף לצימוד רופף coupling) (loose טכניקות להבטחת צימוד רופף: אבסטרקציה, כמיסה,(encapsulation) הסתרת-מידע קידוד ובדיקת יחידות - 12

משפטי תנאי ברורים האם [X,Y] קואורדינטה נמצאת באיזור המסומן )והיכן(? 2 1 קידוד ובדיקת יחידות - 13

משפטי תנאי ברורים - המשך if (latitude > 35 && longitude > 90) { if (latitude <= 40 && longitude <= 100) mapsquareno = 1; else if (latitude <= 45 && longitude <= 100) mapsquareno = 2; else System.out.println( Not on the map ); } else System.out.println( Not on the map ); if (longitude > 90) && longitude <= 100 && latitude > 35 && latitude <= 40) mapsquareno = 1; else if (longitude > 90 & longitude <= 100 && latitude > 40 && latitude <= 45) mapsquareno = 2; else System.out.println( Not on the map ); קידוד ובדיקת יחידות - 14

משפטי תנאי ברורים - עקרונות if <condition1> if <condition2> if <condition1> && <condition2> משפטי תנאי מקוננים - קשים לקריאה if-if if-else-if בדרך כלל יש שקילות בין שני המבנים: כלל אצבע: יש להמנע ממשפטי תנאי מקוננים בעומק של יותר מ- 3 רמות. קידוד ובדיקת יחידות - 15

CHECKLIST: Using Conditionals* if-then Statements Is the nominal path through the code clear? Do if-then tests branch correctly on equality? Is the else clause present and documented? Is the else clause correct? Are the if and else clauses used correctly-not reversed? Does the normal case follow the if rather than the else? if-then-else-if Chains Are complicated tests encapsulated in boolean function calls? Are the most common cases tested first? Are all cases covered? Is the if-then-else-if chain the best implementation-better than a case statement? case Statements Are cases ordered meaningfully? Are the actions for each case simple-calling other routines if necessary? Does the case statement test a real variable, not a phony one that's made up solely to use and abuse the case statement? Is the use of the default clause legitimate? Is the default clause used to detect and report unexpected cases? In C, CH, or Java, does the end of each case have a break? * Steve McConnell, Code Complete, 2 nd Edition, Microsoft, 2004 קידוד ובדיקת יחידות - 16

תוכן העניינים עקרונות לקידוד נכון בדיקות יחידה קידוד ובדיקת יחידות - 17

בדיקות יחידה unit חלק קוד שיכול לעבור קומפילציה בנפרד וניתן לבדיקה עצמאית בדרך כלל נכתב ונבדק ע"י תכנת בודד driver driver יחידת דמה המפעילה יחידה אחרת בדיקת היחידה המופעלת לצורך stub unit (under test) יחידת דמה המופעלת מתוך יחידה אחרת, לצורך בדיקת היחידה המפעילה stub stub stub קידוד ובדיקת יחידות - 18

סביבת בדיקות יחידה למחלקה Unit Testing Configuration «stub» StubA «driver» UUT_Driver «stub» stubb Operational Configuration «interface» IFClassA «operational» UnitUnderTest (UUT) «interface» IFClassB «operational» ClassA «operational» ClassB קידוד ובדיקת יחידות - 19

שיטות לבדיקת יחידה קופסה שחורה )black box( בחינת התפקוד של היחידה בתוך המערכת נכונות הפלט / התגובה קופסה לבנה ערכים "חוקיים" ערכים "לא חוקיים" מהירות התגובה )white box, glass box( בחינת המבנה הפנימי של היחידה מסלולי החישוב נכונות החישובים נכונות ההחלטות הלוגיות בכל אחת מהשיטות יש להכין קובץ נתוני בדיקה data) (test לכיסוי כל המקרים השונים קידוד ובדיקת יחידות - 20

בדיקות יחידה קופסה שחורה בדיקות כיסוי פונקציונלי ליחידה f(x 1,..., X n ) נתוני הבדיקה צריכים לייצג את כל מחלקות-השקילות classes) (equivalence של ערכי הארגומנטים עבור כל ארגומנט X :, אם היחידה אמורה להגיב באופן מוגדר לערכי X בתחום נתון [L,U] אזי יש לבדוק את f עם חמישה ערכים שונים של X: X > U, X = U, L < X < U, X = L X < L אם היחידה אמורה להגיב באופן מוגדר לערכי X מתוך קבוצה נתונה S, אזי יש לבדוק את f עם שני ערכים שונים של X: S הוא איבר בקבוצה X X,, איננו איבר בקבוצה S אם היחידה אמורה להגיב באופן מוגדר לערך קבוע p, אזי יש לבדוק את f עם שני ערכים שונים של X: X p X = p קידוד ובדיקת יחידות - 21

בדיקות יחידה קופסה לבנה read (kmax) //1 <= kmax <= 18 for (k=0; k < kmax; k++) do { read(mychar) switch (mychar) { case A : blocka; if (cond1) blockc; break; case B : blockb; if (cond2) blockc; break; case C : blockc; break; } blockd } blocka cond1 A mychar C blockc blockd B blockb cond2 loop <= 18 times מספר המעברים האפשריים: = 4.77x10 12 18 + 5... + 3 5 1 + 5 2 + 5 קידוד ובדיקת יחידות - 22

(McCabe, 1976) בדיקת מסלולי-בסיס testing( )Base Path שיטה קלאסית לבדיקת קופסה לבנה כיסוי כל המעברים האפשריים בתוך היחידה בניית גרף זרימה graph( )flow של היחידה צומת - יחידת חישוב ללא הסתעפות קשת - הסתעפות בחישוב מסלול בלתי-תלוי מסלול מהתחלה לסיום, הכולל לפחות צומת אחד חדש, לעומת מסלולים אחרים קידוד ובדיקת יחידות - 23

בדיקת מסלולי-בסיס - דוגמה 1: do while records remain read record; 2: if record field 1 = 0 3: then process record; store in buffer; increment counter; else 4: if record field 2 = 0 5: then reset counter; 6: else process record; 7: endif endif 8: enddo 9:end a procedure in PDL store in file; base paths path 1: 1-9 path 2: 1-2 - 3-8 - 1-9 path 3: 1-2 - 4-5 - 7-8 - 1-9 path 4: 1-2 - 4-6 - 7-8 - 1-9 flow graph 1 2 4 6 5 7 8 9 3 קידוד ובדיקת יחידות - 24

G של הגרף (Cyclomatic Complexity) הסיבוכיות הציקלומטית - V(G) מספר מסלולי הבסיס הוא סופי )וקטן!( המספר המקסימלי של מסלולים בלתי תלויים (צמתים = N, קשתות = (E V(G) = E - N + 2 (מספר הצמתים מהן יוצאת יותר מקשת אחת * = P) = P + 1 * לגרפים עם דרגת יציאה 2 לכל היותר )מספר האיזורים הסגורים + האיזור "הפתוח" = R) = R e1 1 e2 2 e3 e4 1 2 1 2 R1 e5 4 e6 6 5 e7 7 e8 e9 8 3 e10 e11 4 6 5 7 8 3 4 R2 6 R3 5 7 R4 8 3 9 9 9 11 9 + 2 = 3+1 = 4 קידוד ובדיקת יחידות - 25

CSU Software CSC CSCI System Business פעילות הקידוד ובדיקת היחידות - סיכום קלט מבנה וארגון התוכנה מודל מחלקות model) (class תהליכי תוכנה מפורטים מודל מכונת מצבים model) (state machine מודל רצפים model) (sequence תוצרים עיקריים רמת עניין קוד מקור שפת תכנות יחידות בדוקות מודולי ריצה שנבדקו באופן עצמאי בדיקות מערכת בסביבת התפעול שילוב חומרה / תוכנה ובדיקות מערכת ניתוח וארכיטקטורת מערכת הגדרת דרישות הלקוח ובעלי העניין שילוב רכיבים ובדיקות פריטים ניתוח וארכיטקטורת תוכנה שילוב יחידות ובדיקות רכיבים תכן תוכנה זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקת יחידות הגדרה ופירוט Definition and Specification קידוד ובדיקת יחידות - 26