Presentation is loading. Please wait.

Presentation is loading. Please wait.

© 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman:

Similar presentations


Presentation on theme: "© 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman:"— Presentation transcript:

1 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman: Chapter 9,27 ד. גלין ו-ז. בלובבנד, הבטחת איכות תוכנה, “אופוס”, 1995

2 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 2 שיטות בהנדסת תוכנה - תוכנית הקורס מבוא מודלים של מחזור חיי תוכנה הגדרת דרישות וניהולן ניתוח קלאסי ניתוח מונחה - עצמים תכן אימות ותקפות קידוד ובדיקות יחידה מימוש ושילוב תחזוקה והנדסה מחדש הבטחת איכות תוכנה

3 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 3 מה עומד על הפרק? סוגי תחזוקה סוגי תחזוקה ניהול תחזוקה ניהול תחזוקה ורזיות וגרסאות ורזיות וגרסאות השלבים בביצוע תיקון במערכת השלבים בביצוע תיקון במערכת תחזוקתיות (maintainability) תחזוקתיות (maintainability) תחזוקת תוכנה מונחית-עצמים תחזוקת תוכנה מונחית-עצמים אבולוציה של מוצר תוכנה—במקום תחזוקה אבולוציה של מוצר תוכנה—במקום תחזוקה אספקטים ותחזוקה אספקטים ותחזוקה הקורס כולו עוסק, למעשה, בתחזוקת תוכנה...

4 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 4 סוגי תחזוקת תוכנה תחזוקה תיקונית (corrective maintenance)תחזוקה תיקונית (corrective maintenance) –תיקון תקלות שנשארו מהפיתוח תקלות ניתוח, תכן, מימוש, תיעוד או כל תקלה אחרת תחזוקה שיפורית (perfective maintenance)תחזוקה שיפורית (perfective maintenance) –הלקוח מבקש שינויים לשיפור האפקטיביות של המוצר הוספת פונקציונליות שיפור ביצועים שיפור ביכולת לתחזק תחזוקה התאמתית (adaptive maintenance)תחזוקה התאמתית (adaptive maintenance) –תגובה לשינויים בסביבת העבודה של המוצר קומפיילר, מערכת-הפעלה, חומרה,... שינוי בלוגיקה-העסקית (למשל, שינויים במיסוי) לרוץ כדי להישאר במקום...

5 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 5 התפלגות סוגי תחזוקת תוכנה

6 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 6 הקושי שבתחזוקת תוכנה התחזוקה מהווה 67% מהעלות הכוללת של המוצרהתחזוקה מהווה 67% מהעלות הכוללת של המוצר –מקור הכנסה משמעותי –למרות זאת, ארגונים רבים עדיין מציבים לפעולות תחזוקה תכנתים חסרי נסיון וללא פיקוח מתאים. מירב הסיכויים שתכנת חדש יתחיל את הקריירה המקצועית שלו כתכנת תחזוקה !!!

7 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 7 מה נדרש מתכנתי תחזוקה? תחזוקה הינה אחד ההבטים הקשים ביותר של פיתוח תוכנהתחזוקה הינה אחד ההבטים הקשים ביותר של פיתוח תוכנה –עוסקת בהבטים של כל שלבי הפיתוח תכנת תחזוקה קיבל דו”ח תקלה...תכנת תחזוקה קיבל דו”ח תקלה... –אילו כלים עומדים לרשותו לצורך ניתוח התקלה? דו”ח תקלה מהמשתמש תכנית מקור –ובמקרים רבים - לא יותר מכך!!! לתכנת תחזוקה דרושים כישורי debug מעוליםלתכנת תחזוקה דרושים כישורי debug מעולים –התקלה יכולה להימצא בכל מקום אי-שם בתוך המוצר –מקור התקלה עלול להמצא במפרט דרישות או מסמך תכן שאינו בנמצא

