KEMBAR78
Software Design Document | PDF | Library (Computing) | Client–Server Model
0% found this document useful (0 votes)
13 views16 pages

Software Design Document

The Software Design Document outlines the development of the 'College Companion' application, which aims to provide a comprehensive platform for students with features like chat, notes, and event management. It details the system architecture, design decisions, and includes pseudocode for key functionalities such as user authentication and messaging. The document serves as a guideline for the structure and content of the software design specification, ensuring clarity and coherence in the development process.

Uploaded by

cypherphage
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views16 pages

Software Design Document

The Software Design Document outlines the development of the 'College Companion' application, which aims to provide a comprehensive platform for students with features like chat, notes, and event management. It details the system architecture, design decisions, and includes pseudocode for key functionalities such as user authentication and messaging. The document serves as a guideline for the structure and content of the software design specification, ensuring clarity and coherence in the development process.

Uploaded by

cypherphage
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 16

1

Software Design Document


College Companion

Team Members
Aditya Nain U101115FCS041
Pranit Pawar U101115FCS225
Sarthak Kohli U101115FCS___
Abhit Gahlot U101115FCS040
Akash Dalal U101115FCS043

The Software Design Specification (SDS) sections provide you with


guidelines related to the structure and the contents of SDS document. The
Software Design Specification document includes at least these sections.

You will note that there is some overlap in the content between different
documents (i.e. the User Requirements Specification Document and the
Software Design Specification Document.) This redundancy allows each
document to stand on its own.
2

Software Design Specification Outline

1. Introduction
1.1. Purpose of this document
The purpose of this document is to describe the implementation of the application
“College Companion”. It will also provide an overview of the user interface and
user experience.

1.2 Scope of the development project


College Companion (CC) provides an all in one platform for the students. Its
purpose is to make the life of students easier by providing a variety of
services like chat engine, notes database, timetables, voting channels,
upcoming events etc. in a single application.

1.3 Definitions, acronyms, and abbreviations

Definitions, acronyms, and abbreviations Description

API Application Package Interface

CC College Companion

GUI Graphics User Interface

Material Design Material Design is a comprehensive guide


for visual, motion, and interaction design
across platforms and devices.

Flow Diagram A diagram of the sequence of movements


or actions of people or things involved in a
complex system or activity.

Firebase Firebase is Google's mobile platform that


helps you quickly develop high-quality
apps and grow your business
3

1.4 References
https://firebase.google.com/ for backend
https://www.draw.io/ for designing flow diagrams
https://way2java.com/networking for developing chat engine

1.5 Overview of the document

The Software Design Document is divided into 7 sections with various


subsections. The sections of the Software Design Document are:

1. Introduction
2. System Architecture description
3. User Interface
4. Logical Architecture
5. Design Decisions and Trade Off
6. Pseudocode
7. Appendices

2. System Architecture description

2.1 Overview of modules/components


Our system is designed with extensibility and scalability in mind. We are taking
great care in designing a framework which can be updated easily. Many of the
anticipated changes to our system in future phases will only require adding new
types of data and changing the user presentation code to make use of these new
data.

2.2 Structure and relationships

● Database Engine
○ Existing open source software: Google Firebase
○ Hosts the backend database which is used for main data
storage.
4

● Class Library
○ Provides a uniform interface on either sides of the network
connection.
○ Most updates and changes will require only updating the
library.
○ Updates to the package must be backwards compatible.

○ Client applications can use these objects to show data,


separating it completely from the server-side .

● Server Procedure Proxy


○ Java class which provides local methods for invoking remote methods on
the server application.
○ Will be contained within the client-side class library.
○ Takes care of serializing the objects passed to and from the
user application so they can be sent over the network.
○ Simplifies client/server communication for the user.

● Server Application
○ Implemented in Java
○ Provides methods and procedures that can be invoked remotely by
a client application via the server procedure proxy.

■ Retrieve project data.


■ Update project data.

○ Central process which can make all decisions that arise due to the
distributed nature of this application.
■ For instance, when a client wishes to update a project, there may be
conflicts that need to be resolved if another client has updated the
same project.
■ The server can coordinate conflict resolution with the client app .

○ Uses the class library package defined above

● Client Applications
○ Implemented in Java.
○ Contains all presentation logic.
○ Interacts only with the user.
○ Uses the class library package described above.
○ Connects with the server application through the server
procedure proxy class contained in the class library.
5

3. UI Flow Diagram
6

