Abstract
This paper presents a development methodology for Internet of Things (IoT)-based Systems (IoTS) that gathers ideas from several of the most outstanding software development paradigms nowadays, such as Model-Driven Engineering (MDE) and Test-Driven Development (TDD), in addition to incorporating the principles that govern agile software development methodologies, such as SCRUM and XP. The methodology presented here, called Test-Driven Development Methodology for IoTS (TDDM4IoTS), has been proposed after an exhaustive review of different software development methodologies, leading us to conclude that none of them are specially oriented towards the development of IoTS. The methodology mainly consists of eleven phases, whose order of application can be established by the team that will develop the project in question. In this paper, we suggest an order to follow, as well as existing software tools that could be used as support for obtaining the corresponding deliverables at each phase.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Dahl, O.-J., Hoare, C.A.R.: Chapter III: Hierarchical program structures. In: Structured Programming, pp. 175–220. Academic Press Ltd. (1972)
Ingalls, D.H.H.: The Smalltalk-76 programming system design and implementation. In: Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages - POPL 1978, pp. 9–16. ACM (1978)
Pashtan, A.: Object oriented operating systems: an emerging design methodology. In: Proceedings of the ACM 1982 Conference on ACM 1982, pp. 126–131. ACM (1982)
Schwabe, D., Rossi, G.: The object-oriented hypermedia design model. Commun. ACM 38(8), 45–46 (2002)
Ashton, K.: That ‘Internet of Things’ thing. RFID J. 22(7), 97–114 (2009)
Ray, P.P.: A survey on Internet of Things architectures. J. King Saud Univ. – Comput. Inf. Sci. 30(3), 291–319 (2018)
Leotta, M., et al.: An acceptance testing approach for Internet of Things systems. IET Softw. 12(5), 430–436 (2018)
Benedetto, J.I., González, L.A., Sanabria, P., Neyem, A., Navón, J.: Towards a practical framework for code offloading in the Internet of Things. Future Gener. Comput. Syst. 92(March), 424–437 (2019)
Cervantes-Solis, J.W., Baber, C., Khattab, A., Mitch, R.: Rule and theme discovery in human interactions with an Internet of Things. In: Proceedings of the 2015 British HCI Conference on - British HCI 2015, pp. 222–227. ACM, UK (2015)
Ciccozzi, F., Spalazzese, R.: MDE4IoT: supporting the Internet of Things with model-driven engineering. In: Badica, C., et al. (eds.) IDC 2016. SCI, vol. 678, pp. 67–76. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-48829-5_7
Khaleel, H., et al.: Heterogeneous applications, tools, and methodologies in the car manufacturing industry through an IoT approach. IEEE Syst. J. 11(3), 1412–1423 (2017)
Cai, H., Gu, Y., Vasilakos, A.V., Xu, B., Zhou, J.: Model-driven development patterns for mobile services in cloud of things. IEEE Trans. Cloud Comput. 6(3), 771–784 (2018)
Lekidis, A., Stachtiari, E., Katsaros, P., Bozga, M., Georgiadis, C.K.: Model-based design of IoT systems with the BIP component framework. J. Softw.: Pract. Exp. 48(6), 1167–1194 (2018)
Brambilla, M., Umuhoza, E., Acerbis, R.: Model-driven development of user interfaces for IoT systems via domain-specific components and patterns. J. Internet Serv. Appl. 8(1), 1–21 (2017)
Harbouche, A., Djedi, N., Erradi, M., Ben-Othman, J., Kobbane, A.: Model driven flexible design of a wireless body sensor network for health monitoring. Comput. Netw. 129-2, 548–571 (2017)
Usländer, T., Batz, T.: Agile service engineering in the industrial Internet of Things. Future Internet 10(10), 100 (2018)
Pico-Valencia, P., Holgado-Terriza, J.A., Paderewski, P.: A systematic method for building internet of agents applications based on the linked open data approach. Future Gener. Comput. Syst. 94, 250–271 (2019)
Sosa-Reyna, C.M., Tello-Leal, E., Lara-Alabazares, D.: Methodology for the model-driven development of service oriented IoT applications. J. Syst. Architect. 90, 15–22 (2018)
de Farias, C.M., et al.: COMFIT: a development environment for the Internet of Things. Future Gener. Comput. Syst. 75, 128–144 (2017)
Fortino, G., et al.: Towards multi-layer interoperability of heterogeneous IoT platforms: the INTER-IoT approach. In: Gravina, R., Palau, C.E., Manso, M., Liotta, A., Fortino, G. (eds.) Integration, Interconnection, and Interoperability of IoT Systems. IT, pp. 199–232. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-61300-0_10
Patel, P., Cassou, D.: Enabling high-level application development for the Internet of Things. J. Syst. Softw. 103, 62–84 (2015)
Martin, R.C.: Clean Coder Blog, TDD (2017). https://blog.cleancoder.com/. Accessed 11 Sept 2019
Rising, L., Janoff, N.S.: Scrum software development process for small teams. IEEE Softw. 17(4), 26–32 (2000)
Heeager, L.T., Nielsen, P.A.: A conceptual model of agile software development in a safety-critical context: a systematic literature review. Inf. Softw. Technol. 103, 22–39 (2018)
Abrahamsson, P., Salo, O., Ronkainen, J., Warsta, J.: Agile Software Development Methods: Review and Analysis. VTT Publications 478 (2002)
Holzinger, A., Errath, M., Searle, G., Thurnher, B., Slany, W.: From extreme programming and usability engineering to extreme usability in software engineering education (XP+UE→XU). In: 29th Annual International Computer Software and Applications Conference (COMPSAC 2005), vol. 2, pp. 169–172. IEEE, UK (2005)
Mowday, R.T.: Leader characteristics, self-confidence, and methods of upward influence in organizational decision situations. Acad. Manag. J. 22(4), 709–725 (1979)
Koo, K., Park, C.: Foundation of leadership in Asia: leader characteristics and leadership styles review and research agenda. Asia Pac. J. Manag. 35(3), 697–718 (2018)
Beck, K.: Manifesto for Agile Software Development (2001). http://agilemanifesto.org/. Accessed 11 May 2019
Hazzan, O., Dubinsky, Y.: The agile manifesto. In: Zdonik, S., et al. (eds.) Agile Anywhere. SCS, pp. 9–14. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-10157-6_3
Sachdeva, V., Chung, L.: Handling non-functional requirements for big data and IoT Projects in Scrum. In: 2017 7th International Conference on Cloud Computing, Data Science & Engineering - Confluence, pp. 216–221. IEEE (2017)
Tort, A., Olivé, A., Sancho, M.R.: An approach to test-driven development of conceptual schemas. Data Knowl. Eng. 70(12), 1088–1111 (2011)
Janzen, D., Saiedian, H.: Test-driven development: concepts, taxonomy, and future direction. Computer 38(9), 43–50 (2005)
Martin, R.C.: Clean Code, A Handbook of Agile Software Craftsmanship, 1st edn. Pearson Education Inc., Boston (2011)
Madeyski, L., Kawalerowicz, M.: Continuous test-driven development: a preliminary empirical evaluation using agile experimentation in industrial settings. In: Kosiuczenko, P., Madeyski, L. (eds.) Towards a Synergistic Combination of Research and Practice in Software Engineering. SCI, vol. 733, pp. 105–118. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-65208-5_8
Braithwaite, K., Joyce, T.: XP expanded: distributed extreme programming. In: Baumeister, H., Marchesi, M., Holcombe, M. (eds.) XP 2005. LNCS, vol. 3556, pp. 180–188. Springer, Heidelberg (2005). https://doi.org/10.1007/11499053_21
Sosa-Reyna, C.M., Tello-Leal, E., Lara-Alabazares, D.: An approach based on model-driven development for IoT applications. In: Proceedings of the 2018 IEEE International Congress on IoT, ICIOT, 2018 IEEE World Congress on Services, pp. 134–139. IEEE, San Francisco, EEUU (2018)
Rasch, R.H., Tosi, H.L.: Factors affecting software developers’ performance: an integrated approach. MIS Q. 16(3), 395–413 (1992)
Nyznar, M., Pałka, D.: Generating source code templates on the basis of unit tests. In: Grzech, A., Świątek, J., Wilimowska, Z., Borzemski, L. (eds.) Information Systems Architecture and Technology: Proceedings of 37th International Conference on Information Systems Architecture and Technology – ISAT 2016 – Part II. AISC, vol. 522, pp. 213–223. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-46586-9_17
Chen, Z., Liu, Z., Ravn, A.P., Stolz, V., Zhan, N.: Refinement and verification in component-based model-driven design. Sci. Comput. Program. 74(4), 168–196 (2009)
Monteiro, K., Rocha, E., Silva, E., Santos, G.L., Santos, W., Endo, P.T.: Developing an e-health system based on IoT, fog and cloud computing. In: 2018 IEEE/ACM International Conference on Utility and Cloud Computing Companion (UCC Companion), pp. 17–18. IEEE, Zurich (2018)
Guerrero-Ulloa, G., Rodríguez-Domínguez, C., Hornos, M.J.: IoT-based system to help care for dependent elderly. In: Botto-Tobar, M., Pizarro, G., Zúñiga-Prieto, M., D’Armas, M., Zúñiga Sánchez, M. (eds.) CITT 2018. CCIS, vol. 895, pp. 41–55. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-05532-5_4
Latorre, R.: Effects of developer experience on learning and applying unit test-driven development. IEEE Trans. Softw. Eng. 40(4), 381–395 (2014)
Shihab, E., Jiang, Z.M., Adams, B., Hassan, A.E., Bowerman, R.: Prioritizing the creation of unit tests in legacy software systems. Softw.: Pract. Exp. 41(10), 1027–1048 (2011)
Pressman, R.S., Maxim, B.: Software Engineering: A Practitioner’s Approach, 8th edn. McGraw-Hill Education, Boston (2015)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Guerrero-Ulloa, G., Hornos, M.J., Rodríguez-Domínguez, C. (2020). TDDM4IoTS: A Test-Driven Development Methodology for Internet of Things (IoT)-Based Systems. In: Botto-Tobar, M., Zambrano Vizuete, M., Torres-Carrión, P., Montes León, S., Pizarro Vásquez, G., Durakovic, B. (eds) Applied Technologies. ICAT 2019. Communications in Computer and Information Science, vol 1193. Springer, Cham. https://doi.org/10.1007/978-3-030-42517-3_4
Download citation
DOI: https://doi.org/10.1007/978-3-030-42517-3_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-42516-6
Online ISBN: 978-3-030-42517-3
eBook Packages: Computer ScienceComputer Science (R0)