<Title of project> 2021
Addis Ababa Institute of Technology
School of Information Technology and
Engineering
<Project Name>
Software Design Specification
Team Members
Advisors:
Date
<Title of project> 2021
Table of Contents
List of Tables ii
List of figures iii
Definitions, Acronyms, Abbreviations iv
1. Introduction 1
1.1 Purpose 1
1.2 General Overview 1
1.3 Development Methods & Contingencies 1
2. System design model 1
2.1 Subsystem decomposition 1
2.2 Hardware/software mapping 1
2.3 Access control 1
3. Object Model 2
3.1 Class Diagram 2
3.2 Sequence Diagram 2
3.2 State chart Diagram 2
4. Detailed Design 2
References 3
1 | Page
<Title of project> 2021
List of Tables
2 | Page
<Title of project> 2021
List of figures
3 | Page
<Title of project> 2021
Definitions, Acronyms, Abbreviations
4 | Page
<Title of project> 2021
1. Introduction
1.1 Purpose
The purpose of this Software Design Specification (SDS) document is to provide an exhaustive and
systematic technical blueprint for the development of GearStream, an innovative digital platform poised
to redefine the landscape of Ethiopia's media and entertainment industry. GearStream is a solution
designed to address two pressing challenges faced by media professionals and enthusiasts in the region:
the complexity of equipment rental processes and the absence of a dedicated platform for professional
networking and collaboration
.1.2 General Overview
2.1 Industry Context
The media and entertainment industry in Ethiopia is experiencing unprecedented growth and
transformation. As the industry expands, so do the demands of professionals and enthusiasts who
require specialized equipment for various projects. However, the current equipment rental landscape is
marred by inefficiencies, making it challenging for individuals and organizations to access the necessary
gear promptly.
Furthermore, the absence of a centralized platform for networking and collaboration within the industry
hinders opportunities for professionals to connect, share experiences, and advance their careers
collectively
2.2 Vision
GearStream envisions a future where media professionals and enthusiasts in Ethiopia can effortlessly
access high-quality equipment and establish meaningful connections with peers. This vision is anchored
in the belief that technology can bridge the gap between equipment owners and renters, thereby
streamlining the rental process and fostering a vibrant ecosystem for collaboration.
1.3 Development Methods & Contingencies
1.3.1 Development Methodology
Agile Development Approach
GearStream adopts an Agile development methodology to ensure adaptability, collaboration, and
continuous improvement throughout the project lifecycle. This approach is characterized by:
Iterative Development: The project will be divided into sprints, typically two to four
weeks long, during which specific features and functionalities will be developed, tested,
and reviewed.
1 | Page
<Title of project> 2021
Frequent Stakeholder Engagement: Regular meetings with stakeholders, including
users, will be held to gather feedback, refine requirements, and prioritize features.
Cross-Functional Teams: Development teams will comprise diverse skill sets, including
developers, designers, testers, and product owners, to facilitate rapid decision-making and
collaboration.
Flexibility: The Agile approach allows for changes in requirements, technology choices,
and design decisions as the project evolves.
Continuous Integration and Testing: Code integration and testing will occur
continuously, ensuring early detection and resolution of issues.
User-Centric Design: User stories and personas will guide the development process to
align the product with user needs and expectations.
Development Tools and Technologies
Front-End: The front-end development will utilize modern web technologies such as
React.js for web applications and React Native for mobile apps. This choice ensures a
consistent user experience across platforms.
Back-End: The back-end will be built using Node.js and Express.js, providing a scalable
and efficient server environment.
Database: GearStream will employ a relational database management system (RDBMS)
like PostgreSQL to manage data securely and efficiently.
Version Control: Git will be used for version control, facilitating collaborative
development and code management.
Continuous Integration/Continuous Deployment (CI/CD): CI/CD pipelines will be
established to automate testing, deployment, and continuous integration processes.
1.3.2 Contingency Planning
Technology Evolution Contingency
GearStream acknowledges the rapid evolution of technology and its potential impact on the
project. To mitigate disruptions caused by technology shifts, the following contingencies are in
place:
Technology Watchdog: A designated team member will monitor emerging technologies,
libraries, and frameworks relevant to GearStream's development. Regular reports will be
generated to assess their potential adoption.
Version Control and Compatibility: Strict version control practices will be enforced to
ensure that components remain compatible and up-to-date. Compatibility testing will be
an integral part of each sprint.
User Requirement Changes Contingency
As user requirements may evolve during the project, GearStream is prepared to handle changes
effectively:
2 | Page
<Title of project> 2021
User Feedback Loops: Frequent user feedback sessions will be conducted. Feedback
will be documented and analyzed to identify changing user needs.
Prioritization: The Product Owner will work closely with stakeholders to prioritize new
requirements or changes. A well-defined backlog will facilitate efficient changes
management.
Impact Analysis: Any proposed changes will undergo impact analysis to assess their
effects on project timelines, resources, and budgets.
Regulatory and Security Contingency
GearStream is committed to adhering to relevant regulations and ensuring the highest levels of
security:
Compliance Team: A compliance team will stay informed about legal and regulatory
requirements related to data privacy, financial transactions, and online platforms.
Security Protocols: Stringent security protocols will be implemented, including regular
security audits and penetration testing. Any identified vulnerabilities will be promptly
addressed.
Resource Contingency
In cases where resource availability or allocation is affected, GearStream has a contingency plan:
Resource Pooling: Cross-training of team members will be conducted to ensure
flexibility in resource allocation.
Contractual Agreements: Clear contractual agreements with external vendors or
partners will include contingency clauses for resource availability.
2. System Architecture
2.1 Subsystem decomposition
UML Component Diagram (show at least three level of the system decomposition)
GearStream's system architecture is organized into distinct subsystems to efficiently manage various
aspects of the platform's functionality. Each subsystem serves a specific purpose and interfaces with
others to deliver a seamless user experience.
3.1.1 User Management Subsystem
Purpose: Responsible for user registration, authentication, and user profile management.
3 | Page
<Title of project> 2021
Components:
User Registration Module
User Authentication Module
User Profile Management Module
Interfaces: Interfaces with other subsystems for user-related operations.
3.1.2 Equipment Management Subsystem
Purpose: Handles equipment listing, availability tracking, and rental transactions.
Components:
Equipment Listing Module
Availability Tracking Module
Rental Transaction Module
Interfaces: Interacts with the User Management Subsystem for user information and with the
Payment Gateway for secure transactions.
3.1.3 Professional Networking Subsystem
Purpose: Facilitates networking, collaboration, and the creation of professional portfolios.
Components:
Profile Creation and Management Module
Connection and Messaging Module
Portfolio Showcase Module
Interfaces: Collaborates with the User Management Subsystem for user profiles and facilitates
messaging between users.
3.1.4 Payment Gateway Subsystem
Purpose: Manages secure payment processing for equipment rentals.
Components:
Payment Processing Module
4 | Page
<Title of project> 2021
Payment Verification Module
Interfaces: Interfaces with the Equipment Management Subsystem for transaction details and
financial data.
3.2 Hardware/Software Mapping
GearStream is designed to run in a cloud-based environment to ensure scalability, high availability, and
seamless performance. The hardware and software components are mapped as follows:
3.2.1 Cloud Infrastructure
Purpose: Provides a reliable and scalable environment for GearStream's operations.
Components:
Cloud Servers for Hosting
Load Balancers for Traffic Distribution
Cloud Storage for Data
Description: GearStream leverages cloud infrastructure from a reputable provider to ensure
efficient resource allocation and on-demand scalability.
3.2.2 Web Application
Purpose: Delivers the web-based user interface of GearStream to users on desktop and mobile
devices.
Components:
Front-End Components (HTML, CSS, JavaScript)
React.js Framework for Web Application
Description: The web application is developed using React.js to provide a responsive and user-
friendly interface accessible through web browsers.
3.2.3 Mobile Application
Purpose: Offers a mobile application for users on iOS and Android platforms.
Components:
React Native Framework for Cross-Platform Development
5 | Page
<Title of project> 2021
Native Device Features Integration
Description: GearStream's mobile app is built using React Native, allowing for a consistent
experience across different mobile devices.
3.3 Access Control
GearStream implements robust access control mechanisms to ensure data security and user privacy:
User Roles: Users are categorized into three roles: Renter, Equipment Owner, and Admin. Each
role has specific permissions and access levels.
Authentication: User authentication is performed securely using JWT (JSON Web Tokens) to
verify user identities.
Authorization: Role-based access control (RBAC) restricts users' actions based on their roles.
Data Encryption: Sensitive data, including user credentials and financial information, is
encrypted using industry-standard protocols (SSL/TLS) for data in transit and AES for data at
rest.
```
+--------------------------------------+
| GearStream |
| Application |
+--------------------------------------+
6 | Page
<Title of project> 2021
/ | \
/ | \
/ | \
+----------------+ +----------------+ +----------------+
| User | | Equipment | | Professional |
| Management | | Management | | Networking |
| Subsystem | | Subsystem | | Subsystem |
+----------------+ +----------------+ +----------------+
```
In this UML Component Diagram:
- The top-level component represents the GearStream Application, which is the main system.
- The first-level components represent the major subsystems: User Management, Equipment
Management, and Professional Networking.
- The second-level components represent modules within each subsystem (not shown in detail).
- The third-level components (not shown in detail) represent the internal components and modules
within the second-level components.
This diagram illustrates the hierarchical decomposition of the GearStream system into its major
subsystems, providing an overview of how the system is organized into smaller components.
2.2 Hardware/software mapping
7 | Page
<Title of project> 2021
UML Deployment diagram
In this Hardware/Software Mapping:
Cloud Infrastructure: GearStream utilizes cloud infrastructure, including load balancers, cloud
servers (virtual machines), and cloud storage (database), to provide a scalable and reliable
environment for the platform.
Load Balancers: Load balancers distribute incoming traffic to multiple cloud servers, ensuring
high availability and load distribution.
Cloud Servers (VMs): Virtual machines host the GearStream application components, including
the web application and mobile application.
8 | Page
<Title of project> 2021
Cloud Storage (Database): The cloud database stores and manages data securely, including user
profiles, equipment listings, and transaction records.
Web Application (React.js): The web-based user interface is developed using React.js, providing
an accessible interface for users via web browsers.
Mobile Application (React Native): The mobile application is built with React Native, allowing
cross-platform development for iOS and Android devices.
3. Object Model
User: Represents users of the GearStream platform. Users can have one of three roles:
Renter, Owner, or Admin.
Renter: A user role representing individuals who rent equipment.
Owner: A user role representing individuals who own equipment available for rent.
Equipment: Represents various types of equipment available for rental, such as cameras
and lighting equipment. Equipment is associated with an Owner.
9 | Page
<Title of project> 2021
Rental Transaction: Represents individual rental transactions, including details like the
Renter, Equipment, rental dates, and transaction status.
Professional Profile: Represents user profiles where users can showcase their skills,
experiences, and portfolio items.
3.1 Class Diagram
User: Represents users of the GearStream platform, with attributes such as id, username,
password, and role. Users can perform actions like registering, logging in, updating their
10 | Page
<Title of project> 2021
profile, browsing and renting equipment, listing equipment, creating profiles, and
connecting with other users.
Equipment: Represents equipment available for rental, with attributes like id, name,
type, and owner. Equipment can create, update, and remove listings, as well as check
availability.
RentalTransaction: Represents individual rental transactions, with attributes like id,
renter, equipment, startDate, endDate, and status. Transactions can be initiated,
confirmed, or canceled.
ProfessionalProfile: Represents user profiles where users can showcase their skills and
portfolio items. It includes attributes like id, user, skills, and portfolio items. Users can
create, update, add skills, remove skills, add portfolio items, and remove portfolio items.
11 | Page
<Title of project> 2021
Provide a Unified Modeling Language (UML) based type of static structure diagram that
describes the structure of a system by showing the system's classes, their attributes, operations
(or methods), and the relationships among the classes.
The following points should be remembered while drawing a class diagram:
● The name of the class diagram should be meaningful to describe the aspect of the
system.
● Each element and their relationships should be identified in advance.
● Responsibility (attributes and methods) of each class should be clearly identified.
● For each class minimum number of properties should be specified. Because unnecessary
properties will make the diagram complicated.
● Use notes whenever required to describe some aspect of the diagram. Because at the end
of the drawing it should be understandable to the developer/coder.
● Finally, before making the final version, the diagram should be drawn on plain paper
and rework as many times as possible to make it correct.
Now the following diagram is an example of an Order System of an
application. So it describes a particular aspect of the entire application.
● First of all Order and Customer are identified as the two elements of the system
and they have a one to many relationship because a customer can have
multiple orders.
● We would keep Order class is an abstract class and it has two concrete classes
(inheritance relationship) SpecialOrder and NormalOrder.
● The two inherited classes have all the properties as the Order class. In addition
they have additional functions like dispatch () and receive ().
So the following class diagram has been drawn considering all the points
mentioned above:
12 | Page
<Title of project> 2021
3.2 Sequence Diagram
13 | Page
<Title of project> 2021
In this Sequence Diagram:
The sequence illustrates the process of renting equipment on the GearStream platform,
involving interactions between the User (Renter) and the Equipment Owner.
The User initiates the rental request, which is sent to the Equipment Owner.
The Equipment Owner confirms the rental, and the User provides payment information.
Payment confirmation is sent back to the User.
After confirming the rental, the Equipment Owner provides rental details.
14 | Page
<Title of project> 2021
Finally, the rental process is completed.
Show how processes operate with one another and in what order. Depict the objects and classes
involved in the scenario and the sequence of messages exchanged between the objects needed to
carry out the functionality of the scenario.
4. Detailed Design
Here show the identified class in detail for example: -Assume a system has a Mobile Client Class
then describe about the class in the following manner.
The classes represented here are the ones identified on your class diagram. But you must add the
methods and classes identified in sequence and state chart diagram.
Table: x Mobile Client class
Mobile Client
+Name:String
+ PhoneNumber:Integer
+Address:String
-Email:String
-ID:String
s+fillPersonal ()
+Beggar’sInfo ()
+SubmitInfo ()
Table: x Attributes description for Mobile Client class
Attribute Type Visibility Invariant
15 | Page
<Title of project> 2021
Name: String Public Name <> NULL and must contain first, middle and last name
and shouldn’t contain special characters and integers.
PhoneNumber Integer Public PhoneNumber <> NULL must be 10 digits and must start by
+251/09
Address String Public Address <>NULL and it must be between 12 to 20 characters
Email String Private Email <> NULL
✔ Must contain @
✔ Must contain. (dot)
✔ Position of @ >1
✔ Position of (dot)>position of @ + 2
✔ Position of (dot)+3<= total length of email address and
the total character of the Email is at least 5 characters
Table: 7 Operation description for Mobile Client class
Operation Visibility Return Argument Pre-Condition Post Condition
type
RegisterPersonalInfo Public void . The clients personal The clients
information personal
shouldn’t exist information
should exist
RegisterBeggar’sInfo Public void . The Beggar’s The Beggar’s
information information
shouldn’t exist should exist
16 | Page
<Title of project> 2021
SubmitInfo Public void - Both the client’s and Both the client’s
Beggar’s and Beggar’s
information information
shouldn’t exist should exist
17 | Page
<Title of project> 2021
References
18 | Page
<Title of project> 2021
Bibliography
(list of book used for referance)
Web resource
(list of web pages you used as reference//address + access date )
http://www.tutorialspoint.com/uml/index.htm at May 5,2020(use this link for uml diagrams)
19 | Page