Transcript Document
Read’n Writ’n ‘Rithmetic … & Cod’n Grady Booch IBM Fellow © 2007 Grady Booch NUMB3RS @ http://www.cbs.com/primetime/numb3rs/ 2 © 2007 Grady Booch QuickTime™ and a H.264 decompressor are needed to see this picture. “One Hour,” NUMB3RS @ http://www.cbs.com/primetime/numb3rs/ 3 © 2007 Grady Booch Software in the Mainstream An entire generation has grown up believing that the Internet has always existed Software-intensive systems pervade the interstitial spaces of society 4 © 2007 Grady Booch Our civilization runs on software. Bjarne Stroustrup 5 © 2007 Grady Booch 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. 6 © 2007 Grady Booch The Promise Software-intensive Software-intensivesystems systemscan canamplify amplifyhuman human intelligence – They cannot replace human judgment Software-intensive Software-intensivesystems systemscan canfuse, fuse,coordinate, coordinate, classify, and analyze information – They cannot create knowledge • 7 © 2007 Grady Booch The Limits Not Noteverything everythingwe wewant wanttotobuild buildcan canbebebuilt built – There exist pragmatic theoretical and technical limits Not Noteverything everythingwe wewant wanttotobuild buildshould shouldbebebuilt built – There exist moral, economic, social, and political limits • 8 © 2007 Grady Booch The Beauty Software-intensive Software-intensivesystems systemsare areperhaps perhapsthe themost most intellectuallycomplex complexartifacts artifacts created createdby byhumans humans intellectually – 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 • 9 © 2007 Grady Booch 1994 Chaos Report 16.2% of software projects are successful 31.1% of software projects are outright failures 52.7% of software projects are challenged http://www.standishgroup.com 10 © 2007 Grady Booch 2006 Chaos Report 35% of software projects are successful 19% of software projects are outright failures 46% of software projects are challenged http://www.standishgroup.com 11 © 2007 Grady Booch Reasons for Improvement Better project management Iterative development Emerging Web infrastructure http://www.standishgroup.com 12 © 2007 Grady Booch Forces in Software 13 © 2007 Grady Booch Software Engineering Body of Knowledge Project of IEEE, released in 2004 Knowledge areas – Requirements - Configuration management – Design - Management – Construction - Process – Testing - Tools and methods – Maintenance - Quality http://www.swebok.org 14 © 2007 Grady Booch Computing Curricula Project of ACM, first released in 1968 Major subjects – Information structures and processes – Information processing systems – Methodologies – Mathematical sciences – Physical and engineering sciences Curriculum 68, Communications of the ACM, Vol. 11 (3), March 1968. 15 © 2007 Grady Booch Computing Curricula (Computing Topics) Data structures Theoretical numerical analysis Programming languages Methods of applied mathematics Models of computation Optimization theory Computer design and organization Combinatorial mathematics Translators and interpreters Mathematical logic Computer and operating systems Number theory Special purpose systems Probability and statistics Numerical mathematics Operations analysis Data processing and file management General physics Text processing Basic electronics Computer graphics Circuit analysis and design Simulation Thermodynamics and statistical mechanics Information retrieval Field theory Artificial intelligence Digital and pulse circuits Process control Coding and information theory Instructional systems Communication and control theory Elementary analysis Quantum mechanics Linear algebra Differential equations Algebraic structures Curriculum 68, Communications of the ACM, Vol. 11 (3), March 1968. 16 © 2007 Grady Booch Historical Perspectives Computing as mathematics Computing as engineering and design Computing as art Computing as science Computing as a social science Computing as interdisciplinary Goldweber, M., et al, Historical Perspectives On The Computing Curriculum, ACM SIGCUE Outlook, Vol. 25 (4), October 1997. 17 © 2007 Grady Booch Computing Curricula Project of ACM and IEEE, released in 2005 Major disciplines – Computer engineering – Computer science – Information systems – Information technology – Software engineering http://www.acm.org/education/curricula.html 18 © 2007 Grady Booch Computing Curricula (Computing Topics) Algorithms and complexity Architecture Discrete structures Graphics and visual computing Human-computer interaction Information management Intelligent systems Net-centric computing Operating systems Programming fundamentals Social and professional issues Software engineering http://www.acm.org/education/curricula.html 19 © 2007 Grady Booch Computing Curricula (Computing Topics) Programming fundamentals Analysis of technical requirements Iterative programming Engineering foundations for software Algorithms and complexity Engineering economics for software Computer architecture and organization Software modeling and analysis Operating system principles and design Software design Operating systems configuration and use Software verification and validation Net Centric principles and design Software evolution Net Centric use and configuration Software process Platform technologies Software quality Theory of programming languages Computer systems engineering Human-computer interaction Digital logic Graphics and visualization Embedded systems Intelligent systems Distributed systems Information management theory Security issues and principles Information management practice Security implementation and management Scientific methods Systems administration Legal/professional/ethics/society Management of information systems organization Information systems development Systems integration Analysis of business requirements Digital media development E-business Technical support http://www.acm.org/education/curricula.html 20 © 2007 Grady Booch K-12 Model Curriculum Project of ACM, released in 2003 Sructure – Foundations of computer science (K-8) – Computer science in the modern world (9-10) – Computer science as analysis and design (10-11) – Topics in computer science (11-12) http://csta.acm.org/Curriculum/sub/ACMK12CSModel.html 21 © 2007 Grady Booch Missing Curriculum Estimation, procrastination, and motivation Programming and testing Tools Documentation Users and User Interface Delegation and interpersonal skills Meetings Health and appearance Finance and future http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 22 © 2007 Grady Booch Estimation, Procrastination, and Motivation Personal estimation: why it is going to take more than two weeks to hit your deadline Why cramming for deadline is effective at school but not in the workplace The Internet: do you really need it for your job? The passion of the code: loving what you do Metrics: what isn’t measured, isn’t done Focus on the important, not the immediate http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 23 © 2007 Grady Booch Programming and Testing Why we don’t’ teach scripting languages even though you’ll use them more often than Fortran, Pascal, C, or Java All programming is maintenance programming Why re-writing from scratch is always the worst choice Verification: if it wasn’t tested it doesn’t work Automation vs doing it by hand: what is more efficient? Hardening: the only bug-free code is old code The turtle and the rabbit: fast and lazy vs slow and diligent http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 24 © 2007 Grady Booch Tools Don’t blame the tools (even though the tools suck) Don’t reinvent the wheel: leveraging open source How version control will save your life Text editors: why notepad isn’t enough Bug tracking: more than Post-It notes Back up strategy: painful but necessary http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 25 © 2007 Grady Booch Documentation Diagrams, diagrams, diagrams: a picture is worth a thousand words English: not just for managers Automation document generation: why documentation should be tied to code Abbreviation: why abbreviating four to five helps no one http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 26 © 2007 Grady Booch Users and User Interface Keep it simple, stupid Cognitive overload Users are people, not problems Support isn’t a four letter word (it’s seven) Servicing interrupts: getting work done while supporting coworkers http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 27 © 2007 Grady Booch Delegation and Interpersonal Skills Passing the buck and shifting the blame Making small talk when you have nothing in common Why co-workers are companions, not competition Trust issues: don’t assume that what your co-worker gave you works Bribing IT: getting your computer problems fixed in a reasonable time http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 28 © 2007 Grady Booch Meetings How to avoid meetings Who to invite to meetings How to stay awake in meetings when they are unavoidable Shutting up: keeping meetings productive when you have nothing useful to say Why design by committee doesn’t work http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 29 © 2007 Grady Booch Health and Appearance Staying in shape even though you’re sedentary Eating healthy when you have fast food every day Hygiene: friend of foe? World Wide Wassup: meeting your mate on the Internet I am pretty: why do into consulting or marketing http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 30 © 2007 Grady Booch Finance and Future Planning for retirement Public companies vs start ups: pros and cons How much of the company do VCs own? Stock options dos and don’ts How to evaluate benefits compared to salary http:engtech.wordpress.com/2007/03/01/missing_programmer_curriculum/ 31 © 2007 Grady Booch Handbook Of Software Architecture (Genres) Artificial intelligence Commercial and non-profit Communications Content authoring Devices Entertainment and sports Financial Games Government Industrial Legal Medical Military Operating systems Platforms Scientific Tools Transportation Utilities http://www.booch.com/architecture 32 © 2007 Grady Booch Lessons Learned Essential skills – Abstraction – Collaborative development Metaskills – Fundamentals – The ability to learn – Passion, beauty, joy, and awe 33 © 2007 Grady Booch The Limits of Software Laws of physics Fundamental 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 34 Human • © 2007 Grady Booch 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 35 © 2007 Grady Booch 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 36 © 2007 Grady Booch Challenge of Algorithms Compression Photorealistic rendering QuickTime™ and a H.264 decompressor are needed to see this picture. Speech recognition Simulation Knowledge representation Intimate/massive parallelism • Halo 3 @ http://www.bungie.net 37 © 2007 Grady Booch 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 38 © 2007 Grady Booch 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 39 © 2007 Grady Booch 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 40 © 2007 Grady Booch Impact of Economics Performance = (Complexity) (Process) * (Team) * (Tools) Performance = Complexity Process Team Tools 41 = = = = Effort or time Volume of human-generated code Methods, notations, maturity Skill set, experience, motivation Software process automation © 2007 Grady Booch 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 42 © 2007 Grady Booch 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 43 © 2007 Grady Booch Software development has been, is, and will remain fundamentally hard 44 © 2007 Grady Booch 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 45 © 2007 Grady Booch What We Know Reuse Patterns Languages Architectural codification of certain domains 46 © 2007 Grady Booch Representing Software Architecture Logical View End-user Functionality Process View Implementation View Use Case View Programmers Configuration management Deployment View System integrators Performance Scalability Throughput Conceptual System engineering System topology Communication Provisioning Physical Kruchen, P. The 4+1 Model View, IEEE Computer, vol. 12 (6), November 1995 47 © 2007 Grady Booch Gallery of Software Architecture: Air Traffic Control Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 48 © 2007 Grady Booch Gallery of Software Architecture: C3I Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 49 © 2007 Grady Booch Gallery of Software Architecture: Games Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 50 © 2007 Grady Booch Gallery of Architecture: Games Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 51 © 2007 Grady Booch Gallery of Software Architecture: Google Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 52 © 2007 Grady Booch Gallery of Software Architecture: Pathfinder Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 53 © 2007 Grady Booch Gallery of Software Architecture: Speech Recognition Gallery of Software Architecture @ http://www.booch.com/architecture/architecture.jsp?part=Gallery 54 © 2007 Grady Booch Movements in Web-centric Architectures Simple documents Colorful clients Simple scripting Rise of middleware Rise of simple frameworks Emergence of dynamic frameworks Semantic web 55 © 2007 Grady Booch 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 softwareintensive 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 56 © 2007 Grady Booch 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 57 © 2007 Grady Booch 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 58 © 2007 Grady Booch 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 59 © 2007 Grady Booch Where We Are Going 2010s age of transparency 2020s total dependence 2030s rise of the machines 60 © 2007 Grady Booch The Future State Every advance leading to the future state of the world requires the presence of software yetunwritten as of today 61 © 2007 Grady Booch 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 • 62 © 2007 Grady Booch 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 63 © 2007 Grady Booch • 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 • 64 © 2007 Grady Booch 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 • 65 © 2007 Grady Booch 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 • 66 © 2007 Grady Booch 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 a H.264 decompressor are needed to see this picture. • Star Trek@ http://www.startrek.com 67 © 2007 Grady Booch 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 domainspecific 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 68 • © 2007 Grady Booch The Contradiction systems arethat perhaps the most Software-intensive The Internet changes the way individuals intellectually complex artifactscollaborate created by humans communicate and businesses – The Internet provides an environment where terrorists and other criminal enterprises can operate with little fear of detection • Internet Mapping Project @ http://www.cheswick.com/ches/map/index.html 69 © 2007 Grady Booch The Contradiction are perhaps the mostfor Software-intensive The Web provides systems unprecedented mechanisms intellectually complex artifacts created by humans social networking – The Web creates a greater opportunity for the exploitation of children as well as fraud and theft directed against individuals and organizations • Britney Spears @ http://www.myspace.com/britneyspears 70 © 2007 Grady Booch The Contradiction perhaps the most Software-intensive Software-intensivesystems systemsare permit real time and intellectually complex artifacts created by humans distributed access to information – Software-intensive systems can erode personal privacy and other basic human rights • WeatherLink @ http://www.davisnet.com 71 © 2007 Grady Booch The Contradiction systems are perhaps the most Software-intensive Email and other software-intensive mechanisms intellectually complex created by humans increase the velocity ofartifacts communication – Email and the aging of digital archives threatens the preservation of history • Project Gutenberg @ http://www.gutenberg.org 72 © 2007 Grady Booch The Contradiction perhaps the most Software-intensive Software-intensivesystems systemsare create new forms of intellectually complex artifacts created by humans artistic expression – Piracy disrupts the economic underpinnings of traditional media companies and can dilute the intellectual property of artists • Halion @ http://www.steinberg.net 73 © 2007 Grady Booch The Contradiction perhaps most Software-intensive Software-intensivesystems systemsare enable and the accelerate intellectually complex artifacts created by humans scientific research – Software-intensive systems are at the center of a new generation of offensive and defensive weapons • Entrez Genome Project @ http://www.ncbi.nlm.nih.gov/entrez 74 © 2007 Grady Booch The Contradiction systems are perhaps the most Software-intensive Software is a part of the very fabric of civilization, intellectually complexspaces artifacts created by humans living in its interstitial – 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 Annual U.S. Patent Applications/Awards New or modified source lines of code per year per developer & cumulative 800,000,000,000 350 300 700,000,000,000 600,000,000,000 250 500,000,000,000 400,000,000,000 Applications Awards New or modified source lines of code per year Cumulative source lines of code 200 300,000,000,000 200,000,000,000 100,000,000,000 19 4 5 19 4 8 19 5 1 19 5 4 19 5 7 19 6 0 19 6 3 19 6 6 19 6 9 19 7 2 19 7 5 19 7 8 19 8 1 19 8 4 19 8 7 19 9 0 19 9 3 19 9 6 19 9 9 20 0 2 20 0 5 0 150 100 50 0 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 • 75 © 2007 Grady Booch It is a tremendous privilege to be a software professional it is also a tremendous responsibility • 76 © 2007 Grady Booch Read’n Writ’n ‘Rithmetic … & Cod’n Grady Booch IBM Fellow 77 © 2007 Grady Booch