Teaching SW Engineering via Simulated SW Development Process

Tong-Chun Xu
The King's University College, Edmonton, AB
 


ABSTRACT

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:

  1. UML,
  2. USWDP,
  3. Java programming (labs)
  4. Software Engineering Code of Ethics and Professional Practice (seminars)
  5. Design Patterns


    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



Name: Tong-Chun Xu
Department: Computing Science
Institution: The Kings University College
Postal address: 9125 - 50 Street, Edmonton, Alberta
E-mail address: tcxu@hotmail.com
Web address: http://geocities.com/tcxu/