NEWS AT SEI
This article was originally published in News at SEI on: August 1, 2008
Competent development of software architecture is such a major factor in creating an effective system—it seems it would naturally play a major role in a university’s software engineering curriculum. But the principles underlying sound architecture, well known to many researchers and practitioners, aren’t always standard fare in college classrooms. Members of the SEI Architecture-Centric Engineering team, who have been developing best practices in architecture for 14 years, promote their inclusion in college coursework by offering an annual workshop for educators. This year, conductors of the fifth Software Architecture Workshop for Educators noted how its influence had deepened and expanded. “What was striking about this year’s workshop,” remarked Larry Jones, a senior member of the SEI technical staff, “was the reported degree to which architectural topics were now woven into graduate and undergraduate programs in computer science, software engineering, information systems, and information technology.”
The workshop was held August 18-20, 2008 at the SEI in Pittsburgh. The event was free of charge and attendance was limited, but it attracted participants from all over the world. This year 12 college faculty members attended, including representatives from Turkey, Thailand, and Brazil. Half the group had attended at least one of the previous workshops.
The three-day event introduces the concepts behind effective software architecture and how to incorporate these concepts into the computer science and software engineering curriculum. These principles promote architecture that ensures certain desirable system qualities, called quality attributes, such as performance, modifiability, and usability.
Over the years the event has clearly met an expanding demand, with the increased recognition that both graduate and undergraduate engineering and information science students must be educated in architecture. Software architecture represents the earliest design decisions that are both the most difficult to get right and the most difficult to change downstream. System qualities such as performance, security, interoperability, usability, and modifiability are largely supported or precluded once the software architecture has been established. The architecture also influences how engineers communicate design decisions and how managers structure work breakdowns, and is important for creating software product lines. So a demand exists from computer science and software engineering instructors who want to understand the importance of software architecture in the creation of software systems and wish to learn how to incorporate software architecture concepts into their curricula. The Software Engineering Institute has developed a collection of architectural methods and practices for designing software-intensive systems that meet intended business and quality goals.
At the first workshop in 2004, Jones recalls, participants were asking “What is software architecture?” “How should it be built?” along with many other elementary questions.
“This year we saw attendees answering, in depth and detail, the questions raised at that first event. There was a dramatic difference in the degree of familiarity and sophistication regarding the significance of architecture and designing it properly.”
During the first two days, the workshop offers a course from the series designed by SEI researchers that promotes architecture-centric practices. Such practices shape system development according to the architectural decisions that support the system’s quality attribute goals. The workshop’s final day involves brainstorming and in-depth discussion about integrating best architecture practices into the classrooms of the attending instructors.
The workshop originated as part of the SEI strategy for transitioning SEI architecture research into the community via graduate and undergraduate education. About 50 instructors have attended from 40 institutions over five years. Many of these are repeat attendees.
That first workshop offered an introductory course, Software Architecture Principles and Practices, which presents the basic concepts of software architecture, including its relationship to system qualities, along with architecture definition, evaluation, and documentation, and architecture as a reusable asset. This course was also offered during the next two workshops, to meet the pronounced demand for basic knowledge.
As attendees gained familiarity with the basic architecture-centric principles and relayed them to their students, they expressed the desire for more in-depth course content. In 2007 a more advanced course was offered, Documenting Software Architecture, which prescribes documentation practices that meet the needs of the entire architecture stakeholder community. The third day’s brainstorming session focused on the inclusion of these architecture documentation concepts and methods in academic courses.
This year’s workshop offered another advanced course, Software Architecture Design and Analysis, which provides in-depth coverage of the concepts needed to make effective design decisions and to successfully analyze a software architecture relative to desired system qualities. The third day’s agenda featured the demonstration of two architecture development tools developed at the SEI. The first was ArchE (ArchitectureExpert), a design assistant tool that helps architects explore architectural designs driven by quality attributes and that is ideally suited for classroom use. The second demonstration presented the Predictable Assembly from Certifiable Code (PACC) Starter Kit (PSK), an integrated set of software development and analysis tools that demonstrates how existing technologies can be integrated to deliver objective confidence in predictions of system behavior. As in previous years, the third day included sharing of ideas on how attendees might incorporate course topics and other architecture-centric principles into their curricula.
Jones notes the third-day discussions have became increasingly sophisticated since the workshop began, involving more complex architecture issues as well as the challenges of escalating integration of SEI material into participants’ classrooms. “Whereas the early workshops generally centered on the question ‘How can we do this?’ the 2008 discussions centered on ‘Here’s how we do this in my program.’”
In 2008, all participants reported the incorporation of architecture-centric concepts into their curricula. Repeat attendees shared thoughts on how previous workshop topics had been applied in their programs. Cui Zhang, Professor at California State University Sacramento told how she had modified her course to incorporate material from the Documenting Software Architecture course and now needed to think about how to integrate the material from the Software Architecture Design and Analysis course. Bhabani Misra stated that six courses in the Graduate Programs in Software at the University of St. Thomas, where he is associate professor and Program Director, have been impacted by the software architecture workshop. He has recently incorporated software documentation principles into his teaching. Martin Barrett has seen increased inclusion of architecture concepts in software design courses at East Tennessee State University, where he is assistant chair of the Computer and Information Science Department. Ideas on architectural patterns, styles, and quality attribute-driven design have been integrated. Architecture is also addressed in a Web Services course and Distributed Systems course.
The 2009 Architecture Workshop for Educators will offer a two-day session of the Software Product Lines course, which builds on a foundation of software architecture concepts. Judging by the workshop’s past success, principles that promote good architecture will be flowing into classrooms across the world and shaping the practices of future practitioners for a long time to come.