Goals
Assignment 4. Working with requirements and tests
- Terms: Individual assignment, no code may be copied from other students or any other source.
- Starts: When the assignment is published on the course web.
- Deadline: See deadlines
- Examination: Automatic assessment of completed requirements and manual examination
- Feedback: Help is given during tutoring time and slack. Students will receive feedback by email from the examiner when all handins have examined.
After completing the assignment the student should have...
- ...done a second iteration on a system
- ...had the chance to focus on code quality
Rules
Examiner sets the degree using the following:
- Requirement fulfillment
- Quality of handin.
The set of minimum requirements for getting a grade (may still be F)
- Solution has been submitted before the deadline
- Code should be available on a public git repository.
- The application must be deployed on a public web server, the server must be available to the examiner for the rest of the course.
- The assignment is done individually! You are not allowed to copy or take solutions from others.
- No code is copied from others, student has worked alone
- No external code except the code given in task, no libraries are used
- HTML follows web standards
- Application can be tested with the automated test application.
- Code has one single page (index.php) Its ok to have another page for testing
- The application is written in PHP.
- No javascript is used
Examination criteria 1. Requirement fulfillment (25% of grade)
- The more testcases that are fullfilled, the better
- 50%->59% Grade E
- 60%->69% Grade D
- 70%->84% Grade C
- 85%->95% Grade B
- 95%->100% Grade A
- Test-cases should be manually and automatically testable (using the test application).
- The application is well tested even outside of the explicit tests
- Application works as the example implementation
Examination criteria 2. Additional Requirement(s) (25% of grade)
- Student should add some functionality to the application. Preferably with a logged in and a logged out use-case.
- This additional requirement is graded by adding a score to each of the following.
- Size & Complexity of the added requirement(s), 2-3 Extra Use-cases
- Usability (How useful is the requirement in current state)
- Presentation (How well are the extra use-cases and testing-effort presented on GitHub)
- Each of these three criterias will get a grade between 0-4
Examination criteria 3. Code and Solution Quality (50% of grade)
The examininer will do a subjective code review on the entire git-repository and judge the code on the following.
Sub-Criteria: Code is Object Oriented. (as discussed on lectures, previous courses, and course literature)
- Code in classes
- Classes have dependencies
- Avoids using an array when something should be a class
- Code uses type-safety when possible
- Dependencies are encapsulated in a single class
- Databases, files, super-global arrays($_GET, $_SESSION...) etc
- No string dependencies (especially avoid on superglobal arrays)
- Code has an architecture eg. MVC
- Low coupling
- Information Expert
- Law of Demeter
Sub-Criteria: Code is Clean. (as discussed on lectures and course literature)
- Self explanatory code and well commented
- Code is readable, no commented out code, indentation on GitHub looks good
- Meaningful names
- Errors are handled well (Validation, Exceptions)
- High and low abstraction levels are separated
- Read like a newspaper
- Little code duplication
Sub-Criteria: Project is represented well (For example on GitHub)
- Status: What is implemented, or not?
- Describe how to test?
- Describe how to install?
- No passwords in git!
- There is a git history
- Code is readable, no commented out code, indentation on GitHub looks good
Sub-Criteria: General impression
- Examiners overall impression.
Each sub-criteria (1-4) is given a grade 0-4 on the following scale:
- 0. Not even an attempt
- 1. Fail
- 2. Sufficient (bare minimum)
- 3. Good (Some qualities)
- 4. Excellent (All is good)
Grade on criteria 2 is set by the following
- A. All 4s
- B. All 3s, or better
- C. All 3s
- D. All 2s, or better
- E. All 2s
- F. Some 0 or 1
Requirements, example application, and test-cases.
The Login/Registration requirements and test-applications for L3 are exactly the same as in L2.
Assignment submission
- Commit and push a release to GitHub
- Upload latest version on public server
- Run the automated test against your
- Fill in the submission form here: https://goo.gl/forms/w8NU8pGZy2UOJuQD3