

אברהם שיר , ןכה בנימין
דוד ד״ר : המנח
פייטלסון
הנדסת
תוכנה
Updator
עדכון
ספריות
תוכנה
אוטומטי
אלגוריתם
זיהוי
ועדכון
שינויי
שוברי
API
Updator
מגדירה
חוקים שפת
לתיאור
שינויים
שוברי
API.
שפת
החוקים
הינה
שפת של שילוב
Python
עם
wildcards
ייחודים
לכלי
: _$, n$ (
כאשר
n
מייצג
מספר
).
מימין
מוצגת
דוגמא
לקוד
מקור
ומשמאל
ישנה
דוגמא
לחוק
החלפת
סדר
פרמטרים
ושם
הפונקציה
fill
בספרייה
tensorflow:
האלגוריתם
מבצע
זיהוי
והחלפה
בין
תבניות
החוקים
שמתארים
ה שינויי את
-API.
להלן
שלבי
האלגוריתם
:
Updator
לתת תדע
פתרון
למקרים
בהם
עדכון
ספריית
תוכנה
בשפת
Python
דורש
התערבות
אנושית
מנת על
להתאים
את
השינויים
הנדרשים
בקוד
לממשק
הספרייה של החדש
.
אלו שינויים
נקראים
״שינויים
שוברי
API
״
.
דרישות
עיקריות
:
●
עדכון
ספריות
תוכנה
בשפת
Python
באופן
אוטומטי
הרצת ע״י
פקודה
אחת
●
יצירת
ממשק
CLI
להפעלת
המערכת
●
הצגת
הספריות
והחוקים
הקיימים
,
סינון
חוקים
והוספת
חוק
מותאם
אישית
●
עדכון
המשתמש
אודות
הצלחה
/
כישלון
במהלך
ביצוע
פעולות
במערכת
עיקרי
התכנון
:
ארכיטקטורת
המערכת
:
●
ארכיטקטורת
Pipes And Filters
●
ממשקים
:
○ CLI
○
ממשק
לקבצים
○
ל ממשק
-DB
●
שימוש
בספריות
כגון
ast.py,astor
וכו
'.
כיום
,
עדכון
ספריות
הינו תוכנה
ידני תהליך
ומסורבל
רב זמן הגוזל
מהמפתחים
.
מתכנתים
וארגונים
אף
נמנעים
מלבצע
זה שדרוג
,
בעקבות
הזמן
הכרוך
בהתאמת
הגרסה
החדשה
למערכת
.
מטרת
הפרויקט
הינה
לפשט
זה תהליך
,
ע״י
אוטומציית
עדכון
הספריות
.
הפרויקט
יעודד
עדכוני
ספריות
ויפנה
למפתחים
אותו רב זמן
יוכלו
להשקיע
בשיפור
איכות
מוצריהם
.
module:
"tensorflow"
patternToSearch:
"tensorflow.fill($1, $2, $3)"
patternToReplace:
"tensorflow.build($2, $1)"
Source Code
import
os
import
pandas
as
pd
import
tensorflow
as
tf
os.remove(
'./file'
)
dims = [
2
,
2
]
tf.fill(dims,
9
,
'mat'
)
2.
המרת
התבניות
ל בחוק
-AST:
1.
קוד המרת
ל המקור
-AST:
4.
החלפת
ב העץ תת
-patternToReplace,
כולל
שליפת
המשתנים
והכנסתם
במקומות
המתאימים
:
לאחר
מכן
,
מתבצעת
לעץ המרה
לקוד חזרה
.
3.
קוד בעץ עץ תת חיפוש
המקור
,
ביצוע
patternMatching
ושמירת
המשתנים
שנמצאו
:
Program
args
“./file”
Call
func
attr
“remove”
value
“os”
args
‘mat’
dims
9
Call
func
attr
“fill”
value
“tf”
value
targets
Assign
List
3 2
name
“dims”
Program
args
“./file”
Call
func
attr
“remove”
value
“os”
args
dims
9
Call
func
attr
“build”
value
“tf”
value
targets
Assign
List
3 2
name
“dims”
תוצאות
:
כלי
CLI
לעדכון
ספריות
תוכנה
אוטומטי
בשפת
Python.
module:
"tensorflow"
patternToSearch:
"tensorflow.setDevice($1)"
patternToReplace:
"tensorflow.device = $1"
Before executing Updator
After executing Updator
import
math
import
tensorflow
as
tf
tf.setDevice(
'/CPU:0'
)
math.pow(
4
,
5
)
tf.fill([
2
,
2
],
9
,
'mat'
)
import
math
import
tensorflow
as
tf
tf.device =
'/CPU:0'
math.pow(
4
,
5
)
tf.build(
9
, [
2
,
2
])
הדגמת
הרצת
עבור הכלי
עדכון
ספריית
tensorflow
כאשר
החוקים
הקיימים
במערכת
:
●
החוק
לעיל שהוצג
●
החלפת
פונקציה
למאפיין
args
$3
$1 $2
Call
func
attr
“fill”
value
“tf”
patternToSearch
Program
args
“./file”
Call
func
attr
“remove”
value
“os”
args
‘mat’
dims
9
Call
func
attr
“fill”
value
“tf”
value
targets
Assign
List
3 2
name
“dims”
args
$1 $2
Call
func
attr
“build”
value
“tf”
patternToReplac
e