Формалне методеУ рачунарству, посебно софтверском инжењерству и хардверском инжењерству, формалне методе су посебна врста математички заснованих техника за спецификацију, развој и верификацију софтвера и хардвера система.[1] Употреба формалних метода за софтверски и хардверски дизајн је мотивисана очекивањем да, као и у другим инжењерским дисциплинама, обављање одговарајућих математичких анализа може допринети поузданости и робусности дизајна.[2] Формалне методе се најбоље описују као примена прилично широког спектра теоријских основа информатике, посебно логике рачунања, формалн ог језика, теорије аутомата, и програмске семантике, али такође типове система и алгебарске структуре података за проблеме у софтверској и хардверској спецификацији и верификацији.[3] ТаксономијаФормални поступци се могу користити на више нивоа: Ниво 0: Формална спецификација може се предузети, а затим програм развити од овога неформално. Ово је названо формалне методе лите. Ово може да буде опција најисплативија у многим случајевима. Ниво 1: Формални развој и формална верификација се могу користити за производњу програма на формалнији начин. На пример, докази о особинама или префињености из спецификације на програм може се предузети. Ово може бити најприкладније у системима високог интегритета који укључују безбедност или сигурност. Ниво 2: Теорема провере може да се користи да предузме у потпуности формалне доказе машински проверене. Ово може бити веома скупо и само практично исплативо ако је цена грешака изузетно висока (на пример, у критичним деловима микропроцесора дизајна). Додатне информације о томе су испод проширене. Као и код семантике програмских језика, стилови формалних метода могу се грубо класификовати на следећи начин:
Лагане формалне методеНеки стручњаци верују да је заједница формалних метода занемарила пуну формализацију спецификације или дизајна.[4][5] Они тврде да експресија језика који су укључени, као и сложеност система који се моделира, даје пуну формализацију тешких и скупих задатака. Као алтернатива, предложене су различите лагане формалне методе, које наглашавају делимичну спецификацију и фокусирану апликацију. Примери овог лаког приступа формалних метода обухватају сплав објеката моделирања записа,[6] Денијеву синтезу неких аспеката Z ознака са случај коришћења возног развоја,[7]и ЦСК ВДМ алата.[8] УпотребаФормалне методе могу се применити на различитим тачкама у развојном процесу. СпецификацијаФормалне методе се могу користити да дају опис системима да се развијају, на било којем нивоу жељеног детаља. Овај формални опис може да се користи за усмеравање даљег развоја активности (види следеће одељке); Поред тога, може да се користи да провери да ли су захтеви за развијен систем потпуно и тачно назначени. Потреба за формалном спецификацијом система је истакнута годинама. У извештају ALGOL 58 ,[9] Џон Бакус представио је формални запис за описивање синтаксе програмског језика (касније названа Бакус нормална форма касније преименована Бакус–Наурова форма (BNF)[10]). Бакус је такође написао да формални опис значења синтакси важећих Алгол програма није завршена на време за укључивање у извештај. "Стога формални третман семантике правних програма биће укључен у наредном папиру." То се није појавило. РазвојКада је формална спецификација настала, спецификација је могла да се користи као водич док је бетон систем развијен током процеса пројектовања (нпр, схватио обично у софтверу, али и потенцијално у хардверу). На пример:
ВерификацијаКада је формална спецификација развијена, спецификација је могла да се користити као основа за доказивање својства спецификације (и надамо се закључивањем развијеног система). Људски усмерен доказПонекад мотивација за доказивање исправности система није очигледна потреба за ре-осигурање исправности система, али је жеља да се боље разумеју системи. Сходно томе, неки докази о коректности су произведени у стилу математичких доказа: у рукопису (или слагала) користећи природни језик, користећи ниво неформалног заједничког таквог доказа. "Добар" доказ је онај који је читљив и разумљив од стране других људских читалаца. Критичари оваквог приступа истичу да је двосмисленост својствена природном језику и да дозвољава грешке да се нађу непримећено у таквим доказима; Често, суптилне грешке могу бити присутне у детаљима на ниском нивоу обично превиде таквих доказа. Осим тога, рад укључен у израду тако доброг доказа захтева висок ниво математичке софистицираности и стручности. Аутоматски доказНасупрот томе, постоји све веће интересовање у производњи доказа о исправности таквих система и аутоматски начин. Аутоматизоване технике спадају у три категорије:
Неке аутоматизоване теорема провере захтевају смернице о томе које особине су "занимљиве" да наставе, док други раде без људске интервенције. Модел провере може брзо да вас закочи у провери милион незанимљивих држава, ако не даје довољно апстрактни модел. Заговорници таквих система тврде да резултати имају већу математичку сигурност од људских произведених доказа, јер сви заморни детаљи су алгоритмички проверени. Потребе тренинга да користи такве системе је такође мање него што је потребно да произведе добре математичке доказе руком, израду технике доступне различитим практичарима. Критичари имају на уму да неки од тих система су као пророчанстава: праве изрицање истине, али не дају објашњење те истине. Ту је и проблем "провере верификатора"; ако програм који помаже у верификацији сам по себи није доказан, може бити разлог да се сумња у исправност произведених резултата. Неки алати модерног модела провере производе "доказ дневник" детаљно сваки корак у њиховом доказу, тако да је могуће да се изврши, с обзиром на одговарајући алат, независна верификација. Главна карактеристика апстрактног приступа тумачењу је да пружа добру анализу, односно нема лажи, се вратила. Штавише, то је ефикасно прилагодљиво, подешавање апстрактног домена представља имовину која се анализира, а применом проширења оператера[11] да се брзо приближава. АпликацијеФормалне методе се примењују у различитим областима хардвера и софтвера, укључујући рутере, екстерне прекидаче, усмеравање протокола и безбедности апликација. Постоји неколико примера у којима су коришћени за проверу функционалности хардвера и софтвера који се користи у DCs. IBM користи ACL2, a теорему провере, у процесу израде AMD x86 процесора. Интел користи такве методе да провери свој хардвер и фирмваре (стални софтвер програмиран у меморија само за читање). Dansk Datamatik Center користи формалне методе у 1980 да развије преводилац систем за Ада програмски језик који је отишао да постане дуговечни комерцијални производ.[12][13] Постоји неколико других пројеката НАСЕ у којима се примењују формалне методе, као што је Следећа генерација ваздушног транспортног система, Unmanned Aircraft System integration in National Airspace System,[14] и Airborne Coordinated Conflict Resolution and Detection (ACCoRD).[15] B-Method са AtelierB,[16] се користи за развој безбедности аутоматизама за разне метрое инсталиране широм света од стране Alstom и Siemens, као и за заједничке критеријуме сертификаце и развој модела система од ATMEL и STMicroelectronics. Формална верификација је често коришћена у хардверу већине познатих хардвера, као што су IBM, Интел, и АМД. Постоје многе области хардвера, где Интел користии ФМС да провери функционисање производа, као што су параметризована верификација кеша кохерентност протокола,[17] Intel Core i7 процесор валидација извршења мотора [18] (користећи доказивање теорема, BDD’s, и симболичку евалуацију), оптимизација за Intel IA-64 архитектуру користећи ХОЛ светло теорему провере,[19] и верификација високих перформанси дуал-порт екстерни контролер са подршком за ПС експрес протокол и Интел напредну технологију за управљање помоћу ритма.[20] Слично томе, IBM је користио формалне методе у верификацији моћи капије,[21] регистри,[22] и функционална верификација IBM Power7 микропроцесора.[23] Формалне методе и ознакеПостоји низ формалних метода и ознака на располагању.
Види још
Референце
Литература
Спољашње везе
|
Portal di Ensiklopedia Dunia