isaqb-org / curriculum-foundation

iSAQB Curriculum for the CPSA - Foundation Level. This repository contains copyrighted work.
https://public.isaqb.org/
Other
59 stars 14 forks source link

LG 03-04 ?? (V2025) rewrite the LGs for coupling #415

Closed gernotstarke closed 1 month ago

gernotstarke commented 4 months ago

differentiate between at least the following categories of coupling:

mikesperber commented 4 months ago

@gernotstarke What Is [Ford+21]?

mikesperber commented 4 months ago

Aren't efferent and afferent coupling metrics?

https://en.wikipedia.org/wiki/Software_package_metrics

mikesperber commented 4 months ago

I'm all for clarifying what we mean by "different types of coupling"

gernotstarke commented 4 months ago

Aren't efferent and afferent coupling metrics?

https://en.wikipedia.org/wiki/Software_package_metrics

Yes Mike, one can measure these types of coupling (incoming, outgoing)... at least in theory. In practice, static versions of both can be measured, if they occur at runtime, you can only count calls in your logfile :-)

I like the distinction "who depends on me" and "who am I dependent on"...

gernotstarke commented 4 months ago

@gernotstarke What Is [Ford+21]?

"The Hard Parts": [Ford+21] Neal Ford, Mark Richards, Pramod Sadalage und Zhamak Dehghani: Software Architecture: The Hard Parts. Modern Trade-Off Analyses for Distributed Architectures. OReilly 2021.

alxlo commented 4 months ago

I like the distinction "who depends on me" and "who am I dependent on"...

Furthermore I like the distinctions:

gernotstarke commented 4 months ago

for binding time: [Ford+21] proposes "static vs dynamic" as top-level distinction. Then efferent/afferent.

all static deps are visible in code (per definition).

mikesperber commented 4 months ago

What would we suggest people do with this distinction?

alxlo commented 4 months ago

What would we suggest people do with this distinction?

Let them consider how this kind of coupling affects the qualities (especially maintainability, flexibility, understandability, testability, and analyzability) of their software system and its architecture and how changing them could benefit in achieving desired qualities or at least what kind of trade-offs they pose.

gernotstarke commented 4 months ago

those Microservice fanboys who still believe that getting rid of compile-time dependencies will make their lives easier... because they forgot to consider the consequences on dynamic coupling.

mikesperber commented 4 months ago

those Microservice fanboys who still believe that getting rid of compile-time dependencies will make their lives easier... because they forgot to consider the consequences on dynamic coupling.

I like that - but then let's make it explicit: "... know that forgoing static dependencies in favor of dynamic dependencies does not necessarily reduce the underlying coupling"

mikesperber commented 4 months ago

FLWG: Do this, with @mikesperber 's suggestion