SDA SE Wiki

Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering

User Tools

Site Tools


Assignment 1: Requirements Improvement

Work through our basic Tutorial: Object Oriented Programming or make at least sure that you could easily do it.

As solution for all three tasks of this assignments, we expect a text file in your part of the repository. Notes in your mind are not enough. We created for each task a simple project in your repository. Use it as a starting point. Stick to our “AXTYY_NameOfTheTask” naming scheme. It makes the job of the tutors easier, when they can rely on some structure.

It will be very helpful to work together in your group on these tasks. Alternatively one of you could create a first solution followed by an iterative review process.

Task 1: Objects and Reality

One strategy to handle complexity and change is to narrow the semantical gap between the part of reality that corresponds to our program and our models and implementations. Object Orientation made a big step towards this direction. Nevertheless it is much easier to see it failing as one would expect. This will be the first part of this task. The goal is not to disqualify Object Orientation, but to let you review the different facets of Object Oriented Class Hierarchies. Once you understood that you can not always take these facets for granted, the second part will be to understand why it still works out so nicely in many relevant situations.

Part 1: Class Hierarchies and Mathematical Objects

Consider the taxonomy of quadrilaterals1)2). At the first view it might be natural to implement a class hierarchy of quadrilaterals that directly corresponds to the structure of the taxonomy. Discuss this idea step by step with respect to the following facets of the Object Oriented subclass/subtype-relationship:

  1. A subclass inherits all attributes of a superclass.
  2. A subtype3) inherits all operation declarations4) of a supertype.
  3. A subclass inherits all operation implementations5) of a superclass.
  4. An instance of a subtype can always be used where an instance of the supertype can be used6). (The programmer has to make sure that the subtype does not expose surprising behavior.)
  5. An instance of a subtype is an instance of a supertype.
  6. Classes have only one superclass7).

What are the problems? What works out fine?

[If you have difficulties understanding the concepts above, we suggest to go through the Tutorial: Object Oriented Programming.]

Part 2: Class Hierarchies that work

Consider a class hierarchy that you like8). How do the facets of the subclass-relationship work out in this case? Describe the differences to a taxonomy of mathematical objects like in part 1.

Task 2: REgelwerk Review of Requirements

  • Repository: A1T02_TimeTracker_REgelwerkReview
  • Extensive sample solution (Almost the full union of your and our observations.)

Consider the following first result of a requirements elicitation for a time tracker application:

(1) The time tracking application allows keeping track of the actual working time of all the users. (2) The workers work in two shifts. (3) When a worker starts his work the time is registered. (4) When a worker leaves later than 30 minutes after the end of his shift, he can enter a short description of the reason for working overtime. (5) Workers shall not see the reasons for the overtime of their colleagues. (6) If a worker of the first shift is leaving before 2 p.m. the system shall give a notice. (7) Mangers can shift the regular working hours temporary. The maximal shift is 4 hours. (8) The monthly report highlights entries using “18 pt Times New Roman” font with color red, (9) where workers arrived too early or too late for their duty period. (10) Managers, workers and the work council will meet regularly to review the social impacts of the time tracking system.

  1. Which implicit assumptions (presuppositions) can you identify? How can you identify them e.g. in (8).
  2. Apply the REgelwerk to find deletions, generalizations and distortions.
  3. In case an effect you find seems relevant enough, give us a suggestion how to improve the text.

Task 3: Logical Review of Requirements

Review the requirements in Task 2 for logical completeness, consistency and conciseness. Name problems and make suggestions how to solve them, e.g. by framing a question to ask the stakeholders.

Give suggestions to make the requirements easy to use during the process and the project evolution: What can be done to make sure that each requirement is traceable, testable and easy to modify.

Further remarks from your side?

Footnotes

1)
It is enough when you pick six classes of http://en.wikipedia.org/wiki/Quadrilateral#Taxonomy.
2)
In case quadrilaterals are too simple for you, you can pick a few subgroups of real finite matrices and consider the subgroup hierarchy. The observations will not be exactly the same, but similar. http://en.wikipedia.org/wiki/Category:Matrices
3)
In Java a type is a class or an interface.
4)
abstract methods
5)
concrete methods
6)
So called Liskov Substitution Principle
7)
At least for Java.
8)
Again a class with six subclasses should be enough. If you need a suggestion: Subclasses of InputStream or Reader in http://java.sun.com/j2se/1.5.0/docs/api/java/io/package-tree.html; Subclasses of Component in http://java.sun.com/j2se/1.5.0/docs/api/java/awt/package-tree.html.
teaching/lectures/atsc/2008/assignment_1.txt · Last modified: 2018/05/09 01:59 (external edit)

SEWiki, © 2025