wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Design

Total questions: 85

Worksheet time: 43mins

Name
Class
Date
1.

Sommerville 2014

a)

As new software engineering techniques help us to build larger, more complex systems, the demands change. Systems have to be built and delivered more quickly. Larger, even more complex systems are required. Systems have to have new capabilities that were previously thought to be impossible.

b)

For every 25% increase in problem complexity, there is a 100% increase in complexity of the software solution.

c)

The aim of the design workflow is to refine the artifacts of the analysis workflow until the material is in a form that can be implemented by the programmers.

2.

Glass 2004

a)

For every 25% increase in problem complexity, there is a 100% increase in complexity of the software solution.

b)

As new software engineering techniques help us to build larger, more complex systems, the demands change. Systems have to be built and delivered more quickly. Larger, even more complex systems are required. Systems have to have new capabilities that were previously thought to be impossible.

c)

The aim of the design workflow is to refine the artifacts of the analysis workflow until the material is in a form that can be implemented by the programmers.

3.

UP Design Workflow

a)

a complex, iterative process. The initial design solution will likely be wrong and certainly not optimal.

b)

The aim of the design workflow is to refine the artifacts of the analysis workflow until the material is in a form that can be implemented by the programmers.

c)

The process of resolving a functional relationship into its constituent parts

4.

Architectural design – critical early decisions

a)

There is seldom one best design solution to a software problem.

b)

focus on nonfunctional requirements • decomposition into modules - module = function? class? package?

c)

a complex, iterative process. The initial design solution will likely be wrong and certainly not optimal.

5.

Design

a)

Code-and-fix Functional decomposition Structured programming Object-oriented programming, design, and requirements analysis Design patterns and tactics

b)

There is seldom one best design solution to a software problem.

c)

a complex, iterative process. The initial design solution will likely be wrong and certainly not optimal.

6.

Design is Iterative

a)

Top designers pursue a design solution not by working in an ordered and top-down (or even bottom-up) fashion, but by pursuing targets of important opportunity. And those targets of important opportunity are usually the difficult ones, the ones for which the designer sees no immediate solution. When expert designers got right down to the nitty-gritty of design work, their approaches turned out to be heuristic, trial and error.

b)

There is seldom one best design solution to a software problem.

c)

Code-and-fix Functional decomposition Structured programming Object-oriented programming, design, and requirements analysis Design patterns and tactics

7.

Design Choices

a)

The process of resolving a functional relationship into its constituent parts

b)

Code-and-fix Functional decomposition Structured programming Object-oriented programming, design, and requirements analysis Design patterns and tactics

c)

There is seldom one best design solution to a software problem. In a room of top software designers, if any two of them agree, that’s a majority. Bill Curtis. The design process is opportunistic.

8.

Evolving Design Strategies

a)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier (Yourdon 1979)

b)

The process of resolving a functional relationship into its constituent parts

c)

Code-and-fix Functional decomposition Structured programming Object-oriented programming, design, and requirements analysis Design patterns and tactics

9.

Functional Decomposition

a)

A module is any collection of executable program statements meeting all of the following criteria

b)

The process of resolving a functional relationship into its constituent parts

c)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier (Yourdon 1979)

10.

Functional Development types

a)

reductionism (vs holism) - decomposition, reductionism, stepwise refinement, divide and conquer, top-down design, etc. • hierarchy • modularity • information hiding - hide information about the design from other modules, at the points of difficulty or likely change - abstraction, encapsulation

b)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier

c)

A module is any collection of executable program statements meeting all of the following criteria:

11.

D.L. Parnas

a)

On the Criteria to be Used in Decomposing Systems into Modules,” Communications of the ACM, December 1972.

b)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier

c)

A module is any collection of executable program statements meeting all of the following criteria

12.

Yourbon 1979

a)

A module is any collection of executable program statements meeting all of the following criteria

b)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier

c)

