January 2008 - Posts
תת חבילה של דוט-נט 3.0 - WPF, מהווה שכבה לוגית מעל Direct3D שהנה חלק מ-DirectX, במילים פשוטות: WPF משתמשת ב-API של Direct3D על מנת לצייר אובייקטים גראפיים של GUI. מיקרוסופט "עטפה" Direct3D בעזרת WPF ובכך איפשרה להמון מפתחי תוכנה לבנות ממשקים מתקדמים ללא רקע חזק ב ++C וללא התעמקות במעמקי ה API של החבילה. אם בעתיד מיקרוסופט תחליט לבסס WPF על מנוע גראפי אחר, הרי ש WPF על פקודותיו, לא יעבור שינוי משמעותי ויישאר עם אותו API שכבר מוכר למפתחים שצריכים בעיקרון להכיר את XAML ואת את אחת השפות של דוט-נט.
Mac-OS מול Linux ו-Windows
- כיום בשוק המחשבים האישיים מובילות שלש מערכות הפעלה: MS Windows, Linux ו-Mac-OS, האחרונה היא של חברת Apple וניתן לציין שמבחינת החידושים בתחום הממשקים הגראפיים במערכות הפעלה היא המובילה. מושגים רבים שרק לאחרונה נכנסו לסביבת העבודה החדשה של מיקרוסופט היו מוכרים מזמן במערכות הפעלה הראשונות של Apple. עד לאחרונה המחשבים של Apple היו בשימוש ע"י מגזרים כמו טיפוגראפיה (דפוס ועיצוב גראפי), אולפני הקלטה (מגזרים שעבורם פלטפורמה של Mac-OS הייתה הכי מתאימה). חברת Apple הייתה בין הראשונות שפיתחה מערכת הפעלה עם ממשק גראפי (ללא התייחסות לעובדה שמ"ה גראפית ראשונה פותחה ע"י מהנדסים מ"זירוקס") וכבר אז ניתן דגש על תצוגה נכונה של טקסטים ואלמנטים שונים של הממשק. (רכילות: מסופר שהמייסד של Apple - סטיב ג'ובס פרש בזמנו מלימודיו האקדמיים בתחום המחשבים ולאחר מכן חזר ללמוד לאוניברסיטה, אבל עשה רק קורס אחד: "עיצוב גופנים טיפוגראפיים", ז"א הוא הלך ללמוד במיוחד קורס בעיצוב גופנים לבתי הדפוס. אז זה נעשה על גבי הנייר ומחשבים עוד לא היו חלק מתעשייה זו).
מיקרוסופט בד"כ מואשמת בכך שמעתיקה רעיונות ממערכת הפעלה של Apple. חברת Apple קבעה סטנדרטים מסויימים בתחום הממשקים הגראפיים ויתר החברות אימצו אותם. לפני הופעת דוט-נט 3.0 עם WPF מבוסס DirectX ועם גראפיקה וקטורית, Apple פיתחה מנוע גראפי חדש שכבר שולב במערכת הפעלה Mac-OS 9.0, מערכת הפעלה מגיעה עם מספר חידושים בתחום הממשקים, שלא היו בשום מערכות הפעלה אחרות. כעבור זמן מסויים מיקרוסופט ייצא עם WPF.
ניתן לציין שמערכת הפעלה חינמית - לינוקס, לא מפגרת אחרי מערכות הפעלה מסחריות, גם היא ייצאה עם מנוע גראפי חדש, בעל יכולות דומות לאלה שיש במערכות מסחריות; לאחרונה אף הופיעו גרסאות חדשות של טלאים ללינוקס עם יכולות גראפיות העולות על האלו שיש ב-MS Windows ו-Mac OS.
מספר נקודות לציון: מערכות הפעלה לינוקס ו-Mac OS מצויידים במנוע תלת-ממד מסוג OpenGL שהוזכר בפוסטים קודמים. שתי המערכות הנ"ל מבוססות על מערכת הפעלה - UNIX.
בהמשך לפוסט הקודם שנתן סקירה כללית לדוט-נט 3.0, אני מעלה פוסט על WPF - Windows Presentation Foundation:
Windows Presentation Foundation - WPF, שם לא רשמי - Avalon - הנה תת חבילה של .Net Framework 3.0 (שם לא רשמי: WinFX). תת חבילה זו מובנית במערכת הפעלה חדשה של מיקרוסופט בשם "Vista"; בנוסף יכולה להיות מותקנת כרכיב שדרוג במערכות הפעלה Windows XP/2003. תת-חבילה מספקת מודל פיתוח עקבי לאפליקציות חלונאיות ואינטרנטיות; מודל זה מהווה הפרדה ברורה בין שכבת ממשק משתמש (UI) ושכבה עסקית/מידע (Business Logic). אפליקציות שמפותחות ב-WPF יכולות "לרוץ" בסביבה חלונאית (שולחן עבודה) או בסביבה אינטרנטית (כאפליקציה בתוך אתר WEB). חבילה זו מספקת מגוון אפשרויות עיצוב של פקדים ואלמנטים גראפיים (עם/ללא אפקטים ואנימציות) עבור ממשק המשתמש. ממשק משתמש יכול להיות מוצג הן ב-2D והן ב-3D; בנוסף חבילה מספקת יכולות עיצוב של מסמכים אינטראקטיביים, יכולות טיפוגראפיות, גראפיקה וקטורית וסיביות (ראסטר), אנימציה, מאגדי נתונים, אודיו ווידאו.
ניתן לפתח ממקשים ע"י שימוש בשפת תכנות XAML; XAML למעשה מהווה שפת תווך בין שכבות שונות של תוכנה. כל האובייקטים של WPF (פקדים ועוד) יכולים להיות בנויים ב-XAML (ראו פירוט בהמשך).
מספר דוגמאות לאפליקציות שנבנו ב-WPF:
אפליקציות מסוג Standalone
Yahoo! Messenger for Windows Vista
Microsoft Expression Blend
Electric Rain Standout
Roxio Central
The Print Shop Zoom
אפליקציות מסוג Browser Application
Vector Studio
Actipro Wizard
DominoKen
WeatherNews
Warner
MS Silverlight - תת-חבילה של WPF עבור אפליקציות אינטרנט. גם Silverlight מבוסס XAML בשילוב עם Java Script. תת חבילה זו בדומה ל-Flash של Adobe מאפשרת לפתח אפליקציות בעלות תוכן אינטראקטיבי ועם אפקטים מרהיבים. נותנת אפשרות לפתח אפליקציות לאינטרנט באותו קוד וטכניקות פיתוח המקובלות בפיתוח אפליקציות חלונאיות. חבילה אינה תומכת כעת ב-3D, אבל נותנת תמיכה לפיתוח 2D מבוססת גראפיקה ווקטורית עם שימוש במאיצים של חומרה (לעומתה מנוע פלאש של Adobe בעל חיסרון בכך שלא משתמש בחומרה להאצת הרינדור של גראפיקה, Silverlight vs. Flash - אולי אעשה על כך פוסט משלי).
מספר דוגמאות לאפליקציות/אתרים שנבנו ב-Silverlight:
Halo III
Let There Be Light
intersoftpt.com
Windows Vista Simulator
mediapreview.tv
תרשים המתאר חלוקה לוגית של WPF בשכבות לוגיות לפי חלוקה "קוד מנוהל" ו"קוד לא מנוהל" (דוגמא במע' "ויסטה"):
WPF כוללת את השירותים הבאים:
שירותי גראפיקה
כל הגראפיקה (כולל פקדים של Windows Forms) "תצויר" ע"י Direct3D (כפי שהזכרתי בפוסטים קודמים, זוהי תת חבילה של MS DirectX האחראית לגראפיקה תלת/דו-ממדית).
- בכך יש יתרון בדרך הצגת הגראפיקה, כולל אפשרויות גראפיות רבות כמו אפקטים חזותיים, אנימציה, גראפיקה וקטורית ותלת-ממד.
- "ציור" הגראפיקה ע"י Direct3D יאפשר שחרור משאבי מערכת הפעלה בכך שתפקיד ה"צייר" יתפוס כרטיס גראפי (שנשלט כזכור ע"י Direct3D). מכאן, העומס של "ציור" אובייקטים גראפיים וחישובים שונים עבור המשימות האלה יעבור מ-CPU ראשי אל מעבד הגראפי של הכרטיס.
- תמיכה בגראפיקה ווקטורית נותנת איכות מצוינת בתצוגה. כזכור הממשקים לרוב "מצוירים" ע"י מנוע GDI והם "מפוקסלים", ז"א אם נגדיל פקד ש"מצויר" ע"י GDI הוא יצא מעוות ונראה את הפיקסלים שלו בהגדלה. לעומת GDI, WPF יציג פקדים כאובייקטים וקטוריים שאיכותם לא נפגעת משינוי הגודל.
פריסה והטמעה
WPF - נועד לא רק עבור בניית ממשקים תקניים ש"רצים" רק על שולחן העבודה (Desktop Standalone Applications), מודל הפריסה של החבילה מציע שתי גרסאות: Standalone וגרסת אינטרנט XAML Browser Applications (XBAP). כאשר המודל התכנותי הוא זהה עבור שתיהן.
- אפליקציות Standalone מותקנות על מחשב לקוח ע"י שימוש בתוכנות מסוג Click-Once או Windows Installer MSI. אפליקציות אלו בד"כ מסוג Full Trust ז"א יש להן גישה חופשית לכל משאבי המחשב.
- XAML Browser Applications - XBAP הנן תוכנות שמאוחסנות בשרתי אינטרנט ומוצגות בתוך אתרי האינטרנט ע"י הדפדפן. אפליקציות אלה הנן מסוג Partial Trust (שם נוסף: "ארגז חול"). ז"א אינן מקבלות גישה חופשית לכל משאבי המחשב והנן כפופות לכללים מקובלים של אפליקציות אינטרנט (בדומה לפלאש); כל ההגבלות נועדו להגן על מחשב המשתמש שבחר להשתמש בתוכנות ש"רצות" כאפליקציות און-ליין באינטרנט. תוכנות XBAP מופעלות בתהליך (Process) נפרד מהדפדפן.
פעולה הדדית (שילוב טכנולוגיות)
- ניתן לשלב בטופס של אפליקציה חלונאית פקדים של WPF וגם של Win32. טופס יכול להיות מסוג Win32 או של WPF ,Win32 כאן מוזכר בהקשר של 2.0 WinForms.
- פעולה הדדית של WPF עם Win32 ועם יתר טכנולוגיות אפשרית דרך אובייקטים של Element-Host ו-Windows-Forms-Host.
שירותי מדיה
- מחלקות של גראפיקה דו-ממדית מספקות צורות גיאומטריות בסיסיות, מברשות, עטים ועוד כלים בסיסיים הדרושים לבנייה של גראפיקה וקטורית דו-ממדית.
- מחלקות של גראפיקה תלת-ממדית מספקות את כל הפונקציונאליות שמגיעה עם חבילה Direct3D. יחד עם זאת WPF מספק מספר כלים ייחודיים המשמשים לבנייה של ממשקי משתמש, מסמכים ומדיה אחרת; כל אלה הנם בעלי אפקט של תלת-ממד.
- מחלקות של גראפיקת סיביות נותנות תמיכה עבור פורמטים נפוצים של תמונות.
- ישנה תמיכה בפורמטים שונים של מדיה כמו WMV, MPEG וקבצי AVI בהתאם ל-Codec-ים המותקנים במערכת ההפעלה.
- WPF מספק יכולת עשירה לעבודה עם טקסטים ומשתמשת בטכנולוגיה Clear-Type של מיקרוסופט ל"ציור" הפונטים. טכנולוגיה זו מאפשרת הצגה איכותית יותר של טקסטים על מסך המחשב ע"י שימוש טכניקות החלקת הפונטים כמו sub-pixeling ו-anti-aliasing (על כך יהיה פוסט מיוחד בעתיד); כמו כן ניתנת תמיכה לפונטים מסוג Open-Type שהם מאוד נפוצים בתעשיית הדפוס המקצועית.
קישורי מידע (איגוד מידע - Data Binding)
- WPF מגיע עם סט מובנה של שירותי מידע המאפשרים למפתחים של שכבת המידע "להצמיד" מידע לפקדים בממשק המשתמש. שירותים (כאן, כלים) אלה מאפשרים לבנות ממשק משתמש דינאמי כשכבה שעובדת מעל שכבת המידע באינטראקציה מלאה.
- ישנם מספר סוגים של קישורי מידע:
חד-פעמי: כאשר משתמש מתעלם מעדכוני מידע בשרת
חד-סטרי: כאשר משתמש מקבל גישה לקריאה בלבד
דו-סטרי: כאשר לקוח מסוגל לקרוא ולכתוב מידע לשרת
- לאיגוד מידע יש השפעה על אופן התצוגה שלו, WPF מספק תבניות מידע לבקרת אופן התצוגה.
(בפוסטים עתידיים אגע ב-Data binding mechanism)
ממשק משתמש
- WPF מכיל סט תקני של פקדים שניתן היה לפגוש בחבילות פיתוח קודמות כמו .Net 1.0-2.0, ההבדל הוא שפקדים המגיעים עם חבילת WPF הנם וקטוריים לעומת הדור הקודם, כפי שצוין מקודם לאלה יש יתרון איכותי על פני פקדים ש"מצוירים" בטכניקה של ראסטר.
- המודל של WPF נותן הפרדה לוגית ברורה לאופן התצוגה של הפקדים:
- ניתן לבנות תבניות עיצוב של הפקדים ולרשת מתבניות אלו.
- ניתן לבנות תבניות אירועים של הפקדים ולרשת מתבניות אלו.
- מודל של עץ מאפשר שפקד אחד (ללא קשר לסוג), יכיל פקדים אחרים; ניתן לבנות תבניות למיקום הפקדים, תבניות אלו יכולות להיות דינאמיות (ז"א להתאים את עצמן בהתאם להגדרות תצוגה משתנות).
- אפליקציות שפותחו ב-WPF מוצגות כשכבת תצוגה עצמאית (כמו Swing, ראו פוסט קודם). ז"א אינן זקוקות לפקודות של מערכת הפעלה ל"ציור" הפקדים בהתאם לאירועים המופעלים עליהם.
עיבוד תמונה
- רכיב עיבוד תמונה (Windows Imaging Component - WIC) של WPF מאפשר למפתחים לייצר Codec-ים עבור פורמטים חדשים של תמונות.
אפקטים
- WPF מכיל סט בסיסי של אפקטים עבור תמונות סיביות (Bitmap Files), אפקטים אלה מרונדרים ע"י התוכנה.
- אפקטים מיוחדים כמו "הצללה", "טשטוש" ו"השתקפות" גם מובנים בחבילה.
(WPF עדיין לא משתמש במעבד של כרטיס גראפי לשם רינדור אפקטים מסוג Bitmap Effects)
טקסט
WPF מכיל מספר תכונות עשירות מתחום הטיפוגראפיה (תצוגת טקסט על גבי המסך), אפשרויות אלה לא היו זמינות ב-GDI. זהו ממשק פיתוח ראשון (במערכת הפעלה של Windows) שמסוגל לעבוד בצורה מקצועית עם גופנים מסוג Open-Type, True-Type ו-Compact-Open-Type (Compact Font Format - CFF).
ישנה תמיכה עבור תכונות טיפוגראפיות הבאות:
- סגנון תצוגה "תבניות" (Ligatures)
- סגנון תצוגה "מספרים ישנים" (למשל, משפטים שמתחילים במספר מעוצב שנכתב כאילו בכתב יד)
- סגנון תצוגה "הבזק", תצוגת טקסט (בד"כ כותרות) עם אפקט של הבזק (Swash variants)
- סגנון תצוגה "מקטעים"
- סגנון תצוגה "כתב תחתי/עילי" (למשל, חזקות מעל מספרים או אינדקסים)
- סגנון תצוגה "אותיות קטנות"
- סגנון תצוגה "יישור משתנה", ניתן לקבוע שכל שורה תקבל יישור משתנה בהתאם להגדרה כלשהי
- סגנון תצוגה "אבן יקרה", הטקסט יוצג עם אפקט של פאות אבן יקרה (Ruby characters)
- סגנון תצוגה "כתב יתדות" (הירוגליפים), מתאים בעיקר לשפות עם הירוגליפים כמו סינית
- סגנון תצוגה "שורות בסיס", השורה הדמיונית שעליה מסודרות האותיות (בלי חלקיהן היורדים של האותיות g, y, p, q, j)
- סגנון תצוגה "עיצוב מתחלף", בשורה אחת ניתן לעצב טקסט בצורות שונות: משפחות גופנים שונות, גדלי גופנים שונים ועוד
- סגנון תצוגה "כתב עם קרנינג", ניתן לכוונן את הרווח בין כל שתי אותיות (בשימוש בעיקר בדפוס, הדפסה ממוחשבת)
WPF מכיל מנוע מובנה שמאפשר בדיקת איות ודקדוק, בנוסף יש פונקציות "ריווח אוטומטי", תמיכה בשפות בינלאומיות (תמיכה טובה בשפות שנכתבות מימין לשמאל כמו עברית), ישנן פונקציות של "שבירת שורה אוטומטית", "מיקוף", "יישור", אפקטים של מפת סיביות (Bitmap Effects), טראנספורמאציה ואפקטים נוספים כמו "הצללה", "טשטוש", "החלקה", "סיבוב" ועוד. ישנה אפשרות לייצר טקסט עם אנימציה; בין אם מדובר באנימציות שמוכנות מראש או בזמן ריצה. ישנן אנימציות בסיסיות מובנות כמו: אותיות מקפצות, שינוי במיקום, גודל, צבע ושקיפות של טקסט.
כפי שכתבתי מקודם, WPF משתמש בטכנולוגיית רינדור Clear-Type של מיקרוסופט. טכנולוגיה זו מבוססת על טכניקת רינדור פונטים sub-pixel rendering (שעליה יפורט בפוסט נפרד). WPF עושה שימוש ביכולות מובנות של כרטיס גראפי (שימוש במאיץ גראפי לשם החלקת פונטים, אחרת CPU היה צריך להיות "מועמס" בעבודה זו), WPF נותן תמיכה מובנית ברזולוציות מסך שונות ו"מתחשב" באיכות התצוגה שמוגדרת במחשב המשתמש. חסרון: לא ניתן לנטרל תכונה של Clear-Type, עפ"י סקרים אחרונים, כמחצית משתמשים היו מעדיפים לנטרל תכונה זו ולקבל תצוגה ללא החלקת הפונטים.
קלט ממקור חילופי
WPF תומך בהתקן קלט מסוג "דיו דיגיטאלי".
נגישות
רכיבי WPF משתמשים ב-Microsoft UI Automation שמאפשר פיתוח ממשקים "נגישים"; "נגיש" – עומד בקריטריונים של קריאות, ניקיון עיצובי ועוד, ממשק נגיש לכל סוגי המשתמשים (כולל אנשים עם מוגבלויות מסוימות שמשתמשים במחשב).
Microsoft UI Automation (UIA) – API חדש של מיקרוסופט שנכלל בחבילה .Net Framework 3.0, API זה מאשר חשיפה של פקדי הממשק לבדיקות אוטומציה וטכנולוגיות קריאה כמו Assisting Technology, תוכנות עזר כמו יישומים שמקריאים מהמסך (בשימוש בעיקר ע"י אנשים עיוורים).
תרשים המתאר מבנה לוגי של WPF לפי השכבות :

מבנה לוגי שכבתי של WPF מעל ה- Kernel של מערכת הפעלה:
XAML
- Extensible Application Markup Language שפת תכנות מבוסס XML מבית מיקרוסופט. עליה יפורט בפוסט נפרד...
כלי פיתוח
|
ל-WPF קיימים מספר כלים לפיתוח תוכנה. רובם ממיקרוסופט, אך קיימים גם מספר כלים מיצרני צד-שלישי:
- תוסף (Add-In) שניתן להתקנה בתוך סביבת פיתוח MS Visual Studio 2005, מאפשר לפתח ממשקים עם פקדים של WPF וגישה לספריות שונות של הבילה, כמו כן נותן תמיכה לפיתוח בשפת XAML. בסביבת פיתוח MS Visual Studio 2008 אין צורך בתוספת זו, WPF הנו חלק אינטגראלי מהסביבה ומכיל עורכים מובנים (עורך XAML, עורך Visual forms designer ועוד).
- Microsoft Expression Blend – כלי פיתוח לממשקי משתמש ב-WPF. מספק סביבה נוחה לבניית טפסים עם תמיכה בגראפיקת 2D ו-3D. ישנה אפשרות לכתוב קוד תוכנה בשפת XAML וגם לייצא טפסים ופקדים מעוצבים כקבצים של XAML.
- Microsoft Expression Design – כלי לעיצוב רכיבים גראפיים של ממשקי משתמש ב-WPF. כלי זה נועד למעצבים גראפיים בעיקר, ניתן לעצב אובייקטים דו-ממדיים בגראפיקה וקטורית. אובייקטים אלה ניתן לייצא כקבצים של XAML. למשל: מעצב יכול לבנות כפתור מעוצב ולשמור אותו בקובץ XAML (קובץ זה יכיל פרמטרים של עיצוב הכפתור), מפתח התוכנה יכול לייבא קובץ זה לתוך MS Expression Blend או לתוך MS Visual Studio 2005/8 ולתת לו פונקציונאליות שדרושה לאותו הכפתור בממשק התוכנה.
- Electric Rain ZAM 3D, תוכנת צד שלישי המאפשרת לעצב אובייקטים (דגמים) תלת-ממדיים ולייצא אותם כקבצים של XAML בדומה ל-MS Expression Design. |
 |
ראו בהמשך פוסט על "מבוא למתודולוגיה בפיתוח ממשקי משתמש", אשמח לקבל הערות/תיקונים לגבי הפוסט. לרשימת הפוסטים של הסדרה לחצו כאן.
Before I'll continue with post about QA standard and its specifications from IEE standards, I want to present some sad story:
Space Shuttle Challenger Disaster


The Space Shuttle Challenger disaster occurred in the United States, over the Atlantic Ocean, off the coast of central Florida, at 11:39 am. EST (16:39 UTC) on January 28, 1986. The Space Shuttle Challenger disintegrated 73 seconds into its flight after an O-ring seal in its right solid rocket booster (SRB) failed at liftoff. The seal failure caused a breach in the SRB joint it filled, allowing a flare to reach the outside and impinge upon the adjacent attachment hardware and external fuel tank. The SRB breach flare led to the separation of the right-hand SRB and the structural failure of the external tank. Aerodynamic forces promptly broke up the orbiter. The shuttle was destroyed and all seven crew members were killed. The crew compartment and many other vehicle fragments were eventually recovered from the ocean floor after a lengthy search and recovery operation.
The disaster resulted in a 32-month hiatus in the shuttle program and the formation of the Rogers Commission, a special commission appointed by United States President Ronald Reagan to investigate the accident. The Rogers Commission found that NASA's organizational culture and decision-making processes had been a key contributing factor to the accident. NASA managers had known that contractor Morton Thiokol's design of the SRB's contained a potentially catastrophic flaw in the O-rings since 1977, but they failed to address it properly. They also ignored warnings from engineers about the dangers of launching on such a cold day and had failed to adequately report these technical concerns to their superiors. The Rogers Commission offered NASA nine recommendations that were to be implemented before shuttle flights resumed.

- O Rings (are made from special polymer) placed between sections of rocket booster are distorted by cold and ice (see picture) and one of them lead to fuel leak on right booster.
As a result of Rogers Commission investigation NASA implemented IV&V Quality Assurance Standard (see its description below).
NASA's Independent Verification and Validation Facility (IV&V) was established in 1993 and is located in Fairmont, West Virginia. The IV&V Facility was founded under the NASA Office of Safety and Mission Assurance in the aftermath of the Space Shuttle Challenger disaster. The IV&V Facility houses over 150 full-time employees.
Its purpose is to provide a higher level of safety and efficiency for "mission-critical software". Using a rigorous software engineering approach both ground and in-flight software systems are independently evaluated during planning, coding and testing in an effort to circumvent mission failure, the loss of equipment or personnel, and to meet time and cost constraints. All phases of software development are examined: concept, requirements, design, coding, testing and operation. Human operated software, robotic software, instrument software and data analysis software may all be assigned to IV&V by NASA.
The IV&V Facility's efforts have contributed to NASA's improved safety record since the Facility's inception.
Many safety regulations were signed in blood, many accidents with human (and financial) casualties lead to strong safety regulations, also in Software Quality Assurance.
IV&V - Independent Verification and Validation (link to PDF file)
IEEE Standard for Software Verification and Validation
IEEE Std 1012-1998
• Validation is concerned with checking that the software meets the user's needs, and Verification is concerned with checking that the system is well engineered.
• This is sometimes expressed as "Are we building the right system?" and "Are we building the system right?".
• Independent Verification and Validation (IV&V) is Verification and Validation activities performed by team that is not under the control of the team that is developing the software.
Defined by three parameters:
|
|
Technical Independence |
|
|
Managerial Independence |
|

|
Financial Independence |
|
|
Technical Independence |
• Personnel: Requires the effort to utilize personnel who are not involved in the development of the software.
“Outsiders” approach : This personnel required to formulate its own understanding of the problem and how the proposed system is solving the problem. Technical independence (“fresh viewpoint”) is an important method to detect subtle errors overlooked by those too close to the solution.
• Software tools: Requires to develop set of test and analysis tools separate from the developer’s tools.
Sharing of tools is allowable for computer support environments (e.g., compilers, assemblers, utilities) or for system simulations where an independent version would be too costly.
For shared tools, requires qualification tests on tools to ensure that the common tools do not contain errors that may mask errors in the software being analyzed and tested.


Disaster example from European Space Agency:
“Ariane-5” rocket blew up 37 seconds after lift-off
Cost: 500,000,000 $
Reason: An attempt was made to convert a 64-bit integer into a 16-bit unsigned integer
The ADA exception handler was omitted
The on-board computers crashed, and so did the rocket
Computations on the inertial reference system can stop 9 seconds
before lift-off
But if there is a subsequent hold in the countdown, it takes several
hours to reset the inertial reference system
Computations therefore continue 50 seconds into the flight
The Cause of the Problem:
Ten years before, it was mathematically proved that overflow was
impossible - on the “Ariane-4”
Because of performance constraints, conversions that could not lead to
overflow were left unprotected
The software was used, unchanged and untested, on the “Ariane-5”
However, the assumptions for the “Ariane-4” did not hold for the “Ariane-5”
Lesson:
Software developed in one context needs to be retested when integrated
into another context, no V&V processes are integrated as well.
|

|
Managerial Independence |
• Independent Team: Method requires that the responsibility for the IV&V effort be vested in an organization separate from the development and program management organizations.
• Independent Testing Plan: Managerial independence also means that the IV&V effort independently selects the segments of the software and system to analyze and test, chooses the IV&V techniques, defines the schedule of IV&V activities, and selects the specific technical issues and problems to act upon.
• JIT Tests: The IV&V effort provides its findings in a timely fashion simultaneously to both the development and program management organizations.
• Freedom of Action: The IV&V effort must be allowed to submit to program management the IV&V results, anomalies, and findings without any restrictions (e.g., without requiring prior approval from the development group) or adverse pressures, direct or indirect, from the development group.
Managerial Independence (?)
|

|
Financial Independence |
This requires that control of the IV&V budget be vested in an organization independent of the development organization.
- This independence prevents situations where the IV&V effort cannot complete its analysis or test or deliver timely results because funds have been diverted or adverse financial pressures or influences have been exerted.
|
|
Forms of Independence |
Defined by four kinds:
|
Classical |
|
Modified |
|
Internal |
|
Embedded |
Classical IV&V
• Embodies all three independence parameters.
• Responsibility is vested in an organization that is separate from the development organization.
• Uses a close working relationship with the development organization to ensure that IV&V findings and recommendations are integrated rapidly back into the development process.
• Performed by one organization (e.g., supplier) and the development is performed by a separate organization (i.e., another vendor).
• Generally required for software integrity level 4 (i.e., loss of life, loss of mission, significant social or financial loss) through regulations and standards imposed on the system development.
Modified IV&V
• Used in many large programs where the system prime integrator is selected to manage the entire system development including the IV&V.
• Prime integrator selects organizations to assist in the development of the system and to perform the IV&V.
• Acquirer reduces its own acquisition time by passing this responsibility to the prime integrator. Since the prime integrator performs all or some of the development, the managerial independence is compromised by having the IV&V effort report to the prime integrator.
• Technical independence is preserved since the IV&V effort formulates an unbiased opinion of the system solution and uses an independent staff to perform the IV&V.
• Financial independence is preserved since a separate budget is set aside for the IV&V effort. Can appropriate for systems with software integrity level 3 (i.e., an important mission and purpose).
Internal IV&V
• Exists when the developer conducts the IV&V with personnel from within its own organization, although not necessarily those personnel involved directly in the development effort.
• Technical, managerial, and financial independence are compromised:
Technical independence is compromised because the IV&V analysis and test is vulnerable to overlooking errors by using the same assumptions or development environment that masked the error from the developers.
Managerial independence is compromised because the internal IV&V effort uses the same common tools and corporate analysis procedures as the development group. Peer pressure from the development group may adversely influence how aggressively the software is analyzed and tested by the IV&V effort.
Financial independence is compromised because the development group controls the IV&V budget. IV&V funds, resources, and schedules may be reduced as development pressures and needs redirect the IV&V funds into solving development problems.
• The benefit of an internal IV&V effort is access to staff who know the system and its software. This form of IV&V is used when the degree of independence is not explicitly stated and the benefits of preexisting staff knowledge outweigh the benefits of objectivity.
Embedded V&V
• Similar to Internal IV&V in that it uses personnel from the development organization who should preferably not be involved directly in the development effort.
• Focused on ensuring compliance with the development procedures and processes.
• Works side by side with the development organization and attends the same inspections, walkthroughs, and reviews as the development staff (i.e., compromise of technical independence).
• Not tasked specifically to independently assess the original solution or conduct independent tests (i.e., compromise of managerial independence).
• Allows rapid feedback of V&V results into the development process but compromises the technical, managerial, and financial independence of the V&V organization.
• Financial independence is compromised because the IV&V staff resource assignments are controlled by the development group.
Forms of Independence:
|
Form of IV&V |
Technical |
Management |
Financial |
|
Classical |
Rigorous Independence |
Rigorous Independence |
Rigorous Independence |
|
Modified |
Rigorous Independence |
Independence with Qualifications |
Rigorous Independence |
|
Internal |
Independence with Qualifications |
Independence with Qualifications |
Independence with Qualifications |
|
Embedded |
Minimal Maintenance |
Minimal Maintenance |
Minimal Maintenance |
זהו פוסט המשך לפוסט הקודם "Simple = Better", בפוסט הנ"ל ניסיתי לתת הסבר לתפיסת פיתוח של מוצרים מתקדמים בעלי ממשק הפעלה פשוט ונוח; פוסט נוסף שנתן דוגמאות לממשקי הפעלה מתוך סרט מצויר: "דוגמא למימוש 'פשוט = יותר טוב'".
(ניתן לקרוא את הפוסט הזה גם ללא קשר לפוסטים הקודמים)
הסבר קצר על .NET Framework
רכיב תוכנה מבית מיקרוסופט, רכיב זה מותקן במערכת הפעלה של מיקרוסופט. רכיב כחבילת תוכנה, מכיל פתרונות קוד מוכנים (מחלקות בתוך ספריות מסודרות), המתאימים לרוב דרישות פיתוח נפוצות. תוכניות שמבוססות על חבילה זו נקראות תוכניות בעלות "קוד-מנוהל". "קוד-מנוהל" (Managed Code) הנו קוד שפקודותיו אינן מבוצעות ישירות על ע"י המעבד, אלא עובדות תחת סביבה מבוקרת; סביבה זו מנהלת את המשאבים (כמו זיכרון) ו"דואגת" שקוד ירוץ במסגרת כללים מוגדרים ובכך מגינה על מערכת ההפעלה, במקרים מסוימים חבילה יכולה אף לייעל את הקוד.
פתרונות מוכנים אשר כלולים בחבילה עונים על מגוון גדול של צרכים, כולל: ממשקי משתמש, מנהלי מידע (בסיסי נתונים), קריפטוגרפיה (הצפנה), אפליקציות אינטרנט, אלגוריתמים נומריים ותקשורת. פתרונות אלה מיוצגים ע"י מחלקות שמסודרות עפ"י ספריות נושאים.
מיקרוסופט יצרה סביבת פיתוח ייחודים שבה ניתן להשתמש ב-.NET Framework ללא קשר לשפת התכנות בה נכתבת התוכנה. בדוט-נט, כל הפקודות מתורגמות לשפת ביניים (IL - Intermediate Language), מהדרים של מיקרוסופט (לדוגמא MS Visual Studio 2003-2005) תומכים במספר שפות תכנות נפוצות, כך שמפתח תוכנה יכול לכתוב קוד תוכנה בשפה שהוא מכיר, קוד זה "מתורגם" לשפת הביניים, וחזרה כאשר יש צורך לעשות שימוש חוזר בקוד שנכתב. שיטה זו מאפשרת לכתוב תוכניות בשפות תכנות שונות ולבצע שימוש חוזר בקוד בפרויקטים שונים. לפני הרצת התוכנית (הרצת קובץ EXE או DLL), תוכנית "מתורגמת" משפת הביניים לשפת המכונה.
MS Framework 3.0
חבילה של .NET Framework (שם לא רשמי: WinFX), מכילה סטים של "קוד מנוהל" - API והנה חלק אינטגראלי של מערכת הפעלה של מיקרוסופט - Windows Vista ושל Windows Server 2008. ניתן להתקינה גם על Windows XP עם חבילת שירות SP2 ועל Windows Server 2003. חבילה זו באה אחרי חבילה של דוט-נט 2.0 ומכילה מספר שינויים מבניים ומגיעה על CLR - Common Language Runtime בגרסה 2.0.
WPF - Windows Presentation Foundation, שם לא רשמי - Avalon; תת חבילה של דוט-נט 3.0, משמשת לפיתוח ממשקי משתמש עם API מבוסס XML (או XAML - יפורט בהמשך) בגרפיקה וקטורית, מושתת על מאיצים גראפיים של חומרה וחבילת תלת-ממד של מיקרוסופט DirectX בטכנולוגיה Direct3D.
WCF - Windows Communication Foundation, שם לא רשמי - Indigo; מערכת מסרים מבוססת על שירותי תקשורת, מאשפרת תקשורת בין יישומית לוקלית וגם ברשת. מערכת דומה למערכת שירותי אינטרנט מדור קודם של דוט-נט 2.0 (Web Services).
WWF - Windows Workflow Foundation, מאפשר בניית תהליכים אוטומטיים עם תעבורה משולבת ע"י שימוש בתרשימי זרימה. תת חבילה זו משמשת מפתחים בזמן פיתוח תוכנה.
WCS - Windows Card Space, שם לא רשמי - Info Card; רכיב תוכנה אשר מאפשר אחסון מאובטח של נתוני המשתמש ומהווה ממשק ייחודי לבחירת זהות משתמש עבור תעבורה עסקית/פרטית מסוימת, למשל כניסה לאתר מאובטח תחת שמות משתמש וסיסמא ששמורים עבור משתמש מסוים.
ראו בהמשך פוסט "מבוא ל- WPF", אשמח לקבל הערות/תיקונים לגבי הפוסט. לרשימת הפוסטים של הסדרה לחצו כאן.