Topic 1 Flashcards
Modules and module complexity
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
- 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
What does modularity refer to in software engineering?
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
What are the benefits of modular programming according to David Parnas?
- Flexibility
- Comprehensibility
- Shorter development cycle
Fill in the blank: Modular programming leads to a shorter development cycle because _______.
multiple teams can work concurrently on different components
What is module complexity?
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
What is the relationship between modularity and complexity metrics?
Modularity decreases Fat and increases Tangle
- Each module are more focused, but overall more interactions b/w modules
What is a desirable characteristic of a system regarding cohesion and coupling?
High cohesion within modules and low coupling between modules
What does ‘Fat’ refer to in the context of module complexity?
How much is going on within a module
What does ‘Tangle’ refer to in the context of module complexity?
How much does it interact with what is going on somewhere else
What is cyclomatic complexity?
A metric that measures the complexity of a program by counting the number of execution paths within a set of code (decision points)
How is cyclomatic complexity affected by control flow statements?
It increases with the number of decision points in the code
What is the definition of cohesion in software design?
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 )
What does coupling refer to in software design?
The manner and degree of interdependence between software modules
- Strength of r/s b/w modules
- How closely connected 2 routines are
True or False: High cohesion within a module is undesirable.
False
- System is more maintainable, understandable & adaptable
- Module is more robust & focused
What is the significance of measuring module complexity?
To ascertain the degree of complexity at a point