Se Practical File
Se Practical File
PRACTICAL -1
Aim: Prepare the project abstract and identify the appropriate process model.
Problem: In recent times, during the pandemic, online education was boosted
because offline was not possible as well as traveling. So, with respect to that
many e-learning platforms were developed. The problem was that the platforms
lacked proper education tutorials and assessments too. So, in our forum, we tried
to rectify the problem and found a better solution.
Purpose: Web Applications provides the facility to study online anywhere at any
time worldwide by creating an account on this platform. It allows students to
learn any course and give the exam through our platform and give results with the
certification after completion of the course which is automatically generated as
per the marks obtained by the student.
While developing the software systems, it’s requirements are changed with time
and situation. So, in that point Prototyping Model is helpful. And also, it is app for
school and students, so it must be tested and approved by the different schools for
efficiency. So, it is convenient to use prototype model.
1
210170107522 Software Engineering
Prototype Model :
2
210170107522 Software Engineering
PRACTICAL 2
Aim: To Prepare Software Requirement Specification for your project definition.
Functional Requirements:
3
210170107522 Software Engineering
Input: Students can access various courses or allotted courses from the courses section
Input: Teacher can create & record courses and upload them to the courses section.
Output: Courses can be viewed by a particular student which was added by the teacher.
Input: Students can view and submit the assignment in the assignment section.
Input: Teacher creates an exam and uploads the question and answers (if MCQs) in the
exams section.
4
210170107522 Software Engineering
Input: Students can view the exam and answer the asked questions in the exams
section.
Output: Answers can be viewed and checked by either platform(if MCQs) or the
particular teacher.
Non-Functional Requirements:
Process: Performance is calculated on the bases of error and updated in the database.
Input: N/A
M4R1: Scalability
Input: N/A
5
210170107522 Software Engineering
M5R1: Reliability
Input: N/A
PRACTICAL -3
6
210170107522 Software Engineering
Functionals Levels
7
210170107522 Software Engineering
10. Reusability 5
Maximum reusability required.
12.Operational ease 1
Minimum operations required.
13.Multiple sites 0
It is an independent platform.
1 Incidental influence
2 Moderate influence
3 Average influence
4 Significant influence
Value Adjustment Factor (VAF) = (TDI x 0.01) + 0.65 = (35 x 0.01) + 0.65 = 1
Effort Estimation:
8
210170107522 Software Engineering
a and b are constants that depend on the project, and size is measured in thousands of lines of code
(KLOC).
Software Project a b c d
COCOMO Development Time (T) = c * (Effort Applied)^d = 2.5 * ( 15.6) ^ 0.38 = 7.1 Months
“c ” and 'd' depend on the modes of the difficulty so d is decided as 0.38 as it is for the other organic
software projects. COCOMO model calculates effort in staff months (19 days per month or 152 working
hours per month).
Therefore such a software project needs: Staff = Effort / Duration = 15.6 / 7.1 = 2.2 persons
Cost Estimation:
The salary of each group member is 20000Rs./p.m @145Hrp.m, therefore the estimated cost of the
Project is:
15.6 man month = 15.6 x 145 (hours in a month) = 2262 man hours
9
210170107522 Software Engineering
PRACTICAL -4
AIM: To prepare Use Case Diagrams and Data Flow Diagrams for your project
defination.
10
210170107522 Software Engineering
11
210170107522 Software Engineering
Level 0
Level 1
12
210170107522 Software Engineering
Level 2
13
210170107522 Software Engineering
PRACTICAL -5
AIM: To prepare E-R diagram and data dictionary for your project defination.
Data Dictionary:
Table 1: Admin
Table 2: Teacher
FIELD NAME DATA TYPE CONSTRAINTS DESCRIPTION
t_id integer(10) Primary key It uniquely identifies
the teacher.
f_name varchar(50) It stores the teacher's
first name.
l_name varchar(50) It stores the teacher’s
last name.
email varchar(50) Not Null It stores the teacher's
email address.
14
210170107522 Software Engineering
Table 3: Student
Table 4: Course
15
210170107522 Software Engineering
Table 5: Assignment
16
210170107522 Software Engineering
17
210170107522 Software Engineering
ER Diagram:
18
210170107522 Software Engineering
PRACTICAL -6
19
210170107522 Software Engineering
AIM: To Prepare the Activity Diagram and Swim lane diagram for the Project.
PRACTICAL 7
20
210170107522 Software Engineering
Aim: To Identify Domain Classes from the Problem Statements and prepare Class
Diagram.
Class Diagram:
21
210170107522 Software Engineering
22
210170107522 Software Engineering
PRACTICAL -8
AIM: 1. To design test cases for your project definition 2. To prepare test case
using testing tools.
23
210170107522 Software Engineering
● That's why we have so many tools available in the market where some are open-source
and paid tools.
● The significant difference between open-source and the paid tool is that the
opensource tools have limited features, whereas paid tool or commercial tools have no
limitation for the features. The selection of tools depends on the user's requirements,
whether it is paid or free.
● The software testing tools can be categorized, depending on the licensing (paid or
commercial, open-source), technology usage, type of testing, and so on.
○ Katalon Studio
○ Ranorex Studio
○ Test complete
24
210170107522 Software Engineering
○ Lambda test
○ Postman
○ Protractor
○ Perfecto
○ Eggplant
○ soapUI
○ Tricentie
○ Selenium
Selenium is one of the most widely used open-source Web UI (User Interface) automation
testing suite.
It was originally developed by Jason Huggins in 2004 as an internal tool at Thought Works.
Selenium supports automation across different browsers, platforms and programming languages.
Selenium can be easily deployed on platforms such as Windows, Linux, Solaris and Macintosh.
Moreover, it supports OS (Operating System) for mobile applications like iOS, windows mobile
and android.
Selenium supports a variety of programming languages through the use of drivers specific to
each language.
Languages supported by Selenium include C#, Java, Perl, PHP, Python and Ruby.
Currently, Selenium Web driver is most popular with Java and C#.
Selenium test scripts can be coded in any of the supported programming languages and can be
run directly in most modern web browsers.
Browsers supported by Selenium include Internet Explorer, Mozilla Firefox, Google Chrome
and Safari.
25
210170107522 Software Engineering
PRACTICAL 9
AIM: To install version control tool and study its features.
VERSION CONTROL:
In software engineering, version control (also known as revision control,
source control, or source code management) is a class of systems responsible for
managing changes to computer programs, documents, large web sites, or other
collections of information. Version control is a component of software
configuration management.
The need for a logical way to organize and control revisions has existed for
almost as long as writing has existed, but revision control became much more
important, and complicated, when the era of computing began. The numbering of
book editions and of specification revisions are examples that date back to the
print-only era. Today, the most capable (as well as complex) revision control
systems are those used in software development, where a team of people may
concurrently make changes to the same files.
Version control systems (VCS) are most commonly run as stand-alone
applications, but revision control is also embedded in various types of software
such as word processors and spreadsheets, collaborative web docs and in various
content management systems, e.g., Wikipedia's page history. Revision control
allows for the ability to revert a document to a previous revision, which is critical
for allowing editors to track each other's edits, correct mistakes, and defend against
vandalism and spamming in wikis.
Types of Version Control:
Local Version Control Systems
Centralized Version Control Systems
Distributed Version Control Systems
26
210170107522 Software Engineering
27
210170107522 Software Engineering
28
210170107522 Software Engineering
2. Branching
Git allows its users to work on a line that runs parallel to the main project files.
These lines are called branches. Branches in Git provide a feature to make changes
in the project without affecting the original version. The master branch of a version
will always contain the production quality code. Any new feature can be tested and
worked upon on the branches and further, it can be merged with the master branch.
Branching and merging can be done very easily with the help of a few Git
commands. A single version of a project may contain n number of branches as per
the user’s requirement.
3. Lightweight
Git stores all the data from the central repository on to the local repository
while cloning is done. There might be hundreds of users working on the same
project and hence the data in the central repository might be very huge. One might
be worried that cloning that much data into local machines might result in system
failure but Git has already taken care of such a problem. Git follows the criteria of
lossless compression that compresses the data and stores it in the local repository
occupying very minimal space. Whenever there is a need for this data, it follows
the reverse technique and saves a lot of memory space.
4. Speed
Since Git stores all the data related to a project in the local repository by the
process of cloning, it is very much efficient to fetch data from the local repository
instead of doing the same from the remote repository. Git is very fast and scalable
compared to other version control systems which results in the handling of large
projects efficiently. The fetching power from a local repository is about 100 times
faster than what possible with the remote server.
5. Compatibility
Git is compatible with all the Operating Systems that are being used these days.
Git repositories can also access the repositories of other Version Control Systems
like SVN, CVK, etc. Git can directly access the remote repositories created by
these SVNs.
29
210170107522 Software Engineering
6. Non-Linear Development
Git allows users from all over the world to perform operations on a project
remotely. A user can pick up any part of the project and do the required operation
and then further update the project. This can be done by the Non-linear
development behaviour of the Git.
30
210170107522 Software Engineering
Merge:
In Git, the merging is a procedure to connect the forked history. It joins two or
more development history together. The git merge command facilitates you to take
the data created by git branch and integrate them into a single branch. Git merge
will associate a series of commits into one unified history. Generally, git merge is
used to combine two branches.
Commit:
It is used to record the changes in the repository. Every commit contains the
index data and the commit message. Every commit forms a parent-child
relationship. When we add a file in Git, it will take place in the staging area. A
commit command is used to fetch updates from the staging area to the repository.
The staging and committing are co-related to each other. Staging allows us to
continue in making changes to the repository, and when we want to share these
changes to the version control system, committing allows us to record these
changes.
Push:
The push term refers to upload local repository content to a remote repository.
Pushing is an act of transfer commits from your local repository to a remote
repository. Pushing is capable of overwriting changes; caution should be taken
when pushing.
31
210170107522 Software Engineering
32
210170107522 Software Engineering
Practical 10
Aim: i) Study Principles, Practices, tools of DevOps, and find out various
advantages and disadvantages of DevOps.
ii) Study of any two Open source tools in DevOps DevOps
● DevOps is more than just development and operations teams working together.
It’s more than tools and practices. DevOps is a mindset, a cultural shift, where teams adopt new
ways of working.
● A DevOps culture means developers get closer to the user by gaining a better understanding
of user requirements and needs. Operations teams get involved in the development process
and add maintenance requirements and customer needs. It means adhering to the following
key principles that help DevOps teams deliver applications and services at a faster pace and
higher quality than organisations using the traditional software development model
Principles of DevOps
● Collaboration
The key premise behind DevOps is collaboration. Development and operations teams coalesce
into a functional team that communicates, shares feedback, and collaborates throughout the
entire development and deployment cycle. Often, this means development and operations teams
merge into a single team that works across the entire application lifecycle.
The members of a DevOps team are responsible for ensuring quality deliverables across each
facet of the product. This leads to more ‘full stack’ development, where teams own the complete
backend-to-frontend responsibilities of a feature or product. Teams will own a feature or project
throughout the complete lifecycle from idea to delivery. This enhanced level of investment and
attachment from the team leads to higher quality output.
33
210170107522 Software Engineering
● Automation
● Continues improvement
DevOps teams use short feedback loops with customers and end users to develop products
and services centered around user needs. DevOps practices enable rapid collection and
response to user feedback through use of real-time live monitoring and rapid deployment.
Teams get immediate visibility into how live users interact with a software system and use
that insight to develop further improvements.
This principle involves understanding the needs of customers and creating products or services
that solve real problems. Teams shouldn’t ‘build in a bubble’, or create software based on
assumptions about how consumers will use the software. Rather, DevOps teams should have a
holistic understanding of the product, from creation to implementation
DevOps Practices DevOps practices reflect the idea of continuous improvement and automation.
Many practices focus on one or more development cycle phases. These practices include:
● Continuous development
This practice spans the planning and coding phases of the DevOps lifecycle. Version-control
mechanisms might be involved.
● Continuous testing
This practice incorporates automated, prescheduled, continued code tests as application code is
being written or updated. Such tests can speed the delivery of code to production.
34
210170107522 Software Engineering
This practice brings configuration management (CM) tools together with other test and
development tools to track how much of the code being developed is ready for production. It
involves rapid feedback between testing and development to quickly identify and resolve code
issues.
● Continuous delivery
This practice automates the delivery of code changes, after testing, to a pre production or
staging environment. A staff member might then decide to promote such code changes into
production.
Similar to continuous delivery, this practice automates the release of new or changed code into
production. A company doing continuous deployment might release code or feature changes
several times per day. The use of container technologies, such as Docker and Kubernetes, can
enable continuous deployment by helping to maintain consistency of the code across different
deployment platforms and environments
● Continuous monitoring
This practice involves ongoing monitoring of both the code in operation and the underlying
infrastructure that supports it. A feedback loop that reports on bugs or issues then makes its way
back to development.
● Infrastructure as code
This practice can be used during various DevOps phases to automate the provisioning of
infrastructure required for a software release. Developers add infrastructure “code” from within
their existing development tools. For example, developers might create a storage volume on
demand from Docker, Kubernetes, or OpenShift. This practice also allows operations teams to
monitor environment configurations, track changes, and simplify the rollback of configurations.
35
210170107522 Software Engineering
DevOps Tool
Advantages of DevOps
Disadvantages of DevOps
● Complexity
● No standardised version
36
210170107522 Software Engineering
● Teething problem
● Technical dissonance
● Operational impediments
Docker overview Docker is an open platform for developing, shipping, and running
applications. Docker enables you to separate your applications from your infrastructure so
you can deliver software quickly. With Docker, you can manage your infrastructure in the
same ways you manage your applications. By taking advantage of Docker’s methodologies
for shipping, testing, and deploying code quickly, you can significantly reduce the delay
between writing code and running it in production. The Docker platform Docker provides
the ability to package and run an application in a loosely isolated environment called a
container. The isolation and security allows you to run many containers simultaneously on a
given host. Containers are lightweight and contain everything needed to run the application,
so you do not need to rely on what is currently installed on the host. You can easily share
containers while you work, and be sure that everyone you share with gets the same
container that works in the same way. Docker provides tooling and a platform to manage
the lifecycle of your containers:
● The container becomes the unit for distributing and testing your application.
● When you’re ready, deploy your application into your production environment, as a container
or an orchestrated service. This works the same whether your production environment is a
local data center, a cloud provider, or a hybrid of the two
2. Slack
● Slack is a messaging app for business that connects people to the information that they need.
By bringing people together to work as one unified team, Slack transforms the way that
organisation communicate.
● Working in Slack
○ Slack helps you to work in a more connected, flexible and inclusive way.
○ Inclusive
37
210170107522 Software Engineering
■ In Slack, everyone in an organisation has access to the same shared and searchable
information. When teams work together in channels, information can be shared with everyone at
once, helping teams to stay aligned and make decisions more quickly.
○ Flexible
■ Slack supports asynchronous work. When work is organised in channels, you can access the
information you need in your own time, regardless of your location, time zone or function. Ask
questions, catch up with new developments and share updates without having to coordinate
schedules.
○ Connected
■ Slack makes it easy to contact your colleagues – you can message anyone inside or outside
your organisation and collaborate just as you would in person. People can work in dedicated
spaces called channels, which bring the right people and information together
38