DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
ארכוויז מס' 1‏ – כיצד להגיב מהר לדרישות חדשות באפליקציה? - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

ארכוויז מס' 1‏ – כיצד להגיב מהר לדרישות חדשות באפליקציה?

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

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

הבעיות

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

אז מה עושים?

נשארים במצב הקיים -  לקבל את הכאב כסגנון חיים [מעניין אם משתמשי המערכת יקבלו את זה?]

עדכון הארכיטקטורה ועיצוב המערכת

  1. הנדסת תוכנה - ע"י design  נכון, ניתן ליישם מודל בו קיימת הפרדה טובה בין שכבות ורכיבי המערכת כך ששינוי/עדכון לא גורר שינויים
    רוחביים - Coupling & Cohesion. שמרנו על סביבה פשוטה ללא תקורות נוספות כמו במקרה של הפרדת לשירותים
  2. הפרדת שכבת הלוגיקה העסקית ע"י שכבת שירותים - מה הרווחנו?
    לא צריך לגעת בסביבת הייצור כולה אלא רק בשירות אותו רוצים לעדכן. ע"י שמירה על מס' כללים בסיסיים הקשורים לניהול
    גרסאות שירותים, אנו יכולים לצפות למעט מאוד נק' חיכוך שעלולות לגרור שינויים גורפים במערכת. נשמע טוב לא? אז זהו, שלא בטוח. מה עם תקורת ניהול השירותים, הוספת שרתים לחווה, ניהולם, ניהול תצורה, גרסאות מקבילות? וזה עוד לפני שהתחלנו לדבר על ביצועים. הוספנו תקשורת החוצה את גבולות ה- Process, מה עם latency? מה אבטחת מידע?
  3. הפרדת החוקים העסקיים מן הקוד ע"י כלי BRE (Business Rule Engine) - כמובן שצריך לשקול את הפתרון ולוודא כדאיות ע"י בחינה של עלות מול תועלת.
    כאשר מדובר במעט חוקים או מעט שינויים לאורך זמן, כנראה שלא שווה להשקיע במוצר וניתן להסתפק בפתרון פשוט מבוסס פיתוח עצמי.

לסיכום

לפני שרצים לבצע שינויים מרחיקי לכת חייבים לבצע תהליך של בחינת מצב ע"פ התסריטים העיקריים שמניעים את התהליך.
לאחר מיפוי התסריטים והצרכים ניתן לבצע ניתוח חלופות (design, Service layer, Rules Engine וכו') אמיתי ורציני. רק כך נוכל לבחור בפתרון המיטבי ולהצדיק
את העלויות.

קישורים רלוונטיים

1. Coupling & Cohesion

2. Business Layer Scenarios Frame

3. Service Layer Scenarios Frame

4. WF Rules Engine

5. Business Rules Engine

תוכן התגובה

alikl כתב/ה:

קובי,

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

הלינקים שנתת בסוף - אני מוצא אותם מאוד שימושיים! תודה על השיתוף.

# October 14, 2009 10:42 AM

orenk כתב/ה:

פוסט מצוין!

# October 14, 2009 4:22 PM

Assaf Fraenkel כתב/ה:

מעולה, נשמח להרחבה בקרוב!!

# October 14, 2009 8:59 PM

Tal Ben-Shalom כתב/ה:

בתכנון של מערכת צריך למצוא את האיזון העדין בין KIS (keep it simple) לבין מערכת מודולרית/ג'נרית וכו'.

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

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

# October 14, 2009 9:56 PM

cobyp כתב/ה:

טל,

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

# October 15, 2009 10:05 PM

yuval leshem כתב/ה:

פוסט מעולה.

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

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

# October 17, 2009 7:46 PM

cobyp כתב/ה:

תודה יובל.

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

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

# October 18, 2009 6:46 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 2 and type the answer here:


Enter the numbers above: