Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

Software Requirements Specification

(SRS) Document

Project Name:

version 1.0

A Next-gen graphic design software

Written by: Surajit Saha


Branch: CS AIML
Red No: 2101289437
Trident Academy of Technology

Date: 29-02-2024

Problem Statement:
It is required to develop a graphics editor software package using which one can create/modify
several types of graphics entities. In summary, the graphics editor should support the following
features:

• The graphics editor should support creating several types of geometric objects such as
circles, ellipses, rectangles, lines, text, and polygons.
• Any created object can be selected by clicking a mouse button on the object. A selected
object should be shown in a highlighted colour.
• A selected object can be edited, i.e. its associated characteristics such as its geo- metric
shape, location, colour, fill style, line width, line style, etc. can be changed. For texts, the text
content can be changed.
• A selected object can be copied, moved, or deleted.
• The graphics editor should allow the user to save his created drawings on the disk under a
name he would specify. The graphics editor should also support loading previously created
drawings from the disk.
• The user should be able to define any rectangular area on the screen to be zoomed to fill the
entire screen
• A fit screen function makes the entire drawing fit the screen by automatically adjusting the
zoom and pan values.
• A pan function should allow the displayed drawings to be panned along any direction by a
specified amount
• The graphics editor should support grouping. A group is simply a set of drawings objects
including other groups which when grouped behave as a single entity. This feature is
especially useful when you wish to manipulate several entities in the same way. A drawing
object can be a direct member of at most one group. It should be possible to perform several
editing operations on a group such as move, delete and copy.
• A set of 10 clip boards should be provided to which one can copy various types of selected
entities (including groups) for future use in pasting these at different places when required.

Introduction
GenFx is a state-of-the-art graphics editor designed for creative minds. It offers a wide range of
features that allow users to create and modify various geometric objects including circles, ellipses,
rectangles, lines, text, and polygons. With its intuitive interface, users can easily select and edit
objects, changing their geometric shape, location, colour, fill style, line width, and more.

GenFx stands out with its advanced features such as grouping, which allows users to manipulate
several entities in the same way, and a set of 10 clipboards for copying various types of selected
entities for future use. It also offers a zoom function for any rectangular area on the screen, a fit
screen function to make the entire drawing fit the screen, and a pan function to move the displayed
drawings along any direction.

With GenFx, saving and loading drawings is a breeze. Users can save their creations on the disk under
a specified name and load previously created drawings with ease. Whether you’re a professional
designer or a hobbyist, GenFx provides all the tools you need to bring your imagination to life

1. Functional Requirements
1.1 Creation of Geometric Objects

• 1.1.1 Support for creating circles

Description: The software should allow the user to create circles.

Input: User selects the circle tool and provides the necessary parameters
(like radius).

Output: A circle is created on the canvas.

• 1.1.2 Support for creating ellipses

Description: The software should allow the user to create ellipses.

Input: User selects the ellipse tool and provides the necessary parameters (like semi-
major and semi-minor axes).

Output: An ellipse is created on the canvas.


• 1.1.3 Support for creating rectangles

Description: The software should allow the user to create rectangles.

Input: User selects the rectangle tool and provides the necessary parameters (like
length and width).

Output: A rectangle is created on the canvas.

• 1.1.4 Support for creating lines

Description: The software should allow the user to create lines.

Input: User selects the line tool and provides the necessary parameters

(like start and end points).

Output: A line is created on the canvas.

• 1.1.5 Support for creating text

Description: The software should allow the user to create text.

Input: User selects the text tool and inputs the desired text.

Output: The input text is created on the canvas.

• 1.1.6 Support for creating polygons

Description: The software should allow the user to create polygons.

Input: User selects the polygon tool and provides the necessary parameters

(like vertices).

Output: A polygon is created on the canvas.

1.2 Selection of Objects

• 1.2.1 Ability to select an object by clicking

Description: Any created object can be selected by clicking a mouse button on the
object. A selected object should be shown in a highlighted colour.

Input: User clicks on an object.

Output: The clicked object is highlighted.

1.3 Editing of Objects

• 1.3.1 Ability to edit geometric shape of an object

Description: A selected object’s geometric shape can be edited.

Input: User selects an object and chooses to edit its shape.

Output: The shape of the object is updated as per user’s input.

• 1.3.2 Ability to edit location of an object

Description: A selected object’s location can be edited.


Input: User selects an object and chooses to edit its location.

Output: The location of the object is updated as per user’s input.

• 1.3.3 Ability to edit colour of an object

Description: A selected object’s colour can be edited.

Input: User selects an object and chooses to edit its colour.

Output: The colour of the object is updated as per user’s input.

• 1.3.4 Ability to edit fill style of an object

Description: A selected object’s fill style can be edited.

Input: User selects an object and chooses to edit its fill style.

Output: The fill style of the object is updated as per user’s input.

• 1.3.5 Ability to edit line width of an object

Description: A selected object’s line width can be edited.

Input: User selects an object and chooses to edit its line width.

Output: The line width of the object is updated as per user’s input.

• 1.3.6 Ability to edit line style of an object

Description: A selected object’s line style can be edited.

Input: User selects an object and chooses to edit its line style.

Output: The line style of the object is updated as per user’s input.

• 1.3.7 Ability to edit text content

Description: For text objects, the text content can be changed.

Input: User selects a text object and inputs the new text.

Output: The text content of the object is updated as per user’s input.

1.4 Copying, Moving, and Deleting Objects

• 1.4.1 Ability to copy an object

Description: A selected object can be copied.

Input: User selects an object and chooses to copy.

Output: A copy of the selected object is created.

• 1.4.2 Ability to move an object

Description: A selected object can be moved.

Input: User selects an object and chooses to move, providing the new location.

Output: The selected object is moved to the new location.


• 1.4.3 Ability to delete an object

Description: A selected object can be deleted.

Input: User selects an object and chooses to delete.

Output: The selected object is deleted from the canvas.

1.5 Saving and Loading Drawings

• 1.5.1 Ability to save drawings

Description: The software should allow the user to save their created drawings on the
disk under a name they would specify.

Input: User chooses to save a drawing and provides the necessary file name.

Output: The drawing is saved to the disk.

• 1.5.2 Ability to load drawings

Description: The software should also support loading previously created drawings
from the disk.

Input: User chooses to load a drawing and provides the necessary file path.

Output: The drawing is loaded from the disk.

1.6 Zooming and Panning

• 1.6.1 Ability to zoom

Description: The user should be able to define any rectangular area on the screen to
be zoomed to fill the entire screen.

Input: User selects a rectangular area for zooming.

Output: The view is zoomed as per user’s input.

• 1.6.2 Ability to fit screen

Description: A fit screen function makes the entire drawing fit the screen by
automatically adjusting the zoom and pan values.

Input: User chooses the fit screen function.

Output: The entire drawing fits the screen.

• 1.6.3 Ability to pan

Description: A pan function should allow the displayed drawings to be panned along
any direction by a specified amount.

Input: User chooses to pan the view and provides the necessary direction and
amount.

Output: The view is panned as per user’s input.


1.7 Grouping of Objects

• 1.7.1 Ability to group objects

Description: The software should support grouping. A group is simply a set of


drawing objects including other groups which when grouped behave
as a single entity.

Input: User selects multiple objects and chooses to group them.

Output: A new group containing the selected objects is created.

1.8 Clipboard Functionality

• 1.8.1 Ability to copy to clipboard

Description: A set of 10 clipboards should be provided to which one can copy various
types of selected entities (including groups) for future use in pasting these at
different places when required.

Input: User selects an object or a group and chooses to copy it to a clipboard.

Output: The selected object or group is copied to the clipboard.

2. Non-Functional Requirements
2.1 Usability

Requirement: The software should be user-friendly and intuitive, allowing users to easily understand
and use the various features.
Explanation: Usability refers to the ease of use of the software. It should be designed in a way that
even a novice user can understand and use the features without much difficulty.
Constraints: The user interface should be clean and uncluttered. The functions should be logically
grouped and easy to access. The software should provide clear error messages and help
documentation.

2.2 Performance

Requirement: The software should be able to handle a large number of objects without any
significant degradation in performance.
Explanation: Performance refers to the responsiveness of the software. It should be able to handle a
large number of geometric objects without slowing down or crashing.
Constraints: The software should be optimized for performance. It should use efficient algorithms and
data structures to handle the geometric objects.

2.3 Compatibility

Requirement: The software should be compatible with the latest versions of the major operating
systems.
Explanation: Compatibility refers to the ability of the software to run on different operating systems
without any issues.
Constraints: The software should be developed using cross-platform technologies. It should be
regularly tested on different operating systems to ensure compatibility.
2.4 Reliability

Requirement: The software should be reliable and free of bugs. It should also provide error messages
that are helpful and informative.
Explanation: Reliability refers to the ability of the software to perform its required functions under
stated conditions for a specified period of time without any failures.
Constraints: The software should be thoroughly tested to identify and fix bugs. It should have robust
error handling mechanisms to prevent crashes and provide useful error messages.

