CSC216 Lab 02 - Software Engineering Best Practices

CSC216 Lab 02 - Deployment

CSC216 Lab 02: Deployment

When you have deployed your software, you have released it to your customer. For CSC216, that means your work is ready for evaluation by the teaching staff. We will evaluate your work against the Lab 02 rubric. As you compare your submission against the rubric and make your final push to GitHub, you will complete these final tasks:

  • You have met the requirements and design for the Lab 02 PackScheduler project
  • You have a green ball on your lab section’s Jenkins (No test failures and no static analysis notifications)
  • All student unit tests pass with a green bar (0 errors)
  • At least 80% statement coverage on Student, StudentRecordIO, and StudentDirectory (Note you may have a green ball on Jenkins and lose points here. When grading, we look at each class individually. Jenkins gives a green ball for an average of 80% statement coverage. A green ball for coverage does NOT mean full credit for coverage!)
  • All teaching staff JUnit tests pass with a green bar (0 errors)
  • You have run system level black box tests on your submission and reported actual results of execution
  • There are no FindBugs notifications
  • There are no PMD notifications
  • There are no CheckStyle notifications
  • All code is commented with meaningful comments
  • Javadoc webpages are generated with the latest comments
  • That you meet all rubric items for the assignment

Make sure that all code and other required artifacts are pushed to GitHub by the assignment deadline. Check your Jenkins results on your lab’s Jenkins server Lab assignments will not be accepted late!

Lab Deadlines & Jenkins Servers

All labs are due 10 minutes before the start of the next lab. Additionally, each lab section has their own dedicated lab Jenkins server. The table below provides the deadline and server URL for each lab section in Fall 2016.

Reminder: Jenkins Certificate Wranings

You will receive a certificate warning about a self-signed certificate when accessing the Jenkins servers for CSC216. All of the certificates for CSC216 Jenkins servers were self signed personally by Dr. Heckman. Please accept the exception each time you visit a Jenkins server.

Also note that permissions to the Jenkins server are at the job level. If you have no permissions to any job, you will be unable to sign into the Jenkins server. Once jobs are created, you will be able to sign in.

Lab Section Deadline Jenkins Server Link
Section 201 2/7/2022 10:30am https://csc217-201-jenk.csc.ncsu.edu/jenkins/
Section 202 2/7/2022 12:40pm https://csc217-202-jenk.csc.ncsu.edu/jenkins/
Section 203 2/7/2022 2:50pm https://csc217-203-jenk.csc.ncsu.edu/jenkins/
Section 204 2/7/2022 5:10pm https://csc217-204-jenk.csc.ncsu.edu/jenkins/
Section 211 2/8/2022 8:20am https://csc217-211-jenk.csc.ncsu.edu/jenkins/
Section 213 2/8/2022 2:50pm https://csc217-213-jenk.csc.ncsu.edu/jenkins/
Section 214 2/8/2022 5:10pm https://csc217-214-jenk.csc.ncsu.edu/jenkins/
Section 222 2/9/2022 12:40pm https://csc217-222-jenk.csc.ncsu.edu/jenkins/
Section 223 2/9/2022 2:50pm https://csc217-223-jenk.csc.ncsu.edu/jenkins/
Section 231 2/8/2022 11:45pm https://csc217-231-jenk.csc.ncsu.edu/jenkins/
Section 601 2/8/2022 11:45pm https://csc217-601-jenk.csc.ncsu.edu/jenkins/

Generate Javadoc

Commenting your code is important! Comments describe what the code is supposed to do. At a minimum, you should comment your classes, fields, and methods. All methods should be Javadoc-ed, including methods that were automatically generated by Eclipse. When working with CSC 216 projects, you should delete any automatically generated non-Javadoc documentation and replace it with Javadoc appropriate for the overridden method.

Java provides the Javadoc tool to generate a set of web pages that display the comments for your code.

We recommend deleting your existing doc/ directory before generating your Javadoc to ensure that all changes are there.

Reminder: Generating Javadoc

