การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี...

54
การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสาหรับภาษาพีเอชพี โดย นายวรัชญ์ ลีเกษม วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตร วิทยาศาสตรมหาบัณฑิต สาขาวิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์ ปีการศึกษา 2557 ลิขสิทธิ์ของมหาวิทยาลัยธรรมศาสตร

Transcript of การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี...

Page 1: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ

โดย

นายวรชญ ลเกษม

วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร วทยาศาสตรมหาบณฑต

สาขาวชาวทยาการคอมพวเตอร คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร

ปการศกษา 2557 ลขสทธของมหาวทยาลยธรรมศาสตร

Page 2: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ

โดย

นายวรชญ ลเกษม

วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร วทยาศาสตรมหาบณฑต

สาขาวชาวทยาการคอมพวเตอร คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร

ปการศกษา 2557 ลขสทธของมหาวทยาลยธรรมศาสตร

Page 3: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 4: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·
Page 5: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(4)

หวขอวทยานพนธ การทวนสอบเชงรปนยเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ

ชอผเขยน นายวรชญ ลเกษม ชอปรญญา วทยาศาสตรมหาบณฑต สาขาวชา/คณะ/มหาวทยาลย วทยาการคอมพวเตอร

วทยาศาสตรและเทคโนโลย มหาวทยาลยธรรมศาสตร

อาจารยทปรกษาวทยานพนธ

อาจารย ดร.เดนดวง ประดบสวรรณ

ปการศกษา 2557

บทคดยอ

เฟรมเวรคเกยรแมนส าหรบภาษาพเอชพเปนเฟรมเวรคส าหรบชวยพฒนาโปรแกรมประยกตบนเวบใหสงงานแบบภาวะพรอมกนได ท าใหประสทธภาพของโปรแกรมประยกตเพมขน แตเนองดวยความซบซอนของชดค าสง ท าใหผพฒนาโปรแกรมประยกตยากทจะตรวจสอบความถกตองของเหตการณทเปนไปไดทงหมดในการประมวลผลของโปรแกรมประยกต ดงนนจงจ าเปนทจะตองทวนสอบโปรแกรมประยกตเพอรบประกนความถกตองและความนาเชอถอ

งานวจยฉบบนจงน าเสนอการทวนสอบเชงรปนย ดวย Timed Trace theory เพอทวนสอบหา Safety และ Timing failures ของเฟรมเวรคเกยรแมนส าหรบภาษาพเอชพ ผลการทดลองแสดงใหเหนประสทธภาพของวธการทน าเสนอ

ค าส าคญ: การทวนสอบเชงรปนย, การค านวณแบบภาวะพรอมกน, Time Petri net

