שקופית 1

מסמכים קשורים
Microsoft PowerPoint - 07_tdd.ppt

Microsoft PowerPoint - 07_tdd.ppt

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

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

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

Homework Dry 3

Slide 1

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

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

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

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

Microsoft PowerPoint - lec10.ppt

Slide 1

Microsoft PowerPoint - rec3.ppt

PowerPoint Presentation

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

מהוא לתכנות ב- JAVA מעבדה 3

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

תרגול 1

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

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

PowerPoint Presentation

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

Microsoft Word - c_SimA_MoedB2005.doc

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

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

Microsoft Word B

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

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

Slide 1

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

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

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

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

PowerPoint Presentation

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

מצגת של PowerPoint

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

Microsoft PowerPoint - rec8.ppt

Slide 1

Microsoft Word - pitaron222Java_2007.doc

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

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

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

Slide 1

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

Microsoft PowerPoint - L01-n.ppt

PowerPoint Presentation

PowerPoint Presentation

Slide 1

Overview of new Office 365 plans for SMBs

Microsoft PowerPoint - lec2.ppt

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

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

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

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

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

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

פייתון

תרגול מס' 1

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

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

PowerPoint Presentation

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

eriktology The Prophets Book of 1 st Kings [1]

מקביליות

Slide 1

Slide 1

Slide 1

eriktology The Writings Book of Proverbs [1]

eriktology The Writings Book of Psalms [1]

eriktology The Prophets Book of Isaiah [1]

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Slide 1

Slide 1

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

Microsoft PowerPoint - Lecture1

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

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Microsoft Word - דוגמאות ב

תרגול 1

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

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

Tutorial 11

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

תמליל:

