ABSTRACT
Courses on software architecture and software engineering need to explain the role of non-functional properties in software design, and they often use student projects to highlight their interrelations. Despite its critical importance in software development, the property of traceability has so far been mostly neglected.
This paper examines the role of traceability for teaching software architecture and describes the objectives and structure of two consecutive courses given by the author at the University of Tübingen. The courses build on architectural patterns as blueprints for achieving particular non-functional properties. The vehicle for improving traceability is a sequence of small-scale projects, each of which includes the phases of requirements analysis, design, and implementation. This iterative approach allows students to learn from their experiences and to integrate the feedback on their solutions into the next project.
- Abbott, R., and Sun, C. Abstraction abstracted. In ROA '08: Proceedings of the 2nd international workshop on The role of abstraction in software engineering (New York, NY, USA, 2008), ACM, pp. 23--30. Google ScholarDigital Library
- Alrifai, R. A project approach for teaching software architecture and web services in a software engineering course. J. Comput. Small Coll. 23, 4 (2008), 237--240. Google ScholarDigital Library
- Andrews, G. R. Concurrent Programming: Principles and Practice. Addison-Wesley, 1991. Google ScholarDigital Library
- Antoniol, G., Caprile, B., Potrich, A., and Tonella, P. Design-code traceability for object-oriented systems. Ann. Softw. Eng. 9, 1--4 (2000), 35--58. Google ScholarDigital Library
- Bass, Clements, and Kazman. Software Architecture in Practice, 2nd ed. Addison-Wesley, 2003. Google ScholarDigital Library
- Bennedsen, J., and Caspersen, M. E. Programming in context: a model-first approach to CS1. In SIGCSE '04: Proceedings of the 35th SIGCSE technical symposium on Computer science education (New York, NY, USA, 2004), ACM, pp. 477--481. Google ScholarDigital Library
- Bennedsen, J., and Caspersen, M. E. Teaching object-oriented programming -- towards teaching a systematic programming process. In Eighth Workshop on Pedagogies and Tools for the Teaching and Learning of Object Oriented Concepts (Oslo, Norway, June 14, 2004). Affiliated with 18th European Conference on Object-Oriented Programming, ECOOP 2004 (June 2004).Google Scholar
- Bergin, J. Fourteen pedagogical patterns. http://pclc.pace.edu/~bergin/PedPat1.3.html.Google Scholar
- Bucci, P., Long, T. J., and Weide, B. W. Teaching software architecture principles in CS1/CS2. In ISAW '98: Proceedings of the third international workshop on Software architecture (New York, NY, USA, 1998), ACM, pp. 9--12. Google ScholarDigital Library
- Budd, T. A. An Introduction to Object-Oriented Programming, 3rd ed. Addison-Wesley, 2002. Google ScholarDigital Library
- Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M. Pattern-oriented Software Architecture: A System of Patterns, vol. 1. Wiley & Sons, 1996. Google ScholarDigital Library
- Doc, A. A. Request processing in apache 2.0. http://httpd.apache.org/docs/2.0/developer/request.html.Google Scholar
- The Eclipse workbench. http://www.eclipse.org.Google Scholar
- Ferreira, G. M., Nascimento, M. Z., Assis, K. D. R., and Ramos, R. P. Teaching object oriented programming computer languages: learning based on projects. In ICSEA '07: Proceedings of the International Conference on Software Engineering Advances (Washington, DC, USA, 2007), IEEE Computer Society, p. 81. Google ScholarDigital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns -- Elements of Reusable Object-Oriented Software. Professional Computing Series. Addison-Wesley, 1995. Google ScholarDigital Library
- Garlan, D., and Shaw, M. An introduction to software architecture. Tech. Rep. CMU-CS-94-166, School of Computer Science, Carnegie Mellon University, 1994. Google ScholarDigital Library
- Jarzabek, S., and Eng, P.-K. Teaching an advanced design, team-oriented software project course. In CSEET '05: Proceedings of the 18th Conference on Software Engineering Education & Training (Washington, DC, USA, 2005), IEEE Computer Society, pp. 223--230. Google ScholarDigital Library
- Lago, P., and Van Vliet, H. Teaching a course on software architecture. In CSEET '05: Proceedings of the 18th Conference on Software Engineering Education & Training (Washington, DC, USA, 2005), IEEE Computer Society, pp. 35--42. Google ScholarDigital Library
- Lea, D. Concurrent Programming in Java: Design Principles and Patterns, 2nd ed. Addison-Wesley, 1999. Google ScholarDigital Library
- Männistö, T., Savolainen, J., and Myllärniemi, V. Teaching software architecture design. In WICSA '08: Proceedings of the Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008) (Washington, DC, USA, 2008), IEEE Computer Society, pp. 117--124. Google ScholarDigital Library
- Manson, J., Pugh, W., and Adve, S. V. The java memory model. In POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages (New York, NY, USA, 2005), ACM Press, pp. 378--391. Google ScholarDigital Library
- Mitra, S., Rao, T. M., and Bullinger, T. A. Teaching software engineering using a traceability-based development methodology. J. Comput. Small Coll. 20, 5 (2005), 249--259. Google ScholarDigital Library
- Murta, L. G., Hoek, A., and Werner, C. M. Continuous and automated evolution of architecture-to-implementation traceability links. Automated Software Engg. 15, 1 (2008), 75--107. Google ScholarDigital Library
- Noonan, R. E., and Hott, J. R. A course in software development. SIGCSE Bull. 39, 1 (2007), 135--139. Google ScholarDigital Library
- Schmidt, D., Stal, M., Rohnert, H., and Buschmann, F. Pattern-oriented Software Architecture: Patterns for concurrent and networked objects, vol. 2. Wiley & Sons, 2000. Google ScholarDigital Library
- Schmolitzky, A. Teaching inheritance concepts with Java. In PPPJ '06: Proceedings of the 4th international symposium on principles and practice of programming in Java (New York, NY, USA, 2006), ACM, pp. 203--207. Google ScholarDigital Library
- Stevens, W. R. Unix Network Programming. Prentice-Hall, 1990. Google ScholarDigital Library
- Sun. Java2 Standard Edition API. http://java.sun.com/j2se/1.5.0/docs/api/, 2004.Google Scholar
- Van Vliet, H. Reflections on software engineering education. IEEE Softw. 23, 3 (2006), 55--61. Google ScholarDigital Library
- Wirfs-Brock, R., and McKean, A. Object Design: Roles, Responsibilities, Collaborations. Pearson Education, 2003. Google ScholarDigital Library
Index Terms
- Patterns and traceability in teaching software architecture
Recommendations
A Collaborative Approach to Teaching Software Architecture
SIGCSE '17: Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science EducationTeaching software architecture is hard. The topic is abstract and is best understood by experiencing it, which requires proper scale to fully grasp its complexity. Furthermore, students need to practice both technical and social skills to become good ...
What makes teaching software architecture difficult?
ICSE '16: Proceedings of the 38th International Conference on Software Engineering CompanionThe software architecture is usually the first design artifact that addresses quality issues (e.g., performance, security). Also, the architecture is reference point for other development activities, e.g., coding and maintenance. Based on our experience ...
Dependencies, traceability and consistency in software architecture: towards a view-based perspective
ECSA '11: Proceedings of the 5th European Conference on Software Architecture: Companion VolumeManaging dependencies between software development artifacts helps achieve traceability and consistency in software-intensive systems. Traceability supports the alignment between different stakeholder concerns, development artifacts, and various ...
Comments