0% found this document useful (0 votes)
12 views28 pages

Software Architecture Design Overview

The document discusses software architectural design, emphasizing its importance in evaluating system effectiveness and facilitating communication among stakeholders. It outlines various architectural models, including data-centered, data flow, call-and-return, object-oriented, and layered architectures, each with specific characteristics and examples. Additionally, it highlights the significance of partitioning in software architecture for easier testing, maintenance, and extension.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views28 pages

Software Architecture Design Overview

The document discusses software architectural design, emphasizing its importance in evaluating system effectiveness and facilitating communication among stakeholders. It outlines various architectural models, including data-centered, data flow, call-and-return, object-oriented, and layered architectures, each with specific characteristics and examples. Additionally, it highlights the significance of partitioning in software architecture for easier testing, maintenance, and extension.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Software Architectural Design

1
Architectural Design
The goal of the architectural
model
is to allow the software
engineer to view and evaluate
the system as a whole (as a
single unit) before moving to
component design.

Software architecture –
a framework made up of the
system structures that
comprises
a) the software components
(objects) with their properties,
and
b) the relationships (links)
among these components.

2
Why “Software Architecture”?

The architecture is not the operational software.

Rather, it is a type of representation that enables a software engineer to:


(1) analyze the effectiveness of the design in meeting its stated
requirements,
(2) consider architectural alternatives at a stage when making design
changes is still relatively easy, and
(3) reduce the risks associated with the construction of the software.

Analogy: Design of a house = rooms, floors, fire places, etc., but


there is still no information about specifics or details about furniture,
wallpapers, etc.
3
Why is Architectural Design Important?
 The architecture highlights early design decisions
that will have a profound impact on all software
engineering work that follows and, as important, on the
ultimate success of the system as an operational entity.
As a result,
- financial resources (project cost),
- human resources (people to be involved into
a project and their skills and qualifications)
- technological resources (hardware, software,
equipment, etc.)
- project timetable,
- project duration,
and other types of resources will be SIGNIFICANTLY
AFFECTED by selected software architecture.

 Representations of software architecture act as


enabler for communication between all parties
(stakeholders) interested in the development of a
computer-based system.

 Architecture “constitutes a relatively small, intellectually


graspable mode of how the system is structured and how
its components work together”.
4
Basic Architectural Models of Software Systems

1. Data centered data store (e.g., file or database) lies at the center
of this architecture and is accessed frequently by
other components that modify data

2. Data flow input data is transformed by a series of


computational or manipulative components into
output data

3. Call-and-Return program structure decomposes function into


control hierarchy with main program invokes
several subprograms

4. Object-oriented components of system encapsulate data and


operations, communication between components
is by message passing

5. Layered several layers are defined, each accomplishing


operations that progressively become closer to
the machine instruction set

5
1. Data-Centered Software Architecture

A data store resides at the center (usually, a huge database with millions and millions of records)
Client software accesses a central repository (with very easy adding/deleting a new client software)
It promotes integrability – new clients can be added and existing clients can be changes WITHOUT
concern about other clients.
Examples:
1) [Link] for online shopping (with a huge database of goods and millions of clients)
2) [Link] -- digital on-demand streaming media – audio, video – provider
3) Bradley University online library – a digital repository of files (papers, articles, books, etc.)
4) Wikipedia free encyclopedia developed collaboratively 6
2. Data-Flow Software Architecture (1)

This type is applied when input data are to be transformed through a series of computational
components into output data = “a pipe and filter” pattern
Ex # 1 : Taxes Calculator: a) Federal Taxes -> pipe # 1; b) State Taxes -> pipe # 2,
c) Local Taxes - pipe # 3, d) Other – pipe # 4, etc.
7
2. Data-Flow Software Architecture (2)

This type is applied when input data are to be transformed through a series of computational components
into output data = “a pipe and filter” pattern
Ex # 2: MS Windows XP, 7, 8, etc, Linux 3.13 -- multitasking operating systems: Task 1 (pipe 1), task 2
(pipe 2), etc. 8
2. Data-Flow Software Architecture (3)

Ex # 3: Solver of equations:
a) quadratic equations -> pipe # 1;
b) cubic equations -> pipe # 2,
c) ODEs – pipe # 3,
d) partial differential equations – pipe # 4, etc.
9
2. Data-Flow Software Architecture (4)

Ex # 4:
- adventure computer games
- exploratory computer games

-Ex 5: Google (search, translate, email, etc.)


10
3. “Call and Return” Software Architecture

Numeric Integration of ODEs (to


simulate mechanical, electrical,
hydraulic, thermal systems):

Ordinary differential equations

Nonlinear algebraic equations

Linear algebraic equations

LU-factorization

Gauss Method
This type is relatively easy can be modified and scaled.
Ex # 1: Main program – subprograms architectures in scientific research programs – solving of differential
equations.
Ex # 2: Distributed software systems – remote software components are distributed across multiple
11
computers on a network.
Call-and-Return procedures in
Distributed Networks, Services, Software Systems, DBs…

12
4. Object-Oriented Architecture
Encapsulation:

 Objects - encapsulate both data and data manipulation


procedures needed to describe the content and behavior
of a real world entity
 Class - generalized description (template or pattern) that
describes a collection of similar objects

Inheritance
provides a means for allowing subclasses to reuse
existing superclass data and procedures; also provides
mechanism for propagating changes

Abstraction:
provides operation of object and classes with different
type of information

