lec 6 software faul-proneness

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

1/34

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 12:44 AM on 5/5/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No analytics yet

Send a link to your students to track their progress

35 Terms

1
New cards
Why is fixing faults more expensive later in development?
Cost increases dramatically over time (e.g. up to 1000x more post-release)
2
New cards
What are software faults?
Defects or errors in software that cause incorrect or unexpected behaviour
3
New cards
What are the causes of software faults?
Incorrect requirements; Deviations from requirements; Logical coding errors; Testing inadequacies
4
New cards
Why are requirements a major cause of faults?
They may be incorrect, incomplete, or missing
5
New cards
What are types of requirement faults?
Incorrect definitions; Incomplete definitions; Missing requirements
6
New cards
How can ambiguous requirements be avoided?
Use measurable terms; Define performance metrics; Include examples; Validate with stakeholders
7
New cards
What is a deviation from requirements?
When implementation does not match specified requirements
8
New cards
Why do developers deviate from requirements?
Time pressure; Reuse of old code; Unapproved enhancements; Over-engineering
9
New cards
What are types of logical errors in coding?
Arithmetic; Control; Resource; Interface errors
10
New cards
Arithmetic errors (example)
Division by zero
11
New cards
Control errors (example)
Infinite loops
12
New cards
Resource errors (example)
Buffer overflow; Security violations
13
New cards
Interface errors (example)
Incompatible subsystems or mismatched interfaces
14
New cards
What are testing inadequacies?
Failures or weaknesses in the testing process
15
New cards
What are examples of testing inadequacies?
Incomplete test plans; Poor coverage; Missing boundary testing
16
New cards
What is line coverage?
Percentage of code lines executed during testing
17
New cards
What is branch coverage?
Percentage of decision branches executed during testing
18
New cards
What is fault density?
Number of faults divided by size of software
19
New cards
What factors affect interpretation of fault density?
Tester skill; Time spent testing; Severity/type of faults
20
New cards
Does low fault density mean good quality?
No, it may be due to poor testing or missed defects
21
New cards
What is Linus’ Law?
Given enough reviewers, bugs are easier to find
22
New cards
What is a limitation of Linus’ Law?
Too many reviewers give diminishing returns
23
New cards
What is Gall’s Law?
Complex systems evolve from simple working systems, not built from scratch
24
New cards
What are antipatterns?
Common but poor solutions that indicate deeper design problems
25
New cards
What are types of antipatterns?
Copy-paste; Poltergeist; Blob class; Frankencode; Broken windows; Duct tape coding
26
New cards
Copy-paste antipattern
Duplicated code leading to maintenance issues and widespread bugs
27
New cards
Poltergeist antipattern
Short-lived classes with little responsibility
28
New cards
Blob class antipattern
One large class handling too many responsibilities (violates SRP)
29
New cards
What are symptoms of a blob class?
Many fields; Many methods; Low cohesion; High coupling
30
New cards
Frankencode antipattern
Code pieces not designed to work together but forced into one system
31
New cards
Broken windows antipattern
Small issues left unfixed lead to overall code decay
32
New cards
Duct tape coder
Focuses on quick fixes without concern for quality or maintainability
33
New cards
What are debugging principles?
Fix one thing at a time; Question assumptions; Check recent changes; Use debugger; Break problems down; Check boundaries; Take breaks; Explain to others; Pair debug; Seek help
34
New cards
What is rubber duck debugging?
Explaining code line-by-line to identify issues
35
New cards
What is wolf fence debugging?
Divide problem repeatedly to isolate the issue (binary search approach)