Page 1 of 3
Department of Electrical and Computer Engineering
ECSE 223 Model-Based Programming
Project Deliverable 2 – Controller Specification and Implementation,
Mapping of Gherkin Scenarios (10%)
The deliverables for Iteration 2 are the implementation of the features of the CarShop application for the Controller layer,
including (a) the Controller methods and (b) the mapping of Gherkin scenarios, but excluding the View layer (i.e., the User
Interface (UI)). You are also required to state who worked on which features. You must use the provided common Umple
domain model and the provided set of Gherkin scenarios which serve as an acceptance test suite for your Controller. The
deliverables are due on Tuesday, March 16, at 11:59pm.
The common Umple domain model and the Gherkin scenarios are part of a skeleton Gradle project that will be shared
with you. In addition, this project contains constraints for the domain model, which you can use as a checklist for the
validation required by the Controller or Model.
1. Assignment of Feature Sets to Team Members
Assign the development of the CarShop features to your team members, i.e., each team member is individually
responsible for specific features. Note that you need to clearly record the assignment of features in the Statement of Work
document (see below). Each team member will be graded individually based on the quality of the Controller specification,
the Controller implementation, and the mapping of Gherkin scenarios. However, the whole team is also responsible for
the CarShop application (e.g., completeness, integration, and build issues), thus your application will also be assessed as
a whole. Each team member is responsible for one of the following six features sets and more than one team member
cannot be assigned to the same feature set:
1. Sign up for customer account / Update customer account
2. Login as customer, technician, or owner / Update garage opening hours
3. Setup business information / Update business information
4. Add service / Update service
5. Define service combo / Update service combo
6. Make appointment / Cancel appointment
If a team consists of only five team members instead of six, simply implement the first five.
2. Specification of Controller Interface
Individually specify all operations for your assigned features in the Controller interface. The Controller needs to be placed
in the ca.mcgill.ecse223.carshop.controller package. The interface consists of the full method declaration (incl.
parameters, return type, thrown exceptions, etc.) relevant to your assigned features.
Each team is required to use the common Umple domain model provided to you to ensure compatibility for later
deliverables. When you implement the Controller, you may find yourself adding private helper methods to the Controller
or public helper methods to Model classes, because they are used by the public Controller methods. Any private Controller
helper method can be added directly to the Controller. Any public Model helper method, however, will have to be added
to the common Umple domain model. As such, the common Umple model can be extended (e.g., also for input validation),
Page 2 of 3
but existing definitions in the Umple model cannot be changed! You are required to use the code generated by Umple. As
a team, ensure the consistent use of helper methods across features.
3. Implementation of Controller
Your main goal is to implement the Controller code for the required features of the CarShop application. The application
you need to develop includes both the Model and the Controller layers but excludes the View (i.e., the GUI code). Each
team member is individually responsible for the implementation of the code required for the assigned features.
Note that the CarShop features are not independent but rather depend on each other in various ways. It is not a valid
argument to claim that your feature does not work because another feature is not working and that your feature is working
perfectly by itself. If your feature is not working for whatever reason, you will lose marks. If a team member does not
manage to implement an assigned feature, then the team members of dependent features need to step up. Furthermore,
this needs to be stated clearly in the Statement of Work Distribution (see below).
Future deliverables depend on the features required for this iteration. If a feature is not implemented for this iteration, it
will have to be implemented later for a different deliverable anyway. In any case, all features are expected to be
implemented by the end of Iteration 4.
4. Mapping of Gherkin Scenarios
Each team member is individually responsible for mapping each step in the provided Gherkin scenarios of the assigned
features to the actual Java code of your group. Individual responsibilities of Gherkin step mappings should clearly be
documented in the comments of each step mapping code. As part of this deliverable:
• Implement the Given clauses to bring your application into a designated initial state.
• Map all actions (When clause) to calls to your Controller method.
• Implement all Then clauses using the Umple instance model (CarShop object) or an appropriate query method.
• Ensure that your project successfully compiles (no compile errors).
• Ensure that the execution of Gherkin steps can be successfully initiated by Cucumber (using the Gradle build file
provided to you in the initial content of the source code base).
• Ensure that all Gherkin scenarios pass successfully as acceptance tests.
Each feature contributes to the individual grade of the team member who was assigned to the feature and to the team’s
total grade. The individual grade for the features is 60/90, while the team grade is 30/90.
For example, assume that all team members except for team member X implement all their features successfully. The five
team members who implemented their assigned features will receive 60/60 for their individual mark. Team member X
who did not implement the features assigned to her/him will receive 0/60 for the individual mark. The whole team will
receive 25/30 for the team mark (= 30*m/n where n is the total number of possible marks (e.g., 6*60 = 360) and m is the
total number of achieved marks (e.g., 0 + 5*60 = 300)). Therefore, the team members who implemented their assigned
features will receive 85/90, while team member X will receive 25/90.
If someone else in the team decides to implement a feature instead of the team member assigned to the feature and this
is reported in the Statement of Work Distribution (see Section 6), then the team grade increases, but the individual grade
stays the same. For example, if another team member implements the two assigned features of team member X, then
team member X will receive 30/90 and the other team members will all receive 90/90.
Page 3 of 3
6. Statement of Work Distribution
As a team, fill out the attached Excel sheet "Project - Iteration 2 - Statement of Work Distribution.xlsx" and submit it on
myCourses as your deliverable. The Statement of Work Distribution will trigger the grading mechanism explained in the
section above. The final grade for this submission will also take into account whether the work was distributed evenly as
indicated in the Statement of Work Distribution and as evidenced by the contributions of team members to your team’s
Your team is required to follow the General Rules regarding submissions as stated in the Project Overview document. In
addition to that, you are required to submit the Statement of Work Distribution document.
Deliverables for Iteration 2 of Project Marks
CarShop project 95
Correct and complete implementation of features (individual grade) 60/95
a) Controller specification a) 05
b) Controller implementation b) 25
c) Implementation of Gherkin step mappings c) 10
d) Execution of acceptance tests d) 15
e) Comments (for all manually implemented methods) e) 05
Correct and complete implementation of features (team grade) 30/95
Correctness of project build and setup (team grade) 05/95
Clear Statement of Work Distribution (team grade) 5
Total Marks: 100
The total grade may be adjusted based on the actual contributions of a team member to the deliverables. 学霸联盟