Introduction to Software Architecture
Introduction to Software Architecture
• Data flow styles: Batch Sequence, Pipe & Filter, Process Control.
• Data Centered: Repository, Blackboard.
• Object-Oriented.
• Hierarchy: Layered, Virtual Machine, Main/Subroutine.
• Distributed: Multi-tier, Client/Server.
• Asynchronous Communication: Event-Based, Buffered Messaging.
• Interaction Oriented: MVC, PAC.
Quality Attributes
• Each architecture design has its advantages, disadvantages and
potential risk.
• Choosing the right architecture style to satisfy required quality
attributes is very important in addition to function satisfaction.
• Quality attributes are identified in the requirement analysis
process.
• Quality attributes are non-functional requirements and
represent the architectural constraints of the system. It
describes the intended behaviors of a system and measure its
suitability.
Quality Attributes are categorized
into three categories:
• 1. Implementation attributes (Not observable at run time)
• Interoperability – the universal accessibility and the ability to exchange data with internal
components and outside world.
• Testability – the degree to which the system facilitates the establishment of test cases, and low
risk of bugs and faults. It usually requires a complete set of documentation accompanied with
system design and implementation.
• Flexibility – The ease of modification of a system to cater to the environment or problems that
the system is originally not design for.
Con…
• Runtime attribute (observable at runtime)
• “Different software elements may run on different hardware and software platform and
be implemented in different programing language or on different software frameworks.”
Also
• “Two software elements can run in the same process, on the same computer system,
within an intranet, or distributed over the internet.”
Con..
• Thus, depending on their relative location, the connectors between a
pair of software elements can be implemented in various forms,
includes:
• Local method invocations
• Remote method invocation
• Service calls
• Messaging through a message Queue
At software development time, the main software elements are source code modules or
files. Each of these software modules will assigned functional and non-functional
attributes, and public APIs will be defined for each module to separate the interfaces and
implementations of a module.
The connector at this level are in the form of module dependency. Module A is connected
to module B if and only if A needs to invoke some method in module B during execution.
Con..
Such connectors have attributes including the following:
• Direction: If module A invokes a method of module B during execution, then
there is a unidirectional connector from module A to module B.
• Synchronization: A method invocation can be synchronous or asynchronous.
• Sequence: Some connector must be used in particular sequence.