On the Continuous Delivery in IoT Systems
Resumo
The development of IoT systems brings the adequacy of software engineering to current paradigms, such as IoT, industry 4.0, smart cities and environments, and wearable devices. IoT systems require the integration of different technologies such as sensors, actuators, edge devices, cloud computing, big data, artificial intelligence, and IT operations. The successful delivery of products depends directly on the continuous cooperation of professionals with different skills. However, we noticed a specific resistance in carrying out continuous and automated software deliveries to hardware devices by professionals. This research investigates the practices and technologies for the continuous software delivery pipeline on hardware devices that make up an IoT system.
Referências
Barros, D., Horita, F., Wiese, I., and Silva, K. (2021). A Mining Software Repository Extended Cookbook: Lessons Learned from a Literature Review, page 1–10. Association for Computing Machinery, New York, NY, USA.
Beyer, B., Jones, C., Petoff, J., and Murphy, N. R. (2016). Site reliability engineering: How Google runs production systems. O’Reilly Media, Inc.
Blaškovic, K., Candrlic, S., and Jakupovic, A. (2021). Systematic review of methodologies for the development of embedded systems. International Journal of Advanced Computer Science and Applications, 12(1).
Bourque, P., Fairley, R. E., and Society, I. C. (2014). Guide to the Software Engineering Body of Knowledge (SWEBOK). IEEE Computer Society Press, Washington, DC, USA, 3rd edition.
Chen, L. (2015a). Continuous delivery: Huge benefits, but challenges too. IEEE Software, 32(2):50–54.
Chen, L. (2015b). Continuous delivery: Huge benefits, but challenges too. IEEE Software, 32(2):50–54.Gold, N. E. and Krinke, J. (2022). Ethics in the mining of software repositories. Empirical Software Engineering, 27(1).
Greene, B. (2004). Agile methods applied to embedded firmware development. In Agile Development Conference, pages 71–77.
Kitchenham, B. and Charters, S. M. (2007). Guidelines for performing systematic literature reviews in software engineering.
Lindgren, E. and Münch, J. (2016). Raising the odds of success: the current state of experimentation in product development. Information and Software Technology, 77:80–91.
Luz, W. P., Pinto, G., and Bonifácio, R. (2019). Adopting devops in the real world: A theory, a model, and a case study. Journal of Systems and Software, 157:110384.
Manhart, P. and Schneider, K. (2004). Breaking the ice for agile development of embedded software: an industry experience report. In Proceedings. 26th International Conference on Software Engineering, pages 378–386.
Mattos, D. I., Bosch, J., and Olsson, H. H. (2018). Challenges and strategies for undertaking continuous experimentation to embedded systems: Industry and research perspectives. In Agile Processes in Software Engineering and Extreme Programming, pages 277–292, Cham. Springer International Publishing.
Motta, R. C., de Oliveira, K. M., and Travassos, G. H. (2018). On challenges in engineering iot software systems. In Proceedings of the XXXII Brazilian Symposium on Software Engineering (SBES), page 42–51, New York, NY, USA. Association for Computing Machinery.
Pereira, I. M., Carneiro, T., and Figueiredo, E. (2021a). A systematic review on the use of devops in internet of things software systems. In Proceedings of the 36th Annual ACM Symposium on Applied Computing (ACM/SAC), page 1569–1571. Association for Computing Machinery.
Pereira, I. M., de Senna Carneiro, T. G., and Figueiredo, E. (2021b). Investigating continuous delivery on iot systems. In XX Brazilian Symposium on Software Quality (SBQS). Association for Computing Machinery.
Pereira, I. M., de Senna Carneiro, T. G., and Figueiredo, E. (2021c). Main differences of devops on iot systems. In Brazilian Symposium on Software Engineering (SBES), page 315–319. Association for Computing Machinery.
Pereira, I. M., de Senna Carneiro, T. G., and Figueiredo, E. (2021d). Understanding the context of iot software systems in devops. In 3th International Workshop on Software Engineering Research Practices for the Internet of Things (SERP4IoT).
Rong, G., Liu, T., Xie, M., Chen, J., Ma, C., and Shao, D. (2014). Processes for embedded systems development: Preliminary results from a systematic review. In Proceedings of the 2014 International Conference on Software and System Process (ICSSP), page 94–98, New York, NY, USA. Association for Computing Machinery.
Ronkainen, J. and Abrahamsson, P. (2003). Software development under stringent hardware constraints: Do agile methods have a chance? In Extreme Programming and Agile Processes in Software Engineering, pages 73–79, Berlin, Heidelberg. Springer Berlin Heidelberg.
Salo, O. and Abrahamsson, P. (2008). Agile methods in european embedded software development organisations: A survey on the actual use and usefulness of extreme programming and scrum. Software, IET, 2:58 – 64.
Shen, M., Yang, W., Rong, G., and Shao, D. (2012). Applying agile methods to embedded software development: A systematic review. In 2012 Second International Workshop on Software Engineering for Embedded Systems (SEES), pages 30–36.
Sommerville, I. (2015). Software Engineering. Pearson, 10th edition.
Srinivasan, J., Dobrin, R., and Lundqvist, K. (2009). State of the art in using agile methods for embedded systems development. In Industrial Experience in Embedded Systems Design (IEESD), pages 1195–1200.
Vidoni, M. (2022). A systematic process for mining software repositories: Results from a systematic literature review. Information and Software Technology, 144:106791.
Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., and Wesslén, A. (2012). Experimentation in Software Engineering, volume Ed. 1a. Springer Berlin Heidelberg.
Xie, M., Shen, M., Rong, G., and Shao, D. (2012). Empirical studies of embedded software development using agile methods: A systematic review. In Proceedings of the 2nd International Workshop on Evidential Assessment of Software Technologies (EAST), page 21–26, New York, NY, USA. Association for Computing Machinery.