0% found this document useful (0 votes)
36 views17 pages

Analysis II - Chapter - 10

This document provides an overview of code management and DevOps. It discusses how traditionally separate teams handled software development, release, and support, and how DevOps aims to improve on this by having development and operations teams work more closely together. It also covers key aspects of code management like version control, branching, merging, and distributed version control systems like Git.

Uploaded by

fyfyg411
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views17 pages

Analysis II - Chapter - 10

This document provides an overview of code management and DevOps. It discusses how traditionally separate teams handled software development, release, and support, and how DevOps aims to improve on this by having development and operations teams work more closely together. It also covers key aspects of code management like version control, branching, merging, and distributed version control systems like Git.

Uploaded by

fyfyg411
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

BIS301

An Awesome Introduction to
System Analysis and Design

Some contents of the lecture notes


are taken from

Ian Sommerville

DevOps and Code Management © BIS301 2023


DevOps and Code Management

© BIS301 2023
Software support

• Traditionally, separate teams were responsible software development,


software release and software support.

• The development team passed over a ‘final’ version of the software to a


release team. This team then built a release version, tested this and
prepared release documentation before releasing the software to
customers.

• A third team was responsible for providing customer support.

• The original development team were sometimes also responsible for


implementing software changes.

• Alternatively, the software may have been maintained by a separate


‘maintenance team’.

DevOps and Code Management © BIS301 2023 3


Figure 10.1 Development, release and support

Figure 10.1 Development, release and support

Problem and bug


reports

Development Release Support

Tested software Deployed software


ready for release ready for use

DevOps and Code Management © BIS301 2023 4


DevOps

• There are inevitable delays and overheads in the traditional support model.

• To speed up the release and support processes, an alternative approach


called DevOps (Development+Operations) has been developed.

• Three factors led to the development and widespread adoption of DevOps:

• Agile software engineering reduced the development time for software, but the
traditional release process introduced a bottleneck between development and
deployment.

• Amazon re-engineered their software around services and introduced an approach


in which a service was developed and supported by the same team. Amazon’s
claim that this led to significant improvements in reliability was widely publicized.

• It became possible to release software as a service, running on a public or private


cloud. Software products did not have to be released to users on physical media or
downloads.

DevOps and Code Management © BIS301 2023 5


Figure 10.2 DevOps

DevOps and Code Management © BIS301 2023 6


Table 10.1 DevOps principles

Everyone is responsible for everything


All team members have joint responsibility for developing, delivering and
supporting the software.

Everything that can be automated should be automated


All activities involved in testing, deployment and support should be automated if it
is possible to do so. There should be mimimal manual involvement in deploying
software.

Measure first, change later


DevOps should be driven by a measurement program where you collect data
about the system and its operation. You then use the collected data to inform
decisions about changing DevOps processes and tools.

DevOps and Code Management © BIS301 2023 7


Table 10.2 Benefits of DevOps

Faster deployment
Software can be deployed to production more quickly because communication
delays between the people involved in the process are dramatically reduced.

Reduced risk
The increment of functionality in each release is small so there is less chance of
feature interactions and other changes causing system failures and outages.

Faster repair
DevOps teams work together to get the software up and running again as
soon as possible. There is no need to discover which team were
responsible for the problem and to wait for them to fix it.

More productive teams


DevOps teams are happier and more productive than the teams involved in the
separate activities. Because team members are happier, they are less likely to
leave to find jobs elsewhere.

DevOps and Code Management © BIS301 2023 8


Code management

• During the development of a software product, the development team


will probably create tens of thousands of lines of code and automated
tests.

• These will be organized into hundreds of files. Dozens of libraries may


be used, and several, different programs may be involved in creating and
running the code.

• Code management is a set of software-supported practices that is used


to manage an evolving codebase.

• You need code management to ensure that changes made by different


developers do not interfere with each other, and to create different
product versions.

• Code management tools make it easy to create an executable product


from its source code files and to run automated tests on that product.

DevOps and Code Management © BIS301 2023 9


