2. What is evaluation?
The British Computer Society define evaluation as:
“An objective review of what has been achieved to establish whether it meets the
required criteria. The evaluation might also look at the wider context, the user
needs and whether there are any undesirable consequences introduced into the
solution.”
Burdett, Arnold. BCS Glossary of Computing (Kindle Locations 999-1001). BCS Learning &
Development Limited. Kindle Edition.
3. What criteria will we use to evaluate?
❏ Fitness for purpose
❏ Efficient use of coding constructs
❏ Usability
❏ Maintainability
❏ Robustness
4. Fitness for Purpose
Fitness for purpose is establishing whether or not your software fulfills all the
requirements detailed in the specification
Any omissions or issues should be described here.
For example:
❏ Optional requirements
❏ Any requirement that is met but there is perhaps a concern.issue or it is “just met”
5. Efficiency
Efficiency can be defined as:
“achieving maximum productivity with minimum wasted effort or expense”
Just because all functional requirements have been met does not that it has been done
in the most efficient manner
6. This does meet the requirement but...
Is it the most efficient solution?
http://i.dailymail.co.uk/i/pix/2012/03/14/article-2114836-122979B3000005DC-328_634x411.jpg
7. Efficient use of coding constructs
This aspect of evaluation looks at whether the most appropriate programming
constructs or data types have been used:
❏ Suitable Data Types
❏ Conditional or Fixed Loops
❏ Arrays
❏ Nested Selection Statements
❏ Procedures/functions with parameter passing
Efficiency does not always mean speed of execution - it could be memory footprint or
limiting access to files/databases
8. Suitable Data Types and Structures
❏ Have you used appropriate variable types
❏ Certain functions can only be carried out on certain variable types - such as
concatenation on strings
❏ Have you used arrays/records suitably?
❏ Arrays may not be faster at execution but with regards to memory size they
can make code more compact
9. Fixed and Conditional Loops
❏ Where possible have you used a loop?
❏ A loop may not always be faster for a small number of iterations but over
larger iterations would be more efficient
If you are using a fixed loop - is that the most efficient option?
❏ What if you are searching through a list of 100,000 items and you have found an
item
❏ A conditional loop could be more efficient as you could use logic to halt the
loop from running unnecessarily, preventing needless iterations
10. Nested Selection Statements
Consider the following code:
IF mark < 50 THEN
SET grade TO D
END IF
IF mark>=50 AND mark<=59 THEN
SET grade TO C
END IF
IF mark>=60 AND mark<=69 THEN
SET grade TO B
END IF
IF mark>=70 THEN
SET grade TO A END IF
This condition is always checked
This condition is always checked
This condition is always checked
This condition is always checked
11. Nested Selection Statements
We can use nested selection statements to (potentially) limit the amount of comparisons:
IF mark>=70 THEN
SET grade=A
ELSE
IF mark>=60 THEN
SET grade=B
ELSE IF mark>=50 THEN
SET grade=C
ELSE
SET grade=D END IF
END IF
END IF
This condition is always checked
Only checked if grade A condition
wasn’t met
Only checked if grade B condition wasn’t met
Only assigned if grade C wasn’t met
12. Modularity and Parameter Passing
Modularity should allow you to reuse functions such as if you have written a FindMin
subroutine which returns the lowest value in a list
def FindMin(arrayname):
min = 0
for counter in range(len(arrayname)):
if arrayname[counter] < arrayname[minposition]:
min = arrayname[minposition]
return min
13. Modularity (cont)
Then we can re-use this function within a program more than once by calling it with
different parameters
Minvalue = FindMin(array1)
Minvalue2 = FindMin(array2)
14. But what about the usability
You can have a functioning product but if it is not usable then it isn't really very useful
❏ You need to test and evaluate the usability of your product
You can ask participants to perform specific or routine tasks using your product
❏ Such as installing the product
❏ Saving a file etc.
Then the important factor is the observation of the user under controlled conditions
and the feedback that is given
15. What info can you collect to evaluate?
There are multiple measures that can be measured to evaluate the experience of a user
❏ Successful Task Rate
❏ Critical/Non Critical Errors
❏ Error Free Rate
❏ Task Times
❏ Subjective ratings or Likes/Dislikes and recommendations
❏ Eye Tracking Data
Source
www.usability.gov.uk/how-to-and-tools/methods/planning-usability-testing.html
16. Think Aloud Protocol
Think Aloud Protocol is when a user will be invited to think out loud whilst using a
product.
They will say what they are thinking and try to describe their thought processes whilst
using a piece of software
❏ This can provide instant feedback
❏ Direct Observation
❏ There is chances for an observer to assist users
❏ Can be instant after task dialogue
17. Doesn’t even have to work yet
Usability testing can even be conducted at the design stage using wireframe models.
It would usually be conducted using a high fidelity wireframe
18. Usability - General User Interface
The User interface is the primary means by which the user will interact with your
software.
It has to be intuitive and user friendly - the user experience (UX design is becoming of
increasing importance) is as crucial as the functionality
You are expected to be able to identify features of software that enhance the
usability for the user
19. Visual Layout
Is it eye catching?
First impressions count!
White Space
Too much, too little?
Location of individual elements
Can everything be seen clearly?
Consider the age and ability
20. Navigation
How can the user navigate around the product or website
1. Breadcrumbs
2. Menus/Sub Menus
3. Return to home page
4. Home Page
5. Favourites/Bookmarks
22. Navigation (cont.)
If it’s a multimedia product/web page are there buttons to navigate:
Forward/Back
Home
Are there scroll Bars?
Vertical/Horizontal
Is there a history of pages/sections viewed.
23. Breadcrumbs
Use of breadcrumbs
These allow the user to navigate their way back up the tree structure
Allows the user to click on
the previous pages
24. Usability - prompts
There will be times when the user is prompted to provide ( or be given) information
Are these prompts particualrly useful?
25. Usability - Layout
Is it eye catching?
First impressions count!
White Space
Too much, too little?
Location of individual elements
Can everything be seen clearly?
Consider the age and ability
26. Usability - Help Provided
Are you providing any help screens/informative messages
Even context sensitive help such as what type of input is expected can be helpful
There may even be accompanying websites/email address to ask for support
27. Maintainability
How readable is your code?
Meaningful variable names/identifiers assist you (and other developers) to identify
the function of programs.
Indentation and the use of white space are also extremely useful
❏ Remember that Python uses indentation instead of delimiters such as { } or ( ) and
end if/next loop etc
28. Robustness
A piece of software is robust if it can deal with exceptional or incorrect data or unusual
situations
You cannot deal with every possible scenario but you should aim to test those that may
happen - even if you cannot deal with them as yet
29. Summary
Your evaluation should:
❏ Identify any discrepancies between the software specification and the completed
software
❏ Identify where you’re coding has been efficient
❏ Identify features of your software that have enhanced the usability for the user
❏ Describe the features in your code that helps with the maintainability of the
software
❏ Reflect and comment on the testing that was undertaken to meet the specification
and demonstrate the robustness of your software.