Information about http://www.medien.ifi.lmu.de/pubdb/publications/pub/hussmann2002engineering/hussmann2002engineering.pdf

Experience in Early and Late Software Engineering Project Courses …

Tags: birgit demuth, complex project, computer science bachelor, degree graduate, department of computer science, diploma degree, diploma program, dresden germany, dresden university of technology, fischer heinrich, future software, heinrich hussmann, introduction software engineering, mike fischer, oo techniques, post diploma, practical software, software engineering education, software engineering project, teaching approaches,
Pages: 8
Language: english
Created: Wed Dec 5 13:39:08 2001
Display cached document
Page 1
image
Page 2
image
Page 3
image
Page 4
image
Page 5
image
Page 6
image
Page 7
image
Page 8
image
 Experience in Early and Late Software Engineering Project Courses


                 Birgit Demuth, Mike Fischer and Heinrich Hussmann
                          Department of Computer Science
                          Dresden University of Technology
                            D-01062 Dresden, Germany
        {Birgit.Demuth, Mike.Fischer, Heinrich.Hussmann}@inf.tu-dresden.de



                                          Abstract
   We report about our experience which we gained in different software engineering project
courses at our department. A student who is specialized in software engineering has to finish
besides lectures on software engineering and related fields two project courses: an "early"
basic project course and a "late" complex project course. For both of them we developed
leveled teaching approaches considering the different knowledge and skills of beginners
respectively "advanced" students. The paper describes, discusses and evaluates these
approaches.


1 Introduction

   Software engineering education at the Department of Computer Science of the Dresden
University of Technology is part of several study programs:
   · Graduate program in Computer Science (bachelor and diploma degree)
   · Graduate program in Media and Computer Science (bachelor and diploma degree)
   · Graduate program in Technology of Information Systems (bachelor and diploma
       degree)
   · Post-diploma program in Software Technology (second diploma degree)
   Courses in software engineering are embedded into the "early" basic study program as well
as into the "late" main study program. It is not surprising that software engineering lectures
should be accompanied by practical software development and be leveled to the already
acquired knowledge and skills of the students. Our main attention in the training of future
software engineers is focused on object-oriented (OO) techniques and doing teamwork. We,
accordingly, developed a teaching approach for an early and a late software engineering project
course and refined them during the last years based on our experience.
   The early project course (basic project course) follows the idea that beginners have to
climb several rungs of a very demanding ladder of technical knowledge. Because of teaching
the "OO thinking" we lead the students to a "good" OO application design by using the domain
framework SalesPoint [1].
   Based on first object-oriented software development skills of the students, the late project
course (complex project course) focuses attention on higher requirements in software analysis
   and design as well as in project management by an increased number of team members.
Whereas, for example, the application architecture in the basic project course is given by the
used framework, the students of the complex project course have to discuss different
architecture designs and have to choose appropriate implementation technologies.
   In the following, we outline the structure of the software engineering education at our
department and present more details about the project courses. We discuss our experience and
summarize our "Lessons Learned".

2 Software engineering education at Dresden University of Technology


2.1 Overview

  Graduate programs at the Department of Computer Science are structured into a basic
program (four semesters) and a main program (six semesters for bachelor degree, nine
semesters for diploma degree).

                Table 1. Software engineering and related courses
  Type of              basic program                                main program
  course          1        2         3            4         5             6      7 8       9
Basic       Algorithms Program-
program-    and data-  ming
ming        structures
software                         Software                Software   Software
engineering                      engi-                   engi-      management
                                 neering                 neering
                                                         II
                                                         Software   User
                                                         develop-   interfaces
                                                         ment       and dialog
                                                         tools      techniques
                                                                                    Diploma
                                                                    Software        semesters
                                                                    components



                                                                    Formal
                                                                    specification
                                                                    of software
                                                                    systems

practical                 Program-             Basic                Complex
courses                   ming                 project              project
                                               course               course

  Table 1 shows the curricula of the graduate programs Computer Science as well as Media
and Computer Science in the point of view of software engineering education. Programming
courses during the first and second semester introduce the students to the "Programming-in-
the-Small" and prepare them for the subsequent software engineering courses. The students are
taught (among other things) structured programming and verification techniques, sorting
algorithms and data structures including hash tables and AVL trees. Programming tasks in the
practical course are defined precisely, and typically could be solved by one person in a few
days.
   Software engineering represents the introductory course to the "Programming-in-the-Large".