2.5 Maintainability

Requirement: The software should be easy to maintain and update. It should be designed in a
modular way to allow for easy addition of new features.
Explanation: Maintainability refers to the ease with which the software can be modified to correct
faults, improve performance, or adapt to a changed environment.
Constraints: The software should be designed and documented in a way that makes it easy for
developers to understand and modify the code. It should follow good software engineering practices
like code modularity, loose coupling, and high cohesion.

DFD ( Data Flow Diagram)

Level 0 DFD
A Level 0 Data Flow Diagram (DFD) serves as the foundational blueprint for understanding the flow of
data within a system. At this level of abstraction, the focus is on the system as a whole, without
diving into the intricate workings of individual processes or data manipulations. The primary
components of a Level 0 DFD are external entities, processes, and data flows. External entities are
entities outside the system boundary that interact with it by sending or receiving data. Processes
represent the activities or transformations that occur within the system, while data flows depict the
movement of data between these entities and processes. In a Level 0 DFD, the system itself is
represented as a single process, denoting its role in processing data. External entities are depicted as
squares, symbolizing the data sources or destinations that interact with the system. Data flows,
represented by arrows, illustrate the movement of data between these entities and the system
process. For example, consider a simple online shopping system. At the Level 0 DFD, the system
process would represent the entirety of the online shopping system, encompassing tasks such as
receiving orders, processing payments, and updating inventory. External entities might include
customers placing orders and the inventory database holding product information. Data flows would
show how information moves between these entities and the system process. For instance, an arrow
would indicate the flow of order details from the customer to the system process, while another
arrow might represent the flow of payment information from the system to the payment gateway.
Overall, a Level 0 DFD provides a bird's-eye view of the system's data flow, offering stakeholders a
clear understanding of how information moves within the system and between external entities. It
lays the groundwork for further decomposition into more detailed DFDs to explore specific processes
and data interactions in greater depth
Level 1 DFD
In a Level 1 Data Flow Diagram (DFD), the system process from the Level 0 DFD is decomposed into its
constituent subprocesses, offering a more detailed view of the system's functionality. Each subprocess
represents a specific task or set of tasks within the system, allowing for a more granular analysis of
data flow and processing. At this level, the focus shifts from the system as a whole to the individual
processes that make up the system. Processes are represented by circles or rectangles, each labelled
with a unique identifier and a brief description of its function. These processes encapsulate specific
actions or transformations that occur within the system. Data stores, which represent repositories of
data within the system, may also be introduced at Level 1. Data stores can include databases, files, or
any other storage mechanism used to retain information between processes. Data flows between
processes are depicted using arrows, indicating the direction of data movement and the specific data
elements being transferred. These data flows illustrate how information flows through the system,
from its origin at external entities to its destination within the system or vice versa. External entities
remain present at Level 1, interacting with the system through data flows to initiate processes or
receive outputs. These entities may represent users, external systems, or any other external sources
or destinations of data. For example, in an online shopping system, subprocesses at Level 1 might
include tasks such as validating orders, updating inventory, processing payments, and generating
invoices. Data flows between these subprocesses would show how order information is validated,
inventory is adjusted, payments are processed, and invoices are generated. Overall, a Level 1 DFD
provides a more detailed view of the system's processes and data flows, facilitating a deeper
understanding of system functionality and interaction It serves as a valuable tool for system analysts
and stakeholders to analyse and refine system requirements and design.
Level 2 DFD
Level 2 Data Flow Diagrams (DFDs) offer a deeper dive into the system's processes, breaking down
the subprocesses identified in the Level 1 DFD into more detailed components. At this level of
granularity, individual tasks or functions within each subprocess are identified and depicted,
providing a comprehensive view of the system's operations. Each process from the Level 1 DFD is
further decomposed into its constituent subprocesses, which are represented as additional circles or
rectangles within the diagram. These subprocesses are labelled with unique identifiers and succinct
descriptions of their specific functions or actions. By breaking down processes into finer components,
Level 2 DFDs enable a more thorough understanding of the system's behaviour and data flow. Data
stores introduced at Level 1 may also be further detailed at Level 2, with specific data elements or
attributes identified and associated with each data store. This level of detail helps to clarify the types
of data stored within the system and how they are accessed or manipulated by various processes.
Data flows between subprocesses are depicted using arrows, indicating the direction of data
movement and the specific data elements being exchanged. These data flows illustrate the flow of
information between different components of the system, highlighting dependencies and interactions
between subprocesses. External entities continue to interact with the system at Level 2, initiating
processes or receiving outputs through data flows. These entities may represent users, external
systems, or any other sources or destinations of data external to the system boundary. Overall, a
Level 2 DFD provides a detailed depiction of the system's processes and data flows, offering valuable
insights into the system's functionality and behaviour. It serves as a crucial tool for system analysts
and stakeholders to analyse, refine, and optimize system design and operation
Use Case Diagram
A use case diagram is a visual representation of the interactions between actors (users or external
systems) and a system under consideration. It helps to identify the various ways in which users
interact with the system and the system's responses to those interactions. Here's a brief description of
a use case diagram: A use case diagram typically consists of actors, use cases, and their relationships.
Actors represent the users or external systems that interact with the system being modelled. Use
cases represent the specific functionalities or tasks that the system provides to its users. Actors are
depicted as stick figures, representing the various roles that users or external systems can assume
when interacting with the system. Each actor is connected to one or more use cases, indicating the
interactions or functionalities associated with that actor. Use cases are represented as ovals or
ellipses, each describing a specific functionality or task that the system performs. Use cases
encapsulate a set of actions or behaviours that the system provides to its users to achieve a specific
goal. They describe what the system does from the perspective of its users. Relationships between
actors and use cases are depicted using lines, indicating the associations or interactions between
them. An actor is associated with a use case if it initiates or participates in that use case. The
connections between actors and use cases help to identify which functionalities are available to each
actor. In addition to actors and use cases, use case diagrams may also include relationships between
use cases, such as generalization, association, or include/extend relationships, to depict more
complex interactions and dependencies between different functionalities. Overall, a use case diagram
provides a high-level overview of the interactions between users or external systems and the system
being modelled, helping stakeholders to understand the system's functionalities and user interactions
at a glance.
Class Diagram
A class diagram consists of classes, attributes, methods, and relationships. Classes are depicted as
rectangles with three compartments: the top compartment contains the class name, the middle
compartment lists the class's attributes, and the bottom compartment lists the class's methods.
Attributes represent the data or properties associated with a class and are listed in the middle
compartment of the class rectangle. Attributes describe the characteristics or state of objects
belonging to the class, such as their name, type, and visibility (e.g., public, private, protected).
Methods represent the behaviours or operations that objects belonging to a class can perform and
are listed in the bottom compartment of the class rectangle. Methods define the actions or functions
that objects can execute, specifying their name, parameters, return type, and visibility. Relationships
between classes depict how classes are related to each other within the system. Common types of
relationships include association, aggregation, composition, inheritance, and dependency.
Associations represent connections or links between classes, while inheritance denotes the
inheritance hierarchy between classes, indicating which classes inherit properties and behaviours
from other classes. Class diagrams help to visualize the structure of a system, showing the classes,
their attributes, methods, and relationships, and how they collaborate to accomplish specific tasks or
functionalities. They are commonly used during the design phase of software development to model
the architecture of a system and communicate design decisions to stakeholders. Overall, a class
diagram provides a clear and concise representation of the static structure of a system, helping
stakeholders to understand the relationships between classes and ensuring that the system's
architecture meets the desired requirements.