4. Logical Architecture ( class diagram, state diagram,


sequence diagram)

4.1 Sequence Diagrams

4.1.1 Authenticating User


7

4.1.2 Uploading Files

4.1.3 Sending a message


8

4.1.4 Creating an event


9

5. Design decisions and tradeoffs

Design tradeoffs in the software are limited not to the code or the architecture of the
code but also to the physical architecture where the application reside.

Firstly, the methodology used is Iteration methodology. The reason to use this and not
other methodology is that it gave us more freedom to work on the code and the test it as
we had many modules. Iteration method is useful as we can make the software module
by module and work on specific module at one time. This gave us time to test each
module very thoroughly before moving on to the other module. This also helped us in
making the modules work together as we could find the error during integration easily.

Secondly, the place where the software actually reside. We are using Firebase platform
to host the software and all the services over there works on it. This was a useful design
decision as the software would have been in a always on state as long as the Firebase
Service was up. This was much better than hosting the service as uptime would have
been in the availability of the server which could have been off due to many of the
reasons such as, no power, human error etc.

Thirdly, tradeoffs made during the development processes in software were made to
increase performance and increase efficiency where-ever possible. Examples of
tradeoffs in the project are the framework used for development.

Since we will be using Firebase authenticating users can easily login without worrying
about security and it also helps us in saving time.

Firebase gives actionable insights and comprehensive analytics whenever your app
crashes or stops working , so we can debug our code easily.

6. Pseudo code for components

6.1 Pseudo Code for user authentication

import java.util.Scanner;

public class LoginMain {

public static void main(String[] args) {


10

String Username;
String Password;

Password = "123";
Username = "wisdom";

Scanner input1 = new Scanner(System.in);


System.out.println("Enter Username : ");
String username = input1.next();

Scanner input2 = new Scanner(System.in);


System.out.println("Enter Password : ");
String password = input2.next();

if (username.equals(Username) && password.equals(Password)) {

System.out.println("Access Granted! Welcome!");


}

else if (username.equals(Username)) {
System.out.println("Invalid Password!");
} else if (password.equals(Password)) {
System.out.println("Invalid Username!");
} else {
System.out.println("Invalid Username & Password!");
}

6.2 Pseudo code for sending a message

Client side

import java.io.*;
import java.net.*;
public class Client
{
public static void main(String[] args) throws Exception
{
Socket sock = new Socket("127.0.0.1", 3000);
// reading from keyboard (keyRead object)
BufferedReader keyRead = new BufferedReader(new
InputStreamReader(System.in));
// sending to client (pwrite object)
OutputStream ostream = sock.getOutputStream();
PrintWriter pwrite = new PrintWriter(ostream, true);
11

// receiving from server ( receiveRead


object)
InputStream istream = sock.getInputStream();
BufferedReader receiveRead = new BufferedReader(new
InputStreamReader(istream));

System.out.println("Start the chitchat, type and press Enter key");

String receiveMessage, sendMessage;


while(true)
{
sendMessage = keyRead.readLine(); // keyboard reading
pwrite.println(sendMessage); // sending to server
pwrite.flush(); // flush the data
if((receiveMessage = receiveRead.readLine()) != null) //receive
from server
{
System.out.println(receiveMessage); // displaying at DOS
prompt
}
}
}
}

Server side

import java.io.*;
import java.net.*;
public class Server
{
public static void main(String[] args) throws Exception
{
ServerSocket sersock = new ServerSocket(3000);
System.out.println("Server ready for chatting");
Socket sock = sersock.accept( );
// reading from keyboard (keyRead object)
BufferedReader keyRead = new BufferedReader(new
InputStreamReader(System.in));
// sending to client (pwrite object)
OutputStream ostream = sock.getOutputStream();
PrintWriter pwrite = new PrintWriter(ostream, true);

// receiving from server ( receiveRead


object)
InputStream istream = sock.getInputStream();
12

BufferedReader receiveRead = new BufferedReader(new


InputStreamReader(istream));

String receiveMessage, sendMessage;


while(true)
{
if((receiveMessage = receiveRead.readLine()) != null)
{
System.out.println(receiveMessage);
}
sendMessage = keyRead.readLine();
pwrite.println(sendMessage);
pwrite.flush();
}
}
}

7. Appendices

User Interface screen designs

Splash Screen Home Screen


13

Profile Login Screen

Edit Profile And Info


Notes00000000000000000000000
14

Events Page Event Description


15

Chat Screen Recent Chats

Schedule
16

You might also like