software structure - github pages · bind presentation, control, and data together. •there often...
TRANSCRIPT
![Page 1: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/1.jpg)
Software StructureJim Fawcett
CSE681 – Software Modeling and Analysis
Fall 2017
![Page 2: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/2.jpg)
Introduction
What is Program Structure?
An Example
Program Structure 3
![Page 3: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/3.jpg)
What is Software Structure?
• Partitions – classes, packages, systems
• Separation of concerns, rate of change, performance
• Communication
• How do the parts make requests and send notifications?
• Sharing
• How is data shared between the parts?
• Performance
• Control
• Which parts interact with which other parts?
Program Structure 4
![Page 4: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/4.jpg)
Program Structure• Logical – class structure:
• Interfaces, classes, and class relationships
• Package – code file structure:
• Package dependency tree, as shown in package diagrams
• Subsystems, e.g., collection of packages separated by interfaces with each focused on specialized processing
• For a radar those might be: signal processing, beam forming, data management, operator control, communication.
• Execution – binary structure:
• Monolithic Program, e.g., an exe
• Program with loadable Dynamic Link Libraries (DLLs)
• Cooperating processes, e.g., client-server, server federation, etc.
Program Structure 5
![Page 5: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/5.jpg)
Code Analyzer Example
• The next slide shows the logical structure of a code analyzer, focusing on the front-end analysis.
• There are four modules
• Lexical Scanner – reads token groups from stream
• Parser with Rules and Actions – builds AST
• Executive with builder - assembles all the parts
• Display – maps AST data into information
• You will find more discussion in the Parser Blog
Program Structure 6
![Page 6: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/6.jpg)
Program Structure 7
Scanner
Parser
Executive
+addRule(in pRule : IRule*) : void
+parse() : bool
-breakingRules : vector<IRule*>
-nonbreakingRules : vector<IRule*>
-ITokColl : ITokCollection*
Parser
+addAction(in pAction : IAction*) : void
+doActions(in pTokColl : ITokCollection*) : void
+doTest(in pTokColl : ITokCollection*) : bool
-actions : vector<IAction*>
IRule
+doAction(in pTokColl : ITokCollection*) : void
IAction
+get() : bool
+operator[](in n : int) : string
+find(in tok : string) : int
+remove(in tok : string) : bool
-pToker : Toker*
-toks : vector<string>
XmlParts or SemiExp
DerivedRule1
DerivedAction2
+getTok() : string
+attach(in name : const String&, in isFile : bool) : bool
-scToks : string
-putbacks : vector<char>
Toker
istream
ifstream istringstream
Parsing Facility
ostream
GUIExec
A
A
A
A
DerivedAction1
A
A
IBuilder
ConfigureParser
AA
DerivedRule2 ScopeStack
A
ConsoleExec
Repository
Display
Formatter Display
A
ITokCollectionAbstrSynTree
![Page 7: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/7.jpg)
Software Structure Contents
• Data Driven
• Client server
• Three tier
• Model-View-Controller
• Layered Structure Driven
• Components
• Services
• Analysis Driven
• One pass
• Two passes
Program Structure 8
• Communication Driven
• Client Server
• Peer-to-peer
• Middleware
• Thread & Event Driven
• Single Threaded Apartment (STA)
• Parallel execution
• Pipeline execution
• Enterprise Computing
• Federated systems
![Page 8: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/8.jpg)
Data Driven Structures
Programs that are dominated by management of data
Web applications are often Data Driven
Program Structure
![Page 9: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/9.jpg)
Data Driven Structures
• Some program structures are driven by the presentation and management of data:
• Client-Server
• Three-Tier
• Model-View-Controller
Data-Driven Program Structure 10
![Page 10: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/10.jpg)
Structure: Client-Server
• Behavior:
• Server is passive, waits for client requests
• Client requests are synchronous – after sending request client waits for reply
• Server contains data shared among its clients
• Server handles multiple concurrent clients
• Without additional structure system may become tightly coupled and difficult to change
• Example:
• Web server and browser clients
Data-Driven Program Structure 11
Client Server
![Page 11: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/11.jpg)
Data-Driven Program Structure 12
![Page 12: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/12.jpg)
Data-Driven Program Structure 13
![Page 13: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/13.jpg)
Data-Driven Program Structure 14
![Page 14: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/14.jpg)
Sharing Data• Relational Databases – SQL Server, mySql, …
• ACID – Atomicity, Consistency, Isolation, Durability
• ACID => Transactional
• No SQL Databases – MongoDB, CouchDB
• Key-Value, Document, Hierarchal
• Very flexible data structure
• Consistency is pushed onto the application
• File Systems
• Ad. Hoc. in-memory repositories
• Extensible Record Stores – Google’s Big Table
• Distributed partitioned tables
• Document Stores – CouchDB
• Multi-indexed objects aggregated into domains
Data-Driven Program Structure 15
![Page 15: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/15.jpg)
Separation of Concerns
• Except for the simplest of applications it’s not a good idea to bind presentation, control, and data together.
• There often are many views, more than one application mode, many sources of data.
• If we bind these all together we get spaghetti code
• Very hard to test, hard to maintain, hard to document.
Data-Driven Program Structure 16
![Page 16: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/16.jpg)
Structure: Three-Tier
• Structure:
• Partitioned into presentation, application logic, and data management.
• Intent is to loosely couple these three aspects of an application to make it resilient to change.
• Examples:
• Most well-designed applications.
Data-Driven Program Structure 17
![Page 17: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/17.jpg)
Basic MVC Structure
Data-Driven Program Structure 18
View Controller ModelRender
User Actions
Reply
Request
User Inputs
![Page 18: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/18.jpg)
Model-View-Controller
• Structure:
• MVC is a refined version of the Three-Tier structure, intended to support multiple views and data models.
• Models do all data storage management.
• Views present information to user, format output but do no other transformations on data.
• Controllers accept inputs, implement application processing, and use Models and Views to provide the application’s behavior.
• Application phases often have one controller each.
• Models may be shared between controllers.
• Example: Asp.Net MVC
Data-Driven Program Structure 19
![Page 19: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/19.jpg)
MVC – With View & Application Models
Data-Driven Program Structure 20
▪ Views and Models often have some substructure, e.g.:
View ControllerApplic
ModelRender
User Actions
Reply
RequestView
Model
Data
Model
![Page 20: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/20.jpg)
View – View Model
Data-Driven Program Structure 21
▪ A view is what gets rendered
▪ A view model is an abstraction that:
Defines resources that many be used in several places.
Defines styles that may be used in several places
Defines an object model for the application to manipulate
![Page 21: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/21.jpg)
Application vs. Data Models
Data-Driven Program Structure 22
▪ Application model
Defines classes for all the entities a user knows and cares about, e.g., orders, customers, products, etc.
▪ Data model
Defines wrapper classes for tables and stored procedures
Manages connections
▪ Object to Relational Mapping
Relationships between application objects and data objects.
![Page 22: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/22.jpg)
Object Relational Mapping• Data Layers often have an ORM substructure
• Examples: Hibernate, Microsoft Entity Framework
Data-Driven Program Structure 23
Application Objects
DB Objects (wrap tables)
Mapping Relationships
![Page 23: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/23.jpg)
N-Tier Structure
• So, the three tier MVC has morphed into a five tier V-VM-C-AM-DM
• View – what gets rendered
• View Model – an abstraction of the view
• Controller – routes View events to handlers in the Application Model
• Application Model – classes that model the “business” logic
• Data Model – models data storage tables
• Database, XML file, custom data structures
Data-Driven Program Structure 24
![Page 24: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/24.jpg)
MVC – Multiple Controllers
Data-Driven Program Structure 25
ViewController Model
View ControllerModel
ViewController
Model
User inputs
User inputs
User inputs
![Page 25: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/25.jpg)
Layer-Driven Structures
Components
Services
REST
Program Structure
![Page 26: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/26.jpg)
Component Layered Structure
• Structure:
• A componentized system is composed of an application with many pluggable component parts.
• A component is pluggable if it implements a plug-in interface, published by the application, provides an object factory for activating its internal objects, and is packaged as a dynamic link library (DLL).
• Example:
• http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/BlogParser.htm
almost implements.
Layer-Driven Program Structure 27
![Page 27: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/27.jpg)
Hiding Implementation Details
Layer-Driven Program Structure 28
Package A
Factory Interface
Package B
Factory InterfaceFactory
class B
class A
class C
class A
![Page 28: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/28.jpg)
Example Componentized SystemSeparate presentation from application logic
Layer-Driven Program Structure 29
Component1 Component2 Component3
GUI
Asynchronous call
Asynchronous call
Asynchronous call
![Page 29: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/29.jpg)
Service Layered Structure
• Provides a structure based on:
• System Services – things the user doesn’t think about
• Communication, storage, security, file caching, …
• User Services – things the user manipulates as part of the use of the system
• Input, Display, Check-in/Check-out, …
• Ancillary – Things that are not part of the system mission but are necessary
• Logging, extension hooks, test hooks, …
Layer-Driven Program Structure 30
![Page 30: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/30.jpg)
Distributed Services
• Structure:
• Service oriented systems are simply client server.
• Usually the server is implemented with a web service or operating system service.
• Web service is a web application that provides an interface for client software to access.
• OS service is a system application that provides an interface for requests and an administration interface for setting service startup and shutdown policies.
• Windows Communication Foundation (WCF) has extended that model to support hosting in:
• desktop application
• windows service hosted with Windows Service Control Manager (SCM)
• web service hosted by Internet Information Server (IIS).
Layer-Driven Program Structure 31
![Page 31: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/31.jpg)
UDDI
Registry
Web Site
DISCO file
WSDL
WEB Service
Discovery
Interface
SOAP Messages
Internet
Internet
C# Web Services, Banerjee, et. al.,
WROX, 2001
Layer-Driven Program Structure 32
![Page 32: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/32.jpg)
WCF Protocols
• WCF supports:
• Http – SOAP over Http in clear text - BasicHttp
• Http – SOAP with security extensions – WsHttp
• NetTcp – SOAP over TCP
• SOAP – Simple Object Access Protocol
• An XML body for HTTP or TCP messages
• Usually contains a message body in XML defined by a Data Contract
• WCF is a very flexible, relatively easy to use, but heavy weight communication mechanism
Layer-Driven Program Structure 33
![Page 33: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/33.jpg)
REpresentational State Transfer• REST is a message-passing communication system built on
the HTTP protocol, using the Web verbs:
• Get – retrieve a resource without changing the state of the server.
• Post – send information to the server that may change its state.
• Put – place a resource on the server.
• Delete – remove a resource from the server.
• Nouns – the resources exposed by the system – are identified by URIs – Uniform Resource Identifiers
• Its encoding is UTF text, not SOAP or some other complex messaging format, but may use encryption, as in HTTPS.
Layer-Driven Program Structure 34
![Page 34: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/34.jpg)
Published REST APIs• Amazon REST API
• https://docs.aws.amazon.com/apigateway/api-reference/
• Azure REST API
• https://docs.microsoft.com/en-us/rest/api/azure/
• Google Drive APIs
• https://developers.google.com/drive/api/v2/reference/
• Dell Open Automation Guide
• https://www.dell.com/support/manuals/us/en/04/force10-open-automation/oa_9.8.2.0_cli_config_pub/rest-api?guid=guid-3b60f154-bfd4-4da3-aa11-8e97c7018d4a&lang=en-us
• IBM REST APIs
• https://www.ibm.com/support/knowledgecenter/en/SSMKHH_10.0.0/com.ibm.etools.mft.doc/bi12017_.htm
Program Structure 35
![Page 35: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/35.jpg)
Analysis Driven Structure
Packages
Pipelines
Program Structure 36
![Page 36: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/36.jpg)
Analysis Driven Structure
• Packages
• Gather working set (inputs needed for analysis)
• Execute one or more phases of analysis
• filter and interpret resulting data to provide information
• Present the analysis information
Analysis-Driven Program Structure 37
![Page 37: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/37.jpg)
Package Structure – Analysis Driven
Analysis-Driven Program Structure 38
Gather
Inputs
Executive
Display
Results
collection
request
sends
parameterscomputation
request
display
request
selects
filter
Transform
Inputscollect
inputs
collect
results
![Page 38: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/38.jpg)
Pipelined Dependency Analysis
Analysis-Driven Program Structure 39
filespecs
Type Analysis
Merge Type
Tables
Partial TypeTable
Filespecs
And
Type TableDep, Relation
AnalysisPartial Results
Merge Results
Start Pass #2
Start Pass #1
Scheme for Execution of Dependency and Type Relationship Analysis
Projects #1, #2, #3, #4
Thread Safe
Blocking Queue
![Page 39: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/39.jpg)
Communication Driven Structure
Client-Server
Peer-to-Peer
MiddleWare
Program Structure 40
![Page 40: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/40.jpg)
Communication Driven Structure• When users, data, and application logic are distributed
across processes and machines communication becomes important:
• Client-Server
• Peer-to-peer
• Communication Middleware
• RPC (RMI)
• Message-Passing
Communication-Driven Program Structure
41
![Page 41: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/41.jpg)
Peer-To-Peer Asynchronous Message-Passing Structure
Communication-Driven Program Structure
42
Receiver
Sender
Receiver
Sender
Receiver
Sender
Sending
Message
Each Peer is a separate process possibly on separate machines
![Page 42: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/42.jpg)
Communication Performance
• Suppose that processing a request takes T units of time if requester and provider are in the same process.
• Executing the same request across processes takes about 10 T units of time.
• Executing the same request across a network takes about 100 T units of time.
• Executing the same request across the internet takes about 1000 T units of time.
Communication-Driven Program Structure
43
![Page 43: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/43.jpg)
Structure: Client-Server
• Behavior:
• Server is passive, waits for client requests
• Server handles multiple concurrent clients
• Without additional structure system may become tightly coupled and difficult to change
• Example:
• Web server and browser clients
Communication-Driven Program Structure
44
![Page 44: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/44.jpg)
Structure: Peer-To-Peer
• Behavior:
• Peers interact, sending and receiving messages from each other.
• Peers are sometimes identical.
• Many Peer-to-Peer models support central or distributed locater services.
• Examples:
• Project #4
• Bit-Torrent
• Napster
Communication-Driven Program Structure
45
Receiver
Sender
Receiver
Sender
Receiver
Sender
Sending
Message
Each Peer is a separate process possibly on separate machines
![Page 45: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/45.jpg)
Communication-Driven Program Structure
46
Peer UIForm
Peer UIForm
client
Send thread
Server
Remote Communication
Activated Object
(Receive) Thread
main thread
gets message
Main thread
Posts message
client
Send thread
Server
Remote Communication
Activated Object
(Receive) Thread
main thread
gets message
main thread
posts message
Remoting Object
Receive Thread
created by Run-
Time system
Send thread created
by client main thread.
Static
Collection
Of client
references
Static
Collection
Of client
references
A Reusable Communication Structure
Servers use
message IDs or
types to figure out
what to do with
each message.
Processing
Processing
![Page 46: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/46.jpg)
Communication Types
• Remote Procedure Call (RPC):
• Supports function call semantics between processes and machines.
• Sends messages over wire but provides stack frames for client and server to support the function call model.
• Examples: COM, CORBA, WCF
• Message Passing:
• Sends message with encoded request and/or data
• Message contains endpoint information for routing
• Directly supports asynchronous processing
• Examples: Internet, Web, SMA and OOD projects
Communication-Driven Program Structure
47
![Page 47: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/47.jpg)
Communication Patterns
• TwoWay:Synchronous Request, wait for reply
• Duplex:asynchronous request, reply sent as callback
• OneWay:Send Message and forget
• Receiver may send result back to requester as a subsequent OneWay
message
• Examples:
• All of the above are supported by WCF
Communication-Driven Program Structure
48
![Page 48: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/48.jpg)
Communication Style
• Push Model
• Send information to a remote endpoint via a service call, perhaps via a message:
void PostMessage(Message msg);
• Pull Model
• Retrieve information from a remote endpoint via a service call, perhaps by a streaming download:
Stream downLoad(string filename);
Communication-Driven Program Structure
49
![Page 49: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/49.jpg)
Communication Style
• Pull Service and Caching
• A Software Repository could expose a WCF service that provides information about its package contents including dependencies.
• That allows a client, for example, to pull from the Repository all files in a package dependency list that are not already in its file cache.
• That makes sense only if the packages are versioned, so we can distinguish between copies versus updates.
Communication-Driven Program Structure
50
![Page 50: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/50.jpg)
Thread & Event Driven Structure
Publish and Subscribe
Event Driven
Parallel Processing
Pipelines
Program Structure 51
![Page 51: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/51.jpg)
Structure: Publish & Subscribe
• Structure:
• Many to many connection of Publishers and Subscribers.
• Each subscriber registers for notifications with a specific interface.
• Publishers send notifications to all enrolled subscribers when a publisher event occurs.
• Publishers can support multiple events.
• Publishers don’t need to know anything about the subscriber.
Event-Driven Program Structure 52
![Page 52: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/52.jpg)
Event-Driven Program Structure 53
PublisherEvent
Event
PublisherEvent
Event
Subscriber
Subscriber
Subscriber
Notify
Register for Notification
![Page 53: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/53.jpg)
Threading Driven Structure
• Some program structures are a consequence of specific threading models
• Event-driven and Single Threaded Apartment (STA)
• Parallel execution
• Pipelined execution
Thread and Event-Driven Program Structure
54
![Page 54: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/54.jpg)
Structure: Event-Driven
• Structure:
• Events from multiple concurrent sources generate messages which are enqueued, and typically are processed by a single handling thread.
• Messages are dispatched to event-handlers for processing.
• Example:
• Windows processing
Thread and Event-Driven Program Structure
55
![Page 55: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/55.jpg)
Windows Processing
Thread and Event-Driven Program Structure
56
Active Window
keyboard
mouse
other
devices
Window Manager
messages filtered for this windowposted by
operating systemthread
event
handler
function
Main thread in active window
blocks on call to getMessage until
a message arrives. Then it is
dispatched to an event handler
associated with that message
Raw Input Queue
Windows Message Queue
![Page 56: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/56.jpg)
Single Threaded Apartment
•Graphical User Interfaces all use the STA model.
• Possibly concurrent clients send messages to the GUI’s
message queue.
• All messages are retrieved by a single thread, the one that
created the window.
• Child threads, often used to execute tasks for the GUI, are
not allowed to directly interact with the window.
• Instead they must send or post messages to the window’s
message queue.
• This is often done with Form.Invoke or Dispatcher.Invoke.
Thread and Event-Driven Program Structure
57
![Page 57: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/57.jpg)
Parallel Execution
• Structure:
• Often concurrent programs provide enqueued task requests.
• Threads, perhaps from a thread pool, are dispatched to handle each task.
• Tasks must be independent in order to fully realize the benefits of concurrency.
• Example:
• Concurrent execution of dependency analysis tasks.
Thread-Driven Program Structure 58
![Page 58: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/58.jpg)
Thread-Driven Program Structure 59
filespecs
Type Analysis
Type Analysis
Type Analysis
Type Analysis
Thread with filespecPartial TypeTable
Merge Type
Tables
Partial TypeTable
Filespecs
And
Type Table
Dep, Relation
Analysis
Dep, Relation
Analysis
Dep, Relation
Analysis
Dep, Relation
Analysis
Thread with filespec
and
Type Table
Partial Results
Merge Results
Start Pass #2
Start Pass #1
Scheme for Parallel Execution of Dependency and Type Relationship Analysis
Projects #1, #2, #3, #4
Thread Safe
Blocking Queue
![Page 59: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/59.jpg)
Pipeline Execution
• Structure:
• Composed of cells.
• Each cell has a message queue and a child thread that processes messages.
• Result messages may be sent on to another cell.
• Each cell type is defined by the way it overrides a virtual message processing function.
• Example:
• Project #4, CSE687 – OOD, Spring 2010
Thread-Driven Program Structure 60
![Page 60: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/60.jpg)
Thread-Driven Program Structure 61
![Page 61: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/61.jpg)
Thread-Driven Program Structure 62
![Page 62: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/62.jpg)
Pipe-lined Cell Communicators• Document Vault (Project #4 – Fall 2013)
• Uses pipe-lined cells as communicators
• Mediator (dispatcher) controls routing of messages
• Each cell has capability to send and receive messages
• Makes very flexible configuration of client and server capabilities
Thread and Event-Driven Program Structure
63
![Page 63: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/63.jpg)
Thread and Event-Driven Program Structure
64
DocumentVault
VaultClient
Client-EchoCommunicator
Sender
Receiver VaultDispatcher
EchoCommunicator
QueryCommunicator
NavigationCommunicator
Project #4 Help – Object Diagram
Receiver
Sender
Main
![Page 64: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/64.jpg)
Enterprise Computing
Federations
Collaboration Systems
Program Structure 65
![Page 65: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/65.jpg)
Enterprise Computing
• Large Enterprise Applications are usually constructed as a federation of lower level systems and subsystems.
• The federation is glued together with network based middleware, or more commonly now, with web services.
• Example: PeopleSoft, used by S.U.
• Payroll and accounting
• Academic planning and record keeping
• Employee services
• A variety of web applications, like mySlice.
Enterprise Program Structure 66
![Page 66: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/66.jpg)
Enterprise App: Project Center• Federation of tools supporting Software Development
• Open source tools with integrating wrappers:
• CVS – configuration managment
• Nant – sofware builds
• Nunit – software testing
• Newly developed and legacy tools:
• Bug tracker, change tracker, project scheduler
• http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/ProjectCenter.htm
Enterprise Program Structure 67
![Page 67: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/67.jpg)
Enterprise Program Structure 68
Project Center
ASP UIF
Project Center
WinForm UIF
Config Mgmt
CVS
RCS
Build
NAnt
Test
NUnit
Bug Tracker
Data Manager
Change Log
Project Scheduler
Project Center Packages
A viable configuration
Web Service
Communications
![Page 68: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/68.jpg)
Federation Structure
• Federated Systems often are based on one of two design patterns:
• Façade provides an integrating interface that consolidates a, possibly large, set of system interfaces into a single application interface in an attempt to make the system easier to use than working directly with its individual parts.
• Mediator serves as a communication hub so that all the various subsystems need know only one interface, that of the mediator.
Enterprise Program Structure 69
![Page 69: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/69.jpg)
Collaboration System
▪System that focuses on sharing of processes and products among peers with a common set of goals. Primary focus is organizing and maintaining some complex, usually
evolving, state: Software development baseline
Set of work plans and schedules
Documentation and model of obligations
Communication of events
▪Example: Collab – CSE784, Fall 2007,
http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/CServ.htm
Enterprise Program Structure 70
![Page 70: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/70.jpg)
Example Collaboration System
Enterprise Program Structure 71
![Page 71: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/71.jpg)
Other System Structures
Agents
Cloud Computing
Program Structure 72
![Page 72: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/72.jpg)
Agent-Based
▪System uses Software Agents Semi-autonomous, mobile, task oriented software entities. Crawl
web, or network, or data structure
May be scheduled
Provide scriptable user specific services Collect information from a large set of data
Perform analyses on changing baseline and report
Conduct specific tests
Make narrowly specified modifications to baseline
▪Example: CSE681 Project #5, summer 2009,
http://www.ecs.syr.edu/faculty/fawcett/handouts/CSE681/Projects/Pr5Su09.doc
Program Structure 73
![Page 73: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/73.jpg)
Master’s Thesis Research Examples• The following are all based on Software Matrix structure –
Autonomous cells often used with mediator
• Software Matrix – Gosh, 2004
• Self Healing Systems – Anirudha, 2005
• Cross Platform Development – Appadurai, 2007
• Model-Driven Development – Patel, 2007
• http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/research.htm
Program Structure 74
![Page 74: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/74.jpg)
Other Structures
• TeraScale computing:
• Term defined by Intel to describe parallel execution on a many core processor.
• Expectations are chips with scores of processors
• Cloud Computing
• Term adopted by many to describe remote execution and storage of applications. The cloud provides a stable endpoint that may map onto any one of a large set of computing resources.
• Example:
• Microsoft’s Azure platform
• Amazon Web Services
• Google Cloud
Program Structure 75
![Page 75: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/75.jpg)
Other Structures we won’t discuss
• GPU computing
• Neural Networks
• Baysian Networks
• Deep Learning Networks
• Adversarial Networks
Program Structure 76
![Page 76: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/76.jpg)
SMA Projects - 2015• Project #2 – Fall 2015
• NoSql Database
• Key/Value store
• Provides cloning, persistence, querying, views
• Project #4 – Fall 2015
• Client-Server
• Focus on NoSqlDb performance testing
• May have multiple concurrent clients
• Both client and server may use DLLs for significant processing
• Project #5 – Fall 2015
• Federation of clients and servers
• Focuses on data service layer
• May have a dedicated virtual server with child services on each of the Federation servers
Program Structure 77
![Page 77: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/77.jpg)
SMA Projects – Before 2015• Project #2 – Fall 2013
• Cooperating monolithic processes
• Composite Text analyzer
• Metadata generator
• Project #4 – Fall 2014
• Client-Server
• May have multiple concurrent clients
• Both client and server use DLLs for significant processing
• Project #5 – Fall 2013
• Federation of clients and servers
• Focuses on Software Repository server
• May wish to use virtual servers
Program Structure 78
![Page 78: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/78.jpg)
Virtual Server
• Clonable Server
• Create an instance of some running server on my desktop
• Clone some part of it’s data store
• Examples – Originals hosted by development project
• Repository – holds my team’s code resources
• TestHarness – used to test locally before checking in to Project
• Collab – holds my team’s work plans, status information
• Provides whiteboard with webcam and document views to collaborate with remote team.
• Clients – Enables access and use of the other parts
Program Structure 79
![Page 79: Software Structure - GitHub Pages · bind presentation, control, and data together. •There often are many views, more than one application mode, many sources of data. •If we bind](https://reader035.vdocuments.mx/reader035/viewer/2022071217/604a188d7465a54c89316ee0/html5/thumbnails/79.jpg)
The End