0% found this document useful (0 votes)
26 views16 pages

College Companion 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)
26 views16 pages

College Companion 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

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
[Link] for backend
[Link] for designing flow diagrams
[Link] 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 [Link];

public class LoginMain {

public static void main(String[] args) {


10

String Username;
String Password;

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

Scanner input1 = new Scanner([Link]);


[Link]("Enter Username : ");
String username = [Link]();

Scanner input2 = new Scanner([Link]);


[Link]("Enter Password : ");
String password = [Link]();

if ([Link](Username) && [Link](Password)) {

[Link]("Access Granted! Welcome!");


}

else if ([Link](Username)) {
[Link]("Invalid Password!");
} else if ([Link](Password)) {
[Link]("Invalid Username!");
} else {
[Link]("Invalid Username & Password!");
}

6.2 Pseudo code for sending a message

Client side

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

// receiving from server ( receiveRead


object)
InputStream istream = [Link]();
BufferedReader receiveRead = new BufferedReader(new
InputStreamReader(istream));

[Link]("Start the chitchat, type and press Enter key");

String receiveMessage, sendMessage;


while(true)
{
sendMessage = [Link](); // keyboard reading
[Link](sendMessage); // sending to server
[Link](); // flush the data
if((receiveMessage = [Link]()) != null) //receive
from server
{
[Link](receiveMessage); // displaying at DOS
prompt
}
}
}
}

Server side

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

// receiving from server ( receiveRead


object)
InputStream istream = [Link]();
12

BufferedReader receiveRead = new BufferedReader(new


InputStreamReader(istream));

String receiveMessage, sendMessage;


while(true)
{
if((receiveMessage = [Link]()) != null)
{
[Link](receiveMessage);
}
sendMessage = [Link]();
[Link](sendMessage);
[Link]();
}
}
}

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

Common questions

Powered by AI

The logical architecture of the College Companion application, which includes class and sequence diagrams, provides a visual representation of the system's design structure. Class diagrams define the static structure by illustrating the system's classes, along with their attributes and relationships. Sequence diagrams reveal the dynamic flow of interactions between objects for specific use cases, such as user authentication or message sending. Together, these diagrams contribute to a clear understanding of both static and dynamic aspects of the application, guiding the software development and helping ensure consistency in design and implementation .

Trade-offs during the College Companion application's development were made primarily to increase efficiency and performance. Key trade-offs included opting for Firebase for its uptime reliability and easy-to-use authentication features, even though it might limit some control over backend customizations. This choice reduces server maintenance workload and ensures continuous application availability. Additionally, embracing the iteration methodology allowed for thorough module testing, ensuring robust integration at the cost of potentially slower initial rollout. These decisions prioritized long-term software stability and user satisfaction over short-term development ease .

The choice of Firebase as the hosting platform for the College Companion application positively affects its hosting and maintenance by providing continuous uptime as services are dependent on Firebase's robustness rather than local server conditions. Consequently, it reduces the risk of downtime due to power issues or human error. Firebase's comprehensive set of services simplifies maintenance by offering built-in analytics, user authentication, and real-time databases, which streamline debugging processes and enhance operational efficiency, thus freeing developers to focus on core functionalities .

The Server Procedure Proxy in the College Companion application's architecture provides local methods for invoking remote methods on the server application. It plays a critical role in simplifying client/server communication by handling the serialization of objects passed to and from the user application. This component is contained within the client-side class library and connects with the server, providing a transparent interface for remote method invocations. This mechanism simplifies coding and reduces the complexity of client-server interactions, enhancing data handling efficiency and application robustness .

Using Java for both client and server applications in the College Companion software architecture provides several benefits, including consistency in language features, libraries, and syntax, which can simplify development and maintenance. Java's platform-independent nature ensures that both server and client applications can run on multiple operating systems, encouraging broad deployment potential. Additionally, Java's robust standard library and community support facilitate comprehensive networking capabilities, essential for the server-client communication. However, Java's overhead might lead to performance limitations compared to lower-level languages that might execute faster due to less abstraction .

Design considerations for the College Companion application in terms of modularity and future extensibility include creating a system architecture that supports easy upgrades and integration of new functionalities. The application is designed to be highly modular, with separate components like the database engine and class library, allowing individual modules to be updated without altering the entire system. This approach facilitates adaptability to changing requirements and scalability demands. Furthermore, maintaining backward compatibility ensures new extensions can be integrated seamlessly with existing components, aiding long-term application sustainability .

The use of flow diagrams in the development of the College Companion application aids understanding by visually mapping out the sequences of actions and events within the application, enhancing clarity in the communication of system processes. They offer a high-level overview of user interactions and backend processes, which helps developers and stakeholders easily grasp complex workflows and identify potential issues early in the design phase. This documentation also assists in planning updates and scaling efforts by providing a clear framework of the application’s functional components .

The pseudocode for the user authentication process in the College Companion application is implemented as a basic Java program, utilizing simple string comparison for username and password validation. The utility of this pseudocode lies in its straightforward demonstration of the authentication logic, allowing for an easy understanding of login validation steps. However, it is rudimentary and lacks security features such as encryption or secure password storage, which are necessary for actual deployment. This code serves as an educational starting point but requires enhancements for real-world application .

The development of the College Companion application employs the Iteration methodology. This approach affects the system integration process by allowing the software to be developed and tested module by module, thereby facilitating thorough testing of each module individually before integrating them. This method provides developers with flexibility and time to address errors during integration, which helps ensure that all modules work together seamlessly and efficiently .

The College Companion application utilizes Firebase as its backend platform, which helps ensure high performance and security. Firebase facilitates easy user authentication, allowing users to log in without security concerns, as it provides robust authentication mechanisms. Additionally, Firebase offers actionable insights and comprehensive analytics, enabling developers to promptly identify and resolve application issues, such as crashes, thereby improving the application’s overall performance and reliability .

You might also like