SWE File (t71)
SWE File (t71)
Submitted By:
Mohd Tabish
2022486143
Section-C (G2)
Submitted To:
Saurabhi Chaudhary
Assistant Professor
Computer Science and Engineering Department
LIST OF EXPERIMENTS
S. COURSE
EXPERIMENT NAME OUTCOME Date Signature
NO.
Design requirement analysis and develop Software
1 Requirement Specification Sheet (SRS) for CO1
suggested systems in IEEE standard.
Draw the user's view analysis for the suggested
2 system: Usecase diagram, Activity Diagram and CO2
State chart Diagram.
Draw the structural view diagram for the system:
3 Class diagram, object diagram and Sequence CO2
diagram
Perform Unit testing of calculator program
4 CO3
using Junit testing framework.
Perform Integration testing of calculator
5 CO3
program using Junit testing framework
Design Test Case for Inventory Management
6 CO4
System based on System Specification
Design Test cases and perform manual testing of
7 CO5
the module of Flipkart (as an example)
Experiment No – 1
1. Introduction .......................................................................................................................... 3
1.1 Problem Definition ......................................................................................................... 3
1.2 Purpose ............................................................................................................................ 3
1.3 Product Scope ................................................................................................................. 3
2. Overall Description .............................................................................................................. 3
2.1 Product Perspective........................................................................................................ 3
2.2 Product Functions .......................................................................................................... 4
2.3 User Classes and Characteristics .................................................................................. 4
2.4 Operating Environment................................................................................................. 4
2.5 Design and Implementation Constraints ..................................................................... 5
2.6 User Documentation ....................................................................................................... 5
2.7 Assumptions and Dependencies .................................................................................... 5
3. External Interface Requirements ....................................................................................... 5
3.1 User Interfaces ................................................................................................................ 6
3.2 Hardware Interfaces ...................................................................................................... 6
3.3 Software Interfaces ........................................................................................................ 6
3.4 Communications Interfaces ........................................................................................... 6
4. Functional Requirements .................................................................................................... 6
4.1 User Requirements ......................................................................................................... 6
4.2 System Requirements ..................................................................................................... 7
5. Nonfunctional Requirements .............................................................................................. 7
5.1 Performance Requirements ........................................................................................... 7
5.2 Safety Requirements ...................................................................................................... 8
5.3 Security Requirements................................................................................................... 8
5.4 Software Quality Attributes .......................................................................................... 8
6. Conclusion ............................................................................................................................ 8
Appendix: Glossary ................................................................................................................. 8
References ................................................................................................................................. 9
1. Introduction
Current platforms for coding profile management lack the ability to aggregate data from
multiple coding sites and integrate with educational institutions for course and assignment
management. This creates a fragmented experience for students and educators, making it
difficult to track progress and manage coursework efficiently. Additionally, the existing
solutions do not provide sufficient tools for educators to monitor student performance and
engagement, leading to a gap in effective learning and teaching strategies.
1.2 Purpose
The purpose of Codetracker is to provide a unified platform for Computer Science Engineers
to manage their coding profiles, track their progress, complete courses, and share their
achievements. It will also allow educational institutions to create and manage courses,
assignments, and lectures, enhancing the learning experience. By centralizing this information,
Codetracker aims to streamline the educational process, improve student engagement, and
facilitate better performance tracking for both students and educators.
2. Overall Description
● Profile Aggregation: Collect and display data from multiple coding platforms such as
GitHub, LeetCode, and HackerRank.
● Dashboard: Provide a user-friendly dashboard to track progress, view statistics, and
manage profiles.
● Profile Cards: Generate shareable profile cards showcasing user achievements.
● Course Management: Allow educators to create and manage courses, assignments, and
lectures.
● Built-in Courses: Offer pre-designed courses for students to enhance their skills.
● Streak Management: Enable students to track and manage their coding streaks.
● Analytics and Reporting: Provide tools for analyzing performance and generating
reports.
● Collaboration Tools: Support group assignments, peer reviews, and feedback
mechanisms.
● Data Privacy: Must adhere to data privacy regulations (e.g., GDPR) to protect user
information.
● API Compatibility: Ensure compatibility with major coding platforms' APIs for data
aggregation.
● Scalability: Design a scalable architecture to handle a large number of users and data.
● User Interface: Create an intuitive and responsive user interface to enhance user
experience.
● Stable APIs: Coding platforms will provide stable and accessible APIs for data
integration.
● Internet Access: Educational institutions and users will have reliable internet access
and compatible devices.
● Basic Knowledge: Users will have basic knowledge of web navigation and coding
platforms to use the platform effectively.
● Intuitive UI: Design an intuitive and user-friendly interface that provides easy
navigation and accessibility.
● Responsive Design: Ensure the platform is responsive and works well on both desktop
and mobile devices.
● Dashboard: Provide a comprehensive dashboard for students, educators, and
administrators to manage their profiles, courses, and assignments.
● Profile Management: Create interfaces for profile creation, management, and sharing.
● Compatibility: Ensure compatibility with a wide range of desktop and mobile devices.
● No Special Hardware: No special hardware requirements beyond standard computing
devices with internet access.
● Coding Platform APIs: Integrate with APIs from coding platforms such as GitHub,
LeetCode, and HackerRank for data aggregation.
● Educational Systems: Integrate with educational institution systems (LMS, etc.) for
course and student management.
● Authentication: Use OAuth for secure authentication and user management.
4. Functional Requirements
● Data Fetching: The system must fetch and update user data from coding platforms
regularly.
● Responsive Dashboard: Provide an intuitive and responsive dashboard for all user
classes.
● Course Management: Allow educators to create, manage, and assign courses,
assignments, and lectures.
● Analytics Tools: Provide tools for analyzing performance and generating reports.
● Data Privacy: Ensure data privacy and security through encryption and compliance
with regulations.
● Scalability: Design a scalable architecture to handle a large number of users and data.
5. Nonfunctional Requirements
5.1 Performance Requirements
● Data Backup: Ensure data backup and recovery procedures are in place to prevent data
loss.
● Error Handling: Implement robust error handling and logging mechanisms to address
and resolve issues promptly.
● Access Control: Implement role-based access control to manage user permissions and
access levels.
● Data Encryption: Encrypt sensitive data both in transit and at rest to protect user
information.
● Regular Audits: Conduct regular security audits and vulnerability assessments to
maintain system security.
● Usability: Ensure the platform is intuitive, user-friendly, and easy to navigate for all
user classes.
● Reliability: Design the system to be highly available and minimize downtime through
robust architecture.
● Scalability: Ensure the platform can scale with increasing users and data without
compromising performance.
● Maintainability: Design the system to be maintainable and updatable with minimal
disruption to users.
6. Conclusion
Codetracker aims to provide a comprehensive solution for coding profile management and
educational integration, enhancing the learning experience for students and simplifying
management tasks for educators. By centralizing coding profile data and integrating with
educational systems, Codetracker will streamline the process of tracking progress, managing
courses, and sharing achievements.
Appendix: Glossary
● API (Application Programming Interface): A set of functions and procedures
allowing the creation of applications that access the features or data of an operating
system, application, or other service.
● OAuth (Open Authorization): An open standard for access delegation commonly used
as a way to grant websites or applications limited access to users’ information without
exposing passwords.
● GDPR (General Data Protection Regulation): A regulation in EU law on data
protection and privacy in the European Union and the European Economic Area.
● LMS (Learning Management System): A software application for the administration,
documentation, tracking, reporting, automation, and delivery of educational courses,
training programs, or learning and development programs.
References
1. Actor:
• Represents an entity that interacts with the system
• Depicted as a stick figure.
2. Worker:
• A specific type of actor that performs actions within the system.
• Represented as an actor figure within an oval, indicating a specialized role.
3. Relation:
• A connection between an actor and a use case.
• Shown as a straight line connecting the actor to the use case.
4. Generalization:
• Represents an inheritance relationship between use cases or actors.
• Depicted as a solid line with a hollow arrowhead pointing to the more general.
5. Include:
• Indicates that one use case is always called within another use case.
• Shown as a dashed arrow labeled "<<include>>."
6. Extend:
• Represents optional or conditional behavior that extends a base use case.
• Shown as a dashed arrow labelled "<<extend>>."
Figure 1 Use Case Diagram for Coding Profile Management System
1. Actors:
● User
● Admin
2. Use Cases:
Account Creation: Use can create their account to the System
Manage Coding Profile: User can manage their coding profiles by filling in all the details.
Track progress: User can track their Coding Progress
Complete Courses: The user can apply to a course and complete it.
Share Achievements: User can share their achievements badge with the community
Real-Time-Notification: for engagement of users
2. Activity Diagram-
Activity diagrams show the steps involved in how a system works, helping us understand the flow of control.
They display the order in which activities happen and whether they occur one after the other (sequential) or at
the same time (concurrent). These diagrams help explain what triggers certain actions or events in a system.
● An activity diagram starts from an initial point and ends at a final point, showing different decision
paths along the way.
● They are often used in business and process modeling to show how a system behaves over time.
1. Activity (Action)
● Symbol: Rounded rectangle.
● Description: Represents a task or action in the system. Activities represent the individual steps or
actions that are performed.
● Example: "Login", "Verify User", "Generate Report".
2. Initial Node (Start)
● Symbol: Filled circle.
● Description: Represents the start point of the activity diagram, indicating the beginning of the flow of
control.
● Example: The initial action when a user opens the application.
3. Final Node (End)
● Symbol: Filled circle with a border (bullseye).
● Description: Indicates the end point of the process. When this node is reached, the process flow
terminates.
● Example: "Exit", "End Process".
4. Decision Node
● Symbol: Diamond.
● Description: A decision point in the flow, where the flow diverges based on a condition (like an "if"
statement).
● Example: "Is User Valid?" with two paths (Yes, No).
5. Merge Node
● Symbol: Diamond (same as decision node).
● Description: Merges multiple incoming flows into one, without any decision or branching logic.
● Example: After a decision point, various paths might merge back into a single flow.
6. Fork Node
● Symbol: Horizontal or vertical bar.
● Description: Splits a flow into multiple parallel flows. This node creates concurrent paths in the
activity diagram.
● Example: "Process Data" splits into two activities: "Validate Data" and "Save Data".
7. Join Node
● Symbol: Horizontal or vertical bar (same as the fork node).
● Description: Joins multiple parallel flows into a single flow. This node indicates that all incoming
paths must complete before moving to the next activity.
● Example: After processing data in parallel tasks, the flow converges to the next task.
8. Swimlane
● Symbol: Vertical or horizontal columns.
● Description: Divides the activity diagram into different lanes to show responsibility or ownership of
each activity. Each lane represents a different actor, system component, or process.
● Example: A swimlane might separate activities performed by "User", "System", or "Database".
9. Activity Final Node
● Symbol: Circle with a cross inside.
● Description: Represents the final completion of an activity, which stops the flow within the activity
diagram.
● Example: When all processes in a workflow are completed and the activity stops.
10. Object Node
● Symbol: Rectangle with a folded corner.
● Description: Represents an object or data in the system, showing when an object is being used or
modified during the process.
● Example: "Customer Order" object is passed between activities like "Process Order" or "Ship Order".
11. Control Flow
● Symbol: Solid arrow.
● Description: Represents the flow of control from one activity or node to another. It directs the path of
the execution.
● Example: An arrow from the "Start" node to the first activity.
12. Object Flow
● Symbol: Dashed arrow.
● Description: Represents the flow of data or objects between activities or nodes. It shows the transfer
of information or objects.
● Example: An object representing a "Customer Order" passed from one activity to the next.
13. Signal
● Symbol: Arrow with a dashed line.
● Description: Represents the sending or receiving of a signal between components in a system. This is
used to trigger an action or response.
● Example: A signal sent when a user presses a button or an event is triggered.
14. Time Event
● Symbol: A clock symbol.
● Description: Represents events triggered by time, such as delays or time-based conditions.
● Example: "After 5 minutes, send reminder."
15. Expansion Node
● Symbol: Rectangle with an "X" symbol inside.
● Description: Represents iterations or expansions, indicating that the process will loop or repeat for
each element in a collection.
● Example: For each "Item" in a shopping cart, the activity "Apply Discount" is performed.
16. Interruptible Activity Region
● Symbol: Rectangle with a dashed line inside.
● Description: An activity region where the flow can be interrupted, often used for emergency stopping
or exception handling.
● Example: A "Process Order" region that can be interrupted if a "Payment Failure" occurs.
Online Shopping Application Activity Diagram
3. State Chart Diagram-
A state diagram is a uml diagram which is used to represent the condition of the system or part of the system
at finite instances of time. It’s a behavioral diagram and it represents the behavior using finite state transitions.
1. State
● Symbol: Rounded rectangle (also known as a "state box").
● Description: Represents a specific condition or situation during the life of an object where it satisfies
some condition, performs some activity, or waits for an event.
● Example: "Idle", "Processing", "Completed", "Error".
2. Initial State (Start State)
● Symbol: Solid black circle.
● Description: Marks the starting point of the state machine when the object is first created. The initial
state represents the first state an object enters when it begins its lifecycle.
● Example: The initial state of a system could be "Idle" or "Waiting for Input".
3. Final State (End State)
● Symbol: Solid black circle with a concentric border (bullseye).
● Description: Indicates the end of the state machine's operation, where no further transitions are
possible. Once the object reaches the final state, the process is considered complete.
● Example: A "Completed" or "Error" state indicating the end of a task.
4. Transition
● Symbol: Solid arrow.
● Description: Represents the movement from one state to another in response to an event. Transitions
often have triggers (events) and conditions associated with them.
● Example: A transition might go from the "Idle" state to the "Processing" state when an event like
"Start Process" occurs.
5. Event
● Symbol: Label written on a transition arrow.
● Description: An event that triggers a transition from one state to another. An event can be an
external signal, message, or time-based condition.
● Example: "Start Process", "Timer Expiry", "User Input".
6. Guard Condition
● Symbol: A condition written in square brackets [] next to a transition.
● Description: A boolean expression that must be true for the transition to occur. If the guard
condition is not satisfied, the transition is not triggered.
● Example: [temperature > 100] – The transition from the "Heating" state to the "Cooling" state occurs
only if the temperature exceeds 100.
7. Action
● Symbol: Action written after a slash / on a transition line.
● Description: An action that is executed when a transition occurs, typically as a result of an event. An
action is typically an operation that happens during the state transition.
● Example: Start Process / initialize data – This indicates that when the transition occurs, the action
"initialize data" will be executed.
8. Pseudo-State (Fork, Join, Choice, and Junction)
● Symbol: A diamond shape (used for decision-making or for branching).
● Description: A pseudo-state represents a state that doesn’t involve an actual object but is used to
control the flow of states. It helps in controlling concurrency, branching, or combining multiple
transitions.
9. History State
● Symbol: A circle with an "H" inside.
● Description: Represents the last active state before an object left a certain state. It helps an object
resume its activity from the last known state when it re-enters a composite state.
● Example: If a process was interrupted, the history state allows the process to resume from the point
it left off.
10. Composite State
● Symbol: A state containing nested sub-states, typically represented by a larger rounded rectangle that
contains smaller states.
● Description: A state that contains other states (sub-states) inside it, representing a hierarchical
structure where the object may be in one of several possible states within this composite state.
● Example: A "Processing" state might have sub-states like "Downloading", "Verifying", and
"Saving".
11. Entry / Exit Actions
● Symbol: Keywords entry and exit inside a state.
● Description: Represents actions that occur when entering or exiting a state.
● Example: In the "Processing" state, an entry action might be "Initialize variables," and an exit action
could be "Cleanup resources."
12. Fork and Join
● Fork:
o Symbol: Horizontal or vertical line dividing the flow into multiple parallel transitions.
o Description: Indicates parallel transitions or actions that occur simultaneously.
● Join:
o Symbol: Horizontal or vertical line merging multiple paths into one.
o Description: Combines parallel activities or transitions back into a single flow.
13. Signal
● Symbol: A dashed line with an arrow.
● Description: A signal used to represent asynchronous communication or notifications between
states.
● Example: A system may send a signal when a specific condition is met, such as signal Timeout from
one state to another.
Class diagrams are a type of UML (Unified Modeling Language) diagram used in software engineering to
visually represent the structure and relationships of classes within a system i.e. used to construct and
visualize object-oriented systems.
Class notation is a graphical representation used to depict classes and their relationships in
object-oriented modeling.
1. Class Name:
● The name of the class is typically written in the top compartment of the class box and is
centered and bold.
2. Attributes:
● Attributes, also known as properties or fields, represent the data members of the class. They
are listed in the second compartment of the class box and often include the visibility (e.g.,
public, private) and the data type of each attribute.
3. Methods:
● Methods, also known as functions or operations, represent the behavior or functionality of the
class. They are listed in the third compartment of the class box and include the visibility (e.g.,
public, private), return type, and parameters of each method.
4. Visibility Notation:
● Visibility notations indicate the access level of attributes and methods. Common visibility
notations include:
o + for public (visible to all classes)
o - for private (visible only within the class)
o # for protected (visible to subclasses)
o ~ for package or default visibility (visible to classes in the same package)
An Object Diagram can be referred to as a screenshot of the instances in a system and the relationship
that exists between them.
● An object diagram in UML is useful because it provides a clear and visual representation of specific
instances of classes and their relationships at a particular point in time, aiding in understanding and
communicating the structure and interactions within a system.
● In other words, “An object diagram in the Unified Modeling Language (UML), is a diagram that
shows a complete or partial view of the structure of a modeled system at a specific time.
6. Aggregation
Aggregation represents a “has a” relationship. We use a hollow diamond on the containing object with a line
which joins it to the contained object.
● Aggregation is a specific form of association.
● It is a kind of parent-child relationship however it isn’t inheritance.
● Aggregation occurs when the lifecycle of the contained objects does not strongly depend on the
lifecycle of container objects.
7. Composition
Composition is a type of association where the child cannot exist independent of the other. We use a filled
diamond on the containing object with a line which joins it to the contained object. Composition is also a
special type of association. It is also a kind of parent child relationship but it is not inheritance. So whenever
independent existence of the child is not possible we use a composition relationship.
3. Sequence Diagram:
Sequence diagrams are a type of UML (Unified Modeling Language) diagram that visually represent the
interactions between objects or components in a system over time. They focus on the order and timing of
messages or events exchanged between different system elements. The diagram captures how objects
communicate with each other through a series of messages, providing a clear view of the sequence of
operations or processes.
1. Object (Actor/Participant)
● Symbol: A rectangle with the name of the object or actor, placed at the top of the diagram, often with
a dashed vertical line beneath it called the lifeline.
● Description: Represents an object or an actor (external entity like a user) that participates in the
interaction. Actors are typically placed on the left or right side of the diagram, while objects are shown
in the center.
2. Lifeline
● Symbol: A vertical dashed line that extends from the object/actor symbol downward.
● Description: Represents the presence of an object or actor over time during the interaction. The lifeline
is an indication of the existence of an object throughout the duration of the interaction, often showing
the object's participation in sending or receiving messages.
4. Message
● Symbol: A horizontal arrow between lifelines (objects or actors). The arrow points from the sender to
the receiver.
● Description: Represents the communication or interaction between objects. Messages are exchanged
to invoke methods or functions, and the arrow's direction indicates the flow of control.
● Types of Messages:
o Synchronous Message: A solid arrow with a filled arrowhead (the sender waits for a response
before proceeding).
o Asynchronous Message: A solid arrow with an open arrowhead (the sender does not wait for
a response).
o Return Message: A dashed arrow with an open arrowhead (indicates the return of a response
from a method call).
5. Actor
● Symbol: A stick figure or a named rectangle (actor) placed outside the main sequence.
● Description: Represents an external entity, such as a user, system, or another subsystem, that interacts
with the system being modeled.
6. Return Message
● Symbol: A dashed arrow with an open arrowhead.
● Description: Represents a response or return of control from the receiver back to the sender. It
typically follows a method call or synchronous message, indicating the completion of the operation.
7. Self-Message (Self-Call)
● Symbol: An arrow from the object’s lifeline to itself, indicating that an object is calling one of its own
methods.
● Description: Represents a message sent by an object to itself, which is useful for modeling internal
processing, like calling a method within the same object.
8. Alt (Alternative)
● Symbol: A rectangular frame with the keyword "alt" written inside.
● Description: Represents an alternative condition or decision. The sequence diagram inside the "alt"
frame can have different paths based on certain conditions or guards.
9. Loop (Looping)
● Symbol: A rectangular frame with the keyword "loop" written inside.
● Description: Represents a repetitive action or loop, where a sequence of messages is repeated for each
iteration or condition.
Experiment No – 4
Perform Unit testing of Calculator program using Junit testing framework.
JUnit is a Testing Framework. The Junit 5 is the latest version of the testing framework, and it has a lot of
features when compared with Junit 4. JUnit 5, also known as JUnit Jupiter. It introduces several new features
and improvements over its predecessor, JUnit 4, making it more powerful and flexible for writing and running
tests.
The JUnit 5 version has three different modules for defining and performing different functionalities in testing.
The components are:
● JUnit Platform
● JUnit Jupiter
● JUnit Vintage
Output
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 sec
Experiment No – 5
Perform Integration testing of calculator program using Junit testing framework.
Integration testing is a software testing technique that focuses on verifying the interactions and data exchange
between different components or modules of a software application. The goal of integration testing is to
identify any problems or bugs that arise when different components are combined and interact with each other.
Integration testing is typically performed after unit testing and before system testing. It helps to identify and
resolve integration issues early in the development cycle, reducing the risk of more severe and costly problems
later on.