Contents
Abstract ii
Acknowledgements iv
List of Figures viii
1 Introduction 1
1.1 Mobile Industry and Mobile Software Development . . . . . . . . . . . . . 1
1.2 Sensor Network and TinyOS . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Thesis Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Architecture 6
2.1 Client-Server Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Two-Tier Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Multitier Architecture (N-Tier Architecture) . . . . . . . . . . . . 9
2.1.3 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Model View Controller (MVC) . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Comparison Between Three-tier and MVC Architecture . . . . . . . . . . 11
2.4 N-Tier Architecture in this Implementation . . . . . . . . . . . . . . . . . 12
2.5 Integrated Development Environments (IDE) . . . . . . . . . . . . . . . . 14
2.5.1 NetBeans IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.2 Eclipse IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Software Development Kit (SDK) . . . . . . . . . . . . . . . . . . . . . . . 16
2.7 Mobile Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7.1 Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.7.2 ARM Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.7.2.1 RISC architecture . . . . . . . . . . . . . . . . . . . . . . 17
2.7.2.2 ARM vs Intel . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.7.3 Mobile Development . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7.4 Android Development . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7.4.1 Activity Lifecycle . . . . . . . . . . . . . . . . . . . . . . 21
2.7.4.2 Screen Sizes in Android . . . . . . . . . . . . . . . . . . . 23
2.7.4.3 Different Platform Versions . . . . . . . . . . . . . . . . . 24
2.8 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8.1 SOAP Based Web Services . . . . . . . . . . . . . . . . . . . . . . 25
v
Contents vi
2.8.1.1 RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8.1.2 Document Transmission . . . . . . . . . . . . . . . . . . . 27
2.8.1.3 The Structure of a SOAP Message . . . . . . . . . . . . . 28
2.8.1.4 The SOAP Message Path . . . . . . . . . . . . . . . . . . 30
2.8.2 RESTful Web Services . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.8.3 REST vs SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.8.4 (Un)Marshalling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.9 TinyOS Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.9.1 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.9.2 Modules & Configurations . . . . . . . . . . . . . . . . . . . . . . . 36
2.9.3 Singletons & Generic Components . . . . . . . . . . . . . . . . . . 36
2.9.4 Events & Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3 Requirements Analysis, User Interface Prototyping and Evaluation 38
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2 Personas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.1 Anne, 41, Professor . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.2 John, 63, Businessman . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2.3 Katia, 23, Undergraduate Student . . . . . . . . . . . . . . . . . . 42
3.3 Storyboarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1 Receiving Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4 Paper Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 Testing, Evaluation & Adjustments . . . . . . . . . . . . . . . . . . . . . 52
3.5.1 Cognitive Walkthrough . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2 Think Aloud Method/Protocol . . . . . . . . . . . . . . . . . . . . 54
3.5.3 Adjustments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4 Sensor Network & TinyOS 56
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2 Developing a TinyOS Application . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.1 Simulating TinyOS Networks . . . . . . . . . . . . . . . . . . . . . 57
4.3 Power Consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4 TAG (Tiny AGgregation Service for Ad-Hoc Sensor Networks) . . . . . . 62
4.5 TiNA (A Scheme for Temporal Coherency-Aware in-Network Aggregation) 64
4.6 Description of Sensor Measurement TinyOS Application . . . . . . . . . . 64
4.6.1 Routing Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.6.2 Synchronization Phase . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.6.3 Collection Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.6.4 Ending Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.7 Outlier Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.7.1 The Geometric Approach . . . . . . . . . . . . . . . . . . . . . . . 68
4.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5 Web Service 70
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.2 Choosing the Right Architecture & Framework . . . . . . . . . . . . . . . 70
5.3 JAX-WS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Contents vii
5.4 XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.5 Web Service - TinyOS Interaction . . . . . . . . . . . . . . . . . . . . . . 85
6 Database Design 87
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Analysis of the Database Design . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.1 User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.2 Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.3 Measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2.4 Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.2.5 outliersEdges - outlierEdgesFinal . . . . . . . . . . . . . . . . . . . 90
6.2.6 Occupied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3 Relational Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7 Android Application 93
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 Mobile Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3 Abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.4 Blocking - Non blocking Operations . . . . . . . . . . . . . . . . . . . . . 94
7.4.1 Android’s AsyncTask . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.4.2 Android’s Background Service . . . . . . . . . . . . . . . . . . . . 97
7.5 Storage Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.5.1 Shared Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.5.2 Internal Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.5.3 External Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.5.4 SQLite Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.6 kSOAP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.7 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.7.1 Android Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.7.2 Action Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.7.3 Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.7.4 AChartEngine - A Charting Library for Android Applications . . . 113
7.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8 Conclusion 119
8.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.2.1 Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.2.2 Limit Bandwidth - Use Cache . . . . . . . . . . . . . . . . . . . . . 121
8.2.3 Additional Functionality for the Sensor Network . . . . . . . . . . 121
สารบัญบทคัดย่อ ii กิตติกรรมประกาศ iv รายการของตัวเลข viii 1 บทนำ 1 1.1 อุตสาหกรรมโทรศัพท์มือถือและการพัฒนาซอฟต์แวร์มือถือ . . . . . . . . . . . . 1 1.2 เซนเซอร์เครือข่ายและ TinyOS . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 บริการเว็บ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 เงินสมทบวิทยานิพนธ์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 6 สถาปัตยกรรม2.1 รุ่นไคลเอนต์เซิร์ฟเวอร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1 สองชั้นสถาปัตยกรรม . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.2 multitier สถาปัตยกรรม (สถาปัตยกรรม N-Tier) . . . . . . . . . . . 9 2.1.3 จัดการข้อผิดพลาด . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 รุ่นดู Controller (MVC) . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 เปรียบเทียบระหว่างสามชั้นและ MVC สถาปัตยกรรม . . . . . . . . . 11 2.4 สถาปัตยกรรม N-Tier ในการดำเนินการนี้ . . . . . . . . . . . . . . . . 12 2.5 สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) . . . . . . . . . . . . . . . 14 2.5.1 NetBeans IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.2 Eclipse IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6 Software Development Kit (SDK) . . . . . . . . . . . . . . . . . . . . . . 16 2.7 สถาปัตยกรรมมือถือ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.7.1 แพลทฟอร์ม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.7.2 สถาปัตยกรรม ARM . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.7.2.1 สถาปัตยกรรม RISC . . . . . . . . . . . . . . . . . . . . . 17 2.7.2.2 ARM เทียบกับอินเทล . . . . . . . . . . . . . . . . . . . . . . . . 18 2.7.3 การพัฒนามือถือ . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.7.4 การพัฒนา Android . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7.4.1 ระยะเวลากิจกรรม . . . . . . . . . . . . . . . . . . . . . 21 2.7.4.2 ขนาดหน้าจอใน Android . . . . . . . . . . . . . . . . . . 23 2.7.4.3 รุ่นแพลทฟอร์มที่แตกต่างกัน . . . . . . . . . . . . . . . . 24 2.8 บริการเว็บ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.8.1 สบู่จากบริการเว็บ . . . . . . . . . . . . . . . . . . . . . 25 โวลต์เนื้อหา vi 2.8.1.1 RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.8.1.2 การส่งเอกสาร . . . . . . . . . . . . . . . . . . 27 2.8.1.3 โครงสร้าง SOAP ข้อความการให้ . . . . . . . . . . . . 28 2.8.1.4 สบู่เส้นทางข้อความ . . . . . . . . . . . . . . . . . 30 2.8.2 บริการเว็บสงบ . . . . . . . . . . . . . . . . . . . . . . . . 30 2.8.3 ส่วนที่เหลือเทียบกับสบู่ . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.8.4 (Un) จัดสรร . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.9 TinyOS สถาปัตยกรรม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.9.1 การเชื่อมต่อ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.9.2 โมดูลและการตั้งค่า . . . . . . . . . . . . . . . . . . . . . . 36 2.9.3 Singletons และส่วนประกอบทั่วไป . . . . . . . . . . . . . . . . . 36 2.9.4 กิจกรรมและงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 การวิเคราะห์ความต้องการของผู้ใช้อินเตอร์เฟซการสร้างต้นแบบและการประเมินผล 38 3.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2 Personas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2.1 แอนน์, 41, ศาสตราจารย์ . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.2 จอห์น, 63, นักธุรกิจ . . . . . . . . . . . . . . . . . . . . . . . . 41 3.2.3 เทีย, 23, นักศึกษาระดับปริญญาตรี . . . . . . . . . . . . . . . . . 42 3.3 สตอรี่บอร์ด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3.1 ได้รับข้อเสนอแนะ . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4 การสร้างต้นแบบกระดาษ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.5 การทดสอบการประเมินผลและการปรับ . . . . . . . . . . . . . . . . . . . . 52 3.5.1 ความรู้ความเข้าใจเกมส์ . . . . . . . . . . . . . . . . . . . . . . . 52 3.5.2 วิธีคิดดัง / พิธีสาร . . . . . . . . . . . . . . . . . . . 54 3.5.3 การปรับ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4 เครือข่ายเซนเซอร์และ TinyOS 56 4.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.2 การพัฒนาแอพลิเคชัน TinyOS . . . . . . . . . . . . . . . . . . . . . . 56 4.2.1 การจำลอง TinyOS เครือข่าย . . . . . . . . . . . . . . . . . . . . 57 4.3 การใช้พลังงาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.4 TAG (รวมบริการเล็ก ๆ สำหรับเซนเซอร์เฉพาะกิจเครือข่าย) . . . . . 62 4.5 Tina (A โครงการสำหรับการเชื่อมโยงกันชั่วขณะ-รู้ในเครือข่ายรวม) 64 4.6 คำอธิบายของเซนเซอร์วัด TinyOS แอพลิเคชัน . . . . . . . . . 64 4.6.1 การกำหนดเส้นทางเฟส . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.6.2 การประสานเฟส . . . . . . . . . . . . . . . . . . . . . . . . 66 4.6.3 ขั้นตอนการเก็บ . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.6.4 ขั้นตอนที่สิ้นสุด . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.7 ขอบเขตการตรวจสอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.7.1 แนวทางเรขาคณิต . . . . . . . . . . . . . . . . . . . . . . 68 4.8 ข้อมูลอย่างย่อ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5 70 บริการเว็บ5.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.2 การเลือกขวาสถาปัตยกรรมและกรอบ . . . . . . . . . . . . . . 70 5.3 JAX-WS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 สารบัญ vii 5.4 XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.5 Web Service - TinyOS ปฏิสัมพันธ์ . . . . . . . . . . . . . . . . . . . . . 85 6 การออกแบบฐานข้อมูล 87 6.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.2 การวิเคราะห์การออกแบบฐานข้อมูล . . . . . . . . . . . . . . . . . . . . . . 88 6.2.1 ผู้ใช้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2.2 การประชุม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2.3 การวัด . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2.4 ขอบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.2.5 outliersEdges - outlierEdgesFinal . . . . . . . . . . . . . . . . . . 90 6.2.6 ยึดครอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.3 สัมพันธ์ Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.4 ข้อมูลอย่างย่อ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7 93 ประยุกต์ใช้ Android 7.1 บทนำ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.2 ข้อ จำกัด มือถือ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.3 นามธรรม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 7.4 การปิดกั้น - การดำเนินงานที่ไม่ปิดกั้น . . . . . . . . . . . . . . . . . . . . 94 7.4.1 ของ Android AsyncTask . . . . . . . . . . . . . . . . . . . . . . . . . 95 7.4.2 บริการพื้นหลังของ Android . . . . . . . . . . . . . . . . . . . 97 7.5 ตัวเลือกการจัดเก็บข้อมูล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7.5.1 การตั้งค่าที่ใช้ร่วมกัน . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7.5.2 จัดเก็บข้อมูลภายใน . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.5.3 จัดเก็บข้อมูลภายนอก . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.5.4 ฐานข้อมูล SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.6 kSOAP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.7 ส่วนติดต่อผู้ใช้ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.7.1 Android เลย์เอาต์ . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.7.2 การดำเนินการบาร์ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.7.3 ผ้าใบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.7.4 AChartEngine - ห้องสมุดแผนภูมิสำหรับการประยุกต์ใช้ Android . . 113 7.8 อย่างย่อ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8 สรุป 119 8.1 อย่างย่อ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.2 การทำงานในอนาคต . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.2.1 Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.2.2 จำกัด Bandwidth - การใช้แคช . . . . . . . . . . . . . . . . . . . . 121 8.2.3 ฟังก์ชั่นเพิ่มเติมสำหรับเครือข่ายเซนเซอร์ . . . . . . . . . 121
การแปล กรุณารอสักครู่..