מצגת השיעור - קורס תכנות מתקדם
Download
Report
Transcript מצגת השיעור - קורס תכנות מתקדם
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
תכנות מתקדם 89-210
תרגול מספר 7
תשע"א 2010-2011
כלים שימושיים 1
אליהו חלסצ'י
89-210תכנות מתקדם -תרגול 7
הקדמה
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
בדיקות תוכנה
•
•
•
•
הקדמה
Junit
ANT
SVN
הטמעה
לא ניתן לבנות תוכנה שתקבל תוכנה כקלט ,ובאופן
אוטומטי תכריע לגבי נכונותה כלומר תבצע אימות תוכנה.
(הבעיה אינה ניתנת להכרעה – תלמדו על זה בחישוביות)
ביצע אימות ידני בא במחיר יקר מידי לרוב המערכות.
לכן מבצעים בדיקות ( ,)testingשמטרתן להגביר את
הביטחון שלנו בנכונות התוכנה ע"י סדרה של הרצות
ומציאת פגמים.
הבדיקות לא מוכיחות נכונות ,אבל מועילות באופן מעשי
להקטנת הפגמים.
89-210תכנות מתקדם -תרגול 7
בדיקות תוכנה
•
•
•
•
הקדמה
Junit
ANT
SVN
הטמעה
בעבר היו בדיקות התוכנה תחום חובבני שבוצע על ידי
התוכניתנים עצמם.
היום זהו נדבך עיקרי בתהליך הפיתוח.
שיטה נפוצה היא "פיתוח מונחה בדיקות" ,אפילו פעם
היה טרנד ה ” "Extreme Programmingשל קנט בק
המבוססת על פיתוח מונחה הבדיקות.
פיתוח מונחה בדיקות Test driven development( -
ובקיצור )TDDזו מתודולוגית פיתוח בה בדיקת
היחידה נכתבת עוד לפני הקוד אותו היא בודקת.
89-210תכנות מתקדם -תרגול 7
בדיקות תוכנה
הקדמה
Junit
ANT
SVN
הטמעה
• סוגי הבדיקות:
–
–
–
–
בדיקות יחידה ) - (Unitבדיקות ברמת יחידת תוכנה (מודול).
לרוב מבוצעות על ידי מפתח התוכנה.
בדיקות אינטגרציה ( – )Integrationמבוצע לאחר בדיקות
היחידה ,נבדקים מס' מודולים יחד או התוכנית כולה .לרוב
מבוצע ע"י צוות .QA
בדיקות מערכת ( - )Systemבדיקות המערכת בכללותה ,בדרך
כלל בראיית המשתמש.
בדיקות קבלה ) – (Acceptanceבדיקות שנעשות ע"י
הלקוח ,או צוות שמדמה אותו.
• היום נלמד על כלי שעוזר לנו ברמת בדיקת היחידה.
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
JUnit
• JUnitהוא כלי חופשי שיוצר תשתית פשוטה
לכתיבה ולהרצה של בדיקות חוזרות ב .java
• רק באמצעות תשתית ראויה ניתן לקיים את
שיטת פיתוח מונחה הבדיקות ,ו JUnitמספק
אותה.
• ניתן להורדה מהאתר http://junit.org/אך הקוד
כבר מובנה ב ,eclipseבאתר גם דוקומנטציה
מלאה.
הקדמה
Junit
ANT
SVN
הטמעה
public class IntCalc {
public int pls(int x,int y){
return x+y;
}
public int sub(int x,int y){
return y-x;
}
public int mul(int x,int y){
return x*y;
}
}
7 תרגול- תכנות מתקדם89-210
הקדמה
Junit
ANT
SVN
הטמעה
import junit.framework.TestCase;
public class IntCalcTest extends TestCase {
public void testPls() {
fail("Not yet implemented");
}
public void testSub() {
fail("Not yet implemented");
}
public void testMul() {
fail("Not yet implemented");
}
}
7 תרגול- תכנות מתקדם89-210
הקדמה
Junit
ANT
SVN
הטמעה
import junit.framework.TestCase;
public class IntCalcTest extends TestCase {
private IntCalc ic;
protected void setUp(){
ic=new IntCalc();
}
public void testPls() {
assertEquals(5, ic.pls(3, 2));
}
public void testSub() {
assertEquals(8, ic.sub(16, 8));
assertEquals(-8, ic.sub(8, 16));
}
public void testMul() {
assertEquals(2147483644, ic.mul(1073741822, 2));
}
7 תרגול- תכנות מתקדם89-210
הקדמה
Junit
ANT
SVN
הטמעה
7 תרגול- תכנות מתקדם89-210
ANT
. שלנוjava לפרויקט הbuild זה כלי לביצועANT •
:• מתוך דברי המחבר
• In theory, it is kind of like make, without make's wrinkles.
• all those tools have limitations that Ant's original author
couldn't live with when developing software across
multiple platforms.
• Makefiles are inherently evil as well. Anybody who has
worked on them for any time has run into the dreaded
tab problem. "Is my command not executing because I
have a space in front of my tab?!!" said the original
author of Ant way too many times.
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
ANT
• ANTשונה מ buildersאחרים בכך שלצורך
הבנייה לא מממשים סקריפטים שתלויים במערכת
ההפעלה ,אלא מממשים מסמכי XML
שבאמצעותם בונים את הפרויקט.
• את ANTניתן להוריד מהאתר
http://ant.apache.org/
• כדאי גם להיכנס ל Manualכדי ללמוד עוד,
התכנים מוסברים שם היטב.
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
ANT
•
התקנה על חלונות לא כזו פשוטה ,בצעו את הדברים הבאים:
– הורידו את קובץ ה zipמהאתר ,ותפתחו אותו לתוך תיקייה כגון ”.“c:\ant
– קליק ימני על המחשב שלימאפיינים מתקדם משתני סביבה.
– הוסיפו את המשתנים הבאים:
•
•
•
•
c:\ant\bin PATH
c:\ant ANT_HOME
JAVA_HOMEתיקיית ה JDKשלכם ,לדוגמא
( C:\Program Files\Java\jdk1.6.0_05תוודאו שיש שם קובץ בשם )tools.jar
אשרו הכל.
– כנסו ל ( Shellהתחל הפעלה )cmd
– גשו ל c:\ant\binורשמו ,antהפקודה תפעיל את ant.bat
• בדיקה :אם קיבלתם
!Buildfile: build.xml does not exist
Build failedזה בסדר גמור.
• בדיקה שנייה גשו לתיקייה אחרת ותכתבו ,ant –versionאתם אמורים לקבל את
הגרסא הנוכחית של ant
הקדמה
Junit
ANT
SVN
הטמעה
7 תרגול- תכנות מתקדם89-210
hello.java
public class hello {
public static void main( String[] args ){
System.out.println( "Hello World" );
}
}
דוגמא לבנייה רגילה
build.xml
<project default="compile">
<target name="compile">
<javac srcdir="." />
</target>
</project>
הקדמה
Junit
ANT
SVN
הטמעה
7 תרגול- תכנות מתקדם89-210
hello.java
public class hello {
public static void main( String[] args ){
System.out.println( "Hello World" );
}
}
Jar דוגמא לבניית
build.xml
<project default="compile">
<target name="compile">
<javac srcdir="." />
</target>
<target name="jar“
depends="compile">
<jar destfile="hello.jar“
basedir=".“
includes="**/*.class" />
</target>
</project>
הקדמה
Junit
ANT
SVN
הטמעה
7 תרגול- תכנות מתקדם89-210
Jar דוגמא לבניית
והרצתו
build.xml
<project default="compile">
<target name="compile">
<javac srcdir="." />
</target>
<target name="jar“
depends="compile">
<jar destfile="hello.jar“
basedir=".“
includes="**/*.class" />
</target>
<target name="run"
depends="jar">
<java classname="hello"
classpath="hello.jar" fork="true" />
</target>
</project>
http://ideoplex.com/focus/java תבקרו באתרANT בJUnit כגון שילוב,ללימוד נוסף
.ממנו נלקחו הדוגמאות
89-210תכנות מתקדם -תרגול 7
ניהול גרסאות version control
• משמש לניהול פיתוח מתמשך של מסמכים דיגיטליים
שעובדים עליהם צוות של מפתחים.
• השינויים מזוהים כמספר גרסא.
• כלים לניהול גרסאות מאפשרים:
– יכולת לחזור לכל מצב קודם כשהקוד נפגם.
– בקרה על השינויים שבקוד.
– ניהול תוכנה בכמה גרסאות( .תיקון באגים וכו')
• מערכת ריכוזית :כולם עובדים על אותו מאגר משותף
• מערכת ביזורית :כל אחד עובד על מאגר משלו ואח"כ
משתף במאגר הכללי.
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
ניהול גרסאות version control
הקדמה
Junit
ANT
SVN
הטמעה
• נעילה של קובץ:
– כאשר 2מתכנתים עובדים על אותו הקובץ הם עלולים
לדרוס אחד את עבודתו של השני...
– שיטה אחת למנוע זאת היא ע"י נעילה של הקובץ רק
למשתמש אחד.
– שיטה שנייה ,היא לאפשר לשניהם לעבוד ולמזג אח"כ.
89-210תכנות מתקדם -תרגול 7
ניהול גרסאות version control
הקדמה
Junit
ANT
SVN
הטמעה
• אוצר מילים:
– : Repositoryמאגר ,המקום בו מאוחסנים הקבצים.
– : Working copyעותק מקומי של הקבצים מה
repositoryעליו מתבצעת העבודה.
– : Check-outפעולת חילוץ הקבצים מה .repository
– : Commitכאשר השינויים ב working copyנכתבים
ל .repository
– : Conflict / Resolveקונפליקט קיים כשיש סתירה
באותו הקובץ ,והאדם מתערב כדי לתקן )(resolve
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
SVN
•
•
•
•
תוכנה בקוד פתוח לניהול גירסאות.
עובדת על מס' רב של פלטפורמות ,במס' רב של
גרסאות.
נפוצה מאד בתעשייה.
אנו נראה דוגמא ל subclipseשהוא plug-inשל
SVNלתוך סביבת ה .eclipse
89-210תכנות מתקדם -תרגול 7
הוספת plug-inל eclipse
•
•
•
•
•
•
הקדמה
Junit
ANT
SVN
הטמעה
Find and inatall… Software Updates Help
Search for new featuresולחיצה על next
אפשר לבחור מתוך הרשימה הקיימת ,או להוסיף ע"י
.add remote siteלחצו עליו.
תקלידו את שם האתר – במקרה שלנו Subclipse 1.4.5
תקלידו את כתובתו – במקרה שלנו
http://subclipse.tigris.org/update_1.4.x
אשרו ,סמנו את חבילת ההתקה ברשימה ,והמשיכו ללחוץ
nextעד לסיום.
89-210תכנות מתקדם -תרגול 7
הוספת plug-inל eclipse
• אחרי ההתקנה נוכל להוסיף viewשל .SVN
• מצד שמאל למעלה אנו שולטים על ה view
הנוכחי.
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
יצירת repository
•
•
•
•
•
לצורך הדוגמא אנו נשתמש בשירות של Google
המאפשר ליצור שרת SVNלכל מי שרשום.
וודאו שאתם מחוברים ,למשל ל ,gmailוכנסו לאתר
http://code.google.com/hosting/
תבחרו create new projectומלאו את הטופס.
למעשה יצרתם שרת SVNמשלכם כששם המשתמש
הוא שם המשתמש הרגיל שלכם.
את הסיסמא תוציאו מ
http://code.google.com/hosting/settings
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
יצירת repository
• נבחר את ה viewשל SVN
• בלשונית של SVN repositoriesניצור חדש
• ניתן הכתובת הבאה:
https://[YOUR_PROJECT_NAME].googlecode.com/svn
• אשרו הכל ,וחיזרו ל viewשל .java
• כעת נוכל לבחור פרויקט ולהוסיפו למאגר.
• קליק ימני על שם הפרויקט share project team
• בחרו ,SVNלחצו על nextובחרו repositoryקיים.
• התוצאה :בלשונית ה SVNיופיעו קבצי הפרויקט.
• דרך התפריט teamתוכלו לבצע בקלות את כל
הפעולות הקשורות ב .repository
הקדמה
Junit
ANT
SVN
הטמעה
89-210תכנות מתקדם -תרגול 7
הטמעה
•
•
•
•
•
•
הקדמה
Junit
ANT
SVN
הטמעה
למה צריך להשתמש ב ?Junit
מהם היתרונות של ?ANT
למה משמש ?SVN
בדקו את מעגל הכיוונים של הרובוט Aiboבאמצעות .JUnit
תבצעו בנייה לחלק א' של התרגיל באמצעות ANT
צרו repositoryב Googleו SVNב eclipseהעתיקו לשם
פרויקטים ,צרו שינויים והתעדכנו מהם אח"כ ,דרך התפריט
teamשחקו עם:
– Synchronize
– Commit
– update