fu marketplace capstone project

121
FU Marketplace 1

Upload: long-nguyen

Post on 09-Jan-2017

16 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: FU Marketplace Capstone Project

FU Marketplace

1

Page 2: FU Marketplace Capstone Project

Nguyen Hoang Long

Hoang Thanh SonTrieu Cong Son

Tran Duc Hieu

Do Hai Dong

SupervisorMr. Nguyen Tat Trung

2

Page 3: FU Marketplace Capstone Project

1 Introduction

2 Project Management Plan

3 Software Requirement Specification

4 Software Architectural Design

5 Testing

6 Deployment

7 Lesson Learned

Content

8 Demo – Q&A

3

Page 4: FU Marketplace Capstone Project

Introduction

4

Page 5: FU Marketplace Capstone Project

Background

5

Page 6: FU Marketplace Capstone Project

Background

8001200

Number  of  lunch  servings  per  day  -­‐ 9  May  2016

Group  FU  -­‐ Hoà  Lạc Cơm  Canteen

6

Page 7: FU Marketplace Capstone Project

Background

Search system

Order system

Report system

Review system

Shop management

Order management

7

Page 8: FU Marketplace Capstone Project

Background

Can not filter shop:• By Dorm (e.g. Dom A, Dom B, Dom C)• By Product Category

Can not search with keyword:• Shop’s name• Seller’s name• Product’s Name• …

8

Page 9: FU Marketplace Capstone Project

Background

Comment to buy

Like to confirm

9

Page 10: FU Marketplace Capstone Project

Background

10

Page 11: FU Marketplace Capstone Project

Background

11

Page 12: FU Marketplace Capstone Project

Background

12

Page 13: FU Marketplace Capstone Project

Background

13

Page 14: FU Marketplace Capstone Project

Background

14

Page 15: FU Marketplace Capstone Project

Our Idea

15

Page 16: FU Marketplace Capstone Project

Our Idea

16

Page 17: FU Marketplace Capstone Project

q Easy shop searching

q Intuitive order management

q Powerful notification system

q Production Ready!

Main Objectives

17

Page 18: FU Marketplace Capstone Project

Scope

In scope

q Shop searching and filteringq Shop pageq Order managementq Report bad orderq Shop reviewq Notificationq Shop managementq Shop analyticsq Admin dashboardq Multiple languages support

Out of scope

q Suggestionq Fully functional layout for mobile browserq Native mobile appq Payment systemq Chat systemq Feedback for website systemq Looking-for-shipper systemq Inventory Managementq Optimal shop ranking

18

Page 19: FU Marketplace Capstone Project

System Proposal

19

Page 20: FU Marketplace Capstone Project

Project Management Plan

20

Page 21: FU Marketplace Capstone Project

Iterative and Incremental Software Process Model

Software Process Model

21

Page 22: FU Marketplace Capstone Project

• Time: 8 hours / day, 5 days / week

• Location: Room C203, FPT University Hoa Lac

• Communication:

• Supervisor meeting: Once a week

• Teambuilding: Once a month

Teamwork

22

Page 23: FU Marketplace Capstone Project

Project Planning

23

Page 24: FU Marketplace Capstone Project

Risk ManagementName Prevention Correction Status

Internet interruptions

All developers have to set up the isolated development environment and have an offline copy of the documentation. Using various online communication tools and creating face-to-face meeting at any possible time.

Always make sure that there are alternative ways to connect to the internet, such as: using VPN or 3G.

Closed

Illness or absence of team members

Member has to notice to the team about absence period and the plan of how to keep up with the work process.

Ensure that the absence of a member won’t affect others and always have plans to deal with this problem.

Closed

Business problemAny ideas are welcome but members have to discuss with others and always focus on the reality and possibility.

Make sure the business logic of any ideas is carefully analyzed. Closed

Requirement changedTeam members should carefully analyze and define requirements. Each new requirement has to be reviewed by all team members and supervisor.

If there is a “must be changed” requirement, all team members must join the meeting to decide whether it should be implemented or not.

Closed

