The document discusses the trend in software development of prioritizing outward appearance over internal design quality, known as "Fernando's Creed". Historically, this has led to expensive and unsustainable "point solutions". The document advocates using patterns and frameworks to systematically reuse best practices and extract common services. It notes that knowledge of patterns and frameworks was traditionally located only in experts' minds and source code, which is risky. Now, literature and multimedia resources like MOOCs are helping convey design knowledge more broadly.
1. Software Design: Is It Really Better
to Look Good Than to Feel Good?
Douglas C. Schmidt
d.schmidt@vanderbilt.edu
www.dre.vanderbilt.edu/~schmidt
Professor of Computer Science
Institute for Software
Integrated Systems
Vanderbilt University
Nashville, Tennessee, USA
2. World IA Day/Nashville Douglas C. Schmidt
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
2
3. World IA Day/Nashville Douglas C. Schmidt
What’s Often Happening on the Inside
Historically software developers have manually rediscovered & reinvented
“point solutions” that are expensive to develop, integrate, validate, & sustain
Customized
Form Factors
Proprietary &
Stovepiped
Application &
Infrastructure
Software
Standard/COTS
Hardware &
Networks
3
4. World IA Day/Nashville Douglas C. Schmidt
What’s Often Happening on the Inside
Historically software developers have manually rediscovered & reinvented
“point solutions” that are expensive to develop, integrate, validate, & sustain
Customized
Form Factors
Proprietary &
Stovepiped
Application &
Infrastructure
Software
Standard/COTS
Hardware &
Networks
Consequence: Small changes in software/hardware
negatively impact on system quality & sustainability
4
5. World IA Day/Nashville Douglas C. Schmidt
Improving Design with Patterns & Frameworks
Patterns & frameworks promote “systematic reuse” of best-practice by
factoring out many general- purpose & domain-specific services from apps
Customized
Form Factors
Template Bundled & Third-Party Apps Half-Sync/
Method Half-Async Framework-
Application Frameworks based App &
Command Observer Infrastructure
System Libraries Virtual Machine Runtime
Software
Proxy Decorator
Broker Operating System Kernel
Strategy
Standard/COTS
Hardware &
Networks
5
6. World IA Day/Nashville Douglas C. Schmidt
How to Master Patterns & Frameworks
Historically, the knowledge of patterns & fameworks has typically been located in:
1. The heads of the experts
6
7. World IA Day/Nashville Douglas C. Schmidt
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; }
}
7
8. World IA Day/Nashville Douglas C. Schmidt
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!
8
9. World IA Day/Nashville Douglas C. Schmidt
How to Master Patterns & Frameworks
There is now a broad literature for learning about
patterns & frameworks for software design
9
10. World IA Day/Nashville Douglas C. Schmidt
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
10
See www.dre.vanderbilt.edu/~schmidt for more info