Software Engineering Methodologies

Software Architecture

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

System/Subsystem Design

System Decomposition

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

System/Subsystem Model

Architectural Style

An architectural style defines a family of systems in terms of a pattern of structural organization of components and connectors

  • components, e.g., client, server, DB
  • connectors e.g., procedure call, pipe, event broadcast
  • Style 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 Examples

Batch Sequential Architecture

  • 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 file format or changing the existing data so the next subsystem can work on the data
  • The shared file causes the subsystems to be tightly coupled
  • No real-time feedback, no concurrency

Batch Sequential Model

Layered Architecture

  • AKA, n-tiered architecture
  • Hierarchical decomposition of a system into subsystems (layers), with each providing a higher level of services implemented using lower-level subsystems

Closed Layered Architecture

  • closed architecture each layer can only depend on the layer immediately below

Closed Layered Architecture

OSI Network Model

Open Layered Architecture

Open Layered Architecture

Motif Library

Layered Architecture Analysis

Characteristic Rating
Overall Agility Low
Ease of Deployment Low
Testability High
Performance Low
Scalability High
Ease of Development High

Repository Architecture

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

Repository: IDE

Model/View/Controller

  • Subsystem: model responsible for maintaining domain knowledge
  • Subsystem: view displaying knowledge to the user
  • Subsystem: controller 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

Client/Server Architecture

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

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

Event-Driven Architecture: Mediator Topology

Event-Driven Architecture: Mediator Topology

Event-Driven Architecture: Broker Topology

Event-Driven Architecture Analysis

Characteristic Rating
Overall Agility High
Ease of Deployment High
Testability Low
Performance High
Scalability High
Ease of Development Low

Microkernel Architecture

  • AKA, Plug-In
  • Component: Core system
  • Component: plug-in modules

Microkernel Architecture

Microkernel Architecture Analysis

Characteristic Rating
Overall Agility High
Ease of Deployment High
Testability High
Performance High
Scalability Low
Ease of Development Low