Figure 10.3 Code management and Devops
Figure 10.3 Code management and DevOps

DevOps automation

Continuous Continuous Continuous Infrastructure


integration deployment delivery as code

Code management system

Branching and merging


Recover Save and
version Code retrieve
information repository versions

Transfer code to/from developer’s filestore

DevOps measurement

Data Data Report


collection analysis generation

DevOps and Code Management © BIS301 2023 12


Code management fundamentals

• Code management systems provide a set of features that support four


general areas:

• Code transfer Developers take code into their personal file store to work on it
then return it to the shared code management system.

• Version storage and retrieval Files may be stored in several different versions
and specific versions of these files can be retrieved.

• Merging and branching Parallel development branches may be created for


concurrent working. Changes made by developers in different branches may be
merged.

• Version information Information about the different versions maintained in the


system may be stored and retrieved

DevOps and Code Management © BIS301 2023 13


Git

• In 2005, Linus Torvalds, the developer of Linux, revolutionized source


code management by developing a distributed version control system
(DVCS) called Git to manage the code of the Linux kernel.

• This was geared to supporting large-scale open source development. It


took advantage of the fact that storage costs had fallen to such an extent
that most users did not have to be concerned with local storage
management.

• Instead of only keeping the copies of the files that users are working on,
Git maintains a clone of the repository on every user’s computer

DevOps and Code Management © BIS301 2023 16


Benefits of distributed code management

• Resilience

• Everyone working on a project has their own copy of the repository. If the shared
repository is damaged or subjected to a cyberattack, work can continue, and the
clones can be used to restore the shared repository. People can work offline if they
don’t have a network connection.

• Speed

• Committing changes to the repository is a fast, local operation and does not need data
to be transferred over the network.

• Flexibility

• Local experimentation is much simpler. Developers can safely experiment and try
different approaches without exposing these to other project members. With a
centralized system, this may only be possible by working outside the code
management system.

DevOps and Code Management © BIS301 2023 18


Branching and merging

• Branching and merging are fundamental ideas that are supported by all
code management systems.

• A branch is an independent, stand-alone version that is created when a


developer wishes to change a file.

• The changes made by developers in their own branches may be merged to


create a new shared branch.

• The repository ensures that branch files that have been changed cannot
overwrite repository files without a merge operation.

• If Alice or Bob make mistakes on the branch they are working on, they can easily
revert to the master file.

• If they commit changes, while working, they can revert to earlier versions of the
work they have done. When they have finished and tested their code, they can then
replace the master file by merging the work they have done with the master branch

DevOps and Code Management © BIS301 2023 20


Figure 10.7 Branching and merging
Figure 10.7 Branching and merging

Feature experiment branch


Alice

Master branch
Merge

Bob

Bug fix branch

DevOps and Code Management © BIS301 2023 21


Figure 10.5 Aspects of DevOps automation

Continuous integration
Each time a developer commits a change to the project’s master branch, an
executable version of the system is built and tested.

Continuous delivery
A simulation of the product’s operating environment is created and the
executable software version is tested.

Continuous deployment
A new release of the system is made available to users every time a change is
made to the master branch of the software.

Infrastructure as code
Machine-readable models of the infrastructure (network, servers, routers, etc.) on
which the product executes are used by configuration management tools to build
the software’s execution platform. The software to be installed, such as
compilers and libraries and a DBMS, are included in the infastructure model.

DevOps and Code Management © BIS301 2023 23


DevOps measurement

• After you have adopted DevOps, you should try to continuously improve
your DevOps process to achieve faster deployment of better-quality
software.

• There are four types of software development measurement:

• Process measurement You collect and analyse data about your development,
testing and deployment processes.

• Service measurement You collect and analyse data about the software’s
performance, reliability and acceptability to customers.

• Usage measurement You collect and analyse data about how customers use
your product.

• Business success measurement You collect and analyse data about how
your product contributes to the overall success of the business.

DevOps and Code Management © BIS301 2023 43

You might also like