S6: სემანტიკაზე დაფუძნებული კოდის ძებნა

Original web-page: http://cs.brown.edu/~spr/research/s6.html

სტივენ პ. რეისი/Steven P. Reiss

ჩვენი ნამუშევარი კოდების ძებნაზე მიზნად ისახავს პროგრამისტებს, ისარგებლონ ღია კოდის ხელმისაწვდომი საცავებით. ტრადიციული კოდების საძიებო სისტემები, როგორიცაა Google-ის კოდირების კოდი, კოდორები ან კრუგლი უზრუნველყოფენ ამგვარი საცავებისთვის წვდომას, მაგრამ ნამდვილად არ ამარტივებენ პროგრამისტების მუშაობას კოდის გამოყენებით. ისინი იღებენ საკვანძო სიტყვებს და დააბრუნებენ პოტენციურად ასობით კანდიდატის კოდის ნაწილს. პროგრამისტმა შემდეგ უნდა გაიაროს თითოეული დაბრუნებული ფაილი. მათ შემდეგ უნდა ნახონ, შეიძლება იყოს შესაბამისი კოდი. თუ ეს ასეა, მათ უნდა წაიკითხონ იგი დეტალურად, რათა დადგინდეს, ეს არის ზუსტად ის, რაც მათ სურთ, ან სულ მცირე, ახლოს. დაბოლოს, მათ უნდა მოაწყონ კოდი, რომ დააკმაყოფილონ თავიანთი განსაკუთრებული მოთხოვნები დასახელების, ფორმატის, შეცდომების გამოყენებასთან დაკავშირებით და ა.შ.

ჩვენ ვგრძნობთ, რომ უკეთესი მიდგომა იქნებოდა, რომ პროგრამისტს მიაწოდოს უფრო ზუსტი ინფორმაცია იმის შესახებ, თუ რა სურს და შემდეგ სისტემამ შეასრულოს დატვირთული სამუშაო, დაბრუნებული კოდის ფრაგმენტების შემოწმების, კოდის მოდიფიცირების მიზნით, გააკეთოს ის, რაც სურს პროგრამისტს და კოდის გარდაქმნა სამიზნე ჩარჩოში. ჩვენი ძებნის წინა ბოლოს, პროგრამისტმა განსაზღვროს მათი სურვილის სემანტიკა. ეს მოიცავს საკვანძო სიტყვებს, როგორც არაფორმალურ აღწერას, ხელმოწერას, ტესტის შემთხვევებს და კონტრაქტებს (JML) მეშვეობით ფუნქციური სპეციფიკაციები, უსაფრთხოების შეზღუდვები (ჯავას უსაფრთხოების მოდელის გამოყენებით) და ძაფის შეზღუდვები (სრულად არ არის შესრულებული). გარდა ამისა, მომხმარებელს შეუძლია უზრუნველყოს კონტექსტი, რომელშიც კოდი მოთავსდება. წინა ბოლოს ცდილობს ამ სპეციფიკაციების მარტივად გადმოცემა.

სისტემა მუშაობს საკვანძო სიტყვების გამოყენებით, ერთ – ერთ შესაძლო კოდის საძიებო სისტემის შესასვლელად (ან ბრაუნში მდებარე კოდის ადგილობრივი საძიებო სისტემისთვის), კანდიდატის ფაილების მისაღებად. ამ ფაილებში თითოეული კლასი ან მეთოდი (იმისდა მიხედვით თუ რას ეძებს მომხმარებელი) განიხილება პოტენციური გამოსავალი. ეს გადაწყვეტილებები შემდეგ გარდაიქმნება დაახლოებით 30 ტრანსფორმაციის კომპლექტის გამოყენებით, რომლის კოდია კოდირების ზუსტად განსაზღვრა პროგრამისტის მიერ. გარდაქმნები მერყეობს მარტივი (მაგ., სახელწოდების შეცვლას სახელის შესატყვისად), კომპლექსამდე (მაგ. ნახაზში ხაზის პოვნა, რომელიც გამოანგარიშებულია დაბრუნებული ტიპის მნიშვნელობას და შემდეგ აკეთებს ჩამორჩენილ ნაჭერს, სანამ ერთადერთი თავისუფალი ცვლადი არ იქნება) პარამეტრის ტიპების მნიშვნელობები). ყველა გამოსავალი, რომლის გადაკეთებაც შესაძლებელია ხელმოწერის დასაკმაყოფილებლად, ტესტირება ხდება მოცემული ტესტის შემთხვევების, უსაფრთხოების შეზღუდვების და JML წესების გამოყენებით. დამატებითი ტრანსფორმაციების გამოყენება შესაძლებელია ტესტის შემთხვევების შედეგების საფუძველზე. გამოსავალი, რომელიც გადის ტესტის შემთხვევებს, შემდეგ ხდება ფორმატის მიხედვით მომხმარებლების მითითებული სტილის მიხედვით, დალაგებულია ზომაზე, სირთულეზე ან ტესტურ შემთხვევებზე შესრულებული ეფექტის მიხედვით და მომხმარებლის შესახებ წარუდგენს მას.

სისტემის გამოსწორება შესაძლებელია (უმეტეს დროს – ზოგჯერ სერვერი დაბალია) ზე http://conifer.cs.brown.edu/s6.

S6 ს ორიგინალის შემუშავებისას, ჩვენ გავაფართოვეთ სისტემა, რომ მოვიძიოთ მომხმარებლის ინტერფეისები, მოცემული ინტერფეისის ესკიზით და ვიპოვნოთ ტესტის შემთხვევები მოცემული კოდი, რომელიც უნდა იყოს ტესტირება.

ფურცლები

სემანტიკა დაფუძნებული კოდი ძებნა, ICSE 2009, მაისი 2009 წ.

სასურველი რა მოძიება, SUITE 2009, მაისი 2009 წ.

რჩეული ინტერფეისი, ასე 2014 წელს.

შექმნა ტესტი შემთხვევები გამოყენებით კოდი ძებნა გამოუქვეყნებელი.

მონადირე შემდეგი გენერატორი კოდი ხელახლა გამოყენება Java  იუპენგის მიერ სურვილი, თან ფენგი, რუბენ მარტინსი, აარტი კაუზიკი, ისილი დილიგი და სტივენ რეზი, FSE 2016.

რჩეული ინტერფეისი  სტივენ რეზი, გაეროს მია ო და ახალი, ავტომატური პროგრამული უზრუნველყოფის საინჟინრო ჟურნალი, 2017.

სურათები

წინა ბოლო:

S6 front end image

წინა ბოლო აჩვენებს შედეგებს:

front end with results

დიაგრამა სტაჟიორი>ls:

internal view

პროგრამა

პროგრამა ხელმისაწვდომია საიტზე ftp://ftp.cs.brown.edu/u/spr/s6.tar.gz.