A Simulator to Demonstrate Working Principle of Design...
Transcript of A Simulator to Demonstrate Working Principle of Design...
1
SCHOOL OF COMPUTER SCIENCE
A Simulator to Demonstrate Working
Principle of Design Patterns
Kumar Yash Shree (UID: 8364398)
BSc Software Engineering
May, 2016
Supervised by:
Dr. Liping Zhao
2
Abstract
A simulator to demonstrate working principle of design patterns
Author: Kumar Yash Shree
With ever changing face of technology it is more important to get software right as losing time on trying new ways whilst having recipes of success is
unaffordable. Design patterns are repeatable processes used to achieve known results.
The project is aimed at creating a web-based tutorial service to teach
students about design patterns. The approach taken makes learning process easier.
The first part of the report contains a description of the background research
done and summary of the project. Furthermore, it describes the approach taken as well as the tools and technologies used in the development. Also a
description of the project development iterations is included covering the entire process and activities happened throughout the iterations. Post that,
evaluation, testing and validation methods are discussed.
The final section introduces a summary of achievements.
Supervised by: Dr.Liping Zhao
3
Acknowledgements
Firstly, I would like to thank my project supervisor Dr. Liping Zhao for being
so helpful, understanding and supporting me throughout the project.
Also I’d like to thank my friends and family to cheer me up when I was loaded with work and providing valuable feedback to improve the project.
Special thanks to Amna for helping me finalize the home page for the website.
Thanks to people who took time to evaluate the project and helped making
this project better. Thanks everyone for your suggestions and feedback, they have been very helpful.
4
Contents
1. Introduction 7
1.1 Motivation 7
1.2 Aims 8
1.3 Structure of the Report 9
2 Research 11
2.1 About Design Patterns 11
2.1.1 Categories 12
2.1.2 Why 13
2.2 Associated work 14
3 Approach taken 17
3.1 Tools and Technologies used 17
3.2 Development process 18
3.2.1 Chosen Agile methodology 19
3.2.2 Process application 20
4 Iteration 1 22
4.1 Stage 1: Research 22
4.1.1 Tools 22
4.1.2 Topics covered 22
4.2 Stage 2: Requirement Gathering 23
4.2.1 Functional 23
4.2.2 Non-functional 24
4.3 Stage 3: Design 25
4.4 Stage 4: Implementation 29
5
4.5 Stage 5: Testing 29
5 Iteration 2 30
5.1 Stage 1: Research 30
5.1.1 About design patterns 30
5.1.2 Colours 30
5.1.3 User Interface 31
5.2 Stage 2: Requirement Gathering 31
5.2.1 Functional 31
5.2.2 Non-functional 32
5.3 Stage 3: Design 33
5.4 Stage 4: Implementation 34
5.5 Stage 5: Evaluation 35
6 Iteration 3 37
6.1 Stage 1: Research 37
6.2 Stage 2: Requirement Gathering 37
6.2.1 Functional 37
6.2.2 Non-functional 38
6.3 Stage 3: Design 38
6.4 Stage 4: Implementation 39
6.5 Stage 5: Evaluation 40
7 Testing and Evaluation 41
7.1 Verification and Validation 41
7.2 Testing 41
7.2.1 Integration testing 41
6
7.2.2 Compatibility testing 42
7.2.3 Performance testing 43
7.2.4 Acceptance 44
7.3 Evaluation 45
7.4 Conclusion 47
8 Insight 48
8.1 Achievements 48
8.2 Challenges 49
8.3 Lessons learnt 50
8.4 Future plans 51
Bibliography 52
7
1. Introduction
This section will describe the reason behind choosing the project,
objectives and the overall structure of the report.
1.1. Motivation:
The term ‘Software engineering’ can be interpreted in many different
ways. Development of computer based applications is the primary
understanding especially the critical ones that are still an unsolved
mystery [1]. The origin of software can be traced back to 70’s [2] but
it is quite uncanny that failures are still part of the development
process which results in major economic loss. People tend to tag
failures with programming errors, but there is more to it, and other
root causes contribute as much.
And therefore to avoid failures Design Patterns, a language neutral
selection of tried and tested solutions that are highly flexible, are used
and that to in practically any type of application or domain [3].
First introduced in 1995 in a book called Design Patterns: Elements of
Reusable Object Oriented Software written by Erich Gamma, Richard
Helm, John Vlissides and Ralph Johnson also known as Gang of Four
(GoF) book, twenty-three Design Patterns were described with links to
UML diagrams, source code and real world examples for each [4].
Although more types of design patterns exist, he book has classified
them into three different categories based on their use:
8
Table 1.1 Design pattern classification
One of the two major benefits of using design patterns is, they provide
solution to software development issues that are proven to be
successful and have been used by people from all over the world. It
facilitates minimal coupling and high cohesion and isolation of
variability that otherwise ay exist in the system, making it easier to
build and maintain systems [5].
Moreover, it helps developers to interact with each other using well
recognised and understood names of software interactions [6].
In short, using design pattern will help save both time and money [7]
as further down the line people become more familiar.
1.2 Aims
The objective of this project is to create a web based tutorial service to
teach students about when and why to use design patterns. A total of
9
9 patterns are included in the project due to limited time for research
and development, and these are the simplest and most common
patterns, it will be difficult to find a system that does not use at least
one of these patterns and big systems use almost all of them [8].
Furthermore, efforts have been made to cover each of them in depth
yet keeping simple and interesting enough to follow along with simple
examples. Additional effort went into making sure that the system is
user friendly and has easy to navigate interface.
1. 3 Structure of the Report
Report summary:
Section 2: Research
This section talks about classification of design patterns and explains
its meaning and use. The path for research is also sketched.
Section 3: Approach taken
This sections talks about the tools and technologies used during the
development process, how and why they were chosen and also explain
the iterative approach taken for the development.
Section 4: Iteration 1
This chapter lists the requirement gathering process with the first ever
design of the project and also gives a short description of the research
done along with the performed review.
10
Section 5: Iteration 2
This section has details of further research, refinement for
requirements and changes made to the design after the first iteration.
A description of the implemented functionalities can be found along
with the methods acquired for testing to make sure if they are
implemented appropriately.
Section 6: Iteration 3
This sections talks about the final touch given to the tutorial service
based on evaluation and testing. It has the final completed version of
the project.
Section 7: Testing and Evaluation
This chapter explains all the evaluation and testing done to ensure the
completeness, correctness and robustness of the service. It has a brief
description of criteria used for evaluation.
Section 8: Conclusion
A summary of the project achievements, difficulties and outcomes is
given along with prospective improvements in the system and ways in
which it can be extended.
11
2. Research
This chapter describes the importance of design patterns in software
development.
2.1 About Design Patterns
Design Patterns are a tested repeatable solution to commonly
occurring problems in software application development. Patterns
are language neutral and is also used in any type of domain [3].
Any design pattern has four essential elements [8].
1. The pattern name describes the problem of design. Tagging a
name helps increase our design vocabulary.
2. The problem describes its context and explains when to apply
the pattern. Moreover, it may contain a list of criteria that must
be met before applying the patterns.
3. The solution is like a template that instead of describing a
particular concrete implementation describes the elements that
make up the design.
4. The consequences describes end result expected after applying
the pattern
ref: Table 2.1.1
12
Table 2.1.1: Singleton Pattern
2.1.1 Categories:
Design patterns vary at level of abstraction, based on purpose
they are classified into three major categories:
Structural Patterns establishes a simple way to understand the
relationship between different entities [9]. It is a blueprint to
how classes and objects are combined to build a larger system.
Moreover, each pattern has a unique purpose.
Advantages [10]:
Class and object composition made easier
Supports multiple inheritance to compose interfaces
Helps identify new functionalities to objects
Increases efficiency
Supports larger system build
13
Creational Patterns help in object creation while maintaining
the appropriate level of abstraction. It controls the creation of
objects and solves the problem of added complexity to the
design. At times, the nature of an object has to change with the
program, and this is when we use creational patterns to provide
more flexible approach [11].
Advantages [12]:
Maintains an appropriate level of abstraction: only
interfaces are known to the system and not the operations
going behind the scene.
Supports a dynamic object creation: And avoids hard-
coded programming
Improves flexibility
Behavioural Patterns characterize the ways in which classes or
objects communicate with each other and distribute
responsibilities [13].
It identifies the common communication patterns between
objects which increases flexibility. The behaviour among classes
is distributed using inheritance. Few describe how a group of
objects work together to perform a task that no single object can
carry out [8].
2.1.2 Why
The benefits of using design patterns in developing applications
are infinite. They are well described solutions to common
14
problems occurring in software development which helps saving
both time and money.
Defined already, patterns provide industry standard
approach to solving common repeating problems and save
time when used sensibly.
Reusability is promoted leading to robust and highly
maintainable code, thus reducing the cost of ownership for
software product.
Promotes better code understanding and debugging since
patterns are already defined and this leads to developing
application faster [15].
Fig 2.1.2: Code re-use benefits
2.2 Associated Work
Good amount of effort went into making sure that a unique
approach is taken to teach design patterns. Therefore, extensive
15
research went into looking for similar tools and understand what
they did not offer to make this simulator unique.
Approach: defined user goals, the amount and type of information,
stake-holders
Layout: navigation ease, defined site content area and organised
them
Explanation: ease of conveying messages and explaining things
A brief evaluation of both positive and negative aspects of other
simulators is summarised below:
Fig2.2.1: Evaluation summary
This evaluation summary highlights following design drawbacks:
Navigate among related design patterns
Use good contrast for the simulator
Avoid too much information
16
Use real life simple examples to explain
Avoid long scroll bar and hence too much information on
one page
Fig 2.2.2: Long scrolls
17
3 Approach taken
This section explains in detail the approach taken to build the simulator.
Necessary details about the development environment, tools and
technology used etc. is also mentioned.
3.1 Tools and Technologies used
The Sublime text is a cross-platform source code editor
supporting many programming languages and its functionality
can be extended with the use of plug-ins, and they are free to
use under free-software license [15]. It is a light weight text
editor, but it provides strong IDE like features, it is highly
customizable and allows users to code and refactor with ease
and efficiency. It allows easy navigation between project
directories, multiple selection, split editing and plug-in api [16].
HTML is markup language with markup tags used to describe
web documents [17]. It has code-words and syntax like any
other language. These websites are then accessible to anyone
connected to the internet, relatively easy to learn and quite
powerful. Hypertext is a method use to move around on the web
and Markup is what HTML tags do to the text inside them [18].
CSS is a style sheet language used to describe the presentation
of a document written in markup language. It is most often used
to set the visual style for webpages and user interface written in
HTML but it can also be applied to any XML document [20].
18
Chrome browser is used to read HTML documents and display
them [17]. First released in 208, it is one of the most popular
web browsers accessible on both Mac OS and Linux. It has clean
and simple user interface, free to use [19], easy to navigate
between tabs.
Javascript used to create interactive web pages. It runs on
visitors’ computer and does not require constant download from
server. It is used to create login page and direction map in the
system [21].
W3school is the organisation responsible for maintaining the
HTML language [18]. It is a website with all the information for
web developers with tutorials to HTML, CSS, Javascript etc [22].
Design Pattern: Element of reusable Object-Oriented Software
is a book of design patterns describing simple solution to
common recurring problems in software development. This book
describes ideas that do not have precise names. Moreover, it
names these design patterns allowing developers to use them
time and again [8].
3.2 Development Process
The system development is split into distinct phases using Agile
software development principles. The system is reviewed frequently
to ensure that right software is being built and it is easier to make
19
changes to the system at early stage if things are not going the way
they are supposed to.
3.2.1 Chosen Agile Process
The entire development process is divided into three time-boxed
iterations therefore strict time boundaries is set around each
iteration to track the progress of system more efficiently. One of
the advantages of taking this approach is to present independent
working part of the system at the end of each iteration [23].
Fig 3.2.1.1: Time-boxing
The following figure represents the systematic approach taken in all
iterations that includes requirement gathering, implementing,
20
testing and evaluation.
Fig 3.2.1.2: Iterative development model
3.2.2 Process application
This section will talk about the implementation of the agile practise
used in the development:
Requirement gathering: Although people tend to give little
attention to getting requirements right, this section is essential part
of the project, and it is quite challenge too. Also, success of any
project particularly depends upon whether or not the requirements
are gathered properly. It requires frequent meeting with customers,
their involvement from start, defining an agreeing to the scope of
project etc [24].
Analysis & Design: The system is realised and the plan, model or
policy is executed; a prototype is created before implementation
21
of any functionality which allows developers to visualize the product
that is built [24].
Testing: The system is then tested at different levels and on
different criteria. Since many options exist so depending upon the
type of application, developer choses testing methodologies. For the
purpose of this project unit testing and acceptance testing is
incorporated.
Evaluation: The final phase for a development process is to
measure the effectiveness of the system and find prospective
improvements [25].
22
4 Iteration 1
This iteration focuses on initial research done for the project along with
requirements gathering.
4.1 Stage 1: Research
Understanding system and choosing correct tool for development is
an essential part of the process. Getting things right at this stage is
vital as it will change the face of the project at later stages.
4.1.1 Tools
Determining whether the type of application is online or
stand-alone is important to select tools for its development.
Web application is better for this project as it allows easy
access to the system from anywhere as long as the user is
connected to the internet. HTML is preferred over .NET
because it is not a programming language and therefore
easier to learn and implement. With the capabilities of
chrome most of the things are done that Silverlight does not
allow. Moreover, Microsoft stopped developing Silverlight
frameworks and shifted to html [26].
4.1.2 Topics Covered
Understanding Design patterns in depth is the starting point
of the project; it helped understanding the scope of the
system and gave an overview of what has to be built.
23
Furthermore, common design patters are identified to
include in the system, ones that are found the most.
Although no formal statistics are found on which design
patterns are most commonly used but the gang of four
identifies the nine important ones to start with. The
following details are included:
Pattern name, intent, common name, motivation to use,
applicability, structure, participants, collaboration,
consequences, implementation, sample code, known uses
and related design patterns.
4.2 Stage 2: Requirement gathering
Before writing the first line of code for the system, it is important to
understand what is intended to build. Developers have to
understand the system requirements by meeting users to get
detailed information on what the system is intended to do. This
requires developers to ask questions about the system.
4.2.1 Functional requirements: It describes a set of inputs,
behaviour and output [27].
Home page: A brief description of what the system is
intended to do.
Navigation bar: aids easy navigation between pages
24
Page for different categories: A separate page for each
category of patterns is made (e.g. Structural, Behavioural,
Creational etc.) to give a brief explanation for each of them.
Pages for specific patterns: Each pattern is described in a
separate page and easy navigation to other pages is
provided
About us page: It talks briefly about author and intention of
the system.
Login page: User can login to personalize workspace
Contact us page: Visitors can reach author with suggestion
and improvements.
4.2.2 Non-functional requirements: Criteria that can be
used to judge the overall performance of the system
[27]. Few important ones are discussed below:
User interface: Everything designed for a device which human
may interact with, it includes a complete experience [28].
Special effort goes into making sure that the system is eye-
friendly
Navigation ease: Easy navigation is a key to successful software
systems.
Relevant content: Every effort has been made to make sure the
system does not have irrelevant contents.
25
Cross platform support: It is very important for a web
application to be able to run on different platforms.
4.3 Stage 3: Design
The look and feel of each page is decided at this stage. Simple pen
and paper is used to decide the layout for the website. The
navigation bar is set at the top for easy navigation between pages
and a brief description of what the website is intended to do is
given. The subscription functionality is also added to the home
page.
Refer to the figure below:
Fig 4.3.1: Home page
26
Easy approach to explaining things is taken. The Design Pattern
page gives a brief description of what design patterns are, who
can use them, when are they used, how to use etc. Simple
examples are included for even a beginner to understand the
concept of design patterns. At the end of page, links to different
categories is given for users to dive into the topic right away.
Fig 4.3.2: Design patterns page
The figure below shows the page specific to categories. It
describes the category briefly and there is a link to the sub-types
at the end, also users can navigate to other categories from the
same page. Also to avoid dead-end, a back button is placed at
27
the end of the page. And the navigation bar is also placed at the
top.
Fig 4.3.3: Pattern category page
Contact us page contains a map along with a form to submit
ideas and suggestions.
Refer to figure:
28
Fig 4.3.4: Contact-Us page
About us page below contains a brief description of the system
and the author.
Fig 4.3.5: AboutUs page
29
4.4 Stage 4: Implementation
This iteration is focussed at understanding requirements and
sketching a rough idea for the system, therefore no implementation
is done.
4.5 Stage 5: Testing & Evaluation
The system is evaluated for meeting the requirements and ease of
conveying information through the interface.
30
5 Iteration 2
The second iteration is focussed on developing initial structure which is
then extended.
5.1 Further research
5.1.1 Design Patterns
As the development process reaches to this stage more
questions about the structure and presentation of content is
generated. Therefore one more step of further research is
included in the process for intensive research on design
patterns; this is also helpful in deciding the content and
layout for the system and the important patterns that have
to be added.
5.1.2 Colours
Right colour contrast is important in web-development but
developers happened to spend less time on it. A tool
developed by Adobe called Kuler is used to decide the colour
combination for the system.
Bright colours make users feel more energetic [29],
therefore bright colours for the home page is used, similarly
dark shades relax users allowing them to focus [29],
therefore darker background is chosen for the pages
explaining the categories of design patterns.
Choosing colours on the opposite ends of the spectrum
creates eye friendly view, also high contrast make pages
more readable [29]. All of this is kept in mind while
31
choosing colour for the system.
5.1.3 User Interface (UI)
This is very important while designing a website as a user might
click on the Back button if she gets frustrated. Keeping the
design simple and clean is the basic principle [30].
With intensive research following rules are concluded:
Consistency in UI helps user feel comfortable.
Purposeful layouts help draw user attention.
Selecting default options for users already helps them save
time.
5.2 Refinements in requirement gathering and
Implementation
During the development process it is realised that some
functionalities are more difficult than expected in the beginning so
they are dropped and new functionalities are introduced. As the
understanding of the system increases with time developers have to
refine initial requirements
.
5.2.1 Functional requirements: Following functional
changes are made to the system:
Links to further reading added to each design pattern
32
Contact us map is changed from showing navigation to
location.
Contact us page is modified for easy communication
(please refer to figure below)
Design patters catalogue is modified to promote better
understanding.
Fig 5.2.1.1: Contact us page
5.2.2 Non-functional requirements: Following changes
made to the system.
33
Access to different types of design patterns is
restricted in the system to enhance better
understanding by following the correct trail to
learning.
5.3 Design
In this iteration developer has to think whether or not it is beneficial
to have a database for the system. Before implementing technical
stuff it is better to make sure if a database is required.
The following table summarises the advantages and disadvantages
of having database:
Table 5.3.1: Database summary
After an intensive research it is decided that no database is needed
for the purpose of this project to achieve desired functionalities for
the system, in fact, using a database adds more complexity and is
time consuming.
34
5.4 Implementation
In this step, fully functional navigation bar is created to navigate
between pages along with a network of prototype pages. The home
page is implemented with subscription functionality. Also more
information related to design patters is added to the system.
Almost the entire website is complete in this iteration. Refer to
figures below:
Fig 5.4.1: Home Page
35
Fig 5.4.2: Design Pattern page
5.5 Testing & Evaluation
Navigation bar is tested thoroughly to make sure system is inter-
related. The cross platform browser support is tested to check if the
website is supported by common browsers, this is done on Opera,
Firefox, Microsoft Edge, Google chrome and traditional IE 8 to
support compatibility with older browsers.
An evaluation is done post to testing to understand users’ response.
Therefore, a survey of 10 people is done and the following
drawbacks are identified in the system.
36
Summary:
Users identified dead ends at the end of each pattern
page.
Buttons not clear enough
Current tab is not highlighted on visit
No links to further reading provided
No means to communicate with author if users want
to make suggestions and improvements
The next iteration is devoted to making changes to the system
based on reviews from users. Also, final touch is given to the
system which includes the addition of contact us, about us, login
page etc.
37
6 Iteration 3
This iteration is devoted to implementing all the functionalities, giving the
final touch to the system, making changes based on feedback from users,
populating tools with data, etc.
6.1 Further Research
More research on design patters is performed during this iteration
to make sure the data being populated into the system is relevant
and trustworthy. Further research is conducted for the possibility of
improvements in the system during this iteration.
6.2 Refinement in Requirement gathering
More changes are made to the system described as follows:
6.2.1 Functional Requirements:
New functional changes are identified for the system to
enhance overall usability and understanding for users.
Start-button is added to the home page to start the
tutorial (please refer to figure).
38
Fig 6.2.1.1: Home Page revised
6.2.2 Non-functional Requirements:
One important improvement is made to the system. The
representation of home-page is restricted to in terms of
dimensions, therefore, resizing the browser does not affect
layout.
6.3 Design
One of the major flaws with the other simulators out there is to
having to scroll up and down the page for a long time as the entire
data is populated in one page.
This resulted in one of the important objectives of dividing the
information sensibly for users to gain interest in the subject before
having to see the entire information to read, therefore, a short
39
description for each pattern category is given before allowing users
to dive into details.
This promoted interests in user and while evaluation it is realised
that users tend to stay longer on this system rather than others
that have all the information displayed on one page.
6.4 Implementation
Based on feedback from users following functional additions and
changes are made to the system:
Back button introduced at the end of each page to
avoid dead ends. (refer to fig below)
Fig 6.4.1: Back-button implemented
40
Buttons are not clear enough so they are highlighted
with the most eye catchy colour ‘red’.
Fig 6.4.2: Buttons highlighted
Links to further reading is provided at the end of each
Design Pattern categories.
6.5 Testing
Next section describes the testing methodologies used to ensure
the quality of the system.
41
7 Testing and Evaluation
This section gives a description of the testing methodologies used for the
project and other evaluations done.
7.1 Validation and Verification [31]
It is a procedure used to verify whether or not the system meets
requirements and specifications and fulfils the intended purpose.
Validation is expressed by the query “Are you building the right
system?” and verification by “Are you building it right?”
A system may pass verification but fail validation and this might
happen when the system is built as per the gathered requirements
but the gathering itself failed to address user needs.
The validation is performed by engaging with prospective users of
the system to check if it does what it is intended to do.
7.2 Testing
Different testing methodologies are used to ensure if the right
system is build and it works the way it is intended to. This section
explains the use of various techniques in determining the
correctness of the system.
7.2.1 Integration testing
Integration testing is essential part of a development
process where units of the program are integrated and
tested as a whole on different criteria.
42
The two well-known ways to carry out integration testing are
bottom-up and Top-down approach. Unit testing is the primary
stage for bottom-up approach and subsequently higher level
combinations are tested. For top-down approach the combination
of units are tested first before jumping into the units. Usually
and also for the purpose of this project, bottom-up approach is
taken first allowing developer to test units before combination
[32].
For example the navigation bar is tested for each click to
make sure it functions the way it is supposed to and
navigates to the right pages.
The contact us page is tested to implement the map location
properly.
7.2.2 Compatibility testing
A non-functional software testing used to ensure
compatibility of the system after combining all the units
together like web-browser, hardware, platform, etc. It is a
testing of product in the users computing environment [33].
It is important for to ensure the compability of the system
with the most common browsers. For the purpose of this
project these the system is tested with the following
43
browsers: opera, firefox, chrome, edge, IE8.
Post to implementing a piece of functionality to the system,
testing is performed on all of these browsers to check
whether or not everything works exactly the same. Also the
system is tested against screen resizing, scrolling, layout
etc. (please refer to fig below)
Fig 7.2.2.1: Edge Fig 7.2.2.2: Firefox
Fig 7.2.2.3: Opera Fig 7.2.2.4: IE8
7.2.3 Acceptance testing
Performed by users, the primary goal of acceptance testing is to
44
establish confidence in the system [34]. For the purpose of this
project, Black-box testing approach is taken where the
functionalities of a system is examined without peering into the
internal structure [35].
For this project black-box testing is performed at the end of each
iteration. Newly developed functionalities are tested for the
intended use.
7.2.4 Performance testing
It is used to determine speed and effectiveness of a system, to
check whether or not the system build is scalable and
responsive. It verifies whether a system works the way it is
claimed to work.
The Load testing approach is taken for this project where the
system is put on demand and response is measured. It
determines behaviour of the system under both normal and peak
conditions [36].
Usually implementation of functionalities and the hosting server
determines system performance and a system connected with a
database is more likely to suffer issues.
System validation is not the centre of focus for this testing
method as no database is incorporated and related files and the
website are hosted on local disc.
45
7.3 Evaluation:
Assessment based on different criteria of a system related to its use
and sustenance is often referred to as Evaluation. Furthermore, a
set of characteristics like understandable, learnable, supportable
etc. is also a part.
An evaluation is carried out with a group of 10 users. They are
requested to evaluate the system based on different criteria and the
statistics are presented below:
Criteria 1: Look and feel of the website – an average of 7.3 is
obtained
0123456789
10
Look & Feel
Look & Feel
46
Criteria 2: Ease of conveying information – an average of 8.2 is
obtained.
Criteria 3: Sensible content coverage and its verifiability – an
average of 8.2 is obtained
0123456789
10
Ease of conveying information
Ease of conveyinginformation
0
2
4
6
8
10
12
Sensible content coverage
Sensible content coverage
47
7.4 Conclusion
Different evaluation and testing techniques are applied to test
effectiveness and correctness of the system and changes are made
based on feedback obtained from users.
48
8 Insight
A summary of project achievements, challenges faced and lessons learnt
is provided in this section. Also the possibilities of future improvements
are taken into account.
8.1 Achievements
Project achievements are described in this section.
A complete system explaining design patterns which is accessible
from all over the world as long as the device is connected to the
internet. Every effort is made to ensure correctness and relevance
of the system.
Design Patterns are sensibly included after an intensive research
to allow users to learn the most common and simple ones first. For
each category three patterns are included as described below.
Creational – Abstract factory, Factory Method.
Structural – Adapter, Composite, Decorator
Behavioural – Observer, Strategy, Template method.
Real-life simple examples are used to explain each pattern for
quick learning and gaining beginners’ interest.
Example – Adapter: A very simple example is using phone charger.
Suppose your mobile phone needs 9 Volts of supply to get charged
49
but the main supply is 220 V which is not what you require, but it
can be a source and you can have something that can get 9 V out
of this 220 V and supply to your phone for charging. Now phone
charger is acting as an adapter for you. Basically it is makes a
relationship between two unrelated interfaces.
A good amount of effort is made into making if the application User
friendly. The colour combination, layout, design, presentation etc.
are well thought. Changes are also made to the system based on
feedback from users making sure the tool is easy to use and
understand.
8.2 Challenges
Some difficulties faced during the development process is described
in this section.
Coming out with a finished product is itself a challenge which is
overcome during this project.
Presenting the idea to people the way author has imagined in his
head is quite a task, therefore presentation and seminar is also one
of the challenges faced.
Different tools and technologies are present to do the same task,
doing enough research to understand what is good for one’s project
is also a challenge.
50
8.3 Lesson learnt
Good understanding of Design Patterns is developed along with
web development technologies used during the project.
The entire process of building the final product from scratch,
improving it along the way and presenting it at the end is learnt.
Developing this project alone allowed author to take all the
decisions related to the project, hence project development skills
are polished.
The importance of user interface is understood whilst designing a
system targeting a different set of audience.
Having introduced to web technologies in the first year of the
University author still had to learn a lot more about them for this
project and gained more knowledge.
A full software development life cycle is experienced during this
project.
One important lesson learnt is one never has enough time,
prediction go wrong, implementing even a small functionality to the
system can take a while at times.
Also never presume one knows everything because one does not.
51
8.4 Future plans
One of the most important future developments is to add more
design patterns to the system.
Making the system more interactive is also necessary as it
promotes user interaction. According to a national survey it is
identified that the interactivity of a system is directly proportional
to the time users spend with it.
Incorporating database to save incoming queries is also a possible
future implementation.
Extension of the system to allow users to have their personal
working space by logging in to the website is also a prospective
extension so that users can save their progress.
Adding frequently asked question section could enhance usability.
52
Bibliography
[1] Michael Jackson, Engineering and Software Engineering, Department of
Computing, the Open University
[http://mcs.open.ac.uk/mj665/FoSEZurich2010.pdf]
[2] Wikipedia, Software Evolution,
https://en.wikipedia.org/wiki/Software_evolution
[3] Dominic Burford, Code Project
http://www.codeproject.com/Tips/808058/Reasons-for-using-design-
patterns
[4] Richard Carr, Gang of Four Design Patterns
http://www.blackwasp.co.uk/gofpatterns.aspx
[5] James Maioriello, What are Design Patterns and Do I need them?
http://www.developer.com/design/article.php/1474561/What-AreDesign-
Patterns-and-Do-I-Need-Them.htm
[6] Source making, Design Patterns
https://sourcemaking.com/design_patterns
[7] Dominic Burford, Code Project
http://www.codeproject.com/Tips/808058/Reasons-for-using-designpatterns
53
[8] Kevin Zhang, Design Patterns: Reusable elements
http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf
[9] Source making, Structural Patterns
https://sourcemaking.com/design_patterns/structural_patterns
[10] Tutorials Point, Design Patterns - Overview
http://www.tutorialspoint.com/design_pattern/design_pattern_overvie
w.htm
[11] Java point, Creational design patterns
http://www.javatpoint.com/creational-design-patterns
[12] Unknown user, Why use Creational patterns in Java?
http://programmers.stackexchange.com/questions/261945/why-use-
creational-patterns-in-java
[13] Magnus Kardell, Umeå University, A CLASSIFICATION OF OBJECT-
ORIENTED DESIGN PATTERNS
http://www8.cs.umu.se/~jubo/ExJobbs/MK/patterns.htm
[14] Pankaj, Journal Dev, Java Design Patterns – Example Tutorial
http://www.journaldev.com/1827/java-design-patterns-example-
tutorial#behavioral-patterns
[15] Wikipedia, Sublime Text
https://en.wikipedia.org/wiki/Sublime_Text
54
[16] Sublime Text
http://www.slant.co/topics/12/viewpoints/1/~programming-text-
editors~sublime-text
[17] W3School, HTML introduction
http://www.w3schools.com/html/html_intro.asp
[18] Ross Shannon, What is HTML
http://www.yourhtmlsource.com/starthere/whatishtml.html
[19] Melissa Popp, Tech norms, 5 Reasons Why Google Chrome Should Be
Your One and Only Browser
http://www.technorms.com/7787/top-5-reasons-chrome-best-browser
[20] Wikipedia, Cascading Style Sheet
https://en.wikipedia.org/wiki/Cascading_Style_Sheets
[21] Stephen Chapman, What is JavaScript
http://javascript.about.com/od/reference/p/javascript.htm
[22] Wikipedia, W3Schools
https://en.wikipedia.org/wiki/W3Schools
[23] Unknown blogger, The Importance of Timeboxing and Iterations for
Agile Planning
http://www.telerik.com/blogs/the-importance-of-timeboxing-and-iterations-
for-agile-planning
55
[24] Duncan Haughey, Requirements Gathering 101
https://www.projectsmart.co.uk/requirements-gathering.php
[25] Wikipedia, System Development Lifecycle
https://en.wikipedia.org/wiki/Systems_development_life_cycle#Evaluation
[26] Juan Pablo Araya, ASP.NET vs HTML5 vs Silverlight which is the best?
https://www.quora.com/ASP-NET-vs-HTML5-vs-Silverlight-which-is-the-best
[27] Wikipedia, Non-functional Requirements
https://en.wikipedia.org/wiki/Non-functional_requirement
[28] Margaret Rouse, User Interface (UI)
http://searchsoa.techtarget.com/definition/user-interface
[29] Thomas Cannon, An Introduction to Color Theory for Web Designers
http://webdesign.tutsplus.com/articles/an-introduction-to-color-theory-for-
web-designers--webdesign-1437
[30] Goran Paunovic, THE IMPORTANCE OF WEB USER INTERFACE DESIGN
http://blog.artversion.com/web-design-company/the-importance-of-web-
user-interface-design/
[31] Wikipedia, Verification and Validation
https://en.wikipedia.org/wiki/Verification_and_validation
56
[32] Margaret Rouse, integration testing or integration and testing (I&T)
http://searchsoftwarequality.techtarget.com/definition/integration-testing
[33] ISTQB exam certification, What is Compatibility testing in software
testing?
http://istqbexamcertification.com/what-is-compatibility-testing-in-software/
[34] ISTQB exam certification, What is Acceptance testing?
http://istqbexamcertification.com/what-is-acceptance-testing/
[35] Wikipedia, Black-box testing
https://en.wikipedia.org/wiki/Black-box_testing
[36] Wikipedia, Load testing
https://en.wikipedia.org/wiki/Load_testing