Lecture 11

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/67

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 6:37 PM on 5/29/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

68 Terms

1
New cards

Why is software change inevitable?

  • New Requirements emerge when the forward is Used

  • The Business Environment changes

  • Errors must be Repaired

  • New Equipment is added to the System

  • Organizations have Huge Investments in their software Systems

  • Assets Have Value that needs to be Maintained through changes and updates

  • A key problem for organizations is Implementing and Managing change to their existing Software

2
New cards

What is software Maintenance and Evolution?

  • Modifying a Program after it has been Put Into Use

  • Maintenance is used for changing Custom software

  • Generic software products are said to Evolve to create new Versions

  • Maintenance Does Not Involve Major Changes to System’s Architecture

3
New cards

What are the 3 types of maintenance?

  • Fault Repairs

  • Environmental Adaptation

  • Functionality Addition and Modification

4
New cards

What are Fault Repairs?

Changing a system to Fix Bugs/ Vulnerability and correct Deficiencies in meeting Requirements (24%)

5
New cards

What is Environmental Adaption?

Adapting software to Operate in Different Environment from its Initial implementation (19%)

6
New cards

What is Functionality Addition and Modification?

Modifying the system to Satisfy New Requirements (58%)

7
New cards

What are maintenance costs?

  • it is usually More Expensive to add new features to a system During Maintenance than it is to add the same feature during Development

  • A New Team has to Understand the Programs being Maintained

  • Separating maintenance and development teams means there is No Incentive for the Development Team to write Maintainable Software

  • Handover Problems emerge when the Development Team uses an Agile approach but the Evolution Team is Unfamiliar with agile and expect Detailed Documentation to support evolution

  • Program maintenance work is unpopular

8
New cards

What is Change Prediction?

  • Predicting the Number of Changes requires an Understanding of the Relationships between a System and its Environment

  • Tightly Coupled Systems requires Changes whenever the Environment Changes

9
New cards

What are the 3 factors that affect the relationship between tightly coupled systems and environment changes?

  • Number and Complexity of system Interface

  • Number of Volatile system Requirements

  • The Business Processes where the system Is Used

10
New cards

What is Refactoring?

  • Improving your code Style Without Altering Its Behavior

  • Making Improvements to a Program to slow down Degradation through Change

  • “Preventive Maintenance”that reduce the Problems of Future Changes

  • When you refactor a program, You Should Not Add Functionality but rather Concentrate on program Improvement

11
New cards

What are Code Smells?

Certain Structures in code that Indicate Violation of fundamental design Principles and negatively impact Design Quality

12
New cards

What are the 8 things in the Catalog of Bad Smells?

  • Duplicate Code (App-Level)

  • Long Methods (Method-Level)

  • Data Clump (Class-Level)

  • Speculative Generality (App-Level)

  • Large Class (Class-Level)

  • Complex Switch or if Statements (Class-Level)

  • Feature Envy (Method-Level)

  • Inappropriate Intimacy (Class-Level)

13
New cards

What is Duplicate Code and what is the Solution for it?

  • The Same or very similar Code may be Included at Different Places in a program

  • Remove and Implement as a Single method or function that is called As Required

14
New cards

What are Long Methods and what is the Solution for it?

Hotel California System

  • Developer Adds to method but does not Remove Code

  • Redesign as number of Shorter Methods

15
New cards

What is Data Clump and what is the Solution for it?

  • Same group of Data Items Re-Occur in several places in App Code

  • Replace with class that Encapsulates all of the Data

16
New cards

What is Speculative Generality and what is the Solution for it?

  • Developers include Unused generality in a program in case it is Required in the Future

  • Simply Remove

17
New cards

What is Large Class and what is Solution for it?

  • App Grows and with it Class Grows in functionality

  • Refer to single responsibility principle and extract a new class, interface, or subclass

18
New cards

What is Complex Switch or if Statements and what is the Solution for it?

Replace with Subclasses or Strategy Patterns, or us Polymorphism

19
New cards

What is Feature Envy and what is its Solution?

  • A method Accesses Data from an object Different from the object to which the Method Belongs more than Its Own Object

  • Move Methods or Parts of Methods that Frequently Accesses that data

20
New cards

What is Inappropriate Intimacy and what is the Solution for it?

  • Class Refers to much to Private Fields/Methods of Other Classes

  • Move Method / Field, or maybe revert from Delegation back to Inheritance