The course emphasizes techniques of object-oriented software development including object-
oriented analysis (OOA) and design (OOD) with the Unified Modeling Language (UML),
Java-based implementation and design patterns.
   All courses in the basic program are mandatory for all graduate programs (including the
post-diploma program). The following software engineering courses in the main program are
optional. They deal with different fields and questions in software engineering like reverse
engineering, development tools, user interfaces, software components and formal specification
of software systems.

2.2 Basic project course

For most of the junior students, the basic project course is the first hands-on experience
in software engineering. The basic project course as in the following described was
performed several times both at our department and at the University of the Federal
Armed Forces Munich [9]. It requires extensive practical work and provides valuable
experience for programming assignments and advanced courses in the main program.
According to the learned concepts of the introductory course the used technology in all
project has to be OOA/OOD with UML and Java-based implementation. The central
technical idea of the basic project course is the use of a domain framework which gives
the students a guidance in object-oriented design by its architecture and implemented
classes [1].
   Besides the training of the technical skills the students have to develop a number of new
("soft") skills [2] in order to succeed with their projects:
·   They are required to work in teams of five or six members. They assume different roles
    (chief programmer, developer, etc), have to communicate in a professional way within the
    team and with customers, and work systematically during three months following a plan
    made by themselves.
·   They are required to specify what their task is. In contrast to the programming tasks they
    were given in the programming course the project definition is rather sketchy. It is the
    students' job to find out in discussion with their "customers" what to do in detail.
    However, in point of the view of the teaching staff the tasks are rather well-defined. All
    tasks represent various point-of-sale applications [3]. The same task is given to three
    project teams every year so that there is much experience about various solutions.
·   They are required to present their work. Both oral and WWW presentations are required.
·   They are required to acquire tool experience. In addition to some Java IDE they need an
    UML-CASE tool, a version management system like CVS and some HTML knowledge to
    set up their own WWW project site.
  The project teams are guided by senior students who in turn are supervised by a project
course leader. This organization is necessary because we have to teach hundreds of students in
the basic project course every year. The senior students work as tutors. They are both
consultants for the younger students and customers for the software project. This way the
senior students acquire own advanced soft skills in project management.
   A rather rigid time table is prescribed for project work. Once per week, the project progress
and the results (documents, programs) have to be reviewed together with the tutors.
Furthermore, the software process has to be documented at the WWW project site. After the
strict project deadline a formal oral presentation per team is required where the main results
including the developed application have to be shown and questions to be answered.

2.3 Complex project course

   The complex project course is attended by students of the main program, typically in the 6th
or 8th semester. At this point the students have completed most of the theoretical lectures, like
both Software engineering courses. Additionally, they have acquired practical experience in
software development by several practical courses, including the basic project course. Most of
the students have also acquired practical skills in short industrial projects. Overall our
observation is that the students have high skills in carrying small projects supervised by
professionals.
   Considering these skills, the complex project course provides some students the opportunity
to gain experience in more realistic projects, e.g. with higher complexity and with more
realistic tasks, but with technical support of the teaching and research staff.
   There is typically only one group of the complex project course with approx. 9 students (in
future more groups have to be established). For each course, a new task is specified. The
different tasks span a large field from a web-based game up to a task with requirements derived
from real customers. For example, the recent project ProjectWeb [4] was to develop a web-
based working environment for worldwide distributed researcher groups. The requirements
came from a European project in which the Dresden University of Technology is involved. The
real background of the task allows students to take part in real contractor-customer-
relationships: the students are the contractors and the project members are the customers.
   Students assume full responsibility for the project work. However, if obvious risks are
observed, the project mentor gives some hints to the students. The students have also the
possibility to request support in each of the project phases. Additionally, each phase ends with
a presentation of the results. With the initial task description we also provide the students also
a milestone plan proposal for timing. However, it is the responsibility of the project group to
refine the plan and to generate its own milestone plan. Following, the main steps of the
complex project course are be described:
· Initially the students establish a project team with roles (e.g. team leader, secretary,
    technician, ...) and rules (style guide and management of project documents ­ more general
    project conventions, regular dates for project meetings, ...) which are appropriate for a
    higher number of project members.
· The task of the complex project course is very sketchy at the beginning. In contrast to the
    typical task of the basic project course it is also sketchy for the mentor because there is no
    experience with the given real problem. Therefore the students have to collect the
    requirements in the first step. Typical questions are: "What does the customer really
    want?", "What is the meaning of terms which the customer uses?" and so on. This first step
    creates a product description which is signed by the customer. This document is used for
    evaluation of the results at the end of the course.
·   The second step of the project is the classical object-oriented analysis. Our students have
    very high theoretical skills in this field. However, the new challenge is to analyze a
    complex system and to coordinate the analysis work of several project members.