( Next page )
Sequence Diagram
A sequence diagram is a type of interaction diagram that illustrates the flow of messages or
interactions between objects or components within a system over time. It depicts the chronological
sequence of interactions between various elements of a system, showing how they collaborate to
achieve a specific functionality. Here's a concise explanation of a sequence diagram: A sequence
diagram consists of lifelines, messages, activations, and optional fragments. Lifelines represent the
objects or components participating in the interaction, depicted as vertical lines. Each lifeline
corresponds to an object or component, showing its existence over a period of time during the
interaction. Messages are depicted as horizontal arrows between lifelines, representing the
communication or interaction between objects. Messages can be synchronous, asynchronous, or
asynchronous with a return value, depending on the timing and nature of the interaction. Activations
are depicted as vertical rectangles on lifelines, indicating the period during which an object is actively
processing or responding to a message. Activations show when an object is engaged in performing a
specific task or operation in response to a message. Optional fragments, such as alternative or
parallel fragments, can be used to represent conditional or concurrent behaviours within the
sequence diagram. These fragments help to depict different scenarios or branches in the sequence of
interactions, allowing for a more detailed representation of system behaviour. Overall, a sequence
diagram provides a clear and visual representation of the sequence of interactions between objects
or components within a system, helping stakeholders to understand the dynamic behaviour of the
system and ensure that it meets the desired requirements.

( Next page )
GenFx : Graphic Designing Software
G

You might also like