A Software Engineering Project Course with a Real Client Bernd Bruegge John Cheng Mary Shaw CMU/SEI-91-EM-004 July 1991 A Software Engineering Project Course with a Real Client Part III: Project Material __________________________________________________________________________ __________________________________________________________________________ Bernd Bruegge John Cheng Carnegie Mellon University School of Computer Science Mary Shaw Carnegie Mellon University School of Computer Science and Software Engineering Institute Approved for public release. Distribution unlimited. ii CMU/SEI-91-EM-4 Table of Contents Part I: Overview 1 I.1. Introduction 1 I.2. The Students 3 I.3 . Syllabus (final version) 6 I.4. Lecture Component 15 I.5. Project Component 17 I.5.1. Design Rationale 17 I.5.2. Project Organization 18 I.5.3. Team Selection and Internal Team Management 18 I.5.4. Phases 19 I.5.5. Trade Between Student Initiatives and Structure Imposed by the Instructor 20 I.5.6. Trade Between Pedagogical and Project Objectives 20 I.5.7. Risks and Problems 21 I.5.8. Internal Project Review 22 I.5.9. Explanation of Project Exhibits (Part III of this set of educational materials) 24 I.6. Administration 29 I.6.1. Staffing 29 I.6.2. Credit and Grading Policy 30 I.6.3. Coordination Between Lectures and Project 32 I.6.4. Communication 32 I.6.5. Mechanics 34 I.7. Conclusions 41 CMU/SEI-91-EM-4 i ii CMU/SEI-91-EM-4 List of Figures Figure I.1. Students’ Prior Software Course Experience 4 Figure I.2. Students’ Operating System Experience at Beginning of Course 4 Figure I.3. Values of Grading Spreadsheet 36 Figure I.4. Formula for Grading Spreadsheet 37 Figure I.5. Template for Student Form Letter 38 Figure I.6. Student Data to Merge into Form Letter 39 Figure I.7. Student Form Letter 40 CMU/SEI-91-EM-4 iii A Software Engineering Project Course with a Real Client Abstract At Carnegie Mellon University, we taught an introductory software engineering course that was organized around a project with a real deliverable for a real client. This case study describes the background and organization of the course and presents the lecture and project materials produced by the faculty and students of the course. Part I: Overview I.1. Introduction Carnegie Mellon University has offered a course in software engineering since the early 1970s. Although its organization and position in the curriculum have changed over the years, the course has always had the primary objective of teaching undergraduate students something about the practical problems of building real-world software—groups of people must cooperate to understand just what problem is being solved and then create and integrate a collection of software modules that solve the problem. This traditionally has been a group-project course with a lecture component. In recent years it has been a senior-level elective; its prerequisites are intended to ensure that students have already studied medium-sized systems such as compilers and operating systems. Often students who select this course are considering entering the job market as software developers. The software engineering course is often our last chance to show students that developing real software systems is not at all the same thing as writing a programming assignment that will be graded and thrown away. We ask them to think about what the end user really wants, about understandability and reliability in use, about integration with other system facilities, and about the problems their work will present to future maintainers. In the summer of 1989, we decided that we could make the characteristics of software systems more vivid by choosing a project whose result could benefit some group on campus, preferably the campus computing community at large. We polled the local community for project suggestions and chose a proposal from the Information Technology Center (the group that developed Andrew, the campus-wide computing system). They suggested combining existing software facilities to provide a bridge between electronic mail and facsimile transmission provided by a special fax board in a personal computer. The students succeeded in developing a working prototype, which they demonstrated in a formal presentation and acceptance test at the client’s site. This report, which explains how the course was organized and presented, contains three parts: this overview; our lecture materials (transparency masters, homework, and quizzes); and the project materials CMU/SEI-91-EM-4 1 prepared by us and by our students. In the remainder of the overview, we describe the background of the students, present the formal course syllabus, explain the organization of the lecture and project components, and discuss some of the strategies and mechanisms we used to administer the course. The lecture and project materials are distributed separately (page 43 contains an order form for Parts II and III). 2 CMU/SEI-91-EM-4 I.2. The Students This version of the course was taught in the fall semester 1989 as Carnegie Mellon course 15-413, Software Engineering. There were 19 undergraduate seniors enrolled, including 17 from mathematics/computer science and 2 from electrical and computer engineering. Three would graduate at the end of the fall term, the other 16 in spring 1990. The majority were interviewing for jobs in the computing field, primarily in software. Several were applying to graduate schools. In addition, 4 graduate students and visitors audited the lectures regularly. On the first day of the course, we asked the students (but not the auditors) about their background in software. Table I.1 shows the programming and software system courses taken by the 16 students who answered this question. The formal prerequisite for our course was any one of the the courses marked with a “P.” Each of these courses gives the students experience with medium-sized software systems. All students had taken at least one of the prerequisites; 5 students had taken 2. Overall, the mean number of previous software courses was 6 per student; the range was 4 to 8; and the mode was 5. Table I.1 Students’ Prior Software Course Experience (16 students reporting) #Students PreReq Courses (one semester each 16 Introduction to Programming and Problem Solving 16 Fundamental Structures of Computer Science I 16 Fundamental Structures of Computer Science II 13 Comparative Programming Languages 10 P Operating Systems 9 P Artificial Intelligence: Representation & Problem Solving 3 Vision 2 Applied Algorithms (may be under-reported here) 2 Concurrency & Parallelism (elec. & comp. engr. course) 1 P Compiler Design 1 Parallel Programming 1 Knowledge-Based Systems 1 Robotics 1 Graphics 1 Computational Physics (physics course) The graphs in Figures I.1 and I.2 show the students’ prior experience with programming languages and operating systems, respectively. We tried to determine from the responses which students had more extensive experience than use in a single course and which ones had only passing familiarity or experience in a single course. Note that because the students’ self-reporting was subjective, the information may not be consistent from one student to another. CMU/SEI-91-EM-4 3 4 CMU/SEI-91-EM-4 Two-thirds of the students reported additional experience, including: • Programming for various Carnegie Mellon research projects. • User consulting and programming for Carnegie Mellon’s academic computing service. • Summer jobs with AT&T Bell Labs, Federal Aviation Administration (FAA), Johns Hopkins Applied Physics Labs, Lockheed, IBM, NCR. • Cobol database programming, Macintosh application programming, networks. The students also described their own objectives in taking this course; some of these appeared several times: • Learn more about various phases and problems of software product development. • Expand my view of software design beyond the “programming” realm. • Find out about complex software systems. • Compare formal design principles with software principles encountered in summer work. • Learn the fundamental ideas involved in software engineering, especially project management. • Gain some experience that will be useful when I go to work after graduating. • Obtain large-group software experience; learn to work effectively in a group. • Learn enough about software engineering to be a useful member of a project in industry. • Don’t know. CMU/SEI-91-EM-4 5 I.3. Syllabus (final version) The course syllabus that we gave to the students in November 1989 begins on the following page. It is labeled “final version” because we made changes to the original; most changes involved reordering lectures to improve the match between lecture content and the project or to take advantage of special opportunities such as visiting lecturers. Note that the lecture component is presented twice: first by conceptual unit, then chronologically. The descriptions of lectures have been annotated with references to the corresponding support materials in Parts II and III of this educational materials package. 6 CMU/SEI-91-EM-4 15-413: Software Engineering Fall Semester 1989 Revised November 20, 1989 Course Staff Instructors: E-mail address Office Office hours Mary Shaw [email protected] WeH 8214 Tu 3:30-4:30 Th 11:00-12:00 Bernd Bruegge [email protected] WeH 4209 Mon 3:30-4:30 Wed 3:30-4:30 Teaching Assistant: John Cheng [email protected] WeH 3130 Tu 10:30-12:30 Objectives Upon completion of this course, a student should: • Understand the difference between a program and a software product. • Be able to design and implement a module that will be integrated in a larger system. Each student will have demonstrated the ability to: • Work as a member of a project team, assuming various roles as necessary. • Create and follow project plans and test plans. • Create the full range of documents associated with software products. • Read and understand papers from the software literature.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages47 Page
-
File Size-