Page 6: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(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

Page 7: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(6)

กตตกรรมประกาศ

การจดท าวทยานพนธฉบบนจะไมอาจส าเรจไดเลย หากไมไดรบการสนบสนนจากทานอาจารยทปรกษาวทยานพนธ ดร.เดนดวง ประดบสวรรณ ซงคอยใหค าชแนะและใหค าปรกษาทดยง ไมวาจะในดานวชาการและดานการใชชวต ท าใหผวจยสามารถเอาชนะอปสรรคตางๆ ในการท าวทยานพนธฉบบนมาไดโดยตลอด ขอกราบขอบพระคณทานอาจารยเปนอยางสงไว ณ ทน

ขอกราบขอบพระคณคณาจารยภาควชาวทยาการคอมพวเตอรทกทานทกรณาอบรมใหความรทเปนประโยชนในทกรายวชา ตงแตวนทเรมปฐมนเทศนจนถงวนสดทายของการเรยนการสอนเปนอยางด ท าใหผวจยสามารถน าความรทไดไปประยกตใชในงานทท าและวทยานพนธฉบบนไดจนส าเรจลลวง

ขอขอบคณเจาหนาทภาควชาวทยาการคอมพวเตอร ทกทาน โดยเฉพาะคณพมพภาวรรณ ฉมชาญเวช ทคอยเอาใจใสตดตาม ดแลก าหนดการและเอกสารตางๆในการศกษาตลอดทงหลกสตร ใหเปนไปดวยความเรยบรอย

สดทายนขอกราบขอบพระคณคณแมทรกยง ภรรยา ครอบครวและเพอนๆทคอยใหก าลงใจโดยตลอดในการจดท าวทยาพนธฉบบน

นายวรชญ ลเกษม มหาวทยาลยธรรมศาสตร พ.ศ. 2557

Page 8: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(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

Page 9: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(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

Page 10: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(9)

สารบญตาราง

ตารางท หนา 1.1 เปรยบเทยบความเรวในการตอบสนองทเพมขนเมอน าเอาเกยรแมนไปประยกตใช 2

Page 11: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(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

Page 12: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

(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

Page 13: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 โครงสรางสถาปตยกรรมการท างานของเกยรแมน

Page 14: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 เพอพสจนความถกตองในการท างานแบบภาวะพรอมกนกอนน าไปใชงานจรง

Page 15: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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. ตนทนในการออกแบบและพฒนาโปรแกรมประยกตลดลง

Page 16: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

4

1.5 รายละเอยดของวทยานพนธ

วทยานพนธฉบบนประกอบดวย บทท 1 บทน า กลาวถงความเปนมาและความส าคญของงานวจย วตถประสงคของงานวจย ขอบเขตของงานวจย ประโยชนทคาดวาจะไดรบ และรายละเอยดของวทยานพนธ บทท 2 กลาวถงงานวจยและทฤษฎทเกยวของกบงานวจย ไดแก เกยรแมน, Time Petri net และ Timed Trace theory บทท 3 เปนการน าเสนอขนตอนวธการแปลงชดค าสงเกยรแมนส าหรบภาษาพเอชพ ใหอยในรปของ Time Petri net ส าหรบน าไปทวนสอบ บทท 4 น าเสนอผลการด าเนนงานวจย ดวยการทวนสอบกบโปรแกรมประยกตทเปนกรณศกษา และบทท 5 สรปผลการด าเนนงานวจยและขอเสนอแนะ

Page 17: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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) และพเอชพ เปนตน

Page 18: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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";

Page 19: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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] )

Page 20: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 )

Page 21: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 ) ;

Page 22: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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;

Page 23: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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”

Page 24: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 25: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 โทเคนทอยใน

อนพทเพลสของทรานซชน จะเปลยนต าแหนงไปยงเอาทพทเพลสของทรานซชน

Page 26: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 และขนตอนวธการทวนสอบ

Page 27: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 28: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 29: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 เหมาะจะน ามาใชอธบายพฤตกรรมการท างานและทวนสอบเกยรแมนทรองรบการท างานแบบภาวะพรอมกนไดอยางถกตอง

Page 30: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 ภาพรวมขนตอนของงานวจย

Page 31: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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;

Page 32: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 33: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 เพอท ากจกรรมตอไป

Page 34: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 35: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 ();

Page 36: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 37: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 38: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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: }

Page 39: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 ไดโดย

Page 40: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 41: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 42: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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: ?>

Page 43: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 44: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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); }

Page 45: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

Page 46: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

34

บทท 4 ผลการวจยและอภปรายผล

เพอแสดงใหเหนถงประสทธภาพของวธการทน าเสนอ ในบทนผวจยไดน าเอาโปรแกรม

ประยกตทพฒนาขนโดยใชชดค าสงเกยรแมนส าหรบภาษาพเอชพ มาผานกระบวนการทวนสอบหาความสอดคลองกบคณลกษณะของโปรแกรมประยกตทก าหนด โดยใชเครองมอทวนสอบเพอหา Safety failure และ Timing failure โดยผวจยไดเลอกโปรแกรมประยกตส าหรบใชปรบไฟลภาพหลายขนาดโดยพรอมกนมาใชเปนกรณศกษาในการทวนสอบ

