View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Case Final Project Summer 2007

Milestone 6-Domain Coding

Skills Required for M6

  1. Smalltalk Coding.
  2. Learning to work with the repository. You may run your own database or register for the Cincom public Store
  3. Effectively merging code at regular intervals without loss of data.
  4. SUnit Tests
  5. Using BOSS
  6. Planning extra features(for credit) for the project besides the minimun requirements.

If you haven't coded SUnit tests before, you don't need to worry. You can browse
through the code for the SUnit Tests given to you for M1 - Individual Coding Assignment.

Grading Criteria:

Point of Sale Functionality
Each POS has inventory of items............05
Inventory items are correctly accounted for including the concept of lot numbers.......10
Auto reordering functions properly..................................................07
Sell Policies are correctly handled ......................................................................07
Central Coordination System Functionality
CRUD POS ............................................................07
CRUD Suppliers..............................07
Load and Save Simulation data .............................10
Route orders and invoices correctly.................................................07
Supplier Functionality
Maintains inventory of items...............................05
Ensures each Lot of items has same price ..................05
Fills orders and send invoices .......................10
General Requirements
SUnit Tests ...........................................................................10
Good Smalltalk comments, code and style....................................10

Things to avoid

1 High Coupling: An Object only should send messages only to:
Itself (its own instance methods)

Objects sent as arguments to message m

Objects created as part of reaction to m

Objects directly accessible via attributes

2 Low Cohesion: Each class should have a single overriding responsibility (High Cohesion)

3 Rigidity

4 Fragility

5 Immobility

6 Hackability

7 Cyclic dependency:
a) Do not have cyclic dependencies in your packages.

b) Decompose application into independent modules.

Working with the Store

Store keeps the Parent version of the code.

You may “Load” a working version after unloading the “old” package.

Changes are seen only on Developers local image.

You can put your changes to the Server with “Publish”.

Store assigns a new version with each publish.

Other team members may go to Store and select the version they want to work on by
right clicking and select Load.

When both people have changes, we have to Merge. Avoid conflicts whenever possible. However, you may sesolve conflicts with “Merge”.

To look for changes/conflicts, select your method in the browser and right click to bring up menu.
Select Store->CompareWith…

Try to minimize Merges.

Our UML Class Diagram

M5 UML Diagram.jpg

For a large application like this that requires several different components to be merged,
a fair distribution of work is required so that specific people can be answerable for
specific issues in the application. It makes the design process significantly
dynamic and effective.

The division of work

IMG_3740.JPG

Link to this Page