การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี...
Transcript of การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี...
การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ
โดย
นายวรชญ ลเกษม
วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร วทยาศาสตรมหาบณฑต
สาขาวชาวทยาการคอมพวเตอร คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร
ปการศกษา 2557 ลขสทธของมหาวทยาลยธรรมศาสตร
การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ
โดย
นายวรชญ ลเกษม
วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร วทยาศาสตรมหาบณฑต
สาขาวชาวทยาการคอมพวเตอร คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร
ปการศกษา 2557 ลขสทธของมหาวทยาลยธรรมศาสตร
FORMAL VERIFICATION OF GEARMAN FRAMEWORK BASED ON PHP
BY
MR. WARUSH LEEKASEM
A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE
DEPARTMENT OF COMPUTER SCIENCE FACULTY OF SCIENCE AND TECHNOLOGY
THAMMASAT UNIVERSITY ACADEMIC YEAR 2014
COPYRIGHT OF THAMMASAT UNIVERSITY
(4)
หวขอวทยานพนธ การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ
ชอผเขยน นายวรชญ ลเกษม ชอปรญญา วทยาศาสตรมหาบณฑต สาขาวชา/คณะ/มหาวทยาลย วทยาการคอมพวเตอร
วทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร
อาจารยทปรกษาวทยานพนธ
อาจารย ดร.เดนดวง ประดบสวรรณ
ปการศกษา 2557
บทคดยอ
เฟรมเวรคเกยรแมนส าหรบภาษาพเอชพเปนเฟรมเวรคส าหรบชวยพฒนาโปรแกรมประยกตบนเวบใหสงงานแบบภาวะพรอมกนได ท าใหประสทธภาพของโปรแกรมประยกตเพมขน แตเนองดวยความซบซอนของชดค าสง ท าใหผพฒนาโปรแกรมประยกตยากทจะตรวจสอบความถกตองของเหตการณทเปนไปไดทงหมดในการประมวลผลของโปรแกรมประยกต ดงนนจงจ าเปนทจะตองทวนสอบโปรแกรมประยกตเพอรบประกนความถกตองและความนาเชอถอ
งานวจยฉบบนจงน าเสนอการทวนสอบเชงรปนย ดวย Timed Trace theory เพอทวนสอบหา Safety และ Timing failures ของเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ ผลการทดลองแสดงใหเหนประสทธภาพของวธการทน าเสนอ
ค าส าคญ: การทวนสอบเชงรปนย, การค านวณแบบภาวะพรอมกน, Time Petri net
(5)
Thesis Title FORMAL VERIFICATION OF GEARMAN FRAMEWORK BASED ON PHP
Author Mr. Warush Leekasem Degree Master of Science Major Field/Faculty/University Computer Science
Science and Technology Thammasat University
Thesis Advisor
Dr. Denduang Pradubsuwun
Academic Years 2014
ABSTRACT
Gearman based on PHP is an application framework that provides ability to execute web application in concurrency to improve system performance.
Since it is hard to predict all possible cases of concurrent processes to ensure the correctness and reliability of web application that run with Gearman. Therefore, a formal verification is required.
In this paper, we proposes method to applied Timed Trace theory with temporal constraints to verify safety and timing failures of Gearman based on PHP. Experimenting it with application shows that proposed approach is effective.
Keywords: Formal verification, Concurrent computing, Time Petri net
(6)
กตตกรรมประกาศ
การจดท าวทยานพนธฉบบนจะไมอาจส าเรจไดเลย หากไมไดรบการสนบสนนจากทานอาจารยทปรกษาวทยานพนธ ดร.เดนดวง ประดบสวรรณ ซงคอยใหค าชแนะและใหค าปรกษาทดยง ไมวาจะในดานวชาการและดานการใชชวต ท าใหผวจยสามารถเอาชนะอปสรรคตางๆ ในการท าวทยานพนธฉบบนมาไดโดยตลอด ขอกราบขอบพระคณทานอาจารยเปนอยางสงไว ณ ทน
ขอกราบขอบพระคณคณาจารยภาควชาวทยาการคอมพวเตอรทกทานทกรณาอบรมใหความรทเปนประโยชนในทกรายวชา ตงแตวนทเรมปฐมนเทศนจนถงวนสดทายของการเรยนการสอนเปนอยางด ท าใหผวจยสามารถน าความรทไดไปประยกตใชในงานทท าและวทยานพนธฉบบนไดจนส าเรจลลวง
ขอขอบคณเจาหนาทภาควชาวทยาการคอมพวเตอร ทกทาน โดยเฉพาะคณพมพภาวรรณ ฉมชาญเวช ทคอยเอาใจใสตดตาม ดแลก าหนดการและเอกสารตางๆในการศกษาตลอดทงหลกสตร ใหเปนไปดวยความเรยบรอย
สดทายนขอกราบขอบพระคณคณแมทรกยง ภรรยา ครอบครวและเพอนๆทคอยใหก าลงใจโดยตลอดในการจดท าวทยาพนธฉบบน
นายวรชญ ลเกษม มหาวทยาลยธรรมศาสตร พ.ศ. 2557
(7)
สารบญ
บทคดยอ ........................................................................................................................................... (4)
กตตกรรมประกาศ ............................................................................................................................ (6)
สารบญตาราง .................................................................................................................................... (9)
สารบญภาพ ..................................................................................................................................... (10)
บทท 1 บทน า ..................................................................................................................................... 1
1.1 ความเปนมาและความส าคญของงานวจย .............................................................................. 1 1.2 วตถประสงคของงานวจย ....................................................................................................... 3 1.3 ขอบเขตของงานวจย .............................................................................................................. 3 1.4 ประโยชนทคาดวาจะไดรบ ..................................................................................................... 3 1.5 รายละเอยดของวทยานพนธ .................................................................................................. 4
บทท 2 ทฤษฎและงานวจยทเกยวของ ................................................................................................ 5
2.1 ทฤษฎทเกยวของกบงานวจย .................................................................................................. 5 2.1.1เกยรแมน ........................................................................................................................ 5
2.1.1.1 ชดค าสงเกยรแมน ................................................................................................ 7 2.1.1.2 ชดค าสงในภาษาพเอชพ ...................................................................................... 8
2.1.2 Time Petri net ......................................................................................................... 11 2.1.2.1 องคประกอบของ Time Petri net ................................................................... 12 2.1.2.2 การท างานของทรานซชนและการเปลยนต าแหนงของโทเคน ........................... 13
2.1.3 ขนตอนวธการทวนสอบดวย Timed Trace theory .................................................. 14 2.1.3.1 Timed Trace theory ...................................................................................... 15
2.2 งานวจยทเกยวของ ............................................................................................................... 17
บทท 3 วธการวจย ............................................................................................................................ 18
3.1 การอธบายความหมายองคประกอบของเกยรแมนดวย Time Petri net ............................ 19 3.2 การแปลงชดค าสงเกยรแมนใหอยในรปแบบ Time Petri net ............................................ 20
3.2.1 ค าสง doNormal ....................................................................................................... 20 3.2.2 ค าสง doBackground................................................................................................ 21 3.2.3 ค าสง addServer ....................................................................................................... 21
(8)
3.2.4 ค าสง addTask ........................................................................................................... 21 3.2.5 ค าสง runTasks .......................................................................................................... 22
3.3 การแปลงชดค าสงพเอชพ ใหอยในรป Time Petri net ...................................................... 23 3.3.1 ค าสง if…else ............................................................................................................. 24 3.3.2 ค าสง while ................................................................................................................ 24 3.3.3 ค าสง do…while ........................................................................................................ 25 3.3.4 ค าสง for ..................................................................................................................... 25 3.3.5 ค าสง break ................................................................................................................ 26 3.3.6 ค าสง continue.......................................................................................................... 27 3.3.7 ค าสง switch .............................................................................................................. 27 3.3.8 ค าสง echo ................................................................................................................. 28 3.3.9 ค าสงทกระท ากบตวแปร ............................................................................................. 28
3.4 วธระบเงอนไขเกยวกบเวลาใหกบกจกรรมในชดค าสงเกยรแมน........................................... 29 3.5 การเตรยมขอมลส าหรบการทวนสอบ .................................................................................. 29
3.5.1 ตวอยางคณลกษณะของโปรแกรมประยกตในรปแบบ Time Petri net..................... 30 3.5.2 ตวอยางชดค าสงของโปรแกรมประยกตในรปแบบ Time Petri net .......................... 31 3.5.3 อธบายรปแบบค าสงไฟลในไฟล .ppp ทใชกบเครองมอทวนสอบ............................... 32
บทท 4 ผลการวจยและอภปรายผล ................................................................................................. 34
4.1 กรณศกษาโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ ..................................................... 34 4.2 คณลกษณะของโปรแกรมประยกต ทใชในการทวนสอบ ...................................................... 36 4.3 ชดค าสงของโปรแกรมประยกต ทใชในการทวนสอบ ........................................................... 37 4.4 ผลการทวนสอบ ................................................................................................................... 38
บทท 5 สรปผลการวจยและขอเสนอแนะ ......................................................................................... 39
5.1 สรปผลการวจย .................................................................................................................... 39 5.2 ขอเสนอแนะ ......................................................................................................................... 39
รายการอางอง ................................................................................................................................... 41
ประวตผเขยน .................................................................................................................................... 42
(9)
สารบญตาราง
ตารางท หนา 1.1 เปรยบเทยบความเรวในการตอบสนองทเพมขนเมอน าเอาเกยรแมนไปประยกตใช 2
(10)
สารบญภาพ
ภาพท หนา 1.1 โครงสรางสถาปตยกรรมการท างานของเกยรแมน 1 2.1 API การท างานของเกยรแมน 6 2.2 ภาพท 2.2 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนไคลเอนต 6 2.3 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนไคลเอนตทท างานแบบภาวะพรอมกน6 2.4 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนเวรคเกอร 7 2.5 ค าสง doNormal 7 2.6 ค าสง doBackground 7 2.7 ค าสง addServer 8 2.8 ค าสง addTask 8 2.9 ค าสง runTasks 8 2.10 ตวอยางการใชงานค าสง if…else 9 2.11 ตวอยางการใชงานค าสง while 9 2.12 ตวอยางการใชงานค าสง do-while 9 2.13 ตวอยางการใชงานค าสง for 10 2.14 ตวอยางการใชงานค าสง break 10 2.15 ตวอยางการใชงานค าสง continue 10 2.16 ตวอยางการใชงานค าสง switch 11 2.17 ตวอยางการใชงานค าสง echo 11 2.18 ตวอยางการใชงานค าสงทกระท ากบตวแปร 11 2.19 ตวอยางสญลกษณเพลสใน Time Petri net 12 2.20 ตวอยางสญลกษณทรานซชนใน Time Petri net 12 2.21 ตวอยางสญลกษณฟงกชนการเกดยอนหลงใน Time Petri net 12 2.22 ตวอยางสญลกษณฟงกชนการเกดไปขางหนาใน Time Petri net 13 2.23 ตวอยางสญลกษณเซตของโทเคนใน Time Petri net 13 2.24 โทเคนอยทเพลส P0 และ P1 กอนการเปลยนต าแหนง 14 2.25 โทเคนเปลยนต าแหนงมาท P2 หลงจากทรานซชน T0 enable 14 3.1 ภาพรวมขนตอนของงานวจย 18
(11)
3.2 ขนตอนวธการแปลงเกยรแมนใหอยในรป Time Petri net 19 3.3 ค าสง doNormal ในรปแบบ Time Petri net 20 3.4 ค าสง doBackground ในรปแบบ Time Petri net 21 3.5 ค าสง addServer ในรปแบบ Time Petri net 21 3.6 ค าสง addTask ในรปแบบ Time Petri net 22 3.7 ค าสง runTask ในรปแบบ Time Petri net 22 3.8 ตวอยางชดค าสงทมการเรยกใชค าสง runTask มากกวา 1 ค าสง 23 3.9 ผลลพธในรปแบบ Time Petri net ของการแปลงชดค าสงในภาพท 3.8 23 3.10 ค าสง if…else ในรปแบบ Time Petri net 24 3.11 ค าสง while ในรปแบบ Time Petri net 24 3.12 ค าสง do-while ในรปแบบ Time Petri net 25 3.13 ค าสง for ในรปแบบ Time Petri net 25 3.14 ค าสง break ในรปแบบ Time Petri net 26 3.15 ตวอยางการท างานของค าสง break ภายเงอนไข if…else ทซอนในลป while 26 3.16 ผลลพธในรปแบบ Time Petri net ของการแปลงชดค าสงในภาพท 3.15 27 3.17 ค าสง continue ในรปแบบ Time Petri net 27 3.18 ค าสง switch ในรปแบบ Time Petri net 28 3.19 ค าสง echo ในรปแบบ Time Petri net 28 3.20 ค าสงทกระท ากบตวแปรในรปแบบ Time Petri net 28 3.21 ตวอยางชดค าสงของโปรแกรมประยกตทท าหนาทเรยงตวอกษรจากหนาไปหลง 30 3.22 ตวอยางคณลกษณะของโปรแกรมประยกตในรปแบบ Time Petri net 30 3.23 ตวอยางชดค าสงโปรแกรมประยกตในรปแบบ Time Petri net 31 3.24 ตวอยางอนพทส าหรบใชกบเครองมอทวนสอบในรปแบบไฟล .ppp 32 4.1 สถาปตยกรรมของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ 35 4.2 แผนภาพแสดงล าดบการท างานของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ 35 4.3 คณลกษณะของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพในรปแบบ Time Petri net 36 4.4 ชดค าสงของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพทน ามาทวนสอบ 37 4.5 ชดค าสงของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพในรปแบบ Time Petri net 38
1
บทท 1 บทน า
1.1 ความเปนมาและความส าคญของงานวจย
ในปจจบนการใชงานโปรแกรมประยกต (Application) ผานทางเวบไซตก าลงไดรบ
ความนยมเพมขนเปนอยางมาก เนองจากโปรแกรมประยกตบนเวบนนสามารถใชงานผานระบบปฏบตการหรออปกรณทแตกตางกนไดโดยงายผานทางระบบเครอขายอนทราเนตและเครอขายอนเทอรเนต ดงนนผพฒนาโปรแกรมประยกตบนเวบจงจ าเปนจะตองออกแบบใหโปรแกรมประยกตสามารถรองรบผใชงานจ านวนมากพรอมๆกนได
ภาษาทใชในการพฒนาโปรแกรมประยกตบนเวบทไดรบความนยมอยางแพรหลายในปจจบนเชน ภาษาพเอชพ นน ไมไดถกออกแบบมาใหรองรบการท างานแบบภาวะพรอมกน(Concurrency) ท าใหการท างานของโปรแกรมประยกตบนเวบท างานไดอยางไมเตมประสทธภาพ ดงนนจงไดมการพฒนาเฟรมเวรค (Framework) ทท าใหภาษาพเอชพ สามารถรองรบการท างานแบบภาวะพรอมกนได เพอเพมประสทธภาพและความเรวในการท างานของโปรแกรมประยกตบนเวบมหลายเฟรมเวรคทถกพฒนาขนแตเฟรมเวรคทไดรบความนยมคอเกยรแมน
เกยรแมนเปนโปรแกรมประยกตโอเพนซอรซ (Open Source) ซงถกพฒนาโดย Brian Aker และ Eric Day เพอท าใหโปรแกรมประยกตบนเวบสามารถกระจายงาน (Task) ใหกบคอมพวเตอรหลายๆเครองชวยกนประมวลผลพรอมกนไดเกยรแมนไดถกน าไปใชอยางแพรหลายในเวบไซตใหญๆเชน LiveJournal, Yahoo! และ Digg เปนตนเกยรแมนท างานโดยสงงานจากไคลเอนต (Client) ไปยงจอบเซรฟเวอร (Job Server) เพอใหกระจายงานตอไปยงเวรคเกอร (Worker) ทงหมดทวางงานอย ใหท างานทไดรบแบบภาวะพรอมกน ดงภาพท 1.1
Client Job Server
Worker
Worker
Worker
ภาพท 1.1 โครงสรางสถาปตยกรรมการท างานของเกยรแมน
2
งานวจย (Haen, Bonaccorsi, Neufeld, 2011) น าเสนอโมดลทพฒนาบนเกยรแมนไปใชกบระบบออนไลน LHCb (Augusto Alves et.al, 2008) ทใชส าหรบประมวลผลการทดลองตางๆ ซงเปนระบบสวนหนงของสถาบน CERN (European Organization for Nuclear Research) ท าใหประสทธภาพการท างานของระบบเพมขนเปนอยางมาก ดงตารางท 1.1
ระบบเดม (Single Nagios Instance Performances) ระยะเวลาตอบสนอง ต าสด สงสด เฉลย Service check 320 วนาท 578 วนาท 328 วนาท Host check 0 วนาท 401 วนาท 318 วนาท ระบบใหม (Central Incinga Instance and Distributed Workers Performances) Service check 0.03 วนาท 57 วนาท 14 วนาท Host check 0 วนาท 35 วนาท 12 วนาท ตารางท 1.1 เปรยบเทยบความเรวในการตอบสนองทเพมขนเมอน าเอาเกยรแมนไปประยกตใชงาน
แตอยางไรกตามการท างานแบบภาวะพรอมกนของโปรแกรมประยกตบนเวบนนมความ
ซบซอนเปนอยางมากในขณะใชงานจรง การน าไปใชงานโดยไมไดท าการตรวจสอบอาจจะกอใหเกดปญหาตามมาภายหลง ดงนนการตรวจสอบความถกตองกอนทจะน าไปใชงานมความจ าเปนอยางมาก ปจจบนยงไมมงานวจยใดน าเสนอการทวนสอบความถกตองของเกยรแมน
ดวยเหตน เอง งานวจยน จงน าเสนอขนตอนวธการทวนสอบเชงรปนย (Formal Verification) ใหกบเกยรแมนส าหรบภาษาพเอชพ ซงเปนวธการตรวจสอบความถกตองดวยวธการพสจนทางคณตศาสตรทมประสทธภาพและครอบคลม ผวจยไดน าซอรซโคด (Source code) ของโปรแกรมประยก ตบนเวบ ( Implementation) และ คณลกษณะของ โปรแกรมประยก ต (Specification) มาแปลงใหอยในรปแบบของ Time Petri net และน ามาทวนสอบ Timed Trace theory ดวยเครองมอ (Pradubsuwun, Yoneda, & Myers, 2005) ตรวจสอบหาคณสมบต safety และ liveness เพอพสจนความถกตองในการท างานแบบภาวะพรอมกนกอนน าไปใชงานจรง
3
1.2 วตถประสงคของงานวจย
1. เพอออกแบบและพฒนาขนตอนวธการแปลงชดค าสงจากเกยรแมนทใชพฒนาโปรแกรมประยกตบนเวบในภาษาพเอชพ ใหอยในรปของ Time Petri net 2. เพอทวนสอบความถกตองของการท างานแบบภาวะพรอมกนของเกยรแมนส าหรบภาษาพเอชพ ดวย Timed Trace theory
1.3 ขอบเขตของงานวจย
1. ชดค าสงทน ามาใชในงานวจยเปนชดค าสงจากเกยรแมนเวอรชน 1.1.2 ส าหรบภาษาพเอชพ ไดแกค าสง doNormal, doBackground addServer, addTask, runTasks และชดค าสงจากภาษาพเอชพ ทท างานแบบเงอนไข, แบบเลอกท า, แบบวนซ า ค าสงก าหนดคาและรบคาจากตวแปร (Variable)
2. การทวนสอบจะท าเฉพาะชดค าสงสวนไคลเอนตเทานน
3. Time Petri net ทใชในงานวจยเปน one-safe Time Petri net
4. การทวนสอบจะใชเครองมอของ (Pradubsuwun, Yoneda, & Myers, 2005)
5. ขนตอนวธทน าเสนอจะทดลองกบโปรแกรมประยกตทใชงานจรง
1.4 ประโยชนทคาดวาจะไดรบ
1. การท างานของโปรแกรมประยกตบนเวบทพฒนาดวยเกยรแมนจะมความถกตองและมความนาเชอถอมากขนในการท างานแบบภาวะพรอมกน
2. ความผดพลาดทอาจจะเกดขนในการพฒนาโปรแกรมประยกตบนเวบดวยเกยรแมนเมอถกน าไปใชงานจรงลดลง
3. ตนทนในการออกแบบและพฒนาโปรแกรมประยกตลดลง
4
1.5 รายละเอยดของวทยานพนธ
วทยานพนธฉบบนประกอบดวย บทท 1 บทน า กลาวถงความเปนมาและความส าคญของงานวจย วตถประสงคของงานวจย ขอบเขตของงานวจย ประโยชนทคาดวาจะไดรบ และรายละเอยดของวทยานพนธ บทท 2 กลาวถงงานวจยและทฤษฎทเกยวของกบงานวจย ไดแก เกยรแมน, Time Petri net และ Timed Trace theory บทท 3 เปนการน าเสนอขนตอนวธการแปลงชดค าสงเกยรแมนส าหรบภาษาพเอชพ ใหอยในรปของ Time Petri net ส าหรบน าไปทวนสอบ บทท 4 น าเสนอผลการด าเนนงานวจย ดวยการทวนสอบกบโปรแกรมประยกตทเปนกรณศกษา และบทท 5 สรปผลการด าเนนงานวจยและขอเสนอแนะ
5
บทท 2 ทฤษฎและงานวจยทเกยวของ
ในบทนจะอธบายถงทฤษฎทเกยวของกบงานวจยและงานวจยทเกยวของ ไดแก เกยรแมนซงถกพฒนาขนเพอท าใหโปรแกรมประยกตบนเวบสามารถกระจายงานใหกบคอมพวเตอรหลายๆเครองชวยกนประมวลผลพรอมกนได Time Petri net ทจะใชส าหรบอธบายพฤตกรรมของเกยรแมนและการใช Timed Trace theory ส าหรบทวนสอบคณลกษณะของโปรแกรมประยกตกบชดค าสงส าหรบพฒนาโปรแกรมประยกตบนเวบ
2.1 ทฤษฎทเกยวของกบงานวจย
ทฤษฎทเกยวของกบงานวจยนมทงหมด 3 ทฤษฎ ไดแก เกยรแมน, Time Petri net และ
การทวนสอบดวย Timed Trace theory
2.1.1เกยรแมน เกยรแมนถกออกแบบมาเพอเพมประสทธภาพการท างานของโปรแกรมประยกต
โดยท าใหผพฒนาสามารถกระจายงานจากไคลเอนตไปยงเวรคเกอรไดโดยงาย การท างานของเกยรแมนประกอบไปดวย 3 สวนคอ ไคลเอนต, จอบเซรฟเวอร และเวรคเกอร ไคลเอนตมหนาทสรางงานเพอทจะสงไปยงจอบเซรฟเวอรซงมหนาทตรวจสอบเวรคเกอรทวางงานอย และสงงานตอไปใหเวรคเกอรเพอท างานจนเสรจ และสดทาย เวรคเกอรจะท าหนาทสงผลลพธหรอสถานะของงานนนๆผานทางจอบเซรฟเวอรกลบไปยงไคลเอนต
เกยรแมนม API ทคอยรองรบการตดตอระหวางไคลเอนตและเวรคเกอร ผานทาง TCP sockets ดงภาพท 2.1 ท าใหโปรแกรมประยกตสามารถตดตอกบจอบเซรฟเวอร ไดโดยงาย ดงนนผพฒนาโปรแกรมประยกตไมจ าเปนจะตองไปยงกบสวนของโพรโทคอลเนทเวรค (Networking Protocol) และการจบคงาน (Mapping Job) ระหวางไคลเอนตกบเวรคเกอรแตอยางใดเกยรแมนยงถกออกแบบมาใหรองรบการท างานไดหลายภาษา เชน ซ (C), เพรล (Pearl), จาวา (Java), มายเอสควแอล (MySQL) และพเอชพ เปนตน
6
ApplicationProvide by Gearman
Job Server
Client API
Worker API
Client Code
Worker Code
ภาพท 2.1 API การท างานของเกยรแมน
งานวจยนใชชดค าสงเกยรแมนส าหรบภาษาพเอชพ เพอใชทวนสอบ ภาษาพเอชพ สามารถน ามาใชงานรวมกนกบชดค าสงเกยรแมนไดโดยงาย ยกตวอยางดงภาพท 2.2 เปนชดค าสงของโปรแกรมประยกตส าหรบเรยงตวอกษรจากหนาไปหลงสวนไคลเอนตซงท างานแบบล าดบ และภาพท 2.3 เปนชดค าสงสวนไคลเอนตส าหรบเรยงตวอกษรจากหนาไปหลงท างานแบบภาวะพรอมกน ผลลพธทไดของโปรแกรมประยกตทงสองคอ tseT olleH dlroW โดยชดค าสงทงสองทกลาวมานน สามารถใชกบชดค าสงสวนเวรคเกอรเดยวกนไดดงภาพท 2.4 อยางไรกตามเนองจากชดค าสงของเวรคเกอรแตละตวจะท างานแบบล าดบเสมอ งานวจยชดนจงจะท าการทวนสอบเฉพาะชดค าสงจากสวนไคลเอนตซงรองรบการท างานแบบภาวะพรอมกนเทานน
ภาพท 2.2 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนไคลเอนต
ภาพท 2.3 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนไคลเอนตทท างานแบบภาวะพรอมกน
1: $client = new GearmanClient(); 2: $client->addServer(); 3: echo "Sending job\n"; 4: $result = $client->doNormal("reverse", "World Hello Test"); 5: echo "Success: $result\n";
1: $client = new GearmanClient(); 2: $client->addServer(); 3: $result1 = $client->addTask('reverse', 'Test', null, '1'); 4: $result2 = $client->addTask('reverse', 'Hello', null, '2'); 5: $result3 = $client->addTask('reverse', 'World', null, '3'); 6: $client->runTasks(); 7: echo "Success: $result1 $result2 $result3 \n";
7
ภาพท 2.4 ตวอยางชดค าสงเกยรแมนส าหรบภาษาพเอชพ สวนเวรคเกอร
2.1.1.1 ชดค าสงเกยรแมน ชดค าสงเกยรแมนส าหรบสวนไคลเอนตนนมประมาณ 40 ค าสง ชดค าสง
ถกออกแบบมาเพอใหสะดวกในการใชงานและรองรบการท างานหลายรปแบบ ซงชดค าสงอาจจะเพมขนหรอลดลงไปในแตละเวอรชน ทงนงานวจยชดนไดเลอกน าเอาเฉพาะค าสงบางสวนทมความสามารถเพยงพอทจะพฒนาโปรแกรมประยกตใหท างานแบบภาวะพรอมกนได ดงตอไปน
(1) ค าสง doNormal เปนค าสงทก าหนดใหท ากจกรรมเพยงกจกรรม
เดยวโดยไมประมวลผลแบบขนาน (Parallel) จากนนรอผลลพธทไดกลบคนมา รปแบบของค าสงแสดงดงภาพท 2.5
ภาพท 2.5 ค าสง doNormal
(2) ค าสง doBackground เปนค าสงทก าหนดใหท ากจกรรมเพยงกจกรรม
เดยวแบบอะซงโครนส (asynchronous) โดยไมประมวลผลแบบขนาน เมอเรยกใชค าสงนแลวระบบจะไมรอผลลพธกลบมาเพอทจะท าค าสงตอไป รปแบบของค าสงแสดงดงภาพท 2.6
ภาพท 2.6 ค าสง doBackground
1: $worker = new GearmanWorker(); 2: $worker->addServer(); 3: $worker->addFunction("reverse", "reverse_fn"); 4: function reverse_fn(GearmanJob $job) { 5: $workload = $job->workload(); 6: $result = strrev($workload); 7: return $result; 8: } 9: while ($worker->work());
1: public string GearmanClient::doNormal ( string $function_name, string $workload [, string $unique] )
1: public string GearmanClient::doBackground ( string $function_name, string $workload [, string $unique] )
8
(3) ค าสง addServer เปนค าสงส าหรบเพมจอบเซรฟเวอรทสามารถรบกจกรรมจากไคลเอนตไปได รปแบบของค าสงแสดงดงภาพท 2.7
ภาพท 2.7 ค าสง addServer
(4) ค าสง addTask เปนค าสงส าหรบเพมกจกรรมทตองการใหประมวลผล
แบบขนาน โดยค าสง addTask 1 ค าสงจะเทากบการประมวลผล 1 งาน หลงจากใชค าสงนแลวเมอเรมใชค าสง runTasks กจกรรมทงหมดจะถกสงไปประมวลผลแบบขนานทนท รปแบบของค าสงแสดงดงภาพท 2.8
ภาพท 2.8 ค าสง addTask
(5) ค าสง runTasks จะน ากจกรรมทงหมดทถกเพมโดยค าสง addTask
สงไปประมวลผลแบบขนาน โดยหลงจากค าสง runTasks ท างาน ระบบจะหยดรอจนกวางานทงหมดทถก addTask จะประมวลผลเสรจ รปแบบของค าสงแสดงดงภาพท 2.9
ภาพท 2.9 ค าสง runTasks
2.1.1.2 ชดค าสงในภาษาพเอชพ ชดค าสงในภาษาพเอชพ ถกสรางขนมาเพอพฒนาโปรแกรมประยกต
ส าหรบใชงานบนเวบไซตโดยเฉพาะ ภาษาพเอชพ มค าสงใหเลอกใชงานเปนจ านวนมากและมการเพมหรอลดในแตละเวอรชนตามความเหมาะสม, ความสะดวกและความปลอดภยในการใชงาน แตละค าสงของพเอชพ นนถกออกแบบมาใหใชงานงาย หลายๆค าสงใชแทนกนได และยงสามารถใชรวมกบภาษาอนๆไดเปนอยางด งานวจยชดนไดเลอกน าเอาเฉพาะค าสงบางสวนโดยเฉพาะค าสงทเกยวกบการควบคมการท างานมาท าการทวนสอบคกบชดค าสงของเกยรแมนดงตอไปน
(1) ค าสง if…else เปนค าสงทเลอกท างานตามเงอนไข โดยถาเงอนไขเปนจรง กจะไปท ากลมค าสงทก าหนด ค าสง else จะใชไดกตอเมอมค าสง if ใชกอนหนาเสมอ โดยเมอใดทเงอนไขจากค าสง if เปนเทจ กลมค าสงทก าหนดใน else จะท างานแทน ดงภาพท 2.10 หากคาของตวแปร a นอยกวา b หนาจอจะแสดงผลลพธ a is NOT greater than b
1: public string GearmanClient::addServer ( string $host = 127.0.0.1 [, int $port = 4730 ]] )
1: public string GearmanClient::addTask ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
1: public string GearmanClient::jobStatus ( string $job_handle )
9
ภาพท 2.10 ตวอยางการใชงานค าสง if…else
(2) ค าสง while เปนค าสงทใชวนซ า โดยจะตรวจสอบเงอนไขกอน ถา
พบวาเงอนไขเปนจรง จงจะท าค าสงทอยภายในลป (Loop) หลงจากนนจงกลบมาตรวจสอบเงอนไขอกครง วนซ าเชนนไปเรอยๆ จนกวาเงอนไขจะเปนเทจ การใชงานค าสงดงภาพท 2.11
ภาพท 2.11 ตวอยางการใชงานค าสง while
(3) ค าสง do-while จะท างานคลายกบค าสง while แตตางกนตรงทจะม
การท าค าสงในลปอยางนอย 1 ครงเสมอ เมอท าค าสงในลปแลวจงตรวจสอบเงอนไขทหลง การใชงานค าสงดงภาพท 2.12
ภาพท 2.12 ตวอยางการใชงานค าสง do-while
(4) ค าสง for จะมการท างานเหมอนกบ while คอตรวจสอบเงอนไขหรอ
การเปรยบเทยบกอน แลวจงท าค าสงภายในลป จะใชในกรณททราบจ านวนครงในการวนซ าทแนนอน การใชงานค าสงดงภาพท 2.13
1: if ( $a > $b ) : 2: echo “a is greater than b”; 3: else : 4: echo “a is NOT greater than b”; 5: endif;
1: $i = 1; 2: while ( $i <= 10 ) : 3: echo $i++; 4: endwhile;
1: $i = 0; 2: do { 3: echo $i;
4: } while ( $i > 10 ) ;
10
ภาพท 2.13 ตวอยางการใชงานค าสง for
(5) ค าสง break เปนค าสงใหหยดและหลดจากลปทท าอยทนท ดงภาพท
2.14 เมอตวแปร var มคาเทากบ stop ลป while จะหยดการท างานทนท
ภาพท 2.14 ตวอยางการใชงานค าสง break
(6) ค าสง continue เปนค าสงทใชขามการท างานบางอยาง เพอกลบไป
เรมตนหรอขามท าตามเงอนไขตอไป การใชงานค าสงดงภาพท 2.15
ภาพท 2.15 ตวอยางการใชงานค าสง continue
(7) ค าสง switch ใชในกรณทมทางเลอกใหท างานหลายทางเลอกโดยใช
เงอนไขรวมกน ซงจะท าการตรวจสอบเงอนไขเพยงครงเดยว ผลจากการตรวจสอบเงอนไขจะถกน าไปพจารณาอกครงวาจะท างานตามทางเลอกใด การใชงานค าสงดงภาพท 2.16
1: for ( $i=1; $i <= 10; $i++ ) : 3: echo $i; 4: endfor;
1: $i = 1; 2: while ( $i <= 10 ) : 3: if ( $i == 5 ) : 4: break; 5: endif; 6: endwhile;
1: $i = 1; 2: while ( $i <= 10 ) : 3: if ( $i == 5 ) : 4: continue; 5: endif; 6: endwhile;
11
ภาพท 2.16 ตวอยางการใชงานค าสง switch
(8) ค าสง echo ใชส าหรบแสดงผลลพธออกทางหนาจอ โดยสามารถ
แสดงผลลพธในรปแบบประโยค ตวอกษร หรอคาจากตวแปรไดตามความตองการ การใชงานค าสงดงภาพท 2.17
ภาพท 2.17 ตวอยางการใชงานค าสง echo
(9) ค าสงทกระท ากบตวแปร ภาษาพเอชพ สามารถสรางตวแปรและ
ก าหนดคาใหโดยงายโดยไมจ าเปนตองประกาศประเภทของตวแปรแตอยางใด รวมถงไมจ าเปนจะตองประกาศคาของตวแปรกอนการใชงานดวย การใชงานดงภาพท 2.18
ภาพท 2.18 ตวอยางการใชงานค าสงทกระท ากบตวแปร
2.1.2 Time Petri net Petri net เปนภาษาของแบบจ าลองทางคณตศาสตรออกแบบมาเพอใชอธบาย
การท างานของระบบการประมวลผลแบบกระจาย (Distributed system) โดย Petri net ประกอบไปดวยเพลส (Places) ทรานซชน (Transition) และเสนเชอม (Arcs) มการน า Petri net มาใชวเคราะหกระบวนการท างานของระบบอยางแพรหลาย เนองจากสามารถรองรบขนตอนการท างาน
1: switch ( $i ) : 2: case “apple”: 3: echo “i is apple”; 4: break; 5: case “cake”: 6: echo “i is cake”; 7: break; 8: endswitch;
1: echo $myOutput;
1: $var = ‘Bob’; 2: $var2 = ‘Joe’; 3: echo “$var, $var2”; // outputs “Bob, Joe”
12
แบบภาวะพรอมกน แบบขดแยง (Conflict) และการท าซ า (Iteration) ได จนน าไปสการพฒนาสวนขยาย (Extended) ของ Petri net เพอความเหมาะสมของแตละวตถประสงค
จากนนในป ค.ศ.1974 Philip M. Merlin และ David J. Farber ไดพฒนา Time Petri net ขน เพอใชทวนสอบความถกตองของการค านวณแบบจ าลองการจดควของโพรโทคอลเนทเวรค ดวยการพฒนาให Petri net สามารถเพมเงอนไขของเวลาใหกบทรานซชนได โดยก าหนดใหท
รานซชน ti มชวงเวลา (Time interval) เปน [ai, bi] เมอทรานซชน ti enable ทเวลา τ แลว ti จะ
ท างานไดในระหวางเวลา [τ + ai, τ + bi] เทานน ไมเชนนนกจะถก disable ท าให Time Petri net สามารถทวนสอบคณลกษณะทเกยวของกบเวลาไดถกตอง
2.1.2.1 องคประกอบของ Time Petri net Time Petri net ประกอบไปดวย N = (P, T, B, F, M0, Time) โดยท (1) P คอ เซตของเพลส ใน Time Petri net จะใชสญลกษณวงกลม และ
ระบชอดงภาพท 2.19 หมายถง เพลสทมชอ P0 P0
ภาพท 2.19 ตวอยางสญลกษณเพลสใน Time Petri net
(2) T คอ เซตของทรานซชน แบงเปนอนพททรานซชนแทนขอมลเขาและ
เอาทพททรานซแทนขอมลออก ใน Time Petri net จะใชสญลกษณสเหลยมและระบชอ ดงภาพท 2.20 หมายถง ทรานซชนทมชอ T0
T0
ภาพท 2.20 ตวอยางสญลกษณทรานซชนใน Time Petri net
(3) B คอ ฟงกชนการเกดยอนหลง T x P -> N ใชระบเซตของเสนเชอม
จากอนพทเพลสไปยงทรานซชน ใน Time Petri net แทนดวยสญลกษณลกศรชเขาหาทรานซชน ดงภาพท 2.21
P0
T0
ภาพท 2.21 ตวอยางสญลกษณฟงกชนการเกดยอนหลงใน Time Petri net
13
(4) F คอ ฟงกชนการเกดไปขางหนา P x T -> N ใชระบเซตของเสนเชอม
จากทรานซชนไปยงเอาทพทเพลส ใน Time Petri net แทนดวยสญลกษณลกศรชออกจากทรานซชน ดงภาพท 2.22
P0
T0
ภาพท 2.22 ตวอยางสญลกษณฟงกชนการเกดไปขางหนาใน Time Petri net
(5) M0 คอ เซตของโทเคน (token) เรมตน ของ Time Petri net แทน
ดวยสญลกษณจดทบสด าในเพลส ดงภาพท 2.23 P0
ภาพท 2.23 ตวอยางสญลกษณเซตของโทเคนใน Time Petri net
(6) Time คอ ฟงกชนหนวงเวลา ใชส าหรบก าหนดชวงเวลาใหทรานซชน
Time : T - > Q+ x Q+ υ {∞}, โดยท Q+ หมายถงจ านวนเตมบวก T = [ai, bi] ; 0 ≤ ai(t) ≤ bi (t) โดย ai และ bi หมายถงเวลาทเรวทสด
หรอขอบเขตลาง (Lower bound) และเวลาทชาทสดหรอขอบเขตบน (Upper bound) ททรานซชนจะสามารถเกดขนได ตามล าดบ
2.1.2.2 การท างานของทรานซชนและการเปลยนต าแหนงของโทเคน Time Petri net จะเปลยนต าแหนงของโทเคน (Firing) จากเพลสไปสอก
เพลสหนง ไดโดยก าหนดทศทางของเสนเชอมระหวางอนพทเพลสไปยงทรานซชนและจากทรานซชนไปยงเอาทพทเพลส โดยมเงอนไขดงน
(1) ทรานซชนจะ enable กตอเมอทกๆ อนพทเพลส ของทรานซชน T มโทเคน
(2) ทรานซชนท enable จะท าการเปลยนต าแหนงหรอไมกได (3) การเปลยนต าแหนงโทเคนของทรานซชนท enable โทเคนทอยใน
อนพทเพลสของทรานซชน จะเปลยนต าแหนงไปยงเอาทพทเพลสของทรานซชน
14
(4) การเปลยนต าแหนง ตองเกดขนในชวงเวลาทถกก าหนดดวยฟงกชนหนวงเวลา ซงจะตองไมเปลยนต าแหนงกอนเวลาทถกระบเปนขอบเขตบนและไมเปลยนต าแหนงหลงจากเวลาทถกระบเปนขอบเขตลาง มฉะนนทรานซชนนนจะถก disable
จากภาพท 2.24 จะเหนวา เพลส P0 และ P1 มโทเคน ท าใหทรานซชน T0 enable ซงพรอมท าการ เปลยนต าแหนง เปลยนต าแหนงไปยง P0 ในขอบเขตเวลา เรวทสด 1 หนวยเวลา และชาทสดไมเกน 3 หนวยเวลา เมอเกดการ เปลยนต าแหนง โทเคนในเพลส P0 และ P1 กจะเปลยนต าแหนงไปทเพลส P2 ตามภาพท 2.25 ทรานซชน T0 จะ disable และระบบกจะหยดลง
P0
P1
T0
P2[1,3]
ภาพท 2.24 โทเคนอยทเพลส P0 และ P1 กอนการเปลยนต าแหนง
P0
P1
T0
P2[1,3]
ภาพท 2.25 โทเคนเปลยนต าแหนงมาท P2 หลงจากทรานซชน T0 enable
2.1.3 ขนตอนวธการทวนสอบดวย Timed Trace theory ในหวขอนจะอธบายทฤษฎทงหมดทใชการทวนสอบคณลกษณะของโปรแกรม
ประยกตกบโปรแกรมประยกต ไดแก Timed Trace theory และขนตอนวธการทวนสอบ
15 2.1.3.1 Timed Trace theory
Timed Trace theory จะประกอบไปดวย 3 สวนทส าคญคอ module, semimodule และ timed trace structure
module ทใชแทนโปรแกรมประยกต ไดแก M = (I, O, N) (1) I คอ เซตของอนพททรานซชน (2) O คอ เซตของเอาทพททรานซชน โดยท I ∩ O = ∅ (3) N คอ พฤตกรรมการท างานของโปรแกรมประยกต Timed Trace structure ข อ ง module M เ ข ย น แ ทน ด ว ย T(M)
ประกอบดวย (I, O, S, F) โดย S คอ เซตของ success trace และ F คอ เซตของ failure trace นยามของ T(M) แสดงไดตามเงอนไขดงน
For w ∈ I ∪ O, and τ ∈ R+ 1. S = trace(N), 2. for y ∈ S and y(w, τ) ∉ S,
a. if τ ≤ TL (y, N), then i. if w ∈ I , then y(w, τ) ∈ F ii. else y(w, τ) ∉ P b. else if limit (y, N) ⊆ I, then y(w, τ) ∈ F c. else y(w, τ) ∉ P
3. For y ∈ F , y(w, τ) ∈ F 4. For y ∉ P, y(w, τ) ∉ P
จากนยามขางตน trace y(w, τ) จะเปน failure trace กตอเมอ y ∈ F, หรอ y ∈ S, τ ≤ TL (y, N) , w ∈ I, หรอ y ∈ S, τ > TL (y, N) , limit (y, N) ⊆ I
โดยท TL (y, N) หมายถง เวลาลาสดททรานซชนทกตวท enable จะท าการ
เปลยนต าแหนง limit (y, N) หมายถง เซตของอนพทและเอาทพท ทถกก าหนดดวย TL
(y, N) semimodule ของ module M หมายถง mirror ของ module M ซง
ไดแก module MR = (O, I, N) และมเงอนไข time trace structure แตกตางกนกบ module M
16
เงอนไข y ∈ F หมายถง ทรานซชนทเกดขนตอจาก failure trace กจะเปน failure trace ดวย
เงอนไข y ∈ S, τ ≤ TL (y, N) , w ∈ I หมายถง trace จะเปน failure trace กตอเมอ trace นน เกดขนกอน TL (y, N) โดยท w ∈ I
เงอนไข y ∈ S , τ > TL (y, N) ⊆ I หมายถง หาก trace นนเกดขนหลงจาก TL (y, N) และ เซตของทรานซชนทใชแทนขอมลเขาและออก ทถกก าหนดโดย TL (y, N) เปนอนพทเซตของทรานซชนทใชแทนขอมลเขาและออกแลว trace จะเปน failure trace ดวย
ในการตรวจสอบความสอดคลองกน (Conformation relation) ระหวาง module คณลกษณะของโปรแกรมประยกตกบ module โปรแกรมประยกต จะตองพจารณา Time Trace structure ของแตละ module
ก าหนดให T(M1) แทนดวย T1 = (I1, O1, S1, F1) และ T(M2) แทนดวย T2 = (I1, O1, S1, F1) , intersection ของ T1 และ T2 เขยนแทนดวย T1 ∩ T2 นยามไดดงน
(I1 ∩ I2, O1 ∩ O2, S1 ∩ S2, (P1 C F2) ∩ (F1 ∩ P2))
ถา (P1 ∩ F2) ∩ (F1 ∩ P2) = ∅ แสดงวา module M1 มความสอดคลองกนกบ module M2 ดงแสดงใน Theorem 1
Theorem 1 : {M1,…, Mk-1, MK1,…, Mkm, Mk+1,…, M∩} conforms to
Ms, if {Mk1,…, Mkm} conforms to Mk and {M1,…, Mk-1, MK, Mk+1,…, M∩} conforms to Ms
เมอ {M1,…, Mk-1, MK1,…, Mkm, Mk+1,…, M∩} คอ module โปรแกรมประยกต และ Ms คอ module คณลกษณะของโปรแกรมประยกต
การทวนสอบความสอดคลองกนระหวาง module M1 กบ module M2 จะท าไดโดยการสราง mirror ของ module M2 เพอเปนตวแทนเหตการณทเปนไปไดทงหมด ดงนนการสราง mirror ของ module M2 คอการก าหนดให I2 เปน O2 และ O2 เปน I2 และใชนยาม Timed Trace structure ของ semimodule ตามเงอนไขดงน
For w ∈ I ∪ O, and τ R+ 1. S = trace(N) 2. For y ∈ S and y(w, τ) ∉ S,
a. If τ ≤ TL (y, N), then i. If w ∈ I , then y(w, τ) ∈ F ii. else y(w, τ) ∉ P
3. For y ∈ F, y(w, τ) ∈ F 4. For y ∉ P, y(w, τ) ∉ P
17
การทวนสอบ module M1 ทเปนตวแทนของโปรแกรมประยกต และ module M2 ทเปนตวแทนคณลกษณะของโปรแกรมประยกต จาก Theorem 1 การทวนสอบจะมความสมพนธแบบ conformation กตอเมอ (P1 ∩ F2) ∪ (F1 ∩ P2) = ∅ ซงหมายความวาไมม Safety failure หร อ Timing failure เ ก ดข น โ ดยจะอ า ง อ ง ข น ตอนว ธ ก า ร ทวนสอ บ จ าก (Pradubsuwun, Yoneda, & Myers, 2005)
2.2 งานวจยทเกยวของ
เกยรแมนสามารถใชพฒนาโปรแกรมประยกตบนเวบใหท างานแบบภาวะพรอมกนได
อยางมประสทธภาพ ปจจบนยงไมมงานวจยใดน าเกยรแมนมาตรวจสอบความถกตองดวยวธทวนสอบ งานวจยนไดน า Time Petri net มาใชในการอธบายพฤตกรรมการท างานของเกยรแมนเนองจาก Time Petri net นนสามารถอธบายการท างานของโปรแกรมประยกตทท างานแบบภาวะพรอมกนไดอยางเหมาะสมและสามารถน าไปใชทวนสอบดวย Timed Trace theory ไดอยางถกตอง ดงจะเหนไดจากงานวจยทเกยวของตอไปน
งานวจย (Yoneda, Ryu, 1999) น าเสนอ Partial Order Reduction มาเปนสวนขยายการทวนสอบของ trace theoretic ท าใหสามารถจดการกบวงจรของ timed และคณลกษณะของ timed ไดอยางถกตองเหมาะสมยงขน
ง า น ว จ ย (Pradubsuwun, Yoneda, & Myers, 2005) น า เ ส น อ Partial Order Reduction ส าหรบการทวนสอบดวย Timed Trace theoretic โดยทดลองทวนสอบกบวงจร timed เพอตรวจหา liveness failures ผลการทดลองเมอน าไปใชทวนสอบกบวงจรของ STARI แสดงใหเหนวาวธทน าเสนอมประสทธภาพและท าใหความเรวในการทวนสอบเพมขนเปนอยางมาก
งานวจย (Kongburan, Pradubsuwun, 2014) น าเสนอการแปลงกจกรรมพนฐานหรอกจกรรมโครงสรางทเขยนอยในรปของ WS-BPEL ใหเปน Time Petri net เพอทวนสอบหาคณสมบต safety และ liveness ดวย Timed Trace theory และน างานวจย (Pradubsuwun, Kongburan, 2014) มาลดปญหา State Explosion โดยใชทฤษฎ Partial Order Reduction ส าหรบ Timed Trace theory งานวจยทงสองท าใหการประกอบรวมกนของเวบเซอรวสทเกยวของกบเวลามความถกตองและความนาเชอถอมากขน
จากงานวจยทงหมดทไดน าเสนอขางตน แสดงใหเหนวาทฤษฎ Time Petri net และ Timed Trace theory เหมาะจะน ามาใชอธบายพฤตกรรมการท างานและทวนสอบเกยรแมนทรองรบการท างานแบบภาวะพรอมกนไดอยางถกตอง
18
บทท 3 วธการวจย
ตามทไดกลาวไปในบทท 1 และ 2 งานวจยชดนจะน าเอาชดค าสงจากเกยรแมนส าหรบ
ภาษาพเอชพ มาท าการทวนสอบเชงรปนยโดยใชเครองมอทวนสอบ ดงนนในบทนจะอธบายขนตอนการน าเอา Time Petri net มาใชอธบายลกษณะการท างานในชดค าสงเกยรแมนและชดค าสงภาษาพเอชพ รวมถงอธบายขนตอนวธการแปลงชดค าสงใหอยในรปแบบของ Time Petri net จากนนน าไปทวนสอบตามทฤษฎ Timed Trace theory ดวยเครองมอทวนสอบหาคณสมบตทตองการ สรปเปนภาพรวมของงานวจยไดดงภาพท 3.1
Gearman + PHPfile.php
Transform implementations
into time Petri nets
Implementations(time Petri net)
RequirementSpecification
Specification (time Petri net)
Verify
Transform specification into
time Petri nets
YESNO
With Counter example
ภาพท 3.1 ภาพรวมขนตอนของงานวจย
19
3.1 การอธบายความหมายองคประกอบของเกยรแมนดวย Time Petri net เพลสใน Time Petri net จะถกแทนดวยสถานะการท างานของเกยรแมนในขณะใด
ขณะหนง แยกออกเปนอนพทเพลส แทนเงอนไขเรมตนส าหรบเหตการณ ขอมลเขาของกจกรรม หรอตวแปรทรบมา และเอาทพทเพลส แทนเงอนไขทไดจากเหตการณ หรอขอมลออกของกจกรรม หรอตวแปรทสงไป
การท างานของเกยรแมนจะถกอธบายดวยทรานซชนใน Time Petri net โดยทรานซชนหนงๆ อาจจะมหรอไมมการก าหนดเงอนไขเกยวกบเวลาทใชส าหรบการท างานกจกรรม เชน ทรานซชน t1 [1,3] หมายถง กจกรรมของเกยรแมนทถกอธบายดวยทรานซชน t1 ของ Time Petri net สามารถด าเนนการไดตงแต 1 ถง 3 หนวยเวลา ถาหากไมก าหนดขอบเขตของเวลาทรานซชน ทรานซชนดงกลาวจะมขอบเขตหนวยเวลาเปน [0, ∞] หมายถงกจกรรมของเกยรแมนนนสามารถด าเนนการไดตงแต 0 ถง ∞ หนวยเวลา
ขอความและตวแปรทใชในการท างานของเกยรแมนเพอก าหนดการน าเขาและสงออกของขอมลกบสวนประกอบจะถกอธบายดวยโทเคนใน Time Petri net ซงหมายถงขอมลน าเขาทถกสงจากอนพทเพลสมายงทรานซชน และสงออกไปสเอาทพทเพลส การควบคมทศทางการท างานของกจกรรมในเกยรแมนจะถกอธบายดวยเสนเชอมระหวางเพลสกบทรานซชนและทรานซชนกบเพลสใน Time Petri net โดยแบงเปนเสนเชอมอนพทมทศทางจากอนพทเพลสเขาสทรานซชน และเสนเชอมเอาทพทมทศทางจากทรานซชนไปสเอาทพทเพลส
ขนตอนวธการแปลงกจกรรมตางๆของชดค าสงเกยรแมนใหอยในรป Time Petri net สามารถแสดงไดดง Algorithm 1 ดงภาพท 3.2
Algorithm 1 Transform Gearman base on PHP into Time Petri net Input : Gearman and PHP client source code Output : Time Petri net N(P, T, B, F, M0, Time) begin 1: Structural ← if-else ∪ while ∪ do-while ∪ for ∪ switch 2: task = 0; 3: Read input from php file line by line in php tag 4: for each command[i] do 5: if command[i] = Structural then 6: call transform_time_Petri_net(command[i], start, end); 7: Check inside Structural for commands;
20
8: endif 9: if command[i] = addTask then 10: task + 1; 11: else if command[i] = runTask then 12: call transform_time_Petri_net(command[i], i, task); 13: task = 0; 14: else 15: call transform_time_Petri_net(command[i], i, i); 16: endfor 17: transform_time_Petri_net(command, start, end) 18: { 19: Initial state by M0. 20: Map each command to T. 21: Map each system state to P, punctuate with T. 22: Message or variable is represented by token. 23: The control flow between ti, tj are represented B or F arc. 24: Temporal constraints of ti are managed by [ai, bi] 25: } end
ภาพท 3.2 ขนตอนวธการแปลงเกยรแมนใหอยในรป Time Petri net 3.2 การแปลงชดค าสงเกยรแมนใหอยในรปแบบ Time Petri net
หวขอนจะอธบายถงการน าขนตอนวธทน าเสนอในหวขอ 3.1 มาใชเพอท าการแปลงชดค าสงกจกรรมของเกยรแมนใหอยในรปของ Time Petri net ซงประกอบดวย ค าสง doNormal, addServer, addTask, runTasks
3.2.1 ค าสง doNormal ค าสง doNormal เปนค าสงทก าหนดใหท ากจกรรมเพยงกจกรรมเดยวไม
ประมวลผลแบบขนาน (Parallel) จากนนรอผลลพธทไดกลบคนมา อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.3 โดยเรมตนสถานะทเพลส P0 จากนนท ากจกรรมซงแทนดวยทรานซชน T0 และสนสดสถานะทเพลส P1
P0 P1
doNormal
T0
ภาพท 3.3 ค าสง doNormal ในรปแบบ Time Petri net
21
3.2.2 ค าสง doBackground ค าสง doBackground เปนค าสงทก าหนดใหท ากจกรรมเพยงกจกรรมเดยวแบบอะ
ซงโครนส โดยไมรอผลลพธกลบมา การใชงานของค าสง doBackground จะใชควบคกบค าสงวนรอบเสมอเพอตรวจสอบสถานะการท างานของกจกรรมทสงไปดงนนจะอธบายการท างานของค าสง doBackground ในรปแบบของ Time Petri net ไดดงภาพท 3.4
P0
doBackground
T0
. . . .
ภาพท 3.4 ค าสง doBackground ในรปแบบ Time Petri net
3.2.3 ค าสง addServer ค าสง addServer เปนค าสงส าหรบเพมจอบเซรฟเวอรทสามารถรบกจกรรมจาก
ไคลเอนตไปได อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.5 โดยเรมตนสถานะทเพลส P0 จากนนท ากจกรรมซงแทนดวยทรานซชน T0 และสนสดสถานะทเพลส P1
P0 P1
addServer
T0
ภาพท 3.5 ค าสง addServer ในรปแบบ Time Petri net
3.2.4 ค าสง addTask ค าสง addTask เปนค าสงส าหรบเพมกจกรรมทตองการใหประมวลผลแบบขนาน
โดยค าสง addTask 1 ค าสงจะเทากบการประมวลผล 1 งาน หลงจากใชค าสงนแลวเมอเรมใชค าสง runTasks กจกรรมทงหมดจะถกสงไปประมวลผลแบบขนานทนท อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.6 โดยเรมตนสถานะทเพลส P0 จากนนแยกเพลสออกจากทรานซชนท T0 ตามจ านวนค าสง addTask ทมซงแทนดวยเพลส P1 และ P2 จากนนรอรบค าสง runTask เพอท ากจกรรมตอไป
22
P0
P1
PN
. . . .
addTask
T0
ภาพท 3.6 ค าสง addTask ในรปแบบ Time Petri net
3.2.5 ค าสง runTasks ค า สง runTasks จะน ากจกรรมทงหมดทถกเพ มโดยค า สง addTask สง ไป
ประมวลผลแบบขนาน โดยหลงจากค าสง runTasks ท างาน ระบบจะหยดรอจนกวางานทงหมดทถก addTask จะประมวลผลเสรจ อธบายการท างานของกจกรรมเปน Time Petri net ไดโดยดงภาพท 3.7 เรมตนโดยรบสถานะเพลสมาจากค าสง addTask ตามจ านวนเพลสทมจากนนไปท ากจกรรมททรานซชน T0 และ T1 เปลยนสถานะเปนเพลส P0 และ P1 จากนนมารวมกนททรานซชน T2 สดทายจบการท างานทเพลส P2
Input P0
Input N PN
runTask
PN+1
. . . .
activity
T0
activity N
TN
join
TN+1
ภาพท 3.7 ค าสง runTasks ในรปแบบ Time Petri net
เมอมการเรยกใชค าสง runTask เพอประมวลผลแบบขนานมากกวา 1 ค าสง
จ านวนงานทจะถกสงไปประมวลผลโดยค าสง runTask จะขนอยกบจ านวนค าสง addTask ทถกเรยกในบรรทดกอนหนา ดงตวอยางชดค าสงในภาพท 3.8 ค าสง runTask ในบรรทดทจะประมวลผลแบบขนานทงหมด 3 งานตามจ านวนค าสง addTask จากบรรทดท 1 ถง 3 และค าสง runTask บรรทดท 8 จะประมวลผลแบบขนานทงหมด 2 งานตามค าสง addTask ในบรรทดท 6 และ 7 หลงจากแปลงใหอยในรปแบบ Time Petri net แลวจะไดผลลพธดงภาพท 3.9
23
ภาพท 3.8 ตวอยางชดค าสงทมการเรยกใชค าสง runTask มากกวา 1 ค าสง
addTask
function1 function2 function3
runTask
echo
addTask
function4 function5
runTask
ภาพท 3.9 ผลลพธในรปแบบ Time Petri net ของการแปลงชดค าสงในภาพท 3.8
3.3 การแปลงชดค าสงพเอชพ ใหอยในรป Time Petri net
หวขอนจะอธบายถงการน าขนตอนวธทน าเสนอในหวขอ 3.1 มาใชเพอท าการแปลงชดค าสงกจกรรมพนฐานของพเอชพ ใหอยในรปของ Time Petri net ซงประกอบดวย ค าสงกจกรรม if…else, while, do…while, for, break, continue, switch, echo และ ค าสงทกระท ากบตวแปร
1: $gmclient -> addTask ("function1", message); 2: $gmclient -> addTask ("function2", message); 3: $gmclient -> addTask ("function3", message); 4: $gmclient -> runTasks (); 5: $echo “Second task”; 6: $gmclient -> addTask ("function4", message); 7: $gmclient -> addTask ("function5", message); 8: $gmclient -> runTasks ();
24
3.3.1 ค าสง if…else ค าสง if…else เปนค าสงทเลอกท างานตามเงอนไข โดยถาเงอนไขเปนจรง กจะไป
ท ากลมค าสงทก าหนด อธบายการท างานของกจกรรมเปน Time Petri net ไดโดยเรมตนกจกรรมจากเพลส P0 แลวแยกทรานซชนออกไปเปนสองกจกรรมดงภาพท 3.10 ถาเงอนไขทจะท าใหเพลส P0 เปลยนทรานซชนไปยงเพลส P1 เปนจรงแลว ทรานซชน T0 และ T1 จะ enable สวนทรานซชน T2 และ T3 จะ disable จากนนจงท ากจกรรม T0 และ T1 ไปตามล าดบจนสนสดการท างานทเพลส P3
P0
P1
P2
P3
If...elsecondition
T0
activity 2
activity 3 activity 4
true
false
activity 1
T1
T2 T3
ภาพท 3.10 ค าสง if…else ในรปแบบ Time Petri net
3.3.2 ค าสง while ค าสง while เปนค าสงทใชวนซ า โดยจะตรวจสอบเงอนไขกอนท ากจกรรม ถา
พบวาเงอนไขเปนจรงจะท าค าสงทอยภายในลป จากนนจงวนกลบมาตรวจสอบเงอนไขอกครง วนซ าเชนนไปเรอยๆ จนกวาเงอนไขจะเปนเทจ อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.11 โดยเพลส P0 จะคอยตรวจสอบเงอนไขของแตละรอบหากเงอนไขเปนจรง จะไปท ากจกรรมททรานซชน T0 ท าใหเพลส P0 เปลยนสถานะไปเปน P1 วนลปตอไปจนกระทงเงอนไขทเพลส P0 เปนเทจจงจะจบลปททรานซชน T2 ท าใหสถานะของเพลสเปลยนเปน P2 จบลป while
P0 P1
while
P2
true
falsecontinue
end
activity
T0 T1
T2
ภาพท 3.11 ค าสง while ในรปแบบ Time Petri net
25
3.3.3 ค าสง do…while ค าสง do…while จะท างานคลายกบค าสง while แตตางกนตรงทจะมการท า
ค าสงในลปอยางนอย 1 ครงเสมอ เมอท าค าสงในลปแลวจงตรวจสอบเงอนไขทหลง อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.12 โดยจะท ากจกรรมททรานซชน T0 กอนแลวจงตรวจสอบเงอนไขทเพลส P1 จากนนจงวนลปท ากจกรรมเชนเดยวกบค าสง while
P0 P1
do while
true
P2
P3
false
end
Check condition
activity
T0
T3
continue
T1
ภาพท 3.12 ค าสง do-while ในรปแบบ Time Petri net
3.3.4 ค าสง for ค าสง for จะมการท างานเหมอนกบ while คอตรวจสอบเงอนไขหรอการ
เปรยบเทยบกอน แลวจงท าค าสงภายในลป จะใชในกรณททราบจ านวนครงในการวนซ าทแนนอน อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.13
P0 P1
for condition
P2
true
false
continue
end for loop
activity
T0 T1
T2
ภาพท 3.13 ค าสง for ในรปแบบ Time Petri net
26
3.3.5 ค าสง break ค าสง break เปนค าสงใหหยดกจกรรมและหลดจากลปทท าอยทนท อธบายการ
ท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.14 โดยหลงจากเกดทรานซชนท T0 แลว จะเปลยนสถานะใหเพลส P1 ไปอยนอกลปปจจบน
exit loop
P0 P1
break
T0
ภาพท 3.14 ค าสง break ในรปแบบ Time Petri net
เมอมการเรยกใชค าสง break ภายในโครงสรางของค าสง if…else ซอนใน
โครงสรางลปของค าสง while หากเงอนไขทจะท าใหเกดกจกรรมของค าสง break เปนจรง จะท าใหกจกรรมหยดลงและหลดจากลปทท าอยทนทดงตวอยางชดค าสงในภาพท 3.15 หลงจากแปลงใหอยในรปแบบ Time Petri net แลวจะไดผลลพธดงภาพท 3.16
ภาพท 3.15 ตวอยางการท างานของค าสง break ภายเงอนไข if…else ทซอนในลป while
1: while(condition) 2: { 3: activity1; 4: if (condition) 5: { 6: activity2; 7: break; 8: } 9: }
27
while(condition)
activity1
true false
end
If(condition)
activity2
true false
break
ภาพท 3.16 ผลลพธในรปแบบ Time Petri net ของการแปลงชดค าสงในภาพท 3.15
3.3.6 ค าสง continue ค าสง continue เปนค าสงทใชขามการท างานบางอยาง เพอกลบไปเรมตนหรอ
ขามท าตามเงอนไขตอไป อธบายการท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.17 โดยหลงจากเกดทรานซชนท T0 แลว จะตองกลบไปเรมตนเชคเงอนไขลปทเพลส P1 เสมอ
P0 P1
continue
T0
ภาพท 3.17 ค าสง continue ในรปแบบ Time Petri net
3.3.7 ค าสง switch ค าสง switch ใชในกรณทมทางเลอกใหท างานหลายทางเลอกโดยใชเงอนไข
รวมกน ซงจะท าการตรวจสอบเงอนไขเพยงครงเดยว ผลจากการตรวจสอบเงอนไขจะถกน าไปพจารณาอกครงวาจะท างานตามทางเลอกใด อธบายการท างานในรปแบบ Time Petri net ไดโดย
28
ก าหนดสถานะเรมตนจากเพลส P0 แลวแยกทรานซชนออกไปตามจ านวนกจกรรมทใหเลอกท า ซงเมอเลอกกจกรรมไปแลว กจกรรมทเหลอจะไมไดรบการเลอกใหท าอก จากภาพท 3.18 ถาเงอนไขทจะท าใหเพลส P0 เปลยนทรานซชนไปยงเพลส P1 เปนจรง ทรานซชน T0 และ T1 จะ enable สวนทรานซชนทเหลอจะ disable จากนนจงท ากจกรรม T0 และ T1 ไปตามล าดบจนสนสดการท างานทเพลส P3
P0
P1
P2
P3
switch
T0
activity 2
activity 3 activity 4
condition 1
condition n
activity 1
T1
T2 T3
ภาพท 3.18 ค าสง switch ในรปแบบ Time Petri net
3.3.8 ค าสง echo ค าสง echo ใชส าหรบแสดงผลลพธออกทางหนาจอ อธบายการท างานของ
กจกรรมเปน Time Petri net ไดดงภาพท 3.19 P0 P1
echo
T0
ภาพท 3.19 ค าสง echo ในรปแบบ Time Petri net
3.3.9 ค าสงทกระท ากบตวแปร ค าสงทกระท ากบตวแปร เชน รบคาเขาและสงคาออกจากตวแปร อธบายการ
ท างานของกจกรรมเปน Time Petri net ไดดงภาพท 3.20 P0 P1
set or get variable value
T0
ภาพท 3.20 ค าสงทกระท ากบตวแปรในรปแบบ Time Petri net
29
3.4 วธระบเงอนไขเกยวกบเวลาใหกบกจกรรมในชดค าสงเกยรแมน
เงอนไขเกยวกบเวลาในโปรแกรมประยกตทพฒนาดวยภาษาพเอชพ มอยหลายรปแบบ อาทเชน ระยะเวลาของชวงเวลาสอสาร (Sessions), ระยะเวลาของคกก (Cookies), ระยะเวลาการเชอมตอฐานขอมล หรอระยะเวลาทผพฒนาโปรแกรมประยกตก าหนดขนเอง งานวจยนการก าหนดเงอนไขเกยวกบเวลาใหกบกจกรรมในชดค าสงเกยรแมนส าหรบภาษาพเอชพ นน ท าไดโดยผพฒนาหรอผออกแบบโปรแกรมประยกตทมประสบการณ ซงรปแบบเงอนไขของเวลาจะถกก าหนดใหอยในระหวางขอบเขตบน (Lower bound limit) และขอบเขตลาง (Upper bound limit) แทนชวงเวลาทชาทสดและเรวทสดทกจกรรมจะไดรบการประมวลผล โดยงานวจยนจะใชวธการตงคาเวลาดวยวธการแบบ manual คอระบคาเวลาลงไปทโมเดลและไฟล .ppp โดยตรง 3.5 การเตรยมขอมลส าหรบการทวนสอบ
ในการทวนสอบโดยใชเครองมอทวนสอบนน จ าเปนตองจดเตรยมขอมล 2 สวน ไดแก
คณลกษณะของโปรแกรมประยกตและชดค าสงของโปรแกรมประยกต โดย (1) Time Petri net ทใชแทนคณลกษณะของโปรแกรมประยกตจะแปลงมาจากความ
ตองการของโปรแกรมประยกต (2) Time Petri net ในสวนของชดค าสงจากโปรแกรมประยกตจะพจารณาจากซอร
ซโคดของโปรแกรมประยกตทถกพฒนาดวยเกยรแมนส าหรบภาษาพเอชพ จากนนจงน า Time Petri net ทงสองสวนมาเขยนใหอยในรปแบบของไฟล .ppp ไฟล
เดยวกนเพอใชเปนขอมลอนพทส าหรบเครองมอทใชทวนสอบตอไป ในหวขอถดไปผวจยจะอธบายขนตอนการเตรยมขอมลทวนสอบและแสดงตวอยาง โดย
น าเอาชดค าสงของโปรแกรมประยกตทท าหนาทเรยงตวอกษรจากหนาไปหลงครงละ 2 อนพทในเวลาเ ด ย ว ก น จ า ก ( PHP:GearmanClient::addTask - Manual. (n.d.), Retrieved from http://php.net/manual/en/gearmanclient.addtask.php) ซงพฒนาโดยชดค าสงเกยรแมนบนภาษาพเอชพ น ามาใชเปนอนพทส าหรบใชทวนสอบ ดงแสดงในภาพท 3.21
30
ภาพท 3.21 ตวอยางชดค าสงของโปรแกรมประยกตทท าหนาทเรยงตวอกษรจากหนาไปหลง
3.5.1 ตวอยางคณลกษณะของโปรแกรมประยกตในรปแบบ Time Petri net คณลกษณะของโปรแกรมประยกตในตวอยางนถกสรางขนจากรปแบบการท างานตาม
ความตองการทออกแบบไวของโปรแกรมประยกต คอท าการเรยงตวอกษรจากหนาไปหลงและแสดงผลลพทธออกไป โดยคณลกษณะนมการก าหนดคณสมบตเงอนไขเกยวกบเวลาลงไปททรานซชน T8 ในระยะเวลา 5 ถง 10 หนวยเวลา เพอใชในการทวนสอบความสอดคลองกนระหวางคณลกษณะของโปรแกรมประยกตกบชดค าสงของโปรแกรมประยกต ผลลพธของคณลกษณะทไดในรปแบบแสดงใหเหนในรปแบบของ Time Petri net ดงภาพท 3.22
T0
P1
P0
T8 TFP2
Reverse string
echo result[5,10]
ภาพท 3.22 ตวอยางคณลกษณะของโปรแกรมประยกตในรปแบบ Time Petri net
1: <?php 2: # create our gearman client 3: $gmclient= new GearmanClient(); 4: # add the default job server 5: $gmclient->addServer(); 6: # set a function to be called when the work is complete 7: $gmclient->setCompleteCallback("complete"); 8: # add a task to perform the "reverse" function on the string "Hello World!" 9: $gmclient->addTask("reverse", "Hello World!", null, "1"); 10: # add another task to perform the "reverse" function on the string "!dlroW olleH" 11: $gmclient->addTask("reverse", "!dlroW olleH", null, "2"); 12: # run the tasks 13: $gmclient->runTasks(); 14: function complete($task) 15: { 16: echo "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n"; 17: } 18: ?>
31
3.5.2 ตวอยางชดค าสงของโปรแกรมประยกตในรปแบบ Time Petri net ตวอยางชดค าสงของโปรแกรมประยกตถกแปลงจากซอรซโคดในภาพท 3.21 ให
อยในรปแบบ Time Petri net แสดงใหเหนดงภาพท 3.23 ในแตละเพลสและทรานซชนจะถกแปลงตาม Algorithm 1 โดยมรปแบบการท างานแบบภาวะพรอมกนในชวงทรานซชนท T4 จนถง T7 และชดค าสงไดถกก าหนดคณสมบตเงอนไขเกยวกบเวลาลงไปททรานซชน T8 ในระยะเวลา 5 ถง 10 หนวยเวลาเชนเดยวกบคณลกษณะในภาพท 3.22 เพอใชในการตรวจสอบความถกตองโดยใชเครองมอทวนสอบตอไป
T0
P1
T1
P2
P0
T4
P7P5
T5 T6
P8P6
T7
P9
T8 P10 TF
Variable action
Add server
addTask
Revert string
runTask
echo result[5,10]
T2 Call function
P4
T3 addTask
P3
ภาพท 3.23 ตวอยางชดค าสงโปรแกรมประยกตในรปแบบ Time Petri net
32
ภาพท 3.24 ตวอยางอนพทส าหรบใชกบเครองมอทวนสอบในรปแบบไฟล .ppp
3.5.3 อธบายรปแบบค าสงไฟลในไฟล .ppp ทใชกบเครองมอทวนสอบ
หลงจากท าการแปลงคณลกษณะและชดค าสงทตองการทวนสอบใหอยในรปแบบ Time Petri net แลว จะไดผลลพธเปนอนพทส าหรบเครองมอทวนสอบดงภาพท 3.24 อธบายรปแบบค าสงในแตละบรรทดไดดงน
บรรทดท 1 ค าสงประกาศ module ชอ M0 มเครองหมาย ; (semi-colon) คนกลางวงเลบ ใชเพอแยกระหวางอนพทและเอาทพททรานซชน ในทนอนพทคอ T0 และเอาทพทคอ TF
บรรทดท 2 ค าสง place ใชเพอประกาศเพลสทงหมดทใชใน module น ในทนประกอบไปดวยเพลส P0, P1,…, P10
บรรทดท 3 ค าสง trans ใชเพอประกาศทรานซชนทงหมดทใชใน module น ประกอบไปดวยทรานซชน T0, T1,…, T8 และ TF
บรรทดท 4 ค าสง token ใชเพอประกาศเพลสเรมตนของ token ทจะทวนสอบ ในทนคอเพลส P0
บรรทดท 5 ถง 12 แสดงการเกดทรานซชนในแตละทรานซชน โดยเรมจากบรรทดท 5 เพลส P0 ผานทรานซชน T0 ไปยงเพลส P1 ตอเนองไปจนกระทงถงบรรทดท 12
บรรทดท 9 รปแบบค าสงนนแสดงถงการเรมตนการแยกเพลสเพอท าการทวนสอบแบบภาวะพรอมกน จ านวนเพลสทแยกออกมาจะขนอยกบรปแบบค าสงทไดออกแบบไว ในทน
1: module M0 (T0 : TF) { 2: place (P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10); 3: trans (T0, T1 ,T2 ,T3 ,T4 ,T5 ,T6 ,T7 ,T8, TF); 4: token (P0); 5: T0 (P0) / (P1); 6: T1 (P1) / (P2); 7: T2 (P2) / (P3); 8: T3 (P3) / (P4); 9: T4 (P4) / (P5 , P7); 10: T5 (P5) / (P6); 11: T6 (P7) / (P8); 12: T7 (P6 , P8) / (P9); 13: T8 [5,10] (P9) / (P10);
14: TF (P10) / (P0); 15: T0 = (T0); 16: TF = (TF); } 17: spec M1 (T0 : TF) { 18: place (P0, P1, P2); 19: trans (T0, T8 ,T8); 20: token (P0); 21: T0 (P0) / (P1); 22: T8 [5,10] (P1) / (P2); 23: TF (P2) / (P0); 24: T0 = (T0); 25: T8 = (T8); }
33
รปแบบค าสงคอชดค าสง addTask 2 ค าสง และ runTask 1 ค าสง เพอเรยงตวอกษรจากหนาไปหลง โดยเพลส P4 จะแยกออกเปนเพลส P5 และ P7 ไปท ากจกรรมทก าหนดและรวมกนทเพลส P9 ผานทรานซชน T7 ดงทแสดงในบรรทดท 12
บรรทดท 13 แสดงการเกดทรานซชนทมการก าหนดเวลาททรานซชนสามารถเกดขนไดในระหวาง 5 ถง 10 หนวยเวลา ณ ทรานซชน T8
บรรทดท 14 แสดงการเกดทรานซชนทไมมการก าหนดเวลา สามารถเกดทรานซชนจากเพลส P10 ไปยง P0 ไดในระหวาง 0 ถง ∞
บรรทดท 15 และ 16 แสดงทรานซชนทใชแทนอนพทและเอาทพท บรรทดท 17 ค าสงประกาศ spec ชอ M1 มอนพททรานซชน T0 และเอาทพทท
รานซชน TF บรรทดท 18 ถง 25 มความหมายเชนเดยวกบค าสงของ module โดยมการ
ก าหนดเวลาการเกดทรานซชนททรานซชน T8 เชนเดยวกบทรานซชนใน module
34
บทท 4 ผลการวจยและอภปรายผล
เพอแสดงใหเหนถงประสทธภาพของวธการทน าเสนอ ในบทนผวจยไดน าเอาโปรแกรม
ประยกตทพฒนาขนโดยใชชดค าสงเกยรแมนส าหรบภาษาพเอชพ มาผานกระบวนการทวนสอบหาความสอดคลองกบคณลกษณะของโปรแกรมประยกตทก าหนด โดยใชเครองมอทวนสอบเพอหา Safety failure และ Timing failure โดยผวจยไดเลอกโปรแกรมประยกตส าหรบใชปรบไฟลภาพหลายขนาดโดยพรอมกนมาใชเปนกรณศกษาในการทวนสอบ
โปรแกรมประยกตส าหรบปรบขนาดไฟลภาพเปนหนงในปจจยทชดค าสงเกยรแมนถกพฒนาขนมาเพอปรบปรงประสทธภาพของระบบ เนองจากมกระบวนการประมวลผลทใชทรพยากรเครองสงมากและมการใชงานกนอยางแพรหลายผานทางเครอขายสงคม (Social network) ในปจจบน เมอมการน าชดค าสงเกยรแมนมาใชงานแลวท าใหประสทธภาพของโปรแกรมประยกตเพมขนเปนอยางมาก 4.1 กรณศกษาโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ
โปรแกรมประยกตส าหรบปรบขนาดไฟลภาพนนท างานโดยรบอนพทเปนไฟลจากผใช จากนนท าการตรวจคณสมบตเบองตนแลวจงท าการปรบขนาดไฟลภาพออกเปน 3 ขนาดเพอใหเหมาะกบการแสดงผลบนหนาจอของผใชในหลายขนาดและอปกรณ
สถาปตยกรรมทงหมดของโปรแกรมประยกตนประกอบไปดวย 5 สวนคอ สวนผใชงาน (User), สวนไคลเอนต, สวนพนทจดเกบขอมลบนเวบ (web storage), สวนจอบเซรฟเวอร และเวรคเกอร ดงภาพท 4.1 อธบายไดดงน
โดยผใชงานจะสงอนพทในรปแบบของไฟลผานทางไคลเอนตและรบเอาทพทเปนไฟลภาพทไดรบการปรบขนาดแลว พนทจดเกบขอมลใชส าหรบเกบไฟลภาพจากผใชและไฟลทไดรบการปรบขนาดแลว จอบเซรฟเวอรและเวรคเกอรใชส าหรบด าเนนการปรบไฟลภาพ
ส าหรบสวนประกอบอนๆเชน สวนตอประสาน (Interface) ทเปนภาษาเอชทเอมแอล (HTML) นน จะไมไดน ามาทวนสอบในงานวจยนเนองจากไมไดมการท างานในแบบภาวะพรอมกนและไมมผลกระทบกบโครงสรางของโปรแกรมประยกต
35
User Client Job Server Worker 1
Web storage
Worker 2
Worker 3 ภาพท 4.1 สถาปตยกรรมของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ
ขนตอนการด าเนนงานของโปรแกรมประยกตแสดงใหเหนในภาพท 4.2 เรมกระบวนการ
ท างานโดยผใชงานท าการอพโหลด (Upload) ไฟลไปยงไคลเอนต หลงจากนนไคลเอนตรบไฟลมาตรวจสอบหาคณสมบตพนฐานทจ าเปนส าหรบปรบขนาดไฟลภาพ
การตรวจสอบคณสมบตนนประกอบดวยการตรวจสอบประเภทของไฟล ตรวจสอบไฟลซ าในพนทจดเกบขอมล ตรวจสอบชนดของไฟลภาพ ตรวจสอบขนาดไฟลภาพ และตรวจสอบขอผดพลาดทงหมดกอนเรมกระบวนการปรบขนาดภาพ
จากนนไคลเอนตจะท าการสงค าสงปรบขนาดไฟลภาพไปยงจอบเซรฟเวอร เพอใหจอบเซรฟเวอรสงตอไปยงเวรคเกอร เมอเวรคเกอรไดรบค าสงแลวจะท าการปรบขนาดไฟลภาพทอยในพนทจดเกบขอมลเปน 3 ขนาดในเวลาเดยวกน ซงเปนภาวะการท างานแบบพรอมกนทผวจยใหความสนใจในการน ามาทวนสอบ สดทายผใชงานจะไดรบไฟลภาพ 3 ขนาดเปนเอาทพท
:User :Client :Storage:Worker
Check file type
Check image format
Check file exist
Check image size
Check all error
upload file
Return result
Return result
Return result
Return result
Return result
Return result
Upload file
Return result
Sent resize task
Return resultReturn result
:Job Server
Sent resize task
Return result
Resize image
Return result
Get image
Return result
Save resized image
ภาพท 4.2 แผนภาพแสดงล าดบการท างานของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ
36
4.2 คณลกษณะของโปรแกรมประยกต ทใชในการทวนสอบ
Time Petri net ทใชแทนคณลกษณะของโปรแกรมประยกตนนจะถกสรางขนจากรปแบบการท างานของโปรแกรมประยกต โดยก าหนดคณสมบตเงอนไขเกยวกบเวลาเพอใชในการทวนสอบความสอดคลองกนระหวางคณลกษณะของโปรแกรมประยกตกบชดค าสงของโปรแกรมประยกต
input
Check submit
getimagesize
Check file type error?
return result
Check file exist?
return result
return result
Check size error?
return result
Check image type error?
Check upload status
Prepare to resize image
image_resize smallimage_resize
medium image_resize large
Start resize
get result 3
get result 2
get result 1
[0,5]
[0,5]
[0,5]
[0,40]
[0,5]
P0
T0
T1
T3
T4
T5
T6
T7
T8
T9 T10 T11
T12
T31
T32
T33
TF
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
P16
P17
return result
ภาพท 4.3 คณลกษณะของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพในรปแบบ Time Petri net
ทน ามาทวนสอบ
37
เงอนไขทตองท าการทวนสอบไดแก ระยะเวลาตงแตรบอนพทจากผใชททรานซชน T0 ในระยะเวลา 0 ถง 40 หนวยเวลา และระยะเวลาทผใชจะไดรบผลลพธททรานซชน T31, T32 และ T33 ในระยะเวลา 0 ถง 5 หนวยเวลา ซงใชแทนระยะเวลากอนทเซสชนของระบบจะสนสดลง ผลลพธทไดแสดงใหเหนในภาพท 4.3 4.3 ชดค าสงของโปรแกรมประยกตทใชในการทวนสอบ
งานวจยนจะใชโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพเปนกรณศกษา ชดค าสงจากซอรซโคดของโปรแกรมประยกตในรปแบบไฟล .php ดงภาพท 4.4
ภาพท 4.4 ชดค าสงของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพทน ามาทวนสอบ
<? 1: //client 2: $target_dir = "uploads/"; 3: $imageName = basename($_FILES["fileToUpload"]["name"]); 4: $imagePath = $target_dir . $imageName; 5: $uploadOk = true; 6: $imageExt = pathinfo($imagePath,PATHINFO_EXTENSION); 7: $copyright = "Gearman"; 8: // Check if image file is a actual image 9: if(isset($_POST["submit"])): 10: $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 11: if($check == false): 12: echo "File is not an image."; 13: $uploadOk = false; 14: else: 15: echo "File is an image."; 16: $uploadOk = true; 17: endif; 18: // Check if file already exists 19: if(file_exists($imagePath)): 20: echo "Sorry, file already exists."; 21: $uploadOk = false; 22: endif; 23: // Check file size 24: if($_FILES["fileToUpload"]["size"] > 500000): 25: echo "Sorry, your file is too large."; 26: $uploadOk = false; 27: endif; 28: // Allow certain file formats 29: if($imageExt != "jpg" && $imageExt != "png" && $imageExt != "jpeg"&& $imageExt != "gif" ): 30: echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 31: $uploadOk = false; 32: endif;
33: // Check if $uploadOk is set to false by an error 34: if($uploadOk == false): 35: echo "Sorry, your file was not uploaded."; 36: else: 37: if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $imagePath)): 38: echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded."; 39: $gmclient= new GearmanClient(); 40: $gmclient->addServer(); 41: $gmclient->addTask("image_resize", array($imagePath,$imageName,$imageExt,640,480,$copyright)); 42: $gmclient->addTask("image_resize", array($imagePath,$imageName,$imageExt,800,600,$copyright)); 43: $gmclient->addTask("image_resize", array($imagePath,$imageName,$imageExt,1280,720,$copyright)); 44: $gmclient->runTasks(); 45: echo "small <img src=\"".$target_dir."/".$imgName."-640x480.".$imgExt."\" >"; 46: echo "medium <img src=\"".$target_dir."/".$imgName."-800x600.".$imgExt."\" >"; 47: echo "large <img src=\"".$target_dir."/".$imgName."-1280x720.".$imgExt."\" >"; 48: else: 49: echo "Sorry, there was an error uploading your file."; 50: endif; 51: endif; 52: else: 53: echo "Sorry, there was an error on submit file."; 54: endif; ?>
38
น าเอาชดค าสงขางตนมาแปลงใหอยในรปแบบของ Time Petri net ดวยขนตอนวธทน าเสนอในบทท 3 ผลลพธทไดแสดงใหเหนดงภาพท 4.5
input
target_dir
imageName
imagePath
uploadOk
imageExt
copyright
if(isset($_POST["submit"]))
getimagesize
copyright
if($check == false)
echo
true
true false
false
uploadOk = 0uploadOk = 1
echo
if (file_exists(...))
echo
true false
uploadOk = 0
echo
true false
uploadOk = 0
if ($_FILES...["size"] )
echo
true false
uploadOk = 0
if($imageExt!= "jpg")
echo error
true false
if ($uploadOk != 0)
echo
true falseif (move_uploaded_file)
echo
addServer
addTask
resize smallmedium large
runTasks
echo result 3
echo result 2
echo result 1
[0,5]
[0,5]
[0,5]
[0,40]
[0,5]
echo
P0
T0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P12
P11
P13
P14
P15
P16
P17
P18
P19
P20
P21
P22
P23
P24
P25
P27
P26 P28
P29
P30
P31
P32
T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
T12
T13 T15
T14
T16
T17
T18
T19
T20
T21
T22 T35
T23 T34
T24
T25
T26
T27 T28 T29
T30
T31
T32
T33
TF
new GearmanClient
T36
ภาพท 4.5 ชดค าสงของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพในรปแบบ Time Petri net ท
น ามาทวนสอบ
4.4 ผลการทวนสอบ
หลงจากทได Time Petri net แทนคณลกษณะและชดค าสงของโปรแกรมประยกตแลว ผวจยไดจดเตรยมไฟลอนพทส าหรบใชกบเครองมอทวนสอบ ในรปแบบไฟล .ppp ในการด าเนนงานวจยนใชเครองคอมพวเตอรส าหรบทวนสอบทมหนวยประมวลผลกลางเปน Intel Core i5-2500 มหนวยความจ าหลก 12 กกะไบต บนระบบปฏบตการ Ubuntu เวอรชน 14.04.1 ผลลพธจากการทวนสอบโดยใชเครองมอทวนสอบ ใชเวลาของซพยเทากบ 0.017045 วนาทใชพนทหนวยความจ า 96.145 กโลไบต ไมมขอผดพลาดเกดขน แสดงใหเหนวาชดค าสงเกยรแมนส าหรบภาษาพเอชพ สามารถรองรบการท างานแบบภาวะพรอมกนไดจรง และโปรแกรมประยกตทพฒนาขนมความสอดคลองตรงกบคณลกษณะทตองการ
39
บทท 5 สรปผลการวจยและขอเสนอแนะ
ในบทนจะกลาวถงสรปวธการด าเนนงานวจยทงหมดและขอเสนอแนะทพบในระหวางการ
ด าเนนงานวจยดงน
5.1 สรปผลการวจย
วทยานพนธฉบบนมวตถประสงคเพอออกแบบและพฒนาขนตอนวธการแปลงชดค าสงของชดค าสงเกยรแมนส าหรบภาษาพเอชพ ใหอยในรปแบบของ Time Petri net เพอท าการทวนสอบหาความสอดคลองกนระหวางคณลกษณะและชดค าสงของโปรแกรมประยกตทพฒนาขน โดยใช Timed Trace theory ทมเงอนไขเกยวกบเวลา ซงสามารถตรวจหาคณสมบต Safety failure และ Timing failure ได
ผวจยไดออกแบบขนตอนวธการส าหรบแปลงชดค าสงเกยรแมนในค าสง doNormal, doBackground addServer, addTask, runTasks และชดค าสงจากภาษาพเอชพ ในค าสงทท างานแบบเงอนไข, แบบเลอกท า, แบบวนซ า ค าสงก าหนดคาและรบคาจากตวแปร ใหอยในรปแบบของ Time Petri net เพอใชเปนอนพทส าหรบเครองมอทวนสอบ
จากนนผวจยไดท าทดลองโดยน าเอาโปรแกรมประยกตทพฒนาดวยชดค าสงเกยรแมนส าหรบภาษาพเอชพมาเปนกรณศกษา โดยผวจยไดพฒนาเครองมอส าหรบแปลงซอรซโคดของโปรแกรมประยกตใหอยในรปแบบของ Time Petri net ตามขนตอนวธทน าเสนอและท าการทวนสอบกบคณลกษณะของโปรแกรมประยกตโดยใชเครองมอทวนสอบ เพอพสจนความถกตองของโปรแกรมประยกตในการท างานแบบภาวะพรอมกน ผลการทดลองแสดงใหเหนวาชดค าสงเกยรแมนส าหรบภาษาพเอชพสามารถท างานแบบภาวะพรอมกนไดจรงและวธการทน าเสนอมประสทธภาพ 5.2 ขอเสนอแนะ
จากผลน าเสนอขนตอนวธการทวนสอบชดค าสงเกยรแมนส าหรบภาษาพเอชพ ดวย Timed Trace theory นน ผวจยมขอเสนอแนะในการด าเนนงานวจย ดงน
1. การก าหนดเงอนไขเกยวกบเวลายงตองมการก าหนดดวยวธการแบบ manual เนองจากเงอนไขเกยวกบเวลาบางชนดในภาษาพเอชพอยนอกเหนอจากชดค าสง เชน ระยะเวลาของชวงเวลาสอสารทก าหนดอยในไฟลการตงคา (Configuration) ของระบบ, ระยะเวลาสงสดในการ
40
เชอมตอฐานขอมลตดตอกน เปนตน ท าใหไมสามารถตรวจหาเงอนไขเกยวกบเวลาโดยอตโนมตจากคาของตวแปรและขอความตางๆในชดค าสงได ผก าหนดเวลามความจ าเปนทจะตองเขาใจในชดค าสงเกยรแมนส าหรบภาษาพเอชพ และ Time Petri net เปนอยางด
2. เมอสามารถแปลงชดค าสงเกยรแมนส าหรบภาษาพเอชพใหอยในรปแบบของ Time Petri net ไดแลว สามารถออกแบบกระบวนการทวนสอบโดยประยกตเอาคณลกษณะและชดค าสงของโปรแกรมประยกตมาใชแกปญหาทอาจเกดขนไดเมอมการใชงานชดค าสงเกยรแมนรวมกบภาษาพเอชพ อาทเชน ปญหา Race condition เปนตน
รายการอางอง Augusto Alves et al. (2008). The LHCb Detector at the LHC. JINST. Haen, C., Bonaccorsi, E., Neufeld, N. (2011). Distributed Monitoring System Based on
ICINGA. ICALEPCS. Kongburan, W., Pradubsuwun, D., (2014). Formal Verification of WS-BPEL Using Timed
Trace Theory. Advanced Materials Research. Issue 931-932, p1452. Pradubsuwun, D., Yoneda, T., & Myers, C. (2005). Partial Order Reduction for Detecting
Safety and Timing Failures of Timed Circuits. IEICE (Vol. E88-D No.7). Yoneda, T., Ryu, H. (1999). Timed Trace Theoretic Verification Using Partial Order
Reduction. IEEE. Gearman [Gearman Job Server].(n.d.). (2014, November). GearmanClient::addTask -
Manual. (n.d.). Retrieved from http://php.net/manual/en/gearmanclient. addtask.php
ประวตผเขยน
ชอ นายวรชญ ลเกษม วนเดอนปเกด 12 กนยายน พ.ศ.2529 ต าแหนง เจาของธรกจสวนตว
ผลงานทางวชาการ
1. Leekasem, W., Pradubsuwun, D., (2015). Formal Verification of Gearman
Framework based on PHP. PSU-UNS International Conference on Engineering and Technology, Phuket, Thailand.