avoid tests and gotos that lead to "spaghetti code"

13.

Myers 1978

a)

avoid tests and gotos that lead to "spaghetti code"

b)

A lexically contiguous sequence of program statements, bounded by boundary elements, with an aggregate identifier

c)

A module is any collection of executable program statements meeting all of the following criteria

it is a closed subroutine • it can be called from any other module in the program • it has the potential of being independently compiled

14.

Structured Programming

a)

avoid tests and gotos that lead to "spaghetti code

b)

A programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures, for and while loops

c)

The art of designing the components of a system and the interrelationships between those components in the best possible way

15.

McCracken

a)

it was the use of the three basic control structures, single-entry/single-exit modules, and the use of indented code.

b)

the use of the three basic control structures, short routine lengths, and indented coding.

c)

the three basic control structures, application of management techniques to top-down design and implementation, and levels of abstraction.

d)

"a top-down sequence for program unit creation and testing, and a technical standard for the coding of each unit

16.

Donaldson

a)

the use of the three basic control structures, single-entry/single-exit modules, and the use of indented code.

b)

"a top-down sequence for program unit creation and testing, and a technical standard for the coding of each unit

c)

as the use of the three basic control structures, short routine lengths, and indented coding.

d)

it as the three basic control structures, application of management techniques to top-down design and implementation, and levels of abstraction.

17.

Miller and Lindamood

a)

"a top-down sequence for program unit creation and testing, and a technical standard for the coding of each unit

b)

the three basic control structures, application of management techniques to top-down design and implementation, and levels of abstraction.

c)

as the use of the three basic control structures, short routine lengths, and indented coding.

d)

s the use of the three basic control structures, single-entry/single-exit modules, and the use of indented code.

18.

Baker and Mills

a)

"a top-down sequence for program unit creation and testing, and a technical standard for the coding of each unit

b)

the three basic control structures, application of management techniques to top-down design and implementation, and levels of abstraction.

c)

the use of the three basic control structures, short routine lengths, and indented coding.

d)

the use of the three basic control structures, single-entry/single-exit modules, and the use of indented code.

19.

Yourbon 1979

a)

The structure of a product must conform to the structure of its data

b)

The art of designing the components of a system and the interrelationships between those components in the best possible way The process of deciding which components interconnected in which way will solve some well-specified problem.

c)

Any algorithm can be expressed using only three control structures. • executing one subprogram, and then another subprogram (sequence) • executing one of two subprograms according to the value of a Boolean expression (selection) • executing a subprogram until a Boolean expression is true (iteration)

20.

Structured Design includes

a)

the use of the three basic control structures, single-entry/single-exit modules, and the use of indented code.

b)

The art of designing the components of a system and the interrelationships between those components in the best possible way. The process of deciding which components interconnected in which way will solve some well-specified problem.

c)

Using three control structures (sequential, iteration, selection) • Single entry / single exit - Does not use GOTOs • Indented code • Short functions (fit on 1-2 pages) • High cohesion, low coupling, …

21.

Bohm-Jacopini Theorem

a)

The structure of a product must conform to the structure of its data

b)

Any algorithm can be expressed using only three control structures. • executing one subprogram, and then another subprogram (sequence) • executing one of two subprograms according to the value of a Boolean expression (selection) • executing a subprogram until a Boolean expression is true (iteration)

c)

has never been as popular as operationoriented design • with the rise of OOD, data-oriented design has largely fallen out of fashion

22.

Basic Principle

a)

The structure of a product must conform to the structure of its data

b)

• has never been as popular as operationoriented design • with the rise of OOD, data-oriented design has largely fallen out of fashion

23.

Three similar methods - output oriented analysis

a)

Michael Jackson [1975] • Jean-Dominique Warnier [1976] • Kenneth Orr [1981]

b)

The structure of a product must conform to the structure of its data

c)

• has never been as popular as operationoriented design • with the rise of OOD, data-oriented design has largely fallen out of fashion