MiscommunicationEverything has to be documented. Any team member has to attempt to express his/her opinion clearly and carefully.

Make sure any miscommunication has to be resolved. Closed

New technologyChoosing technology based on member’s qualification. All team members must nurture by self-study.

When someone chooses a new technology, he/she has to explain to all team members about the decision.

Closed

24

Page 25: FU Marketplace Capstone Project

Project Tools

Docker Draw.io Pivotal Tracker WebStorm2016.2.2

GitLab Astah Prov7.0.0

Google Chromev52

Microsoft Office2016 Postman

Visual Studio Code v1.3.1

25

Page 26: FU Marketplace Capstone Project

Technologies

NodeJS SequelizeJS v3 PostgreSQL v9.5Elasticsearchv2.3.4

MailgunReactJS v15.1.0

Redis v2.8.9

Docker Amazon S3Redux v3.5.2

26

Page 27: FU Marketplace Capstone Project

RequirementSpecification

27

Page 28: FU Marketplace Capstone Project

Use Case Diagram

User

Seller

Administrator

28

Page 29: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

29

Page 30: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

30

Page 31: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

31

Page 32: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

32

Page 33: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

33

Page 34: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

34

Page 35: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

35

Page 36: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

36

Page 37: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

37

Page 38: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

View reject reason of an order

Review shop

38

Page 39: FU Marketplace Capstone Project

User

Sign in with Google account

View shop feed

Search shop

Filter shop

View shop

Place order

View orders

Cancel an order

Review shop

View reject reason of an order

39

Page 40: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

40

Page 41: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

41

Page 42: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

42

Page 43: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

43

Page 44: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

44

Page 45: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

45

Page 46: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

46

Page 47: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

47

Page 48: FU Marketplace Capstone Project

User

Open a new ticket

View all submitted tickets

View a ticket’s detail

Close a ticket

Reopen a ticket

Update account information

Request to become seller

Change language interface

Sign out

View notification

48

Page 49: FU Marketplace Capstone Project

Seller

View own shop dashboard

Update shop information

Update shop opening status

Update shop ship places

Change shop avatar

Change shop cover

Add item to shop

Delete an item

Update an item information

Update an item sale status

49

Page 50: FU Marketplace Capstone Project

Seller

View own shop dashboard

Update shop information

Update shop opening status

Update shop ship places

Change shop avatar

Change shop cover

Add item to shop

Delete an item

Update an item information

Update an item sale status

50

Page 51: FU Marketplace Capstone Project

Seller

View own shop dashboard

Update shop information

Update shop opening status

Update shop ship places

Change shop avatar

Change shop cover

Add item to shop

Update an item sale status

Delete an item

Update an item information

51

Page 52: FU Marketplace Capstone Project

Seller

View own shop dashboard

Update shop information

Update shop opening status

Update shop ship places

Change shop avatar

Change shop cover

Add item to shop

Update an item sale status

Delete an item

Update an item information

52

Page 53: FU Marketplace Capstone Project

Seller

View own shop dashboard

Update shop information

Update shop opening status

Update shop ship places

Change shop avatar

Change shop cover

Add item to shop

Update an item sale status

Delete an item

Update an item information

53

Page 54: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Start shipping an order

Finish an order

View shop statistics

Reject an order

Abort an order

54

Page 55: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Start shipping an order

Finish an order

View shop statistics

Reject an order

Abort an order

55

Page 56: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Reject an order

Start shipping an order

Abort an order

Finish an order

View shop statistics

56

Page 57: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Reject an order

Start shipping an order

Abort an order

Finish an order

View shop statistics

57

Page 58: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Reject an order

Start shipping an order

Abort an order

Finish an order

View shop statistics

58

Page 59: FU Marketplace Capstone Project

Seller

View active orders

View all orders

Accept an order

Start shipping an order

Finish an order

View shop statistics

Reject an order

Abort an order

59

Page 60: FU Marketplace Capstone Project

Administrator

Sign in

Sign out

Change password

Change language interface

Update user information

Update user role

Ban a user

