Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf ·...

Post on 27-Apr-2020

1 views 0 download

Transcript of Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf ·...

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)

19

Topic # 06

Software Architectural Design

In-Classroom Exercise

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.

25

Topic # 06

Software Architectural Design

Homework Assignment

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