Architectural reconstruction (2): Abstraction Flashcards

1
Q

Knowledge inference / abstraction: What approaches can be used?

A

Approach #1: Mapping Using Naming Conventions.
[..] if the mapping contains a rule about using naming conventions to
combine classes into modules, the resulting map lists each class and the
module to which it belongs.”

Ask Linux maintainers to:
1. draw dependencies between subsystems (as-expected architecture)
2. provide mappings from file names to subsystems
Recover the as-implemented module view.
Compare the as-implemented architecture with the as-expected architecture.
—————————————
Approach #2: Using the Folder Hierarchy for Aggregation.

Developers hierarchically organize files in folders. Let us use that!
1. Aggregate nodes
2. Aggregate dependencies
3. Show the aggregated dependencies & nodes
Advantages:
1. Works for most languages & most systems!
—————————————
Approach #3 (research!): Keep Only the Most Essential Elements Based on Network Analysis.

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

What is the Reflexion Model?

A

An architectural viewpoint that indicates where the source model and high-level model differ.
1. Convergences (refer to the points of similarity, agreement, or alignment among the elements being studied.)
2. Divergences (indicate differences, variations, or diverging paths among the elements being studied)
3. Absences (refer to the aspects or elements that are missing, not present, or overlooked within the context of the analysis)

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

What are software metrics and which two types of metrics exist?

A

A software metric is a measure of software characteristics which are
measurable or countable.

Types of metrics:
1. Product - measure the resulting product, e.g. source code
2. Process - measure the process, e.g. frequency of change

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

What product metrics exists for files?

A

Cyclomatic Complexity (aggregated from file level):
- number of linearly independent code paths through source code
(functions of the number of branches)
- often used in quality: too much complexity is a bad thing
- hidden partially by polymorphism

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

Which product metrics exist for modules?

A

Size (Aggregated from file level) such as LOC and NOM (number of methods)

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

Which product metrics exist for dependencies?

A
  • Total count of explicit low-level dependencies
  • Number of distinct explicit low-level dependencies
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is the importance of dependencies?

A

To tell the story of a module view we need
-subjects - the modules in the view
-actions - the meanings of the dependencies
————–

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