June 24, 2007
June 24, 2007
June 27, 2007
Software Engineering Constituent Committee
12.177.1 - 12.177.13
Adapting Cooperative Learning to Teach Software Architecture in Multiple-Role Teams Abstract
The software architecture process depends on successful teamwork involving cooperation among members of the design team, cooperation between the design team and the clients, and cooperation between the design team and the development organization. Cooperative learning is a pedagogy that directly supports this type of teamwork. Through cooperative learning students realize their interdependence, practice face-to-face communication, recognize their individual accountability to the success of the group, practice interpersonal and small-group skills, and engage in frequent reflective processing of their achievements.
We have adapted cooperative learning to teach software architecture in two undergraduate software engineering programs. In traditional cooperative learning, students work on one team for an extended period. This helps foster acceptance of individual differences and promotes successful teamwork. In our courses we kept students together on the same teams, but we wanted students to play multiple roles: clients, architects, and developers. So, we let the teams change roles during the course. That is, for each project one team played the role of architects, while other teams played the roles of clients and developers. Student teams rotated roles on different projects throughout the term. A further variation in cooperative learning is that, to succeed on each project, three different teams also had to cooperate.
These innovations kept the benefits of cooperative learning while also exposing the students to 3 different perspectives as they progressed through their projects. This is especially important for software architecture, where the 3 perspectives must always be kept in mind. An additional benefit was that each student participated in 3 different projects, thus experiencing greater diversity of architectural challenges than would have otherwise been possible.
Some changes to the traditional classroom setting are necessary in order to practice this new method. Students need to work in small teams, 3 or 4 students at most, during regularly- scheduled classroom hours. The roles of individual teams must be scheduled so that sufficient time is available for each team to play each role. Fortunately, software architecture lends itself to short periods of intense team activity, with reporting and peer review of results later. We believe that this active learning style is an effective approach for most subjects, but especially for software architecture.
The methods described here are useful to software engineering education. There is a need for software engineering students to value the position of software architects, who are their technical leaders. Some will go on to be software architects themselves. A key part of the architect role is understanding how the needs of customers, architects and developers differ, so that architects can perform adeptly in the middle role in a set of relationships involving all of them.
Chenoweth, S., & Ardis, M., & Dugas, C. (2007, June), Adapting Cooperative Learning To Teach Software Architecture In Multiple Role Teams Paper presented at 2007 Annual Conference & Exposition, Honolulu, Hawaii. 10.18260/1-2--1828
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2007 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015