wia day-panel

10
Software Design: Is It Really Better to Look Good Than to Feel Good? Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Professor of Computer Science Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA

Upload: worldiaday

Post on 20-Jul-2015

84 views

Category:

Documents


1 download

TRANSCRIPT

Software Design: Is It Really Better to Look Good Than to Feel Good?

Douglas C. Schmidt [email protected]

www.dre.vanderbilt.edu/~schmidt

Professor of Computer Science Institute for Software Integrated Systems

Vanderbilt University

Nashville, Tennessee, USA

World IA Day/Nashville Douglas C. Schmidt

2

Fernando’s Hideaway & Fernando’s Creed •  There’s a trend in software development

to follow a variant of Ferdando’s Creed •  i.e., better to look good on the outside

than be well designed on the inside

World IA Day/Nashville Douglas C. Schmidt

3

What’s Often Happening on the Inside

Proprietary & Stovepiped

Application & Infrastructure

Software

Standard/COTS Hardware & Networks

Customized Form Factors

Historically software developers have manually rediscovered & reinvented “point solutions” that are expensive to develop, integrate, validate, & sustain

World IA Day/Nashville Douglas C. Schmidt

4

What’s Often Happening on the Inside Historically software developers have manually rediscovered & reinvented

“point solutions” that are expensive to develop, integrate, validate, & sustain

Proprietary & Stovepiped

Application & Infrastructure

Software

Standard/COTS Hardware & Networks

Customized Form Factors

Consequence: Small changes in software/hardware negatively impact on system quality & sustainability

World IA Day/Nashville Douglas C. Schmidt

5

Improving Design with Patterns & Frameworks

Standard/COTS Hardware & Networks

Customized Form Factors

Application Frameworks

Operating System Kernel

Bundled & Third-Party Apps

System Libraries Virtual Machine Runtime

Framework- based App & Infrastructure

Software

Broker Strategy

Template Method

Command Observer

Decorator Proxy

Half-Sync/ Half-Async

Patterns & frameworks promote “systematic reuse” of best-practice by factoring out many general- purpose & domain-specific services from apps

World IA Day/Nashville Douglas C. Schmidt

6

How to Master Patterns & Frameworks Historically, the knowledge of patterns & fameworks has typically been located in: 1.  The heads of the experts

World IA Day/Nashville Douglas C. Schmidt

7

How to Master Patterns & Frameworks Historically, the knowledge of patterns & fameworks has typically been located in: 1.  The heads of the experts

2.  The bowels of the source code

public class KeyGeneratorImpl extends Service { private Set<UUID> keys = new HashSet<UUID>(); private final KeyGenerator.Stub binder = new KeyGenerator.Stub() { public void setCallback (final KeyGeneratorCallback callback) { UUID id; synchronized (keys) { do { id = UUID.randomUUID(); } while (keys.contains(id)); keys.add(id); } final String key = id.toString(); try { Log.d(getClass().getName(), "sending key" + key); callback.sendKey(key); } catch (RemoteException e) { e.printStackTrace(); } } }; public IBinder onBind(Intent intent) { return this.binder; } }

World IA Day/Nashville Douglas C. Schmidt

8

How to Master Patterns & Frameworks Historically, the knowledge of patterns & fameworks has typically been located in: 1.  The heads of the experts

2.  The bowels of the source code

Both locations are fraught with danger!

World IA Day/Nashville Douglas C. Schmidt

9

How to Master Patterns & Frameworks

There is now a broad literature for learning about patterns & frameworks for software design

World IA Day/Nashville Douglas C. Schmidt

10

How to Master Patterns & Frameworks

•  There are also multimedia resources becoming available

•  e.g., in the form of “MOOCs”

•  MOOCs are not a panacea, but have the potential to convey software design more broadly than heretofore possible

See www.dre.vanderbilt.edu/~schmidt for more info