Remove ban from a user

View all users

60

Page 61: FU Marketplace Capstone Project

Administrator

Sign in

Sign out

Change password

Change language interface

Update user information

Update user role

Ban a user

Remove ban from a user

View all users

61

Page 62: FU Marketplace Capstone Project

Administrator

Sign in

Sign out

Change password

Change language interface

Update user information

Update user role

Ban a user

Remove ban from a user

View all users

62

Page 63: FU Marketplace Capstone Project

Administrator

Sign in

Sign out

Change password

Change language interface

Update user information

Update user role

Ban a user

Remove ban from a user

View all users

63

Page 64: FU Marketplace Capstone Project

Administrator

View all shops

Update shop contact information

Update shop opening status

Update shop public status

Create a new promotion campaign

Ban shop

Remove ban from shop

Update shop ship places

Update shop avatar

Update shop cover

64

Page 65: FU Marketplace Capstone Project

Administrator

View all shops

Update shop contact information

Update shop opening status

Update shop public status

Create a new promotion campaign

Ban shop

Remove ban from shop

Update shop ship places

Update shop avatar

Update shop cover

65

Page 66: FU Marketplace Capstone Project

Administrator

View all shops

Update shop contact information

Update shop opening status

Update shop public status

Create a new promotion campaign

Ban shop

Remove ban from shop

Update shop ship places

Update shop avatar

Update shop cover

66

Page 67: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

67

Page 68: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

68

Page 69: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

69

Page 70: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

70

Page 71: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

71

Page 72: FU Marketplace Capstone Project

Administrator

View all shop promotion campaigns

Update a shop promotion campaign

View all shop opening requests

Accept shop opening request

Reject shop opening request

Close a ticket

View all tickets

Start investigating a ticket

72

Page 73: FU Marketplace Capstone Project

Usability

Performance

• Fully request restricted by token

• All requests are encrypted by HTTPS

Non-functional Requirement

Scalability

Extensibility

Security

73

Page 74: FU Marketplace Capstone Project

• Strictly follow coding principles and use ESLint to verify code convention

• Automation test including Unit Tests and Integration Tests

Non-functional RequirementSecurity

Usability

Performance

Scalability

ExtensibilityExtensibility

74

Page 75: FU Marketplace Capstone Project

• Apply Microservices architecture• Using HAProxy for load balancer and proxy server• Using ELK Stack to monitor and alert service

Non-functional RequirementSecurity

Usability

Performance

Scalability

Extensibility

Scalability

75

Page 76: FU Marketplace Capstone Project

• Implement Redis to cache frequently use requests

• Implement background job for external requests, heavy processing requests

• Create indexes for PostgreSQL

Non-functional RequirementSecurity

Usability

Performance

Scalability

Extensibility

Performance

76

Page 77: FU Marketplace Capstone Project

• Most of actions can be accomplished within 3 clicks.

• Provide notification-pushing system to help buyer/seller aware about his order’s status changes even he/she close web application

• The shops feed should always be updated by using real-time update over WebSocket

Non-functional RequirementSecurity

Usability

Performance

Scalability

Extensibility

Usability

77

Page 78: FU Marketplace Capstone Project

Architectural Design

78

Page 79: FU Marketplace Capstone Project

Overall system

FUM Web Frontend FUM Backend System

RESTApi

Socket.IO

79

Page 80: FU Marketplace Capstone Project

FUM Frontend DesignToken based authentication

POST /loginusername=…&password=…

HTTP 200Token: JWT (Bearer Token)

GET /api/v1/users/meX-Access-Token: Bearer JWT (Bearer Token)

HTTP 200{ id: 2, fullName: “Tran DucHieu” }

80

Page 81: FU Marketplace Capstone Project

FUM Frontend DesignSingle page application

A single-page application (SPA) is a web application or web site that fits on a single web page with the goal of providing a more fluid user experience similar to a desktop application.

Technical approaches

81

Page 82: FU Marketplace Capstone Project

FUM Frontend DesignRedux architecture

o Redux architecture revolves around a strict

