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

 

 

 

 

מהי דרישה ?

דרישה: תכונה של המוצר/השירות, המהווה תנאי לקבלה ע"י המזמין

מאמר זה שם דגש על כללי התמציתיות של דרישות.

רגע של עברית: מהי צורת המקור של פועל ?

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

מקור הצרות – צורות המקור של פעלים

כלל תמציתיות מס 1: המנע משימוש מיותר בצורת המקור של פעלים.

דוגמה:

מערכת-הנשק תהיה מסוגלת לאגור את מיקומי כל התחמושות

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

מערכת-הנשק תאגור את מיקומי כל התחמושות

 

עוד רגע של עברית: מהי פסוקית?

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

  • פסוקית נושא
  • פסוקית נשוא
  • פסוקית מושא
  • פסוקית מקום
  • פסוקית זמן
  • פסוקית סיבה
  • פסוקית תכלית
  • פסוקית תנאי
  • פסוקית ויתור
  • פסוקית אופן
  • פסוקית מצב
  • פסוקית מידה
  • פסוקית לוואי

פסוקית תנאי, למשל, היא פסוקית המתחילה ב: אם…, בתנאי ש…,  במקרה ש…,  לא… אלא אם כן

גם בפסוקו של יום מפרידים פסוקיות…

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

דוגמה:

משואת-הניווט תספק נתונים מורחבים ל-8-20 מטר דיוק לפחות   99.7%  הפעמים לכל משתמש-ימי במהלך תמרון נמל

לסיכום – שני כללים לכתיבת דרישה "טובה" שהם בקטגורית "תמציתיות":

#
שם הכלל
הסבר
1
ללא צורות מקור
המנע משימוש מיותר בצורת המקור של פעלים
2
הפרדת פסוקיות
השתמש בפסוקית תנאי נפרדת לכל תנאי

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

על המחבר, אלון מודעי

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

מי צריך להגדיר דרישות?

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

איך מגדירים דרישות?

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

רקע לניהול דרישות

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

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

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

איך יוצרים דרישה מדויקת ? כללי העבודה בקטגורית "דיוק (Precision)" יעזרו לנו ליצור דרישות כאלה.

המסתורין של שמות העצם

יידוע שמות עצם: השתמש אך ורק בשמות עצם מיוּדעים (מלווים בה"א הידיעה). שימוש במונחים ללא יידוע מוביל לריבוי משמעויות.

דוגמה:

המערכת תספק תצוגת זמן

מושא הדרישה (תצוגת זמן) צריך להיות מיודע כדי שיהיה חד-משמעי:

המערכת תציג את השעה-הנוכחית

חיים ומוות ביד הלשון

לשון פעיל: השתמש בלשון פעיל ובישות מבצעת מוגדרת לפעולה. שימוש בלשון סביל מקשה על אימות הדרישה.

דוגמה:

זהות הלקוח תיבדק

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

מערכת-ניהול-החשבונות תוודא את זהות-הלקוח

מי הנושא בעול?

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

כבודו במקומו מונח

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

הסיכוי לטעות בפרשנות של המונח "מצב החשבון" הוא גבוה. השימוש במילון מאפשר לקורא לדעת בדיוק למה התכוון הכותב כשבחר מלה מסוימת:

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

כמה ? שבע ! מה שבע ? מה כמה !

כַּמָּתים: המנע מכַּמָּתים (Quantifiers) לא מדויקים. דרישה צריכה להיות מכומתת במדויק.
דוגמה:
המאזניים הביתיים יציגו את המשקל עד לדיוק של בערך 10 גרם.
דוגמאות לכַּמָּתים מעורפלים שמהם יש להימנע: הרבה, בערך, כמעט תמיד, גמיש, משמעותי, יעיל, הגיוני, טיפוסי, מתאים, קרוב ל, בקירוב.
לכן:
המאזניים הביתיים יציגו את המשקל ± 10 גרם.

גאוות יחידה

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

לכל מספר יש לציין במפורש את היחידות בהן הוא נמדד:

למעגל-המודפס תהיה טמפרטורת אחסנה של לא יותר מ-30 מעלות צלזיוס

פועלי כל העולם…

תואר הפועל: המנע משימוש בתארי פועל מעורפלים – תואר הפועל מתאר ומסייג את הפעולה שבה נקבנו.
דוגמה:
מערכת-נתוני-הטיסה תהיה בדרך כלל מקוונת

תארי פועל מעורפלים עלולים להוביל לדרישות רב משמעיות, שלא ניתן לאמת:

"בדרך כלל", "בערך", "מספיק", "באופן טיפוסי"

למערכת-נתוני-הטיסה תהיה זמינות של לפחות xx% במשך של לפחות yy שעות ברציפות

בעזרת השם

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

טעם לוואי

פסוקיות לוואי: המנע משימוש בפסוקיות לוואי מעורפלות. פסוקית לוואי מתיימרת להסביר משהו, אך לרוב רק מבלבלת.
דוגמה:
ה-GPS יציג את מיקום-המשתמש, ככל שירשה המקום
פסוקית לוואי נותנת לכותב הדרישה תירוץ שלא לדייק בדרישה
פסוקיות לוואי עלולות להוביל לדרישות רב משמעיות, שאינן ברות-אימות ושאינן משקפות את צרכי בעלי העניין:
"עד כמה שאפשר", "ככל שיידרש", "איפה שניתן", "אם ישים"
ה-GPS יציג את מיקום-המשתמש.

גילויי פתיחות

פסוקיות פתוחות: המנע משימוש בפסוקיות פתוחות – פסוקיות פתוחות מציינות שיש עוד משהו, אבל לא אומרות מהו.

Sוגמה:

הכספומט יציג את מספר חשבון הלקוח, היתרה וכן הלאה
פסוקיות פתוחות עלולות להוביל לדרישות רב משמעיות, שאינן ברות-אימות ושאינן משקפות את צרכי בעלי העניין:
"כולל, אבל לא מוגבל ל…", "וכו'", "וכן הלאה", "וכדומה"
  1. הכספומט יציג את מספר החשבון של הלקוח
  2. הכספומט יציג את היתרה של הלקוח
  3. הכספומט יציג את סוג חשבון הלקוח
  4. הכספומט יציג את מסגרת משיכת היתר של הלקוח
  5. הכספומט יציג….

עשרת הכללים לכתיבת דרישה טובה בקטגוריית הדיוק

הכרנו מספר כללים לכתיבת דרישה "טובה" שהם בקטגורית "דיוק":
#
שם הכלל
הסבר
1
יידוע שמות עצם
השתמש בשמות עצם מיוּדעים (מלווים בה"א הידיעה)
2
לשון פעיל
השתמש בלשון פעיל ובישות מבצעת מוגדרת לפעולה
3
נושא הדרישה
הקפד שנושא הדרישה יהיה תואם לרמה המוצר או השירות אליה הדרישה מתייחסת
4
מונחים מוגדרים
השתמש אך ורק במונחים המוגדרים במילון (Glossary)
5
כַּמָּתים
המנע מכַּמָּתים (Quantifiers) לא מדויקים
6
יחידות
השתמש ביחידות מוגדרות ומפורשות לציון כמויות
7
תואר הפועל
המנע משימוש בתארי פועל מעורפלים
8
תואר השם
המנע משימוש בתארי שם
9
פסוקיות לוואי
המנע משימוש בפסוקיות לוואי מעורפלות
10
פסוקיות פתוחות
המנע משימוש בפסוקיות פתוחות

לסיום: נקודה למחשבה

אם כל דרישה באוסף הדרישות מקיימת את כל התכונות המאפיינות דרישה "טובה" – האם זה אומר שאוסף הדרישות כולו הוא "טוב" ? נשמח לתשובה בתיבה למטה

 

על המחבר, אלון מודעי

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

רקע

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

 

 

 

 

 

כמו כן אנו מכירים שני כללים חשובים העוזרים בניסוח דרישות "טובות":

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

 

הקפד שהדרישה תהיה מורכבת ממשפט אחד, הבנוי על פי כללי התחביר:
תנאי + נושא + נשוא + מושא [ + סייג]

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

תכונות של דרישה "טובה" (המשך)

דרישה "טובה" מוגדרת ע"י התכונות הבאות:

ברת-אימות

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

במקום זאת נציע למזמין ניסוח כדלקמן:

המוצר יאפשר למשתמש שקיבל הדרכה בת חצי יום לבצע בהצלחה כל אחת מיכולות המוצר תוך 30 שניות.

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

נכונה

דרישה צריכה להיות ביטוי נכון ומדויק של צרכי בעלי העניין.
הרציונל: ביטוי נכון ומדויק מאפשר ביתר קלות לתקף את המוצר/שירות מול צרכי בעלי העניין וציפיותיהם.
תזכורת: תיקוף היא פעולה המתבצעת בתנאים הייעודיים של המוצר או השרות, ומוכיחה שהמוצר או השרות עונה לצרכים.
דוגמא:
תחנת השאיבה תשמור על זרם מים בעוצמה של 120  ליטר לשנייה למשך 30 דקות.
מהו טווח הקבילות ?
  • עד כמה להיצמד לכמות המצויינת?
    • כמה מעל 120 ליטר לשנייה יהיה קביל?
    • כמה מתחת ל- 120 ליטר לשנייה יהיה קביל?
  • עד כמה להיצמד לטווח המצויין?
    • כמה מעל 30 דקות יהיה קביל?
    • כמה מתחת ל- 30 דקות יהיה קביל?
"נכונות" של גדלים בדרישות באה לידי ביטוי בכך שלכל גודל מציינים את הטווח הקביל שלו:
תחנת השאיבה תשמור על זרם מים בעוצמה של ±10120 ליטר לשנייה למשך לפחות 30 דקות.
כעת ברור:
  • שהטווח הקביל של הביצועים מבחינת הזרימה הוא 10± ליטר לשנייה
  • ש-30 דקות הוא מינימום הביצועים הקביל מבחינת משך הזמן

תואמת למוסכמות

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

סיכום: תכונות של דרישה "טובה"

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

מה למדנו ?

עשינו הכרה עם 3 מאפיינים נוספים של דרישה "טובה" והם: שהדרישה תהיה ברת-אימות, נכונה, ותואמת למוסכמות. כמו כן העפנו מבט מסכם באוסף התכונות המלא.

מה הלאה ?

בפינה הבאה של "המדרשה לדרישות טובות" נציג סדרה של כללי עבודה מועילים.

על המחבר, אלון מודעי

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

רקע

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

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

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

מה בכלל עושים עם דרישות?

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

תכונות של דרישה "טובה" (המשך)

דרישה "טובה" מוגדרת ע"י התכונות הבאות:

שלמה (Complete)

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

הדרישה הזאת מסתמכת על הכותרת שמעליה כדי להבין על מה מדובר. זה לא קביל. במקום זאת צריך להיות:

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

יחודית (Singular)

דרישה צריכה לבטא רעיון יחיד וברור.
הרציונאל: האפקטיביות של מספר פעילויות הקשורות לדרישות, כגון: גזירה, הקצאה, עקיבות, אימות ותיקוף, תלויה ביכולת לזהות מסרים יחידים. כל שימוש בו"ו החיבור בתוך דרישה צריך לאותת לנו לבדוק אם אכן יש בה מסר יחיד.
דוגמא:
מערכת הבקרה תסגור את שסתום כניסת המים עד שהטמפרטורה תרד ל-850 צלזיוס ואז תפתח אותו.
זה לא קביל מכיוון שהמשפט מכיל שתי דרישות (יש כאן חריגות מכללים נוספים של כתיבת דרישות, שאליהם נגיע בהמשך). כדי שיהיה קביל – צריך לפצל את המשפט לשתי הדרישות. באותה ההזדמנות גם נכמת את הביצועים הנדרשים:
1. מערכת_הבקרה תסגור את שסתום_כניסת_המים, בתוך פחות מ-3 שניות, כאשר טמפרטורת המים בדוד גבוהה מ-85צלזיוס.
2. מערכת_הבקרה תפתח את שסתום_כניסת_המים, בתוך פחות מ-3 שניות, כאשר טמפרטורת המים בדוד נמוכה מ-85צלזיוס.
שימו לב לערכי המילון המשולבים בדרישות.

ישימה (Feasible)

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

אמינות של 100% כמעט שאיננה ברת-השגה. אם נחשוב קדימה לאימות הדרישות – איך נוכיח אמינות של 100% ? וגם לו יכולנו לבנות מערכת כזאת – האם נוכל להרשות זאת לעצמנו מבחינת העלות ?

השוו לעומת זאת את הדרישה שלהלן:

למוצר תהיה אמינות גדולה או שווה ל-98%.
שימו לב שאמינות הוא מונח המוגדר במילון.

כללים לכתיבת דרישה "טובה" (המשך)

זה הזמן לציין עוד כלל חשוב לכתיבת דרישות:

הקפד שהדרישה תהיה מורכבת ממשפט אחד, הבנוי על פי כללי התחביר:

תנאי + נושא + נשוא + מושא [ + סייג]

תנאי תבנית המציינת באילו תנאים הדרישה צריכה להתקיים, למשל: "כאשר טמפרטורת המים בדוד נמוכה מ-C850"
נושא תבנית המתארת את מבצע הפעולה שבדרישה, למשל: "מערכת הבקרה"
נשוא תבנית המתארת את הפעולה המתבצעת, למשל: "תפתח"
מושא תבנית המתארת את היישות שעליה הפעולה מתבצעת, למשל: "את שסתום כניסת המים"
סייג תבנית אופציונלית המתארת מיגבלה כלשהי על ביצוע הפעולה, למשל: " בתוך פחות מ-3 שניות"
והמשפט השלם:
כאשר טמפרטורת המים בדוד נמוכה מ-C850, מערכת_הבקרה תפתח את שסתום_כניסת_המים בתוך פחות מ-3 שניות.

בצורה כזאת מתקבלת דרישה שיש בה משפט אחד פשוט, המביע מחשבה אחת.

מה למדנו ?

אוסף התכונות של דרישה "טובה" שבנינו עד עתה הוא:

תכונה
הדרישה צריכה להיות
חיונית
הכרחית
בלתי-תלויה ביישום
מבטאת את הצורך, לא את אופן מתן המענה
חד-משמעית
בעלת פרשנות אחת בלבד
שלמה
עומדת בזכות עצמה
ייחודית מבטאת רעיון יחיד וברור
ישימה ברת יישום

צברנו גם שני כללים לכתיבת דרישה "טובה", והם:

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

מה הלאה ?

בפינה הבאה של "המדרשה לדרישות טובות" נכיר עוד מאפיינים לדרישה טובה ונלמד עוד כללי עבודה מועילים.

הערה לפני סיום

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

על המחבר, אלון מודעי

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

רקע

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

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

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

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

משתמשי כללי "המדרשה לדרישות טובות" חווים:

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

תכונות של דרישה "טובה"

דרישה "טובה" מוגדרת ע"י התכונות הבאות:

חיונית (Necessary)

כל דרישה צריכה להיות חיונית.

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

  • אם ניתן לפתור את הבעיה / לענות על הצורך ללא הדרישה – הדרישה לא חיונית.
  • אם לא ניתן להסביר את הסיבה לדרישה – הדרישה לא חיונית.

דוגמא:

המוצר המסופק יצרוך חשמל בכל מהלך פעולתו

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

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

המוצר יפעל על אנרגיה חשמלית

זוהי דרישה המגבילה את המוצר להשתמש באנרגיה חשמלית (ולא, למשל, באנרגיה סולארית).

בלתי תלויה ביישום (Implementation-Independent)

דרישה צריכה לבטא את הצורך ולא את אופן מתן המענה. כל פתרון שייבחר צריך לתת מענה לדרישה.

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

דוגמא:

להכוונת התנועה בצומת יש להשתמש במערכת רמזורים

במקום לבטא צורך – הדרישה קובעת את הפתרון: רמזורים. אבל מה הצורך כאן ?

צורך הוא משהו מעולם הבעיה. להלן דוגמא של צורך:

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

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

חד משמעית (Unambiguous)

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

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

דוגמא:

דוגמא:

בפאנל הקדמי תהיה תצוגת זמן

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

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

לעומת זאת:

להיות:

בפאנל הקדמי יוצג באופן רציף הזמן_הנוכחי

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

מונח
הסבר המונח
הזמן_הנוכחי
השעה הנוכחית לפי שעון ירושלים, בפורמט "HH:MM 24 שעות"

כללים לכתיבת דרישה "טובה"

זה הזמן לציין כלל חשוב לכתיבת דרישות:

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

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

מה למדנו ?

עשינו הכרה עם 3 מאפיינים של דרישה "טובה" והם: שהדרישה תהיה חיונית, בלתי תלויה ביישום, וחד משמעית.

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

מה הלאה ?

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

על המחבר, אלון מודעי

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

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

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

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

הטיפול בדרישות, על פי מודל ה-CMMI מכוסה על ידי שני תחומי תהליך:

1) ניהול דרישות

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

2) פיתוח דרישות

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

מאמר זה דן בנושא ניהול הדרישות בלבד. נושא פיתוח הדרישות יטופל במאמר אחר.

ניהול דרישות שיטתי על פי מודל ה-CMMI:

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

חמש הפרקטיקות החיוניות לניהול דרישות שיטתי

חמש הפרקטיקות בנושא ניהול שיטתי, מוצגות בדיאגרמה שלהלן, ומפורטות בהמשך:

עשה

ואם לא תעשה…

הבנת הדרישות

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

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

השגת מחויבות לדרישות

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

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

ניהול שינויים לדרישות

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

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

ניהול עקיבות דו-כיוונית

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

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

הלימה בין הדרישות לתוכנית העבודה

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

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

נושא מאתגר אבל….

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

==

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

 

להרשמה השאירו פרטים

    x