יחידה 2 / 12

ניתוח דרישות ועיצוב תוכנה

רווחים:

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

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

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

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

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

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

  1. תן את הבקשה כפי שהיא והפקת השאלה. בקש מה-AI לא את הפתרון, אלא תחילה "רשום כל דבר לא ברור בבקשה זו כשאלה."
  2. אתה נותן את התשובות. רק אתה יודע את ההקשר; ענה על שאלות בינה מלאכותית עם האילוצים העסקיים האמיתיים שלך.
  3. תתרגם את זה לסיפורי משתמשים וקריטריוני קבלה. תרגם את הצורך המובהר לפריטים הניתנים לבדיקה.
  4. הוסף מקרי קצה ותרחישים שליליים. "תוצאה ריקה", "משתמש לא מורשה", "קובץ גדול מדי" וכו'.

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

הנחיה של סיפור משתמש + קריטריוני קבלה: "חלקו את הצורך המובהק הבא לסיפורי משתמש התואמים לעקרונות INVEST. כתוב 3-5 קריטריוני קבלה הניתנים לבדיקה עבור כל סיפור (בפורמט Given-When-Then). הוסף לפחות 2 תרחישים שליליים (גישה לא מורשית, נתונים ריקים). צריך: [כתוב כאן צורך מובהר]"

השוואת החלטות עיצוב עם AI

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

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

ציר

שידור סינכרוני

אסינכרוני (תור)

זמן המתנה של המשתמש

ארוך (מחכה למשלוח)

קצר (חוזר מיד)

סובלנות לתקלות

נמוך (הבקשה מתפוצצת אם השליחה מתפוצצת)

גבוה (אפשר לנסות שוב)

מורכבות

נמוך

בינוני-גבוה (תשתית תור)

עלות תשתית

נמוך

נדרשים רכיבים נוספים

איפה זה מתאים

נפח נמוך, יישום פשוט

נפח גבוה, אספקה קריטית

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

הנחיה חלשה / הנחיה חזקה

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

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

מיני מארזים

מקרה 1 - הנחה נסתרת. צוות מקודד ישירות את בקשת "המשתמש יכול להעלות תמונת פרופיל". צוות אחר שאל את ה-AI על חוסר הוודאות: "גודל מקסימלי? פורמטים מותרים? בקרת תוכן לא הולמת? למחוק תמונה ישנה?" זה מייצר 8 שאלות כמו. הצוות הראשון לומד על הבעיה בייצור כאשר קבצי 20 MB ממלאים את השרת; הצוות השני פותר את זה בעיצוב.

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

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

טעויות נפוצות

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

לסיכום

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

משימת יישום

בחר בקשת עבודה של משפט אחד מההקשר שלך. ראשית, החל את הנחיית העמימות על ה-AI וענה על השאלות עם האילוצים האמיתיים שלך. לאחר מכן תרגם את הצורך המובהר לפחות ל-2 סיפורי משתמשים ול-3 קריטריוני קבלה לכל אחד מהם; כלול לפחות תרחיש שלילי אחד. לבסוף, צור טבלת השוואה להחלטת עיצוב (סינכרוני/אסינכרוני, מבנה טבלה וכו') וכתוב החלטה משלך ב-2 משפטים.

רשימת בדיקה

  • [ ] הסרתי את העמימות כשאלות לפני העברת הבקשה לקוד.
  • [ ] נתתי את ההקשר (קנה מידה, סמכות, ביצועים, אילוץ משפטי) ל-AI.
  • [ ] חיברתי את סיפורי המשתמשים לקריטריוני קבלה הניתנים לבדיקה.
  • [ ] הוספתי לפחות תרחיש חסרון/קצה אחד.
  • [ ] הערכתי את החלטת העיצוב עם טבלת החליפין.
  • [ ] קיבלתי את ההחלטה הסופית בהתבסס על ההקשר שלי, לא השארתי את זה ל-AI.