{"id":523,"date":"2003-10-14T16:25:14","date_gmt":"2003-10-14T20:25:14","guid":{"rendered":"http:\/\/wordpress.cephas.net\/?p=523"},"modified":"2020-05-27T09:14:41","modified_gmt":"2020-05-27T17:14:41","slug":"martin-fowler-nejug-software-design-in-the-twenty-first-century","status":"publish","type":"post","link":"https:\/\/cephas.net\/blog\/2003\/10\/14\/martin-fowler-nejug-software-design-in-the-twenty-first-century\/","title":{"rendered":"Martin Fowler @ NEJUG: Software Design in the Twenty-first Century"},"content":{"rendered":"<p>I attended <a href=\"http:\/\/www.nejug.org\/2003\/oct03.jsp\">the NEJUG meeting<\/a> in Lowell last week that <a href=\"http:\/\/www.martinfowler.com\/\">Martin Fowler<\/a> spoke at.  I was the guy in the back furiously typing notes, which I&#8217;m presenting for your pleasure here, revised and polished.<\/p>\n<p>Martin started out by saying that he didn&#8217;t know exactly what to talk about and then he launched into a discussion abou the completely new version of UML very near to completion, <a href=\"http:\/\/www.omg.org\/uml\/\">UML 2.0<\/a>.<\/p>\n<p>&middot; newest version of uml has alot of revisions to the metamodel,<br \/>\n &#8212; in lieu of people thinking that uml is all about diagrams and people not really caring all that much about diagrams<br \/>\n &#8212; 3 ways in which uml is commonly used: sketches, blueprints and langauges<\/p>\n<p>&middot; sketches<br \/>\n &#8212; draw diagrams to communicate ideas about software<br \/>\n &#8212; not precise, just an overall picture<br \/>\n &#8212; main idea is to convey &#8216;ideas&#8217;<br \/>\n &#8212; most books that use UML are completely wrong in their use of uml (and almost all are sketches)<br \/>\n &#8212; martin&#8217;s favorite uml drawing tool? a printing whiteboard<br \/>\n &#8212; no whiteboard? then use visio (templates are available on <a href=\"http:\/\/www.martinfowler.com\/links.html\">martin&#8217;s webpage of links<\/a>)<br \/>\n &#8212; <a href=\"http:\/\/www.acknowledge.co.uk\/download\/togetherj.html\">togetherJ<\/a> (an ide?) has built in UML support for sketching<\/p>\n<p>&middot; blueprints<br \/>\n &#8212; software development as an engineering process<br \/>\n &#8212; martin doesn&#8217;t agree w\/ this metaphor<br \/>\n &#8212; one body of people who &#8220;design&#8221; and make all the important design decisions, hand off to another group for implementation<br \/>\n &#8212; reality is that no one cares if the software matches the diagram<br \/>\n &#8212; in real civil engineering the designers check to make sure that the end result matches the original design<br \/>\n &#8212; both parties need to be intimately familiar with the intracacies of the UML specification for blueprints to work<\/p>\n<p>&middot; uml as a programming langauage<br \/>\n &#8212; &#8220;excecutable UML&#8221;<br \/>\n &#8212; &#8220;model driven architecture&#8221;<br \/>\n &#8212; graphics matter less, the meta model takes precedence in this way of thinking<\/p>\n<p>&middot; the people that are driving the standard are both heavily involved with the blueprints and Uml as a programming language direction&#8230;, which means that not many people are thinking about people that use uml as a sketching tool<br \/>\n &#8212; thus, almost all the changes in uml2 are for uml as a programming language<br \/>\n &#8212; these people think that in 10\/20 years no one will be programming in java\/c#, but rather in UML<br \/>\n &#8212; CASE people said the same thing in the 80&#8217;s<\/p>\n<p>couple arguments that might make this possible<br \/>\na) UML is a standard where case is a company (examples: SQL, Java..)<br \/>\n&nbsp;&nbsp;&nbsp;1) however, it&#8217;s a pretty complex standard and not everything is agree upon<br \/>\n&nbsp;&nbsp;&nbsp;2) alot of things are open to interpretation<br \/>\n&nbsp;&nbsp;&nbsp;3) subsets of UML aren&#8217;t made all for execeutable UML<br \/>\n&nbsp;&nbsp;&nbsp;4) digrams can&#8217;t be transferred from one tool to another without a loss of data<\/p>\n<p>b) malapropism for platform indepedence<br \/>\n &#8212; build a platform independent model (without regard to programming language)<br \/>\n &#8212; then do a build to a platform specific model that would then build the source code<br \/>\n &#8212; uml people think of platforms as &#8220;java&#8221; or &#8220;.net&#8221;<\/p>\n<p>c) uml hasn&#8217;t yet approached the discussion of the libraries<br \/>\n &#8212; ie: it can&#8217;t write &#8220;hello world&#8221; yet<\/p>\n<p>sequence diagrams were so easy that anyone could understand just by looking<\/p>\n<p>interaction diagrams, which are new to 2.0, are much more complicated<\/p>\n<p>mf doesn&#8217;t think that code generation will *really* be all that much more productive than regular programming in Java or C#?<\/p>\n<p>mf quotes an engineer who said: &#8220;engineering is different from programming in that engineering has tolerance while programming is absolute.&#8221;<\/p>\n<p>uml&#8217;s success as a programming language hinges on it&#8217;s ability to make people more productive<\/p>\n<p>mf thinks that there will be a growing divergence between the sketchers and the blueprinters\/executeable people<\/p>\n<p>prescriptive vs. descriptive<br \/>\n &#8212; uml is increasing becoming descriptive, not prescriptive<\/p>\n<p>structural engineers use no &#8220;standard&#8221; drawing diagrams, but simply follow &#8220;accepted&#8221; rules&#8230; a trend that MF thinks that UML will probably folllow, we&#8217;ll all use UML, but not necessarily according to the specification <\/p>\n<p>questions that came from the audience<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I attended the NEJUG meeting in Lowell last week that Martin Fowler spoke at. I was the guy in the back furiously typing notes, which I&#8217;m presenting for your pleasure here, revised and polished. Martin started out by saying that he didn&#8217;t know exactly what to talk about and then he launched into a discussion &hellip; <a href=\"https:\/\/cephas.net\/blog\/2003\/10\/14\/martin-fowler-nejug-software-design-in-the-twenty-first-century\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Martin Fowler @ NEJUG: Software Design in the Twenty-first Century<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/posts\/523"}],"collection":[{"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/comments?post=523"}],"version-history":[{"count":3,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/posts\/523\/revisions"}],"predecessor-version":[{"id":3055,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/posts\/523\/revisions\/3055"}],"wp:attachment":[{"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/media?parent=523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/categories?post=523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cephas.net\/blog\/wp-json\/wp\/v2\/tags?post=523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}