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

SharePoint 2010 הינו ... מאיפה להתחיל? – מוטב שנשאיר זאת למאמר אחר, כגון: Describing SharePoint 2010 in 1 Sentence, 8 Categories and 40 Feature Areas ואודות יכולות החיפוש של SharePoint 2010 תוכלו לקרוא כאן.
אז מה יש לנו משילוב של FAST ESP עם SharePoint 2010?
- מצד אחד:
- היכולות המוכרות של FAST, כאשר נפחי התוכן ותדירות השאילתות מוגבלים רק במגבלות החומרה.
- ממשק הניווט העשיר המסייע למשתמש להתכוונן לעבר הנושאים שמענינים אותו כמו גם להבחין בתחומים קשורים לענין.
- מהצד השני:
- חיפוש חברתי, המשלב התמחויות ותחומי ענין, תכנים שפורסמו לאחרונה והקשרים בין הגורמים האנושים, על בסיס הניסיון שנצבר במנוע החיפוש של SharePoint והרשתות החברתיות.
- מרכז החיפוש של SharePoint 2010 עם נגיעות קטנות של Silverlight בשביל הנפש.
- התאמות (customization) ללא קוד נוסח SharePoint.
- ממשקי ניהול נוסח מיקרוסופט גירסת 2010, אוטומציה מבוססת PowerShell (כמו כולם), התממשקות ל-SCOM והתקנה כמו שמיקרוסופט יודעת.
- ולא נשכח את המישמים החזקים של SharePoint, שמקבלים:
- API משולב עם זה של מנוע החיפוש המצוי ב-SharePoint 2010.
- התנסות תואמת בכלי העיצוב (SharePoint Designer 2010) והפיתוח (Visual Studio).
- אחידות בתשתית הקישוריות (Common Connector Framework).
- אחידות רבה אפילו במילון המונחים המשמש את שני מנועי החיפוש.
בממשק תוצאות החיפוש עושה השרת את הצעד הבא ומעביר אותנו מעבר לתיבת החיפוש, על ידי עזרים כגון מילות העידון (Refiners – דור ההמשך ל-Navigators), המבוססים על מאפינים מנוהלים ב-SharePoint ומאפינים שנשלפו (extracted) מהתכנים, עזרים חזותיים כגון ה-Visual Best Bets, התצוגות המקדימות הקטנות (thumbnails) ותצוגות מקדימות של מצגות בחלון הדפדפן.
הגדרות פרופילי הרלוונטיות והשליטה על קידום יזום של תכנים ואתרים, המוכרים לנו מ-FAST ESP משולבים כעת בממשק ה-SharePoint-י ונהנים מיכולות ההתאמה וההרחבה הנוחות שלו, לשיפור התנסות המשתמש מעבר למענה הנקודתי למילות החיפוש, ואולם, אל נא תתנו ללוח המכוונים המפושט להטעות אתכם. חשוב לזכור כי מדובר במטוס סילוני, וכי תכנון מסודר וכיוונון מקצועי עדין יכול לעשות את כל ההבדל בין איחזור תוכן טכני לבין התנסות משתמש זמינה ומכוונת פעולה, כפי שהשרת מיועד לאפשר.
באיזו שפה תרצה לחפש? – כרצונך, כולל קלינגונית. 84 שפות מזוהות לצרכי אינדוקס ואיחזור, כאשר היכולות המורפולוגיות שישולבו בכל שפה יקבעו בהמשך.
קראתם את הסקירה אודות מנוע החיפוש של SharePoint 2010? – כל מה שנאמר שם אודות שמות חיבה, זיהוי פונטי, פעולות משתמשים אחרים שמשפיעות על רלוונטיות תכנים, מידע אודות שותפים-לעשיה והמלצות לבנית השאילתה בשעת הקלדה – כל זה חל גם על השימוש ב-FAST for SharePoint, ועוד הרבה יותר, כפי שתוכלו לקרוא ב-FAST meets SharePoint - What's Coming in Search for SharePoint 2010.
לסיכום השילוב המנצח: מצד אחד הרבה יותר קל לישום וניהול, ומהצד השני חווית חיפוש משופרת לאין ערוך. זהו מנוע החיפוש החדש של FAST המשולב עם SharePoint 2010 .
ואחרי כל זה, חשוב להזכיר רק כי אנו מצויים היום בפתח גירסת הבטא הציבורית הראשונה ועוד ארוכה הדרך ויתכנו בה שינויים רבים ולכן חשוב מאוד שלא להיתלות ביכולת זו או אחרת המוזכרת במאמר זה, מאחר שלא ניתן בשלב הנוכחי להבטיח שכולן תגענה אל קו הגמר באיכות מספקת כדי להיכלל במוצר בגירסתו המושלמת.
להנאה והצלחה, טמיר ורונה
טל, תודה על שאלתך ב SharePoint 2010 Search – מבט מהיר מלמעלה שכן היא פתחה מקום להסבר:
(1) קיצורים של SharePoint:
- SPS הינו קיצור של SharePoint Portal Server, וכך קראנו לשרת בגירסאות 2001 ו-2003
- בגירסת 2007 קראנו לו Microsoft Office SharePoint Server, או בקיצור MOSS
- ל-2010 איני יודעת עדין על קיצור, אף שראיתי שימוש ב-SP2010
(2) בסביבת SharePoint 2010 אנו מבחינים בין מספר מנועי חיפוש:
- בנוסף למנוע המצוי כבר ב-SharePoint 2010 – גם FAST Search Server 2010 for SharePoint משתלב בתמונה. מה זה ואיך הוא משתלב? על כך בקרוב ...
(3) באשר לשאלתך בנושא ה-API – שוב תודה. אענה על כך ב-POSTs הבאים.
ולמקרה שמישהו שכח: אנו מצויים היום בפתח גירסת הבטא הציבורית הראשונה ועוד ארוכה הדרך ויתכנו בה שינויים רבים ולכן חשוב מאוד שלא להיתלות ביכולת זו או אחרת המוזכרת במאמרים הנ”ל, מאחר שלא ניתן בשלב הנוכחי להבטיח שכולן תגענה אל קו הגמר באיכות מספקת כדי להיכלל במוצר בגירסתו המושלמת.
להנאה והצלחה, רונה
*** לפני שאחל לספר לכם אודות מנוע החיפוש החדש המשולב ב-SharePoint 2010, אני מבקשת להזכיר כי התכנים בהמשך המאמר מתיחסים לסביבת ביטא מוקדמת של המוצר. ***
מנוע החיפוש של SharePoint 2010 מציג יכולות חדשות וחידושים ארכיטקטונים, כגון: טופולוגיה תשתיתית גמישה ובעלת יכולת צמיחה, ממשק משופר לניהול השרת ו-PowerShell לאוטומציה מהירה, ניטור עם אפשרות לשילוב System Center Operations Manager ודוחות המאפשרים התמקדות על גורמי בעיות כדי לשפרם.
ה-BDC מתקדם, מרחיב יכולות ואפני ישום, נקרא מעתה Business Connectivity Services (BCS). בין יכולותיו אנו מוצאים את איפשור הקישוריות הן מ-SharePoint 2010, כמו גם מישומי הלקוח של Office 2010, למקורות מידע חיצונים (כגון SQL, Oracle, SAP Web Services וישומים מותאמים אחרים).
בגירסת 2010 אנו רואים את ניצני ההפריה ההדדית בין יכולות הרכש החדש (FAST ESP) ומנוע החיפוש המוכר מ-SharePoint 2007, במקביל להתקדמות כל אחד מהמנועים בכיוונים המקוריים שלו. בין היכולות החדשות והמועצמות אנו רואים את ממשק המשתמש, המידע החברתי, ארכיטקטורה תשתיתית משופרת ללא הכר, התקנה מבוססת אשפים והצעות יעול, עזרי ניהול יעילים לזיהוי נקודות לשיפור הביצועים, כלי פיתוח וישום מוכרים עם יכולות חדשות, טכנולוגיה משופרת, אחידות בבסיס הישום והמון פתיחות להרחבה והתאמה לצרכי הארגון.
מ-FAST למדנו אודות זיהוי טוב יותר של שפת פריט התוכן, והרחבנו את הממשק כך שניתן לחפש בשפה הרצויה, ולאו דוקא בשפת האתר בו אתה מצוי, קיבלנו את רעיון ה-Navigators (או בשמם החדש: Refiners) שמאפשרים טיוב חזותי נוח, ושילבנו אותם במערך "המאפינים המנוהלים" של SharePoint, כך שהם פשוט נמצאים שם ... מהקופסה. כהמשך טבעי מוצגים גם "מצמצמי תחום" תאריכיים, אנושים ואחרים, אשר הופכים את תהליך טיוב השאילתה וההתמקדות לכיוון התוצאות המבוקשות לאינטראקטיבי, מהיר ונוח, וגם הם ניתנים להתאמה מנהלתית.
את הגורם האנושי המשכנו והעצמנו מתוך הבנה שהוא יכול לשמש כמקור יחודי למידע, אף מעבר לפריטי התוכן הרשומים על שמו, ולכן נעשה שימוש גם בתגיות חברתיות והוא זוכה לאלגוריתם חיפוש יחודי משלו.
קישוריות קלה ל-Windows 7 (קליק אחד ויש לנו נקודת חיפוש ב-Windows Explorer) וחיפוש ממכשירי כף יד מרחיבים את החיפוש לסביבות נוספות.
את השאילתות מהקופסה הרחבנו עם ביטויים המשלבים AND ו-OR ואף סוגרים ביניהם, שמות חיבה (nicknames) וזיהוי פונטי, ואת דיוק התוצאות שיפרנו רבות תוך לימוד מנסיונם של מומחי FAST .
למפתחים צפויה הפתעה נעימה בדמות Web Parts מהקופסה ... הניתנים להרחבה!
ולכל מי שמתכוון להתקין את השרת צפויה התנסות הרבה משופרת, מבוססת אשפים והצעות וברירות מחדל, שיהפכו את התהליך לפשוט מתמיד.
ואחרי כל זה, חשוב להזכיר רק כי אנו מצויים היום בפתח גירסת הבטא הציבורית הראשונה ועוד ארוכה הדרך ויתכנו בה שינויים רבים ולכן חשוב מאוד שלא להיתלות ביכולת זו או אחרת המוזכרת במאמר זה, מאחר שלא ניתן בשלב הנוכחי להבטיח שכולן תגענה אל קו הגמר באיכות מספקת כדי להיכלל במוצר בגירסתו המושלמת.
להנאה והצלחה, רונה
אני בטוח שהשתתפת בלא מעט דיונים עם חברים ממחלקת אבטחת מידע, אה? אני גם בטוח שניהלת שיחה מסוג זה – האם להפריד את בסיס הנתונים ב-Firewall מהאפליקציה. קרה פעם או פעמיים?
אני לא חושב שיש תשובה חד משמעית והכול תלוי ברמת סיכון ובמאמץ שנדרש כדי למגר את הסיכון. הנה כמה שאלות שכדאי לשאול לפני קבלת החלטה:
- האם רמת הסיכון בסביבת אינטראנט היא אותה רמת הסיכון כמו בסביבת אינטרנט? סביר להניח שלא, אלא אם כן סביבת האינטראנט כוללת משתמשים קרימינאלים מדופלמים מרובים.
- האם ישנו כח אדם מתאים ומספיק כדי לנהל את חוקי ה-Firewall שמפרידים בין אפליקציה לבין בסיס הנתונים?
הנה דוגמה קטנה שיכולה להפוך החלטה לכאן או לכאן. הזדהות מומלצת ל-SQL Server היא Windows Integrated Authentication. כדי לבצע הזדהות כזו דרך Firewall נדרש לפתוח לא מעט פורטים, חלקם לא כל כך אהובים ע”י אנשי אבטחת מידע כמו 135. אם ההחלטה נופלת להציב FW ואנשי FW לא מוכנים לפתוח את הפורטים אז האפליקציה תצטרך להשתמש ב-SQL Authentication שהיא פחות מאובטחת עקב צורך ניהול פרטי הזדהות – שם משתמש וסיסמה.
מה השיקולים שלך להפרדה או אי הפרדה של בסיס הנתונים מאפליקציה בעזרת Firewall?
מה טכניקות נוספות שהיית ממליץ?
שירותי MCS רלוונטיים
חומר רלוונטי
שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.
בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.
This template is made with PracticeThis.com plugin for Windows Live Writer
Although Microsoft introduced WPF allowing amazing looking UI to be developed.
WinForms will probably be a major player for a while. That assumption is my own.
One of the challenges UI developers face (especially with Forms) is supporting different types of monitors having different settings of resolution and DPI.
So, how can achieve a well designed UI that still looks good when the DPI Settings are changed?
Ok, you ask why would the DPI setting change?
- One scenario is that you need to target two different setups, one with 96DPI and the second with 120DPI.
- The user can manually change it if he\she chooses to. Although this is not recommended as Windows will usually detect the optimized DPI settings of the monitor.
By carefully planning the UI layout, you can minimize the effects of the different settings on your UI.
Here’s a short list of things to consider:
- Carefully plan your Form design and controls layout.
- Use Layouts - as of .Net 2.0, WinForms provide the TableLayoutPanel and FlowLayoutPanel controls.
These are very useful but come with a price. Especially the TableLayoutPanel.
- Prefer using FlowLayoutPanel over TableLayoutPanel when possible.
It's more efficient and in many cases will do the job.
- User Anchoring and Docking of controls. Sometimes, that all you'll need for your layout .
See more at "How to: Anchor and Dock Child Controls in a FlowLayoutPanel Control".
- Make sure you use the AutoScale property of the forms you build and choose the
Font attribute. This will make sure that when the font size changes, the controls will
be resized accordingly.
- Changing the DPI setting causes things to move a bit. Leave enough space on your layout
so controls don't overlap and text fields have enough space.
- If you know in advance that you need to target multiple DPI setups, make sure your
controls and layouts support theses DPI's. This can be easily done by adjusting
The DPI on your development machine while designing the UI.
For more readings, check out these two links:
"Best Practices for the TableLayoutPanel Control"
"How to: Anchor and Dock Child Controls in a FlowLayoutPanel Control"
הערה: אני שמח לארח ארכיטקט ותיק בוגר MCS, מורי ורבי, אשף קבבים וסטייקים ובין היתר סמנכ”ל פיתוח בחברת Mobideo – אייל רייסמן. אחד הדברים החשובים שלמדתי מאייל זה לדעת לקבל החלטות וליישם אותן. אייל משתף כאן אחת הדילמות שהתלבט לאחרונוה. הוא גם קיבל החלטה ויישם אותה. תהנה!
לאחרונה מצאתי את עצמי מתלבט בסיטואציה הבאה – יש אפליקציה די גדולה שעד היום רצה על מכשירים מבוססי Windows CE/ Windows mobile על מסכים קטנים (עד 5 אינץ'), צד הלקוח מבוסס Win app ( .Net CF ).
בתקופה האחרונה כתוצאה מצרכי שוק הלקוחות של המוצר, נדרש להוסיף למוצר יכולות deployment גם למחשבים מבוססי XP (עליו השלום אוטוטו...) עם מסכים גדולים יותר.
בעיקרון – על פניו נראה שפתרון WPF אמור לספק מענה הולם לסיטואציה בה גודל המסך אינו קבוע ומוגדר מראש באופן מובנה, ולעומתו – ב Winforms ניאלץ לקודד לוגיקת כיוונון של המסכים בכפוף למאפייני המסך (ב Runtime).
כמובן שיש עוד מס' אפשרויות, אך מסיבות שונות הן לא עלו ל Best and final ...
נשמע פשוט, לא? (אז זהו, שלא. אלא אם אתם בעולם שכולו טוב ואין לכם מגבלות זמן/כסף/סיכון...)
כאבים והתלבטויות
הכאבים הקשורים לבחירת הפתרון לצד הלקוח ה"חדש" הם:
- ראש ובראשונה – סיכון טכנולוגי.
- האם לא מסוכן מידי לקחת מערכת שרצה ביצור אצל לקוחות ולפתח צד לקוח חדש?
- האם לא תהיה רגרסיה באיכות המוצר כתוצאה מהכנסת טכנולוגיה חדשה?
- האם לא יצוצו בשלב מאוחר מידי בעיות שה roll back הטבעי שלהן היה לחזור לטכנולוגיה הישנה אך הוא כרגע יהיה יקר יותר מאשר להישאר "תקוע" איתן ולבצע מעקפים מכוערים אבל שעובדים?
- (כמו שאומרים בשפת העם: "כשר אבל מסריח..." ) ?
- איכות התוצר ללקוח:
- האם כתוצאה משדרוג צד הלקוח ל WPF המוצר "שווה" יותר בעיני הלקוח? (ובמילים אחרות – האם הלקוח יהיה מוכן לשלם יותר על מוצר זה מאשר על מוצר בטכנולוגיה ה"ישנה"?)
- המימד האישי:
- מה נוח לספק המוצר?
- מה צוותי הפיתוח מכירים?
- במה הם טובים?
- או במילים אחרות – למה לי את הצרה הזו כשאני יכול בלי?...
דרכי פתרון האפשריים
בסיכומו של דבר, מכיוון שמדובר על החיים האמיתיים, הפתרונות שעלו על הפרק הם:
- בשלב הראשון:
- לבצע את שדרוג המוצר בטכנולוגיה הקיימת (Winforms ) לתמיכה בכל הנדרש.
- ההשלכה – time to market גבוה , תוצר איכותי (מבוסס על ידע קיים)
- בשלב השני:
- הוגדרו רכיבים אשר להם הערך העסקי הגבוה ביותר עבור הלקוח ברגע שישודרגו ל WPF – ופיתוח שלהם תוך שילובם במסגרת המוצר הקיים (שילוב של Winforms ו WPF באותה אפליקציה).
- ההשלכה – העלאת ערך עסקי ללקוח בזמן מהיר על ידי הכנסת רכיבים בטכנולוגיית WPF שמאפשרים יכולות שלא היו קיימות באופן דומה ב Winforms ), ובנוסף – הקטנת הסיכון כיוון שהמימוש הוא ממוקד.
על פי התובנות והפידבקים של כל הגורמים המעורבים לאחר ביצוע סעיפים 1+2 לעיל – קבלתי החלטה על שדרוג גורף.
מה אתה היית עושה במקרה כזה?
קריאת המשך וחומר רלוונטי
הנה כמה לינקים שיסבכו אתכם עוד יותר בהחלטות כאלו...
בעיה אמיתית אצל לקוח – איך לתכנן את מערכת כך שתאפשר להגיב מהר לדרישות ושינויים?
אוקיי, רגע לפני שרצים לפתח, בואו ננסה להבין מה הם הגורמים המרכזיים לבעיה והאם שכבה נוספת היא התשובה?
הבעיות
-
אין הפרדה טובה בין הרכיבים השונים - כל נגיעה בקוד גוררת תגובת שרשרת מה שמצריך מעבר לאורך ולרוחב המערכת לצורך
עדכונים ותיקונים ולכן כל שינוי מחייב תהליך בדיקות מקיף.
-
יקר להעלות גרסה חדשה לסביבת הייצור - אווצ'!!! תהליך ארוך, מייגע ויקר.
-
תדמית שלילית לצוות הפרויקט - חוסר שביעות רצון של לקוחות המערכת העסקיים.
אז מה עושים?
נשארים במצב הקיים - לקבל את הכאב כסגנון חיים [מעניין אם משתמשי המערכת יקבלו את זה?]
עדכון הארכיטקטורה ועיצוב המערכת
-
הנדסת תוכנה - ע"י design נכון, ניתן ליישם מודל בו קיימת הפרדה טובה בין שכבות ורכיבי המערכת כך ששינוי/עדכון לא גורר שינויים
רוחביים -
Coupling & Cohesion. שמרנו על סביבה פשוטה ללא תקורות נוספות כמו במקרה של הפרדת לשירותים
-
הפרדת שכבת הלוגיקה העסקית ע"י שכבת שירותים - מה הרווחנו?
לא צריך לגעת בסביבת הייצור כולה אלא רק בשירות אותו רוצים לעדכן. ע"י שמירה על מס' כללים בסיסיים הקשורים לניהול
גרסאות שירותים, אנו יכולים לצפות למעט מאוד נק' חיכוך שעלולות לגרור שינויים גורפים במערכת. נשמע טוב לא? אז זהו, שלא בטוח. מה עם תקורת ניהול השירותים, הוספת שרתים לחווה, ניהולם, ניהול תצורה, גרסאות מקבילות? וזה עוד לפני שהתחלנו לדבר על ביצועים. הוספנו תקשורת החוצה את גבולות ה- Process, מה עם latency? מה אבטחת מידע?
-
הפרדת החוקים העסקיים מן הקוד ע"י כלי 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
הערה:אני שמח לארח בלוגר וארכיטקט ותיק, ארנון רותם-גל-עוז. ארנון נותן הגדרה למושג ארכיטקטורה ומכניס הרבה בשר להגדרה הזו. ההגדרה שלו שמתייחסת ל-Quality Attributes כגון אבטחת מידע וביצועים נורא נורא מתהדהדת איתי. מה איתך?
לפני כמה ימים פנה אלי ידידי אליק ושאל אם אני מוכן לכתוב פוסט אורח לבלוג של MCS. היות ואני יוצא MCS וגם שינוי מסוים מההרגל שלי לכתוב באנגלית – הסכמתי. רציתי לכתוב על ארכיטקטורה אוולוציונית, כלומר איך ניתן לשלב את התהליך של תכנון ארכיטקטורה בפיתוח זריז ו/או רזה. אבל לפני כן הבנתי שכדאי להקדיש כמה מילים להגדרה של ארכיטקטורת תוכנה
אז מה זה בעצם ארכיטקטורת תוכנה. ההסבר הפשוט אומר שזה בעצם מה שארכיטקטים מפיקים מעבר לעובדה (שלצערי) זה לא תמיד נכון, זה לא מקדם אותנו הרבה. האמת, ניתן למצוא לא מעט הגדרות, חלקן אפילו לא רעות אבל זו שאני מעדיף הינה:
ארכיטקטורת תוכנה הינה אוסף ההחלטות המשפיעות על מאפייני האיכות של המערכת, בעלות השפעה רוחבית ושקשה לשנותן. הארכיטקטורה היא המסגרת שבתוכה נבנה התכן (קוד)
אז בוא נסתכל על מרכיבי ההגדרה
- משפיעות על מאפייני האיכות של המערכת. מאפיני האיכות הן מה שמכונה לפעמים "דרישות לא פונקציונאליות" (אם כי לדעתי זו טעות להגדירן כך) כלומר דברים כמו יכולת הגידול של המערכת, ביצועים, אבטחה, זמינות וכו. החלטות ארכיטקטוניות ישפיעו באופן ישיר על יכולת המערכת לעמוד במאפיני איכות )ולהפך ממאפיני האיכות הנדרשים ניתן לגזור החלטות ארכיטקטוניות).
- השפעה רוחבית. החלטות לטעון משהו מראש לזכרון כדי לפתור בעית ביצועים (כדוגמא) היא לא ארכיטקטונית. החלטה לקבוע טעינה מראש לזיכרון כצורת העבודה הסטנדרטית היא כן. החלטה על שפת פיתוח ומיפוי טכנולוגי הן גם החלטות ארכיטקטוניות.
- ההחלטות שקשה לשנותן- זה החלק הכי מעניין של ההגדרה, לפחות בהיבט של ארכיטקטורה אוולוציונית. הקוד, כאמור למעלה, נבנה בתוך המסגרת שנקבעת בארכיטקטורה. היות שכך שינוי בנקודת העבודה הזו יגרום לאפקט גלי שיפעפע לכל הקוד שנכתב תחת ההנחות שהשתנו. בדוגמא פשטנית אם כתבנו אפליקצית Access ואז החלטנו להעביר אותה לאפליקצית 3-tier או SOA כנראה שלא נוכל לשמור ברבה מהקוד המקורית
מההגדרה הנ"ל ניתן להבין שכדי לבנות ארכיטקטורה כמו שצריך יש צורך בתכנון בתחילת העבודה (Up front design) מה שמן הסתם מתנגש עם עם גישות זריזות (כגון SCRUM שהוזכר כן בפוסט אורח הקודם) שבהן קיים שלב תכן מקדים מאד קצר (אם בכלל). אחד המושגים הידועים בהקשר של גישות זריזות הוא YAGNI או "לא תצטרך את זה" בעברית, כלומר אם אתה יושב ומתחיל לתכנן משהו לעומק אומרים לך מה פיתאום, מאיפה אתה בכלל יודע שיהיה בזה צורך, בוא ממש משהו פשוט שעובד למה שצריך עכשיו. זה לא נשמע כמו משהו שיכול לעבוד עם הצורך בתכנון ארכיטקטורה. או אולי כן?
התשובה, כמו שניחשתם, היא ארכיטקטורה אוולוציונית, כלומר ארכיטקטורה שמתפתחת במהלך הפיתוח. כמובן שעל הנייר זה נשמע פשוט ובמציאות זה הרבה יותר מורכב.
בחלק הבא אני אנסה לתת דוגמא ממה שאנחנו עושים אצלנו וגם כמה נקודות שיכולות לעזור להגיע לארכיטקטורה כזו.
הנה טיפ קטן שיעזור לך לרכוש ידע טכנולוגי עמוק מהטובים ביותר – מצא את הבלוגרים המלוכלכלים של התחום ועקוב אחריהם.
הנה כמה בלוגים שחובה להרשם:
- מרק רוסינוביצ’. מרק עומד מאחורי כלי Sysinternals החינמיים המדהימים. הוא כותב בבלוג שלו חומר עומק לגבי Windows Internals. אני מת על הסדרה שלו – “The Case Of” בה הוא מתאר מקרה או תקלה ומסביר איך הוא פותר אותו בעזרת כלי Sysinternals שפיתח. אחד הפוסטים הכי אהובים עליי הוא Pushing the Limits of Windows: Virtual Memory.
- טס פרנדז. אם אתה רוצה לרדת באמת עמוק, אבל באמת באמת עמוק לקרביים של ASP.NET ולהבין איך מוצאים בעיות ומקור לבעיות אלה – טס היא הכתובת, אחת והיחידה, נקודה! היא אפילו בנתה סדרת לימוד ופרסמה הכול בבלוג שלה. אמרתי כבר שהיא מדהימה?
- וונלונג דונג. פוסטים מדהימים ומאוד מפורטים בנושא WCF, בין האהובים עליי:
- סטיב סאודרס. אין הרבה מה להרחיב, אני פשוט מעריץ את סטיב. שעומד מאחורי הדברים הנפלאים האלה:
מה הבלוגים המלוכלכים שאתה קורא?
חומר רלוונטי
שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.
בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.
This template is made with PracticeThis.com plugin for Windows Live Writer
הערה :פוסט זה הוא של ארכיטקט אורח – יובל לשם. בפוסט יובל נותן סקירה קצרה של SCRUM , מי מרוויח ומי מפסיד מהשיטה וגם כמה טיפים מעשיים. תהנו!
ככל מקצוע שמתפתח ומתעדכן, גם עולם התכנות וניהול הפיתוח אינו חף מטרנדים, חידושים והמצאות. בשנים האחרונות, כבשה מתודולוגיית הSCRUM את ליבם של מפתחים ומנהלים רבים בפיתוח. הSCRUM, בקצרה, הוא תהליך פיתוח השונה מהותית מקונספט ה"כתוב מסמך אפיון, מסמך תכנון, מסמך אינטגרציה ובצע אותם" המוכר לכולנו. בSCRUM מדובר בחלוקת המשימה לכמה "ספרינטים" מוגבלי זמן, כאשר כל "ספרינט" כזה מכיל מספר מיקרו משימות המוטלות על הצוות. ישיבות הSCRUM הן יומיות, מהירות, הצוות הוא אמנם רוחבי, אך מתפקד כצוות אורגני בחיי המשימה, וכל ספרינט הוא איטרציה, שבסופה ניתן להשוות בין התוצאות לתכנון, לשנות את הדרישות לספרינט הבא, להחליף, לתעדף וכו'.
אז זה טוב, או לא?
השאלה בכותרת המאמר נשאלה על ידי הCOO, לאחר ניסוי SCRUM ראשון בחברה בה אני עובד כיום. לאחר שצפיתי בכמה תהליכים כאלו הקורים באגפים שונים ובחברות שונות, אפשר לומר, שהתשובה, כמו הרבה שאלות ניהוליות, תלויה את מי שואלים...
אנשי המוצר והUI נהנו מהיכולת לקבל תוצר מהר מהפיתוח, ולתת משוב תוך כדי, ולא בסיום התהליך.
המתכנתים נהנו מחוסר הצורך בתיעוד, מהדינמיות של המשימות, ומההתעסקות נטו בתכנות ופחות באינטגרציה ותיעוד.
אז מי נהנה פחות, תשאלו?
הQA, כמובן.
מדוע הQA נהנים פחות מSCRUM
אחת הבעיות הקשות בSCRUM היא בעיית בקרת איכות הקוד. בעוד שכולם בפיתוח ובמוצר נהנים מהאיטרציות, הקוד לא תמיד "בטוח" מספיק, וכיוון שההתקדמות בSCRUM הינה רוחבית, ולא אורכית (לדוגמה - במקום לכתוב קודם את השרת ואחר כך את הממשק, כותבים FLOW אחד מצד לצד במהלך הספרינט), הבודקים נפגעו מרגרסיות, ומחוסר תשומת לב לבעיות ביצועים (לדוגמה) ולאינטראקציות בין תכונות שונות.
עוד בעיה אופיינית נובעת מעיקרון ה80-20: כיוון שSCRUM מתמקדת במה שכן אפשר להספיק במהלך כל ספרינט, לעתים השלמת ה20% האחרונים תיקח משמעותית יותר זמן מ80 האחוז שלפניהם.
אז איך אפשר להימנע מהבעיות האלו?
ככל הנראה, הפתרון טמון ביכולת לאמץ תהליך בפיתוח לא על פי הספר (ויש די הרבה כאלה כבר), אלא על פי מה שמתאים לכל ארגון ופרויקט. קשה להימנע מניסיון ראשון "לפי הספר" (ונכתבו עד עכשיו כבר כמה ספרים על SCRUM). אבל נסו בליווי התהליך לבדוק מה מתפספס בתהליך.
- האם זה אינטראקציה בין תכונות?
- פספוס של תהליכי אינטגרציה?
- האם צריך להוסיף עוד בדיקות יחידה בין ספרינטים?
- ומה קורה אחרי שהתהליך מסתיים?
- ואולי בכלל צריך להתחיל הפוך?
כבר ראיתי קבוצה, שלקחה רק את הפגישות היומיות ולוח המשימות מהמתודולוגיה, וניהלה את הפיתוח על פי השלבים המסורתיים. שיטה זו גם מהווה שיטת מעבר טובה, כיוון שעדיין קיימים מנגנוני הבקרה המסורתיים של הפיתוח.
ולסיכום
תהליכים בפיתוח צריכים להיות דינמיים כמו הטכנולוגיות עצמן. כמו שהפיתרון הטכנולוגי משתנה בהתאם לבעיה, הפתרון התהליכי עשוי להשתנות גם כן. כמובילים בפיתוח, עליכם לשאול את עצמכם באופן תמידי, האם תהליך הפיתוח "טוב ליהודים", ואם לא, שנו אותו!
יובל לשם
איש פיתוח.