To get to Software Engineering 2004 homepage, follow this link.

Software Engineering, Spring 2003

(Ohjelmistotuotanto, Kevät 2003)

Deadline extension for coursework! Sorry for the late notice, but I just realised that Jari is on vacation until 26.5. so let's make that the deadline for the coursework - I guess there is no point in asking them in earlier. Please pack your coursework into one zip file so that the names of the files in the zip file show which tasks they answer.

The exam will be held in lecture hall 0081 on 26.5. from 10:00 to 14:00. There is no need to register - I will copy the papers based on the number of people who have returned coursework assignment 3. No material is allowed.

I have fixed a couple of bugs on the software, which you are to use in assignment 3. Also, the database has been rearranged. Please check up the changes and download the new versions.

If you are only doing two credits, then the actual lecture part for you is over. You do not need to take the exam. You will have to do the first two assignments and an essay on subject: How can a software development company convince a customer that it is making high-quality software? I expect the essay to be 3-5 pages long. You may write in Finnish or in English. The deadline for your essay (and final versions of assignments 1 and 2) is the same as for others (23.5.).

A couple of relation schemas for chat and conversation subsystems are available here.

I have added information on which subtasks in the first assignment can be answered in Finnish.

General information




A list of subjects which the course is likely to cover

For those interested in only 2 credits (2 ov)

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,
3) a coursework, which contains 4 parts, and
4) an exam.

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.


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 may have it, and probably also

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) 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.

After the deadline for the fourth part, the students get a chance to polish the coursework and put together the final version, Each student will get an individual time to return the coursework.

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.  


The example project home page.

Software for third assignment

Motivational slides, 8.1.

Slides on lifecycle models, 8.1.

Slides on requirement specification, 8.1.

Slides on use cases, 15.1.

Slides on this year's example project, 15.1.

Slides on a basic OO waterfall software process, 15.1.

Slides on OO analysis, 22.1.

Slides on OO architecture design, 27.1.

Slides on Model-View-Controller architecture analysis, 27.1.

Slides on OO design, 27.1.

More UML diagram types presented with short examples, 5.2.

Slides on reverse engineering 5.2.

Slides on data-oriented OO software development, 12.2.

Slides on architectures and frameworks, 19.2.

A couple of slides on OO testing, 5.3.

A couple of slides on configuration management, 19.3.

Slides on software globalisation, 19.3.

Slides on software installation, 26.3.

Slides on software process quality, 26.3.

Slides on case tools and program generation and third assignment, 2.4.

Slides on software product quality, 9.4.

Lectures on testing were mainly done by viewing two videotapes by Roger Pressman. You may alternatively just read the related sections of his book.

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.


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.



First assignment (Requirement specification)

In Task 2 of this assignment, the set of use cases you are to work on is determined by the last digit of your student number as follows.
  1. Read the example project requirement specification document. How does it compare with the IEEE 830 standard? You may write this answer in Finnish.
  2. Draw a use case diagram or several from the use cases you are working on (if you work on several subsystems or if just feels like there are so many use cases for one diagram). Use some ordinary drawing tool, like the Word picture editor, or any other, which can be viewed in a web browser or Word
  3. Check up the use cases. Improve somehow at least six of the old use cases (by e.g. adding exceptions). As an alternative, you can try to invent new use cases. Say, adding one new use case accounts for improving three old ones.
  4. Compare the IEEE 830 standard and the system specification template that can be found through Pressman's book's web pages. You may do this in Finnish.

You do not need to have a complete solution at this stage. Return whatever you have done by the deadline.