24.

Data-oriented design

a)

The structure of a product must conform to the structure of its data

b)

• has never been as popular as operationoriented design • with the rise of OOD, data-oriented design has largely fallen out of fashion

c)

Michael Jackson [1975] • Jean-Dominique Warnier [1976] • Kenneth Orr [1981]

25.

Object Oriented Programming

a)

aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

b)

Represents concepts as “objects” that have • data (attributes that describe the object) • associated procedures known as methods Objects are usually instances of classes. Data is accessed by calling specially written functions, commonly called methods. - Objects encapsulate their data within a set of functions designed to ensure that the data are used appropriately.

c)

Are packages of design decisions that have been found to work repeatedly in practice Have known properties that permit reuse Describe classes of design solutions • “chunk” design solutions into a single concept Patterns are found in practice by definition • one does not invent patterns – one discovers them • patterns spontaneously emerge in reaction to environmental conditions - as long as conditions change, new patterns will emerge

26.

Design Patterns

a)

Are packages of design decisions that have been found to work repeatedly in practice Have known properties that permit reuse Describe classes of design solutions • “chunk” design solutions into a single concept Patterns are found in practice by definition • one does not invent patterns – one discovers them • patterns spontaneously emerge in reaction to environmental conditions - as long as conditions change, new patterns will emerge

b)

Information hiding, low coupling, high cohesion are the foundation for the object-oriented paradigm. Represents concepts as “objects” that have • data (attributes that describe the object) • associated procedures known as methods Objects are usually instances of classes. Data is accessed by calling specially written functions, commonly called methods. - Objects encapsulate their data within a set of functions designed to ensure that the data are used appropriately.

c)

- aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

27.

Managing Intellectual Complexity

a)

aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

b)

solving ever more complex problems  building systems that can be maintained

c)

hide details that may change

28.

Divide and Conquer

a)

solving ever more complex problems  building systems that can be maintained

b)

aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

c)

hide details that may change

29.

Information Hiding

a)

solving ever more complex problems  building systems that can be maintained

b)

aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

c)

hide details that may change

d)

chunking into higher-level concepts

30.

High Cohesion

a)

Focused on one thing

b)

minimize interconnections

c)

chunking into higher-level concepts

31.

Low Coupling

a)

chunking into higher-level concepts

b)

focused on one thing

c)

minimize interconnections

32.

Three Universal Means of Reducing Complexity

a)

Partitioning the system into parts having identifiable and understandable boundaries

Representing the system as a hierarchy

Maximizing the independence among the parts of the system

b)

aka stepwise refinement, reductionism (vs wholism) - Comprehensible (Understandable) (Module size): small enough to understand (Miller’s Law 7 ± 2) - Separation of Concerns

c)

hide details that may change

33.

Partitioning the system into parts having identifiable and understandable boundaries

a)

Divide-and-conquer - Boundaries  Interfaces - Boundaries  Abstraction, Encapsulation

b)

Allows us to iteratively separate our ideas and to deal with increasing amounts of detail - Design tree

c)

Module independence - Low coupling

34.

Representing the system as a hierarchy

a)

Divide-and-conquer - Boundaries  Interfaces - Boundaries  Abstraction, Encapsulation

b)

Allows us to iteratively separate our ideas and to deal with increasing amounts of detail - Design tree

c)

Module independence - Low coupling

35.

Maximizing the independence among the parts of the system

a)

Divide-and-conquer - Boundaries  Interfaces - Boundaries  Abstraction, Encapsulation

b)

Allows us to iteratively separate our ideas and to deal with increasing amounts of detail - Design tree

c)

Module independence - Low coupling

36.

Module Independence

a)

The most important consideration in good design, and the single idea on which most of composite design is based, is the idea of high module independence. - To have achieved high independence, the system should have been partitioned so that if two components were not closely related, they would fall into separate partitions, and if two components were closely related, they would fall into the same partition. The key to successful program structuring, therefore, is maximizing module independence.

