Software Engineering, Spring 2002

(Ohjelmistotuotanto, Kevät 2002)

The times for returning the coursework are available through this link.

The lectures are finished.

Useful instructions for Assignment 3 are given at

I have added a little clarification to the transformation rules given in Assignment 1.

SQL examples can now be found in the Material section.

Lab supervision available at CS lab 3070. The times are as follows:

Lecture time has changed! Due to OPOK lectures now colliding with our lectures, the lectures are now on Friday, 12-14, at Pinni 0081.

Fourth assignment is now given.

General information




A list of subjects which the course is likely to cover

For those interested in only 2 credits (2 ov)

Three Fujaba CDs are available at the departmental office. Bring back next day. They also include the Kaveri software package.

Jani Kilpilinna will assist in using Fujaba in the CS lab 3070 at the following times:


General information

If there are foreign students attending the course, the teaching will be given in English, otherwise in Finnish. The material will be in English in any case.

The basic idea on how the course is run has changed this year, again. There will be
1) weekly lectures,
2) reading, and
3) a coursework, which contains 5 parts.

The course will basically cover the software lifecycle. We will have an example project as a case, and the coursework assignments are based on the case and the reading.

There will be lectures about things which are not a part of the coursework.


I will suggest some reading for each part of the coursework. To do the reading, you will need at least one book :)

The official book is "Software Engineering - A Practitioner's Approach - European Adaptation" by Roger S. Pressman adapted by Darrel Ince, Fifth edition, ISBN 0 07 709677 0. That is the recommended book (not only because I have it, I think it is good reading and a good book to possess). The local bookshops might have the book, but it may be cheaper to buy it from a web bookshop. At least and seem to have the book available.

This course is mainly centered around object-oriented software development methodology. For the design and analysis part, the Finnish-speaking students may find "Oliokirja" by Kai Koskimies to be useful. Also, it is in Finnish, if some of you want to do a part of the reading in Finnish. It does not cover all the aspects of the course, though.

Examinations and grading

There will be no ordinary examination. To pass the course, you will have to do a coursework, which has 5 parts. Each part has to be returned within a given deadline. After the deadline, we examine some of the solutions and give feedback.

After the deadline for the fifth part, the students get a chance to polish the coursework and put together the final version, and there will be an oral examination (a discussion session) about the coursework. Each student will get an individual time for the oral examination.

Please note that the lectures and the coursework assignments are not completely synchronised. We may start a new area in the lectures even if the assignment for the previous area has not been returned yet.  


Slides on use cases

Slides on requirement specification

Slides on software lifecycles

A few motivational slides from the first lecture time

Slides on object oriented software development - in Finnish

Slides on UML - in Finnish

More slides on UML - in Finnish

Yet more slides on UML - in Finnish

Slides on object analysis - in Finnish

Slides on architecture design - in Finnish

Slides on MVC architecture

Slides on components

Slides on object design - in Finnish

Slides on software configuration management

Slides on software product quality and metrics

Internationalisation website

A website for material to go along Pressman's book

You can get a two-week trial version of JStyle from here. We will try to install it also to the CS lab 3070.

Here you can find some examples of SQL statements to create relations. The names for constraints can be made somehow "mechanically" from the relation names. You may use "on delete restrict on update restrict" for the foreign key statements, as in most of these files.

A preliminary list of subjects which the course is likely to cover

- Requirement specification
- System analysis & design
- Reverse engineering
- Implementation
- Testing
- Maintenance
- Software product and process quality



On 8.1. we will simply go through the basic concept of the course. We will also have a look at some motivational slides and some slides about the software development process.

The lecture on 15.1 was about requirement specification and use cases.

The lecture on 23.1. was about UML.

The theme on 30.1. was Object Oriented design process and object analysis.

The lecture on 6.2. was about Object Oriented design.

The lecture on 13.2. was about software architectures and components.


Doing only 2 credits (2 ov)

There might be some people willing to do only 2 credits. I have chosen that part so that there will not be any programming-related tasks in the 2 credit composition. It will be contain some requirement specification and analysis - that will be from the beginning of the course.

Also, there will be a small essay on software quality. You can change your mind at any time if you want to drop out from the 5 credit system to 2 credit system.



If you are only doing two credits, then you are to write an assay of 5-10 pages on "How can metrics be used to improve software quality" as your third and last assignment. You may return this assignment with the final version of the first two assignments.

Fifth assignment: Process quality