· The third step is focused on the architecture design. This includes the choice of appropriate
    technologies (e.g. Java Server Pages, Enterprise Java Beans) and software (e.g. Tomcat,
    JBOSS) used for software development in the project course.
· And finally the software has to be implemented and tested.
   The complex project course ends with a public oral presentation of the results. The students
also hand over documents like project code, project documentation and an application manual.

2.4 Comparison of the early and the late project course

   After a short description of the basic project course and the complex project course we
present the differences between the two approaches.
   At first table 2 summarizes the early respectively late properties of the basic respectively
complex project course.
                           Table 2. Early and late properties
                                      basic project course         complex project course
Semester                              4th semester                 6th semester
theoretical skills                    basic                        advanced
Practical skills                      only little                  medium

  According to the students' project experience and the total number of students in one project
course we established the following different organizations (see table 3).
                     Table 3. Organization of the project courses
                                      basic project course         complex project course
number of project teams               25 and more                  1 (to be enlarged in future)
Members per project team              4-6                          8-10
project time                          13 weeks                     almost half a year
mentored by                           senior students              teaching and research staff
Consultation                          once per week                on demand of the students
project deadline                      Hard                         soft

   Table 4 summarizes the differences of project tasks in both project courses. The rather low
motivation of the students in the basic project course come from the fact that their task ­ a
point-of-sale application ­ is only a simulation and is not used by any user after the project
course. In contrast to these simulation tasks which will be only solved "for the desk of
teaching staff", tasks with real customers and needs create a better work atmosphere with a
high motivation of the team members.
                            Table 4. Type of the project task
                                       basic project course         complex project course
Requirements                           well-defined                 sketchy
Complexity                             Rather low                   rather high
effort in hours per student and week   about 8                      about 16
Reality                                simulation                   high
used technologies                      predefined                   open
Software architecture                  predefined                   open
motivation                             rather low                   rather high

   The priorities of teaching objectives in the project courses are given in table 5. This
emphasizes our point of view what are the knowledge and skill we want to introduce to
students early and late in their programs. Notice that analysis and programming have high
priority in the early study program. Design issues are partially skipped by mandatory reuse of
classes of the given domain framework. In contrast, the complex project course especially
requires knowledge and skills in requirements engineering, architecture and OO design as well
as in project management.

          Table 5. Priorities of teaching objectives of the project courses
                                       basic project course         complex project course
requirements engineering               no                           high
OO analysis                            high                         secondary
OO design                              secondary                    high
architecture design                    no                           high
reuse                                  high                         no
OO programming                         high                         secondary
Project management                     secondary                    high
learning of previous unknown           no                           secondary
technologies

3 Experience and lessons learned
   The described teaching approaches for software engineering project courses were developed
and improved over a period of several years. After C++-based basic project courses without
our current strict organization (no framework, soft deadlines) we started the SalesPoint project
courses in 1997 and performed them once or twice per year [5]. Besides a lot of informal
feedback from students and tutors we also requested detailed questionnaires to evaluate the
project course approach. For example, the results of questionnaires in summer 2001 are given
in [7]. With the complex project course we have four years experience [6]. In retrospect, we
have learned very valuable lessons in both courses.
There are never too many project courses!
   The experience shows that there are too few project courses in our program! Even highly
   qualified students who worked, for example, as tutors in basic project courses had trouble
   in OOA/OOD as well as in project management during the very demanding complex
   project course. Therefore, it makes sense to require that the complex project course is
   mandatory. However, project courses need much human and infrastructure resources which
    can not be provided as often as we would like during a program with such a large number
    of students.
The framework-based approach in project courses is considered suitable for beginners in
software development!
    Beginners tend to do everything from scratch and "reinvent the wheel" many times. Only
    by using the framework, will they be guided to a real object-oriented design and produce
    solutions that can be maintained easily [1].
Real tasks motivate students to complete their work!
    For example, in no case a single student or the whole group cancelled the complex project
    course. In contrast, we had some motivation problems in the basic project course because
    of the simulation character of the tasks mentioned above. Therefore, we experimented last
    year with real industry-driven tasks. After the project course, we asked the students how
    the project task was interesting (on a scale of very interesting (1) to not interesting (5)).
    Students in our "internal" project course valued this subject lower (3.2) than students
    working in "real" projects (1.7). However, it is almost impossible to transfer our described
    early project course approach to an industrial environment and above all for hundreds of
    students.
