wia day-panel
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