והבטחת איכות תוכנה בפרט Quality Assurance – QA – ולידציה
באוטומציה ובקרה הבטחת איכות מתייחסת לפעילויות מתוכננות ושיטתיות המתבצעות במערכת כדי להבטיח שדרישות איכות המוצר או השירות תתממשנה. מניעת או צמצום משגים במדידות שיטתיות, השוואות מול סטנדרטים, ניטור מהלכי פיתוח ויצור, ומשוב בקרה (feedback loop) משותף.
הבטחת איכות מכילה שני עקרונות:
- המוצר חייב להתאים לייעודו המתוכנן.
- משגי הפיתוח והיצור חייבים להימנע (או לפחות להצטמצם).
הבטחת איכות כוללת ניהול של חומרי גלם, הרכבות, מוצרים ורכיבים, שירותים הקשורים ליצור, ותהליכי ניהול, יצור ובקרה.
איכות המוצר או השירות נקבעת ע"י המשתמש או הלקוח, ולא ע"י הקהל הרחב.
איכות התוכנה Software Quality
איכות התוכנה מקושר בד"כ להנדסת תוכנה, ובמסגרת זו מתייחס לשני מושגים משויכים אך שונים, שקיימים כאשר איכות מוגדרת במערכת עסקים:
- איכות פונקציונאלית של התוכנה, שמשקפת את התאמתה לעיצוב מוגדר, בהתבסס על דרישות פונקציונאליות או ספציפיקציות. אפשר כאן להתייחס גם כאן להתאמת התוכנה למטרה מיועדת והשוואתה למוצרים אחרים בשוק. איכות זו נאכפת ונמדדת ע"י בדיקות פונקציונאליות.
- איכות מבנית של התוכנה, שמתייחסת לעמידת התוכנה בדרישות לא פונקציונאליות שתומכות במילוי הדרישות הפונקציונאליות, כגון החוסן שלה, תחזוקתה ומידת דיוק פיתוחה. איכות זו נמדדת דרך ניתוח המבנה הפנימי של התוכנה, קוד המקור (source code) שלה, ובפועל איך הארכיטקטורה שלה מתאימה לעקרונות מבוססים של ארכיטקטורת תוכנה.
בתחילת הדרך, המבנה, הסיווג ולקסיקון התכונות וקנה המידה ביחס לתוכנה הופקו מהתקן ISO 9126-3 ובהמשך ממודל האיכותISO 25000:2005 . בהתבסס על הדגמים האלה, הגוף הבינ"ל Consortium for IT Software Quality (CISQ) הגדיר חמש תכונות מבניות רצויות להקניית ערך עסקי לתוכנה:
- אמינות
- יעילות
- בטיחות
- תחזוקתיות
- גודל מתאים
הבטחת איכות תוכנה Software Quality Assurance – SQA
כללי
הבטחת איכות תוכנה מורכבת מאמצעים לניטור תהליכים ושיטות בהנדסת תוכנה שמבטיחים איכות זו. השיטות להשגת מטרה זו רבות ומגוונות, וחלקן כוללות דרישות לעמידה בתקו אחד או יותר, כגון 9000 ISO, או דגמים כגון CMMI)) Capability Maturity Model Integration. רבות מהן בד"כ בעזרת תוכנת אפליקציה במחשב אישי (PC – Personal Computer).
אבטחת איכות התוכנה מקיפה את כל מהלך פיתוח התוכנה, שכולל תהליכים כגון הגדרת דרישות, עיצוב התוכנה, קידוד, בקרת קוד המקור (source code), סקירת הקוד, ניהול שינויים, ניהול קונפיגורציה, בדיקות, ניהול שחרור ואינטגרציית המוצר.
אבטחת איכות התוכנה מאורגנת לפי מטרות, התחייבויות, יכולות, פעילויות, מדידות ואישור המוצר.
ה- PC מחובר ל-PLC ע"י תקשורת מסוג Ethernet, RS-232 , RS-485 או RS-422. תוכנת האפליקציה מאפשרת כניסה ועריכה של הלוגיקה. בד"כ התוכנה מספקת פונקציות לניפוי באגים ואיתור תקלות בתוכנת ה- PLC. כמו כן, תוכנת האפליקציה תעלה ותוריד את תוכנת ה- PLC לצורכי גיבוי ושחזור.
פיתוח התוכנה
פיתוח התוכנה (שנקראת לחילופין פיתוח האפליקציה, עיצוב התוכנה, פיתוח הפלטפורמה, ועוד) הוא תהליך פיתוח מוצר התוכנה. המונח "פיתוח תוכנה" יכול לשמש גם לכינוי הפעילות של תכנות מחשב, שהינו תהליך של כתיבת ותחזוקת קוד המקור, אך באופן כללי יותר הוא מכיל את כל השלבים החל מקונספציית התוכנה הרצויה ועד הביטוי הסופי של התוכנה, שמתבצע באופן אידיאלי במהלך מתוכנן ומובנה. פיתוח התוכנה יכול לכלול מחקר, פיתוח חדש, פרוטוטיפים, שינויים, שימוש חוזר, הנדסה מחודשת, תחזוקה, וכל פעולה אחרת שמניבה מוצרי תוכנה.
תוכנה יכולה להיות מפותחת מסיבות שונות. שלושת הסיבות הנפוצות הן:
- מילוי דרישות ספציפיות של לקוח או עסק.
- מילוי דרישות לפי צרכים מובחנים של לקוחות פוטנציאלים.
- שימוש אישי (לדוגמה, של מדען לצורך מחקרו).
פיתוח תוכנה משובצת (embedded software development) לבקרת מוצרי צריכה מצריך תהליכי פיתוח משולבים במהלך הפיתוח של המוצר הפיסיקלי המבוקר.