תכנות מונחה בדיקות )Test Driven Development( אוהד ברזילי אוניברסיטת תל אביב

המצגת מבוססת על הספר: Test-Driven Development By Example By Kent Beck Publisher: Addison Wesley Date: November 08, 2002 ISBN: 0-321-14653-0 Pages: 240

היום בשיעור XP כרקע לפיתוח גישת התכנות מונחה הבדיקות עקרונות הגישה דוגמא מודרכת Fibonacci - טעימה מתוך דוגמא מודרכת Money סיכום 3 אוניברסיטת תל אביב

בדיקות תחילה קוד נקי שעובד )clean code that works( קוד חדש נכתב רק אחרי שבדיקה אוטומטית נכשלת הסרת כפילויות השלכות טכניות התכן )design( מלווה בקידוד המתכנת כותב את הבדיקות קומפילציה מהירה צימוד חלש בין רכיבים 4 אוניברסיטת תל אביב

- שכתוב ירוק אדום אדום כתוב בדיקה שנכשלת )אולי אפילו לא עוברת קומפילציה( ירוק תעשה במהירות שהבדיקה תצליח קדושות של עקרונות תכנות נכונים( )תוך אולי שחיטת פרות שכתוב )refactoring( הסר את הכפילויות בקוד שכראה הכנסת בשלב הקודם 5 אוניברסיטת תל אביב

אומץ If pain is nature's way of saying "Stop!" then fear is nature's way of saying "Be careful." 6 אוניברסיטת תל אביב

Fibonacci נתחיל בדוגמא פשוטה ברצוננו לכתוב פונקציה המחשבת איבר בסדרת פיבונאצ'י נכתוב את הפונקציה בגישה של Test First 7 אוניברסיטת תל אביב

שלבי העבודה 1. Quickly add a test. 2. Run all tests and see the new one fail. 3. Make a little change. 4. Run all tests and see them all succeed. 5. Refactor to remove duplication. 8 אוניברסיטת תל אביב

איך מתחילים? התכנות שלנו מונע מסיפורים )תסריטים( "נרצה שאפשר יהיה לבצע במערכת..." מה נרצה שתעשה הפונקציה? ניצור מחלקה ששם יישב קוד הבדיקה public class TestFib extends TestCase { public void testfibonacci() { assertequals(0, fib(0)); TODO List: fib(0) == 0 9 אוניברסיטת תל אביב

תעשה שיתקמפל נוסיף קוד מינימלי כדי לפתור את בעיית הקומפילציה נריץ... )את קוד הבדיקה( ירוק int fib(int i){ return 0; 10 אוניברסיטת תל אביב

נוסיף עוד בדיקה אפשר להוסיף עוד מתודת בדיקה חדשה: public void testfibonacciofoneisone() { assertequals(1, fib(1)); public void testfibonacci() { assertequals(0, fib(0)); assertequals(1, fib(1)); אנחנו נסתפק ב: אדום נריץ... TODO List: fib(0) == 0 fib(1) == 1 11 אוניברסיטת תל אביב

תעשה שיהיה ירוק נוסיף קוד מינימלי כדי להפוך את הפס לירוק int fib(int n) { if (n == 0) return 0; return 1; נריץ... )את קוד הבדיקה( ירוק TODO List: fib(0) == 0 fib(1) == 1 12 אוניברסיטת תל אביב

הסרת כפילויות הכפילויות הפעם הן בבדיקה )refactoring( )ולא בקוד( נסיר אותן public void testfibonacci() { int cases[][]= {{0,0,{1,1; for (int i= 0; i < cases.length; i++) assertequals(cases[i][1], fib(cases[i][0])); נוודא שלא הרסנו כלום )או שלא גילינו באג חדש(... ירוק 13 אוניברסיטת תל אביב

נוסיף עוד בדיקה קל להוסיף את הבדיקה בפונקציה הבדיקה המשוכתבת )6 הקשות מקלדת בלבד!( public void testfibonacci() { int cases[][]= {{0,0,{1,1,{2,1; for (int i= 0; i < cases.length; i++) assertequals(cases[i][1], fib(cases[i][0])); נריץ... עדיין ירוק TODO List: fib(0) == 0 fib(1) == 1 fib(2) == 1 14 אוניברסיטת תל אביב

ואחת לשנה הבאה רק בשביל להיות בטוחים שסיימנו... public void testfibonacci() { int cases[][]= {{0,0,{1,1,{2,1,{3,2; for (int i= 0; i < cases.length; i++) assertequals(cases[i][1], fib(cases[i][0])); נריץ... אדום )שזה טוב, גילינו באג!( TODO List: fib(0) == 0 fib(1) == 1 fib(2) == 1 15 אוניברסיטת תל אביב fib(3) == 2

תעשה שיהיה ירוק נוסיף קוד מינימלי כדי להפוך את הפס לירוק int fib(int n) { if (n == 0) return 0; if (n <= 2) return 1; return 2; ירוק נריץ... TODO List: fib(0) == 0 fib(1) == 1 fib(2) == 1 16 אוניברסיטת תל אביב שכתוב: מאיפה הגיע ה- 2? זהו בעצם 1+1 fib(3) == 2

שכתוב int fib(int n) { if (n == 0) return 0; if (n <= 2) return 1; return 1 + 1; קיבלנו: int fib(int n) { if (n == 0) return 0; if (n <= 2) return 1; return fib(n-1) + 1; fib(n-1) fib(n-2) ה- 1 הראשון הוא בעצם ה- 1 השני הוא בעצם 17 אוניברסיטת תל אביב

שכתוב int fib(int n) { if (n == 0) return 0; if (n <= 2) return 1; return fib(n-1) + fib(n-2); ה- 1 השני הוא בעצם fib(n-2) int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n-1) + fib(n-2); נכליל עבור,fib(2) וסיימנו 18 אוניברסיטת תל אביב

דוגמא נוספת מערכת אמיתית לניהול תיק השקעות c2.com/doc/oopsla91.html נרצה לממש מחלקה שמייצגת כסף Instrument Shares Price Total IBM 1000 25 25000 GE 400 100 40000 Total 65000 19 אוניברסיטת תל אביב

דוגמא מודרכת לאחר כמה שנים נתבקש המתכנת לתמוך בעוד מטבעות )פרט ל )Dollar Instrument Shares Price Total IBM 1000 25 USD 25000 USD Novartis 400 150 CHF 60000 CHF Total 65000 USD From To Rate CHF USD 1.5 20 אוניברסיטת תל אביב

מתחילים TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 התכנות שלנו מונע מסיפורים )תסריטים( "נרצה שאפשר יהיה לבצע במערכת..." בשלב ראשון נתאר את התסריט במונחים של עצמים מטיפוס Dollar public void testmultiplication() { Dollar five= new Dollar(5); five.times(2); assertequals(10, five.amount); ה- test מרמז על design נוראי: public fields side-effects integers for monetary amounts 21 אוניברסיטת תל אביב

תרגיעי את הקומפיילר שלך TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? No class Dollar No constructor No method times(int) No field amount class Dollar { Dollar(int amount) { void times(int multiplier) { int amount; 22 אוניברסיטת תל אביב

תיקון מינימלי ירוק עכשיו מה יש לשכתב כאן? אין בקוד שכפול קוד אבל יש תלות בין קוד הבדיקה והקוד הנבדק אם ה- 10 היה נכתב כ- 5*2 התלות היתה בולטת יותר class Dollar { TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? Dollar(int amount) { void times(int multiplier) { int amount = =10 5 * 2 ; 23 אוניברסיטת תל אביב

הסרת תלות TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? // Dollar.java int amount; void times(int multiplier) { amount= 5 * 2; לאט, לאט התלות עברה ל times איך ניפטר מה-? 5 Dollar(int amount) { this.amount= amount; 24 אוניברסיטת תל אביב

הסרת תלות TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? // Dollar.java int amount; void times(int multiplier) { amount= amount * 2; לאט, לאט התלות עברה ל times איך ניפטר מה-? 5 איך ניפטר מה-? 2 Dollar(int amount) { this.amount= amount; 25 אוניברסיטת תל אביב

הסרת תלות TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? // Dollar.java int amount; void times(int multiplier) { amount= amount * multiplier; לאט, לאט התלות עברה ל times איך ניפטר מה-? 5 איך ניפטר מה-? 2 amount מופיע פעמיים Dollar(int amount) { this.amount= amount; 26 אוניברסיטת תל אביב

הסרת תלות TODO List: $5 + 10 CHF = $10 if rate is 2:1 $5 * 2 = $10 Make "amount" private Dollar side-effects? Money rounding? // Dollar.java int amount; void times(int multiplier) { amount *= multiplier; לאט, לאט התלות עברה ל times איך ניפטר מה-? 5 איך ניפטר מה-? 2 amount מופיע פעמיים Dollar(int amount) { this.amount= amount; 27 אוניברסיטת תל אביב

סיכום ביניים Made a list of the tests we knew we needed to have working Told a story with a snippet of code about how we wanted to view one operation Made the test compile with stubs Made the test run by committing horrible sins Gradually generalized the working code, replacing constants with variables Added items to our to-do list rather than addressing them all at once 28 אוניברסיטת תל אביב

בהקשר כללי יותר Write a test. Make it run Make it right 29 אוניברסיטת תל אביב

Write a test Think about how you would like the operation in your mind to appear in your code. You are writing a story. Invent the interface you wish you had. Include all of the elements in the story that you imagine will be necessary to calculate the right answers. 30 אוניברסיטת תל אביב

Make it run Quickly getting that bar to go to green dominates everything else If a clean, simple solution is obvious, then type it in If the clean, simple solution is obvious but it will take you a minute, then make a note of it and get back to the main problem, which is getting the bar green in seconds This shift in aesthetics is hard for some experienced software engineers They only know how to follow the rules of good engineering Quick green excuses all sins. But only for a moment 31 אוניברסיטת תל אביב

Make it right Now that the system is behaving, put the sinful ways of the recent past behind you Step back onto the straight and narrow path of software righteousness Remove the duplication that you have introduced, and get to green quickly 32 אוניברסיטת תל אביב

רוצים עוד? עוד TDD עוד XP 33 אוניברסיטת תל אביב