Return the assignment as follows:

  1. Zip all your files into one .zip file.
  2. Send this as an attachment in a mail to Jari Kitinoja (
  3. Use subject: SE-2003-1-username where username of course is your username on domain.
  4. Include in your e-mail such an e-mail address of yours, which you read regularly.


Some feedback now exists on the first The deadline for returning this (fairly easy and simple) first assignment is 3.2. By the way, any reasonable feedback about the requirement specifications is welcome, as this is a real system we are planning to implement!

Second assignment (Analysis and Design)

In this assignment, the set of use cases you are to work on is the same set you used in Task 2 for Assignment 1.

I was actually meaning that you should use those also in Task 3 of Assignment 1, but did not explicitly state it there. (However, a good software developer is also a smart software developer, and does smart things or asks... you will find out if you start working in software business.)

The example project's homepage is now

  1. Take the texts of the use cases. Use text analysis to create an analysis-level class diagram (OMT style methodology). Add the relevant operations (methods) of the use cases to your class diagrams.
  2. Have a look at the current versions of relation schemas of the example project (you find them from the project's home page, plus a couple of relation schemas for chat and conversation here. Pick up the relations, which relate to your use cases. Make one class / relation, and add other meaningful classes, which you can find from the text. This way, you should get a class diagram, which is probably quite similar to that of the previous task. Add the relevant operations (methods) of the use cases to your class diagrams.
  3. Do object-oriented design based on your analysis model from Task 1.
  4. Do object-oriented design based on your analysis model from Task 2.
  5. Pressman shortly describes the term Data Dictionary in his chapter for analysis modeling (probably you can find a definition in some other software engineering book as well). Take a development tool you have used or use (e.g. Fujaba, ArgoUML or Kaveri). Does it have a data dictionary? (A simple yes or no is not good enough - explain a little bit.) What is the difference between a data dictionary and a development tool data storage (repository)? How does your tool store design data? How can several people use the same design data with that tool? (You may answer this in Finnish of or in English.)
Some general points:

Questions and answers

  1. Q: What should I return for Task 3 and Task 4.
    A: All the diagrams you have produced as a part of your design. At minimum I would expect you to produce one class diagram for each of tasks 1-4. The use cases should be represented as sequence diagrams or activity diagrams. Also, a small model vocabulary would be great.
  2. Q: How many sequence/activity diagrams should I produce?
    A: One diagram / use case for each task would be good.
  3. Q: Is it possible that my analysis and design models are the same?
    A: This would not look very good.
  4. Q: Do I need to make sequence diagrams?
    A: Object-oriented design, as presented in this course, includes the specification of the dynamics of the application. In the slides, we used sequence diagrams. However, as stated in "some general points", you may use either sequence or diagrams or activity diagrams.
  5. Q: In which tasks do I need to create sequence or activity diagrams? A: From the previous answer it follows that you need to do these in Task 3 and Task 4. However, to do the object-oriented design, you need to make these diagrams first on analysis level. It follows that to do Task 3 and Task 4 properly, you need to specify also these diagrams for the analysis level class diagrams. So, a good answer would have these in all Tasks for all use cases (4 x 6 = 24 diagrams!).
  6. Q: I started doing this too late and can't create all this before the deadline. What am I supposed to do?
    A: Return what you have by the deadline.
  7. Q: What does "This time you can use either sequence diagrams or activity diagrams to represent the dynamics of your system" mean?
    A: It means that you may use sequence diagrams as in the examples in the slides, or activity diagrams, to represent system dynamics.
  8. Q: What is the difference between Task 1 and Task 2?
    A: In Task 1 you pick classes from the text. In Task 2 you first pick relevant relations , and make a class for each of them (for instance, if there is a relation Course_instance which is relevant for your use cases, then you will create a class Course_instance), and then add more classes based on the text.
  9. Q: What is the difference between Task 1 and Task 3? (Or Task 2 / Task 4?)
    A: In Task 1 and Task 2 you pick up things from the text or relations and you probably will not be able to pick up "everything" needed for the implementation from the text/relations. In Task 3 / Task 4 you add details to make up something, which could be implemented - attributes and operations, which seem necessary but could not be identified from the text.

Third assignment

Third assignment is given in slides about case tools (see material). The deadline is 30.4. (better not leave it to that :).

Fourth assignment

Write 5-10 pages on the following subject: "How automatic program generation and case tools affect software quality and the use of metrics". You may write in Finnish or in English.

You may return this with your final submission, for which the deadline is 23.5.