To generate Javadoc, you need to configure and run the Javadoc tool, fix Javadoc errors and warnings, and check the generated Javadoc pages. Make sure you push your changes to GitHub!

Lab Rubric

You will be evaluated out of 70 points in the Technical Rubric. Synchronous students will also be evaluated on their teaming: a combination of In-Lab Participation and Out-Lab Participation. Collaborating Asynchronous students will also be evaluated on their participation in their pair.

Pair/teams are expected to work together on all aspects of the lab activity. Points may be deducted for not contributing or for not providing a partner the opportunity to contribute. The teaching staff strongly encourages working synchronously and requires that these collaborative sessions are documented in GitHub commit messages for the teaching staff to note the team contribution.

Technical Rubric

Phase Grade Item Points Details
Teaching Staff Unit Tests 10 Pass all of the teaching staff unit tests, both provided and hidden.
Student Unit Tests 10 Pass all of your unit tests.
Student Test Coverage 10 80% statement/line coverage on Student, StudentRecordIO, and StudentDirectory
Teaching Staff System Tests 10 Pass all of the teaching staff system tests (note that they will not be provided).
Student System Tests 15 Pass all of your black box tests.
Javadoc Comments 5 All classes, including the tests are commented with meaningful comments.
Javadoc Generation 5 Javadoc tool was used to generate the HTML version of the API, which matches the current version of the in-code Javadoc.
Style 10 Any PMD, CheckStyle, or SpotBugs Scary or Scariest notifications will result in a one point deduction, up to the available points.
  Total Points 75  

Synchronous Collaboration Rubric

Grade Item Points Details
In-Lab Collaboration 10 PTFs will be looking for collaboration with your partner during lab activities. Did you participate in completing the lab assignment? Did you balance your roles of driver and navigator? There will be deductions for observations of non-participation or hogging of one role or the other so a partner cannot participate.
Out-Lab Collaboration 10 Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit?
Tasks 5 Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed)
Collaboration Check-in 5 Did you complete the collaboration check-in on time?

Asynchronous Collaboration Rubric

Grade Item Points Details
Collaboration 10 Did you make at least one meaningful commit to GitHub for completing the lab (e.g., meaningful means that the commit has to contribute to the solution and isn't superficial)? If you pair programmed, is it noted in the commit message? Did you not allow your partner, who wanted to contribute, to commit?
Tasks 5 Did you add your tasks for the lab to the top of the README file? Did you include owners? Did you include internal deadlines? Are the tasks shown as complete with any other needed updates (e.g., the person who completed or helped with the task changed)
Collaboration Check-in 5 Did you complete the collaboration check-in on time?

Deductions

Grade Item Points Details
Misnamed file or incorrect project structure -5 Incorrect names of files or incorrect project structure. This can include problems when importing the project to Eclipse for acceptance testing, incorrect location of the system test file, incorrect file extension, etc.
Other deductions -5 If the project has to be manually graded due, you will receive a 5 point deduction. Make sure that your project builds on Jenkins!

Extra Credit

Grade Item Points Details
Over 90% Statement Coverage 1-3 One point of extra credit for each class with over 90% statement coverage.
100% Statement Coverage 1-3 One point of extra credit for each class with 100% statement coverage except for the paths described in the writeup (in addition to the points earned for the 90% statement threshold).
100% Condition Coverage 1-3 One point of extra credit for each class with 100% condition coverage except for paths described in the writeup (in addition to the points earned for the 90% & 100% statement threshold).

Push to GitHub

Finalize your submission by pushing all of your code and other project artifacts to GitHub

  • Ensure all classes and methods are fully commented and your Javadoc pages are up to date.
  • Add the unstaged changes to the index.
  • Commit and push changes. Remember to use a meaningful commit message describing how you have changed the code.

Reminder: Staging and Pushing to GitHub

GitHub Resources:

Check Jenkins

Ensure that your Jenkins job is reflecting the results that you expect for the level of completion of your lab assignment.

Reminder: Interpreting Jenkins

Check the following items on Jenkins for your last build and use the results to estimate your grade: