Post on 27-Mar-2015
© 2007 Grady Booch
The PromiseThe Limits
The Beauty of Software
Grady BoochIBM Fellow
© 2007 Grady Booch2
Our civilization runs on software.
Bjarne Stroustrup
© 2007 Grady Booch3
You have riches and freedom here but I feel no sense of faith or direction. You have so
many computers, why don’t you use them in the search for love?
Lech Walesa
Epstein, J., Yale Book of Quotations, New Haven, Connecticut: Yale University Press, 2006
© 2007 Grady Booch4
Software-intensive systems can amplify human intelligence
– They cannot replace human judgment
Software-intensive systems can fuse, coordinate, classify, and analyze information
– They cannot create knowledge
The Promise
Software-intensive systems can amplify human intelligence
Software-intensive systems can fuse, coordinate, classify, and analyze information
•
© 2007 Grady Booch5
Not everything we want to build can be built
– There exist pragmatic theoretical and technical limits
Not everything we want to build should be built
– There exist moral, economic, social, and political limits
The Limits
Not everything we want to build can be built
Not everything we want to build should be built
•
© 2007 Grady Booch6
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Software is invisible to most of the world
– The best software is simple, elegant, and full of drama as manifest in the cunning patterns that form its structure and command its behavior
The Beauty
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
•
© 2007 Grady Booch7
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– The Internet provides an environment where terrorists and other criminal enterprises can operate with little fear of detection
The Internet changes the way that individuals communicate and businesses collaborate
•Internet Mapping Project @ http://www.cheswick.com/ches/map/index.html
© 2007 Grady Booch8
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– The Web creates a greater opportunity for the exploitation of children as well as fraud and theft directed against individuals and organizations
The Web provides unprecedented mechanisms for social networking
•Britney Spears @ http://www.myspace.com/britneyspears
© 2007 Grady Booch9
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Software-intensive systems can erode personal privacy and other basic human rights
Software-intensive systems permit real time and distributed access to information
•WeatherLink @ http://www.davisnet.com
© 2007 Grady Booch10
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Email and the aging of digital archives threatens the preservation of history
Email and other software-intensive mechanisms increase the velocity of communication
•Project Gutenberg @ http://www.gutenberg.org
© 2007 Grady Booch11
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Piracy disrupts the economic underpinnings of traditional media companies and can dilute the intellectual property of artists
Software-intensive systems create new forms of artistic expression
•Halion @ http://www.steinberg.net
© 2007 Grady Booch12
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Software-intensive systems are at the center of a new generation of offensive and defensive weapons
Software-intensive systems enable and accelerate scientific research
•Entrez Genome Project @ http://www.ncbi.nlm.nih.gov/entrez
© 2007 Grady Booch13
The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– The complexity of software-intensive systems continues to grow; this complexity impacts its users as well as the stakeholders who develop, deploy, operate, and evolve them
Software is a part of the very fabric of civilization, living in its interstitial spaces
•
Annual U.S. Patent Applications/AwardsAnnual U.S. Patent Applications/Awards
ApplicationsAwards
350
300
250
200
150
100
50
0 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000
New or modified source lines of code per year per developer & cumulative
0
100,000,000,000
200,000,000,000
300,000,000,000
400,000,000,000
500,000,000,000
600,000,000,000
700,000,000,000
800,000,000,000
194519481951195419571960196319661969197219751978198119841987199019931996199920022005
New or modified source lines of code peryear
Cumulative source lines of code
© 2007 Grady Booch14
Alan Turing: The Promise
I believe that in about 50 years time it will be possible to program computers…to make them play the imitation game so well that an average
interrogator will not have more than 70% chance of making the right identification after five
minutes of questioning.
Alan Turing
Turing, A., Computing Machinery and Intelligence, Mind, vol. 49, 1950
© 2007 Grady Booch15
Alan Turing: The Limits
This special property of digital computers, that they can mimic any discrete-state
machine, is described by saying that they are universal machines.
Alan Turing
Turing, A., On Computable Numbers, Proceedings of the London Mathematical Society, Series 2, 42, 1936
© 2007 Grady Booch16
Alan Turing: The Beauty
Mathematics, rightly viewed, possesses not only truth but supreme beauty, a beauty cold
and austere like that of sculpture.
Alan Turing
The Alan Turing Memorial @ http://www.btinternet.com/~glynhughes/sculpture/turing.htm
© 2007 Grady Booch17
Alan Turing: The Contradiction
Software-intensive systems are perhaps the most intellectually complex artifacts created by humans
– Later in his life, Turing himself faced personal oppression by the society he helped preserve
With his work in cryptanalysis, Turing helped defeat Hitler’s oppressive forces
•
© 2007 Grady Booch18
Alan Turing: The Discoveries
1935: Quantum mechanics, probability, logic
1936-38: Turing machine, computability
1938-39: Logic, algebra, number theory
1939-42: Bombe (machine for Enigma decryption)
1947-48: Computer and software design
1948: Programming, neural nets, AI
1950: First serious mathematical use of computer
1952: Non-linear theory of biological growth
Hodges, A., Alan Turing: The Enigma, New York, New York: Walker & Company, 2000
© 2007 Grady Booch19
The Limits of Software
Laws of physics
Laws of software
Challenge of algorithms
Difficulty of distribution & concurrency
Problems of design
Importance of organization
Impact of economics
Influence of politics
Limits of human imagination
Fundamental
Human•
© 2007 Grady Booch20
Laws of Physics
The speed of light
– Has pragmatic implications for distributed systems
Relativistic effects
– There is no such thing as absolute time
Quantum effects
– There are theoretical as well as practical limits to information density
Thermodynamic effects
– Software is weightless/containers for software are not
– Computation dissipates heat
© 2007 Grady Booch21
Laws of Software
Sometimes we can’t do it
– Halting problem
– Gödel's theorem/highly non-computable problems
Sometimes we can’t afford to do it
– Sorting problem/Towers of Hanoi/chess
– Exponential time
Sometimes we just don’t know
– Traveling salesman/scheduling/bin packing
– NP complete
Harel, D., Computers, Ltd: What they Really Can’t Do, Oxford, England: Oxford University Press, 2003
© 2007 Grady Booch22
Challenge of Algorithms
Compression
Photorealistic rendering
Speech recognition
Simulation
Knowledge representation
Intimate/massive parallelism
QuickTime™ and aH.264 decompressor
are needed to see this picture.
Halo 3 @ http://www.bungie.net •
© 2007 Grady Booch23
Difficulty of Distribution/Concurrency
A distributed system is one in which the failure of a computer you didn’t even know existed can render your computer unusable (Leslie Lamport)
The average developer does not have, as a core competency, the ability to develop secure, concurrent, and distributed systems
© 2007 Grady Booch24
Problems of Design
The entire history of software engineering is that of the rise in levels of abstraction
The limitations of human understandability
Building for resilience
Sometimes worse is better
The discovery of patterns
© 2007 Grady Booch25
Importance of Organization
All meaningful development is formed by the resonance of activities that beat at different rhythms– The activities of the individual developer– Social dynamics among small sets of developers– Dynamics among teams of teams
Work products and work flows Parallel development The cacophony of stakeholders The tension of high and low ceremony processes
© 2007 Grady Booch26
Impact of Economics
Performance = Effort or time
Complexity = Volume of human-generated code
Process = Methods, notations, maturity
Team = Skill set, experience, motivation
Tools = Software process automation
Performance = (Complexity) (Process) * (Team) * (Tools)
© 2007 Grady Booch27
Influence of Politics
Success as defined by the software development team is sometimes misaligned with success as defined by the management team
Software as a strategic weapon
Software as a pawn
© 2007 Grady Booch28
Limits of Human Imagination
The visionaries
– Alan Kay, Danny Hillis, Marvin Minsky, Rodney Brooks, Bill Joy, Bill Gates, Adele Goldburg, Tim Berners-Lee, Nicholas Negroponte…
The dreamers
– Arthur C. Clarke, Neal Stephenson
© 2007 Grady Booch29
Software developmenthas been, is, and will remain
fundamentally hard
© 2007 Grady Booch30
What We Know
Fundamentals
– Craft crisp and resilient abstractions
– Maintain a good separation of concerns
– Create a balance distribution of responsibilities
Process
– Grow a system’s architecture through the incremental and iterative release of testable executables
© 2007 Grady Booch31
What We Know
Reuse
Patterns
Languages
Architectural codification of certain domains
© 2007 Grady Booch32
Representing Software Architecture
Logical View
End-user Functionality
Implementation View
Programmers Configuration management
Process View
PerformanceScalabilityThroughput
System integrators
Deployment View
System topologyCommunication
Provisioning
System engineering
Conceptual Physical
Use Case View
Kruchen, P. The 4+1 Model View, IEEE Computer, vol. 12 (6), November 1995
© 2007 Grady Booch33
Gallery of Software Architecture: Air Traffic Control
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch34
Gallery of Software Architecture: C3I
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch35
Gallery of Software Architecture: Games
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch36
Gallery of Architecture: Games
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch37
Gallery of Software Architecture: Google
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch38
Gallery of Software Architecture: Pathfinder
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch39
Gallery of Software Architecture: Speech Recognition
Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery
© 2007 Grady Booch40
Movements in Web-centric Architectures
Simple documents
Colorful clients
Simple scripting
Rise of middleware
Rise of simple frameworks
Emergence of dynamic frameworks
Semantic web
© 2007 Grady Booch41
Handbook of Software Architecture
No architectural reference exists for software-intensive systems
Goals of the handbook– Codify the architecture of a large collection of interesting software-intensive
systems
– Study these architectural patterns in the context of the engineering forces that shaped them
– Satisfy my curiosity
Handbook of Software Architecture @ http://www.booch.com/architecture
© 2007 Grady Booch42
Preservation Of Classic Software
No comprehensive and intentional activity has yet been undertaken to preserve the industry’s seminal software artifacts
There are a number of reasons to act now
– Many of the authors of such systems are still alive
– Many others may have the source code or design documents for these systems collecting dust in their offices or garages
– Time is our enemy
Computer History Museum @ http://www.computerhistory.org
© 2007 Grady Booch43
How We Got Here
1910s beginning of automation
1920s beginning of expansion
1930s beginning of dependence
1940s beginning of von Neuman machines
1950s rise of the machines
1960s rise of the languages and methods
1970s death of the mainframe
1980s age of the personal computer
1990s age of the Internet and new methods
2000s retrenchment
© 2007 Grady Booch44
The Current State
The typical software-intensive system is
– Continuously evolving
– Connected, distributed & concurrent
– Multilingual and multiplatform
– Secure
– Autonomic
Most systems are actually systems of systems
– Services and other messaging mechanisms dominate
© 2007 Grady Booch45
Where We Are Going
2010s age of transparency
2020s total dependence
2030s rise of the machines
© 2007 Grady Booch46
The Future State
Every advance leading to the future state of the world requires the presence of software yet-unwritten as of today
© 2007 Grady Booch47
Languages & Algorithms
Most programmers still write algorithmic snippets in the context of a sea of objects
Legacy XML, Java, C++, and UML persist
Some algorithmic breakthroughs have emerged
– Searching massive quantities of information is still a bit of a struggle
Domain-specific frameworks are mainstream
••
© 2007 Grady Booch48
Platforms
Moore’s law has died
The typical personal computer contains multiple processors, a petabyte of main memory, an exabyte of external memory, and untethered terabit connectivity
Virtual high resolution displays dominate; 3D windows, mice, gestures, and voice are the usual mechanisms for interaction
Form factors will change such that most personal computers will be wearable or embedded; most software is embedded in devices
••
© 2007 Grady Booch49
Operating Systems & Middleware
Operating systems have largely been commoditized
Middleware that does transaction isolation, load balancing, resource management, and data access still dominates
– but it too has largely been commoditized, forcing the platform vendors to keep growing the value pile
••
© 2007 Grady Booch50
Connection
More than ever, the network is the computer
– Monolithic -> client/server -> Web -> grid
Network access is a global utility
Not everything is an enterprise system, but most applications are connected to several
••
© 2007 Grady Booch51
Security
New kinds of cybercrime have arisen
– Unlimited piles of money still do not yield secure systems
– Air gaps are still not enough
Rolling failures still plague some systems
••
© 2007 Grady Booch52
Autonomics
No computer has yet passed the Turing Test (but we have come close)
Most interesting systems exhibit signs of agency and self-repair
•
QuickTime™ and aH.264 decompressor
are needed to see this picture.
Star Trek@ http://www.startrek.com •
© 2007 Grady Booch53
Developer Experience
Most developers have grown up believing that the Internet has always existed
Most programming occurs on the edge of a system and in the interstitial spaces among systems
Most programming is now done by domain-specific developers who only incidentally know how to program
There have been only incremental improvements in programmer productivity and the programming model– CLI-> IDE -> XDE -> CDE
••
© 2007 Grady Booch54
© 2007 Grady Booch55
It is a tremendous privilege to be asoftware professional
it is also a tremendous responsibility
•
© 2007 Grady Booch56
The PromiseThe Limits
The Beauty of Software
Grady BoochIBM Fellow