A Project Report: Fulfillment
A Project Report: Fulfillment
On
“Gaming Website”
Submitted By
Aashish Godse
1
This is to certify that Aashish Godse has successfully completed the
project titled
“ Gaming Website ”
2
INDEX
1. Acknowledgement 4
2. Declaration 5
3. Feasibility Study 6
3.1.1 Technical Feasibility 6
3.1.2. Economic Feasibility 6
3.1.3. Operational Feasibility 6
3.1.4. Social Feasibility 7
4. Scope of the System 8
5. Proposed System and Its Advantages 9
6. Technical Requirements 10
7. Software Development Model 11
8. Gantt Chart 15
9. System Analysis 17
10.1.1. E-R Diagram 17
10.1.2. Class Diagram 20
10.1.3. Object Diagram 22
10.1.4. Activity Diagram 24
10.1.5. Sequence Diagram 26
10.1.6. Use Case Diagram 28
10.1.7. Component Diagram 30
10.1.8. Deployment Diagram 32
10.1.9. Table Design Diagram 34
10. Future Scope 36
11. References 37
3
Acknowledgement
I have great pleasure for representing this project report
entitled “Gaming Website” and I grab this opportunity to convey
my immense regards towards all the distinguished people who
have their valuable contribution in the hour of need.
I take this opportunity to thank “Dr. Mrs. Usha
Mukundan”, our Principal of Ramniranjan Jhunjhunwala
college, Ghatkopar(W) for giving me an opportunity to study in
the institute and the most needed guidance throughout the duration
of the course.
I also like to extend my gratitude to “Mrs. Anita
Gaikwad”, Head of the Department for their timely and
prestigious guidance.
I would also like to thank “Mrs. Priyanka Gavhane”
provided the guidance and necessary support during each
phase of the project.
I also owe to my fellow friends who have been constant
source of help to solve the problems and also helped me during
the project development phase.
Thanking You,
Aashish Godse
4
Declaration
I declare that this written submission represents my own ideas
in my own words and where other’s ideas or words have been
included, I have adequately cited and referenced the original
sources. I also declare that I have adhered to all principles of
academic honesty and integrity and have not misrepresented or
fabricated or falsified any idea/fact/data/source in my
submission. I understand that any violation of the above will be
cause for disciplinary action by the Institute and can also evoke
penal action from the sources which have thus not been
properly cited or from whom proper permission has not been
taken when needed.
Aashish Godse
5
Feasibility Study
Feasibility study is to check the viability of the project under
consideration. Theoretically various types of feasibilities are
conducted, but I have conducted three types of feasibilities
explained as under.
ECONOMIC FEASIBIITY
1. Development Cost
• Equipment required for developing the software are
easily available.
• Equipment maintenance is also minimum.
• Once the required hardware and software requirements
get fulfilled there is no need for the users of our system
to spend for any additional overhead.
2. Benefits which cannot be measured:
• Increased customer Loyalty.
• Increased customer satisfaction.
TECHNICAL FEASIBILITY
At first it is necessary to check that the proposed system is
technically feasible or not and to determine the technology and
skill necessary to carry out the project. If they are not available
then find out the solution to obtain them.
OPERATIONAL FEASIBILITY
Proposed system is beneficial only if it can be turned into
system that will meet the need of the client’s operating
6
requirements. The proposed system is operationally feasible due
to the following reasons:
• It is easy to use and is very simple.
• The website will support all browser.
• will avoid confusion and resistance by catching the user’s
attention, as it is presentable.
7
Scope of the System
This Website is for those people who are interested in gaming
and want games from all platforms in one station. We are
focused on hasselfree experience of game downloading which
includes paid games and free as well. This website will give
immersive experience of how game development is done behind
the scene as this website also gives reference of learning
community. This website will be so efficient and fast as we are
using Angular.js 8.0 to improve its transition speed
8
Proposed System
9
Technical Requirements
SOFTWARE :
• Operating System : Windows 10
• Graphics : Intel HD Graphics 630
• DPI : Normal Size
• Screen Refresh Rate : 60-80Hz
• Color Quality : Highest 32 bits
• Frontend : HTML,CSS,JS,Bootstrap,Angular
• Backend : PHP,MYSQL
HARDWARE :
• Intel i5 7600 CPU 3.5GHz
• 8GB DDR4 RAM
• 1TB Hard Disk
10
Software Development Model
V-Model
The V-model is an SDLC model where execution of processes
happens in a sequential manner in a V-shape. It is also known
as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on
the association of a testing phase for each corresponding
development stage. This means that for every single phase in the
development cycle, there is a directly associated testing phase. This
is a highly-disciplined model and the next phase starts only after
completion of the previous phase.
1. Requirement Analysis
This is the first phase in the development cycle where the product
requirements are understood from the customer’s perspective. This
phase involves detailed communication with the customer to
understand his expectations and exact requirement. This is a very
important activity and needs to be managed well, as most of the
customers are not sure about what exactly they need.
The acceptance test design planning is done at this stage as
business requirements can be used as an input for acceptance testing.
2. System Design
Once you have the clear and detailed product requirements, it is time
to design the complete system. The system design will have the
understanding and detailing the complete hardware and
communication setup for the product under development. The
system test plan is developed based on the system design. Doing this
at an earlier stage leaves more time for the actual test execution later.
11
3. Architectural Design
Architectural specifications are understood and designed in this
phase. Usually more than one technical approach is proposed and
based on the technical and financial feasibility the final decision is
taken. The system design is broken down further into modules taking
up different functionality. This is also referred to as High Level
Design (HLD).
The data transfer and communication between the internal modules
and with the outside world (other systems) is clearly understood and
defined in this stage. With this information, integration tests can be
designed and documented during this stage.
4. Module Design
In this phase, the detailed internal design for all the system modules
is specified, referred to as Low Level Design (LLD). It is important
that the design is compatible with the other modules in the system
architecture and the other external systems. The unit tests are an
essential part of any development process and helps eliminate the
maximum faults and errors at a very early stage. These unit tests can
be designed at this stage based on the internal module designs.
5. Coding Phase
The actual coding of the system modules designed in the design
phase is taken up in the Coding phase. The best suitable
programming language is decided based on the system and
architectural requirements.
The coding is performed based on the coding guidelines and
standards. The code goes through numerous code reviews and is
optimized for best performance before the final build is checked into
the repository.
12
6. Validation Phases
The different Validation Phases in a V-Model are explained in detail
below.
i. Unit Testing
Unit tests designed in the module design phase are executed on the
code during this validation phase. Unit testing is the testing at code
level and helps eliminate bugs at an early stage, though all defects
cannot be uncovered by unit testing.
13
14
GANTT CHART
A Gantt chart is a type of bar chart that illustrates a project
schedule. Gantt chart illustrates the start and finish dates of the
terminal elements and summary elements of a project. Terminal
elements and summary elements comprise the work breakdown
structure of the project. Gantt Charts are useful tools for
analyzing and planning more complex projects.
They:
• Help you to plan out the tasks that need to be completed.
• Give you a basis for scheduling when these tasks will be
carried out.
• Help you to work out critical path for a project where you
must be complete it by a particular date.
15
16
Diagrams
Entity-Relationship Diagram
17
18
19
Class Diagram
Notation :
20
User Games Cart
-Username : String
-Platform : String
-Password : String -Total_Cost : Float
-Price : Float
-Email : String -Cart_ID : Int
-Game_ID : Int
-DOB : Date
-User_ID :Int
Admin
-Username : String
-Password : String
+Submit()
Download Payment
-User_ID : int
-Cart_ID : Int -Pay_Type : String
-Pay_ID : Int -Pay_ID : Int
-Game_ID :Int -Total_Cost : float
+Download() +Pay()
21
Object Diagram
22
• Understand object behaviour and their relationship from
practical perspective
-Username : abc
-Platform : PC
-Password : xyz -Total_Cost : 999/-
-Price : 999/-
-Email : abc@p.com -Cart_ID : 301
-Game_ID : 201
-DOB : 10-10-10
-User_ID :101
Admin
-Username : abc
-Password : xyz
Download Payment
-User_ID : 101
-Cart_ID : 301 -Pay_Type : Cash
-Pay_ID : 401 -Pay_ID : 401
-Game_ID :201 -Total_Cost : float
23
Activity Diagram
Activity diagrams are graphical representations of workflows of
stepwise activities and actions with support for choice, iteration and
concurrency. In the Unified Modeling Language, activity diagrams
can be used to describe the business and operational step-by- step
workflows of components in a system. An activity diagram shows
the overall flow of control. An activity diagram shows the overall
flow of control. Activity diagrams are constructed from a limited
repertoire of shapes, connected with arrows. Activity diagrams are
constructed from a limited repertoire of shapes, connected with
arrows. The most important shape types:
• Rounded rectangle represent activities.
• Diamonds represent decisions.
• Bars represent the start (split) or end (join) of concurrent
activities.
• A black circle represents the start (initial state) of the
workflow.
• An encircled black circle represents the end (final state).
• Arrows run from the start towards the end and represent the
order in which activities happen.
24
25
Sequence Diagram
A sequence diagram describes interactions among classes in terms of
an “Exchange of message over time”. Sequence diagrams are used to
depict the time sequence of message exchanged between objects.
Message can correspond to operation on class or an event trigger.
Notations of a Sequence Diagram include:
• Lifeline: It is a vertical dashed line that represents the “lifetime”
of an object.
• Arrows: They indicate flow of message between objects.
• Activation: It is a thin rectangle showing period of time, during
which an object is performing an action.
26
User Login Cart Payment Download
1 : Username
2 : Password
3 : Submit
4 : Authentication
5 : Logged In
6: Selecting
7: Adding To Cart
9 : Payment
8: Confirm Order
10 : Download
27
Use Case Diagram
A use case diagram in the unified modeling language is a type
of behavioral diagram defined by and created from a Use-Case
analysis. Its purpose is to present a graphical overview of the
functionality provided by a system in terms of actors, their goals
(represented as use cases), and any dependencies between those use
cases.
28
29
Component Diagram
Component Diagrams describe the organization of components,
including source code, run-time (binary) code, and executable.
Component Diagrams:
• Give the physical view of the system in terms of implementation
aspect. This is important for reusability and performance
purpose.
• Constitute the Components, their interfaces and realizations,
and dependencies between components.
Component Diagrams are used:
• To depict organizations and dependencies among Component
type.
• To show allocation of “Classes” and “objects” to components
in the physical design of the system.
• To indicate the “physical layering” and “partitioning” of the
system Architecture. A component typically encompasses:
• Structure and behavior of a “Collaboration of classes” from the
system design.
• Interfaces that describe a group of operations implemented by
components.
30
31
Deployment Diagram
32
33
Table Design
34
• Table for storing Admin Details:
35
Future Enhancement
In future I would try to make one community of gammers
who can share their own games, can chat with each other, and can
do many more things easily
Also I would love to introduce AI in my website which will
enhance the user-friendlyness.
36
References
1.https://www.youtube.com/channel/UCGFNZxMqKLsqWERX_N2f08Q
2.https://www.youtube.com/channel/UCSJbGtTlrDami-tDGPUV9-w
37
A Project Report
On
“Speak & Solve”
Ria Yadav
Under the Guidance of
(2019-2020)
1
RAMNIRANJAN JHUNJHUNWALA COLLEGE
GHATKOPAR(W), MUMBAI-400 086
CERTIFICATE
This is to certify that Ria Yadav has successfully completed the project titled
UNIVERSITY OF MUMBAI.
Principal
2
INDEX
1. Acknowledgement 5
2. Declaration 6
3. Feasibility Study 7
3.1.1. Technical Feasibility 7
3.1.2. Economic Feasibility 7
3.1.3. Operational Feasibility 8
4. Scope of the System 9
5. Existing System and it’s Disadvantages 10
6. Proposed System and Its Advantages 10
6.1.1 Flexibility 10
6.1.2 Productivity 11
6.1.3 Accuracy 11
7. Technical Requirements 12
8. Software Development Model 13
9. Gantt Chart 18
10. System Analysis 22
10.1.1. E-R Diagram 22
10.1.2. Class Diagram 25
10.1.3. Object Diagram 28
10.1.4. Activity Diagram 35
10.1.5. Sequence Diagram 33
10.1.6. Use Case Diagram 34
11. System Design 36
11.1.1. Component Diagram 36
11.1.2. Deployment Diagram 38
3
12. System Coding & Conventions 40
12.1.1. Program Source Code 40
12.1.2. Screen Layouts 61
13 System Testing 64
13.1.1 Validation 65
11. Future Enhancement 67
12. References 67
4
Acknowledgement
I have great pleasure for representing this project report
entitled “Ria Yadav” and I grab this opportunity to convey my
immense regards towards all the distinguished people who have
their valuable contribution in the hour of need.
Thanking You,
Ria Yadav
5
Declaration
I declare that this written submission represents my own ideas
in my own words and where other’s ideas or words have been
included, I have adequately cited and referenced the original
sources. I also declare that I have adhered to all principles of
academic honesty and integrity and have not misrepresented or
fabricated or falsified any idea/fact/data/source in my
submission. I understand that any violation of the above will be
cause for disciplinary action by the Institute and can also evoke
penal action from the sources which have thus not been
properly cited or from whom proper permission has not been
taken when needed.
Ria Yadav
6
Feasibility Study
Feasibility study is to check the viability of the project under
consideration. Theoretically various types of feasibilities are
conducted, but I have conducted three types of feasibilities
explained as under.
ECONOMIC FEASIBIITY
1. Development Cost
Equipment required for developing the software are
easily available.
Equipment maintenance is also minimum.
Once the required hardware and software requirements
get fulfilled there is no need for the users of our system
to spend for any additional overhead.
2. Benefits which cannot be measured:
Increased customer Loyalty.
Increased customer satisfaction.
TECHNICAL FEASIBILITY
At first it is necessary to check that the proposed system is
technically feasible or not and to determine the technology and
skill necessary to carry out the project. If they are not available
then find out the solution to obtain them.
7
OPERATIONAL FEASIBILITY
Proposed system is beneficial only if it can be turned into
system that will meet the need of the client’s operating
requirements. The proposed system is operationally feasible due
to the following reasons:
It is easy to use and is very simple.
The website will support all browser.
will avoid confusion and resistance by catching the user’s
attention, as it is presentable.
8
Scope of the System
The work and resources that go into the creation of the product
or service are essentially the things that frame the scope of the
project. The scope of the project outlines the objectives of the
project and the goals that need to be met to achieve a
satisfactory result.
This application would take voice input from user and
would process it as query resulting into the voice-based output
displaying the same result as well. Basically, the main focus of
the proposed application is to do calculations and basic
conversion for different unit of measurement. Along with voice-
based input, text-based methodology is also incorporated in-case
device acting as source for voice input don’t functions well.
Using the speech recognition packages available voice is
processed functioning as data to be computed. As Speech
recognition can allow documents to be created faster because the
software generally produces words as fast as they are spoken,
which is generally much faster than a person can type. Dictation
solutions are not only used by individuals but also by
organizations which require heavy transcription tasks such as
healthcare and legal.
Similarly, speech recognition can allow heavy calculations
to be done resulting in faster retrieval of result since time
consumed by typing each and every number and operation is
replaced by speaking and solving.
9
Existing System and it’s Disadvantages
Most of the System developed so far tend not be completely
voice based and also switches the calculation to google assistant
for further processing. Taking inspiration from one such
application i.e. multiscreen calculator and voice calculator
although they have well to do GUI but at a same time it lacks
functioning which is to be based on voice computation and
voice-based results.
Google assistant and many such voice assistant can be a counter-
part but if organization tend not to let their calculative data
directly be exposed over the bigger spectrum of network such
applications are solution for it.
However, Google assistant and many such voice assistant
remains more as inspiration for my project.
10
Productivity
Faster the calculation higher is the productivity whether it
is used by organization for heavy amount of computation
and calculation or by an individual.
Accuracy
The accuracy rates using voice recognition technology are
unparalleled.
You not only know what you speak but visual
representation along with it makes it more worthy to use.
While calculating if you mean to type 4 but can be
mistaken by 5 instead but same thing when done with
voiced based input increases the accuracy rate to a
profitable extend.
11
Technical Requirements
Programming Language:
Python
Software Requirements:
Linux/Windows OS
Python3+
Python libraries
- pyttsx3
- random
- speech_recognition
- datetime
- os
- sys
- wolframalpha
- pygame/tkinter
Hardware Requirements:
Generic Mouse, keyboard, monitor, CPU,
microphone etc.
12
Software Development Model
V-Model
1. Requirement Analysis
This is the first phase in the development cycle where the
product requirements are understood from the customer’s
perspective. This phase involves detailed communication with
the customer to understand his expectations and exact
requirement. This is a very important activity and needs to be
managed well, as most of the customers are not sure about what
exactly they need. The acceptance test design planning is
done at this stage as business requirements can be used as an
input for acceptance testing.
13
2. System Design
Once you have the clear and detailed product requirements, it
is time to design the complete system. The system design will
have the understanding and detailing the complete hardware
and communication setup for the product under development.
The system test plan is developed based on the system design.
Doing this at an earlier stage leaves more time for the actual
test execution later.
3. Architectural Design
Architectural specifications are understood and designed in
this phase. Usually more than one technical approach is
proposed and based on the technical and financial feasibility
the final decision is taken. The system design is broken down
further into modules taking up different functionality. This is
also referred to as High Level Design (HLD).
The data transfer and communication between the internal
modules and with the outside world (other systems) is clearly
understood and defined in this stage. With this information,
integration tests can be designed and documented during this
stage.
4. Module Design
In this phase, the detailed internal design for all the system
modules is specified, referred to as Low Level Design (LLD).
It is important that the design is compatible with the other
modules in the system architecture and the other external
systems. The unit tests are an essential part of any development
14
process and helps eliminate the maximum faults and errors at
a very early stage. These unit tests can be designed at this stage
based on the internal module designs.
5. Coding Phase
The actual coding of the system modules designed in the
design phase is taken up in the Coding phase. The best suitable
programming language is decided based on the system and
architectural requirements.
The coding is performed based on the coding guidelines and
standards. The code goes through numerous code reviews and
is optimized for best performance before the final build is
checked into the repository.
6. Validation Phases
The different Validation Phases in a V-Model are explained in
detail below.
i. Unit Testing
Unit tests designed in the module design phase are executed on
the code during this validation phase. Unit testing is the testing
at code level and helps eliminate bugs at an early stage, though
all defects cannot be uncovered by unit testing.
15
iii. System Testing
System testing is directly associated with the system design
phase. System tests check the entire system functionality and
the communication of the system under development with
external systems. Most of the software and hardware
compatibility issues can be uncovered during this system test
execution.
16
17
Gantt Chart
A Gantt chart is made up of several different elements. Below
given are 8 key components to know how to read a Gantt chart:
Task list: Runs vertically down the left of the Gantt chart
to describe project work and may be organized into groups
and subgroups
18
Title Start date End date Duration
Requirement Analysis
Preliminary Investigation 17-06-2019 20-06-2019 4
Project Topic Discussion 21-06-2019 24-06-2019 4
Current System Description 25-06-2019 01-07-2019 8
Proposed System Description 02-07-2019 05-07-2019 4
Feasibility Study 08-07-2019 10-07-2019 3
System Analysis
ER Diagram 11-07-2019 14-07-2019 4
Class Diagram 15-07-2019 16-07-2019 2
Object Diagram 17-07-2019 18-07-2019 2
Activity Diagram 19-07-2019 21-07-2019 3
Sequence Diagram 22-07-2019 24-07-2019 3
Use Case Diagram 25-07-2019 26-07-2019 2
Component Diagram 27-07-2019 29-07-2019 3
Deployment Diagram 30-07-2019 01-08-2019 3
System Coding
5-08-2019 11-01-2020
System Testing
2-09-2019 15-01-2020
19
20
21
System Analysis
Entity-Relationship Diagram
The ER or (Entity Relational Model) is a high-level conceptual data
model diagram. Entity-Relation model is based on the notion of
real-world entities and the relationship between them.
Entity
An entity is an object or component of data. An entity is
represented as rectangle in an ER diagram.
For example: Student and College and these two entities have
many to one relationship as many student studies in a single
college.
An entity that cannot be uniquely identified by its own
attributes and relies on the relationship with other entity is
22
called weak entity. The weak entity is represented by a double
rectangle.
Attribute
An attribute describes the property of an entity. An attribute is
represented as Oval in an ER diagram. There are four types of
attributes:
1. Key attribute
2. Composite attribute
3. Multivalued attribute
4. Derived attribute
Relationship
A relationship is represented by diamond shape in ER diagram,
it shows the relationship among entities. There are four types
of relationships:
1. One to One
2. One to Many
3. Many to One
4. Many to Many
ER Diagram Symbols
23
24
Class Diagram
It is a model which is used to show the classes constituting a system
and their interrelationship. It is based on UML. Only the important
attributes and methods are shown in Class diagrams. In the initial
period of analysis, the important attributes of the classes, which
must be captured and the functionalities provided by the class may
not be very clear. As the analysis progresses, the attributes and
methods may be added. If more focus is on interrelationships of
classes, then the attributes and methods may not be shown in the
class diagram.
The class diagram is used to identify and classify the objects which
constitute a system. It also includes the important attributes of the
objects which must be captured.
25
Class Diagram Relations
26
27
Object Diagram
An object diagram is a graph of instances, including objects and data
values. A static object diagram is an instance of a class diagram; it
shows a snapshot of the detailed state of a system at a point in time.
Object diagrams and class diagrams are closely related and use
almost identical notation. Both diagrams are meant to visualize
static structure of a system. While class diagrams show classes,
object diagrams display instances of classes (objects).
Object diagrams are more concrete than class diagrams. They are
often used to provide examples or act as test cases for class
diagrams. Only aspects of current interest in a model are typically
shown on an object diagram.
Object diagrams are derived from class diagrams so object diagrams
are dependent upon class diagrams.
Notation
29
30
Activity Diagram
Activity diagrams are graphical representations of workflows of
stepwise activities and actions with support for choice, iteration and
concurrency. In the Unified Modeling Language, activity diagrams
can be used to describe the business and operational step-by- step
workflows of components in a system. An activity diagram shows
the overall flow of control. An activity diagram shows the overall
flow of control. Activity diagrams are constructed from a limited
repertoire of shapes, connected with arrows.
Activity diagrams are constructed from a limited repertoire of
shapes, connected with arrows.
The most important shape types:
● Rounded rectangle represents activities.
● Diamonds represent decisions.
● Bars represent the start (split) or end (join) of concurrent
activities.
● A black circle represents the start (initial state) of the workflow.
● An encircled black circle represents the end (final state).
● Arrows run from the start towards the end and represent the order
in which activities happen.
31
32
Sequence Diagram
A sequence diagram describes interactions among classes in terms of
an “Exchange of message over time”. Sequence diagrams are used to
depict the time sequence of message exchanged between objects.
Message can correspond to operation on class or an event trigger.
Notations of a Sequence Diagram include:
Lifeline: It is a vertical dashed line that represents the “lifetime”
of an object.
Arrows: They indicate flow of message between objects.
Activation: It is a thin rectangle showing period of time, during
which an object is performing an action.
33
Use Case Diagram
A use case diagram is a dynamic or behavior diagram in UML. Use
case diagrams model the functionality of a system using actors and
use cases. Use cases are a set of actions, services, and functions that
the system needs to perform. In this context, a "system" is
something being developed or operated, such as a web site. The
"actors" are people or entities operating under defined roles within
the system.
Use case diagrams are valuable for visualizing the functional
requirements of a system that will translate into design choices and
development priorities.
They also help identify any internal or external factors that may
influence the system and should be taken into consideration.
They provide a good high level analysis from outside the system.
Use case diagrams specify how the system interacts with actors
without worrying about the details of how that functionality is
implemented.
34
35
System Design
Component Diagram
Component Diagrams describe the organization of components,
including source code, run-time (binary) code, and executable.
Component Diagrams:
Give the physical view of the system in terms of implementation
aspect. This is important for reusability and performance
purpose.
Constitute the Components, their interfaces and realizations,
and dependencies between components.
Component Diagrams are used:
To depict organizations and dependencies among Component
type.
To show allocation of “Classes” and “objects” to components
in the physical design of the system.
To indicate the “physical layering” and “partitioning” of the
system Architecture. A component typically encompasses:
Structure and behavior of a “Collaboration of classes” from the
system design.
Interfaces that describe a group of operations implemented by
components.
36
37
Deployment Diagram
Deployment diagram is a structure diagram which shows architecture
of the system as deployment (distribution) of software artifacts to
deployment targets.
Artifacts represent concrete elements in the physical world that are
the result of a development process. Deployment Diagram is usually
represented by a node which is either hardware device or some
software execution environment. Nodes could be connected through
communication paths to create networked systems of arbitrary
complexity.
Note, that component was directly deployed to nodes in UML 1.x
deployment diagrams. In UML 2.x artifacts are deployed to nodes,
and artifacts could manifest (implement) components. Components
are deployed to nodes indirectly through artifacts.
Deployment diagrams could describe architecture at specification
level (also called type level) or at instance level (similar to class
diagrams and object diagrams).
Specification level deployment diagram shows some overview
of deployment of artifacts to deployment targets, without referencing
specific instances of artifacts or nodes.
Instance level deployment diagram shows deployment of
instances of artifacts to specific instances of deployment targets. It
could be used for example to show differences in deployments to
development, staging or production.
38
39
System Coding & Conventions
Program Source Code
Speak_n_Solve.py
import pyttsx3
import random
import speech_recognition as sr
import datetime
import wikipedia
import wolframalpha
import os
import sys
import time
from tkinter import *
from PIL import ImageTk,Image
global query
engine = pyttsx3.init('sapi5')
client = wolframalpha.Client('KJ6LUW-EXVPWE64YV')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[len(voices)-1].id)
def speak(audio):
40
engine.say(audio)
engine.runAndWait()
def sayit(var):
print(var)
engine.say(var)
engine.runAndWait()
def myCommand():
global query1
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 2
r.energy_threshold = 4000
audio = r.listen(source)
try:
query1 = r.recognize_google(audio, language='en-in')
print('User: ' + query1 + '\n')
except sr.UnknownValueError:
speak('Sorry sir! I didn't get that! Try speaking again')
41
#query1 = str(input('Command: '))
query1=myCommand()
except sr.ValuError:
speak('oops! we was not able to reconize it well')
return query1
def buttonclick():
#e1.delete(first=0,last=100)
speak('Whats your query')
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 2
r.energy_threshold = 4000
audio = r.listen(source)
try:
global query
query = r.recognize_google(audio, language='en-in')
print('User: ' + query + '\n')
#Label(root,text=query,bg="plum1", fg="black").pack()
#entry_text=StringVar()
42
#e = Entry(root, width="30", textvariable=entry_text)
#e.grid()
#e.delete(first=0,last=100)
#e.insert(0, query)
#entry_text.set(query)
43
else:
query = query
speak('Searching...')
try:
res = client.query(query)
results = next(res.results).text
speak('WOLFRAM-ALPHA says - ')
speak('Got it.')
sayit(results)
Label(root,text=results,bg="plum1", fg="black").pack()
except:
speak('Sorry sir,maam! I didn\'t get that! Try speaking
again!')
query = buttonclick()
speak('next command sir')
except sr.UnknownValueError:
speak('Sorry sir! I didn\'t get that! Try speaking again!')
query = buttonclick()
return query
44
def GENERAL():
global root2
root2=Toplevel(root)
root2.title("SPEAK & SOLVE (GENRAL PURPOSE
CALCULATOR)")
#root2.configure(bg="SlateGray3")
speak('okay, we further have following options')
lblgen=Label(root2,text="GENERAL PURPOSE
CALCULATOR",bg="Black",fg="white",height="3",font=("Calibri
",15)).grid(row=1,column=1,columnspan=3)
Label(root2,text="").grid(row=2,column=1,columnspan=3)
photo5=ImageTk.PhotoImage(Image.open("micpic.png"))
mic=Button(root2,text="Speak" ,bg="black",
fg="white",image=photo5,compound=TOP,command=buttonclick)
mic.image=photo5
mic.grid(row=3,column=1,columnspan=3)
f1=Frame(root2)
f1.grid(row=4,column=1,columnspan=3)
Label(f1,text="").grid(row=5,column=1,columnspan=3)
speak('BMI CHECK:')
#Label(root,text="",bg="SlateGray3").grid(row=13,column=1,colu
mnspan=3)
45
photo5=ImageTk.PhotoImage(Image.open("bmi.png"))
b1=Button(f1,text="BMI" ,bg="black",
fg="white",image=photo5,compound=TOP,command=BMI)
b1.image=photo5
b1.grid(row=6,column=1,padx=(0,20)
speak('DISCOUNT CHECK:')
#Label(root2,text="",bg="thistle")..grid(row=1,column=1,columnsp
an=3)
photo6=ImageTk.PhotoImage(Image.open("discount.png"))
b2=Button(f1,text="Discount",bg="black", fg="white",
image=photo6,compound=TOP,command=DISCOUNT)
b2.image=photo6
b2.grid(row=6,column=2)
speak('TEMPERATURE CONVERTER:')
#Label(root2,text="",bg="thistle")..grid(row=1,column=1,columnsp
an=3)
photo7=ImageTk.PhotoImage(Image.open("temp.png"))
b3=Button(f1,text="Temprature" ,bg="black",
fg="white",image=photo7,compound=TOP,
command=TEMPERATURE)
b3.image=photo7
b3.grid(row=6,column=3,padx = (15,0))
46
def des():
lf.destroy()
lf.grid_forget()
def destroy_widget(widget):
widget.destroy()
def BMI():
#global root2
#root2=Tk()
#root2.title("SPEAK & SOLVE (GENRAL PURPOSE
CALCULATOR)")
#root2.configure(bg="thistle")
global lf
lf=LabelFrame(root2,text="BMI",padx=5,pady=5)
lf.grid(row=5,column=1,columnspan=3)
speak('whats your weight in kg:')
Label(lf,text= "Whats your weight in
kg:").grid(row=6,column=1)
weight=myCommand()
Label(lf,text=weight).grid(row=6,column=2)
speak('whats your height in cm:')
Label(lf,text="What's your height in cm:").grid(row=7,column=1)
47
height=myCommand()
#hr=StringVar()
Label(lf,text=height).grid(row=7,column=2)
weight1=float(weight)
height1=float(height)
height_m=height1/100
bmi=weight1/(height_m * height_m)
sayit(bmi)
if bmi<18.5:
Label(lf,text=bmi).grid(row=8,column=1)
speak('YOU ARE UNDERWEIGHT...HAVE A HEALTHY
DIET ')
Label(lf,text="YOU ARE UNDERWEIGHT...HAVE A
HEALTHY DIET").grid(row=9,column=1)
elif bmi>=18.5 and bmi<=24.9:
Label(lf,text=bmi).grid(row=8,column=1)
speak('YOU ARE HAVING A HEALTHY WEIGHT....GOOD
GOING ')
Label(lf,text="YOU ARE HAVING A HEALTHY
WEIGHT....GOOD GOING").grid(row=9,column=1)
elif bmi==25 and bmi<=29.9:
Label(lf,text=bmi).grid(row=8,column=1)
48
speak('YOU ARE OVERWEIGHT ....NEED TO SWITCH TO
HEALTHY DIET:-)')
Label(lf,text="YOU ARE OVERWEIGHT ....NEED TO
SWITCH TO HEALTHY DIET:-)").grid(row=9,column=1)
else:
Label(lf,text=bmi).grid(row=8,column=1)
speak('YOU ARE IN OBESE CATEGORY...REALLY NEED
TO WORKOUT FOR HEALTHY LIFE...:-)')
Label(lf,text="YOU ARE IN OBESE CATEGORY...REALLY
NEED TO WORKOUT FOR HEALTHY LIFE...:-
)").grid(row=9,column=1)
Button(lf,text="Cancel",command=des).grid(row=9,column=2)
root2.after(60000, destroy_widget, lf)
def DISCOUNT():
#global root2
#root2=Tk()
#root2.title("SPEAK & SOLVE (GENRAL PURPOSE
CALCULATOR)")
#root2.configure(bg="thistle")
#for widget in lf.winfo_children():
#lf.destroy()
#lf.pack_forget()
global df
49
df=LabelFrame(root2,text="DISCOUNT",padx=5,pady=5)
df.grid(row=10,column=1,columnspan=3)
try:
speak("ENTER ORIGINAL AMOUNT BELOW")
Label(df,text= "ENTER ORIGINAL AMOUNT
BELOW:").grid(row=11,column=1)
amount1=myCommand()
Label(df,text=amount1).grid(row=11,column=2)
except ValueError:
speak("Could not understand audio")
try:
speak("enter discount (%OFF)")
Label(df,text= "enter discount
(%OFF):").grid(row=12,column=1)
discount1=myCommand()
Label(df,text=discount1).grid(row=12,column=2)
except LookupError:
speak("Could not understand audio")
amount=float(amount1)
discount=float(discount1)
saved_money=amount*(discount/100)
amount_paid=amount-saved_money
50
speak("you saved")
sayit(saved_money)
Label(df,text="Saved Money:").grid(row=13,column=1)
Label(df,text=saved_money).grid(row=13,column=2)
speak("you paid")
sayit(amount_paid)
Label(df,text="Amount Paid:").grid(row=14,column=1)
Label(df,text= amount_paid).grid(row=14,column=2)
root2.after(60000, destroy_widget, df)
def TEMPERATURE():#not working well
#btncel=Button(root2,text="CELCIUS TO FAHRENHEIT" ,
width=20 ,bg="black", fg="white", command=BMI).pack()
#btnfah=Button(root2,text="FAHRENHEIT TO CELCIUS " ,
width=20 ,bg="black", fg="white", command=BMI).pack()
global tf
tf=LabelFrame(root2,text="TEMPERATURE",padx=5,pady=5)
tf.grid(row=16,column=1,columnspan=3)
Label(tf,text=c).grid(row=20,column=2)
sayit(c)
root2.after(60000, destroy_widget, tf)
def FINANCE():
global root3
root3=Toplevel(root)
52
root3.title("SPEAK & SOLVE (FINANCE BASED
CALCULATOR)")
#root2.configure(bg="SlateGray3")
speak('okay, we further have following options')
lblgen=Label(root3,text="FINANCE BASED
CALCULATOR",bg="Black",fg="white",height="3",font=("Calibri
",15)).grid(row=1,column=1,columnspan=2)
Label(root3,text="").grid(row=2,column=1,columnspan=2)
photo5=ImageTk.PhotoImage(Image.open("micpic.png"))
mic=Button(root3,text="Speak" ,bg="black",
fg="white",image=photo5,compound=TOP,command=buttonclick)
mic.image=photo5
mic.grid(row=3,column=1,columnspan=2)
Label(root3,text="").grid(row=4,column=1,columnspan=2)
f1=Frame(root3)
f1.grid(row=5,column=1,columnspan=2)
speak('GST CHECK:')
#Label(root,text="",bg="SlateGray3").grid(row=13,column=1,colu
mnspan=3)
photo5=ImageTk.PhotoImage(Image.open("gst.png"))
53
b1=Button(f1,text="GST" ,bg="black",
fg="white",image=photo5,compound=TOP,command=GST)
b1.image=photo5
b1.grid(row=7,column=1,padx = (0,40))
speak('SPLIT BILL:')
#Label(root2,text="",bg="thistle")..grid(row=1,column=1,columnsp
an=3)
photo6=ImageTk.PhotoImage(Image.open("splitbill.png"))
b2=Button(f1,text="SplitBill",bg="black", fg="white",
image=photo6,compound=TOP,command=SPLIT)
b2.image=photo6
b2.grid(row=7,column=2)
def GST():
global gstf
gstf=LabelFrame(root3,text="GST",padx=5,pady=5)
gstf.grid(row=6,column=1,columnspan=3)
speak("Enter your amount:")
54
Label(gstf,text="YOUR ORIGINAL
AMOUNT:").grid(row=7,column=1)
a=myCommand()
a1=float(a)
Label(gstf,text=a1).grid(row=7,column=2)
threepercent_gst=a1+(3*a1/100)
fivepercent_gst=a1+(5*a1/100)
twelvepercent_gst=a1+(12*a1/100)
eighteenpercent_gst=a1+(18*a1/100)
#ERROR aa raha h cant convert words into numeric value#
#thousand bolnepe 1000 nhi hua one thousand bolna pdega#
speak("by applying gst of 3% finalamount is")
sayit(threepercent_gst)
Label(gstf,text="threepercent_gst(3%):").grid(row=8,column=1)
Label(gstf,text=threepercent_gst).grid(row=8,column=2)
55
sayit(twelvepercent_gst)
Label(gstf,text="twelvepercent_gst(12%):").grid(row=10,column=1
)
Label(gstf,text=twelvepercent_gst).grid(row=10,column=2)
Label(gstf,text="eighteenpercent_gst(18%):").grid(row=11,column=
1)
Label(gstf,text=eighteenpercent_gst).grid(row=11,column=2)
root3.after(60000, destroy_widget, gstf)
def SPLIT():
global sf
sf=LabelFrame(root3,text="SPLIT BILL",padx=5,pady=5)
sf.grid(row=12,column=1,columnspan=2)
speak("Enter your final amount")
Final_amount=myCommand()
Label(sf,text="Total Amount").grid(row=13,column=1)
Label(sf,text=Final_amount).grid(row=13,column=2)
56
Num=myCommand()
Label(sf,text="Total no. of person").grid(row=14,column=1)
Label(sf,text=Num).grid(row=14,column=2)
Distributed_Amount=float(Final_amount)/ float(Num)
speak("Amount each should share is")
sayit(Distributed_Amount)
Label(sf,text="Amount eah should share
is:").grid(row=15,column=1)
Label(sf,text=Distributed_Amount).grid(row=15,column=2)
root3.after(60000, destroy_widget, sf)
def BASIC():
query = myCommand()
n1=LabelFrame(root,text="Basic Calculations",padx=5,pady=5)
n1.grid(row=11,column=1,columnspan=3)
Label(n1,text="YOUR QUERY:").grid(row=12,column=1)
Label(n1,text=query).grid(row=12,column=2)
speak('Searching...')
try:
res = client.query(query)
results = next(res.results).text
speak('WOLFRAM-ALPHA says - ')
57
speak('Got it.')
sayit(results)
Label(n1,text="Result:").grid(row=13,column=1)
Label(n1,text=results).grid(row=13,column=2)
except:
speak('Sorry sir,maam! I didn\'t get that! Try speaking again
typing the command!')
query = myCommand()
#query=Entry(n1,).grid(row=14,column=1)
#speak('next command sir')
#return query
root.after(60000, destroy_widget, n1)
global root
root=Tk()
root.title("SPEAK & SOLVE")
root.configure(bg="SlateGray3")
lbl1=Label(root,text="WELCOME TO VOICE BASED
CALCULATOR",
fg="white",bg="black",height="3",font=("Calibri",18)).grid(row=1,
column=1,columnspan=3)
currentH = int(datetime.datetime.now().hour)
if currentH >= 0 and currentH < 12:
58
lbl2=Label(root,text="Good Morning", fg="black",
bg="SlateGray3", height="3", font=("Calibri",15)
).grid(row=2,column=1,columnspan=3)
speak("Good morning")
if currentH >= 12 and currentH < 16:
lbl2=Label(root,text="Good Afternoon", fg="black",
bg="SlateGray3", height="3", font=("Calibri",15)
).grid(row=2,column=1,columnspan=3)
speak("Good afternoon")
if currentH >= 16 and currentH !=0:
lbl2=Label(root,text="Good Evening", fg="black",
bg="SlateGray3", height="3", font=("Calibri",15)
).grid(row=2,column=1,columnspan=3)
speak("Good evening ")
lbl2=Label(root,text="we have following options to help you",
fg="black" ,
bg="SlateGray3").grid(row=3,column=1,columnspan=3)
Label(root,text="",bg="SlateGray3").grid(row=4,column=1,column
span=3)
#e1=Entry(root, width="30").pack()
#Label(root,text="",bg="plum1").pack()
photo=ImageTk.PhotoImage(Image.open("micpic.png"))
btn1=Button(root,text="speak" ,image=photo,
compound=TOP,bg="black", fg="white" ,
command=buttonclick).grid(row=5,column=1,columnspan=3)
59
Label(root,text="",bg="SlateGray3").grid(row=6,column=1,column
span=3)
frame1=Frame(root).grid(row=7,column=1,columnspan=3)
#Label(root,text="",bg="plum1").grid(row=8,column=1,columnspa
n=3)
photo2=ImageTk.PhotoImage(Image.open("calcu.png"))
btn1=Button(frame1,text="Basic" ,image=photo2,compound=TOP
,bg="black", fg="white",command=BASIC).grid(row=9,column=1)
#Label(root,text="",bg="plum1").grid(row=1,column=1)
photo3=ImageTk.PhotoImage(Image.open("gen.png"))
btn2=Button(frame1,text="General" , image=photo3
,compound=TOP,bg="black", fg="white",
command=GENERAL).grid(row=9,column=2)
#Label(root,text="",bg="plum1").grid(row=1,column=1)
photo4=ImageTk.PhotoImage(Image.open("fin.png"))
btn3=Button(frame1,text="Financial" ,
image=photo4,compound=TOP ,bg="black",
fg="white",command=FINANCE).grid(row=9,column=3)
Label(root,text="",bg="SlateGray3").grid(row=10,column=1,colum
nspan=3)
root.mainloop()
60
Screen Layouts (Snapshot)
Main Window
61
General Purpose Window(Output window of queries)
62
Finance Based Window
63
System Testing
System testing of software or hardware is testing conducted on a
complete, integrated system to evaluate the system's compliance
with its specified requirements. System testing falls within the scope
of black-box testing, and as such, should require no knowledge of
the inner design of the code or logic. As a rule, system testing takes,
as its input, all of the "integrated" software components that have
passed integration testing and also the software system itself
integrated with any applicable hardware system(s). The purpose of
integration testing is to detect any inconsistencies between the
software units that are integrated together (called assemblages) or
between any of the assemblages and the hardware. System testing is
a more limited type of testing; it seeks to detect defects both within
the "inter-assemblages" and also within the system as a whole.
Testing Used:
At the beginning when Graphical User Interface (GUI) and
functioning of application were incorporated together voice
processing wasn’t as smooth as expected for that various set of
functions has to be created to implement the whole program.
64
Testing of every function with real human voice was done at
the beginning it took time for processing but as machine got
use to words and voice-based inputs, processing became
smoother as compared to early stage.
Application was tested by human voice with different values,
numbers, words and pitch to test the computing and voice
processing.
Validation
Test Cases, Test Results and Test Data
What is Test Case?
“A Test Case has a component that describe an input, action or
event expected response, to determine if a feature of an application
is working correctly.” Software testing can be stated as the process
of validating and verifying that a computer
program/application/product:
Meets the requirements that guided its design and
development.
Works as expected
Can be implemented with the same characters.
And satisfies the needs of Stakeholders.
Why we Write Test Case?
A Test Case in Software Engineering is a set of conditions or
variables under which a tester will determine whether an
application, software system or one of its features is working as it
was originally established for it to do. Test Cases bring some sort of
standardization and minimize the ad-hoc approach in testing.
65
Test Case
Case-1
Purpose: Check for voice-based input and
output
Assumptions: Application has been launched.
Steps: Click on speak button and
speak up your choice.
Wait for the output to be
generated based on your
input in form of speech.
Expected Result: Voice based input and output
should work fine.
Actual Result: Voice based input and output is
working fine.
Case-2
Purpose: Check for Performance.
Assumptions: Application has been launched.
Steps: Choose any option as per
choice.
Wait for the output to be
generated in form of speech
and simultaneously display
the output.
Expected Result: Processing time should be
less.
Results should be displayed
simultaneously.
Actual Result: Processing time is fine.
Results is displayed after
voice-based output.
66
Future Enhancement
Since, this project is now desktop-based application, I
would like to convert this whole project as android based
application in order to provide more portable experience.
As this project slightly lacks the ability to quick response in
crowded and noisy environment, I would like to optimize it
more.
References
https://youtu.be/5mu6qlFY3x0
https://pypi.org/project/SpeechRecognition/
https://www.youtube.com/watch?v=K_WbsFrPUCk
https://pythonprogramming.net/pygame-python-3-part-1-
intro/
67
68