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
Material
Schedule
Assignments
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.
Literature
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
http://www.amazon.co.uk.
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.
Material
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
Schedule
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.
Assignments
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:Course Information Manager.
- 2:The first half of use cases of Registration Manager.
- 3:The second half of use cases of Registration Manager.
- 4:Result Manager
- 5:Result Viewer
- 6:Exercise Manager
- 7:Exercise Submission and Chat (was accidentally Exercise Viewer)
- 8:Course Information Viewer and Personal Data Entering
- 9:Exercise Submission, Course Feedback, Search, and Calendar
- 0:Conversation system and Chat
- Read the example project requirement specification document.
How does it compare with the IEEE 830 standard? You may
write this answer in Finnish.
- 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
- 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.
- 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:
- Zip all your files into one .zip file.
- Send this as an attachment in a mail to Jari Kitinoja
(jari.kitinoja@cs.uta.fi)
- Use subject: SE-2003-1-username where username of course is
your username on uta.fi domain.
- Include in your e-mail such an e-mail address of yours, which
you read regularly.
Feedback
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 http://www.cs.uta.fi/weto/
-
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.
- 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.
-
Do object-oriented design based on your analysis model from Task 1.
-
Do object-oriented design based on your analysis model from Task 2.
-
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:
- This time you can use either sequence diagrams or activity diagrams to
represent the dynamics of your system.
- Return whatever you have completed on this by 16.3., which is the deadline
for this assignment.
- You should preferably use ArgoUML or
Fujaba to produce your design.
- You may return your work in .pdf format, or the .rtf for Task 5, or the
project files from the tools for Task 1 - Task 4.
Questions and answers
- 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.
- Q: How many sequence/activity diagrams should I produce?
A: One diagram / use case for each task would be good.
-
Q: Is it possible that my analysis and design models are the same?
A: This would not look very good.
-
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.
-
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!).
-
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.
-
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.
-
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.
-
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.