• 沒有找到結果。

There are three future directions for VerificationTalk:

Ÿ Since BigraphER supports parameterized entities, BigraphTalk can flexibly encode additional properties. One such property would be modeling device location. With this property, BigraphTalk can define which configuration is forbidden more clearly (e.g., some chemical substances are not suitable to be placed nearby in the factory).

Ÿ BigraphTalk should also provide the property of the device ownership. This property can prevent errors that occur because data belonging to a specific device are accessed by the users without access rights. For instance, only the residents may access the data within their dormitory.

Ÿ Since IoTtalk is a modular system written in Python, the modules and the entire system can be regarded as compositions of multiple functions. With the AFL or similar tools, we can perform software testing on these functions to discover any potential errors in the IoTtalk server.

48

We will keep applying VerificationTalk on deployed IoTtalk applications and invite users to give feedback for debugging with VerificationTalk, as the future improvement direction.

49

References

[1] S. Villamil, C. Hernández, and G. Tarazona, “An overview of internet of things”, in TELKOMNIKA Telecommunication, Computing, Electronics and Control, vol. 18, no. 5, pp. 2320–2327, October, 2020.

[2] ThingsBoard: Open-source IoT Platform. (2021, Jan. 26). [Online]. Available: https://thingsboard.io/

[3] Y. B. Lin, Y. W. Lin, C. M. Huang, C. Y. Chih, P. Lin, “IoTtalk: A Management Platform for Reconfigurable Sensor Devices”, IEEE Internet of Things Journal, 4(5) 1552-1562, October 2017.

[4] T. H. Yen, “Design and Implementation IoTtalk based on Message Queuing Telemetry Transport Protocol”, NCTU, Master’s thesis, 2019.

[5] H. E. Wang, “Design and Implementation of IoTtalk and Its Application”, NCTU, Master’s thesis, 2019.

[6] A. Blair, M. Z. Shieh, Y. H. Hu, S. Michele, Y. B. Lin, “BigraphTalk: Verification Design of IoT Applications”, IEEE IoT Journal, vol. 7, issue 4, pp.2955-2967, 2020.

[7] R. Milner, “The Space and Motion of Communicating Agents”, Cambridge University Press, 2009.

[8] American Fuzzy Lop. (2020, Jun. 30). [Online]. Available: https://lcamtuf.coredump.cx/afl/

[9] Formal methods. (2016, Apr. 10). [Online]. Available: https://shemesh.larc.nasa.gov/fm/fm-what.html

[10] M. Sevegnani, M. Kaba ́c, M. Calder, and J. A. McCann, “Modelling and verification of large-scale sensor network infrastructures”, in 23rd International Conference on Engineering of Complex Computer Systems, ICECCS 2018, Melbourne, Australia, December 12-14, 2018. IEEE Computer Society, 2018, pp. 71–81.

[11] S. Benford, M. Calder, T. Rodden, and M. Sevegnani, “On lions, impala, and bigraphs: Modelling

interactions in physical/virtual spaces”, ACM Transactions on Computer-Human Interaction, vol. 23, no. 2, pp.

9:1– 9:56, 2016.

[12] W. J. Thong and M. A. Ameedeen, “A survey of UML tools”, in Proceedings of the Second International Conference on Advanced Data and Information Engineering, DaEng 2015, Bali, Indonesia, April 25-26, 2015, pp.

61–70.

[13] Undecidable problem. (2021, Feb. 24). [Online]. Available:

50 https://en.wikipedia.org/wiki/Undecidable_problem

[14] Correctness. (2020, Nov. 12). [Online]. Available:

https://en.wikipedia.org/wiki/Correctness_(computer_science)

[15] M. Bohm, V. T. Pham, M. D. Nguyen, and A. Roychoudhury, “Directed greybox fuzzing”, ACM SIGSAC Conference on Computer and Communications Securit, pp. 2329–2344. ACM, Dallas (2017).

[16] C. Holler, K. Herzig, A. Zeller, “Fuzzing with Code Fragments”, in Proceedings of Usenix Security, pp. 445–

458 (2012).

