|
|||
|
Thank You Martin Fowler "Software Design in the Twenty-first Century" Tuesday November 11 Remarking that a title like "Software Design in the 21st Century" gave him
license to talk about almost
anything, Martin Fowler eschewed the typical laptop presentation and instead walked around and commented
on some current industry themes."Driven", he observed, was a word now in vogue. Everything needs to be driven. Model driven, market driven, test driven, people driven -- it has to be driven now. He started in with some comments on Model Driven Architecture and the recent release of UML 2.0. Martin noted that this latest release of UML helped motivate the third edition of his best selling "UML Distilled". UML, he claimed, was initially valuable because it replaced the multiple differing notations that existed in the early 90's with a single standard. However, subsequent evolutions into UML 2.0 have not necessarily made UML more useful, but instead have responded to the voices on the standards committees, adding more and more features, making UML very complicated. "Should a modeling language be descriptive or prescriptive?", mused Martin, comparing it to the notations in structural engineering. "And what is the test of a good notation?", he asked out loud, responding with examples that a good notation should not require explanation to convey meaning at a desired level of abstraction. He saw the use of UML by three constituencies: "Sketchers", were those who used UML to communicate designs on white boards and with lightweight drawing tools, such as Visio, that did not perform checking. For those users, accuracy was necessary, but not necessarily precision. "Blueprinters", were designers who used UML to precisely communicate software specifications to programmers for implementation, using expensive tools with repositories and constraint checking. For those users, both accuracy and precision were necessary. "UML as a Programming Language", were those who believed that UML could fully describe a platform independent implementation. Model Driven Architecture, or MDA, was heading down that road. Fowler was pessimistic about its success, pointing out that although UML does a great job of describing the logic of static relationships and state machines, it has no capability for describing user interfaces, and cannot even model the trivial "Hello World" program, let alone complex user interfaces or event driven sequencing. ![]() In a quick audience survey, Martin found that some were not using UML at all, the majority were using UML as " Sketchers", a few were using UML as "Blueprinters", and none were involved with UML as a "Programming language", to directly produce code from models. He observed that Together-J, although a useful Java development tool, was not UML as a Programming Language, but really just a clever model transformer for Java code. Useful, yes, but worth the cost, uncertain. Martin offered that a tool to manage and understand dependencies was high on his list of useful tools for larger projects. Returning to the "driven" theme, Martin discussed Test Driven Development, pointing out that, when used properly, this approach had the major benefit of focusing on the software interfaces and leading to more thoughtful designs, especially when coupled with rigorous refactoring. In addition, the body of test cases often served as great examples of usage, improving the documentation for the code. A final "driven" topic was "Domain Driven Design", and Martin threw in a plug for a recent book by Erik Evans. He mentioned three books at the meeting: "Domain Driven Design", by Eric Evans "Enterprise Integration Patterns", by Gregor Hohpe and Bobby Woolf "The Art of Unix Programming" by Eric Raymond The meeting concluded with a lively Q&A session. During that time a question was asked about the top recommendations that Martin would make when reviewing projects in trouble. Martin responded with a list of four: --1-- Most project problems are people problems, and he quickly reviewed several scenarios where changing the people, or dramatically reducing the number of people, turned projects around. --2-- Automated build and continuous integration. --3-- Iterative and Incremental development. --4-- Be willing to throw away everything. ! Martin Fowler is Chief Scientist at ThoughtWorks, an internet systems integration and consulting company. For a decade he was an independent consultant pioneering the use of objects in developing business information systems. He’s worked with technologies including Smalltalk, C++, object and relational databases, and EJB with domains including leasing, payroll, derivatives trading and healthcare. He is particularly known for his work in patterns, the UML, lightweight methodologies, and refactoring We gave away 33 books, courtesy of Addison Wesley, Prentice-Hall PTR, and ThoughtWorks. Reported by Terry McAuliffe |