סיבוכיות קוד

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

Crystal Clear | Scrum | Unified Process | XP

תחומים תומכים
ניהול פרויקטים | ניהול תצורה | תיעוד


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

[עריכה] מדדי סיבוכיות קוד

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

המדדים היותר נפוצים הם:

  • שורות קוד' - המדד הזה בודק את סיבוכיות הקוד מההיבט הפשוט של גודל הקוד. לעתים, עצם בדיקת אורך הקוד נותנת מושג סביר לגבי מורכבותו. למשל, לפי תקני קוד המקובלים בתעשייה‏‏[2], נהוג שאורך שגרת קוד בודדת לא יעלה על כ200 שורות קוד.
  • סיבוכיות ציקלומטית (Cyclomatic Complexity) - זהו למעשה המדד הראשון לסיבוכיות קוד, שבו משתמשים החל מפרסומו ב-1976 ‏‏[3], ועד היום. למדד הזה קוראים, לפעמים, סיבוכיות מקקייב (McCabe's Complexity) או ערך הסיבוכיות הציקלומטית (Cyclomatic Complexity Number - CCN). הערך מייצג את מספר מסלולי הבקרה הנפרדים בקוד (code branching). בדרך כלל, יתכוונו לסיבוכיות ציקלומטית כשמדברים על סיבוכיות קוד באופן כללי. ישנו קשר ישיר בין ערך הסיבוכיות הציקלומטית של הקוד, לבין מספר תסריטי בדיקה הנפרדים הנדרשים לבדוק את הקוד, מה שמוסיף לערכו של המדד הזה, ומשתמשים בו על מנת לבדוק היתכנות בדיקה (testability) של הקוד. ככל שערכי הCCN גבוהים יותר, כך נדרשים יותר תסריטי בדיקה ייחודיים על מנת לבדוק את כל מסלולי הבקרה האפשריים של התוכנה הנבדקת.
  • מדד קישוריות (Coupling Measure) - המדד הזה נותן ערך מספרי לקישורים הדדים בין מודולי תוכנה שונים. ככל שמודולים קשורים יותר אחד לשני (פונים אחד לשני ומשתמשים בנתונים אחד של השני) כך הערך הזה יהיה גבוה יותר. בתכנות מונחה עצמים, ערך גבוה של מדד הקישוריות מסמן ניתוח מערכת לוקה בחסר, שהביא להפרדה של מודולים שקשורים ברמה הלוגית.

[עריכה] הערות שוליים

  1. ^ Evaluating Software Complexity Measures, E.J.Weyuker, IEEE Transactions on Software Engineering, 14(9), 1988 IEEE
  2. ^ ‏Joint Strike Fighter Air Vehicle C++ Coding Standards for the System Development and Demonstration Program." Document Number 2RDU00001 Rev C., December 2005. PDF
  3. ^ ‏A Complexity Measure, T.McCabe, IEEE Transactions on Software Engineering, 2(4), 1976 IEEE

SEO Tools system wymiany linków tanie kredyty gotówkowe kreatyna Plaza 3 star hotel Los Angeles krynica noclegi Sejm Tyk