โปรแกรมประยกตส าหรบปรบขนาดไฟลภาพเปนหนงในปจจยทชดค าสงเกยรแมนถกพฒนาขนมาเพอปรบปรงประสทธภาพของระบบ เนองจากมกระบวนการประมวลผลทใชทรพยากรเครองสงมากและมการใชงานกนอยางแพรหลายผานทางเครอขายสงคม (Social network) ในปจจบน เมอมการน าชดค าสงเกยรแมนมาใชงานแลวท าใหประสทธภาพของโปรแกรมประยกตเพมขนเปนอยางมาก 4.1 กรณศกษาโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ

โปรแกรมประยกตส าหรบปรบขนาดไฟลภาพนนท างานโดยรบอนพทเปนไฟลจากผใช จากนนท าการตรวจคณสมบตเบองตนแลวจงท าการปรบขนาดไฟลภาพออกเปน 3 ขนาดเพอใหเหมาะกบการแสดงผลบนหนาจอของผใชในหลายขนาดและอปกรณ

สถาปตยกรรมทงหมดของโปรแกรมประยกตนประกอบไปดวย 5 สวนคอ สวนผใชงาน (User), สวนไคลเอนต, สวนพนทจดเกบขอมลบนเวบ (web storage), สวนจอบเซรฟเวอร และเวรคเกอร ดงภาพท 4.1 อธบายไดดงน

โดยผใชงานจะสงอนพทในรปแบบของไฟลผานทางไคลเอนตและรบเอาทพทเปนไฟลภาพทไดรบการปรบขนาดแลว พนทจดเกบขอมลใชส าหรบเกบไฟลภาพจากผใชและไฟลทไดรบการปรบขนาดแลว จอบเซรฟเวอรและเวรคเกอรใชส าหรบด าเนนการปรบไฟลภาพ

ส าหรบสวนประกอบอนๆเชน สวนตอประสาน (Interface) ทเปนภาษาเอชทเอมแอล (HTML) นน จะไมไดน ามาทวนสอบในงานวจยนเนองจากไมไดมการท างานในแบบภาวะพรอมกนและไมมผลกระทบกบโครงสรางของโปรแกรมประยกต

Page 47: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 แผนภาพแสดงล าดบการท างานของโปรแกรมประยกตส าหรบปรบขนาดไฟลภาพ

Page 48: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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

ทน ามาทวนสอบ

Page 49: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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; ?>

Page 50: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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 กโลไบต ไมมขอผดพลาดเกดขน แสดงใหเหนวาชดค าสงเกยรแมนส าหรบภาษาพเอชพ สามารถรองรบการท างานแบบภาวะพรอมกนไดจรง และโปรแกรมประยกตทพฒนาขนมความสอดคลองตรงกบคณลกษณะทตองการ

Page 51: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

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) ของระบบ, ระยะเวลาสงสดในการ

Page 52: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

40

เชอมตอฐานขอมลตดตอกน เปนตน ท าใหไมสามารถตรวจหาเงอนไขเกยวกบเวลาโดยอตโนมตจากคาของตวแปรและขอความตางๆในชดค าสงได ผก าหนดเวลามความจ าเปนทจะตองเขาใจในชดค าสงเกยรแมนส าหรบภาษาพเอชพ และ Time Petri net เปนอยางด

2. เมอสามารถแปลงชดค าสงเกยรแมนส าหรบภาษาพเอชพใหอยในรปแบบของ Time Petri net ไดแลว สามารถออกแบบกระบวนการทวนสอบโดยประยกตเอาคณลกษณะและชดค าสงของโปรแกรมประยกตมาใชแกปญหาทอาจเกดขนไดเมอมการใชงานชดค าสงเกยรแมนรวมกบภาษาพเอชพ อาทเชน ปญหา Race condition เปนตน

Page 53: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

รายการอางอง 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

Page 54: การทวนสอบเชิงรูปนัยเฟรมเวิร์คเกียร์แมนสำหรับภาษาพีเอชพี ...ethesisarchive.library.tu.ac.th/thesis/2014/TU... ·

ประวตผเขยน

ชอ นายวรชญ ลเกษม วนเดอนปเกด 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.