Github-Open Source Code Management System: Software Requirement Specification
Github-Open Source Code Management System: Software Requirement Specification
Github-Open Source Code Management System: Software Requirement Specification
2
1. Introduction
1.1. Purpose
The aim of this document is to specify complete description of the Integrated
Development Environment based on Cloud to be developed. It is basis for
agreement between suppliers and customers about the product to be developed.
Through this document, the workload needed for development, validation and
verification will ease. To be specific, this document is going to describe
functionality, external interfaces, performance, attributes and the design
constraints of the system which is going to be developed. Therefore, intended
reader groups for this software requirement specification are customers,
suppliers and users.
1.2. Scope
This project is intended for making use of today’s popular technology Cloud
Computing for Integrated Development Environment. Currently, there are lots
of IDE’s, both open-source and commercial, in the market. Usually they provide
lots of extensive features to developers to ease application developers life.
However, there are two simple but substantial problems with today’s IDE’s.
3
First is they require intensive CPU and memory usage which is not available all
the time and since these applications are installed on specific system, it prevents
portability.
1.3. Overview
We are going to focus on describing the system in terms of product perspective,
product functions, user characteristics, assumptions and dependencies on the
following section of this document. Next, we will address specific requirements
of the system, which will enclose external interface requirements, requirements
of the system, performance requirements, and other requirements.
2. Overall Description
This section gives background information about specific requirements of the
web based integrated development environment service to be developed in brief.
Although we will not describe every requirement in detail, this section will
describe the factors that affect the final product.
To use product, users are required to register through the web interface.
Whenever a new user registered, all the required data will be created in the
database and a predefined workspace will be assigned for the user. Later, user
will be able to login and logout the system anytime he wants. Since every
4
operation that user perform reflected to our database, user will find his
workspace however he leaves last time.
From the user point of view, user will have to functionality to create and edit
files in his own workspace. User will be able to run predefined programs on
these files such as language specific compilers and debuggers (gdb, g++, javac,
etc) and project management tools (mvn, svn, git, etc).
All of the files users created will be kept in cloud server and all the CPU
requiring work such as compiling and running the programs will be executed on
cloud server so that user will be able to access his own integrated development
environment with his specific setting anywhere he wants.
2.4. Constraints
6
Developers of the product should be aware that main feature of the intended
product is portability. So they should use common libraries and tools that can
work with all the common internet browser application with no problem.
Developers should also be careful about the privacy of users. Since product will
be cloud application, all user data will be kept on cloud server and necessary
precautions should be taken to protect user data.
Since product will be cloud application and all user programs will be executed
on cloud server, developers should limit the privileges of the users so that they
cannot harm other users’ data and system server.
3. Specific Requirements
With this section and later, we will describe the requirements of the software in
detail. Basically, we will categorize requirements in 3 which are namely
external interface requirements, functional requirements and non-functional
requirements. Except non-functional requirements, requirements of the product
will be detailed under this section with brief information and later sample input-
output sequence and low of events will be given.
Workspace explorer and code editor interface will be the main graphical user
interface where developers will interact with their workspace and its including.
It will allow graphically create, edit and delete files, running and debugging
their programs and other basic feature that and average integrated development
environment provided.
With CLI support, we basically aim to provide a UNIX like command line
7
interface which is usually preferred by software developers. With this CLI,
users will be able to run UNIX commands on their workspaces under the
privileges given to them.
Now, detailed explanation of all the external interfaces can be found below;
To use this functionality, user should be able to login to system. Later, user
should choose the GitHub synchronization button and enter the credentials of
his GitHub account. Later workspace of the user will be synchronized to a
GitHub workspace with same name, if it does not exist, new one will be created.
Later any changes on the synchronized workspace will be reflected on the
GitHub immediately.
When user login to system via web browser, if his workspace has already been
synchronized with GitHub before, then system should reflect changes at GitHub
workspace to user workspace, if there is any.
Since GitHub uses git and git is a transaction based source code management
system, user should be able to return back to previous point in his git history.
During all this processes, user should be notified about stage of the process.
And user should be given an alert or error message if anything goes wrong
8
during the GitHub synchronization process. User also can choose to cancel a
current synchronization with GitHub, in such case, no further automatic
synchronization will be done.
To use the command line interface, user first should login to the system with his
own credentials. After login user will be redirected to the main page of the
Cloud IDE. In this main page user can go to the below part of the page which
will be a command line where user can execute UNIX commands on the current
directory.
Other way to use command line will be the click on “Open Terminal” button on
the main page. After clicking on this button, terminal window on a new tab will
be opened and the current directory will be the root directory of the user
workspace. User can run UNIX commands another programs in this terminal
just as in the any Linux distribution. Only exceptions are going to be the
workspace and user privilege restrictions which are to protect other user and
system from any harm.
During any process, user should be able to receive feedback about operation. If
the command or program runs successfully, then user should be able to see the
effects either on the CLI or the in the Workspace explorer. If an error occurs
because of the user limitations, user should be able to given a detailed
notification about the cause of the error and solutions if possible.
To be able to use this main graphical user interface, user should have login to
the system. After login, user will be directed to a main page specialized for
9
himself. In this main interface there will be a workspace explorer where users
can see his file hierarchy and create and edit the files in the workspace.
There is also be a code editor in this main interface, so that users can edit their
source codes by using the functionality provided by the code editor. Also they
can use the command line interface to execute commands on the workspace
which is also in the main interface of the system.
User should be able to specify preferences for the appearance of the main
interface. After user specified a preference, user should be able to directed his
own specialized main page whenever he/she logins to the system.
During all these operations, user should be notified about the status of the
operation. If an operation operates successfully user should get a message or
directly see the effect on workspace explorer or on the code editor. If an error
occurs, user should get an error message indication the cause of error.
v Background Information
Product will be used via a web browser. Each user will have his own workspace,
and he must be logged in to the server to access his workspace. Hence, first-time
users must be complete registration process. To register to the system, user must
specify some information asked during registration. After validation,
registration will completed, and user will be informed.
There will be a login page so that user can type into his login information, and
login to the system. Login information will be username or e-mail address and
10
password specified in registration process. Server let through the user if the
given username and password are matched with the ones in database saved in
registration. If specified information is not matched, an error dialog will be
shown. Otherwise, user will be redirected to his personal workspace.
When user forgets his password, he can request new one from the system by
specifying his username or e-mail.
1.Register
Normal Function
11
Alternative Event Flow
3. Login
Primary Actor User
Normal Function
12
Alternative Event Flow
3.Create/Import Project
Primary Actor User workspace owner
Goal in Context Purpose of this feature is to create a new project or import existing one
Normal Function
4.Create File/folder
13
Primary Actor User workspace owner
Goal in Context Purpose of this feature is to create new files and folders into the projects
Normal Function
Normal Function
14
- Owner opens his workspace
- Owner selects “make public” option
- Users observe workspace
4. Syncing to Github
Primary Actor User workspace owner
Preconditions User must be logged into the system User must have a GitHub account
Normal Function
15
1: The system shall provide a registration page
v Syntax Highlighting:
The code editor will be able to highlight the code based on the programming
language detected while user editing the source code. The user will be able to
extend the list of the programming languages supported by the code editor.
v Auto-indentation:
v Bracket/Brace matching:
The brackets and braces will be matched when the user clicks on them and the
matching bracket or brace will be highlighted.
v Auto completion:
The expressions will be auto completed while the user is editing the source file
by using the dictionaries developed for the programming language and the user
16
input.
v Setting/Displaying breakpoints:
The user will be able to set a breakpoint by clicking the left side of the
corresponding line. The breakpoints set before will be listed and shown in the
left side of the corresponding line.
The user will be able to find and replace the desired parts of the source code
matching with the regular expression.
v Editor themes:
Several themes for the editor will be provided and the user will be able to
choose the editor theme among the predefined themes.
The corresponding line numbers will be displayed on the left side of the source
code.
Ø Stimulus/Response sequences
v Description
Normal Function
17
- User logs in to the system.
- User begins editing a source file.
- A programming language specific keyword is typed by the user.
- The keyword is detected by the code editor.
- The keyword is highlighted.
II
III
IV
- User clicks on the left side of a line to set a breakpoint at that line.
- A breakpoint is set at the desired line and a mark is shown on the left
side of the the line.
18
VI
VII
VIII
- Corresponding line numbers are displayed on the left side of the lines.
Functional Requirements (Code Editor):
1: The system shall provide a code editor that supports programming language
syntax coloring.
2: The system shall provide a code editor that is capable of auto indentation.
3: The system shall provide a code editor that matches brackets and braces when
user clicks on one of them.
4: The system shall provide a code editor that is capable of completing the
expressions typed by the user if available.
5: The system shall provide a code editor that can set a breakpoint at the desired
line.
6: The system shall provide a code editor that can display the breakpoints set
until that time.
7: The system shall provide a code editor that can search and replace the regular
expressions provided by the user.
19
8: The system shall provide a code editor, appearance of which can be selected
by the user.
9: The system shall provide a code editor that displays the corresponding line
numbers on the left side of the editor view.
3.2.3. Debugger
Ø Execution Control
v Background Information
Goal in Context Purpose of this feature is to run in debug mode to the selected project
Normal Function
Normal Function
21
Ø Breakpoint List
v Background Information
In debug mode users shall be able to control execution of the
program. For this purpose users will use breakpoints which are
intentional stopping or pausing places in a program. All breakpoints
decided by users will be listed in breakpoints view. When user adds
a breakpoint it will be automatically shown in this view. In this
view user will be able to activate and deactivate the breakpoints.
Also he will be able to remove the breakpoint completely.
v Stimulus/Response Sequences
Normal Function
II
22
Ø Expression Evaluation
v Background Information :
In debug mode following the value of certain expressions could be
crucial for the user and he wants to follow the values of these
expressions in every step of debugging. To make this processes
easier values of specified expression automatically will be
evaluated at each breakpoint and shown to user. Expression
specifications will be handled in expression tab which will be a part
of debug mode interface. User will be able to add and remove
expressions thorough this tab. If user defines an invalid expression
will not be added to expression list and user will be notified.
v Stimulus/Response Sequences
Goal in
Purpose of this feature is show values of wanted expression in every breakpoint
Context
Trigger User wants to follow the changes in values of some certain expressions
Normal Function
23
Functional Requirements (Terminal)
1: The system shall provide a debug mode that support breakpoints list
demonstration
2: The system shall provide a debug mode that support expression evaluation
3: The system shall allow user to control the execution of the running process.
3.2.4. Terminal
Ø Viewing Previous Commands
v Background Information
Users will be able to view the previous commands they entered to
terminal since the beginning of their sessions. In order to provide
this feature, commands will be saved in a command stack. In user
interface travelling through commands will be handled by keyboard
shortcuts. By using up arrow key users will be able to view older
commands while they will be able to view newer commands by
using down arrow key. When the oldest command is reached up
arrow key will not respond anymore and when the current
command is the newest one and down arrow key is pressed
command line will be cleared.
v Stimulus/Response Sequences
24
Trigger User does not want to type same commands again and again
Normal Function
II
III
v Background Information
Terminal will give opportunity to users to use basic UNIX-like
terminal commands. With basic we mean the commands which do
not require sudo privileges. By using these commands, in their
workspaces user will be able to perform all actions they can
perform in a UNIX machine.
25
v Stimulus/Response Sequences
Normal Function
II
v Background Information
When users start typing in terminal, commands include the phrase
typed so far in their names will be listed in a scrolled pop-up
26
lightbox. Box will be open only if there is any command to be
listed. Otherwise box will be closed. In this box commands will be
ordered according to their relevancy to typed phrase and there will
be short descriptions besides the commands. Also by typing “help”
in the command line users will able to see the list of all commands.
By this features users will be able to find the commands they need
easily even they have not used these commands before.
v Stimulus/Response Sequences
Normal Function
II
27
- User does not choose any command from the list and keep typing
- Presses enter when he wants to execute the command
2: The system shall provide a terminal that supports basic UNIX commands
execution.
3: The system shall provide a terminal that supports available commands list
demonstration.
Ø Performance Requirements
Since this software is going to web – based, it does require a powerful server
machine with high band internet access.
Server machine should have a powerful CPU and high speed internet access so
that it can handle multiple users at the same time. Another performance
requirement is the storage space. Higher storage space means more user and
bigger workspace per user so higher the storage, better the performance.
Ø Security Requirements
Since this software will be hosted on cloud server, all the user data will be kept
28
on the cloud server. Product should be able to protect privacy of user data.
Workspace of the user should only be accessed through user own credentials
and any other user should not be able to access to the user private data.
Since execution will also be done in the machine in the cloud, user should be
restricted in terms of user rights. User should only access to his own workspace
and should not access to any other workspace with the programs they run on the
cloud. Also rights of the user should be restricted so that user can not harm to
system by the programs they run or by the commands they run on terminal.
Since all the data will be transferred on the web, system should also use an
encryption and decryption mechanism only intended user can decode the data
and work on the data.
Ø Portability Requirements
Main purpose of developing web-based IDE is to improve the portability of
software development process. To improve portability, software should run on
variety of platforms and variety of connection speeds.
29
DFD (Data Flow Diagram)
Ø Context Diagram (Level-0)
30
Ø Level-1
1.1
1.2
1.3
1.4
31
Ø Level-3
1.4.1
1.4.3
1.4.2
32
TEST CASEs
Test TESTS Tests Steps Test Data Data Actual Result
No. Expected Data
TC01 Login 1.Open ID:-adityanayayan@gmail.com It should As Pass
(With Github.com Password:- take you Expected
Actual 2.Select login Aditya@1234 to github
Details) option.
TC02 Login 1.Open Case 1:-(Fake ID) Show As Pass
(With Github.com ID:- Error of Expected
Fake 2.Select login Adityanarayan invalid
Details) option. Password:- Details
Aditya@123
Case 2:-(Fake Pass)
ID:-
Adityanarayan@gmail.com
Password:-
124325345
TC03 Check ing Open Github Windows, MacOS, Linux Software As Pass
working Desktop Should Expected
of Github open
in Valid
OS
TC04 Check ing Open Github Android , IOS using Virtual Software As Pass
working Desktop platforms or emulators, Should not expected
of Github Windows versions before Vista open
in Invalid and Mac Version Before
OS Leopard 10.6.4
TC05 Running Open Github Higher Than 1GB for Windows, Software As Pass
It on Desktop Mac and 512 MB for Linux works fine Expected
Valid
Range of
RAM
TC06 Running Open Github Less Than 1GB for Windows, Software As Pass
It below Desktop Mac and 512 MB for Linux either not Expected
its RAM works
range proper or
it didn’t
work at all
33
USE CASE DIAGRAM
(Given below is an overall use case diagram)
34
SEQUENCE DIAGRAM
35
References
1. www.google.com
2. https://www.slideshare.net/SeemzGrace/source-code-
management-system-github
Tool
Draw.io – For making all diagrams including Use case diagrams
and DFD
36