Table of Contents Table of Contents
Next Page  374-375 / 568 Previous Page
Information
Show Menu
Next Page 374-375 / 568 Previous Page
Page Background

אברהם שיר , ןכה בנימין

דוד ד״ר : המנח

פייטלסון

הנדסת

תוכנה

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