8 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 8 תחזוקה תיקונית תכנת התחזוקה איתר את התקלה...תכנת התחזוקה איתר את התקלה... –בעיה: איך לתקן את התקלה מבלי לגרום לתקלות אחרות (תקלות רגרסיה)? כיצד ניתן לצמצם את תקלות הרגרסיה?כיצד ניתן לצמצם את תקלות הרגרסיה? –עיון בתעוד המפורט של המוצר השלם –עיון בתעוד המפורט של כל מודול אבל במציאות...אבל במציאות... –אין תעוד בכלל, או –התעוד לא שלם, או –התעוד שגוי

9 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 9 תחזוקה תיקונית (המשך) התכנת משנה את תכנית המקור...התכנת משנה את תכנית המקור... –בודק שהשינוי פועל כהלכה נדרשים test cases חדשים –בודק שלא הוכנסו תקלות רגרסיה ע”י שימוש בבדיקות שמורות קודמות –מכניס את הבדיקות החדשות לאוסף הבדיקות השמורות לצורך ביצוע בדיקות רגרסיה בעתיד –מתעד את כל השינויים –מזהה את כל דיווחי התקלות המטופלים ע"י התיקון

10 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 10 תחזוקה שיפורית / התאמתית תכנת התחזוקה נדרש לעבור דרך כל השלביםתכנת התחזוקה נדרש לעבור דרך כל השלבים –דרישות (נכתבו ע”י מומחי-דרישות) –מפרט (נכתב ע”י מומחי-ניתוח) –תכן (נכתב ע”י מומחי-תכן) –מימוש ושילוב (נעשו ע”י מומחי-מימוש) כאשר המוצר הקיים מהווה את נקודת המוצא ולכן, תכנת תחזוקה צריך להיות “מומחה” בכל נושא...ולכן, תכנת תחזוקה צריך להיות “מומחה” בכל נושא... מסקנה : אף סוג של תחזוקה לא יכול להתבצע ע ” י תכנתים מתחילים ולא מיומנים, ללא פיקוח מתאים !

11 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 11 גמול התחזוקה תחזוקה היא כפוית טובהתחזוקה היא כפוית טובה –עבודה מול לקוחות לא מרוצים אם היו מרוצים - לא היו צריכים אחזקה –בעיות המשתמשים נגרמו ע”י מפתחים, לא ע”י אנשי התחזוקה –הקוד עלול להיות כתוב בצורה גרועה –מפתחים אינם אוהבים לעסוק בתחזוקה ולמרות זאת - תחזוקה הינה השלב החשוב והקשה ביותר בפיתוח תוכנהולמרות זאת - תחזוקה הינה השלב החשוב והקשה ביותר בפיתוח תוכנה –אם לא תהיה תחזוקה טובה - הלקוח יזמין את הפיתוח הבא אצל מישהו אחר כיצד ניתן לשנות את המצב?כיצד ניתן לשנות את המצב? –מנהלים צריכים להקצות את מיטב האנשים לאחזקה –ולשלם להם בהתאם...

12 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 12 ניהול תחזוקה דיווח ראשוני על תקלהדיווח ראשוני על תקלה –מנגנון לעריכת שינויים במוצר –אם המוצר לא מתפקד כהלכה, מופק דו”ח תקלה על ידי המשתמש או על ידי "יצירה אוטומטי" (checker) צריך לכלול מידע מספיק כדי לאפשר שחזור התקלה באופן אידיאלי - יש לתקן מיד כל תקלהבאופן אידיאלי - יש לתקן מיד כל תקלה באופן מעשי - יש לבצע מיידית חקירה ראשוניתבאופן מעשי - יש לבצע מיידית חקירה ראשונית תכנת התחזוקה צריך לבדוק את קובץ דיווחי התקלות, על מנתתכנת התחזוקה צריך לבדוק את קובץ דיווחי התקלות, על מנת –להיות מודע לכל התקלות הקיימות שטרם תוקנו –לדעת כיצד “לעקוף” את שאר התקלות תוך כדי הטיפול בתקלה הנוכחית על מנהל האחזקה לבחון את קובץ התקלות באופן שוטף ולהחליט על סדרי עדיפויות !

