1
Topic # 06
Software Architectural Design
2
Software Architecture
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.
3
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.
4
Why is Software Architecture Important?
The architecture highlights early design decisionsthat 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”.
5
Basic Architectural Styles of Software Systems
1. Data centered data store (e.g., file or database) lies at the centerof this architecture and is accessed frequently byother components that modify data
2. Data flow input data is transformed by a series of computational or manipulative components intooutput data
3. Call and return program structure decomposes function intocontrol hierarchy with main program invokesseveral subprograms
4. Object-oriented components of system encapsulate data andoperations, communication between componentsis by message passing
5. Layered several layers are defined, each accomplishingoperations that progressively become closer tothe machine instruction set
6
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) DELL.com for online shopping (with a huge database of goods and millions of clients)
2) Neflix.com -- 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
7
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.
8
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.
9
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.
10
2. Data-Flow Software Architecture (4)
Ex # 4:
- adventure computer games
- exploratory computer games
-Ex 5: Google (search, translate, email, etc.)
11
3. “Call and Return” Software Architecture
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 computers on a network.
Numeric Integration of ODEs (to simulate mechanical, electrical, hydraulic, thermal systems):
Ordinary differential equations
Nonlinear algebraic equations
Linear algebraic equations
LU-factorization
Gauss Method
12
Call-and-Return procedures in
Distributed Networks, Services, Software Systems, DBs…
13
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)
14
Example: IBM Rational Modeler
15
Example: UMLet
16
Example: SmartDraw
17
Example: Microsoft Visual Studio
18
5. Layered Software Architecture
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.
Layered security systems
(IP protocol-based)
Layered operating systems
(UNIX, Linux)
OSI Model (networking)
20
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)
21
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.
22
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
23
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.
24
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.
26
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
27
Partitioning the Software Architecture
Motto: “Divide and Concur”
“Horizontal” and “vertical” partitioning are required
28
Vertical Partitioning
1. define separate branches of the module hierarchy for each major function
2. use control modules to coordinate communication between functions
function 1(for ex: interface)
function 3(for ex: security
login, password)
function 2(for ex: online database)
29
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
workers (developers,
programmers)
decision-makers
(conceptual modeling)
30
Topic # 06
Software Architectural Design:
Additional Information
Top Related