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

30
1 Topic # 06 Software Architectural Design

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

Page 1: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

1

Topic # 06

Software Architectural Design

Page 2: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 3: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 4: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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”.

Page 5: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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

Page 6: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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

Page 7: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 8: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 9: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 10: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

10

2. Data-Flow Software Architecture (4)

Ex # 4:

- adventure computer games

- exploratory computer games

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

Page 11: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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

Page 12: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

12

Call-and-Return procedures in

Distributed Networks, Services, Software Systems, DBs…

Page 13: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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)

Page 14: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

14

Example: IBM Rational Modeler

Page 15: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

15

Example: UMLet

Page 16: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

16

Example: SmartDraw

Page 17: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

17

Example: Microsoft Visual Studio

Page 18: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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)

Page 19: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

19

Topic # 06

Software Architectural Design

In-Classroom Exercise

Page 20: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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)

Page 21: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 22: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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

Page 23: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 24: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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.

Page 25: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

25

Topic # 06

Software Architectural Design

Homework Assignment

Page 26: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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

Page 27: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

27

Partitioning the Software Architecture

Motto: “Divide and Concur”

“Horizontal” and “vertical” partitioning are required

Page 28: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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)

Page 29: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

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)

Page 30: Topic # 06 Software Architectural Designcs-is1.bradley.edu/uskov/cs390/Topic_06/Topic_06.pdf · 2020-03-28 · P2PTV and PDTP. Applications include TVUPlayer, Joost, CoolStreaming,

30

Topic # 06

Software Architectural Design:

Additional Information