of the software
play

of the software The ultimate goal of all computer science failure - PowerPoint PPT Presentation

1968 1968 The Lego The general admission of the existence Hypothesis of the software The ultimate goal of all computer science failure in this group of responsible is the program. people is the most refreshing experience James Noble


  1. 1968 1968 The Lego The general admission of the existence Hypothesis of the software The ultimate goal of all computer science failure in this group of responsible is the program. people is the most refreshing experience James Noble Designers, programmers and engineers must once again come to know and comprehend the Victoria University of Wellington composite character of a program, both as an I have had in a number of years entity and in terms of its various parts. New Zealand 7 Dijkstra 8 The Dream The Dream 1968 Robinson, Hovenden, Hall, Rachel The market would consist of specialists in Fordism … has four basic principles: In the beginning, In the future system building, who would be able to use tried • standardised products parts for all the more commonplace parts of • repeated tasks having potential for so our myths and stories tell us, Programs will be built out of reusable parts their systems. … The ultimate consumer of automation systems based on components ought to see • unautomated tasks analysed using work the programmer created the program considerably improved reliability and Software parts will be available worldwide study methods, known as Taylorism. performance, … and also to avoid the now • production lines with the work moving to prevalent failings of the more mundane parts of from the eternal nothingness of the void. Software engineering will be set free systems, which have been specified by experts, the workers. from the mundane necessity and have then been written by hacks. --- Hugh Robinson, Fiona Hovenden, Pat Hall and Janet of programming Rachel,{\it Postmodern Software Development} 3 4 --- M. Douglas McIlroy, {\it Mass Produced Software Components} 9 10 The Lego Hypothesis The Lego Hypothesis An Experiment Programs can be built out of many small • Components are atoms • Look at the structures of object graphs independent components – Components are small – Components are indivisible In the same way that a model house – Components are substitutable can be built up out of many small – Components are more similar than different independent Lego blocks – Components are coupled to only a few, neighboring components – Components are abstract encapsulations • All components are equal • A system can be explained reductively from its components and their composition Python Pictures by Andreas Zeller & Thomas Zimmermann 5 6 11 20K edges 12 http://www.st.cs.uni-sb.de/memgraphs/ 1 2

  2. gcc JDK 1.5 13 14 19 20 80K edges Hayden Smith, VUW 1968 Power Law • N k � R k s There are of course many good systems, • Highly Skewed but are any of these good enough to • Mode have human life tied on-line to • Median • Mean them , in the sense that if they fail for • Long Tail more than a few seconds, there is a fair • Scale Free chance of one or more people being killed? Brian Randell 15 16 21 22 Work by Alex Potanin et al http://www.comp.vuw.ac.nz http://www.elvis.ac.nz Pascal Linux & Java A whole world of programs! The Problem of Prime Numbers • Fifty years of software “The task is to instruct a computer • Thirty years of “ software engineering" to print a table • Software is everywhere of the first thousand prime numbers, 2 being considered the first prime number.” Also Wheeldon+Counsell • But not the kind of software we imagined! E.W.Dijkstra, Notes on Structured Programming Valvarde+Solé 17 18 23 24 3 4

  3. ? The Problem of Prime Numbers The Problem of Prime Numbers Postmodernity “The task . . that condition in which, for the first How do we do this is to instruct a computer time, and as a result of when we are not writing the to print a table technologies which allow the large- of the first thousand prime numbers, first program in the world? 2 being considered scale storage, access, and re-production of the first prime number.” records of the past, the past appears to be included in the present . E.W.Dijkstra, Notes on Structured Programming Steven Conner, 25 26 Cambridge Companion to Postmodernism 32 Grand Narratives Lyotard • Algorithmic computation — correctness \vspace*{5mm} Recourse to grand • Algorithmic efficiency ACM 2001 Computing Curriculum narratives is forbidden ; …. But, as we have • Software that fails to meet these goals is evidence of the moral weakness of its seen, the “small narrative” is a programmers Martin Rinard, OOPSLA Onward 2005 form which superbly allows imaginative invention, and most of all in science. 33 27 28 34 Little Narratives Eco � How then do you make decisions? The job … is a trial and error – Negotiation between various narratives process , very similar to what – Open to the environment happens in an Oriental bazaar – Contingent, context dependent when you are buying a carpet. The – No single correct answer merchant asks 100, you offer 10 and after an hour of bargaining you � Negotiation � Local correctness agree on 50. 35 36 29 30 http://www.themodernword.com/eco/eco_guardian94.html 5 6

  4. No Big Picture Design Patterns Relations Extreme Programming Aspect-Oriented Design What does this mean for us? Acceptability • Customer and developers • Solution to a problem in a context class Lot { XP negotiate over user stories Mashup String designation; Aspects Section locality; Agile! Glue Code • Small stories MailDeliveryPostcode postcode; about bits of designs • Iterate and Refactor Scrap-Heap int incoming_mail_volume; Open Source Wikis RefuseCollection route; • Build a system, not components • Patterns don’t build double refuse_load; complete, whole programs Scripting Patterns double recycle; 37 … 38 43 44 Good Enough Software Scrap-Heap Programming Aspect-Oriented Design Glue Programming • Programmers work bottom up… “Why do you call me good?” aspect MailDelivery { MailDeliveryPostcode Lot.postcode; • From a Scrap-Heap Good enough for what? int Lot.incoming_mail_volume; � What’s at the end For whom? • Starting with whatever they can } of the power-law? – Find Software neither correct nor efficient aspect RefuseCollection { � Lots of very small components – Scavenge But “good enough” for context of use RefuseCollection Lot.route; – Steal � Large components cannot be changed double Lot.refuse_load; – Google XP - explicitly balances variables � “Glue code” ties them together double Lot.recycle; • Then work out what they can build Acceptability-Orientation class Lot { • Then negotiate about requirements String designation; End-to-end arguments } 40 46 39 45 MASHUP KLF KLF Perl \item[Number One:] So why don't all songs sound the same? When I started designing Perl I lovingly Every Number One song ever written is reused features from many languages … only made up from bits from other songs. Well, it's because although the chords, from C, sh, csh, grep, sed, awk, Fortran, There is no lost chord. notes, harmonies, beats and words have http://www. yes2wind .co.nz COBOL, PL/I, BASIC-PLUS, SNOBOL, No changes untried. all been used before Lisp, Ada, C++, and Python. No extra notes to the scale or hidden their own soul shines through; To the extent that Perl rules rather than beats to the bar. their personality demands attention. sucks, it's because the various features of There is no point in searching for these languages ruled rather than sucked. originality. Larry Wall \\--- Jimmy Caulty and Bill Drummond, {\it The Manual} radio.echoditto.com 41 \\ ---Jimmy Caulty and Bill Drummond, \textit{The Manual} 42 47 48 7 8

  5. The Lego Hypothesis The Lego Hypothesis Revisited In the beginning, • Programs are built out of components – But not Lego components so our myths and stories tell us, – Concrete stuff, not abstractions • Old, new, borrowed, blue… the programmer created the program • Components are not all equal • Interactions from the eternal nothingness of the void. interdependencies are highly complex 49 50 The Lego Hypothesis Today, we have a wide world of software Programs are built out of other programs Software Engineering is programming (in the widest sense) and much more besides 51 Credits Co-conspirator Robert Biddle Java Object Graphs Wrangler Alex Potanin & Hayden Melton Software Structure Wranglers Jerome Doleman & Nick Chapman Maths Wranglers Matt Visser & Marcus Frean Gareth Baxter 53 9

Recommend


More recommend