Learning the lessons of architecture patterns
Neil B. Harrison, Alistair Cockburn
Abstract
Neil B. Harrison, Alistair Cockburn
Abstract
Architecture patterns are established approaches to software architecture. They describe a system structure that meets the needs of an application to be designed in a given domain. Architecture patterns are commonly used in industry, and therefore, software engineering students should be familiar with architecture patterns and how to use them. In our second semester software engineering course, we taught architecture patterns by giving students experience in using them. We gave the students a programming assignment, and required them to implement it four different times, following four different architecture patterns. The first pattern was procedural design, the second was object-oriented design, the third was the Pipes and Filters pattern, and the fourth was the Blackboard pattern. The students were required to write a short essay about their experience using each of the patterns. We intended to teach them three things through this exercise. First, they should learn what software architecture is. Second, they should what an architecture pattern is. Third, they should learn a few architecture patterns, and that different patterns have different strengths and applications. The results were that the students did gain a deeper understanding of software architecture. They learned about architecture patterns, and through painful experience, learned the value of selecting an appropriate architecture for the task at hand. We find this to be a useful way to teach the basics of architecture patterns. A similar exercise might be used more extensively in a full course on software architecture. In this paper, we describe architecture patterns, and the four used in the exercise. We describe the exercise and the results, and what the students learned.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
Architecture patterns are established approaches to software architecture. They describe a system structure that meets the needs of an application to be designed in a given domain. Architecture patterns are commonly used in industry, and therefore, software engineering students should be familiar with architecture patterns and how to use them. In our second semester software engineering course, we taught architecture patterns by giving students experience in using them. We gave the students a programming assignment, and required them to implement it four different times, following four different architecture patterns. The first pattern was procedural design, the second was object-oriented design, the third was the Pipes and Filters pattern, and the fourth was the Blackboard pattern. The students were required to write a short essay about their experience using each of the patterns. We intended to teach them three things through this exercise. First, they should learn what software architecture is. Second, they should what an architecture pattern is. Third, they should learn a few architecture patterns, and that different patterns have different strengths and applications. The results were that the students did gain a deeper understanding of software architecture. They learned about architecture patterns, and through painful experience, learned the value of selecting an appropriate architecture for the task at hand. We find this to be a useful way to teach the basics of architecture patterns. A similar exercise might be used more extensively in a full course on software architecture. In this paper, we describe architecture patterns, and the four used in the exercise. We describe the exercise and the results, and what the students learned.
Key concepts: Computer science, Architecture, Reference architecture, Software architecture description, Space-based architecture, Applications architecture, Software architecture, Database-centric architecture