Just Another Teaching of Software Engineering (2006-07)

This website archives the teaching and learning of a Software Engineering course. It supports teaching and learning during the course of study (September 2006 to May 2007). After the course, it is an archive for reference and sharing.

Tutorial#19 Configuration Management Hands-on

In this tutorial, you will experiment with CVSNT. CVSNT is open-source version control systems available under Windows and other popular platforms.

Useful Links:

Tutorial#15-16 Software Testing

In these two tutorials, you do some practical activities on black-box testing. You also do some class exercises on mapping class to relational schema, and discussions on the roles of test stubs and test drivers.

Tutorial#14 Mapping Models to Code

In this tutorial, you will do some class exercises about mapping models to code. You are first given a simple model in terms of class diagrams. You then apply the transformations you learned in the previous lecture to the associations in the model. You need to write the Java source code to manage the associations including class, field and method declarations, method bodies and visibility.

You can discuss with your classmates and tutor during your work. Submit your work to your tutor before you leave the class.

Tutorial#13 Review on UML Modeling

In this tutorial, you will do some class exercises to review UML modeling. Three questions are about class diagrams, and another two are about statechart diagrams and activity diagrams.

If you find yourself unable to get the right answers to those five questions, it means that you are still not familiar with basic object-oriented modeling knowledge. If so, spare some time to review the course materials on the topic.

Tutorial#12 The Strategy Pattern

In this tutorial, you will do a practical exercise about the Strategy pattern.

The Strategy pattern is one of the most fundamental design pattern. It embodies two object-oriented design principles—encapsulate the concept that varies and program to an interface, not an implementation.

The Design Patterns authors define the Strategy pattern as:

Define a family of algorithms, encapsulate each one, and make them interchangeable. [The] Strategy [pattern] lets the algorithm vary independently from clients that use it.

The following suggests a good article for you to learn the Strategy pattern. It first illustrates how Swing uses the Strategy pattern to draw borders around its components. Then it discusses how Swing benefits by using the Strategy pattern, and finally it explains how you can implement the Strategy pattern in your own software.

Strategy for success: The powerful Strategy design pattern aids object-oriented design (By David Geary, JavaWorld.com, 04/26/02)

Discussion: Suppose JComponent.paintBorder() method use switch-case to handle drawing borders around its components, instead of using the Strategy pattern. What you need to do if you tried to implement a new border type? What are the difficulties that you will be faced with?

Tutorial#11 Observer Pattern

In the previous tutorial, you have gained some insight into the Observer pattern. In this tutorial, you will consolidate your understanding about the Observer pattern by experimenting more programs that use the Observer pattern.

References:

Keeping Objects In Sync

Building Graphical User Interfaces with the MVC Pattern