13 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 13 דיווחי תקלות—תגובה ראשונית דיווח על תקלה ידועהדיווח על תקלה ידועה –יש להעביר למשתמש את המידע הידוע עד כה לגבי התקלה דיווח על תקלה חדשהדיווח על תקלה חדשה –תכנת האחזקה ינסה למצוא את הגורם לתקלה דרכים לתיקון—ניתוח ראשוני דרכים לעקיפת התקלה, עד לתיקונה –התקלה תרשם בקובץ תקלות, תוך ציון התיעוד הרלוונטי קוד מקור מסמכי תכן מדריכים (manuals)

14 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 14 דיווחי תקלות (המשך) בקשות שיפור / התאמהבקשות שיפור / התאמה –יטופלו כמו תקלות יירשמו בקובץ התקלות הלקוח או צוות התחזוקה יקבעו סדרי עדיפויות יטופלו בהתאם לסדר העדיפויות שנקבע הטיפול מתחיל מעריכת שינויים במסמך הדרישות הפצת מידע למשתמשיםהפצת מידע למשתמשים –עותק דו”ח תקלות יופץ לכל המשתמשים תוך ציון הזמן המשוער לתיקון התקלה –אם התקלה אירעה ביותר מאתר אחד, המשתמש יידע האם ניתן להמשיך לעבוד תוך כדי עקיפת התקלה כמה ניתן להמתין עד לתיקון התקלה

15 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 15 בקרת ורזיות – ניהול תצורה מינוח: version control או configuration managementמינוח: version control או configuration management סיבות לריבוי ורזיותסיבות לריבוי ורזיות –תיקונים (מכל הסוגים) –סביבות עבודה שונות (חומרה, מערכת הפעלה) –דרישות שונות מהלקוח שאילתות טיפוסיותשאילתות טיפוסיות –איזה סביבה דרושה לכל ורזיה? –אם מודול נתון יעבור שינוי, איזו ורזיות תושפענה? –מהו הקשר בין ורזיות?

16 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 16 ורזיות וגירסאות מסד הנתונים של תוצרי המערכתמסד הנתונים של תוצרי המערכת –אוספי דרישות –יחידות תכן (UML ) –יחידות קוד –מסמכי תיעוד –קובצי בדיקה –סוגי הגירסאות –רשימת לקוחות –רישומי תקלות ידועות לכל מודול

17 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 17 ורזיות וגירסאות (המשך) ורזיה (version): עידכון "מקומי", בד"כ לתיקון תקלות ( 1.0, 1.1, 1.2...)ורזיה (version): עידכון "מקומי", בד"כ לתיקון תקלות ( 1.0, 1.1, 1.2...) גירסה (release) : אירגון מחדש, תוספת מהותי ליכולות המערכת ( 1.3, 2.0...)גירסה (release) : אירגון מחדש, תוספת מהותי ליכולות המערכת ( 1.3, 2.0...) לפעמים יש רק סדר חלקי בין הורזיותלפעמים יש רק סדר חלקי בין הורזיות "כלל": אחרי גירסה חדשה עם תוספות, תמיד צריכים ורזיה לתיקון תקלות"כלל": אחרי גירסה חדשה עם תוספות, תמיד צריכים ורזיה לתיקון תקלות קיימת צוות לניהול התצורהקיימת צוות לניהול התצורה איפה הגבול בין התאמת המוצר לצרכי לקוח לבין ורזיה חדשה?איפה הגבול בין התאמת המוצר לצרכי לקוח לבין ורזיה חדשה?

