Object-Oriented Programming

Software Architecture

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

System/Subsystem Design

systemdesign

System Decomposition

  • subsystem provides a set of services to the system
    • A set of related operations that share a common purpose
  • subsystem interface a set of services available to other systems
    • Application Programmer Interface (API) includes the names of operations, parameters/types, and return types
  • System design focuses on defining services

System/Subsystem Model

subsystem

Architectural Style

  • An architectural style defines a family of systems in terms of a pattern of structural organization
    • components, e.g., client, server, DB
    • connectors, e.g., procedure call, pipe, event broadcast
  • Consists of:
    • Vocabulary of components and connectors
    • Constraints on how they are combined

Common Architectural Styles

  • Dataflow Systems: Pipe and Filter, Batch Sequential
  • Virtual Machines: Rule-based Systems, Interpreters
  • Repository: Databases, Hypertext Systems, Blackboards
  • Independent Components: Peer-to-Peer, Client Server, Model/View/Controller, Event Driven
  • Call and Return Systems: Main Program and Subroutines, Layered Systems, Object-Oriented Systems

Pipe and Filter Architecture

  • Subsystems are called filters and associations between the filters are called pipes
  • Filters only know the content and format of data being received and produced, nothing about the other filters in the system
  • Filters execute concurrently with synchronization via pipes
  • Very reconfigurable
  • Transformational systems

Pipe and Filter Model

Pipe and Filter Examples

Batch Sequential Architecture

  • A small number of large stand-alone subsystems
  • Must be executed in a fixed sequential ordering (batch)
  • Typically work on large flat files, transforming the file into a new format or a new ordering so the next subsystem can work on the data
  • The shared, specific file tightly couples the subsystems
  • No realtime feedback, no concurrency

Batch Sequential Model

Batch Sequential Model

Batch Sequential Model

Layered Architecture

  • Hierarchical decomposition of a system into subsystems (layers) with each providing a higher level of services provided from lower-level subsystems
  • closed architecture each layer can only depend on the layer immediately below
  • open architecture each layer can access any layer below

Closed Architecture: OSI Network Model

Open Architecture: Motif Library

Repository Architecture

  • Subsystems are independent and interact by a central repository
  • Examples: Payroll or banking system, Modern IDE/Compiler, Blackboard

Repository: IDE

Model/View/Controller

  • Subsystems
    • model subsystems are responsible for maintaining domain knowledge
    • view subsystems are for displaying knowledge to the user
    • controller subsystems manage the interactions with the user
  • Model subsystems do not depend on view or controllers.
  • Changes in model state propagate via a subscribe-notify protocol
  • Examples: File system, database

MVC

Client/Server Architecture

  • Subsystems:
    • Server provides one or more services to instances of clients
    • Clients ask for services and clients interact with users
  • An information system with a central DB is an example
  • Web servers (multiple servers)

Client/Server Model

Peer-to-Peer Architecture

Peer-to-Peer Architecture

  • Generalization of client/server, clients can be servers and vice versa
  • The control flow of each subsystem is independent of others except for the synchronization of requests.

Virtual Machine Architecture

Process Control Architecture

Event-driven Architecture

Plug-In Architecture