Grady Booch On Software Engineering 52
aebrain writes "Grady Booch is one of the Big Names in Software Engineering. If you use OOP or UML you're making use of his work. There's an interview with him on .NET that's interesting reading ('Language was once Key - Now it's Design'). Lots about the impedence mismatch between SQL and OOP, what the future holds re .NET and Java, and when UML modelling isn't appropriate."
I know I am fighting with the windmill, but (Score:2, Informative)
See impedance [m-w.com]
Thank you Merriam-Webster.
Impedence mismatches (Score:5, Interesting)
To put it simply, data is handled differently by the storage system in an executing program. Typically we find:
Over that last (at least) 20 years, there have been attempts to remove the database / proogram impedence mismatch. The most radical approach is Orthogonal Persistence. This aims to treat all data the same, irrespective of its lifetime. Data that needs to persist is made to persist without the programmer doing ANYTHING about it.
Classical examples of Orthogonal Persistence are the PS-Algol and Napier-88 programming languages. A notable (relatively) recent example was Sun Research Labs' Forest project which added OP support to Java. Unfortunately, the Forest project was shut down. My guess is that it conflicted with Sun's vision for mainstream Java. Sad.
Re:Impedence mismatches (Score:2, Interesting)
Re:Impedence mismatches (Score:2, Interesting)
Fundamentally, DBMS and programming languages are both meant to do the same thing; i.e. allow you to build "systems". While most people make a clear distinction between DBMS and (and file systems) which handle persistent data and Programming languages which handle in-memory data, this does not need to be so. There is no fundamental law of IT that makes this so. Indeed, the fact that there are Orthogonally Persistent PLs that work clearly
Re:Impedence mismatches (Score:1)
1. Persistence
2. Query languages or query ability
3. Noun Modeling
4. State management
5. Concurrency - Multi-user contention management (locks, transactions, rollbacks, etc.)
6. Backup
Re:Impedence mismatches (Score:1)
Example?
Note that I agree that SQL is not the ideal relational language, but few if any are pushing better relational alternatives right now.
As far as portability, how is being tied to a specific language or application worse than being tied to a specific database vendor? At least being in the DB still allows the *data* to be rea
Re:Impedence mismatches (Score:1)
That was not my intention. Classical DBMS do a lot more besides simply making data persist. But most of the things you list as things that DBMS do could also be done in a fully fledged Orthogonally Persistent Programming Language / environment. For example:
Re:Impedence mismatches (Score:1)
How does an OPPL differ from a "database" then?
Re:Impedence mismatches (Score:1)
It differs in that it has all the functionality / usability of a conventional programming language, including all of the data types / constructors and all of the control constructs you'd expect to see there. Think of (say) a dialect of Java in which the way you accessed / updated data was completely independent of its persistency.
BTW, I didn't mention Java by accident. There are two existing implementations of Java with support for OP; i.e. 'pJama' and 'K
Re:Impedence mismatches (Score:1)
Which language? Application language? A language like Oracle's PL/SQL? If in Java, why is Java better than a relational language (like SQL, although SQL is not the best IMO)?
Think of (say) a dialect of Java in which the way you accessed / updated data was completely independent of its persistency.
I am not sure what you mean by this. Databases are for more than just persistence. If you are only using
Re:Impedence mismatches (Score:1)
Would you write a compiler or a scientific application in PL/SQL? Why not?
I am not sure what you mean by this.
In a typical OPPL (e.g. PSAlgol, Napier88, pJama), the only thing that distingusishes persi
Re:Impedence mismatches (Score:1)
I don't know. I don't write compilers and scientific applications. I thought those all went to India, or soon will, anyhow.
To make any object persist, you simply make it reachable.
What if a non-OOP language/tool needs access, especially query access, to the data?
I've already pointed out that most of what a conventional DBMS does is also doable by the OPPL itself
Doable, and do well at are two different things.
One rea
Re:Impedence mismatches (Score:1)
What if a non-OOP language/tool needs access, especially query access, to the data?
There are lots of answers to that:
Re:Impedence mismatches (Score:1)
Oh boy. Java forever. Even if something better is found (which is not hard to do IMO).
So in short, you eventually turn your OOPL application into a database server and/or a network server. That is about as logical as using a car for a tool shed.
Re:Impedence mismatches (Score:1, Insightful)
Re:Impedence mismatches (Score:2)
Relational fans (like me) tend to put and keep the "noun model" in the database, while OO fans want to put it in application code (sometimes through duplication of what is in the database. Such duplication is to be avoided IMO. It makes for too many change-points.) IMO the noun model is better in the database so that sharing info with other langua
Re:Impedence mismatches (Score:1)
I'd say that languages like OCL and OQL are OO's moral equivalent to a language for relational algebra. But there is still an impedence mismatch between OO query languages (e.g. OCL/OQL) on the one hand and OO programming languages (e.g. Java) on the other. What is needed is a language / environ
Re:Impedence mismatches (Score:1)
OQL is too similar to the CODYSAL (spelling?) query languages of the pre-relational era. It has not caught for similar reasons.
What is needed is a language / environment that supports both paradigms within a single syntactic framework and type system/value domain.
Easier said than done. Further, if you have a strong type system, what about using it with dynamically or type-free languages?
Re:Impedence mismatches (Score:1)
In any case, I spent a couple of summers working for the Persistant Java team at Glasgow. You can still find info on the implementation at:
PJama [sunlabs.com].
Re:Impedence mismatches (Score:1)
testing mentioned once, rational robot not at all (Score:5, Interesting)
This is the most important paragraph in the article:
The healthiest organizations we encounter do development iteratively and incrementally; testing continuously. They have good configuration management policies. A lot of organizations still don't have this. An astounding number of development teams don't use any configuration management tools. This reflects the fact that a lot of software development teams are going about it in an ad-hoc fashion. That's a problem of process. And until they get their process right no tool you throw at them will add value.
Read that 10 times. I've seen it over and over. Happens all the time. I didn't know whether to laugh or cry. I wish he'd mentioned Rational Robot at least once, and the importance of test harnesses in general. gcc and g++ would never have gotten where they are today without dejaGNU, for example.
His comments on the mismatch between relational data and OO data is quite true -- Zope, for example(which is, underneath it all, an OODBMS) just falls over when you start loading it up with 10 GB or so, which is why it's recommended to put an RDB under it for relational data, and access to a chrooted jailed filesystem for big data stored as flat files. It would have been reasonable for him to mention, however, that these issues are addressed in spades by tools such as Oracle 9iAS connected to an Oracle 9i DB, and IBM Websphere connected to a DB2 UDB in the real world. In terms of functionality, these are are the "enterprise-ready" tools that sit in the same space as Zope and PostGreSQL.
I was also surprised that, in his discussion of bringing relational and OO data to the end user he didn't mention Data Warehousing, OLAP (Online Analytical Processing), Metadata Management tools, Multidimensional database technologies, Business Intelligence tools and such as Cognos, Oracle SQL_OLAP and BI_Beans, Coglin Mills, Datastage, etc etc etc. But then, it was already 10 pages long, and the .NO^hET Magazine editors might
not have been able to find the space for the balance of that
discussion.
Well said (Score:2)
Uh, anyhow... (Score:4, Interesting)
1. Tightly written embedded code.
2. Code written by people 'close to the site where it will be used', i.e. code for point-of-sale written by people specialized in the POS biz.
As software development tools become more and more powerful, fewer and fewer guru-level experts are needed. It's far more valueable to the development process to involve the people who actually do the real-world tasks that the software will assist in accomplishing. And those are NOT going to be people who plonked down their $70 for the latest Gooch/Rational Software propaganda hype-hardbacks.
The buzz surrounding 'Object-Oriented' and similar catch phraseology seems like a job program for specialists with no experience outside of software engineering, and a panacea for academics wanting to weave fancy webs.
Well, enough said.
Re:Uh, anyhow... (Score:2, Interesting)
I've worked on large projects that used an OO language, and an OO design, where there were _11_ different abstract "linked list" base classes (huge project started in 1992 before the STL was around, but still being worked on 11 years later in its maintanance phase).
If that's code re-use, then my arsehole's a lilly.
However, I don't think you sharpenned your claws quite enough, as you didn't attack
"Grady Booch is one of the Big Names in Software Engineering"
to which I think you should have said
Re:Uh, anyhow... (Score:2)
Doesn't your comment answer itself? If STL *had* been around, or *gasp* Java, then every competent developer would know there is a single solution that fits their needs. Without even so much as a common standard, there would only be one linked
Re:Uh, anyhow... (Score:2, Insightful)
Re:Uh, anyhow... (Score:1)
And accusing my comment of being luddism doesn't address my point at all- people close to the actual work the computer will be performing have an inherent advantage over people mired in the internal theory of how the computer works. They're not spending 60% of their time in efforts to justify their existence.
Re:Uh, anyhow... (Score:1)
Re:Uh, anyhow... (Score:1)
isn't UML supposed to be a language? (Score:4, Interesting)
He backs up his assertion that programming languages aren't important by saying there is lots of good software written in different languages. But there is lots of good software written without UML. In fact most good software would fall under that heading. Does that mean UML is not important?
Re:isn't UML supposed to be a language? (Score:1)
Re:isn't UML supposed to be a language? (Score:3, Interesting)
UML is mostly meant to be a standard notation to aid communication between people. UML is not merely a design language, but also an analysis language that can be used to model the problem domain. To do this kind of analysis in a programming language would hardly be a good idea
UML is fundamentally OO so impedance matches between UML and OO-languages should not become very big. It's a recommended practice to do design models in UML using the constraints of the implementation language. For instance UML has n
Somebody forgot to review the transcript (Score:3, Informative)
Back to the future? (Score:4, Interesting)
Standing on the other side was the Shlaer-Mellor [projtech.com] method, which advocated design by translation (also called recursive design). In this methodology, you diagram different 'domains' and write code generators to eventually produce executable code directly from the model. CASE tools provide assistance in actually producing software (now there's a novel idea).
UML put a lot more emphasis in 'round tripping' in CASE tools, because you edited artifacts that were derived 'in your head' and often failed to match the original model (would you consider editing java bytecode, or asm files?), culminating in the excellent TogetherJ. In Shlaer-Mellor round-tripping didn't matter - you worked on the model and the translators, never on the end code directly (you modify the translator to alter generated code).
I remember back in the day, all the Booch advocates denigrating Shlaer-Mellor, saying it would never work, but here we are, with Booch telling us he's doing executable UML [projtech.com]...ah well, at least the methodology wars are over - looks like the tool & book vendors won
- Baz
Re:Back to the future? (Score:3, Interesting)
Oh, come on. Give Grady a break. You can't expect him to keep himself fed if he actually did produce something with any longevity. Gotta keep those book sales, Rational tools, and lecture/training circuits a rollin'...
Re:Back to the future? (-1: offtopic) (Score:2)
Funny you should mention that. I have a tape of one of Grady's lectures where he said: Not that it has anything to do with
Problem with "Executable UML" (Score:4, Insightful)
IOW, just because you can program entirely with diagrams, does not necessarily mean you should.
I will agree that some people prefer diagram-based programming, and a tool called LabView has been doing this for years. It tends to match electronic circuit diagrams, so e. engineers grok it fairly quickly. Whether it makes them more productive than those who master code is hard to say.
Perhaps some shops that can hire people who think alike can go diagrams galore, put I don't think it will fly everywhere. Some linguistical people probably think in code no matter what.
Re:Problem with "Executable UML" (Score:2)
My personal preference is to use my own notation (on small projects), sketch it out relationally, and then code the objects and data tiers separate.
Re:pictogram-based programming (Score:1)
I don't think pictures have to be ambiguous. Further, whether text is more "concise and effective" is probably subjective. Pictures can be quite compact and concise. You know the ol' Chinese saying: a picture is worth 1K words.
Another interview with him, released yesterday (Score:3, Informative)
IBM-Developerworks [ibm.com]
How come XPCOM always misses out (Score:1)
Re:How come XPCOM always misses out (Score:1)