b)

recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly - aka stepwise refinement, decomposition, functional decomposition, top-down design, reductionism

c)

decompose until “simple enough”? - divided into modules small enough for the programmer to easily understand - one or two pages (no more than 100 lines of codes) is a reasonable rule of thumb - very small modules (less than 10 lines of code) are recommended by many experts

37.

Divide-and-Conquer

a)

recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly - aka stepwise refinement, decomposition, functional decomposition, top-down design, reductionism

b)

- decompose until “simple enough”? - divided into modules small enough for the programmer to easily understand - one or two pages (no more than 100 lines of codes) is a reasonable rule of thumb - very small modules (less than 10 lines of code) are recommended by many experts

c)

If the subtasks are not truly independent of one another, then we are not solving just the two subtasks – for in the solution of non-independent parts, we also are simultaneously dealing with some aspects of the other parts.

38.

How do you know when to stop?

a)

recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly - aka stepwise refinement, decomposition, functional decomposition, top-down design, reductionism

b)

decompose until “simple enough”? - divided into modules small enough for the programmer to easily understand - one or two pages (no more than 100 lines of codes) is a reasonable rule of thumb - very small modules (less than 10 lines of code) are recommended by many experts

c)

If the subtasks are not truly independent of one another, then we are not solving just the two subtasks – for in the solution of non-independent parts, we also are simultaneously dealing with some aspects of the other parts.

39.

Hierarchical Structure

a)

A hierarchical approach is an aid because it allows us to iteratively separate our ideas and to deal with increasing amounts of detail. Hierarchical structure • partial ordering (uses or depends on) between modules or programs • “design tree”

b)

A program that embodies Separation of Concerns well is called a modular program. • Modularity, and hence separation of concerns, is achieved by encapsulating information inside a section of code that has a well-defined interface. • Encapsulation is a means of information hiding. - Wikipedia “Separation of concerns” • Many other design principles derive from SoC

c)

“Clean” decomposition • every module is characterized by its knowledge of a design decision which it hides from all others • “information hiding” and its derivatives

40.

Separation of Concerns

a)

A hierarchical approach is an aid because it allows us to iteratively separate our ideas and to deal with increasing amounts of detail. Hierarchical structure • partial ordering (uses or depends on) between modules or programs • “design tree”

b)

A program that embodies Separation of Concerns well is called a modular program. • Modularity, and hence separation of concerns, is achieved by encapsulating information inside a section of code that has a well-defined interface. • Encapsulation is a means of information hiding. - Wikipedia “Separation of concerns” • Many other design principles derive from SoC

c)

“Clean” decomposition • every module is characterized by its knowledge of a design decision which it hides from all others • “information hiding” and its derivatives

41.

Clean Decomposition

a)

A hierarchical approach is an aid because it allows us to iteratively separate our ideas and to deal with increasing amounts of detail. Hierarchical structure • partial ordering (uses or depends on) between modules or programs • “design tree”

b)

A program that embodies Separation of Concerns well is called a modular program. • Modularity, and hence separation of concerns, is achieved by encapsulating information inside a section of code that has a well-defined interface. • Encapsulation is a means of information hiding. - Wikipedia “Separation of concerns” • Many other design principles derive from SoC

c)

“Clean” decomposition • every module is characterized by its knowledge of a design decision which it hides from all others • “information hiding” and its derivatives

42.

Information Hiding Principle

a)

The principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed • provide a stable interface which protects the remainder of the program from the implementation (the details that are most likely to change) • the ability to prevent certain aspects of a class or software component from being accessible to its clients

b)

Generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose

c)

define a procedure — extend the language • abstraction to functions (procedures, methods, routines, subroutines)

d)

designer thinks at the level of an abstract data type • abstraction to classes (abstract data types)

43.

Abstraction

a)

