Documente Academic
Documente Profesional
Documente Cultură
This is to certify that the project report entitled “CHAT APPLICATION USING FIREBASE
WITH AES ENCRYPTION” submitted by Neha Srivastava , Ayushi Shukla , Renuka Pandey ,
Uma Shree to Feroze Gandhi Institute of Engineering and Technology, Raebareli in partial
fulfillment for the award of Degree of Bachelor of Technology in Computer Science and Engineering
is a bonafide record of the project work carried out by him under my supervision during the year
2016-2017.
Name: Dinesh
Kumar Tiwari
Prof. N. Raman Namboothiri (Project
Professor and Head Guide)
Department of Mechanical Engineering Designation
KERALA, INDIA.
DECLARATION
DECLARATION
ACKNOWLEDGEMENT
ABSTRACT
LIST OF FIGURES
1. INTRODUCTION
1.1 About Project
1.2 Android: An open Platform
1.3 Android Versions
1.4 Features of Android
1.5 Why develop for Android
1.6 Life cycle of Android activity
1.7 Scope of investigation
1.8 Problem definition
2. LITERATURE
2.1. Android Software Stack
2.2 Android Application Architecture
2.2.1 Android Libraries
2.3 Developing for android
2.3.1 Downloading & installing SDK
2.3.2 Android Studio
2.3.3 Features of android studio
2.3.4 System Requirements
2.4 Android development tools
2.4.1 Android Emulator
2.4.2 Android SDK manager
2.4.3 Android application components
2.5 Fundamental android UI design
2.6 Android widget toolbox
2.7 Introducing Intents
2.7.1 Launching activities using Intents
2.7.2 Intents to broadcast events
2.8 Introducing fragments
2.9 Creating Content Provider
2.10 Introducing Firebase
2.10.1 Features
2.10.2 Real-time database
2.10.3 Authentication
2.10.4 Cloud Storage
2.10.5 Miscellaneous features
2.11 Advanced Encryption Standard
2.11.1 Why AES
2.11.2 Features and Functionality
2.11.3 AES Analysis
3. PROPOSED SYSTEM
3.1 System Analysis
3.2 Feasibility Study
3.2.1 Technical feasibility
3.2.2 Economic feasibility
3.2.3 Behavioural study
3.2.4 Cost analysis
5. DESIGN DOCUMENTS
6. IMPEMENTATION
6.1 Authentication Process
6.2 Database Description
6.3 Encryption Description
6.4 Realtime Storage
6. DEFINITION OF TESTING
This report documents the process of designing, building and testing an android
application for the use of students for supplementing their knowledge about
scientists in an engaging way.
The project is an android quiz application which is built around the concept of
content gamification as this makes learning an engaging process thus proving to
be a better learning tool. Here we use images of scientists which students
generally encounter in their textbooks. So this application can also be used by
teachers to a replacement of bland written quizzes but only the initial levels.
The more advanced levels are for grownups and young inquisitive minds to put
their grey matter to test.
The project is built using android studio a tool for application development for
android platform provided by Google. It incorporates moderate coding as the
application is quite small in comparison to other trivia applications available in
the play store. There is extensive use of images and sound effects in the
application.
The application has various levels to offer with varying degree of hardness
and specific nature. Except one all levels in the application are initially locked
and a specific number of correct answers keep opening new levels. The first
one being a very basic one and features scientists which every middle school
student has heard about. The levels have been designed keep in mind school
students as well as the grownups. Each question comes with a picture of a
famous scientist and to make things even simpler options are also provided for
answering the questions. Besides hints are also provided in case of a wrong
answer and a short biography about the scientist is provided in case of a correct
answer. All questions are pictorial in nature and come with four options to
select the correct answer.
Summing this up we can say this is one small application for people of every
age group but mainly targeted for the school students. This software can find
application as a supplement of classes with growing use of technology in
classrooms while for some inquisitive minds it will be just another trivia
application to quench their insatiable thirst for knowledge.
1.2. Android: An open platform for mobile development
Android is a mobile operating system that is based on a modified version of
Linux. It was originally developed by a startup of the same name, Android, Inc.
In 2005, as part of its strategy to enter the mobile space, Google purchased
Android and took over its development work.
Google wanted Android to be open and free; hence, most of the Android code
was released under the open source Apache License, which means that anyone
who wants to use Android can do so by downloading the full Android source
code. Moreover, vendors (typically hardware manufacturers) can add their own
proprietary extensions to Android and customize Android to differentiate their
products from others.
The simple development model makes Android very attractive and has thus
piqued the interest of many vendors. This has been especially true for
companies affected by the phenomenon of Application iPhone, a hugely
successful product that revolutionized the smartphone industry. Such companies
include Motorola and Sony Ericsson, which for many years have been
developing their own mobile operating systems. When the iPhone was
launched, many of these manufacturers had to scramble to find new ways of
revitalizing their products. These manufacturers see Android as a solution -they
will continue to design their own hardware and use Android as the operating
system that powers it.
The main advantage of adopting Android is that it offers a unified approach to
application development. Developers need only develop for Android, and their
applications should be able to run on numerous different devices, as long as the
devices are powered using Android.
In the world of smartphones, applications are the most important part of the
success chain. Device manufacturers therefore see Android as their best hope to
challenge the onslaught of the iPhone, which already commands a large base of
applications.
Android Versions
A pictorial representation of android versions-
CHAPTER 2
LITERATURE
Android is an Operating System for mobile devices developed by Google,
which is built upon Linux Kernel. Android applications are written on JAVA
programming language. The Android SDK tools compile the code along with
any data and resource file into an APK file. The APK file contains all the
contents of an android application and is the file that Android-powered devices
use to install the application.
Android was described by Andy Rubin as follows:
“The first truly open and comprehensive platform for mobile devices. It
includes an Operating System, user-interface and application-all of the software
to run a mobile phone but without the proprietary obstacle that have hindered
mobile innovation.”
2.1. Android Software Stack
The Android software stack is, put simply, a Linux kernel and a collection of
C/C++ libraries exposed through an application framework that provides
services for, and management of, the run time and applications.
Linux kernel — Core services (including hardware drivers, process and
memory management, security, network, and power management) are
handled by a Linux 2.6 kernel. The kernel also provides an abstraction
layer between the hardware and the remainder of the stack.
Libraries — Running on top of the kernel, Android includes various
C/C++ core libraries such as libc and SSL, as well as the following:
A media library for playback of audio and video media
A surface manager to provide display management
Graphics libraries that include SGL and OpenGL for 2D and 3D
graphics.
The ADT plug-in integrates the Emulator into Eclipse so that it’s launched
automatically within the selected AVD when you run or debug your projects. If
you aren’t using the plug-in or want to use the Emulator outside of Eclipse, you
can telnet into the Emulator and control it from its console. For more details on
controlling the Emulator, check out the documentation at resource.
18
To execute the Emulator, you first need to create a virtual device, as described
in the previous section. The Emulator will launch the virtual device and run a
Dalvik instance within it.
2.4.2. Android SDK Manager
The Android SDK Manager can be used to see which version of the SDK you
have installed and to install new SDKs when they are released. Each platform
release is displayed, along with the platform tools and a number of additional
support packages. Each platform release includes the SDK platform,
documentation, tools, and examples corresponding to that release.
2.4.3. Android Application Components
Android applications consist of loosely coupled components, bound by the
application manifest that describes each component and how they interact. The
manifest is also used to specify the application’s metadata, its hardware and
platform requirements, external libraries, and required permissions.
The following components comprise the building blocks for all your Android
applications:
Activities — Your application’s presentation layer. The UI of your
application is built around one or more extensions of the Activity class.
Activities use Fragments and Views to layout and display information,
and to respond to user actions. Compared to desktop development,
Activities are equivalent to Forms.
Services — The invisible workers of your application. Service
components run without a UI updating your data sources and Activities,
triggering Notifications, and broadcasting Intents. They’re used to
perform long running tasks, or those that require no user interaction (such
as network lookups or tasks that need to continue even when your
application’s Activities aren’t active or visible.)
19
Content Providers — Shareable persistent data storage. Content
Providers manage and persist application data and typically interact with
SQL databases. They’re also the preferred means to share data across
application boundaries. You can configure your application’s Content
Providers to allow access from other applications, and you can access the
Content Providers exposed by others. Android devices include several
native Content Providers that expose useful databases such as the media
store and contacts.
Intents — A powerful inter application message-passing framework.
Intents are used extensively throughout Android. You can use Intents to
start and stop Activities and Services, to broadcast messages system-wide
or to an explicit Activity, Service, or Broadcast Receiver, or to request an
action be performed on a particular piece of data.
Broadcast Receivers — Intent listeners. Broadcast Receivers enable
your application to listen for Intents that match the criteria you specify.
Broadcast Receivers start your application to react to any received Intent,
making them perfect for creating event-driven applications.
Widgets — Visual application components that are typically added to
the device home screen. A special variation of a Broadcast Receiver,
widgets enable you to create dynamic, interactive application components
for users to embed on their home screens.
Notifications — Notifications enable you to alert users to application
events without stealing focus or interrupting their current Activity.
They’re the preferred technique for getting a user’s attention when your
application is not visible or active, particularly from within a Service or
Broadcast Receiver. For example, when a device receives a text message
or an email, the messaging and Gmail applications use Notifications to
alert you by flashing lights, playing sounds, displaying icons, and
scrolling a text summary.
20
2.5. Fundamental Android UI Design
User interface (UI) design, User experience (UX), Human Computer Interaction
(HCI), and usability are huge topics that can’t be covered in the depth.
Nonetheless, the importance of creating a UI that your users will understand and
enjoy using can’t be overstated.
Android introduces some new terminology for familiar programming metaphors
that will be explored in detail in the following sections:
Views — Views are the base class for all visual interface elements
(commonly known as controls or widgets). All UI controls, including the
layout classes, are derived from View.
View Groups — View Groups are extensions of the View class that can
contain multiple child Views. Extend the View Group class to create
compound controls made up of interconnected child Views. The View
Group class is also extended to provide the Layout Managers that help
you lay out controls within your Activities.
Fragments — Fragments, introduced in Android 3.0 (API level 11), are
used to encapsulate portions of your UI. This encapsulation makes
Fragments particularly useful when optimizing your UI layouts for
different screen sizes and creating reusable UI elements. Each Fragment
includes its own UI layout and receives the related input events but is
tightly bound to the Activity into which each must be embedded.
Fragments are similar to UI View Controllers in iPhone development.
Activities — Activities, described in detail in the previous chapter,
represent the window, or screen, being displayed. Activities are the
Android equivalent of Forms in traditional Windows desktop
development. To display a UI, a View (usually a layout or Fragment) is
assingned to an Activity.
21
2.6. The Android Widget ToolBox
Android supplies a toolbox of standard Views to help you create your UIs. By
using these controls (and modifying or extending them, as necessary), you can
simplify your development and provide consistency between applications.
The following list highlights some of the more familiar toolbox controls:
TextView — A standard read-only text label that supports multiline
display, string formatting, and automatic word wrapping.
EditText — An editable text entry box that accepts multiline entry,
word-wrapping, and hint text.
Chronometer — A Text View extension that implements a simple countup
timer.
ListView — A View Group that creates and manages a vertical list of
Views, displaying them as rows within the list. The simplest List View
displays the toString value of each object in an array, using a Text View
for each item.
Spinner — A composite control that displays a Text View and an
associated List View that lets you select an item from a list to display in
the textbox. It’s made from a Text View displaying the current selection,
combined with a button that displays a selection dialog when pressed.
Button — A standard push button.
ToggleButton — A two-state button that can be used as an alternative to
a check box. It’s particularly appropriate where pressing the button will
initiate an action as well as changing a state (such as when turning
something on or off).
ImageButton — A push button for which you can specify a customized
background image (Drawable).
CheckBox — A two-state button represented by a checked or unchecked
box.
RadioButton — A two-state grouped button. A group of these presents
the user with a number of possible options, of which only one can be
enabled at a time.
ViewFlipper — A View Group that lets you define a collection of Views
as a horizontal row in which only one View is visible at a time, and in
which transitions between visible views can be animated.
2.10.Firebase
Firebase is a platform for building mobile and web application. You can build application
quickly with real time data update. Using firebase is very easy and it stores data in JSON format.
You do not need to configure your server when you use firebase. Every thing will be handled by
firebase automatically. So no coding on server side. It will save time and will make you more
productive. In this firebase android tutorial we will do a very simple example of using firebase
for our android application. Obviously it takes more than client side code to build a true web
app. You’ll need a backend that handles a database, authentication, ajax, an accessible api, and
you'll need somewhere to host that backend. There are many things that make backend
development easier like Ruby on Rails, or services like Heroku but there is still a lot of
development time that goes into building these. Firebase takes care of most of the backend
concerns and is dubbed a Backend as a Service (BaaS).
Firebase is also a realtime api utilizing web sockets for pushing state to your application. This
means that an interactive app can be even more interactive as you don’t need to refresh the
browser to get updates; they are pushed in real-time.
Why Use Firebase?
• Super easy and quick to implement.
• No server side configuration needed. No PHP Scripts and No
Database Designs.
• Realtime update without using GCM.
2.10.1 Features
FireBase Cloud Messaging
Firebase Cloud Messaging (FCM) is a cross-platform messaging
solution that lets you reliably deliver messages at no cost.
Features:
• Send notification messages and data messages.
• Versatile message targeting.
• Send messages from client apps.
2.10.2 Real-time database
• The user information returned contains a uid (a unique ID), which is guaranteed to be distinct
across all providers, and to never change for a specific authenticated user.
The value of the auth variable in your app's Security and firebase rules. becomes defined. Store
and sync data with our NoSQL cloud database. Data is synced across all clients in realtime, and
remains available when your app goes offline.The Firebase Realtime Database is a cloud-hosted
database. Data is stored as JSON and synchronized in realtime to every connected client. When
you build cross-platform apps with our iOS, Android, and JavaScript SDKs, all of your clients
share one Realtime Database instance and automatically receive updates with the newest
data.The Realtime Database provides a flexible, expression-based rules language, called Firebase
Realtime Database Security Rules, to define how your data should be structured and when data
can be read from or written to. When integrated with Firebase Authentication, developers can
define who has access to what data, and how they can access it.
2.10.3 Authentication
• This variable isnull for unauthenticated users, but for authenticated users it is an object
containing the user's unique (auth.uid) and potentially other data about the user. This allows you
to securely control data access on a per-user basis.
2.10.4.Cloud messaging
Firebase Cloud Messaging (FCM) is a cross-platform messaging solution that lets you reliably
deliver messages at no cost.Using FCM, you can notify a client app that new email or other data
is available to sync. You can send notification messages to drive user reengagement and
retention. For use cases such as instant messaging, a message can transfer a payload of up to
4KB to a client app.
How does it work?
An FCM implementation includes an app server that interacts with FCM via HTTP or
XMPP protocol, and a client app. You can compose and send messages using the app
server or the Notifications console.
Firebase Notifications is built on Firebase Cloud Messaging and shares the same FCM
SDK for client development. For testing or for sending marketing or engagement
messages with powerful built-in targeting and analytics, you can use Notifications. For
deployments with more complex messaging requirements, FCM is the right choice
• Remote Config
Remote Config is a cloud service that lets you change the behavior and appearance
of your app without requiring users to download an app update. When using
Remote Config, you create in-app default values that control the behavior and
appearance of your app. Then, you can later use the Firebase console to override
in-app default values for all app users or for segments of your userbase.
• Test Lab
Test in the lab, not on your users
• Crash Reporting
Crash Reporting creates detailed reports of the errors in your app. Errors are grouped into
clusters of similar stack traces and triaged by the severity of impact on your users. In addition to
automatic reports, you can log custom events to help capture the steps leading up to a crash.
The more popular and widely adopted symmetric encryption algorithm likely to be
encountered nowadays is the Advanced Encryption Standard (AES). It is found at
least six time faster than triple DES.
A replacement for DES was needed as its key size was too small. With increasing
computing power, it was considered vulnerable against exhaustive key search
attack. Triple DES was designed to overcome this drawback but it was found slow.
DES is the previous "data encryption standard" from the seventies. Its key size is
too short for proper security. The 56 effective bits can be brute-forced, and that has
been done more than ten years ago. DES uses 64 bit blocks, which poses some
potential issues when encrypting several gigabytes of data with the same key.
3DES is a way to reuse DES implementations, by chaining three instances of DES
with different keys. 3DES is believed to still be secure because it requires 2^112
operations which is not achievable with foreseeable technology. 3DES is very slow
especially in software implementations because DES was designed for
performance in hardware.
Functionality of AES-
Interestingly, AES performs all its computations on bytes rather than bits. Hence,
AES treats the 128 bits of a plaintext block as 16 bytes. These 16 bytes are
arranged in four columns and four rows for processing as a matrix −
Unlike DES, the number of rounds in AES is variable and depends on the length of
the key. AES uses 10 rounds for 128-bit keys, 12 rounds for 192-bit keys and 14
rounds for 256-bit keys. Each of these rounds uses a different 128-bit round key,
which is calculated from the original AES key.
Encryption Process-
Shiftrows-
Each of the four rows of the matrix is shifted to the left. Any entries that ‘fall off’
are re-inserted on the right side of row. Shift is carried out as follows −
MixColumns-
Addroundkey-
The 16 bytes of the matrix are now considered as 128 bits and are XORed to the
128 bits of the round key. If this is the last round then the output is the ciphertext.
Otherwise, the resulting 128 bits are interpreted as 16 bytes and we begin another
similar round.
Decryption Process-
However, just as for DES, the AES security is assured only if it is correctly
implemented and good key management is employed.
CHAPTER 3
PROPOSED SYSTEM
The aim of proposed system is to develop a system of improved facilities. The
proposed system can overcome all the limitations of the existing system. The
system provides proper security and reduces the manual work. The existing
system has several disadvantages and many more difficulties to work well. The
proposed system tries to eliminate or reduce these difficulties up to some
extent. The proposed system will help the user to reduce the workload and
mental conflict. The proposed system helps the user to work user friendly and it
can be done without time lagging.
3.1. System Analysis
System analysis is a process of gathering and interpreting facts, diagnosing
problems and the information to recommend improvements on the system. It is
a problem solving activity that requires intensive communication between the
system users and system developers. System analysis or study is an important
phase of any system development process. The system is studied to the minutest
detail and analyzed. The system analyst plays the role of the interrogator and
dwells deep into the working of the present system.
The system is viewed as a whole and the input to the system are identified.
The outputs from the organizations are traced to the various processes. System
analysis is concerned with becoming aware of the problem, identifying the
relevant and decisional variables, analyzing and synthesizing the various factors
and determining an optimal or at least a satisfactory solution or program of
action.
A detailed study of the process must be made by various techniques like
interviews, questionnaires etc. The data collected by these sources must be
scrutinized to arrive to a conclusion. The conclusion is an understanding of how
the system functions. This system is called the existing system. Now the
existing system is subjected to close study and problem areas are identified. The
designer now functions as a problem solver and tries to sort out the difficulties
that the enterprise faces. The solutions are given as proposals. The proposal is
then weighed with the existing system analytically and the best one is selected.
The proposal is presented to the user for an endorsement by the user. The
proposal is reviewed on user request and suitable changes are made. This is loop
that ends as soon as the user is satisfied with proposal.
Preliminary study is the process of gathering and interpreting facts, using the
information for further studies on the system. Preliminary study is problem
solving activity that requires intensive communication between the system users
and system developers. It does various feasibility studies. In these studies a
rough figure of the system activities can be obtained, from which the decision
about the strategies to be followed for effective system study and analysis can
be taken.
3.2. Feasibility Study
Feasibility study is made to see if the project on completion will serve the
purpose of playing the quiz application. Feasibility study lets the developer
foresee the future of the project and the usefulness. A feasibility study of a
system proposal is according to its workability, to meet the user needs and
effective use of resources. Thus when a new application is proposed it normally
goes through a feasibility study before it is approved for development.
The document provide the feasibility of the project that is being designed and
lists various areas that were considered very carefully during the feasibility
study of this project such as Technical, Economic and Operational
feasibilities. The following are its features:
3.2.1. Technical Feasibility
The system must be evaluated from the technical point of view first. The
assessment of this feasibility must be based on an outline design of the system
requirement in the terms of input, output, programs and procedures. Having
identified an outline system, the investigation must go on to suggest the type of
equipment, required method developing the system, of running the system once
it has been designed.
Technical issues raised during the investigation are:
Does the existing technology sufficient for the suggested one?
Can the system expand if developed?
The project should be developed such that the necessary functions and
performance are achieved within the constraints. The project is developed
within latest technology. Through the technology may become obsolete after
some period of time, due to the fact that never version of same software
supports older versions, the system may still be used. So there are minimal
constraints involved with this project. The system has been developed using
Java the project is technically feasible for development.
3.2.2. Economic Feasibility
The developing system must be justified by cost and benefit. Criteria to ensure
that effort is concentrated on project, which will give best, return at the earliest.
One of the factors, which affect the development of a new system, is the cost it
would require.
The following are some of the important financial questions asked during
preliminary investigation:
The costs conduct a full system investigation.
The cost of the hardware and software.
The benefits in the form of reduced costs or fewer costly errors.
Since the system is developed as part of project work, there is no manual cost
to spend for the proposed system. Also all the resources are already available, it
give an indication of the system is economically possible for development.
• Requirement Analysis
Identifying needs and evaluating the basic requirements to be added is based on the
following 7 key parameter
1. User Interfaces
This application gives a user friendly environment for sending the message and sending it
in the image (or any other file) and sending it to your friend i.e. add on your friend list
through the communication channel. Messages pop on the screen for proper processing of
the action on the data entered by the user. It offers many choices to the user for how to
send the message in the most secure fashion.
• Software Interfaces
This application is android based application. It works on all the android versions above
version 2.2. It does not include the use of any database but make use of the media files
(gallery) of the handset to store the message image.
• Communications Interfaces
We are using the communication channel (it includes via Bluetooth or through mail
services) in our project to send the message by message service over the internet from the
application whenever and who so ever the sender wants to.
• Requirements
• Eclipse
• firebase
1. User friendly
The system is user friendly as it provides all the facilities of reporting the problems by the
client right at home so it helps to save his time and effort, and the working of the solution
procedure is so easy and understandable that any user can report a problem by just
understanding the procedure once.
2. Attractive layout
Each screen is designed in such a way that the user will feel enthusiastic while working
with the system.
3. Easy to learn
Due to the easy layout and its user friendliness, it is very easy to learn how to work with
the system. The user will feel relaxed and enjoy working with it.
4. Adaptive
The application is compatible with all versions of Android. It is able to provide all the
services of the application without any bugs.
Software requirements specification establishes the basis for an agreement between customers
and contractors or suppliers (in market-driven projects, these roles may be played by the
marketing and development divisions) on what the software product is to do as well as what it is
not expected to do. Software requirements specification permits a rigorous assessment of
requirements before design can begin and reduces later redesign. It should also provide a realistic
basis for estimating product costs, risks, and schedules.
The software requirements specification document enlists enough and necessary requirements
that are required for the project development.
To derive the requirements we need to have clear and thorough understanding of the products to
be developed or being developed. This is achieved and refined with detailed and continuous
communications with the project team and customer till the completion of the software.
Software SRS establishes the basic for agreement between the client and the supplier on what the
software product will do.
2. Complete
3. Unambiguous
4. Verifiable
5. Consistent
7. Modifiable
8. Traceable
An SRS is correct if every requirement included in the SRS represents something required in the
final system. An SRS is complete, if everything the software is supposed to do and the responses
of the software to all classes of input data are specified in the SRS. Correctness ensures that what
is specified is done correctly; completeness ensures that everything is indeed specified.
An SRS is unambiguous if and only if every requirement stated has one and only one
interpretation. Requirements are often written in natural language, which are inherently
ambiguous.
• High Availability
High Availability is the measure of the quality of a software to keep functioning in spite
of problems. Since the 'problems' can be of many types, different technologies work in
tandem to achieve high availability for the overall system.
• Security
Security is the ability of the software to remain protected from unauthorized access. This
includes both change access and view access.
• Flexibility
Flexibility is the ability of software to adapt when external changes occur.
• Traceability
Traceability is the ability of the Software to offer insight into the inner processing when
required. A higher level of traceability is required at time of debugging a problem or at
times of new interoperability testing.
• Testability
Testability is the ability of a software to be tested thoroughly before putting into
production. This gets very useful in testing the new releases before production.
• Reliability
High Reliability is the measure of how a product behaves in varying circumstances.
• Efficiency
Efficiency is the ability of the software to do the required processing on least amount of
hardware.
• Resilience
Resilience is the ability of software to absorb sudden bursts of legitimate loads. The
application uses different techniques of Resilience for different types of loads.
• Compatibility
Compatibility is the ability of the software to work with other systems. This application is
compatible with all android versions above 2.2.
• Modularity
Modularity is the measure of the extent to which software is composed of separate,
interchangeable components, each of which accomplishes one function and contains
everything necessary to accomplish this. Modularity increases cohesion and reduces
coupling and makes it easier to extend the functionality and maintain the code.
• Customizability
Customizability is the ability of software to offer extensions to existing functionality to
better suited the needs of a user.
• Integrity
Integrity is the ability of software to maintain correctness and harmony among all related
pieces of data.
• Manageability
Manageability is the ability of a software to be managed from different perspectives.
• Usability
Usability is the ability of a software to offer its interfaces in a user friendly and elegant
way.
CHAPTER – 5
DESIGN DOCUMENTS
5.1 System Design
Based on the user requirements and the detailed analysis of a new system, the new
system must be designed. This is the phase of system designing. It is the most
crucial phase in the development of a system.
The logical system design arrived at as a result of system analysis and is converted
into physical system design. In the design phase the SDLC process continues to
move from the what questions of the analysis phase to the how .
The logical design produced during the analysis is turned into a physical design -
a detailed description of what is needed to solve original problem. Input, output,
databases, forms, codification schemes and processing specifications are drawn up
in detail. In the design stage, the programming language and the hardware and
software platform in which the new system will run are also decided. Data
structure, control process, equipment source, workload and limitation of the
system, Interface, documentation, training, procedures of using the system, taking
backups and staffing requirement are decided at this stage.
There are several tools and techniques used for describing the system design of the
system. These tools and techniques are: Flowchart, Data flow diagram (DFD),
Data dictionary, Structured English, Decision table and Decision tree.
Level 0 Dfd describes the data store and the process flow possible between
the three major entities: mobile, gcm and the server.
5.2.2 Level 4 DFD
MOBILE SYSTEM
CHAPTER 6
IMPLEMENTATION
In chatmate, we use AES Algorithm to provide security to the messages that are
delivered from one user to an other user. we use two java classes in it ,
AESHelper.java and EncryptionUtils.java.
6.4 Realtime Chatting
In Chatmate different type of user can interact with eachother . New user first
have to do Sign-up and then after adding title as "User-name" user can chat with
others with that user name. Once user name is saved, one dont need to change it
.All detailes are saved in realtime storage.All messaging can be seen in realtime
database Firebase but all messages are encrypted.
CHAPTER 7
TESTING
Functional testing refers to activities that verify a specific action or function of the
program. These are usually found in the requirements documentation, although
some development methodologies work from use cases or user stories. Functional
tests tend to answer the question of “can the user do this” or “does this particular
feature work”.
Non functional testing refers to aspects of the software that may not be related to a
specific function or user function, such as scalability or security. Non functional
testing tends to answer such questions as “how many people can use at once“.
Performance Requirements
The application must run smoothly during chating process and should provide
quick response.and if no network connection are there so this application does not
run only we can view the previous messages.
Security Requirements
The password should not be known to anyone else other than the authentic user.
the length of password should be greater then 4 and the password should be in
numeric value.
It is also known as component testing refers to tests that verify the functionality
specific section of code, usually at the function level. In an object-oriented
environment, this is usually at the class level, and the minimal unit tests include
the constructors and destructors.
These types of tests are usually written by developers as they work on code
(white-box style), to ensure that the specific function is working as expected. One
function might have multiple tests, to catch corner cases or other branches in the
code. Unit testing alone cannot verify the functionality of a piece of software, but
rather is used to assure that the building blocks the software uses work
independently of each other.
Unit testing is a software development process that involves synchronized
application of a broad spectrum of defect prevention and detection strategies in
order to reduce software development risks, time, and costs. It is performed by
the software developer or engineer during the construction phase of the software
development lifecycle.
7. SNAPSHOTS