Alejandro Teruel (Dpt. of Computer and Information Technology)
teruel@usb.ve
http://www.ldc.usb.ve/~teruel
Rocío Meneses (Dpt. of Behavioural Sciences and Technology)
rmeneses@usb.ve
Belinda Bozo (Dpt. of Behavioural Sciences and Tecnology)
coraje@cantv.net
Universidad Simón Bolívar, Caracas, Venezuela
http://www.usb.ve
We base our software engineering units on Craig Larman's popular UML-based methodology, RPM, but also provide discussions on the need to choose the best models for a given domain and switch the order in which they are carried out. As an example of this kind of thinking, we introduce OMT 98 , which provides a sensible alternative to RPM for database intensive applications.
Incremental maintenance sounds redundant. The point is that iterative incremental methodologies will increasingly have to come to grips with traditional maintenance issues. In order to introduce our students to these issues, they have to develop increments for a software which is now well into its second year of development by a third cohort of students.
The most challenging strand, at least for the teachers, is building team skills. By enlisting the help of the Department of Behavioural Science and Technology, we are putting to bear multi-disciplinary expertise on topics such as team development stages, task and group maintenance functions, leadership styles, roles, effective management of team meetings, risk management, task planning and tracking, conflict management and effective performance feedback.
The talk will touch on the first two strands, focus on the third strand and introduce some of the preliminary results of the course, comparing it to previous software engineering courses, which covered the strand in less depth.
A preliminary version of this paper was presented at the 2nd Annual
Watts Humphrey Lecture Series, Software Engineering in the 21st Century,
Atlanta (November, 2000).
Industry reports admit that, in spite of dwindling university resources, the technical level of USB graduates is still extremely high and up to date and their ability to work under pressure second to none; nevetheless they also increasingly complain that, in general, the graduates:
1999 was a busy year for teaching staff, as USB increasingly transitioned its courses --including software engineering-- towards object-oriented technology. The software engineering courses also began to take a hard look at project management issues, and it became increasingly obvious that student teams were encountering significant team-related difficulties which they seemed unable to overcome even with instructor intervention. Many of the industry complaints clearly showed up during course projects. By the end of the year, an emerging consensus pinpointed lack of team skills as the most critical barrier to future improvement. It was also obvious that none of the departments traditionally associated with the Computer Science programme possessed the knowledge, training, skills or experience to teach effective teamwork properly.
In the first semester of 2000, the Department of Behavioural Science
and Technology (DBST) presented a twenty hour training seminar on creating
and maintaining highly effective teams for 15 members of the Department
of Computer and Information Technology (DCIT) . As a result of the success
of this seminar, the DBST agreed to strengthen its collaboration
by co-teaching three optional software development courses: one used to
prepare USB student teams for the ACM Programming Contest, one to design
virtual classroom software and the first term of the optional two term
Object-Oriented Software Engineering course. In this presentation we will
focus on this last course.
The introductory Software Engineering course is closely based on Craig Larman´s Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design (Prentice-Hall, 1998). The book introduces an incremental iterative development approach, based on planning and elaboration, analysis and design phases and use, conceptual, and object-interaction models represented with UML use case, class, system sequence and collaboration diagrams plus event reaction contracts. After attempting different team sizes, we recommend that for this first team-based course, students work in teams of 4-5 members on 1-2 KLOC projects. The course tends to focus more on the modeling techniques associated with object-oriented software engineering, ignores maintenance issues altogether and introduces some basic project management activities such as planning, control and follow-up, group discussions, task distribution, risk management and scheduling. Students are required to adopt team roles such as project leader, webmaster, technical editor and meetings coordinator. Currently, the course instructors typically provide a few tips on these activities and leave the students to learn by carrying out the required activities; next year we plan to provide a more systematic introduction, possibly incorporating some PSP and TSP recommendations.
This year, the optional two term course on OOSE has tackled the three strands we have identified. In the first term it delves more deeply into object-oriented design issues, grapples with the maintenance issues that arise when they are forced to develop increments for a pre-existing 8KLOC software which is now well into its second year of development by a third cohort of students, and undergo multidisciplinary training in effective team building and maintenance skills by DCIT and DBST staff.
During the term approximately twenty six out of the seventy contact hours planned for the course, were devoted to learning about effective teamwork and project management. The DBST staff conducted nine two hour sessions on effective teamwork, while DCIT staff devoted an additional eight contact hours to topics closely related to teamwork or project management. The thirty four students who took the course split into three 10-12 member teams starting from the second week of the course. The teams remain stable for the remainder of the two terms and work together in all team sessions.
A typical teamwork session will concentrate on one topic such as effective team communication. The teams will generally carry out two supervised team exercises in a session; the first exercise tends to be more in the nature of a game, thus allowing a more relaxed learning environment and creating more opportunities for team bonding, while the second exercise generally applies and deepens their newly gained knowledge to a real problem the team has to face and solve during software development. In both exercises, teams receive feedback on their experience, both from instructors and, occasionally, from members of the team chosen as observers for the duration of the exercise. This allows the team members to develop the ability to take a step back and study team processes.
DBST staff conducted sessions on the following topics: Introduction to group and team processes, building and maintaining hightly effective teams, leadership styles, team problem solving, team planning, team communication with particular emphasis on how to provide effective feedback between members, stress management and differences and conflict management. The ninth session on team decision making was conducted by a DCIT member supervised by DBST staff.
DCIT staff further covered topics such as the use of time record logs,
team roles (project leader, architecture and design coordinator, docmaster
and configuration manager; all four roles also have an understudy), conducting
meetings (use of agenda, time management, proper closure), risk management,
function point and COCOMO based estimations, team and peer assessments.