Generalization by reducing the information content of a concept or an observable phenomenon, typically in order to retain only information which is relevant for a particular purpose

b)

define a procedure — extend the language • abstraction to functions (procedures, methods, routines, subroutines)

c)

designer thinks at the level of an abstract data type • abstraction to classes (abstract data types)

44.

Procedural Abstraction

a)

define a procedure — extend the language • abstraction to functions (procedures, methods, routines, subroutines)

b)

designer thinks at the level of an abstract data type • abstraction to classes (abstract data types)

c)

Used to hide the values or state of a structured data object inside a class A language mechanism for restricting direct access to some of the object's components

45.

The fundamental of wrapping chunks of cohesive data with meaningful code. (Unhelkar 2017)

a)

localizes data and prevents them from being directly exposed to the rest of the system • enhances quality and reuse because the data are only accessible through calls to the operations (methods or functions) of a class

b)

the degree to which the elements of a module belong together - focusing on a single concept - cohesion measures the strength of relationship between pieces of functionality within a given module

c)

the manner and degree of interdependence between software modules - a measure of how closely connected two routines or modules are - the strength of the relationships between modules

46.

High Cohesion

a)

the degree to which the elements of a module belong together - focusing on a single concept - cohesion measures the strength of relationship between pieces of functionality within a given module

b)

the manner and degree of interdependence between software modules - a measure of how closely connected two routines or modules are - the strength of the relationships between modules

c)

The degree of interaction between two modules The degree of interdependence between software modules A measure of how closely connected two routines or modules are The strength of the relationships between modules

47.

Levels of Coupling

a)

The degree of interaction between two modules The degree of interdependence between software modules A measure of how closely connected two routines or modules are The strength of the relationships between modules

b)

5. Data coupling

4. Stamp coupling

3. Control coupling

2. Common coupling

1. Content coupling

c)

Two modules are data coupled if all parameters are homogeneous data items (simple parameters, or data structures all of whose elements are used by called module). - when modules share data through, for example, parameters - each datum is an elementary piece, and these are the only data shared (e.g., passing an integer to a function that computes a square root) (Wikipedia)

48.

Goodness of the Types of Coupling

a)

Data coupling is the only good kind of coupling. • maximizes information hiding • follows the principle of least privilege The other kinds of coupling compromise information hiding to one degree or another.

b)

A change in one module usually forces a ripple effect of changes in other modules. Assembly of modules may require more effort and/or time due to the increased inter-module dependency. A particular module may be harder to reuse and/or test because dependent modules must be included.

c)

the number of (non-unique) modules invoked by this module - high fan-out (more than about seven) suggests an overly complex class  bad (McConnell 2004) - Green zone -- Up to fan out 6 (Tockey 2018) - Yellow zone -- Fan out 7-9 - Red zone -- Fan out 10 or greater

49.

Disadvantages of High Coupling

a)

Data coupling is the only good kind of coupling. • maximizes information hiding • follows the principle of least privilege The other kinds of coupling compromise information hiding to one degree or another.

b)

A change in one module usually forces a ripple effect of changes in other modules. Assembly of modules may require more effort and/or time due to the increased inter-module dependency. A particular module may be harder to reuse and/or test because dependent modules must be included.

c)

the number of (non-unique) modules invoked by this module - high fan-out (more than about seven) suggests an overly complex class  bad (McConnell 2004) - Green zone -- Up to fan out 6 (Tockey 2018) - Yellow zone -- Fan out 7-9 - Red zone -- Fan out 10 or greater

50.

Fan out

a)

The number of modules invoked by this module

b)

the number of occurrences of other modules invoking this module

c)

number of other classes that is a class is coupled to

51.

Green zone

a)

Up to fan out 6(Tockey 2018)

b)

Fan out 7-9

c)

Fan out 10 or greater

52.

Yellow Zone

a)

Up to fan out 6(Tockey 2018)

b)

Fan out 7-9

c)