18 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 18 ביצוע התחזוקה בעולם האידיאליבעולם האידיאלי –כל תקלה תתוקן באופן מיידי –הגירסה החדשה מופצת לכל האתרים בעולם האמיתיבעולם האמיתי –דיווחי תקלות מופצים לכל האתרים –אין צוות מספיק לאחזקה מיידית –התקלות נאספות ומטופלות וורזיות\גרסאות חדשות מופצות מדי פעם. זהירות מ ” גרסאות פרטיות ”!

19 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 19 ניהול דיווחי התקלות והתחזוקה מסד נתונים לדיווחי תקלותמסד נתונים לדיווחי תקלות יש לקשור בין דיווחים על "אותה תקלה"יש לקשור בין דיווחים על "אותה תקלה" יש לדרג דיווחים לפי דחיפותיש לדרג דיווחים לפי דחיפות יש לתאר את מצב הטיפול בזיהוי מקור הבעיה ובתיקוןיש לתאר את מצב הטיפול בזיהוי מקור הבעיה ובתיקון דרוש קשר לורזייות\גרסאות של המערכתדרוש קשר לורזייות\גרסאות של המערכת ישנם בעיות במעקב: בזמן הטיפול בדיווח, הבעיה איננה עוד....ישנם בעיות במעקב: בזמן הטיפול בדיווח, הבעיה איננה עוד....

20 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 20 תיקון תקלות ועריכת שינויים במוצר הקצאת תכנת לניתוח התקלה ולתיקונההקצאת תכנת לניתוח התקלה ולתיקונה בדיקת התיקוןבדיקת התיקון –בדיקה מעמיקה שהתקלה תוקנה –בדיקה חוזרת למוצר (regression testing) עדכון התיעוד ודיווחי התקלותעדכון התיעוד ודיווחי התקלות –עדכון מסמכי התכן, המדריכים למשתמש וכו’ רישום התיקון בגוף הקודרישום התיקון בגוף הקוד –הכנסת הערות מתאימות בכותרת המודול מהות השינוי הסיבה לשינוי שם התכנת ותאריך השינוי בדיקת התהליך ע”י אנשי הבטחת-איכותבדיקת התהליך ע”י אנשי הבטחת-איכות עידכון המערכת בפועל: לפי מדיניות הגרסאות....עידכון המערכת בפועל: לפי מדיניות הגרסאות.... בדיקה חוזרת של המוצר היא קשה וצורכת משאבים - אך היא המפתח היחיד להקטנת ההסתברות של תקלות חוזרות !

21 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 21 תחזוקתיות (maintainability) תחזוקה איננה אירוע חד-פעמיתחזוקה איננה אירוע חד-פעמי יש לתכנן את התחזוקה לאורך כל מחזור-החיים של המוצריש לתכנן את התחזוקה לאורך כל מחזור-החיים של המוצר –בשלב הניתוח ארכיטקטורה ברורה צימוד רופף (loose coupling) –בשלב התכן טכניקות של הסתרת-מידע (information-hiding) –בשלב המימוש קוד ברור ומובן (שמות משתנים, מבנים, הערות) בדיקות ודיווחים ב- checkers שיעזרו בתחזוקה –בתיעוד ועדכניתיעוד ברור, שלם, נכון ועדכני יש לשמור על עקרונות התחזוקתיות גם בשלב התחזוקה !!!

22 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 22 תחזוקה של תוכנה מונחית-עצמים תוכנה מונחית-עצמים אמורה להקל על התחזוקהתוכנה מונחית-עצמים אמורה להקל על התחזוקה –המוצר מורכב מיחידות “בלתי תלויות” אי-תלות קונספטואלית –היחידות כוללות את המידע והפונקציונליות (encapsulation) אי-תלות פיזית –הסתרת-מידע (information hiding) –התקשורת מתבצעת באמצעות העברת הודעות אבל בפועל...אבל בפועל... –שלושה מכשולים עיקריים מבנה ירושה גדולה מקשה על זיהוי מקור הבעיה השלכות של פולימורפיזם וקישור-דינמי הרבה שינויים\תוספות אינם לפי מבנה המחלקות שיש לפני השינוי