[17] J. Chen, W. Diao, Q. Zhao, C. Zuo, Z. Lin, X. Wang, W. C. Lau, M. Sun, R. Yang, and K. Zhang, "IoTFuzzer:

Discovering memory corruptions in IoT through app-based fuzzing", in Network and Distributed System Security Symposium (NDSS), 2018.

[18] Z. Gui, H. Shu, F. Kang and X. Xiong, "FIRMCORN: Vulnerability-Oriented Fuzzing of IoT Firmware via Optimized Virtual Execution", in IEEE Access, vol. 8, pp. 29826-29841, 2020.

[19] X. Zhu, S. Wen, A. Jolfaei, M. Sayad Haghighi, S. Camtepe and Y. Xiang, "Vulnerability Detection in SIoT Applications: A Fuzzing Method on their Binaries", in IEEE Transactions on Network Science and Engineering.

[20] Y. Zheng, Z. Song, Y. Sun, K. Cheng, H. Zhu and L. Sun, "An Efficient Greybox Fuzzing Scheme for Linux-based IoT Programs Through Binary Static Analysis", 2019 IEEE 38th International Performance Computing and Communications Conference (IPCCC), 2019, pp. 1-8.

[21] X. Zhu, S. Wen, A. Jolfaei, S. Camtepe and Y. Xiang, "Synthesised Corpora to Evaluate Fuzzing for Green Internet of Things Programs", in IEEE Transactions on Green Communications and Networking.

[22] Object-relational mapping. (2021, Feb. 6). [Online]. Available:

https://en.wikipedia.org/wiki/Object-relational_mapping

[23] M. Sevegnani and M. Calder, "BigraphER: Rewriting and analysis engine for bigraphs", in Computer Aided Verification - 28th International Conference, CAV 2016, Toronto, ON, Canada, July 17-23, 2016, Proceedings, Part II, 2016, pp. 494–501.

[24] M. Sevegnani and M. Calder, "Bigraphs with sharing", Theoretical Computer Science, vol. 577, pp. 43–73,

51 2015.

[25] JSON. (2021, Feb. 23). [Online]. Available: https://en.wikipedia.org/wiki/JSON

[26] Predicate. (2021, Mar. 9). [Online]. Available:

https://en.wikipedia.org/wiki/Predicate_(mathematical_logic)

[27] Flask. (2021, Feb. 1). [Online]. Available: https://flask.palletsprojects.com/

[28] Flask-SQLAlchemy. (2021, Feb. 1). [Online]. Available: https://flask-sqlalchemy.palletsprojects.com/

[29] SQLAlchemy. (2021, Feb. 1). [Online]. Available: http://www.sqlalchemy.org/

[30] SQLAlchemy Engine Configuration. (2021, Feb. 1). [Online]. Available:

https://docs.sqlalchemy.org/en/13/core/engines.html

[31] SQLAlchemy Session Basics. (2021, Feb. 1). [Online]. Available:

https://docs.sqlalchemy.org/en/13/orm/session_basics.html

[32] Flask-SQLAlchemy Declaring Models. (2021, Feb. 1). [Online]. Available:

https://flask-sqlalchemy.palletsprojects.com/models/

[33] Comparison of relational database management systems. (2021, Mar. 24). [Online]. Available:

https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

[34] Flask-SQLAlchemy API-Configuration. (2021, Feb. 1). [Online]. Available:

https://flask-sqlalchemy.palletsprojects.com/api/

[35] Requests: HTTP for Humans. (2020, Dec. 16). [Online]. Available: https://requests.readthedocs.io/

[36] multiprocessing: Process-based parallelism. (2021, Mar. 16). [Online]. Available:

https://docs.python.org/3/library/multiprocessing.html

[37] Interquartile Range. (2021, Mar. 15). [Online]. Available:

https://en.wikipedia.org/wiki/Interquartile_range

[38] Crash. (2021, Mar. 16). [Online]. Available: https://en.wikipedia.org/wiki/Crash_(computing)

52

[39] Hang. (2021, Jan. 30). [Online]. Available: https://en.wikipedia.org/wiki/Hang_(computing)

