Tong-Chun Xu
The King's University College, Edmonton, AB
It is often said that learning through experience is the best way to
learn. This is the principle that I applied to teaching my second/third-year
software-engineering students. I devised a project that required students
to play the roles of various important representatives of the software
engineering industry. By taking on these roles, students completed their
tasks as if they were working for a software company and thus gained valuable
hands-on experience without leaving the classroom. The various positions
that students filled included the role of a system analyst, code inspector,
and component engineer. Through realistic scenarios and completing relevant
tasks, students not only became proficient in their field, but also gained
a greater understanding of current software engineering techniques. Code
inspection, an important quality-control process was also emphasised, which
is ignored by many instructors while teaching software development processes.
Many students felt that this role-playing also enabled them to better understand
difficult concepts. Students also gained a sense of responsibility and
accountability since the programs they completed were assumed to be capable
of public use. Finally, the students gained valuable team building skills
since the success of the entire project depended on the combined success
of each individual student.
Keywords: Code Inspection (CI), Coding Standard (CS), Unified
Modeling Languate(UML), USWDP (The Unified Software Development Process),
Design Pattern, SME (Subject Matter Expert), HLD (High Level Design), SW
(software), TKUC (The King's University College)
1. Course/Project Overview
This course consists of five parts:
Project : The Registration System
Scenario
TKUC wants a new registration system to meet the demands of an influx
of new students. The new system will provide students with a timetable
for their courses and an up-to-date balance of fees. Students may select
up to four primary courses and two alternate courses. Once a student registers
for a semester, he or she may use the system to add or drop courses within
a given period. Professors and other faculty members will also use the
system to receive their course offering rosters.
Table 1. 10 Positions and Repsonsibility
Position | Responsibility |
System Analyst | Inspector in CI, HLD |
Use-Case Specifier | Use Case diagram in UML |
User-Interface Designer | User Manual |
Architect | Class diagram in UML |
User-Case Engineer | Code author in CI, Coding Standard |
Component Engineer | Code author in CI, HLD-template |
System Integrator | State diagram in UML, HLD |
Test Designer | Interaction diagram in UML, HLD |
Integration Tester | Activity diagram in UML |
System Tester | moderator in CI, Physical diagram in UML |
Team Leader appointed | |
SME invited |
The aim of this course is to understand the unified software development process, UML, and their related issues by following the procedure found in “The Unified Software Development Process" (Booch et al.1999). As a group, the class held regular meetings where the team discussed their progress at each phase and generated solutions to programming problems.
In addition to covering major topics of the course, each student became an expert in the knowledge and practices related to his or her position. Students obtained a vast amount of supplementary information by accessing a variety of resources including different reference books and the Internet. At the end of the term, students conducted a 20-minutes MS PowerPoint presentation and submitted a written report outlining the requirements and importance of their position as well as their individual successes and failures.
The student’s learning experience was further enriched with a discussion of ethics concerning the software development industry. Unlike other fields of engineering, such as civil engineering which is a profession that is at least 150 years old, software engineering is a relatively new field. Thus, as with anything new, it lacks firm regulations that govern its practices. Therefore, it was important to instill in students a strong sense of accountability. Through the examination of case studies, students realized many devastating and costly errors due to simple programming errors. It is a reminder that efficiently delivering the best end product should be one’s foremost concern though it.
2. Project Outcome
During the initial execution of the project, individuals holding positions such as System Integrator, Test Designer, and Integration Tester were given little or no tasks since their skills were not appropriate until the third phase of the project. This proved to be the result of poor planning on my part. As a solution to this problem, those particular individuals were given the choice to help those with active positions or experiment with different development processes. In the future, such a problem can be prevented by giving students two positions one of which will not be activated until the latter part of the project.
Shortly after the midterm, the students realised they had only passed
the first milestone and were fast approaching a deadline with still much
to do. The team leader discussed the situation with fellow team members
and decided that certain features needed to be removed to simplify the
design. This situation actually greatly enhanced the student’s experiences
as they learned to deal with a realistic problem faced by many software
engineers in the field.
3. Discussion: Course Components and their Class Time Weights
To fit the Software Engineering course into the Computing Science curriculum at TKUC, I distributed classroom time into different components. Five threads were used to represent each part of the course. The weight and duration of each thread are shown in Fig.1 and Fig.2.
The USWDP and UML are both brand new topics to students and needed more instruction and exercise time.
The USWDP is the standard programming process followed by students and is touched upon during virtually all the lessons. The UML, on the other hand, which is a major concept and language, is studied intensively during the first part of the course until the middle of the term. However, the termination of the UML at the middle of the term seems not a good idea.
The laboratory exercises are intended to be relevant to the elements covered in the course. Since the student’s term project is conducted in Java, lab exercises are mostly concerned with the use of Java. Exercises on the operation of files (Sequential-Access and Random-Access) and concepts such as design patterns are also used.
4. Conclusion
The project was received with great enthusiasm by all the students and their response to it after completion proved promising. Many felt that the project greatly enhanced their understanding of the software development process. They also gained analysing, communication, and teamwork skills. In the words of one of the students “thorough analysis, careful design, proper communication, and good teamwork” are the foundations of software success.
References
Booch, G., Jacobson, I., and Runbaugh, J. The Unified Software Development Process. Reading, Massachusetts: Addison-Wesley Longman Inc., 1999
Fagan , Michael E.: Design and Code Inspections to Reduce Errors in
Program Development.IBM Systems Hournal 38 (2/3): 258-287 (1999)
http://dblp.uni-trier.de/db/indices/a-tree/f/Fagan@Michael_E=.html