The document discusses two software architecture styles: generalization and layered.
Generalization style uses inheritance to capture common properties between similar entities, emphasizing an "is-a" relationship. Modules in this style can inherit properties from parent modules to reduce complexity and enable reuse.
Layered style organizes modules into logical groupings or layers that build upon each other. Each layer provides well-defined services to layers above it, with dependencies only flowing downward between layers. This promotes modularity, portability, and information hiding.
Related topics: