A Simulator to Demonstrate Working Principle of Design...

56
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

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