| There isn't a universally agreed-upon, exhaustive list of "types" of software architectures categorized solely by viewpoint and expression methods. The categorization is often overlapping and depends on the specific framework or methodology used. However, we can group architectural styles and descriptions based on how they are viewed and expressed: Based on Viewpoints (Concerns): 
- Data-centric architecture: Focuses on the structure and management of data. Viewpoints might include data models, data flows, and data storage strategies.
- Service-oriented architecture (SOA): Emphasizes reusable services. Viewpoints might include service contracts, service interactions, and service deployments.
- Microservices architecture: A specialized form of SOA with very small, independently deployable services. Viewpoints similar to SOA but with a strong emphasis on autonomy and independent scaling.
- Event-driven architecture: Centers around the production, detection, and consumption of events. Viewpoints include event streams, event processors, and event consumers.
- Space-based architecture: Distributes data and processing across a network of interconnected nodes. Viewpoints might include data distribution, node interactions, and fault tolerance mechanisms.
- Layered architecture (n-tier architecture): Organizes the system into distinct layers with specific responsibilities. Viewpoints might include layer interfaces, dependencies between layers, and data flow between layers.
- Pipe-and-filter architecture: Data flows through a series of processing stages (filters). Viewpoints focus on data transformation at each stage and the connection between filters.
- Client-Server architecture: A classic model with clients requesting services from a central server. Viewpoints often include client-side interactions, server-side processing, and communication protocols.
- Peer-to-Peer architecture: Nodes in the system act as both clients and servers. Viewpoints might include node connectivity, data sharing mechanisms, and distributed consensus algorithms.
Based on Expression Methods (Descriptions): 
- Architectural diagrams (various types): Component diagrams, deployment diagrams, sequence diagrams, state machine diagrams, etc., all express different aspects of the architecture.
- Architectural style descriptions: Formal or informal descriptions outlining the characteristics and constraints of a chosen architectural style.
- Architectural decision records (ADR): Documenting significant design choices and their rationale.
- Code-based architectures: Architectures expressed partially or wholly through code (e.g., using specific design patterns heavily).
It's crucial to understand that many architectures combine aspects from multiple categories above. For instance, a microservices architecture might be described using component diagrams (expression method) and focus on independent services (viewpoint). The choice of viewpoint and expression method depends on the specific needs of the project and the audience. There isn't a single, universally accepted name for an architecture explicitly describing entity relationships *and* their functions. However, terms like component-based architecture, functional architecture, or object-oriented architecture (if the entities are objects) come close, as they all address relationships between components and implicitly or explicitly incorporate functionality. More specific architectural styles, like microservices or layered architectures, might also incorporate this depending on how they are designed and documented. |