CS603 Assignment 1 Solution Fall 2026

CS603 Software Architecture and Design Assignment 1 for Fall 2026 is built around the ShipSync scenario, a shipment scheduling system with three transport modes: courier vans, delivery drones and cargo trucks. Part (a) asks for the classes identified from the scenario, and Part (b) asks for the relationships between those classes with their types and multiplicities. The solution file linked below covers both parts with a complete class table and a complete relationship table.
The key design idea is generalisation: the three transport modes share the same operations, so they are generalised into one abstract class, TransportMode, and each subclass provides its own cost formula. That single decision keeps the design clean and makes the rest of the relationships easy to read.
What Does the Solution File Cover?
Which Classes Were Identified?
Thirteen classes were identified. Customer is the person who schedules shipments, with ID, name, phone and address. DeliveryPartner handles shipments and operates transport vehicles. Shipment is the core class: it holds shipment details, calculates the total cost, initiates transit and generates the manifest. Route holds the origin, destination and distance of a shipment. Manifest is the document generated for a shipment listing its details. TransportMode is the abstract generalised class declaring calculateCost(), initiateTransit() and getManifestInfo(). CourierVan is the standard courier van with registration number, base rate and mileage, plus Driver for its driver details. DeliveryDrone is the autonomous drone with battery level, altitude limit, weight and flight-time rates and a takeoff command, plus IoTController which sends takeoff and other commands to the drone using an IoT protocol. CargoTruck is the freight truck with maximum payload, corridor assignment and slot reservation, plus FreightCorridor for its assigned freight route and ContainerSlot for reservable slots inside the truck. Class identification like this builds on the object modeling in the CS304 Assignment 1 solution on class design.
What Are the Inheritance Relationships?
There are three inheritance relationships, all generalisations of TransportMode. CourierVan inherits TransportMode, DeliveryDrone inherits TransportMode, and CargoTruck inherits TransportMode. A courier van is a transport mode, a drone is a transport mode, and a truck is a transport mode. Each subclass gives its own cost formula, which is polymorphism: the same calculateCost() operation behaves differently for a van, a drone and a truck.
What Are the Associations, Aggregation and Composition?
Associations connect the working parts: Customer (one) to Shipment (many), since a customer schedules many shipments and each shipment belongs to one customer. Shipment (many) to DeliveryPartner (one), since a shipment is handled by one partner and a partner handles many shipments. Shipment (many) to TransportMode (one), since a shipment uses one transport mode and the same mode can serve different shipments over time. CourierVan (one) to Driver (one), DeliveryDrone (one) to IoTController (one), and CargoTruck (many) to FreightCorridor (one). Aggregation appears once: DeliveryPartner (one) to TransportMode (many), a weak whole-part link, because the vehicles can exist without that partner. Composition appears three times, for parts that cannot exist without their whole: Shipment (one) to Route (one), since the route belongs to its shipment and is deleted with it; Shipment (one) to Manifest (zero or one), since the manifest is generated for and depends on one shipment; and CargoTruck (one) to ContainerSlot (many), since container slots are parts of a truck and do not exist without it. Relationship modeling of this kind also appears in the CS403 Assignment 1 solution on entity relationships and the CS504 Assignment 1 solution on use case modeling.
How Do You Download the Solution File?
You can download the complete solution file from Google Drive using the link below. It contains the full class table with purposes and the full relationship table with types, multiplicities and explanations. Study the TransportMode hierarchy first, then trace one shipment from Customer through Shipment to its Route, Manifest and transport mode. Also check your work against the exact assignment file on VULMS, since question wording can vary.
Frequently Asked Questions
What is generalisation in class design?
Generalisation means finding what several classes share and pulling it into one parent class. Here, courier vans, drones and trucks all calculate cost, initiate transit and provide manifest info, so those shared operations live once in the abstract TransportMode class instead of being repeated three times.
What is the difference between aggregation and composition?
Both describe whole-part relationships, but the strength differs. In aggregation, the part can exist without the whole: a transport mode still exists if its delivery partner changes. In composition, the part cannot exist without the whole: a route, a manifest or a container slot has no meaning once its shipment or truck is gone.
Why is TransportMode abstract?
TransportMode is abstract because no shipment ever uses a generic transport mode: it always uses a van, a drone or a truck. Making it abstract prevents meaningless TransportMode objects while still letting the three real subclasses share its operations and be handled uniformly.
What is polymorphism in this design?
Polymorphism means the same operation behaves differently by subclass. Shipment calls calculateCost() on its transport mode without knowing which one it is, and the van, drone and truck each apply their own cost formula: mileage and base rate, flight-time and weight rates, or payload and corridor rules.
Last updated: November 2026.