21
New cards

What is Software Evolution?

  • Continuation of the Development Process based on Frequent System Releases

  • Automated Regression Testing is valuable when changes are made

22
New cards

What are the 3 phases of evolution?

  • Evolution

  • Servicing

  • Phase - Out

23
New cards

What is Evolution Phase?

Software is in Operational Use and is Evolving as new requirements are Proposed and Implemented in the System

24
New cards

What is the Servicing phase?

Software is Mature and Useful, and the only Change made one to Fix Bugs and Respond to changes in the softwares environment but No New Features

25
New cards

What is the Phase - Out phase?

Software may still be Used but no Further Change are made to it

26
New cards

What is Configuration Management?

  • Concerned with How to Manage Change in software systems that is the Result of Evolution

  • The policies, procedures and tools used to keep track of the many Different Version of each software component

27
New cards

What are the 6 things that might happen if you don’t use Configuration Management?

  • You are not keeping track of Changes

  • You won’t know When Features are Added

  • You won’t know When Bugs were Introduced or Fixed

  • You won’t be able to go back to Old Versions

  • There is only One Version of the System : this one

  • You would have No Safety Net

28
New cards

What does Configuration Management do?

Support the system integration process so that all developers can

  • Access the project code and documents in a Controlled Way

  • Find out What Changes Have Been Made, and compile and link components to create a system

29
New cards

What are the 4 configuration management activities?

  • Version Management

  • System Building

  • Change Management / Issue Tracking

  • Release Management

30
New cards

What is Version Management ??

  • Keep track of the different Versions of Software Components

  • Coordinate development by Several Programmers

31
New cards

What is System Building?

  • Assemble Program Components, Data and Libraries then compile them to create an Executable System

32
New cards

What is Change Management / Issue Tracking?

  • Keep track of Requests for changes to the software from Customers and Developers

  • Work out the Costs and Input of changes. And decide which changes should be Implemented

33
New cards

What is Release Management?

  • Prepare software for External Release

  • Keep track of Versions that have been Released for Customer Use

34
New cards

What are Version Control Centers?

  • Tools / Apps that manage Changes applied to a Set of Files

  • A change to a set of files that gets Checked In is called a “Commit”

  • Revisions or changes are Identifiable by a Code and a Timestamp

  • Distributed Version Control provides Backup mechanism for code repo and allows Offline Work capabilities

  • Git is the most well known distributed Version Control System

  • CM systems handle Checking out (Clone) the latest version of the system, Making Changes and Checking changes back in

  • Duplicates of code under version control from parallel lines or “Branches”

35
New cards

What is a Trunk and what is a Tag?

  • A Trunk is the project Baseline / mainline / master

  • A Tag is a Label for a Baseline

36
New cards

What are branches?

  • Branches can later “Merge” back onto parent Branch

  • Integrate changes and resolve Conflicts

  • Support Bug Fixes and Exploration

  • Git branches are quick to create, so “Branch Early and Branch Often”

37
New cards

What is System Building?

  • When your software project is Complex, you need to write a Build Script to Automate the Build Tasks

  • Write once, run whenever needed

  • Stabilizes build process throughout the project, detect when someone “Breaks the Build”

38
New cards

How to achieve Development, Build and Target Platforms?

  • Building tools and version control Tools must communication

  • Building checks out versions from Repo manage by Version Control System

  • Build Server is used to build Executable Versions of the system

  • Target Environment

39
New cards

What is a Target Environment?

  • The platform on which the system Executed

  • Smaller and Simpler than the Development environment

40
New cards

What are the 2 phases in Agile Building?

  • Preparation

  • Update

41
New cards

What are the 4 aspects in Agile Building Preparation?

  • Check out the Mainline from version control system into Developers Private Workspace

  • Build and Tun automated tests to ensure that the built system Passes all the Tests

  • Make the changes to the system Components

  • Build the System in the private workspace and Rerun System Tests

42
New cards

What are the 3 aspects in Agile Building Update?

  • Once the system Passes its tests, check into the Build System but do not Commit it as a New System Baseline

  • Build the System on the Build Server and Run the Tests

  • If the system Passes its tests on the Build System, then Commit the changes you have made as a New Baseline in the system Mainline

