Analysis II - Chapter - 10
Analysis II - Chapter - 10
An Awesome Introduction to
System Analysis and Design
Ian Sommerville
© BIS301 2023
Software support
• There are inevitable delays and overheads in the traditional support model.
• Agile software engineering reduced the development time for software, but the
traditional release process introduced a bottleneck between development and
deployment.
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.
DevOps automation
DevOps measurement
• 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.
• 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
• 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.
• Branching and merging are fundamental ideas that are supported by all
code management systems.
• 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
Master branch
Merge
Bob
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.
• After you have adopted DevOps, you should try to continuously improve
your DevOps process to achieve faster deployment of better-quality
software.
• 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.