24cs102 Unit - I
24cs102 Unit - I
This document is confidential and intended solely for the educational purpose
of RMK Group of Educational Institutions. If you have received this document
through email in error, please notify the system manager. This document
contains proprietary information and is intended only to the respective group /
learning community as intended. If you are not the addressee you should not
disseminate, distribute or copy through e-mail. Please notify the sender
immediately by e-mail if you have received this document by mistake and
delete this document from your system. If you are not the intended recipient
you are notified that disclosing, copying, distributing or taking any action in
reliance on the contents of this information is strictly prohibited.
24CS102
SOFTWARE DEVELOPMENT PRACTICES
Batch/Year/Semester: 2024-28 / I / I
2 Course Objectives 6
3 Pre Requisites 7
4 Syllabus 8
5 Course outcomes 11
7 Lecture Plan 13
9 Lecture Notes 16
10 Assignments 104
5
2. Course Objectives
To discuss the essence of agile development methods.
To set up and create a GitHub repository.
Tocreate interactive websites using HTML.
To design interactive websites using CSS.
List of Exercise/Experiments:
1. Form a Team, Decide on a project:
a) Create a repository in GitHub for the team.
b) Choose and follow a Git workflow
Each team member can create a StudentName.txt file with contents about
themselves and the team project
Each team member can create a branch, commit the file with a propercommit
message and push the branch to remote GitHub repository.
Team members can now create a Pull request to merge the branch to
master branch or main development branch.
The Pull request can have two reviewers, one peer team member and one
faculty. Reviewers can give at least one comment for Pull Request
updating.
Once pull request is reviewed and merged, the master or main
development branch will have files created by all team members.
2. Create a web page with at least three links to different web pages. Each of the webpages is
to be designed by a team member. Follow Git workflow, pull request and peer reviews.
UNIT II HTML 9+9
Introduction – Web Basics – Multitier Application Architecture – Cline-Side Scripting versus
Server-side Scripting – HTML5 – Headings – Linking – Images – Special Characters and
Horizontal Rules – Lists – Tables – Forms – Internal Linking – meta Elements – Form input
Types – input and datalist Elements – Page-Structure Elements.
List of Exercise/Experiments:
1. Create web pages using the following:
Tables and Lists
Image map
Forms and Form elements
Frames
UNIT III CSS 9+9
Inline Styles – Embedded Style Sheets – Conflicting Styles – Linking External Style Sheets –
Positioning Elements – Backgrounds – Element Dimensions – Box Model and Text Flow –
Media Types and Media Queries – Drop-Down Menus – Text Shadows – Rounded Corners –
Colour – Box Shadows – Linear Gradients – Radial Gradients – Multiple Background Images –
Image Borders – Animations – Transitions and Transformations – Flexible Box Layout Module –
Multicolumn Layout.
List of Exercise/Experiments:
Apply Cascading style sheets for the web pages created.
UNIT IV JAVASCRIPT BASICS 9+9
Introduction to Scripting – Obtaining user input – Memory Concepts – Arithmetic – Decision
Making: Equality and Relational Operators – JavaScript Control Statements – Functions –
Program Modules – Programmer-defined functions – Scope rules – functions
– Recursion – Arrays – Declaring and Allocating Arrays – References and Reference Parameters
– Passing Arrays to Functions – Multidimensional arrays.
List of Exercise/Experiments:
Form Validation (Date, Email, User name, Password and Number validation) using JavaScript.
List of Exercise/Experiments:
Implement Event Handling in the web pages.
Mini Projects-Develop any one of the following web applications (not limited to one) usingabove
technologies.
a. Online assessment system
b. Ticket reservation system
c. Online shopping
d. Student management system
e. Student result management system
f. Library management
g. Hospital management
h. Attendance management system
i. Examination automation system
j. Web based chat application
TOTAL: 45(L)+45(P)=90 PERIODS
OUTCOMES:
Upon completion of the course, the students will be able to:
CO1: Understand basic software engineering practices effectively.
CO2: Apply version control using Git and GitHub, and manage code repositories proficiently.
CO3: Design web applications using HTML, CSS, and JavaScript.
CO4: Analyze problems and create solutions using CSS for better web page presentation and
usability.
CO5: Develop interactive web pages using JavaScript with an event-handling mechanism.
CO6: Apply the technological changes and improve skills continuously.
TEXT BOOKS:
1. Roger S. Pressman, “Software Engineering: A Practitioner‘s Approach”,
McGrawHill International Edition, Nineth Edition, 2020.
2. Scott Chacon, Ben Straub, “Pro GIT”, Apress Publisher, 3rd Edition, 2014.
3. Deitel and Deitel and Nieto, “Internet and World Wide Web - How to Program”,
Pearson, 5th Edition, 2018.
REFERENCES:
1. Roman Pichler, “Agile Product Management with Scrum Creating Products that
Customers Love”, Pearson Education, 1 st Edition, 2010.
2. Jeffrey C and Jackson, “Web Technologies A Computer Science Perspective”,Pearson
Education, 2011.
3. Stephen Wynkoop and John Burke, “Running a Perfect Website”, QUE, 2nd
Edition, 1999.
4. Chris Bates, “Web Programming – Building Intranet Applications”, 3rd Edition,
Wiley Publications, 2009.
5. Gopalan N.P. and Akilandeswari J., “Web Technology”, Second Edition, PrenticeHall of
India, 2014.
6. https://infyspringboard.onwingspan.com/web/en/app/toc/
lex_auth_013382690411003904735_shared/overview
7. https://infyspringboard.onwingspan.com/web/en/app/
toc/lex_auth_0130944214274703362099_shared/overview
LIST OF EQUIPMENTS:
1. Systems with either Netbeans or Eclipse
2. Java/JSP/ISP Webserver/Apache
3. Tomcat / MySQL / Dreamweaver or
4. Equivalent/ Eclipse, WAMP/XAMP
5. Course Outcomes
CO2 Apply version control using Git and GitHub, and manage code repositories K6
proficiently.
CO4 Analyze problems and create solutions using CSS for better web page K6
presentation and usability.
K6 Evaluation
K5 Synthesis
K4 Analysis
K3 Application
K2 Comprehension
K1 Knowledge
6. CO-PO/PSO Mapping
CO1 1 3 3 3 1 1 1 - - 2 1 2 1 2 2 1
CO2 2 3 2 3 1 2 1 - - 2 1 2 1 - 2 -
CO3 3 3 3 3 1 2 1 - 1 2 1 2 1 2 - 2
CO4 4 3 3 3 1 2 1 - - 2 1 2 1 - 2 2
CO5 5 3 3 3 1 2 1 - 1 2 1 2 1 2 - 2
CO6 6 3 2 3 1 2 1 - 1 2 1 2 1 - 2 -
CO 3 3 3 1 2 1 - 1 2 1 2 1 2 2 2
7. LECTURE PLAN : UNIT – I
AGILE SOFTWARE DEVELOPMENT AND GIT AND GITHUB
UNIT – I AGILE SOFTWARE DEVELOPMENT AND Git and GitHub9
Highes
Propose Actual t
S. d Cogniti Mode of Del
Lectur
No Lecture Topic e Date
CO
ve Deliver iver LU Outcomes Remark
Date Level y y
Res
ourc
e s
Software Engineering MD1, Software Engineering Practices,
05.09.2024 MD4,
1 Practices, Waterfall Model, 05.09.2024 K3 &
T1 Waterfall Model, Agility, Agility
Agility, Agility Process MD5 Process
Extreme Programming, Extreme Programming, Agile
MD1,
2 Agile Process Models, K3 MD4, T1 Process Models, Adaptive
09.09.2024 Adaptive Software 09.09.2024 & Software Development, Scrum,
MD5
Development, Scrum,
MD1,
Dynamic Systems Dynamic Systems Development
MD4,
3 Development Method, & Method, Crystal, Feature Driven
10.09.2024
Crystal, Feature Driven 10.09.2024 K3 MD5
T1
Development,
Development,
Lean Software MD1, Lean Software Development,
K3 T1
4 11.09.2024 Development, Agile 11.09.2024 MD4, Agile Modeling,
&
Modeling, MD5
MD1,
Viewing the Commit Viewing the Commit History,
MD4,
8 History, &
17.09.2024 17.09.2024 T1
K6 MD5
MD1,
Maintaining a Project, Maintaining a Project, Scripting
25.09.2024 25.09.2024 MD4,
15 Scripting GitHub & GitHub
K6 T1
MD5
• ASSESSMENT COMPONENTS
• AC 1. Unit Test
• AC 2. Assignment
• AC 3. Course Seminar
• AC 4. Course Quiz
• AC 5. Case Study
• AC 6. Record Work
• AC 7. Lab / Mini Project
• AC 8. Lab Model Exam
• AC 9. Project Review
• MODE OF DELEIVERY
MD 1. Oral presentation
MD 2. Tutorial
MD 3. Seminar
MD 4. Hands On
MD 5. Videos
MD 6. Field Visit
8. ACTIVITY BASED LEARNING : UNIT – I
GitHub
Syllabus
A Generic software process model will be composed of a set of activities that establish a
framework for software engineering practice.
There are various software development life cycle models defined and designed
which are followed during the software development process.
Example: Waterfall Model, Iterative Model, Spiral Model, V-Model, Big Bang Model.
WATERFALL MODEL
It is used when the requirements for a problem are well understood—when work
flows from communication through deployment in a reasonably linear fashion.
This situation is sometimes encountered when well-defined adaptations or
enhancements to an existing system must be made.
SYSTEM DESIGN
The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
IMPLEMENTATION
With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
INTEGRATION AND TESTING
All the units developed in the implementation phase are integrated
into a system after testing of each unit. Post integration the entire system is tested
for any faults and failures.
DEPLOYMENT OF SYSTEM
Once the functional and non-functional testing is done; the product
is deployed in the customer environment or released into the market.
MAINTENANCE
There are some issues which come up in the client environment. To
fix those issues, patches are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver these changes in the
customer environment.
The meaning of the word “agility” is ability to move your body quickly and easily
or nimbleness.
a well-designed agile process “flattens” the cost of change curve ( shaded, solid
curve), allowing a software team to accommodate changes late in a software
project without dramatic cost and time impact.
Fig 1.2 Agility and cost of change
Any agile process will be characterized by the following number of key assumptions:
which will change. It is equally difficult to predict how customer priorities will
change as the project proceeds.
For many types of software, design and construction are interleaved. That is, both
activities should be performed in tandem so that design models are proven as
they are created. It is difficult to predict how much design is necessary before
construction is used to prove the design.
Analysis, design, construction, and testing are not as predictable (from a planning
point of view) as we might like.
This iterative approach enables the customer to evaluate the software increment
regularly, provide necessary feedback to the software team, and influence the
process adaptations that are made to accommodate the feedback.
AGILITY PRINCIPLES
Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
AGILE MANIFESTO
Individuals and interactions over processes and tools.
If members of the software team are to drive the characteristics of the process
that is applied to build software, a number of key traits must exist among the
people on an agile team and the team itself:
Common focus. Although members of the agile team may perform different
tasks and bring different skills to the project, all should be focused on one goal
to deliver a working software increment to the customer within the time promised.
To achieve this goal, the team will also focus on continual adaptations (small and
large) that will make the process fit the needs of the team.
A jelled team exhibits the trust and respect that are necessary to make them “so
strongly knit that the whole is greater than the sum of the parts.”
Self-organization. In the context of agile development, self-organization
implies three things.
the team organizes the process to best accommodate its local environment.
the team organizes the work schedule to best achieve delivery of the software
increment.
In essence, the team serves as its own management. The team selects how
much work it believes it can perform within the iteration, and the team commits
to the work. Nothing demotivates a team as much as someone else making
commitments for it. Nothing motivates a team as much as accepting the
responsibility for fulfilling commitments that it made itself
1.5 EXTREME PROGRAMMING
Extreme Programming (XP), the most widely used approach to agile software
development.
a variant of XP, called Industrial XP (IXP) has been proposed. IXP refines XP and
targets the agile process specifically for use within large organizations.
XP VALUES
A set of five values that establish a foundation for all work performed as part of
XP
Communication
Simplicity
Feedback courage
Respect
FEEDBACK is derived from three sources the implemented software itself, the
customer, and other software team members. As each class is developed, the
team develops a unit test to exercise each operation according to its specified
functionality. As an increment is delivered to a customer, the user stories or use
cases that are implemented by the increment are used as a basis for acceptance
tests. The degree to which the software implements the output, function, and
behavior of the use case is a form of feedback.
Finally, as new requirements are derived as part of iterative planning, the team
provides the customer with rapid feedback regarding cost and schedule impact.
COURAGE: An agile XP team must have the discipline (courage) to design for
today, recognizing that future requirements may change dramatically, thereby
demanding substantial rework of the design and implemented code.
XP PROCESS
the riskiest stories will be moved up in the schedule and implemented first.
After the first project release (also called a software increment) has been
delivered.
Project velocity can then be used to help estimate delivery dates and schedule
for subsequent releases.
determine whether an over commitment has been made for all stories across
the entire development project. If an over commitment occurs, the content of
releases is modified or end delivery dates are changed.
DESIGN
The CRC cards are the only design work product produced as part of the XP
process.
The intent is to lower risk when true implementation starts and to validate the
original estimates for the story containing the design problem.
CODING
After stories are developed and preliminary design work is done, the team does
not move to code, but rather develops a series of unit tests that will exercise each
of the stories that is to be included in the current release (software increment).
Once the unit test has been created, the developer is better able to focus on what
must be implemented to pass the test. Nothing extraneous is added .
As pair programmers complete their work, the code they develop is integrated
with the work of others. In some cases this is performed on a daily basis by an
integration team.
TESTING
As the individual unit tests are organized into a “universal testing suite”
Integration and validation testing of the system can occur on a daily basis. This
provides the XP team with a continual indication of progress and also can raise
warning flags early if things go awry.
XP acceptance tests, also called customer tests, are specified by the customer and
focus on overall system features and functionality that are visible and reviewable
by the customer. Acceptance tests are derived from user stories that have been
implemented as part of a software release.
INDUSTRIAL XP
IXP is an organic evolution of XP. IXP incorporates six new practices that are
designed to help ensure that an XP project works successfully for significant
projects within a large organization.
(4) the organizational culture will support the new values of an agile team
Project chartering. The IXP team assesses the project itself to determine whether
an appropriate business justification for the project exists and whether the project
will further the overall goals and objectives of the organization.
DISADVANTAGES OF XP
Requirement volatility
Scrum
Crystal
SPECULATION
During speculation, the project is initiated and adaptive cycle planning is
conducted.
Adaptive cycle planning uses project initiation information—the customer’s mission
statement, project constraints (e.g., delivery dates or user descriptions), and basic
requirements to define the set of release cycles (software increments) that will
be required for the project.
No matter how complete and farsighted the cycle plan, it will invariably change.
Based on information obtained at the completion of the first cycle, the plan is
reviewed.
and adjusted so that planned work better fits the reality in which an ASD team is
working.
COLLABORATION
LEARNING
learning will help them to improve their level of real understanding. SD teams
learn in three ways: focus groups, technical reviews and project postmortems.
MERIT
ASD’s overall emphasis on the dynamics of self-organizing teams, interpersonal
collaboration, and individual and team learning yield software project teams that
have a much higher likelihood of success.
1.6.2 SCRUM
Scrum principles are consistent with the agile manifesto and are used to guide
development activities within a process that incorporates the following framework
activities: requirements, analysis, design, evolution, and delivery.
Within each framework activity, work tasks occur within a process pattern called a
sprint. The work conducted within a sprint is adapted to the problem at hand and
is defined and often modified in real time by the Scrum team.
Changes (e.g., backlog work items) are not introduced during the sprint. Hence,
the sprint allows team members to work in a short-term, but stable environment.
Scrum meetings are short (typically 15 minutes) meetings held daily by the
Scrum team.
Three key questions are asked and answered by all team members
DSDM life cycle defines three different iterative cycles, preceded by two additional
life cycle activities:
Feasibility study
Business study
Implementation
Business study establishes the functional and information requirements that will
allow the application to provide business value; also, defines the basic application
architecture and identifies the maintainability requirements for the application.
Design and build iteration revisits prototypes built during functional model
iteration to ensure that each has been engineered in a manner that will enable it to
provide operational business value for end users. In some cases, functional model
iteration and design and build iteration occur concurrently
The Crystal family is actually a set of example agile processes that have been proven
effective for different types of projects. The intent is to allow agile teams to select
the member of the crystal family that is most appropriate for their project and
environment.
Because features are small, their design and code representations are easier to
inspect effectively.
Project planning, scheduling, and tracking are driven by the feature hierarchy,
rather than an arbitrarily adopted software engineering task set.
Template for defining a feature:
The FDD approach defines five “collaborating” framework activities (in FDD
these are called “processes”) as shown in Figure
FDD defines six milestones during the design and implementation of a feature:
A syntactically perfect model that imparts little useful content is not as valuable as a
model with flawed notation that nevertheless provides valuable content for its
audience.
Know the models and the tools you use to create them. Understand the strengths
and weaknesses of each model and the tools that are used to create it.
Adapt locally. The modeling approach should be adapted to the needs of the agile
team.
1.8 AGILE UNIFIED PROCESS (AUP)
The Agile Unified Process (AUP) adopts a “serial in the large” and “iterative in the
small” philosophy for building computer-based systems.
Each AUP iteration addresses the following activities:
Modeling. UML representations of the business and problem domains are created.
However, to stay agile, these models should be “just barely good enough” to allow
the team to proceed.
other agile tools are used to optimize the environment in which the agile
team works (e.g., more efficient meeting areas), improve the team culture
by nurturing social interactions (e.g., collocated teams), physical devices
(e.g., electronic whiteboards), and process enhancement (e.g., pair
programming or time-boxing)”.
$ git status
On branch master
Your branch is up-to-date with 'origin/master’.
nothing to commit, working directory clean
This means it has a clean working directory, in other words, there are no tracked
and modified files. On adding a new file to the project, a simple README file. If the
file didn’t exist before, and run git status, the untracked file can be viewed as given
below:
$ git status
On branch master
Your branch is up-to-date with 'origin/master’.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
STAGING MODIFIED FILES
To stage a file, for example, CONTRIBUTING.md, run the git add command.
git add is a multipurpose command – use it to begin tracking new files, to stage
files, and to do other things like marking merge-conflicted files as resolved.
To see what have changed but not yet staged, type git diff with no other
arguments:
$ git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
This command compares the staged changes to last commit:
$ git diff --staged
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+My Project
$ git diff --cached
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
COMMITTING THE CHANGES
The simplest way to commit is to type git commit:
$ git commit
REMOVING FILES
To remove a file from Git, remove it from tracked files (more accurately, remove it
from staging area) and then commit.
output:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: PROJECTS.md
no changes added to commit (use "git add" and/or "git commit -a")
For File removal, run git rm.
Example:
$ git rm PROJECTS.md
rm 'PROJECTS.md’
$ git rm --cached README
$ git rm log/\*.log
Note the backslash (\) in front of the *. This is necessary because Git does its own
removes all files that have the .log extension in the log/ directory. Otherwise, do
$ git rm \*~
For renaming the file name use the command given below:
Example:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
$ mv README.md README
$ git rm README.md
history and to see what happened, the git log command can be used.
Example: Very simple project called “simplegit”. To get the project, run
$ git clone https://github.com/schacon/simplegit-progit
LIMITING LOG OUTPUT
The time-limiting options such as --since and --until are very useful. For example,
this command gets the list of commits made in the last two weeks:
This command takes the staging area and uses it for the commit. If there is no
changes since the last As an example, do commit and then realize that forgot to
changes, but it accidentally type git add * and stage them both. How can unstage
work.
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
$ git remote
origin
FETCHING AND PULLING FROM YOUR REMOTES
$ git fetch [remote-name]
The command goes out to that remote project and pulls down all the data from that
remote project that don’t have yet.
INSPECTING A REMOTE
To see more information about a particular remote, use the git remote show
[remote-name] command. Run this command with a particular shortname, such as
remote references. It also lists all the remote references it has pulled down.
yet have, which remote branches has and that have been removed from the server,
and multiple local branches that are able to merge automatically with their remote-
Can also search for tags with a particular pattern. The Git source repo, for instance,
contains more than 500 tags. If you’re only interested in looking at the 1.8.5 series,
run this:
$ git tag
v0.1
v1.3
v1.4
To see the tag data along with the commit that was tagged by using the git show
command:
$ git tag
v0.1
Run git show on the tag, don’t see the extra tag information. The command just
use other commands frequently as well; don’t hesitate to create new aliases.
This technique can also be very useful in creating commands that the think should
exist. For example, to correct the usability problem that encountered with unstaging
The Git repository will now contains 5 objects: 3 blobs ( each representing the
contents of one of the 3 files), 1 tree that lists the contents of the directory and
specifies which file names are stored as which blobs, and 1 commit with the pointer
to that root tree and all the metadata.
Fig 1.15 Two branches pointing into the same series of commit
In Git, HEAD is a pointer to the local branch master we are currently on. The
git branch command only created a new branch it did not switch to that
branch.
SWITCHING BRANCHES
Fig 1.18 The HEAD branch moves forward when a commit is made
The testing branch has moved forward, but master branch still points to the previous
commit. To switch back to the master branch:
$ vim test.rb
To create a new branch and want to switch to that new branch at the same time —
this can be done with git checkout –b <newbranchname>.
Create a new branch and switch to it: git switch -c new-branch. The -c flag
stands for create, we can also use the full flag: --create.
Consider in a project couple of commits are already done on the master branch.
Fig 1.23 The iss53 branch has moved forward with your work
Command to switch back to master branch:
BASIC MERGING
To merge iss53 branch into master branch, check out the branch and then run the
git merge command:
$ git mergetool
$ git status
Type git commit to finalize the merge commit.
1.21 BRANCH MANAGEMENT
To see the last commit on each branch,
$ git branch -v
The useful --merged and --no-merged options can filter this list to branches
merged into the current branch. To see which branches are already merged into the
Branch run the following command:
To let others see the corrected branch on the remote, push it:
$ git push --set-upstream origin corrected-branch-name
Now we’ll take a brief look at where we are now:
$ git branch --all
*corrected-branch-name
Main
The branch with the bad name is also still present there but delete it by executing the
following command:
$ git push origin --delete bad-branch-name
CHANGING THE MASTER BRANCH NAME
Changing the name of a branch like master/main/mainline/default will break the
integrations, services, helper utilities and build/release scripts that the repository
uses.
Rename local master branch into main with the following command:
$ git branch --move master main
To let others see the new main branch, push it to the remote. This makes the
renamed branch available on the remote.
It’s used to pull in topic branches (short-lived branches, like is s53 branch) when
They are ready, to make sure they pass all the tests and don’t introduce bugs.
The stable branches are farther down the line in commit history, and the bleeding-
edge branches are farther up the history.
Topic Branches
• Topic branches, however, are useful in projects of any size. A topic branch is a
short-lived branch used for a single particular feature or related work.
• Consider an example of doing some work (on master), branching off for an issue
(iss91), working on it for a bit, branching off the second branch to try another
way of handling the same thing (iss91v2), going back to master branch and
working there for a while, and then branching off there to do some work that are
not sure is a good idea (dumbidea branch). The commit history will look
something like this:
this:
branch to run git init, “origin” is the default name for a remote while running git clone.
1.24 REBASING
In Git, there are two main ways to integrate changes from one branch into another:
the merge and the rebase.
For this example, check out the experiment branch, and then rebase it onto the
master branch as follows:
Fig 1.44 Fast-forwarding your master branch to include the client branch changes
Let’s say you decide to pull in your server branch as well. You can rebase the server
branch onto the master branch without having to check it out first by running git
rebase <basebranch> <topicbranch> which checks out the topic branch (in this
case, server) for you and replays it on to the base branch (master):
Fig 1.45 Rebasing your server branch on top of your master branch
Then, we can fast-forward the base branch (master):
$ git checkout master
$ git merge server
We can remove the client and server branches because all the work is integrated and
we don’t need them anymore, leaving history for this entire process looking like Final
commit history:
Example:
Suppose we clone from a central server and then do some work off that. The commit
history looks like this:
Fig 1.48 Fetch more commits, and merge them into your work
Next, the person who pushed the merged work decides to go back and rebase their
work instead; they do a git push force to overwrite the history on the server. We
then fetch from that server, bringing down the new commits.
Fig 1.49 Someone pushes rebased commits, abandoning commits you have based your
work on
Now if we do a git pull, we will create a merge commit which includes both lines
of history, and the repository will look like this:
Fig 1.50 You merge in the same work again into a new merge commit
If we run a git log when the history looks like this, there will be two commits
that have the same author, date, and message, which will be confusing. If we
push this history back up to the server, it will reintroduce all those rebased
commits to the central server, which can further confuse people. It is pretty safe
to assume that the other developer does not want C4 and C6 to be in the
history; that is why they rebased in the first place.
If you pull down work that was rewritten and rebase it on top of the new
commits from your partner, Git can often successfully figure out what is
uniquely yours and apply them back on top of the new branch.
For instance, in the previous scenario, if instead of doing a merge when we’re at
Someone pushes rebased commits, abandoning commits you have based
your work on we run git rebase teamone/master, Git will:
Determine what work is unique to our branch (C2, C3, C4, C6, C7)
• Determine which are not merge commits (C2, C3, C4)
•Determine which have not been rewritten into the target branch (just C2 and
C3, since C4 is the same patch as C4’)
You can also simplify this by running a git pull rebase instead of a normal
git pull. Or you could do it manually with a git fetch followed by a git rebase
teamone/master in this case.
If you are using git pull and want to make rebase the default, you can set
the pull.rebase config value with something like git config global pull.rebase
true.
If you only ever rebase commits that have never left your own computer,
you well be just fine. If you rebase commits that have been pushed, but that
no one else has based commits from, you’ll also be fine. If you rebase
commits that have already been pushed publicly, and people may have
based work on those commits, then you may be in for some frustrating
trouble, and the scorn of your teammates.
If you or a partner does find it necessary at some point, make sure everyone
knows to run git pull rebase to try to make the pain after it happens a little
bit simpler.
REBASE VS. MERGE
Now that you have seen rebasing and merging in action, you may be
wondering which one is better.
Before we can answer this, let is step back a bit and talk about what
history means.
One point of view on this is that your repository is commit history is a record of
what actually happened. It is a historical document, valuable in its own right,
and should not be tampered with.
From this angle, changing the commit history is almost blasphemous; you are
lying about what actually transpired. So what if there was a messy series of
merge commits? That is how it happened, and the repository should preserve
that for posterity.
The opposing point of view is that the commit history is the story of how your
project was made.
You would not publish the first draft of a book, so why show your messy work?
When you are working on a project, you may need a record of all your missteps
and dead-end paths, but when it is time to show your work to the world, you
may want to tell a more coherent story of how to get from A to B. People in
this camp use tools like rebase and filter-branch to rewrite their commits
before they are merged into the mainline branch. They use tools like rebase
and filter-branch, to tell the story in the way that is best for future readers.
Now, to the question of whether merging or rebasing is better: hopefully you’ll
see that it is not that simple. Git is a powerful tool, and allows you to do many
things to and with your history, but every team and every project is different.
Now that you know how both of these things work, it is up to you to decide
which one is best for your particular situation.
You can get the best of both worlds: rebase local changes before pushing to
clean up your work, but never rebase anything that you have pushed
somewhere.
1.25 GITHUB
GitHub is the single largest host for Git repositories and is the central point of
collaboration for millions of developers and projects. A large percentage of all Git
repositories are hosted on GitHub, and many open-source projects use it for Git
hosting, issue tracking, code review, and other things.
3. Clicking the Octocat logo at the top-left of the screen will navigate to
dashboard page.
5. click the “Add an SSH key” button, give key a name, paste the contents of
~/.ssh/id_rsa.pub public-key file into the text area, and click “Add key
6. Add Profile details like email address and profile picture and two factor
authentication can be used to enhance security.
1.27CONTRIBUTION TO PROJECTS
• When one have to use the existing project in git without push access fork
command can be used. Fork command will clone or copy the existing project
and further update can be done on cloned project.
• To fork a project, visit the project page and click the “Fork” button at the top-
right of the page. After a few seconds, you’ll be taken to your new project
page, with your own writeable copy of the code.
First, we click the 'Fork' button as mentioned earlier to get our own copy of the
project. Our user name here is “tonychacon” so our copy of this project is at
https://github.com/tonychacon/blink and that’s where we can edit it. We will
clone it locally, create a topic branch, make the code change and finally push
that change back up to GitHub.
--- a/blink.ino
+++ b/blink.ino
$ git commit -a -m 'Change delay to 3 seconds' ⑤
$ git push origin slow-blink ⑥
• [new branch] slow-blink -> slow-blink
Anyone can also leave general comments on the Pull Request. In Pull Request
discussion page we can see an example of the project owner both commenting
on a line of code and then leaving a general comment in the discussion section.
You can see that the code comments are brought into the conversation as well.
The other thing you’ll notice is that GitHub checks to see if the Pull Request
merges cleanly and provides a button to do the merge for you on the server.
This button only shows up if you have write access to the repository and a
trivial merge is possible. If you click it GitHub will perform a “non-fast-
forward” merge, meaning that even if the merge could be a fast-forward,
it will still create a merge commit.
This is the basic workflow that most GitHub projects use. Topic branches are
created, Pull Requests are opened on them, a discussion ensues, possibly
more work is done on the branch and eventually the request is either closed
or merged.
Merging.
Pushing the “Merge”button on the site purposefully creates a merge commit
that references the Pull Request so that it’s easy to go back and research the
original conversation if necessary.
.
Task Lists The first really useful GitHub specific Markdown feature, especially for
use in Pull Requests, is theTask List. A task list is a list of checkboxes of things
you want to get done. Putting them into an Issue or Pull Request normally
indicates things that you want to get done before you consider the item
complete.
1.27.10 IMAGES
This isn’t technically GitHub Flavored Markdown, but it is incredibly useful. In
addition to adding Markdown image links to comments, which can be difficult to
find and embed URLs for, GitHub allows you to drag and drop images into text
areas to embed them.
If you look at Drag and drop images to upload them and auto-embed them,
you can see a small “Parsed as Markdown” hint above the text area. Clicking on
that will give you a full cheat sheet of everything you can do with Markdown on
GitHub.
$ git checkout master ①
$ git pull https://github.com/progit/progit2.git②
$ git push origin master ③ ① If you were on another branch, return to
master. ② Fetch changes from https://github.com/progit/progit2.git and merge
them into master. ③ Push your master branch to origin.
This works, but it is a little tedious having to spell out the fetch URL every time.
You can automate this work with a bit of configuration:
All you really have to do here is provide a project name; the rest of the fields are
completely optional. For now, just click the “Create Repository” button, and boom –
you have a new repository on GitHub, named <user>/<project_name>.
Now that your project is hosted on GitHub, you can give the URL to anyone you want
to share your project with. Every project on GitHub is accessible over HTTPS as
https://github.com/<user>/<project_name>, and over SSH as
[email protected]:<user>/<project_name>.
1.28.2 ADDING COLLABORATORS
If you’re working with other people who you want to give commit access to, you
need to add them as “collaborators”. If Ben, Jeff, and Louise all sign up for accounts
on GitHub, and you want to give them push access to your repository, you can add
them to your project. Doing so will give them “push” access, which means they have
both read and write access to the project and Git repository.
README
The first is the README file, which can be of nearly any format that GitHub
recognizes as prose. For example, it could be README, README.md,
README.asciidoc, etc. If GitHub sees a README file in your source, it will render it
on the landing page of the project.
Many teams use this file to hold all the relevant project information for someone who
might be new to the repository or project. This generally includes things like:
1.28.11CONTRIBUTING
The other special file that GitHub recognizes is the CONTRIBUTING file. If you have
a file named CONTRIBUTING with any file extension, GitHub will show Opening a
Pull Request when a CONTRIBUTING file exists when anyone starts opening a Pull
Request.
The idea here is that you can specify specific things you want or don’t want in a
Pull Request sent to your project. This way people may actually read the guidelines
before opening the Pull Request.
TRANSFERRING A PROJECT
If you would like to transfer a project to another user or an organization in GitHub,
there is a “Transfer ownership” option at the bottom of the same “Options” tab of
your repository settings page that allows you to do this.
This is helpful if you are abandoning a project and someone wants to take it over,
or if your project is getting bigger and want to move it into an organization.
1.29.3 HOOKS
If you need something more specific or you want to integrate with a service or site
that is not included in this list, you can instead use the more generic hooks system.
GitHub repository hooks are pretty simple. You specify a URL and GitHub will post an
HTTP payload to that URL on any event you want.
Generally the way this works is you can setup a small web service to listen for a
GitHub hook payload and then do something with the data when it is received.
To enable a hook, you click the “Add webhook” button in Services and Hooks
configuration section. This will bring you to a page that looks like Web hook
configuration.
The configuration for a web hook is pretty simple. In most cases you simply enter a
URL and a secret key and hit “Add webhook”. There are a few options for which
events you want GitHub to send you a payload for — the default is to only get a
payload for the push event, when someone pushes new code to any branch of your
repository.
For more information on how to write webhooks and all the different event types you
can listen for, go to the GitHub Developer documentation at
https://developer.github.com/webhooks/.
1.29.4 THE GITHUB API
Services and hooks give you a way to receive push notifications about events that
happen on your repositories, This is where the GitHub API comes in handy. GitHub
has tons of API endpoints for doing nearly anything you can do on the website in an
automated fashion. In this section we’ll learn how to authenticate and connect to the
API, how to comment on an issue and how to change the status of a Pull Request
through the API.
BASIC USAGE
The most basic thing you can do is a simple GET request on an endpoint that doesn’t
require authentication. This could be a user or read-only information on an open
source project. For example, if we want to know more about a user named “schacon”,
we can run something like this:
$ curl https://api.github.com/users/schacon
1.29.5 COMMENTING ON AN ISSUE
However, if you want to do an action on the website such as comment on an Issue
or Pull Request or if you want to view or interact with private content, you’ll need to
authenticate.
There are several ways to authenticate. You can use basic authentication with just
your username and password, but generally it’s a better idea to use a personal
access token. You can generate the from the “Applications” tab of your settings
page.
1.29.6 CHANGING THE STATUS OF A PULL REQUEST
There is one final example we’ll look at since it’s really useful if you’re working with
Pull Requests.
Each commit can have one or more statuses associated with it and there is an API to
add and query that status.
Most of the Continuous Integration and testing services make use of this API to react
to pushes by testing the code that was pushed, and then report back if that commit
has passed all the tests. You could also use this to check if the commit message is
properly formatted, if the submitter followed all your contribution guidelines, if the
commit was validly signed any number of things.
1.29.7 OCTOKIT
Though we’ve been doing nearly everything through curl and simple HTTP requests
in these examples, several open-source libraries exist that make this API available in
a more idiomatic way.
The supported languages include Go, Objective-C, Ruby, and .NET. Check out
https://github.com/octokit for more information on these, as they handle much of
the HTTP for you.
Hopefully these tools can help you customize and modify GitHub to work better for
your specific workflows. For complete documentation on the entire API as well as
guides for common tasks, check out https://developer.github.com.
GIT and GITHUB Commands - Working in Local Repository
1. cd
2. cd /c
3. cd git
4. cd RMD
5. git config --global user.name "suhasiniselvam"
6. git config –global user.email [email protected]
7. For initializing: git init
8. To create a file in a folder: touch file.txt
9. To edit the newly created text file: vim file.txt
After this command, press insert button to add the text in the file. Once the adding of text is
done press esc and type :wq
1. Now you can check the status of the git by using the command: git status
2. For adding the new file which created use the command: git add file.txt
3. Check whether it is added in your local git repository: git status
4. Now, to commit the newly add file use the command: git commit -m “First Commit” file.txt
5. Again check the status, git status
6. To check the changes done use the command: git log
Working Remote Repository
1. Go to github account, create a new repository in your own account.
2. Now cloning has to be done between local and remote repository: git clone URL
3. After creating the repository, now we want to push the file which is created in local system
using the command: git push -u origin.
4. Now u can check the remote repository the new file we get added.
5. If you want to make changes in file which is present in remote you can do by click edit option
and for storing the changes in your local repository you have the pull the files from remote.
git pull URL. Likewise, you can make changes in your local file also and push the changes
to remote by add, commit and push commands.
Git Branching
1. Initially, check any branch is available using: git branch it will display the branch list
2. To create a new branch: git branch branchname (eg: git branch develop)
3. To switch from one branch to another use: git checkout develop
4. To do creation of new and switching of branch use the command: git checkout -b features
5. Now, you can add files, edit files using the command touch and vim.
6. For merging the two branch use: git merge develop features
7. For deleting the branch: git branch -d develop
https://infyspringboard.onwingspan.com/web/en/
app/toc/lex_auth_013382690411003904735_sh
ared/overview
60
PART A Q&A UNIT - I
Incremental delivery
The software is developed in increments with the customer
specifying the requirements to be included in each increment.
People not process
The skills of the development team should be recognized and
exploited. Team members should be left to develop their own
ways of working without prescriptive processes.
Embrace change
Expect the system requirements to change and so design the
system to accommodate these changes.
Maintain simplicity
Focus on simplicity in both the software being developed and
in the development process. Wherever possible, actively work
to eliminate complexity from the system.
UNIT I
COURSERA
https://www.coursera.org/professional-certificates/devops-and-
software-engineering
https://www.coursera.org/learn/introduction-to-software-engineering
https://www.coursera.org/learn/introduction-git-github
https://www.coursera.org/learn/getting-started-with-git-and-github
https://www.coursera.org/learn/agile-project-
management?action=enroll&adgroupid=137976342650&adpostion=&c
ampaignid=18216928758&creativeid=630416489407&device=c&devic
emodel=&hide_mobile_promo=&keyword=&matchtype=&network=g
&utm_campaign=B2C_INDIA branded_FTCOF_courseraplus_arte&ut
m_content=B2C&utm_medium=sem&utm_source=gg
UDEMY
https://www.udemy.com/course/complete-professional-scrum-master-
training-exam-simulator/?src=sac&kw=AGILE+S
UDEMY
https://www.udemy.com/topic/Software-Engineering
https://www.udemy.com/course/github-ultimate/
NPTEL
https://nptel.ac.in/courses/106105182
70
14. REAL TIME APPLICATIONS : UNIT – I
Objective:
Amaze Packis an online store for purchasing gift items.
Users of the System:
1. Admin
2. Customer
Functional Requirements:
Build an application that customers can access and purchase gifts online.
The application should have signup, login, profile, dashboard page, and
product page.
Filters for products like Low to High or showcasing products based on the
customer’s price range, specific brands etc.
Email integration for intimating new personalized offers to customers.
Multi-factor authentication for the sign-in process
Payment Gateway
Performance
Admin application < 2 Sec
Non-Peak Load Performance
eCommerce < 2 Sec
Maintainability
Usability
Availability
Failover
Cloud
Technology Stack
Front End Angular 10+/ React 16+
Material Design Bootstrap / Bulma
Server Side Spring Boot / .Net WebAPI/ Node Js
Database MySQL or Oracle or MSSQL
Frontend:
Customer:
1.Auth: Design an auth component (Name the component as auth for angular
app whereas Auth for react app. Once the component is created in react app,
name the jsx file as same as component name i.e Auth.jsx file) where the
customer can authenticate login and signup credentials
a. Ids:
email
username
mobilenumber
password
confirmpassword
submitButton
signinLink
signupBox
b. API endpoint Url: http://localhost:8000/signup
c. Output screenshot:
15. CONTENT BEYOND SYLLABUS : UNIT – I
73
When we use the Incremental Model?
When the requirements are superior.
A project has a lengthy development schedule.
When Software team are not very well skilled or trained.
When the customer demands a quick release of the product.
You can develop prioritized requirements first.
Advantage of Incremental Model
Errors are easy to be recognized.
Easier to test and debug
More flexible.
Simple to manage risk because it handled during its iteration.
The Client gets important functionality early.
Disadvantage of Incremental Model
Need for good planning
Total Cost is high.
Well defined module interfaces are needed.
2. Getting Git on a Server
In order to initially set up any Git server:
Export an existing repository into a new bare repository, a repository that does
not contain a working directory. This is generally straightforward to do. In order
to clone repository, create a new bare repository and run the clone command
with the --bare option. By convention, bare repository directories end in .git, like
so: $ git clone --bare my_project my_project.git
$ ssh [email protected]
$ cd /srv/git/my_project.git
$ git init --bare –shared
See how easy it is to take a Git repository, create a bare version, and place it
on a server and have SSH access for collaborators. Now it is ready to
collaborate on the same project.
16. ASSESSMENT SCHEDULE
Tentative schedule for the Assessment During 2024-2028 Odd semester
Name of the
S.NO Start Date End Date Portion
Assessment
- -
1 Unit Test 1 UNIT 1
17.10.2024 22.10.2024
2 IAT 1 UNIT 1 & 2
- -
3 Unit Test 2 UNIT 3
23.11.2024 28.11.2024
4 IAT 2 UNIT 3 & 4
- - UNIT 5 , 1 &
5 Revision 1
2
- -
6 Revision 2 UNIT 3 & 4
16.12.2024 23.12.2024
7 Model ALL 5 UNITS
75
17. PRESCRIBED TEXT BOOKS & REFERENCE BOOKS
TEXT BOOKS
1. Roger S. Pressman, “Software Engineering: A Practitioner‘s Approach”,
McGraw Hill International Edition, Nineth Edition, 2020.
2. Scott Chacon, Ben Straub, “Pro GIT”, Apress Publisher, 3rd Edition, 2014.
3. Deitel and Deitel and Nieto, “Internet and World Wide Web - How to
Program”, Pearson, 5th Edition, 2018.
REFERENCE BOOKS
1 Roman Pichler, “Agile Product Management with Scrum Creating Products that
Customers Love”, Pearson Education, 1 st Edition, 2010.
2. Jeffrey C and Jackson, “Web Technologies A Computer Science Perspective”,
Pearson Education, 2011.
3.Stephen Wynkoop and John Burke, “Running a Perfect Website”, QUE, 2nd
Edition, 1999.
4.Chris Bates, “Web Programming – Building Intranet Applications”, 3rd Edition,
Wiley Publications, 2009.
5.Gopalan N.P. and Akilandeswari J., “Web Technology”, Second Edition, Prentice
Hall of India, 2014.
6.https://infyspringboard.onwingspan.com/web/en/app/toc/
lex_auth_013382690411003904735_shared/overview
7.https://infyspringboard.onwingspan.com/web/en/app/
toc/lex_auth_0130944214274703362099_shared/overview
18. MINI PROJECT SUGGESTION
Topics suggested:
10. Online Complaint Registration and Management System: Street Light, Water
Pipe Leakage, Rain Water Drainage, Road Problem , etc.
Thank you
Disclaimer:
This document is confidential and intended solely for the educational purpose of RMK Group of
Educational Institutions. If you have received this document through email in error, please notify
the system manager. This document contains proprietary information and is intended only to the
respective group / learning community as intended. If you are not the addressee you should not
disseminate, distribute or copy through e-mail. Please notify the sender immediately by e-mail if
you have received this document by mistake and delete this document from your system. If you
are not the intended recipient you are notified that disclosing, copying, distributing or taking any
action in reliance on the contents of this information is strictly prohibited.