Topic 1 Flashcards

Modules and module complexity

1
Q

Define the term module in terms of computer programs and systems

  • SWEBOK (Software Engineering Body of Knowledge) & IEEE (Institute of Electrical and Electronics Engineers) have different perspective
A
  • An independent standalone unit or component
  • A discrete program that can compile, combine and load itself
  • Segment of code that can be logically separable
  • Set of files manipulated under a version control as one entity
  • Collection of data with routines/functions acting on it

A discrete program that can compile, combine with other programs, and load

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What does modularity refer to in software engineering?

A

The extent to which a system or program comprises discrete component parts such that a change in one component has minimal impact on another

  • Each unit is highly independent
    & focuses on specific task
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the benefits of modular programming according to David Parnas?

A
  • Flexibility
  • Comprehensibility
  • Shorter development cycle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Fill in the blank: Modular programming leads to a shorter development cycle because _______.

A

multiple teams can work concurrently on different components

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is module complexity?

A

The degree to which a program or software is difficult to understand due to numerous relationships and interactions amongst its components

  • Extent to which it is difficult to verify or understand its implementation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the relationship between modularity and complexity metrics?

A

Modularity decreases Fat and increases Tangle

  • Each module are more focused, but overall more interactions b/w modules
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is a desirable characteristic of a system regarding cohesion and coupling?

A

High cohesion within modules and low coupling between modules

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What does ‘Fat’ refer to in the context of module complexity?

A

How much is going on within a module

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What does ‘Tangle’ refer to in the context of module complexity?

A

How much does it interact with what is going on somewhere else

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is cyclomatic complexity?

A

A metric that measures the complexity of a program by counting the number of execution paths within a set of code (decision points)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

How is cyclomatic complexity affected by control flow statements?

A

It increases with the number of decision points in the code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is the definition of cohesion in software design?

A

The manner and degree to which the tasks performed by a single software module are related to one another

  • Strength of association
    ( complex rating: low/avg/high )
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What does coupling refer to in software design?

A

The manner and degree of interdependence between software modules

  • Strength of r/s b/w modules
  • How closely connected 2 routines are
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

True or False: High cohesion within a module is undesirable.

A

False

  • System is more maintainable, understandable & adaptable
  • Module is more robust & focused
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is the significance of measuring module complexity?

A

To ascertain the degree of complexity at a point

How well did you know this?
1
Not at all
2
3
4
5
Perfectly