Tuesday, April 21, 2015

Related Work and idea

Research -->  fault prediction/avoidance จะสนใจใน fault
                -->  runtime verification สนใจในพฤติกรรมที่นำไปสู่ failure
                       เพราะ failure สามารถหลีกเลี่ยงได้  แม้จะเกิด fault ขึ้น

1.งานพวก Runtime verification มีจุดประสงค์เดียวกัน แต่ต่างกระบวนการสร้างกฏที่เกิดขึ้น
   เช่น สร้าง specification จากไดอะแกรมต่าง ๆ   สร้างจากการเรียนรู้  สร้างจาก code เป็นต้น
   ซึ่งจำเป็นต้องรู้ event ที่ทำให้ state ปกติ  และ event ที่ทำให้ state ไม่ปกติ

2. งาน fault prediction ที่ใช้ ฺBN
    -  ใช้จำนวน method call, จำนวนบรรทัดของโค้ดใน method และอื่นๆ เป็นพารามิเตอร์ สำหรับ BN ในการเรียนรู้
    -  ใช้ attribute ของระบบ เช่น
             redundancy  -->  รอขยายความ
            constrained-ness --> รอขยายความ
            personnel turnover  -->  รอขยายความ

   -  วิเคราะห์ algorithm แล้วนำมา combine เพื่อทำนาย error  แต่ใช้ระดับที่สูงกว่าข้อมูลจากโปรแกรม
   -  นำเสนอการเรียนรู้และวิเคราะห์หาสาเหตุของการเกิด failure แต่ใช้กับ CPU usage
   - ใช้ model และ algorithm เพื่อวิเคราะห์หา trace log และทำนาย  root cause (งานนี้ใช้เครื่องมือต่าง จุดประสงค์ต่าง)


การจะกำหนด event หรือ behavior ต้องรู้ relationship

relationship เก็บได้จาก  sources(document, specification, expert) or การเรียนรู้


   sources(document, specification, expert) or การเรียนรู้
                                        |
                                        |
                                       V
                              relationship
                                        |
                                        |
                                       V
                         event หรือ behavior

***
งานของกวาง  ใช้ Bayesian Network เพื่อสร้าง rule จาก behavior ของโปรแกรม เพื่อจับ failure และหลีกเลี่ยงก่อนที่เหตุการณ์จะเกิดขึ้น

โดย BN เรียนรู้ความสัมพันธ์ และความน่าจะเป็น (ใช้ WEKA)จาก log ของตัวแปร  แล้วจึงสร้างกฏขึ้นมา

1. Data collection  ใช้การ instrument code และเพิ่มตัวแปร "colliding" เพื่อเก็บ track ของ state ที่นิยามเอาไว้ว่าจะเกิด failure  (ข้อสังเกตส่วนของการเพิ่มตัวแปรมีผลต่อการทำงานของโปรแกรมหรือไม่) 
เก็บเพื่อเอาไปเป็นพารามิเตอร์ในการเรียนรู้


2. ใช้ BN เรียนรู้ว่า event ไหนที่จะนำไปสู่การเกิด failure

3.evaluation ทดสอบประสิทธิภาพของความสัมพันธ์ที่ได้

4. สร้าง rule  (ใช้ IF-THEN)







ความต่างของ fault กับ failure

failure  คือ ส่วนประกอบของพฤติกรรมของระบบ ที่ต่างไปจากพฤติกรรมที่ต้องการ

fault   คือ  เงื่อนไขที่ถ้าเกิดขึ้นแล้ว จะทำให้ระบบหรือส่วนของระบบทำงานล้มเหลว
 (ส่วนที่นิยามเพิ่มเติม ก็คือ เป็น root cause ของ failure)


- ถ้ามีพฤติกรรมที่เกิดขึ้นต่างจากที่ต้องการ  =  failure
- state ที่ไม่ปกติ                          =  failure

Begin again

"You got no second chances in life"

cr:Kazaam