Object Oriented Information Systems

System design

Problem

As a Software Engineer, you are given the role of designing the software which supports the operation of a self-driving car. In your research around the capabilities of self-driving cars, you can search for keywords that include autonomous vehicle, driverless car, robotic car.

You are required to identify three operations that you wish to support in your software and provision capability for them through the use of an object-oriented Python program. The system should support the ability for a customer to interact with the system through a front-end.

Running in the system back-end should be a capability that simulates the generation and collection of data attributes that represent the wider environment within which the driverless car is operating.

Deliverables

A report including the design of:

  • Use case diagram.
  • Activity diagram.
  • Class diagram.
  • Sequence diagram.
  • State Transition Diagram.

The report should also define the capability in your system to retain data within the following data structures:

  • List.
  • Stack.
  • Queue.
  • Dictionary.

Reflection

We have followed the suggested learned UML standard to support the development process of this application. This has included the design of use cases, state, activity, sequence, and class diagrams.

The use of UML made it easy to understand the application's behaviour and structure (Rumbaugh et al., 2005); therefore, the development was driven by the provided standards in Object Oriented approach.

The Object-oriented Programming provided modularity to expand the functions in a simple and organised way. Being the objects independent entities, we are able to work in multiple objects without interfering with other developers.

References

Rumbaugh, J., Jacobson, I. & Booch, G. (2005) The Unified Modelling Language Reference. 2nd ed. Massachusetts: Addison Wesley Longman Inc.


Tutor feedback

Use Case Diagram
A good attempt with a range of actors and use cases. I think that some of the use cases are slightly too big or too small in terms of their scope but this is not a huge issue. Be careful with the use of include and extend, as an over reliance can make the structure quite 'brittle' with one change having a cascading effect!

Activity Diagram
A good example of an activity diagram that demonstrates a good knowledge of UML and a good application of that knowledge. What you have created is appropriate for the scenario and system you have described.

Sequence Diagram
Again, these are good examples of sequence diagrams, that demonstrate a good grasp of how the UML should be used. One work of caution, try not to rely too much on returning information to the actor/user in a sequence diagram, we don't care about what we're sending really, just that messages and communication occurs between objects (or themselves).

Class Diagram
A nice example of a class diagram that demonstrates a good range of functionality and skills.

State Diagram
There are some bits that need revision and review on state diagrams. Remember you are showing the different states the thing that you are modelling can be in and the transitions to get between them. This means that you should have a label on each edge to illustrate how they transition. Also the diamond decision box is not something you usually use - this is determined by the transitions.