There is no separate deadline for this assignment, just return this with your final version of the coursework.

In this assignment, you are to consider formal technical reviews and object oriented software development. Produce a document, where you answer the following questions. Consider different items produced in object-oriented software development.

  1. Which items should be reviewed? Why?
  2. Should they all be reviewed, or should we just sample them to make the review? Why?
  3. Who should attend the reviews? Why? Consider different types of things to be reviewed separately.
Roughly one page per question is some kind of a minimum length for your answer for this assignment.

Fourth assignment: Product quality and metrics

The deadline for this assignment is Monday 22.4.2002.

In this assignment, you are to consider the following quality components in connection with the Kaveri software:

First, you are to explain how the software could be tested against those quality components. In particular, explain what kind of metrics could be used, if any.

Secondly, you are to study the software with the JStyle software (see the Material section above). Check some related metrics. Also, take some other Java software (preferably something you know, like some old coursework), and check the same metrics and compare. What do the metrics tell (if anything)?

You are to produce a .rtf document about this assignment.

Third assignment: Implementation and Testing

To return your solution to this assignment, E-mail your to, with subject SE02, 2nd assignment.
Include in your e-mail your name and your student number.

The deadline for this assignment is Monday 15.4.2002.

In this assignment, you are to implement and test the creation of relational schemas from the ER diagram, as added to the requirement specification and designed.

Record all tests you have executed, as you may need to execute the same tests for a number of times. For each test event, record also when you performed the tests. Your test report should be based on your testing plan.

Instructions on writing the essay for two credits (2 ov) will be given shortly.

Second assignment: Analysis, Design, and Reverse Engineering

The deadline for this assignment is Monday 11.3.2002.

To return this assignment, do the following:

Instructions to return your assignment will be given later.

For this assignment, you need to study the project documentation of Kaveri. You will also need the sources, which are available with the documentation. The .tdpse files are probably class diagrams made with Mermaid. It is unlikely that Mermaid would still be implemented on the departmental computers.

As your background reading, read about object oriented analysis and design, reverse engineering, and testing. Particularly for testing you should find out how to plan your testing ie how to write a testing plan.

Do the following:

  1. Analyse the part "ER-kaavioeditorin maarittely" from the requirement specification, and using text analysis as in the lectures about object analysis, produce an analysis level class diagram.
  2. Produce a class diagram for Kaveri using the reverse engineering facilities. It is ok and probably a good idea to create the class diagram only for the classes that appear to be connected with the management of ER-diagrams. Compare it to the list of classes found in the documentation. What kind of differences do you find?
  3. Based on this class diagram, plan your changes in the class diagram level to implement the new requirement (making relational schemas from the ER diagram), ie create the necessary new classes, methods and attributes in the class diagram.
  4. Make a sequence diagram showing what will happen, when the relational schemas are computed from the ER diagram.
  5. Make a testing plan for testing your changes. The plan is to tell what is done in testing and what the expected output of the tests is.

First assignment: Requirement specification

The deadline for this assignment is Monday 11.2.2002. To return your assignment, do as follows:
  1. Put your answers in .rtf or .pdf files, one file for each task. You may answer in Finnish or in English.
  2. Send them as e-mail attachments to Jani Kilpilinna, email:, with subject SE02, 1st assignment.
  3. Include in your e-mail the following information
    Name: (Nimi)
    Student number: (Opiskelijanumero)
    Major subject: (Pääaine)
    Study year: (Opiskeluvuosi) - 1, 2, 3, etc

Read the document kaveri-vaatimukset.rtf about requirements for an editor for ER and data flow diagrams. It is recommended that you do some reading about requirement specification from some textbook.

  1. Take the document, and formulate it into the form of the IEEE 830 standard (see slides). What sections are missing? This document should have version number 0.9.
  2. Add in the sections you know how to write. Keep them short. This document should have version number 1.0.
  3. Add a requirement, which says that the software is to include a facility to compute relation schemas from the ER diagrams and output SQL statements to create the respective database tables. More on this below. This document should have version number 1.1.
  4. What do you think about the initial document as a requirement specification document?
The answers to 1-3 should all be versions of the requirement specification document. The answer to 4 should be written in essay form.

The relation schemas are to be computed from the ER diagram using the following rules.

A little clarification for the third rule - if it is a 1:1 relationship between A and B, then you may either add the key of attributes of A to the relation created for B, or the other way round, or both ways.