unidirectional data flow.

o All data in an application follows the same

lifecycle pattern, making app logic more

predictable and easier to understand.

o Three fundamental principles:o Single source of trutho State is read-onlyo Changes are made with pure functions

Store

View Action

82

Page 83: FU Marketplace Capstone Project

FUM Frontend Design

Use  Case

83

Page 84: FU Marketplace Capstone Project

FUM Backend Design

Use  Case

Microservices architecture• Redis for caching• Background jobs service• Elasticsearch for searching, filtering• Socket.IO for real-time message

transporting• Amazon S3 for storing images• OneSignal for Website Push• Mailgun for sending email

84

Page 85: FU Marketplace Capstone Project

Use  Case

Database Design – RDB Diagram

85

Page 86: FU Marketplace Capstone Project

Use  Case

Database Design – Elasticsearchanalyzer:

folding:

tokenizer: "standard",

filter:["lowercase", "asciifolding"]

:  Auto  created  field

86

Page 87: FU Marketplace Capstone Project

Database Design – Elasticsearch

Now  this  shop  can  be  search  by:  

-­‐ bún chả

-­‐ bun  cha

-­‐ bún cha

-­‐ bun  chả

87

Page 88: FU Marketplace Capstone Project

Database Synchronization

88

Page 89: FU Marketplace Capstone Project

Use  Case

Why two databases?

Shop Feed data modeling on SQL Database

89

Page 90: FU Marketplace Capstone Project

Use  Case

Why two databases?• Join 6 tables to get summary information of a

shop.• Do full-text search across many fields of

different tables:• Shop’s name• Shop’s description• Items’ name• Items’ description• Seller’s name

• Filter shop by at least 2 fields of 2 tables: ShipPlace and Items’ Category

• Sort shops by some fields: opening status, average rating,…

è Difficult to accomplish and very low efficiency to do on Relational Database System Shop Feed data modeling on SQL Database

90

Page 91: FU Marketplace Capstone Project

Shop search query• Easily to search across multiple fields with

multi_match

• Rank the result with individual field boost

• Auto correction with fuzziness query

• Calculate aggregation (count the number of shops in each category)

name:  2name.folded:  1description:  2description.foldedseller.fullName:  2seller.fullName.folded:  1items.name:  10items.name.folded:  5items.description:  10items.description.folded:  5

91

Page 92: FU Marketplace Capstone Project

Background Job Processing

With Background JobWithout Background Job

92

Page 93: FU Marketplace Capstone Project

Class diagram

Use case User Place Order 93

Page 94: FU Marketplace Capstone Project

Sequence diagram

Use case User Place Order 94

Page 95: FU Marketplace Capstone Project

Testing

95

Page 96: FU Marketplace Capstone Project

Identify Requirements

Test Planning

Design Test Case

Test Excuting

Test Result Report

Bug Fixing

Regression Testing

Acceptance Testing

Testing Life – Cycle

96

Page 97: FU Marketplace Capstone Project

Testing Type

59Use  Case API Testing

Integration Testing

Acceptance Testing

Performance Benchmark

Unit Testing

97

Page 98: FU Marketplace Capstone Project

FUM - Backend FUM-Front-end and whole project

§ Lack of UI § UI

§ Unit testing and API testing § Integration testing

§ Business logic§ Database constraint

§ User Experience§ User Interface

§ Backend Development team § Tester

§ Automation testing § Manual testing

Test Strategy

98

Page 99: FU Marketplace Capstone Project

Testing Tools

Chrome and Chrome Developer Tools: Used for testsize of web page, size of component on page andview log or inspect element

Pivotal Tracker: Manage bug and task (www.pivotaltracker.com).

Microsoft Excel: Manage test case

99

Page 100: FU Marketplace Capstone Project

Testing Environment

59Use  Case

Software: Google Chrome 52.0

Hardware:

- Windows 7 Professional 32-bit, Service Pack 1

- Intel® Core™ i3

- Install memory (RAM) : 4.00GB

100

Page 101: FU Marketplace Capstone Project

Testing Tools - Backend