Fan out 10 or greater

53.

Red Zone

a)

Up to fan out 6(Tockey 2018)

b)

Fan out 7-9

c)

Fan out 10 or greater

54.

Fan in

a)

The number of (non-unique) modules invoked by this module

b)

the number of occurrences of other modules invoking this module

c)

number of other classes that a class is coupled to

55.

CBO(coupling between objects)

a)

number of other classes that a class is coupled to

b)

number of classes that directly inherit one class

c)

Maximum number of nodes between root and lowest node in the hierarchy

d)

number of methods a class is accessible to, including methods implemented in own class as well as methods accessible due to inheritance

56.

NOC(number of children)

a)

number of other classes that directly inherit one class

b)

number of other classes that a class is coupled to

c)

Maximum number of nodes between root and lowest node in the hierarchy

57.

DIT(Depth of Inheritance

a)

maximum number of nodes between root and lowest node in the hierarchy

b)

number of other classes that a class is coupled to

c)

number of classes that directly inherit one class

58.

RFC(Response for a class)

a)

number of methods a class is accessible to, including methods implemented in own class as well as methods accessible due to inheritance

b)

number of classes that directly inherit one class

c)

maximum number of nodes between root and lowest node in the hierarchy

59.

The degree of interaction within a module

a)

a measure of the strength of relationship between the methods and data of a class and some unifying purpose or concept served by that class (Wikipedia)

b)

• focusing on a single thing • having a single responsibility - knowing something - doing something

c)

the probability that a change scenario that affects a responsibility will also affect other (different) responsibilities - the higher the cohesion, the lower the probability that a given change will affect multiple responsibilities

60.

High Cohesion

a)

the probability that a change scenario that affects a responsibility will also affect other (different) responsibilities - the higher the cohesion, the lower the probability that a given change will affect multiple responsibilities

b)

• focusing on a single thing • having a single responsibility - knowing something - doing something

c)

a measure of the strength of relationship between the methods and data of a class and some unifying purpose or concept served by that class (Wikipedia)

61.

A measure of how strongly the responsibilities of a module are related (“unity of purpose”)

a)

a measure of the strength of relationship between the methods and data of a class and some unifying purpose or concept served by that class (Wikipedia)

b)

focusing on a single thing • having a single responsibility - knowing something - doing something

c)

- the probability that a change scenario that affects a responsibility will also affect other (different) responsibilities - the higher the cohesion, the lower the probability that a given change will affect multiple responsibilities

62.

A module has coincidental cohesion if

a)

when parts of a module are grouped because they are logically categorized to do the same thing even though they are different by nature (e.g. grouping all mouse and keyboard input handling routines) (Wikipedia)

b)

it performs multiple, completely unrelated actions.

c)

when parts of a module are grouped by when they are processed; the parts are processed at a particular time in program execution (e.g. a function which is called after catching an exception which closes open files, creates an error log, and notifies the user) (Wikipedia)

63.

A module has logical cohesion when

a)

it performs a series of related actions, one of which is selected by the calling module.

b)

it performs multiple, completely unrelated actions.

c)

it performs a series of actions related in time.

64.

A module has temporal cohesion when

a)

it performs a series of related actions, one of which is selected by the calling module.

b)

it performs multiple, completely unrelated actions.

c)

it performs a series of actions related in time.

65.

A module has procedural cohesion if

a)

it performs a series of actions related in time.

b)

it performs a series of actions related by the procedure to be followed by the product

c)

it performs a series of related actions, one of which is selected by the calling module.

66.

A module has communicational cohesion if

a)

it performs a series of actions related by the procedure to be followed by the product, but in addition all the actions operate on the same data.

b)

it performs a series of actions related by the procedure to be followed by the product, but in addition all the actions operate on the same data.

c)

it performs a series of actions related in time.

67.

A module has information cohesion if

a)

It performs a number of actions, each with its own entry point, with independent code for each action, all performed on the same data structure.

