Quantcast
Channel: 懒得折腾
Viewing all articles
Browse latest Browse all 764

Pattern-Oriented Software Architectures for Concurrent and Networked Software

$
0
0

1. Concurrent software can simultaneously run multiple computations that potentially interact with each other.

Networked software defines protocols that enable computing devices to exchange messages & perform services remotely.

Motivations for Concurrent software:

1) Leverage hardware/software advances.  multi-core processors and multi-threaded operating systems.

2) Simplify program structure by allowing blocking operations.

3) Increase performance: Parallelize computations and communications.

4) Improve response-time

Challenges for Concurrent software:

1) Accidental Complexities: Tedious, error-prone, non-portable Low-level API. Limited debuging tools

2) Inherent Complexities: Synchronization, Scheduling, Deadlock

Motivations for Networked software:

1) Collaboration & commerce: file sharing, social media, e-commerce.

2) Scalability: cloud computation.

3) Availability: minimizing single points of failure via replication.

4) Cost effectiveness via shared resources.

Challenges for Networked software:

1) Accidental Complexities: Algorithmic decomposition. Continuous re-discovery & re-invention of core components,

2) Inherent Complexities: Latency & jitter, Reliability & partial failure. Security

Describe how patterns & frameworks help address challenges of concurrent & networked software

Patterns:

1)Present solutions to common problems arising within a context.

2) Help balance & resolve key software design forces.

3)  Capture recurring structures & dynamics among software elements to facilitate reuse of successful designs.

4) Codify expert knowledge of design strategies, constraints & “best practices”.

Frameworks: are integrated sets of software components that collaborate to provide reusable architectures for families of related applications.

1)  exhibit “inversion of control” via callback.

2)  provide integrated domain-specific structures & functionality.

3) They are “semi-complete” applications.

Patterns & frameworks codify proven experience to enable

1) Design reuse  - Match problems to relevant structures/dynamics & patterns in a domain.

2) Code reuse – Reify proven designs within particular development environments & domains.

Course Syllabus:

Section 1 – Introduction to concurrent & networked software: Layers, design dimensions, OS programming mechanism, Android programming mechanisms.

Section 2 – Introduction to Patterns & frameworks

Section 3 – Applying patterns & framework to concurrent & networked software. : Event handling, Concurrency, Synchronization.

Week 1.

1. Discuss key layers in concurrent & networked software:

1) Layered architecture create a multi-tier architecture that separates concerns between tasks in different system layers.

Middleware is reusable infrastructure software residing between applications & the underlying operating systems, networks, & hardware.

Middleware leverage hardware & software technology advances, evolve to new requirements & environments, provide an array of reusable, off-the-shelf developer-oriented services. Control end-to-end resources & quality of service (QoS).

Applications

Domain-specific middleware service: are tailed to the requirements of particular domains.

Common Middleware servicees: define higher-level domain-independent services. CORBA component, J2EE, .NET, Webs services.

Distribution Middleware:  simplifies networked component programming & extends OS mechanisms end-to-end. CORBA, SOAP, RMI, DCOM.

Host Infrastructure Middleware: encapsulates/enhances native OS mechanisms to create reusable OO components JVM, CLR

Operating Systems & protocols

Hardware

Pros & Cons of Layers Pattern:

Pros: 1) Reuse of layers, Support for standarization, Dependencies are localized. Exchangeability,

Cons: Cascades of changing behavior, Higher overhead, Unnecessary work, Difficulty of establishing the correct granularity of layers.
2. Explore key design dimensions of concurrent & networked software

Connection-oriented vs. Connectionless Protocols

Data Encoding strategies: Text-based, binary

Connection Multiplexing Strategies: multiplexed connection, nonmultiplexed connection

Sync vs. Async Message Exchange

Message Passing vs. Shared memory

Services, Servers, Configurations

Short vs. Long duration services.

Internal vs. External Services

Monolithic vs. Layered/Modular Services

Single Service vs. Multi-service Servers

One-shot vs. standing Servers

Static vs. Dynamic linking & Configuration.

3. Survey key operating system concurrent & networked software mechanisms & API

Iterative vs. Concurrent Servers.

Multiprocessing vs. Multithreading

Thread/Process Pool Eager Spawning Strategies: Prespawn, On-demand spawning

Kernel- vs. User-level Threading models.  Hybrid threading model.

Task- vs. Message-based Architectures
Describe key Android concurrent & networked software mechanisms & APIs



Viewing all articles
Browse latest Browse all 764

Trending Articles