43
New cards

What are Daily (Nightly) Builds?

  • The development organizations sets a Delivery Rime for system Components

  • If a system is very large, it may take a Long Time to Build and Test especially if the Integration with other application system is Involved

44
New cards

What is Continuous Integration?

  • In the beginning states of Development, it is easy to think of Deployment as an event that will happen in the Distant Future

  • Continuous integration fosters the principle of always being Production Ready

  • There’s always a running system

  • With that base, you can “Grow the System” adding features Incrementally, always ensuring that the system can be Run

45
New cards

What do you need to make continuous integration possible?

  • A Source Code Repository

  • A Check In Process

  • An Outdated Build Process

  • A willingness to Work Incrementally

46
New cards

What are the crucial elements for an app to be Production Ready?

  • Commitment to Building Tests

  • Never Break the Build

  • Version Control

47
New cards

What are the benefits of continuous integration?

  • Reduced Risk

  • Better Communication

  • Faster Iterations

  • Fast Feedback on Business Decisions

48
New cards

What is the 6 elements in the software development pipeline?

  • Commit code changes

  • Build artifacts

  • Code review and run all tests

  • Staging and production

  • Avoid Waste

  • Prioritization

49
New cards

What is Continuous Delivery (CD)?

Automate configuration of code base to push to staging environment

50
New cards

What is Continuous Deployment (also CD)?

Automate the whole release to production process

51
New cards

What is Continuous Integration (CI)?

  • Automate integration of code changes into mainline

  • Automate build for every version

  • Automate running of all tests

52
New cards

What are the 8 aspects in the Continuous Integration (CI) workflow?

  1. How to Execute

  2. Fetch latest code

  3. Build

  4. Execute tests (centralized)

  5. Results

  6. Software is packaged

  7. Release

  8. Feedback

53
New cards

What are the 3 CI platform options?

  • Circle CI

  • Travis CI

  • Jenkins CI

54
New cards

What are the 3 CD platform options?

  • GitLab

  • Jenkins

55
New cards

What is relationship between CI and code review?

  • CI server can be configured to perform Code Reviews and inform developer of review document

  • CI server is configured to Block a Commit to the Mainline if a minimum number of Reviewers didn’t Review code

  • Gerrit can be used (rating system +2, +1, 0, -1, -2)

56
New cards

What are the minimum reviewers?

Two reviewers

57
New cards

What is Release Management?

A System Release is a version of a software system that is distributed to customers

58
New cards

What are the 2 types of release management?

  • Mass Market Software

  • Custom software

59
New cards

What are the 2 types of releases for Mass Market Software?

  • Major Release

  • Minor Release

60
New cards

What does a Major Release contain?

New functionalities

61
New cards

What does a Minor Release contain?

Bugs and Fixes

62
New cards

What is the Release Management for Custom Software?

Different release for different customers

63
New cards

What are the 2 types of Release Timings?

  • Too frequent

  • Too infrequent

64
New cards

What is the problem with too frequent releases?

Customers may not Adopt to new releases

65
New cards

What is the problem of too Infrequent releases?

Market share may be Lost as customers Move To Alternative Systems

66
New cards

What are the 9 CI/ CD Practices?

  1. Maintain single source repository

  2. Automate the build

  3. Make your build self testing

  4. Every commit should build on an integration machine

  5. Keep the build fast

  6. Test in a clone of the production en environment

  7. Make it easy for anyone to get the latest executable version

  8. Everyone can see what’s happening

  9. Automate deployment

67
New cards

What are the 10 things to do CI and CD?

  1. Developers check out code into their private workspaces

  2. When done commit the changes to the repository

  3. The CI server monitors the repository and checks out changes when they occur

  4. The CI server build the system and runs uni and integrations tests

  5. The CI server releases deployable artifacts for testing

  6. The Ci server assigns a build label to the version of the code it just built

  7. The Ci server informs the team of a successful build

  8. If the build or tests fail the Ci server alerts the team

  9. The team fixes the issue at the earliest opportunity

  10. Continue to continually integrate and test throughout the project

68
New cards

What are the 5 Team Responsibilities when doing CI and CD?

  1. Check in frequently

  2. Don’t check in broken code

  3. Don’t check in untested code

  4. Don’t check when the build is broken

  5. Don’t go home after checking until the system builds