23 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 23 תחזוקת תוכנה מונחית-עצמים - תזכורת 1 class UndirectedTree {... void displayNode (Node a);... } class DirectedTree extends UndirectedTree {... } class RootedTree extends DirectedTree {... void displayNode (Node a);... } class BinaryTree extends RootedTree {... } class BalancedBinaryTree extends BinaryTree { Node hhh; displayNode (hhh); } כדי לגלות מה עושה displayNode ב - BalancedBinaryTree יש לסרוק את כל העץ ! יש כלי CASE שיודעים “לשטח” עצים...

24 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 24 אחזקת תוכנה מונחית-עצמים -תזכורת 2 FileClass abstract method open DiskFileClass מימוש של open עבור קובץ על דיסק TapeFileClass מימוש של open עבור קובץ על טייפ DisketteFileClass מימוש של open עבור קובץ על דיסקט ארעה תקלה בזמן פתיחת קובץארעה תקלה בזמן פתיחת קובץ –הפעלת myFile.open איזו גרסה של open שגויה?איזו גרסה של open שגויה? –כלי CASE סטטי - לא יעזור –נדרש מעקב תוך ריצה פולימורפיזם וקישור דינמי : משפיעים לחיוב על הפיתוח משפיעים לשלילה על התחזוקה !

25 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 25 אספקטים בתחזוקה נסיון לטפל בשינויים\תוספות באופן מודולרינסיון לטפל בשינויים\תוספות באופן מודולרי מתאים לשינויים שחוצים את מבנה המחלקות הקיימותמתאים לשינויים שחוצים את מבנה המחלקות הקיימות מעודד שימוש חוזרמעודד שימוש חוזר –נתאר את התוספת\השינוי פעם אחת –נשלב את אותו השינוי בכמה מחלקות\מערכות בתיאור דרישות, תיכנון, וקידוד ותחזוקהבתיאור דרישות, תיכנון, וקידוד ותחזוקה אינו מיועד לתיקון תקלות, מתאים להרחבותאינו מיועד לתיקון תקלות, מתאים להרחבות AspectJ : השפה הנפוצה ל-AOP מעל JavaAspectJ : השפה הנפוצה ל-AOP מעל Java

26 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 26 תחזוקה ב-WWW כל השלבים דומים!כל השלבים דומים! העידכון מתבצע מבלי לעצור את הפעילותהעידכון מתבצע מבלי לעצור את הפעילות תחזוקה תיקונית שותפת (בלי ורזיות)תחזוקה תיקונית שותפת (בלי ורזיות) תחזוקה שיפורית—דרך גירסאותתחזוקה שיפורית—דרך גירסאות השינויים השותפים מקשים על עידכון התיעוד והתכןהשינויים השותפים מקשים על עידכון התיעוד והתכן רצוי: עותק לעבודת התחזוקה, לבדיקה, שיחליף את העותק בשימוש רק אחרי אישור התיקוניםרצוי: עותק לעבודת התחזוקה, לבדיקה, שיחליף את העותק בשימוש רק אחרי אישור התיקונים בעיה למשתמש: תגובות לא צפויותבעיה למשתמש: תגובות לא צפויות

27 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 27 סוגי תחזוקה סוגי תחזוקה ניהול תחזוקה ניהול תחזוקה ורזיות וגרסאות ורזיות וגרסאות השלבים בביצוע תיקון במערכת השלבים בביצוע תיקון במערכת תחזוקתיות (maintainability) תחזוקתיות (maintainability) תחזוקת תוכנה מונחית-עצמים תחזוקת תוכנה מונחית-עצמים אבולוציה של מוצר תוכנה אבולוציה של מוצר תוכנה אספקטים ותחזוקה אספקטים ותחזוקה אז מה היה לנו...?

28 © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 28 וכעת נעבור ל... הבטחת איכות


Download ppt "© 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman:"

Similar presentations


Ads by Google