Web-Based Community App: FriendzNet
Web-Based Community App: FriendzNet
INTRODUCTION
Community organizing is a process by which people are brought together to act in common self-
interest. While organizing describes any activity involving people interacting with one another in
a formal manner, much community organizing is in the pursuit of a common agenda. Many
groups seek populist goals and the ideal of participatory democracy. Community organizers
create social movements by building a base of concerned people, mobilizing these community
members to act, and developing leadership from and relationships among the people involved.
The main aim of the project is to create a web-based community organization to help people stay
in touch with each other & share information.
For developing this community organization the technology being used is Java. As there are
various benefits of Java it gives an added advantage to the project. The project consists of
different modules & within it are various functions/ options provided for the users.
PROBLEM DEFINITION
The project aims at developing a Web Application using Java Technology. It is a Web
Application for anyone. It allows you to make a request to friends, and if they are allowing then
-1-
FriendzNet
they can be added as friends. One can create communities according to their choice, search for a
particular friend by his/her name, read or write the scraps or messages to anyone, share photos
and documents with the friends, delete his/her own account, etc. Scraps can be viewed by anyone
but messages can be viewed by a particular friend. In short, it’s a mean of private and public
communication.
FEATURES
1. An application that resides on the main server but can be remotely run on the client
2. Friendz Net provides a validation check for username and password when the users log in.
3. The applications provides the facility to search for to help users meet new friends & maintain
existing relationships both personal as well as professional.
4. The application maintains the database which keeps a record of all the users.
5. A new feature a more secure way of retrieving your forgotten password is provided in it.
6. It is an online community that connects people through a network of trusted friends.
7. It provides an online meeting place where people can socialize make new acquaintances &
find others who share their interests.
8. Creating and joining the communities.
9. Uploading and sharing the albums and the documents
10. Searching for a particular Friend
11. Creating the Forum in Communities
-2-
FriendzNet
Database MySql.
RUNTIME REQUIREMENTS
Required:
Recommended:
-3-
FriendzNet
PLANNING
INTRODUCTION
Planning establishes a plan for the system to be developed. It describes the technical tasks to be
conducted, the risks that are likely, the resources that will be required, the work products to be
produced, and a work schedule.
SCOPE
Scope describes the functions and features that are to be developed to the end user. The data that
are input and output, the content that is presented to the user as a consequence of using the
application and the performance, constraints, interfaces and reliability that bound the system.
Scope identifies the primary data, functions and behaviors that characterize the product and more
important attempts to bind these characteristics in a quantitative manner.
3.1 Assumptions:
These components will be developed in Java, Servlets, and JSP and would comply with
Java framework specifications.
Components may inherit from existing available Java components but may customize to
suit the requirements.
All the project team members have good knowledge of Java framework basics, Java
programming, Servlets, JSP.
-4-
FriendzNet
3.2 Drawbacks:
If the friend is online, one can’t be able to chat with his/her friend using this application.
OBJECTIVES
User
New registration
Log in
Perform operations
View friends
Join communities
Share documents
Write scrap
Send mail
Maintain album
Log out
Friends
Add friend to user list
Delete friend from user list
Documents
Upload of documents
-5-
FriendzNet
Download of documents
Deleting uploaded documents by the user
Mail
Write mail
Send mail
Delete received mail
Scrap
Send scrap
Delete scrap
Album
Upload photo
Delete photo
Setting
Change user settings
Delete account
-6-
FriendzNet
RESOURCES
HARDWARE RESOURCES
A minimum of one machine is required to fulfill the requirements of the application. The
machine will play the role of the main server on which the project is loaded. The server also
contains the database which contains all the information of all the users. The application can be
run on another machine as the client machine. If more than one machine is used to form the
server client architecture, then the machines have to be placed on the LAN.
SOFTWARE RESOURCES
ESTIMATION
Estimation of resources, cost and schedule for a software requires experience, access to good
information and the courage to commit to quantitative predictions when qualitative information
is all that exists.
Software is the most expensive element of virtually all computer-based systems. For complex,
custom systems, a large cost estimation error can make the difference between profit and loss.
The software project planner must estimate how long it will take, how much effort will be
required and how many people will be involved. In addition, the resources that will be required
and the risk involved must be predicted.
-7-
FriendzNet
2.5RISK MANAGEMENT
Introduction
Risk analysis and management is a series of step that help the software team to understand and
manage uncertainty. A risk is a potential problem which might happen or not happen regardless
of the outcome it is a good idea to identify it, access its probability of occurrence, estimate its
impact and establish a contingency plan should the problem actually occur.
RMMM PLAN
The RMMM plan tackles risk through Risk Assessment and Risk Control.
Risk Assessment involves:
- Risk Identification
- Risk Analysis
- Risk Prioritization
Risk Control involves:
-8-
FriendzNet
ANALYSIS
DOMAIN ANALYSIS
The goal of domain analysis is straight forward: to find or create those analysis
classes and/or common functions and features that are broadly applicable, so that
they may be reused.
ARCHITECTURE
ARCHITECTURAL DESIGN
Architectural design represents the structure of data and program components that are required to
build a computer based system. Its considers the architectural design that the system will take,
the structure and the properties of the components that constitute the system, and the inter-
relationship that occur among all architectural components of the system.
The architecture is not the operational software. Rather it is a representation that enables a
software engineer to:
-9-
FriendzNet
COMPONENTS
INITIAL REQUIREMENT
Registration: This module will be responsible for registering himself/ herself with this
application.
ACCESSING MEMBERS
Friends: This module list all the friends added to ones friendlist. Along with it are various
options to modify or delete users.
Add As Friend: This module will be responsible to search for a registered friend and if he
is found then make a request to the friend.
Search: This module provides the facility to search a particular person or a community.
FORMING GROUPS
- 10 -
FriendzNet
Communities: This module will be responsible to create the new communities or join the
existing communities and create forums. Along with this are options to modify or delete the
community.
SHARING DATA
Documents: This module will be responsible to upload and share any files
Albums: This module will be responsible to upload photos and view the albums as well as
delete them.
Home Page: This displays the homepage of the user with various options.
- 11 -
FriendzNet
DIAGRAMS
7.1 ER-DIAGRAM
HAVE
- 12 -
FriendzNet
- 13 -
FriendzNet
CLASS DIAGRAM
INITIAL REQUIREMENTS
- 14 -
FriendzNet
CLASS DIAGRAM
ACCESSING MEMBERS
- 15 -
FriendzNet
CLASS DIAGRAM
SHARING DATA
- 16 -
FriendzNet
USE CASE
A use case is a technique for capturing the potential requirements of a new system or software
change. Each use case provides one or more scenarios that convey how the system should
interact with the end user or another system to achieve a specific business goal.
Use cases are deceptively simple tools for describing the behavior of the software. A use case
contains a textual description of all of the ways which the intended users could work with the
software through its interface. Use cases do not describe any internal workings of the software,
nor do they explain how that software will be implemented. They simply show the steps that the
user follows to use the software to do his work. All of the ways that the users interact with the
software can be described in this manner.
- 17 -
FriendzNet
- 18 -
FriendzNet
USECASE DIAGRAM
INITIAL REQUIREMENTS
- 19 -
FriendzNet
USECASE DIAGRAM
ACCESSING MEMBERS
- 20 -
FriendzNet
USECASE DIAGRAM
SHARING DATA
- 21 -
FriendzNet
SEQUENCE DIAGRAM
- 22 -
FriendzNet
- 23 -
FriendzNet
COLLABORATION DIAGRAM
- 24 -
FriendzNet
ACTIVITY DIAGRAM
- 25 -
FriendzNet
- 26 -
FriendzNet
PROJECT
- 27 -
FriendzNet
SCHEDULING
COMPARTMENTALISATION:
We have divided our project into smaller pieces of problems so that they can be solved
separately.
This functional approach involves the use of a common controlling process to enable different
processing of modules. This eased the strain in understanding of the total project
And a cleaner algorithm understanding.
The process has been compartmentalized into the following group of tasks-
a) Scope- The context, information, functions, performances are determined during this
Period.
b) Technical research- A detailed and exhaustive technical research was conducted to gain
insight into the implementation/performance details of the project.
c) Analysis- A detailed analysis on the software system to be done and represented in the
graphical notation.
- 28 -
FriendzNet
TIME ALLOCATION:
The time allocation is a series of deadlines allocated for the various defined task’s and their
successful completion.
2) Survey of the projects needs ,market demand, clear development of the objective.
Time allocated-18th -31st Dec-2010
6) Testing- Creating the sample test application, testing and debugging and bug fixing
Time allocated-1st-25st March-2011
- 29 -
FriendzNet
EFFORT VALIDATION:
This involved various steps involving obtaining clearances from all sources. Showing the whole
application to the internal and external guides, making various modifications till the output was
of expected quality.
DEFINED OUTCOMES
1) Ensuring all members are able to access their homepages successfully and safely
2) Ability of all members to read/send successfully their message, scraps, photos etc
3) All members should be able to successfully search for their friends.
4) Ability to create/view/join communities
5) Ability of the members to delete their profiles, scraps, accounts successfully
DEFINED MILESTONES:
It’s a reference to major events in an project and is used to monitor the projects process. Any
task with a zero duration can be displayed as a milestone. A milestone is simply a task with no
duration(zero days) that you use to identify significant events in an schedule, such as completion
of a major phase.
- 30 -
FriendzNet
A detailed discussion with the company’s authorities about the projects scope
2) Survey of the projects needs, market demand, clear development of the objective.
A detailed survey was carried out to gauge the requirements of the public over
their requirements, expectation for a better in depth understanding of the
project. Some modules additional plans incorporated.
3) Training- Learning the required software-Core Java,JSP,Servlets & JavaBeans. All members
underwent training in the above mentioned technologies.
4) Designing -Designing the UML, DFD diagrams, layout of forms, different types of
menus to be created. Planning of the various diagrams etc done to get a larger picture of the
project
5) Coding- Coding of the various modules. Various modules implemented in depth. All the
coding done
6) Testing- Creating the sample test application, testing and debugging and bug fixing.
Checking the whole application under various scenarios, removing of ambigious code and
ensuring quality of the whole project. Ensuring its deliverable.
7) Documentation- Generating the project report. Final documentation of the project and
generation of the project report
- 31 -
FriendzNet
DESIGN
IMPLEMENTATION
LOG IN
Attributes:
username
password
Function: [Link]
<h4>Login</h4>
<p> </p>
<p align="left" class="style1"> <span
class="style8"> <span class="style9">Sign In to </span></span><span
class="style3">FriendzNet</span> <span class="style10"> Account </span></p>
<form id="LoginForm" name="LoginForm"
method="post" action="[Link]?ACTION=doLogin">
<p> </p>
<table width="75%" border="0" align="center" cellpadding="1"
cellspacing="1">
<tr>
<td width="46%" height="27"><div align="right">
<div align="right"><span class="style7">User Name:</span> <br />
</div>
</div></td>
<td width="54%"><label>
- 32 -
FriendzNet
Algorithm:
1. Start
2. Enter username and password
3. Call doLogin in LoginForm
class="style3">FriendzNet</span> <span class="style10"> Account
</span> <form id="LoginForm" name="LoginForm" method="post"
action="[Link]?ACTION=doLogin">
4. Check for username, if valid or not.
- 33 -
FriendzNet
LOG OUT
Attributes:
None
Function: [Link]
<% [Link]();%>
<jsp:forward page="[Link]" />
Algorithm:
[Link]
[Link] if user wants to logout.
3. If yes then log out and go to homepage
<% [Link]();%>
<jsp:forward page="[Link]" />
else go to desired page.
[Link]
Attributes:
username
- 34 -
FriendzNet
userId
Function: [Link]
<%
String userName = (String)[Link]("userName");
[Link](userName);
[Link] vMessages = [Link]();
%>
<title>FriendNet</title>
<%
String id=[Link]("userId");
%>
<tr>
<td width="47%"><label>
<form name="frndcancel" method="post" action="[Link]?userId=<%=id%>">
<input type="image" name="imageField" src="buttons/[Link]"
onclick="cancelme()" />
</form>
</label></td>
<td width="53%"><label>
<form name="addfriend" action="[Link]?
ACTION=AddFriend&userName=<%=userName%>&fid=<%=id%>" method="post">
<input type="image" name="imageField2" src="buttons/[Link]"
onclick="addfriend()" />
</form>
</label></td>
- 35 -
FriendzNet
</tr>
Algorithm:
1. Start
2. Go to member’s homepage.
3. Add member as friend.
4. User Id of member is retrieved
String id=[Link]("userId");
5. Confirm member as friend.
<form name="addfriend" action="[Link]?
ACTION=AddFriend&userName=<%=userName%>&fid=<%=id%>" method="post">
6. If accepted then add friend else if rejected do not add member as friend.
7. Stop.
WRITE SCRAP
Attributes:
userId
Function: [Link]
- 36 -
FriendzNet
%>
1. Start
2. Go to friend’s homepage
3. Go to scrap option.
4. Write Scrap
<form name="writeScrap" method="post" action="[Link]?
ACTION=scrap">
- 37 -
FriendzNet
5. Send scrap
onclick="validate()"
6. Stop
Output: Write a scrap for a friend
WRITE MAIL
Attributes:
userId
toId
Function: [Link]
- 38 -
FriendzNet
Algorithm:
1. Start
2. Go to friend’s homepage
3. Go to mail option.
4. Write Mail
<form name="mail" method="post" action="[Link]?
ACTION=mail">
5. Send scrap
onclick="validate()"
6. Stop
- 39 -
FriendzNet
ALBUM
Attributes:
userId
photoUrl
Function: [Link]
<tr>
- 40 -
FriendzNet
<tr>
<td height="26" colspan="2"><div align="right">
<label>
<div align="center">
<img src="buttons/[Link]" alt="" width="100" height="24" name="upload"
onclick="[Link]='buttons/[Link]';validate()" />
</div>
</label>
</div></td>
</tr>
</table>
</form>
Algorithm:
1. Start
2. Open user homepage.
3. Select album option.
4. Select photo for upload.
<form method="post" name="Album" enctype="multipart/form-data"
action="[Link]?ACTION=album">
5. Validate
<img src="buttons/[Link]" alt="" width="100" height="24" name="upload"
onclick="[Link]='buttons/[Link]';validate()" />
6. Stop
- 41 -
FriendzNet
CREATE COMMUNITY
Attributes:
username
Function: [Link]
Algorithm:
1. Start
2. Open user homepage.
- 42 -
FriendzNet
DESIGN
Design is that area of human experience, skill and knowledge which is concerned with man’s
ability to mould his environment to suit his material and spiritual needs.
SYSTEM DESIGN
Systems design is the process or art of defining the hardware and software architecture,
components, modules, interfaces, and data for a computer system to satisfy specified
- 43 -
FriendzNet
requirements. One could see it as the application of systems theory to computing. Some overlap
with the discipline of systems analysis appears inevitable.
Prior to the standardization of hardware and software in the 1990s which resulted in the ability to
build modular systems, systems design had a more crucial and respected role in the data
processing industry. The increasing importance of software running on generic platforms has
enhanced the discipline of software engineering at the expense of systems design.
Object-oriented analysis and design methods are becoming the most widely used methods for
system design. The UML has become the standard language used in Object-oriented analysis and
design. It is widely used for modeling software systems and is increasingly used for designing
non-software systems and organizations.
System designers are in between business analysts and technical experts.
System design involves the following :
- Task management
- User interface
- Data management
- Resource management
- Inter subsystem communication
SOFTWARE TESTING
Software Testing is the process used to help identify the correctness, completeness, security, and
quality of developed computer software. Testing is a process of technical investigation,
performed on behalf of stakeholders, that is intended to reveal quality-related information about
the product with respect to the context in which it is intended to operate. This includes, but is not
limited to, the process of executing a program or application with the intent of finding errors.
Quality is not an absolute; it is value to some person. With that in mind, testing can never
completely establish the correctness of arbitrary computer software; testing furnishes a criticism
or comparison that compares the state and behaviour of the product against a specification. An
important point is that software testing should be distinguished from the separate discipline of
- 44 -
FriendzNet
Software Quality Assurance (SQA), which encompasses all business process areas, not just
testing.
There are many approaches to software testing, but effective testing of complex products is
essentially a process of investigation, not merely a matter of creating and following routine
procedure. One definition of testing is "the process of questioning a product in order to evaluate
it", where the "questions" are operations the tester attempts to execute with the product, and the
product answers with its behavior in reaction to the probing of the tester. Although most of the
intellectual processes of testing are nearly identical to that of review or inspection, the word
testing is connoted to mean the dynamic analysis of the product—putting the product through its
paces. Some of the common quality attributes include capability, reliability, efficiency,
portability, maintainability, compatibility and usability. A good test is sometimes described as
one which reveals an error; however, more recent thinking suggests that a good test is one which
reveals information of interest to someone who matters within the project community.
INTRODUCTION
In general, software engineers distinguish software faults from software failures. In case of a
failure, the software does not do what the user expects. A fault is a programming error that may
or may not actually manifest as a failure. A fault can also be described as an error in the
correctness of the semantic of a computer program. A fault will become a failure if the exact
computation conditions are met, one of them being that the faulty portion of computer software
executes on the CPU. A fault can also turn into a failure when the software is ported to a
different hardware platform or a different compiler, or when the software gets extended.
Software testing is the technical investigation of the product under test to provide stakeholders
with quality related information.
- 45 -
FriendzNet
Software testing may be viewed as a sub-field of Software Quality Assurance but typically exists
independently (and there may be no SQA areas in some companies). In SQA, software process
specialists and auditors take a broader view on software and its development. They examine and
change the software engineering process itself to reduce the amount of faults that end up in the
code or deliver faster.
Regardless of the methods used or level of formality involved the desired result of testing is a
level of confidence in the software so that the organization is confident that the software has an
acceptable defect rate. What constitutes an acceptable defect rate depends on the nature of the
software.
A problem with software testing is that the number of defects in a software product can be very
large, and the number of configurations of the product larger still. Bugs that occur infrequently
are difficult to find in testing. A rule of thumb is that a system that is expected to function
without faults for a certain length of time must have already been tested for at least that length of
time. This has severe consequences for projects to write long-lived reliable software.
UNIT TESTING
In computer programming, unit testing is a procedure used to validate that individual units of
source code are working properly. A unit is the smallest testable part of an application. In
procedural programming a unit may be an individual program, function, procedure etc, while in
object-oriented programming, the smallest unit is always a Class; which may be a base/super
class, abstract class or derived/child class. Units are distinguished from modules in that modules
are typically made up of units.
- 46 -
FriendzNet
Ideally, each test case is independent from the others; mock objects and test harnesses can be
used to assist testing a module in isolation. Unit testing is typically done by the developers and
not by end-users.
BENEFITS
The goal of unit testing is to isolate each part of the program and show that the individual parts
are correct. A unit test provides a strict, written contract that the piece of code must satisfy. As a
result, it affords several benefits.
Facilitates change
Unit testing allows the programmer to refactor code at a later date, and make sure the module
still works correctly (i.e. regression testing). The procedure is to write test cases for all functions
and methods so that whenever a change causes a fault, it can be quickly identified and fixed.
Readily-available unit tests make it easy for the programmer to check whether a piece of code is
still working properly. Good unit test design produces test cases that cover all paths through the
unit with attention paid to loop conditions.
In continuous unit testing environments, through the inherent practice of sustained maintenance,
unit tests will continue to accurately reflect the intended use of the executable and code in the
face of any change. Depending upon established development practices and unit test coverage,
up-to-the-second accuracy can be maintained.
Simplifies integration
Unit testing helps to eliminate uncertainty in the units themselves and can be used in a bottom-up
testing style approach. By testing the parts of a program first and then testing the sum of its parts,
integration testing becomes much easier.
- 47 -
FriendzNet
A heavily debated matter exists in assessing the need to perform manual integration testing.
While an elaborate hierarchy of unit tests may seem to have achieved integration testing, this
presents a false sense of confidence since integration testing evaluates many other objectives that
can only be proven through the human factor. Some argue that given a sufficient variety of test
automation systems, integration testing by a human test group is unnecessary. Realistically, the
actual need will ultimately depend upon the characteristics of the product being developed and
its intended uses. Additionally, the human or manual testing will greatly depend on the
availability of resources in the organization.
Documentation
Unit testing provides a sort of "living document". Clients and other developers looking to learn
how to use the module can look at the unit tests to determine how to use the module to fit their
needs and gain a basic understanding of the API.
Unit test cases embody characteristics that are critical to the success of the unit. These
characteristics can indicate appropriate/inappropriate use of a unit as well as negative behaviors
that are to be trapped by the unit. A unit test case, in and of itself, documents these critical
characteristics, although many software development environments do not rely solely upon code
to document the product in development.
On the other hand, ordinary narrative documentation is more susceptible to drifting from the
implementation of the program and will thus become outdated (e.g. design changes, feature
creep, relaxed practices to keep documents up to date).
Because some classes may have references to other classes, testing a class can frequently spill
over into testing another class. A common example of this is classes that depend on a database:
in order to test the class, the tester often writes code that interacts with the database. This is a
mistake, because a unit test should never go outside of its own class boundary. As a result, the
- 48 -
FriendzNet
software developer abstracts an interface around the database connection, and then implements
that interface with their own mock object. By abstracting this necessary attachment from the
code (temporarily reducing the net effective coupling), the independent unit can be more
thoroughly tested than may have been previously achieved. This results in a higher quality unit
that is also more maintainable. In this manner, the benefits themselves begin returning dividends
back to the programmer creating a seemingly perpetual upward cycle in quality.
Unit testing will not catch every error in the program. By definition, it only tests the functionality
of the units themselves. Therefore, it will not catch integration errors, performance problems or
any other system-wide issues. In addition, it may not be easy to anticipate all special cases of
input the program unit under study may receive in reality. Unit testing is only effective if it is
used in conjunction with other software testing activities.
It is unrealistic to test all possible input combinations for any non-trivial piece of software. Like
all forms of software testing, unit tests can only show the presence of errors; it cannot show the
absence of errors.
To obtain the intended benefits from unit-testing, a rigorous sense of discipline is needed
throughout the software development process. It is essential to keep careful records, not only of
the tests that have been performed, but also of all changes that have been made to the source-
code of this or any other unit in the software. Use of a version control system is essential; If a
later version of the unit fails a particular test that it had previously passed, the version-control
software can provide list of the source-code changes (if any) that have been applied to the unit
since that time.
INTEGRATION TESTING
- 49 -
FriendzNet
Integration testing (sometimes called Integration and Testing, abbreviated I&T) is the phase of
software testing in which individual software modules are combined and tested as a group. It
follows unit testing and precedes system testing.
Integration testing takes as its input modules that have been unit tested, groups them in larger
aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its
output the integrated system ready for system testing.
PURPOSE
- 50 -
FriendzNet
determine the levels of software developed and makes it easier to report testing progress in the
form of a percentage.
Limitations
Any conditions not stated in specified integration tests, outside of the confirmation of the
execution of design items, will generally not be tested. Integration tests can not include system-
wide (end-to-end) change testing.
VALIDATION TESTING
Validation tests are tests that measure some aspect of an implementation’s behavior against an
expectation and answer whether the software complies with the expectation. For example, a test
that measures the time required to perform a specific task is not a validation test. A test that
measures the time required to perform a specific task and compares it to a benchmark is a
validation test.
Validation tests provide assurance that the software as written meets requirements and/or
specifications. When validation testing becomes a fundamental part of the software development
process, software is more likely to be completed, more likely to be fit for the intended purpose, is
less expensive to build and maintain, and takes less time to complete.
A common practice is to associate each module of software with a set of automated validation
tests (often called ‘unit tests’). These tests are run on an extremely frequent basis, usually every
night. Even if the code in the module has not changed, the module may depend on other modules
that may have changed, so it is necessary to run the tests at leas as frequently as code may
change.
- 51 -
FriendzNet
1. Testing Application
This application is used for transferring data between the different users. Various tests were
carried out to check out its performance.
.Test whether messages are being transferred end to end.
.Test whether this application works on different platforms.
- 52 -
FriendzNet
- 53 -
FriendzNet
CONCLUSION
- 54 -
FriendzNet
FriendzNet is a good way of meeting new people & maintaining the existing relationships. It
provides an online meeting place where people can socialize, make new acquaintances & find
others who share their interests.
REFERENCES
- 55 -
FriendzNet
- 56 -