[40] Mutation. (2012, Jan. 4). [Online]. Available: https://en.wikipedia.org/wiki/Mutation_(genetic_algorithm)

[41] Python AFL. (2021, Mar. 5). [Online]. Available: https://github.com/jwilk/python-afl

[42] W. L. Chen, Y. B. Lin, Y. W. Lin, R. Chen, J. K. Liao, F. L. Ng, Y. Y. Chan, Y. C. Liu, C. C. Wang, C. H. Chiu, and T.

H. Yen, "AgriTalk: IoT for Precision Soil Farming of Turmeric Cultivation", in IEEE Internet of Things Journal, vol. 6, no. 3, pp. 5209-5223, Jun. 2019.

[43] W. S. Lai, Y. B. Lin, C. Y. Hsiao, L. K. Chen, C. F. Wu, S. M. Lin, "FrameTalk: Human and Picture Frame Interaction through the IoT Technology", Mobile Networks and Applications Journal, May 2019.

[44] Tuple. (2021, Mar. 22). [Online]. Available: https://docs.python.org/3/tutorial/datastructures.html

[45] 0. Shivers, "Control flow analysis in Scheme". In Proceedings of the ACM SIGPLAN 1988 conference on Programming Language Design and Implementation, pages 164-174, June 1988.

[46] R. Gold, "Control flow graphs and code coverage", Int. J. Appl. Math. Computer Science. 2010, vol. 20, no.

4, pp. 739–749.

[47] R. Khan and A. Srivastava, "A Tool for Generation of Automatic Control Flow Graph in Unit Testing of Python Programs". In International Journal of Advanced Technology and Engineering, 2019.

[48] Code Coverage. (2021, Apr. 8). [Online]. Available: https://en.wikipedia.org/wiki/Code_coverage

[49] R. Gopinath, C. Jenson, and A. Groce, "Code coverage for suite evaluation by developers". In Proceedings of the 36th International Coference on Software Engineering, 2014.

[50] N. Li, U. Praphamontripong and J. Offutt, "An Experimental Comparison of Four Unit Test Criteria:

Mutation, Edge-Pair, All-Uses and Prime Path Coverage", 2009 International Conference on Software Testing, Verification, and Validation Workshops, Denver, CO, USA, 2009, pp. 220-229.

[51] X. Cai and M. R. Lyu, "The Effect of Code Coverage on Fault Detection Under Different Testing Profiles", ICSE 2005 Workshop on Advances in Model-Based Software Testing (A-MOST), St. Louis, Missouri, May 2005.

[52] S. Nagy, M. Hicks, "Full-Speed Fuzzing: Reducing Fuzzing Overhead through Coverage-Guided

53

Tracing," 2019 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA, 2019, pp. 787-802.

[53] P. Ammann, J. Offutt, "Introduction to software testing". Cambridge University Press, Cambridge, UK, 2008.

[54] P. Black, "Dictionary of Algorithms and Data Structures", NISTIR, Accessed April 26, 2021. [Online].

Available: http://www.nist.gov/dads

[55] S. Mishra, "Analysis of test coverage metrics in a business critical setup", Dissertation, 2017

[56] A. Dwarakanath, A. Jankiti, "Minimum Number of Test Paths for Prime Path and other Structural Coverage Criteria". In: Merayo, M.G., Oca, E.M. (eds.) ICTSS 2014. LNCS, vol. 8763, pp. 63–79. Springer, Heidelberg (2014).

[57] F. Trautsch and J. Grabowski, "Are There Any Unit Tests? An Empirical Study on Unit Testing in Open Source Python Projects," 2017 IEEE International Conference on Software Testing, Verification and Validation (ICST), 2017, pp. 207-218, doi: 10.1109/ICST.2017.26.

[58] Scikit-Learn. (2021, Apr. 29). [Online]. Available: https://github.com/scikit-learn/scikit-learn

[59] Synthetic Join Functions. (2021, Jul. 20). [Online]. Available:

https://github.com/Zane2453/Synthetic_Join_Function

54

Appendix A.

相關文件