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.

Lecture#16 Software Project Management

The previous lecture covered change management dealing with the managerial aspect of software engineering. In this lecture, we continue with a managerial topic, namely project management. It is possible to devote a whole course to project management. Our treatment on the subject will therefore be quite brief.

We will focus on management of a software project and the role of software project manager. The following lists the main topics in this lecture.

  • Role of a Project Manager
  • Project Development Phrases
  • Project Development Activities
  • Project Organization
  • Risk Management

Your actions before next class: Read Chapter 14 Project Management and Chapter 3 Project Organization and Communication of the textbook.

Lecture#15 Software Configuration Management

In this lecture, we will start to learn Software Configuration Management, or SCM in short. SCM is the discipline of monitoring and controlling change in the evolution of software system. More specifically, you will learn the following concepts and activities in the process of SCM:

  • Configuration item identification
  • Promotion management
  • Release management
  • Branch management
  • Variant management
  • Change management

Your actions before next class: Read Chapter 13 Configuration Management of the textbook.

The following lists seven software configuration management tools. Some of them offer test drive to play with.

Build and release management tools:

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.

Lecture#14 Software Testing, Part 2

In this lecture, we will continue to learn Software Testing. It covers System Testing, Regression Testing, and Documenting Testing. We will also have a brief touch on how JUnit is used to automate unit testing in Java.

While unit and integration testing focus on finding faults in individual components and the interfaces between the components, system testing ensures that the complete system complies with the functional and nonfunctional requirements. System testing includes functional testing, performance testing, pilot testing, acceptance testing, and installation testing.

Regression testing is to ensure that a program has not regressed; the functionality that was working yesterday is still working today. In other word, regression testing is to ensure that we do not introduce new bugs while removing existing bugs. A program still works correctly after changes were made to it.

Suggested Readings on JUnit:

Some Tools for Performance Testing :

Some Tools for Testing Automation