כותרות TheMarker >
    cafe is going down
    ';

    פרטי קהילה

    מחקר ופיתוח

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

    אינטרנט והייטק

    פורום

    הנדסת תוכנה

    פורום זה מיועד לדיונים על עקרונות ויישום הנדסת תוכנה באירגונים

    חברים בקהילה (1520)

    אמיר לשם
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    משה ,
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    bfou
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    היזם
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    תנועת כמוך
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    לואיס קרול
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    שחר י
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    דורון טל
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין
    רובינזוןקרוזו
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    עזרה ב- Reverse engineering

    19/11/08 19:28
    0
    דרג את התוכן:
    2008-12-02 23:26:22
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    שלום לכולם,

     

    יש לי שאלה מקצועית שאשמח אם למישהו יהיה רעיון טוב שאוכל להיעזר בו.

    יש לנו "פיסת" קוד ישנה (כ-10,000 שורות) שכתובה ב-C++ ובה ישנו איזשהוא מנגנון לוגיקה מסובך אשר בנוי בעיקר משאלות if בתוך if בתוך if וכו.... הבנתם את המסר. אנחנו מעוניינים לשכתב את הקוד הזה עקב העובדה שלא ניתן לתקן שם שום באג כי כל תיקון גורם לנזק "בלתי צפוי".

     אם זה לא מספיק אז גם אין לנו בשום מקום תיעוד של הלוגיקה אותה מממש קוד זה, נכון כיף לנו ?

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

     

    תודה מראש, אלעד.

    מה אתם חושבים? מעתה קל יותר להוסיף תגובה. עוד...
     

    הוספת תגובה על "עזרה ב- Reverse engineering "

    נא להתחבר כדי להגיב.

    התחברות או הרשמה   

    20/11/08 18:35
    11
    דרג את התוכן:
    פורסם ב: 2008-11-20 18:35:11
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    בעיה קלה. בנה קיר עבה ודפוק בו את הראש...

    לא בגלל הקוד אלא בגלל חוסר תיעוד ..

    ברצינות: בתחום סימוציות של מעגלים דיגיטלים מתמודדים עם בעיות דומות. בהצלחה


    --
    לכל מטבע שני צדדים
    21/11/08 00:23
    2
    דרג את התוכן:
    פורסם ב: 2008-11-21 00:23:44
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    אני הייתי ממליץ לגשת לבעייה בגישה של טסטים. יש תוכנות שמתיימרות לכתוב לך טסטים אוטומטיים לקוד באמצעות ניתוח הקוד עצמו וניסיון להבין (עד רמה מסויימת, כי זה באמת בלתי אפשרי במקרה הכללי) איך מגיעים לכל שורה בקוד. ז"א אם כתוב בפונקציה if x < 5, הן ייצרו בדיקה עבור X קטן וגדול מ-5 כדי להגיע לכיסוי מלא של שורות הקוד בבדיקה.

     

    תוכנה אחת כזו, שעובדת עםCPP,  נקראת CppTest של Parasoft. אני חייב לציין שאני מכיר את התוכנה רק על סמך מצגות והדגמות, לא השתמשתי בה מעולם ועל כן אני לא יכול להעיד על טיבה האמיתי. יתר על כן, את יכולות ניתוח הקוד ראיתי בגירסת ה-JAVA ולא ה-CPP, ואני מקווה שהן קיימות גם שם.

     

    תוכנה זו מייצרת את קוד הבדיקה עם assertions שמכילים את הערכים של הרצת הקוד העכשווית, כשהמטרה היא שתבדוק שה-assertions נכונים וכך כל שינוי עתידי בקוד (או שכתובו) יאפשר לעמת אותו מול ההתנהגות של המימוש המקורי.

     

    אני בטוח שיש עוד חבילות תוכנה שאמורות לספר דברים דומים. זה שוק ששווה להשקיע בו ;)

     

     

    21/11/08 09:58
    1
    דרג את התוכן:
    פורסם ב: 2008-11-21 09:58:29
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    לדעתי הגישה הנכונה במקרה כזה היא לרוב לא לעשות Reverse engineering לקוד אלא לבוא מהצד הפונקציונאלי ולנסות להבין לא מה הקוד עושה אלא מה הוא אמור לעשות.

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

    במילא לאחר שכתוב הקוד תצטרך לבצע בדיקות יסודיות.

    אם תצליח להגדיר את הדרישות מהמודול בצורה ברורה תוכל לכתוב את הקוד מחדש בצורה נקיה ונכונה יותר - תאמין לי למחוק קוד ישן זו אחת ההנאות המיוחדות בפיתוח.

    בשלב מסוים בפיתוח מוצר שעבדתי עליו הדוחות של CVS הראו שמחקתי הרבה יותר שורת קוד ממה שהוספתי - אני הייתי מאד גאה בדו"ח הזה חיוך

    בהצלחה


    --
    גיא גליל - Guy Galil
    21/11/08 16:04
    0
    דרג את התוכן:
    2008-11-21 16:06:20
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    קודם כל תודה לכולם על ההתייחסות וכוכב וניר על הרעיון.

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

     

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

     

    אלעד.

    25/11/08 08:35
    0
    דרג את התוכן:
    פורסם ב: 2008-11-25 08:35:41
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין


    הי אלעד,

     

    נשמע פרויקט בעייתי :) בהצלחה ועדכן אותנו בהתפתחויות!

     

    גנאדי

     

     


    --
    מנהל קהילת מחקר ופיתוח:
    http://randd.cafe.themarker.com
    25/11/08 15:56
    0
    דרג את התוכן:
    פורסם ב: 2008-11-25 15:56:44
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין


    אהלן אלעד.

    להבנתי, כן כדאי לבצע RE רק שכמה שיותר Zoomed OUT.

     

    המלצתי היא שפשוט תשתמש ב Plugin יחסית חדש ב IDA שנקרא Hex-Rays

    שהוא מבצע רמה מאוד טובה של Decompile ברמה של פונקציה.

    הדבר מאפשר לקבל הבנה על תפקיד של כל פונקציה מאוד מהר, ובכך תוכל יחסית מהר לבנות Buttom-up את כל הלוגיקה של הקוד שלך.

     

    http://www.hex-rays.com/decompiler.shtml

     

    בהצלחה.

     

     -------------

    Idan Cohen

    VP R&D

    Intucell LTD

    idan@intucell.co.il

     


    --
    Idan Cohen
    VP R&D
    1/12/08 20:43
    0
    דרג את התוכן:
    פורסם ב: 2008-12-01 20:43:11
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    אפשרות ראשונה היא הבנת הקוד ברמת ה high level ואח"כ לעשות drill down. אין מנוס אלא אם אתה מוכן לקחת את הסיכון שהמערכת תיפול\תיכשל מתישהו.אני מניח שברור לך כי יש שורות ש'נכתבו בדם'. סלק אחת מהן ותגלה בעיה קריטית ביום מן הימים. 

    אם אתה לא מעוניין לפענח את הקוד במלואו הייתי ממליץ על כתיבת מודול שילמד את ה input של הפונקציה\קוד. כך תוכל להבין את השימושים האמיתיים\נפוצים ביותר ובנוסף לזהות שורות לא מעטות שלעולם לא תגיע אליהן. 

     

    חוץ מזה, נשמע אתגר מעניין. 

     

     

    1/12/08 22:14
    0
    דרג את התוכן:
    פורסם ב: 2008-12-01 22:14:19
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    אם בשביל להבין את הקוד צריך לקרוא assembly או לנסות לעשות decompile, אז המצב כבר ממש לא טוב חיוך

    --
    מנהל קהילת מחקר ופיתוח:
    http://randd.cafe.themarker.com
    2/12/08 23:26
    0
    דרג את התוכן:
    פורסם ב: 2008-12-02 23:26:22
    1. שלח הודעה
    2. אוף ליין
    3. אוף ליין

    צטט: גיא-ג 2008-11-21 09:58:29

    לדעתי הגישה הנכונה במקרה כזה היא לרוב לא לעשות Reverse engineering לקוד אלא לבוא מהצד הפונקציונאלי ולנסות להבין לא מה הקוד עושה אלא מה הוא אמור לעשות.

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

    במילא לאחר שכתוב הקוד תצטרך לבצע בדיקות יסודיות.

    אם תצליח להגדיר את הדרישות מהמודול בצורה ברורה תוכל לכתוב את הקוד מחדש בצורה נקיה ונכונה יותר - תאמין לי למחוק קוד ישן זו אחת ההנאות המיוחדות בפיתוח.

    בשלב מסוים בפיתוח מוצר שעבדתי עליו הדוחות של CVS הראו שמחקתי הרבה יותר שורת קוד ממה שהוספתי - אני הייתי מאד גאה בדו"ח הזה חיוך

    בהצלחה

     

     כמובן שהכי כייף יהיה לממש את הכל מחדש כמו שצריך. אבל לפעמים המערכת היא קריטית ואתה פשוט לא יכול להרשות לעצמך לשכתב אותה וליפול על כל הבאגים שכבר תוקנו בעבר כשהמערכת יוצבה. היו חברות גדולות שנפלו כשעשו את זה כמו הסיפור הידוע עם netscape !

    כמו שכבר אמרו כמה מקודמי, אין פתרון קסם - רק לצלול פנימה.

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

     

    בהצלחה,

    ניר

     



    ארעה שגיאה בזמן פרסום תגובתך. אנא בדקו את חיבור האינטרנט, או נסו לפרסם את התגובה בזמן מאוחר יותר. אם הבעיה נמשכת, נא צרו קשר עם מנהל באתר.
    /null/cdate#

    /null/text_64k_1#

    מה אתם חושבים? מעתה קל יותר להוסיף תגובה. עוד...
     

    הוספת תגובה על "עזרה ב- Reverse engineering "

    נא להתחבר כדי להגיב.

    התחברות או הרשמה