The students do not use documents created during early software development phases as
tools for their project work!
    The students do not understand requirements, analysis and design documents as tools for
    their project work. Instead it seems that they create such documents in order to please the
    mentors and customers. Therefore, a better training is required to show how different
    models interact together in different phases. A further aspect of documentation is that
    support and guidance by tutors respectively mentors is impossible unless progress is
    continuously and extensively documented.
Mostly, students underestimate the project effort!
   The students have no experience in estimating the project effort, especially the time
   involved. The resulting specification during the requirements phase is often extremely
   oversized. So an important question is: What is a realistic scope of the task to be solved in
   the available time? This observation we made both in basic and in complex project course.
Object-oriented analysis is hard work!
    Junior students do not often see the necessity of the analysis of the given task. After much
    trouble in their first software project they recognize that they were wrong. Senior students
    in the complex project course have problems to deal with complex problems. It is
    important to exercise how to decompose the whole task into small manageable tasks. A
    further problem is to do analysis independent of technology.
Architecture and object-oriented design needs much experience!
   Architecture design which is required in the complex project course is very hard for
   inexperienced students. It takes a lot of human resources for different problems: evaluate
   existing technologies, guide other project members with regard to the chosen technology,
   evaluate software, design a system architecture and go in iterative steps to a detailed
   design.
   Therefore, we often just skip these problems in the basic project course by the use of an
   application framework.
Coding and test
   The last steps of the project courses are coding and test. Mostly, these phases are trouble-
   free above all in the complex project course since the students have already high skills in
    programming. We are also surprised every year about the high productivity which is
    achieved by both the junior and senior students in their projects measured in lines of code
    per student and hour.
Teamwork is the most important experience for junior students!
   Students' feedback in all basic project courses confirmed that the teamwork was a new and
   exciting experience. The students learned a lot and do not want to miss this experience in
   spite of every effort [7].
A strict deadline is a powerful tool in student project courses!
    To avoid disaster especially in basic project courses with hundreds of students, some strict
    discipline and a lot of communication is required. Teams have to adhere to a strict project
    deadline which is synchronized with the end of the semester. The high success rate of
    about 90% reinforces this observation.
   In future, we want to refine both basic and complex project course. An interesting guide in
this regard will be the SWEBOK project [8]. Furthermore, we will turn our attention to an
effective guidance of the students according our lessons learned. A difficult task will be the
creation of industry-driven project environments with very similar requirements to the
constraints of our existing basic project course.

Acknowledgments
  We thank Lothar Schmitz from the University of the Federal Armed Forces Munich for
his valuable contributions to the basic project course approach and his steadily effective
cooperation. Furthermore we extend our gratitude to students who, through their efforts and
contributions as tutors, made the organization and the cycle of the project course successful ­
with special recognition going to Steffen Zschaler and Kathleen Krebs.

References
[1] B. Demuth, H. Hussmann, L. Schmitz, St. Zschaler. A Framework-Based Approach to Teaching OOT: Aims,
    Implementation, and Experience. Proceedings Thirteenth Conference on Software Engineering Education &
    Training 6-8 March 2000, Austin, Texas, eds. Susan A. Mengel and Peter J. Knoke, IEEE Computer Society
[2] B. Demuth, H. Hussmann, L. Schmitz, St. Zschaler: Teaching OOT Using a Framework and Both Direct and
    Net-based Tutoring, ED-MEDIA 2001 World Conference on Educational Multimedia, Hypermedia &
    Telecommunications, Tampere, Finland, June 25-30, 2001, eds. Craig Montgomerie and Jarmo Viteli, AACE
[3] Dresden University of Technology. Softwarepraktikum Sommersemester 2001.
    http://www-st.inf.tu-dresden.de/sp
[4] Dresden University of Technology. Komplexpraktikum Sommersemester 2001.
    http://www-st.inf.tu-dresden.de/kp
[5] Dresden University of Technology. Software Engineering Project Course.
    http://www-st.inf.tu-dresden.de/BasicProjectCourse/
[6] Dresden University of Technology. Complex Project Course.
    http://www-st.inf.tu-dresden.de/ComplexProjectCourse/
[7] Dresden University of Technology. Evaluation of Questionnaires, summer 2001.
    http://www-st.inf.tu-dresden.de/SalesPoint/v3.0/papers/evaluation.html
[8] IEEE Computer Society. Guide to the Software Engineering Body of Knowledge (SWEBOK).
    http://www.swebok.org/
[9] University of Federal Armed Forces Munich. The SalesPoint Framework V2.0 Homepage.
    http://inf2-www.informatik.unibw-muenchen.de/Lectures/SalesPoint/