Mocha: JavaScript test framework running on Node.js andin the browser

Sinon.js: standalone test spies, stubs and mocks forJavaScript, to assert result at variable level.

Chaijs: Chai is a BDD / TDD assertion library for node, to help assertion result in a test

Artillery: a modern load-testing framework, support HTTPS,WebSockets, Scriptable, HTML reports.

101

Page 102: FU Marketplace Capstone Project

Testing Environment - Backend

59Use  Case

Software: Chaijs v3.5.0 Mocha v2.4.5

Sinon v1.17.4 Artillery v1.5.0

Hardware:

- Ubuntu 14.04 64-bit

- Inter® Core™ i3

- Install memory (RAM) : 8.00GB

102

Page 103: FU Marketplace Capstone Project

Testing Model

59Use  Case

103

Page 104: FU Marketplace Capstone Project

Testing Model – Backend

BDD: Behavior-Driven developmentTDD: Test-Driven development

104

Page 105: FU Marketplace Capstone Project

Test Case Guideline

59Use  Case

105

Page 106: FU Marketplace Capstone Project

Test Case Sample

59Use  Case

Normal  Flow1. Login to FUM System.2. Click to “Account”.3. Change  phone  number4. Click to “Save” button

Alternative  Flow1. Login to FUM System.2. Click to “Account”.3. Click  to   button

106

Page 107: FU Marketplace Capstone Project

Test Case Guideline - Backend

59Use  Case

107

Page 108: FU Marketplace Capstone Project

Test Case Sample - Backend

59Use  Case

108

Page 109: FU Marketplace Capstone Project

Benchmark Scenario

59Use  Case

109

Page 110: FU Marketplace Capstone Project

Log bugs process

59Use  Case

1. Tester or developer detects defect

à Log bug on PivotalTracker à assign to related developer.

2. Developer START fix bug

àChange status of bug to DELIVERED and assign to tester again

3. Tester check bug again

• If bug fixed, requester ACCEPT bug

• If bug didn’t fixed, REJECT bug and re-assign to developer, developer RESTART fix bug and flow

to step 2

110

Page 111: FU Marketplace Capstone Project

Log bugs process

59Use  Case

111

Page 112: FU Marketplace Capstone Project

Test Report

59Use  Case

Test Case Stage 1 Stage 2-1 Stage 2-2

Final Pass Fail Pass Fail Pass Fail

Client

User 70 16 158 6 164 0 164

Seller 65 7 90 21 111 0 111

Admin 140 8 149 10 159 0 159

GUI Test Case 12 2 12 0 12 0 12

Total all Test Case 287 129 409 41 446 0 446

112

Page 113: FU Marketplace Capstone Project

Test Report - Automation test

59Use Case

Test casePhase 1 Phase 2

FinalPass Fail Pass Fail

API Test - User 46 0 93 0 93API Test - Admin 52 0 67 0 67API Test - Seller 58 0 91 0 91Unit test - Library 0 0 8 0 8Unit test - Middleware 6 0 6 0 6Unit test - Model 43 0 87 0 97Total all test case 205 0 352 0 352

Coverage

Statements 85.32% 86.99% 86.99%Branches 73.12% 74.38% 74.38%Functions 96.13% 94.32% 94.32%Lines 90.34% 87.55% 87.55%

113

Page 114: FU Marketplace Capstone Project

Automation Test Coverage Report

59Use  Case

114

Page 115: FU Marketplace Capstone Project

Benchmark Report

59Use  Case

115

Page 116: FU Marketplace Capstone Project

Deployment

116

Page 117: FU Marketplace Capstone Project

Deployment

Use  Case

Continuous Integration (CI) + Continuous Delivery (CD)

117

Page 118: FU Marketplace Capstone Project

Deployment

59Use  Case

118

Page 119: FU Marketplace Capstone Project

Lesson Learned

119

Page 120: FU Marketplace Capstone Project

Teamwork Management Skill

Requirements Analysis New Technology

120

Page 121: FU Marketplace Capstone Project

DEMO & QA

121