+1(978)310-4246 credencewriters@gmail.com
  

discuss how you will manage version control for your developing product. Include the following.

What version method will you use?

What will be your version naming system?

How will you differentiate between a significant upgrade, a bug fix version, or introducing a minor feature change?

ITM 316
WEEK 8 DEPRECATION AND VERSION
CONTROL
This week we will be exploring:
• Code Deprecation
• Version Control
The focus will be understanding the vocabulary and
context.
This Photo by Unknown Author is licensed under CC BY-SA
CHAPTER 15 DEPRECATION
SOFTWARE ENGINEERING AT GOOGLE
Software change is inevitable
• Organizations have huge investments in their software systems – they are critical
business assets.
• Code itself is a liability – creating and maintaining code is an expense.
Code itself doesn’t bring value: it is the functionality that it provides that brings
value.
• To maintain the value of these assets to the business, they must be changed and
updated.
• The majority of the software budget in large companies is devoted to changing
and evolving existing software rather than developing new software.
• Change identification and evolution continues throughout the system lifetime.
• The orderly process of migrating away and removela of a system is called
deprecation
DEPRECATION – SHOULD BE PLANNED FROM THE START
• Planning for deprecation from the start reduces the costs later whe the software
should be retired
• Evolution
• The stage in a software system’s life cycle where it is in operational use and is evolving as new
requirements are proposed and implemented in the system.
• Servicing
• At this stage, the software remains useful but the only changes made are those required to keep it
operational i.e. bug fixes and changes to reflect changes in the software’s environment. No new
functionality is added.
• Phase-out → Retirement → Deprecation
• The software may still be used but no further changes are made to it.
DEPRECATION
• Maintenance – Usually greater than development costs (2* to
100* depending on the application).
• A new team has to understand the programs being maintained
• Separating maintenance and development means there is no incentive for the development
team to write maintainable software
• Program maintenance work is unpopular
• Maintenance staff are often inexperienced and have limited domain knowledge.
• As programs age, their structure degrades and they become harder to change
DEPRECATION
• Re-engineering takes place after a system has been maintained for some time and
maintenance costs are increasing.You use automated tools to process and reengineer a legacy system to create a new system that is more maintainable.
Reengineering can reduce risk and cost.
• Refactoring is a continuous process of improvement throughout the development
and evolution process. It is intended to avoid the structure and code degradation
that increases the costs and difficulties of maintaining a system. It is not meant for
adding functionality
• Not planning for deprecation may create dependencies on old systems that are
costly to maintain
WHY IS DEPRECATION SO HARD?
• Users are used to how the system works
• Need a newer system to replace the expected functionality along with new
functionality
• Emotional attachment
• Politics – why arey ou spending time on re-engineering and replacing it costs
too much and may damage our reputation
DEPRECATION DURING DESIGN
• Make design choices that allow for evolution or replacement
• Build in the ability to migrate and interface
• Build in the ability to replace incrementally
• Plan for the length of time the system will be supported
The chapter discusses how nuclear power plants are planned for
deprecation. Can you think of another example? Or a bad example?
VERSION
CONTROL
CHAPTER 16
VERSION CONTROL AND BRANCH
MANAGEMENT
Version control is absolutely necessary for all software development – we
started to explore this earlier in thebeginning of the code review process – so
as review:
• Code is written and patch is sent for code review
• The author comments in the code
• Code is sent to the reviewers – reviews diffs and comment
• If changes are needed the author makes those changes
• And the process starts again until the code passes. (LGTM) – Looks good to
me
• Author can commit the code
MULTI-VERSION SYSTEM
DEVELOPMENT
VERSION CONTROL
Version management can be thought of as the process of managing codelines and
baselines:
• A codeline is a sequence of versions of source code with later versions in the sequence
derived from earlier versions.
• Codelines normally apply to components of systems so that there are different versions
of each component.
• A baseline is a definition of a specific system.
• The baseline therefore specifies the component versions that are included in the system
plus a specification of the libraries used, configuration files, etc.
TYPES OF VERSION CONTROL SYSTEMS
• Version control (VC) systems identify, store and control access to the different
versions of components. There are two types of modern version control system
• Centralized systems, where there is a single master repository that maintains all versions of the
software components that are being developed. Subversion is a widely used example of a
centralized VC system. – A single source of truth.
• Distributed systems, where multiple versions of the component repository exist at the same time.
Git is a widely-used example of a distributed VC system. Can have many branches but is managed
as having one branch be the baseline as the single source of truth.
Why is version control important?
Why might you need different branches?

Purchase answer to see full
attachment

  
error: Content is protected !!