Implementing a single classwide project in software engineering using Ada tasking for synchronization and communcation

Most software engineering classes are project-oriented and an increasing number are using Ada as the implementation language. Reports on Ada usage usually mention packages, generics, and exception handling, but few, if any, mention tasking. This paper describes the evolution of a software engineering course where a single project was implemented by the entire class with each group working on a separate subsystem. Ada’s rendezvous mechanism for synchronization and communication was used to integrate these components. The three projects used in three successive semesters are described and the results of this experiment are discussed. We conclude with some specific recommendations concerning the use of Ada and the use of a classwide project, followed by a more general discussion of the role of software engineering in the undergraduate curriculum. Undergraduate Software Engineering Education During the last decade most universities have introduced a one or two course sequence in software engineering at the undergraduate level. Most of these courses involve projects of moderate size implemented by a team of students. This project-oriented approach to software engineering is reviewed in the first section. Many schools have introduced Ada into the undergraduate curriculum in the software engineering course or possibly earlier. Several such efforts are discussed in the second section. In the final section, the goals of this experiment in using Ada in a software engineering class are described. This approach is different from previous efforts in that the tasking feature of Ada was used explicitly to provide communications between programming teams each implementing a subsystem of a single, large project implemented by the entire class. Organization of Project Courses There are several ways to organize a project course. We will discuss three approaches: all teams do the same project: each team does a different project; and the entire class does one project subdivided into different components, one for each team. This choice often interacts Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission.

[1]  Grady Booch,et al.  Book Reviews , 1936, Computer.

[2]  Richard E. Fairley,et al.  Software engineering concepts , 1985, McGraw-Hill series in software engineering and technology.

[3]  Graham Beech,et al.  Software engineering with ada , 1983 .

[4]  Grady Booch,et al.  Software Component with ADA , 1987 .

[5]  Doris L. Carver Comparison of techniques in project-based courses , 1985, SIGCSE '85.

[6]  Guy Lapalme,et al.  An experiment in the use of Ada in course in software engineering , 1986 .

[7]  R S Pressman,et al.  Software engineering: a practitioner's approach (2nd ed.) , 1986 .

[8]  W. M. Mc Keeman Experience with a Software Engineering Project Course , 1987 .

[9]  Ronald Morrison,et al.  Software development with Ada , 1987 .

[10]  Narain H. Gehani,et al.  Ada, an advanced introduction , 1983 .

[11]  David B. Wortman Software Projects in an Academic Environment , 1987, IEEE Transactions on Software Engineering.

[12]  Narain H. Gehani,et al.  C: An advanced introduction , 1985 .

[13]  Jagdish C. Agrawal,et al.  Undergraduate courses needed in Ada and software engineering , 1985, SIGCSE '85.

[14]  Guy Lapalme,et al.  An experiment in the use of Ada in course in software engineering , 1986, SIGCSE.

[15]  Grady Booch,et al.  Software engineering with Ada , 1983 .

[16]  David Ballew A senior design course for computer science , 1984, SIGCSE '86.

[17]  David Ballew A senior design course for computer science , 1986 .

[18]  Richard E. Fairley The role of academe in software engineering education , 1986, CSC '86.

[19]  A. Jefferson Offutt,et al.  Anatomy of a software engineering project , 1988, SIGCSE '88.

[20]  Edward L. Robertson,et al.  Two Complementary Course Sequences on the Design and Implementation of Software Products , 1987, IEEE Transactions on Software Engineering.

[21]  G. Scott Owen An Ada-based software engineering course , 1989, SIGCSE '89.

[22]  Michael Erlinger,et al.  On the teaching of Ada in an undergraduate computer science curriculum , 1987, SIGCSE '87.

[23]  Barry L. Kurtz,et al.  A State-of-the-Art CS Undergraduate Lab , 1990, CSEE.

[24]  Richard Wiener,et al.  Data structures using Modula--2 , 1986 .