Abstract
Microservice architectures and the DevOps development practices have become essential as companies strive to provide reliable and robust software systems supporting millions of users at the same time as new features are released and defects corrected and deployed in hours rather in months or years. It is therefore relevant to teach the microservice architectural style as well as the DevOps practices to our students. A central tenet of DevOps is fast feedback which pose a problem when it comes to providing formative feedback on exercises handed in by students. In this paper, we present the architectural design challenges in assessing student solutions embodying microservice systems as well as our analysis and solutions to them. We present our implementation, Crunch, and present student and instructor evaluation of having this support in a concrete course.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
- 2.
- 3.
In Denmark, grades A–E are mapped to a numerical scale, A = 12, B = 10; C = 7, D = 4, and E = 2).
References
Anderson, Charles: Docker. IEEE Software, pp. 102–105 (2015)
Balalaie, A., Heydarnoori, A., Jamshidi, P.: Microservices architecture enables DevOps: migration to a cloud-native architecture. IEEE Softw. 33(3), 42–52 (2016)
Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice, 2nd edn. Addison-Wesley, Boston (2012)
Biggs, J., Tang, C.: Teaching for Quality Learning at University. Open University Press, McGraw-Hill, New York City (2007)
Buschmann, F., Henney, K., Schmidt, D.C.: Pattern Oriented Software, vol. 4. Wiley, Hoboken (2007)
Caspersen, M.E., Bennedsen, J.: Instructional design of a programming course: a learning theoretic approach. In: Proceedings of the Third International Workshop on Computing Education Research, ICER 2007, pp. 111–122. ACM, New York (2007)
Christensen, H.B.: A story-telling approach for a software engineering course design. In: Proceedings of the 14th Annual ACM SIGCSE Conference on Innovation and Technology in Computer Science Education, ITiCSE 2009, pp. 60–64. ACM, New York (2009)
Christensen, H.B.: Cloud Computing and Architecture, E16 Website. (2016). http://users-cs.au.dk/baerbak/c/cloud-e16/menu1.html
Christensen, H.B.: Teaching DevOps and cloud computing using a cognitive apprenticeship and story-telling approach. In: Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE 2016, pp. 174–179. ACM, New York (2016)
Daly, C., Horgan, J.M.: An automated learning system for Java programming. IEEE Trans. Educ. 47(1), 10–17 (2004)
Docker. Docker web site (2017). www.docker.com
Fowler, M.: Window driver (2004). https://www.martinfowler.com/eaaDev/WindowDriver.html
Humble, J., Farley, D.: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley, Boston (2010)
Insa, D., Silva, J.: Semi-automatic assessment of unrestrained Java code: a library, a DSL, and a workbench to assess exams and exercises. In: Proceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE 2015, pp. 39–44. ACM, New York (2015)
Jerz, D.G.: Somewhere nearby is Colossal cave: examining will crowther’s original "Adventure" in Code and in Kentucky. Digit. Humanities Q. 1(2), 2 (2007)
Keuning, H., Jeuring, J., Heeren, B.: Towards a systematic review of automated feedback generation for programming exercises. In: Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education, ITiCSE 2016, pp. 41–46. ACM, New York (2016)
Keuning, H., Jeuring, J., Heeren, B.: Towards a systematic review of automated feedback generation for programming exercises - extended version. Technical report, Department of Information and Computing Sciences, Utrecht, The Netherlands, March 2016
Le, N.-T., Pinkwart, N.: Towards a classification for programming exercises. In: Workshop on AI-supported Education for Computer Science, pp. 51–60 (2014)
Lewis, J., Fowler, M.: Microservices (2014). https://www.martinfowler.com/articles/microservices.html
Meszaros, G.: xUnit Test Patterns: Refactoring Test Code. Addison-Wesley, Boston (2007)
Nygard, M.T.: Release It! Design and Deploy Production-Ready Software, 2nd edn. Pragmatic Bookshelf (2018). https://pragprog.com/
Sykes, E.R.: Qualitative evaluation of the Java intelligent tutoring system. J. Syst. Cybern. Inform. 3(5), 49–60 (2006)
Truong, N., Roe, P., Bancroft, P.: Static analysis of students’ Java programs. In: Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30, ACE 2004, pp. 317–325. Australian Computer Society, Inc., Darlinghurst (2004)
Wikipedia. DevOps (2016). www.wikipedia.org. Accessed Jan 2016
Acknowledgements
Daniel Damgaard contributed to the architectural analysis.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this paper
Cite this paper
Christensen, H.B. (2018). Crunch: Automated Assessment of Microservice Architecture Assignments with Formative Feedback. In: Cuesta, C., Garlan, D., PĂ©rez, J. (eds) Software Architecture. ECSA 2018. Lecture Notes in Computer Science(), vol 11048. Springer, Cham. https://doi.org/10.1007/978-3-030-00761-4_12
Download citation
DOI: https://doi.org/10.1007/978-3-030-00761-4_12
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-00760-7
Online ISBN: 978-3-030-00761-4
eBook Packages: Computer ScienceComputer Science (R0)