b)

if it performs a series of actions related by the procedure to be followed by the product, but in addition all the actions operate on the same data.

c)

it performs a series of actions related by the procedure to be followed by the product.

68.

A module with functional cohesion

a)

Performs exactly one action

b)

More reusable

Corrective maintenance is easier

Easier to extend a product

c)

When parts of a module are grouped because the output from one part is the input to another part like an assembly

69.

Why is functional cohesion good

a)

it performs a number of actions, each with its own entry point, with independent code for each action, all performed on the same data structure

b)

When parts of a module are grouped because the output from one part is the input to another part like an assembly line

c)

More reusable

Corrective maintenance is easier

Easier to extend a product

70.

Sequential Cohesion

a)

logical cohesion

b)

communicational & sequential cohesion are good • functional & informational cohesion are superior

c)

which parts of a module are grouped because the output from one part is the input to another part like an assembly line

71.

Studies by Constantine, Yourdon, and McConnell indicate that

a)

communicational & sequential cohesion are good • functional & informational cohesion are superior

b)

logical cohesion

c)

temporal cohesion

d)

communication cohesion

72.

If you decompose around a flowchart

a)

Temporal cohesion

b)

communicational cohesion

c)

logical cohesion

73.

If you decompose with respect to time

a)

logical cohesion

b)

you get modules like initialize, Process, and Terminate

Temporal cohesion

c)

a start toward defining abstract data types

communicational cohesion

d)

Sequential Cohesion

74.

If you cluster functions which access a shared data base

a)

a start toward defining abstract data types

Communicational cohesion

b)

sequential cohesion

c)

logical cohesion

d)

You get modules like initialize, process, and terminate

TeTemporal cohesion

75.

If you decompose using a data flow diagram

a)

logical cohesion

b)

Sequential cohesion

c)

a start toward defining abstract data types

communicational cohesion

76.

Reduced module complexity

a)

simpler, having fewer operations

b)

Logical changes in the domain affect fewer modules

Changes in one module require fewer changes in other modules

c)

application developers will find the component they need more easily among the cohesive set of operations provided by the module

77.

Increased System Maintainability

a)

simpler, having fewer operations

b)

logical changes in the domain affect fewer modules

Changes in one module require fewer changes in other modules

c)

application developers will find the component they need more easily among the cohesive set of operations provided by the module

78.

Increased Module reusability

a)

application developers will find the component they need more easily among the cohesive set of operations provided by the module

b)

logical changes in the domain affect fewer modules

changes in one module require fewer changes in other modules

c)

application developers will find the component they need more easily among the cohesive set of operations provided by the module

79.

J.Visser, Building Maintainable Software: Ten Guidelines for Future Proof Code

a)

Too many parameters to a function suggests that the function is trying to do too much

Keep unit interfaces small by limiting the number of parameters on the function to no more than 4

b)

up to 4 parameters

c)

5 or 6 parameters

d)

7 or more

80.

Green Zone

a)

5 or 6 parameters

b)

up to 4 parameters

c)

7 or more

81.

Yellow Zone

a)

5 or 6 parameters

b)

7 or more

c)

up to 4 parameters

82.

Red Zone

a)

up to 4 parameters

b)

5 or 6 parameters

c)

7 or more

83.

Classification

a)

The ability of an instantiated object (at runtime) to understand and interpret the message sent from a calling object.

b)

is the starting point of object oriented paradigm

c)

results from classes being generalized into higher-level or abstracted classes.

84.

Inheritance

a)

results from classes being generalized into higher-level or abstracted classes

b)

The ability of an instantiated object to understand and interpret the message sent from a calling object

c)

Is the starting point of object oriented paradigm based on the requirements appearing in the problem space

85.

Corrective maintenance

a)

fixing defects

b)

changing environment-porting to new platforms

c)

improve performance or maintainability, including enhancements

d)

detect and correct latent faults in the software product refactoring!