Polymorphism
provides a mechanism that allows several objects in an
class hierarchy to have different methods with the same
name (instances of each subclass will be free to respond
to messages by calling their own version of the method)

13
Example: IBM Rational Modeler
14
Example: UMLet

15
Example: SmartDraw

16
Example: Microsoft Visual Studio

17
5. Layered Software Architecture
Layered operating systems Layered security systems OSI Model (networking)
(UNIX, Linux) (IP protocol-based)

This type usually represents software of operating systems – UNIX, Linux, etc.
At the outer layer, components serve user interface operations.
At the inner layer, components perform core operations.
Intermediate layers provide utility services and application software functions.
18
Other Types of SW Architectures
 Blackboard
 Client-server (2-tier, n-tier, peer-to-peer, Cloud Computing all use this model)
 Distributed computing
 Event Driven Architecture
 Front-end and back-end
 Implicit invocation
 Monolithic application
 Peer-to-peer
 Plug-ins (Add-ins)
 Representational State Transfer
 Rule evaluation
 Search-oriented architecture (A pure SOA implements a service for every data access point)
 Service-oriented architecture
 Shared nothing architecture
 Software componentry (strictly module-based, usually object-oriented programming within
modules, slightly less monolithic)
 Space based architecture
 Structured (module-based but usually monolithic within modules)
 Three-tier model (An architecture with Presentation, Business Logic and Database tiers)

19
An Example: Peer-to-Peer Architecture

 A peer-to-peer distributed network architecture is composed


of participants that make a portion of their resources (such
as processing power, disk storage or network bandwidth)
directly available to other network participants, without the
need for central coordination instances (such as servers or
stable hosts).

 Peers are both suppliers and consumers of resources, in


contrast to the traditional client-server model where only
servers supply, and clients consume.

 Peer-to-peer was popularized by file sharing systems like


Napster OR person-to-person communication (audio/video
conferencing) systems like Skype.

20
Examples of Peer-to-Peer Architecture
Active peer-to-peer technologies include:

 Many file sharing networks, including Napster, Gnutella, G2 and FastTrack. Peer-to-peer file
sharing popularized peer-to-peer technologies. As of 2009, it is the largest contributor of network
traffic on the Internet.
 The JXTA extensions of Java.
 Distributed hash tables
 The sciencenet P2P search engine.
 Pennsylvania State University, MIT and Simon Fraser University are carrying on a project called
LionShare designed for facilitating file sharing among educational institutions globally.
 Delivery of TV content over a P2P network (P2PTV)
 Skype, one of the most widely used internet phone applications is using P2P technology.
 VoIP (using application layer protocols such as SIP)
 Streaming media. P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,
Cybersky-TV, TVants, PPLive, LiveStation
 Instant messaging and online chat
 Peercasting for multicasting streams. See PeerCast, IceShare, FreeCast, Rawflow
 Usenet for distributed discussion. See also list of Usenet newsreaders
 Windows Peer-to-Peer. Distributed peer application development, collaboration[9] Shipped with
Advanced
 Cloud computing

21
Plug-In Software Architecture
Software applications support plug-ins for many reasons. Some
of the main reasons include:
 to enable third-party developers to create capabilities to extend an
application
 to support features yet unforeseen
 to reduce the size of an application
 to separate source code from an application because of
incompatible software licenses.

Examples of applications and their plug-ins include:


 Microsoft Office uses plug-ins (better known as add-ins) to extend
the capabilities of its application by adding custom commands and
specialized features
 Web browsers use plug-ins to play video and presentation formats
(Flash, QuickTime, Microsoft Silverlight, 3DMLW)
 Email clients use plug-ins to decrypt and encrypt email or to send
oversized email attachments ()
 Graphics software use plug-ins to support file formats and
process images (Adobe Photoshop)
 Media players use plug-ins to support file formats and apply filters
(foobar2000, GStreamer, Quintessential, VST, Winamp, XMMS)
 Packet sniffers use plug-ins to decode packet formats
(OmniPeek)
 Software development environments use plug-ins to support
programming languages (Eclipse, jEdit, MonoDevelop)
 Some Web content management systems use plug-ins to
increase functionality.
22
Cloud Computing
Cloud computing is a paradigm of computing in
which dynamically scalable and often virtualized
resources are provided as a service over the
Internet.

Users need not have knowledge of, expertise in, or


control over the technology infrastructure in the
"cloud" that supports them.

The concept generally incorporates combinations of


the following:
 Software as a service (SaaS).
 Infrastructure as a service (IaaS).
 Platform as a service (PaaS).

Cloud computing users can avoid capital


expenditure (CapEx) on hardware, software, and
services when they pay a provider only for what
they use.

23
Software Architectural Design:
Additional Information

24
Partitioned Architecture: Why?

1. results in software that is easier to test

2. leads to software that is easier to maintain

3. results in propagation of fewer side effects

4. results in software that is easier to extend


25
Partitioning the Software Architecture

Motto: “Divide and Concur”

“Horizontal” and “vertical” partitioning are required

26
Vertical Partitioning

1. define separate branches of the module hierarchy for each major function
2. use control modules to coordinate communication between functions

function 2
(for ex: online database)

function 1 function 3
(for ex: interface) (for ex: security
login, password)

27
Horizontal Partitioning: Factoring

1. design so that decision making and work are stratified (or, separated by
levels)
2. decision making modules should reside at the top of the architecture

decision-makers
(conceptual modeling)

workers (developers,
programmers)

28

You might also like