CIS 573 Fall 2012
Study Guide for Nov 19 quiz
M. Fowler, Refactoring: Improving the Design of Existing Code, Chapter 3: Bad Smells in Code
You should understand the following "code smells" discussed in the lecture and example:
M. Fowler, Refactoring: Improving the Design of Existing Code, Chapter 6: Composing Methods and Chapter 7: Moving Features Between Objects
- Duplicated Code
- Long Method
- Large Class
- Primitive Obsession
- Message Chain
You should understand the following refactoring patterns/techniques discussed in the lecture and example:
F. Tsui & O. Karam, Essentials of Software Engineering, chapter 8: Design Characteristics and Metrics (PDF available in Blackboard)
- Extract Method
- Pull-Up Method
- Move Method (not discussed in class, but kind of obvious!)
- Move Field (this, too!)
- Extract Class
- Hide Delegate
R.V. Binder, "Design for testability in object-oriented systems"
- How is McCabe's cyclomatic complexity defined?
- How is Halstead volume computed? What about Halstead difficulty, effort, time, and bugs?
- Do these metrics seem appropriate for object-oriented languages like Java?
- What are the different levels of cohesion? What are the different levels of coupling?
- Define the following metrics: Weighted Methods per Class; Depth of Inheritance Tree; Number of Children; Coupling Between Object Classes; Response for a Class; Lack of Cohesion of Methods
- How can each of those be measured? How do they relate to "internal quality"?
- What are the six factors that influence the testability of a design?
- What is meant by the "traceability" of a software design?
- What object-oriented metrics reflect the testability of a design? What is the difference between "scope metrics" and "complexity metrics"?
- What is meant by "fault sensitivity"? How is it related to testability?
- What sorts of features need to be added to a class to achieve Built-In Test (BIT) capability? What are some of the disadvantages of doing so?
- What is the difference between "ad hoc DFT" and "structured DFT"?
Updated: Sat, Nov 11, 2:04pm