Enterprise Patterns Book Review - What do you think?

Discussions

News: Enterprise Patterns Book Review - What do you think?

  1. I have put significant effort into codifying patterns found in large business enterprises. Grady Booch himself even entered my book review project, found right here on TSS, in his Handbook of Software Architecture Blog.

    Book review project for: Patterns of Enterprise Business Solutions

    Please take a look at my patterns project: http://www.theserverside.com/books/review/PatternsEBS.tss

    I would really appreciate your feedback. I am looking for help in these specific areas:

    1. What do you think of the overall patterns project concept? Do you find it useful to have a codification of the really huge patterns that you find within the business enterprise?

    2. Does the book title make sense to you? When you read the title do you anticipate seeing the patterns that you find in the narratives and catalog?

    3. Do you like the “drill-down” approach found in chapter 1 – 4, starting at higher-level patterns such as B2C, B2E, and B2B, and then detailed cataloging of popular patterns within them?

    4. Do you see patterns cataloged (or proposed) that you are curious about? Would you prefer to see additional or different patterns? If so, what would you add and/or what would you eliminate?

    5. Do you like the pattern catalog’s template/format? Would you change anything about the template/format?

    6. Do like the detailed examples (in some cases reference implementations)?

    7. Do you think that it is appropriate to cover both J2EE and .NET examples?

    Thanks for your help. I truly hope that my patterns are helpful to you in your day-to-day work or at least in satisfying your curiosity regarding Patterns of Enterprise Business Solutions.

    Bonus Content:
    See Booch’s Blog: http://www.booch.com/architecture/blog.jsp?archive=2004-10.html

    You will probably also enjoy Booch’s project page: http://www.booch.com/architecture/index.jsp

    Threaded Messages (17)

  2. To shove or not to shove?[ Go to top ]

    I just glanced over one document, DynamicWebPage.
    http://www.somedomain.com/index.html - This URL requests a static Web page.
    How do you know that it is web page? How do you know that web page is static?
    However, there are no dynamic aspects to this request.
    There is not enough information to consider the request non-dynamic by looking only at URL. POST request does not supply input data in the location header.
    The Web server dispatches a URL containing a special directive to a special request handler.
    This is really deep. Well, my own writing is no better at all, but you asked for comments, did not you? I am grumpy today.
    http://www/somedomain.com/dyna-container/dyna-service?param1=x - [This] URL has what could be considered a special directive.
    Shall we go ahead and invent a name for this directive, say, query parameter?
    Because some request processing engines manage custom components privately, including their deployment and runtime execution, they may be called containers.
    Obscure but sounds scientific.
    The custom component receives the request and performs some sort of processing.
    Another deep thought. "Some sort" is especially great.
    Components managed inside the Web component container may use an API to dispatch requests to other, sibling components.
    Why just sibling?
    Redirecting changes the URL
    Redirecting keeps URL in sync (more or less) with the response served back to the browser, so it kinda changes it. Also, one can redirect to the same exact URL, for example to convert POST request into GET using 303 responce code.
    [With forwarding] no Browser round-trip is necessary. While this is a more optimal approach, the Browser’s address text box will contain the URL of the original request to Web Component A, rather than Web Component B.
    Something cannot be "more optimal", it can be either better, worse, optimal or not optimal at all. The address text box content does not really matter. What matters, that this address is now becomes the address of the whole chain from A to B. Here come the double submit problem and "Do you want to resend POSTDATA?" messages, which, probably, should be mentioned here as the price for "more optimal" solution.
    If you want to alter the presentation of the response, you must update the custom component, which is likely implemented in some sort of modern programming language.
    Just great.
    The output itself is difficult to produce because any HTML or XML output produced is being shoved through an output file stream.
    Nice term for this pseudoscientific text. And, why is diffucult? And why it is a file stream?
    So another important aspect of the Dynamic Web Page is the use of template pages interspersed with programming logic hosted by a scripting syntax to produce the live data.
    This is just one of zillions of possible solutions.
    http://www.somedomain.com/page.type - The filename suffix is important to the Web server’s ability to dispatch the template page request. In the same way that a URL identifies a custom component, a URL also identifies a template page. The .type filename suffix tells they Web server to direct the request to the template page’s special request handler.
    All this simply boils down to the URL mapping.
    Basically the Web component container allows developers to define their own set of tags.
    Any web component allows that?
    When the consumer requests a page...
    Consumer does not request a page, he requests a resource. Which may or may not be a page. Some people are too fixed up on the page paradigm.

    Ugh, this particular chapter is of no use for a developer, because it (a) covers only a very limited aspect of dynamic content and (b) it tells about things that are or should be well known to any web developer. Maybe this stuff can be interesting to mid-level executives so they can come to developers and tell them "We are going to use custom tags in the next project", or to middle-schoolers looking for a career of a lifetime.

    But if you put more "some", "some sort", "kind of", "certain" into this, it can become a good dissertation, unreadable and unvaluable.
  3. Who is this for?[ Go to top ]

    I glanced at the Introduction. It shows some nice sequence diagrams and discusses design patterns. Then you have what was quoted below. You expect an engineer to know UML but not know what a URL is?
    http://www.somedomain.com/index.html - This URL requests a static Web page.
    How do you know that it is web page? How do you know that web page is static?

    Seeing this almost caused me to just hit my back button. I work with Cocoon a lot. In that environment index.html might read an XML file and translate it to html. It might cause a directory listing to be nicely formatted. Heck, it might do anything you can conceive of. Rarely will it simply be a static page.

    A general critique. I also glanced at the dynamic web site document. The pictures are nice. But again, the nice use case diagram seems at odds with the level of the text. This is targeted at the experienced beginner? That, and the fac t that the text doesn't actually seem to say anything just leaves me asking, why? The whole point of the chapter seems to be to say that a dynamic web site has live data and to define a few terms in such a high level that they don't mean anything. For example:
    Stylized Page
    Makes dynamic Web pages visually appealing. Addresses various layout concerns that are business focused, such as advertisements, special promotions, and key informational links. This pattern focuses on providing its behavior on the fly and making the pages’ style changeable with a minimum of impact on the Web site.
    a) I see a description/definition of "stylized page" here. But what is the pattern? Then again, this definition is so high level I'm not even sure it means much.
  4. RE: Who is this for?[ Go to top ]

    I glanced at the Introduction. It shows some nice sequence diagrams and discusses design patterns.

    Thanks!
    You expect an engineer to know UML but not know what a URL is?

    Hmmm. No, actually I don't expect either. There are a lot of engineers whose eyes gloss over when you talk about either. But that doesn't influence me to take an elitist approach to these subjects. I am mostly concerned with assembling the patterns that are in the business enterprise, and using standards such as UML to codify them. Even if someone couldn't create a UML sequence diagram, chances are pretty good that they could understand a lot about one placed in front of them.

    My book is primarily for architects and level 1-5 engineers who would like to understand the patterns and even implementation details behind many of the solutions found in the business enterprise.

    Think about the engineer with 10 years of experience. Just because she has 10 years of experience doesn't mean that she knows anything about the Web. What if she's been working a Quark doing desktop publishing software--maybe page layout algorithms and the like--for the past 10 years? Now she wants to do something different, or Quark assigns her to a new project that involves Web development. Well, it sucks to be her! Not gonna read about Dynamic Web Site in my book! No, she should'a picked that up 5 years ago at least! She's toast!

    Really, I need to fix some wording in a few patterns. Cool, I'll sure do it. But I'm not going to throw out the baby with the bath water.
    a) I see a description/definition of "stylized page" here. But what is the pattern? Then again, this definition is so high level I'm not even sure it means much.

    I am not sure I know what you mean. Could you clarify. And I see a point "a)". Might I assume that you were going to mention a point "b)" and possibly "c)"?

    Vaughn
  5. RE: To shove or not to shove?[ Go to top ]

    I am grumpy today.

    Really? ;) Well, you must be feeling much better now.

    Honestly, thanks for taking the time to kick my butt-- repeatedly. I will use your feedback to try to clarify my points. How about turning your energy on the Word documents that you so hate in the download? Turn on "Track Changes Mode" and tell it like it is!
    Well, my own writing is no better at all

    No problem. I'd be glad to take your comments and edit them as needed. It appears that you know a lot more about this particular subject, and I would sincerely appreciate you adding your expert thoughts to my efforts.

    Vaughn
    Pseudoscientist
  6. What's New Here?[ Go to top ]

    What does this work offer that "Core J2EE Patterns" and Martin Fowler's "Patterns of Enterprise Application Architecture" do not?

    %
  7. RE: What's New Here?[ Go to top ]

    "Core J2EE Patterns" and Fowler's "P of EAA" have some overlap. They deal with architectural concerns, such as handling client web requests, handling database data as objects, transporting data across remote tiers, etc.

    I address a higher level pattern, which actually uses patterns found in CoreJ2EE and P of EAA, as well as GoF patterns, very extensively. Consider many of the patterns I address as those behind full-on enterprise products, such as Identity and Access Management, Search Engine, Content Management, Rules Engine, Business Process Management, and the like.

    However, rather than being a cleaverly disguised product catalog, I produce a true pattern catalog. This way you can understand the general-purpose, higher-level patterns behind the business enterprise. I also provide example code, even simple reference implementations, as well as open source and commercial product examples of pattern implementations.

    If you'd like to read chapter 1, Introduction, I think this approach is made clear. As well it actually steps you through the differences between various pattern types, which I present as a stack:

    Historical View
    ---------------
     - design patterns
     - pattern languages
     - architecture patterns
     - integration patterns
     - enterprise business patterns

    Logical View
    ------------
     - enterprise business patterns
     - architecture and integration patterns
     - design patterns

    (pattern languages may exist at any of the above logical levels)

    I hope this helps. Please let me know what you think!

    Vaughn
  8. Printer-Friendly Article[ Go to top ]

    PrinterFriendlyArticle.doc

    Written: The business needs to provide the means to reformat the page to make it compatible with the wide variety of printers that consumers may use.
    Should read: The business needs to provide the means to format the resource to make it compatible with the wide variety of media formats that consumers may use.
    There is value in reusing the same automated engine that produced the Stylized Page to create the bland page too.
    Is he talking about... you know... about...
    Place one or more links on every page for which you will provide a printer-friendly version. ... When the consumer selects the Printer-Friendly Version link, run the raw content through your transformation engine using the "bland" transformation description. When the page response is generated return it to the browser.
    Nooo! I thought he was talking about using CSS and switching output according to media type.

    That's enough reading for me.
  9. RE: Printer-Friendly Article[ Go to top ]

    That's enough reading for me.

    Good! Word, Michael, Word. You are thinking of Track Changes Mode... Stop reading and write! Oh, yeah, Please!

    Vaughn
  10. RE: Printer-Friendly Article[ Go to top ]

    How about turning your energy on the Word documents that you so hate in the download? Turn on "Track Changes Mode" and tell it like it is!
    Vaughn, thanks for not taking this personally :) But I think it will be impossible to make changes like your suggest, because I would have to change the whole style of your book. You use a lot of "sort of/kind of" expressions and I understand that you do it to make a more generic statement. But a reader cannot see what exactly you wanted to say and what is the idea, because of this obscure generalizations. They do not add more value to what a reader already might know. And even with the generalizations, sometimes you make a concrete statements, like index.htm points to a static page, which is true only in the simplest case with default URL mapping. There are enough examples around which hide actual implementation, using innocent htm extension, see the Spring sample, for example.

    As I said my writing sucks, so I am not sure I can write better, but I can see the speck in other's eye.

    The printer-friendly chapter: it would have to be rewritten from scratch, because there is a better approach to output formatting and styling, which is CSS. IE5.0 is buggy, but 6.0 is better, Mozilla is even more compliant. MSIE6 was released what, 4 years ago? No one have an excuse for not doing an upgrade. Anyway, pages nicely styled with CSS can be made IE5 compatible, with an additional effort though. Hmm, need a co-author? ;)

    The important note that I want to make is this: eight, or even five years ago there was a clear distinction between web designer and web app developer. A desigher was creating an HTML page (with all those ugly 1pt images and tables and frames) with placeholders for data, and web developer was filling the data in (here is your dynamic page). But now everything is different, a page can be designed with XHTML using DIV tags only, and then reformatted using CSS. This formatting can be provided for different user tastes and for different media. Or, the document can be defined with XML and document structure can be formatted with XSL, and then spruced up with CSS and be sent to browser as HTML. Or, the XML data itself can be fed to browser, which would load associated XSL script and will format the data as needed, and then the script would reference the CSS stylesheet.

    So, now the web designer moves on a different level, from simple HTML to XHTML/CSS and maybe XSL. Javascript is as important as before. Web developer moves from inserting data into JSP page to creating a proper XHTML or XML file, and maybe formatting it with XSLT, the result of with will be used by web designer as a skeleton. Web developer now has to ensure that XML has enough elements to produce a proper result, and that XHTML has enough "class" and "id" attributes properly assigned to various DIVs. It takes more upfront planning to make a proper page now, but the result is more rewarding, more compliant, more usable and works on different clients and media types.

    Those who talk about RIA and Flash, they want to go by a different road, creating slow mockups of real windowed applications. I haven't seen windows moving that slow even on the old Windows 3.0 system running on 286 machine. They think that HTML is a horse beaten to death. But HTML is still kicking, XHTML/CSS is a new breath, finally getting the wider acceptance among web designers. This approach must be appreciated by web programmers as well. Granted, this road is not a RIA path, it is more document-oriented. So, both approaches might coexist. But XHTML/CSS provides a better and more compatible way to deliver the content with pluggable formatting and style.
  11. RE: Printer-Friendly Article[ Go to top ]

    Michael,

    I know that the TSS community can be brutal. If I wanted to avoid chastisement in exchange for an inferior product, I would never have posted my stuff. So, thanks again.
    But I think it will be impossible to make changes like your suggest, because I would have to change the whole style of your book. You use a lot of "sort of/kind of" expressions and I understand that you do it to make a more generic statement...

    Please realize that I do not yet have a publisher (I could have, but I don't want one right now), which means that these chapters have had little if any professional editorial done. I am in alpha, or beta at best.

    What you are reading is probably inadvertent and unconscious mannerism. I am not trying to be vague, even if it comes across that way. A good editor would have already beat me up on that. Sorry to all who are subjected to my first-draft imperfections!

    Regarding your catch about index.html, I understand your point and -- believe it or not -- I even knew that already. I simply did not provide enough context in the paragraph to support my conclusion about the resource being static. So, while I accept your correction, please don't assume that an incomplete statement indicates that I am unknowledgeable or incompetent. The very reason for posting the chapters is to find this kind of problem before they go to a publisher. And who better to find it than the community who knows the subject best? TSS! This was Floyd's suggestion and it is what he and Ed and others have done here before.

    Have you ever written a pattern? Believe me, it is pretty difficult. It is not like general writing. There are two major parts to a pattern: 1) the general description, and 2) the example part that shows you some idea of how the pattern might be implemented in a specific context. The second part is kind of easy, because we've all done that many times. But the first part is tough! How do you make the statements in such a way that you do not lock yourself (and your reader) into a specific implementation? Some of my vagueness is probably showing through in an attempt to obey the "laws" of pattern speak while still being meaningful.
    The printer-friendly chapter: it would have to be rewritten from scratch, because there is a better approach to output formatting and styling, which is CSS. IE5.0 is buggy, but 6.0 is better, Mozilla is even more compliant. MSIE6 was released what, 4 years ago? No one have an excuse for not doing an upgrade. Anyway, pages nicely styled with CSS can be made IE5 compatible, with an additional effort though...

    If you want to rewrite it from scratch, that would be fine. Except I'd only caution that you may have already fallen into the trap that I just described above, that must be avoided at all cost.

    My implementation of Printer-Friendly Article is not wrong. It is simply an implementation of the pattern. It is possibly one of many implementations -- possibly thousands. You note a "better" implementation in optimization terms. Awesome! I would recommend that we show both of them. If the supporting pattern text above it is insufficient to provide guidance in your example implementation, then the pattern text must be changed. The more implementations you have of a pattern the better the pattern text will likely be. That's because it provides a richer set of guidelines that have already been discovered by the pattern's originators. In this case, the pattern originator is not me. I am just codifying it. You and and others with CSS experience and my colleagues with XSL:FO experience are really the originators. But here's the potential pitfall: if one starts off with the idea that the pattern IS the example, such as you present, then I'd have to be blunt and say that would be incorrect. I hope that you understand my points, and maybe you already did, which is fine.
    Hmm, need a co-author? ;)

    Yes, but only if you understand how difficult this is and how much time it takes. You may never want to write another word after you are done. I'd also hope that you (or anyone else interested) know as much about huge enterprise products like portal and BMP and the like as you do with Web presentation tier. If you are serious, let's talk: mailto:vaughn at jubatus dot com

    Your knowledge is excellent. I'd like to tap into it as much as possible one way or another. This industry needs more developers like you!

    Vaughn
  12. RE: Printer-Friendly Article[ Go to top ]

    Regarding your catch about index.html, I understand your point and -- believe it or not -- I even knew that already.
    Vaughn, I did not even think that you did not know it. I just thought that this was a pretty specific statement for a rather vague text around. Enough about it :)
    Have you ever written a pattern? Believe me, it is pretty difficult.
    Yep, I have, but turned out that this shiny new idea was well-known for at least ten years ;)
    Post-Redirect-Get Pattern<br/>
    If you want to rewrite it from scratch, that would be fine. Except I'd only caution that you may have already fallen into the trap that I just described above, that must be avoided at all cost.My implementation of Printer-Friendly Article is not wrong. It is simply an implementation of the pattern. It is possibly one of many implementations -- possibly thousands.
    I am not a CSS guru (yet). Being a web app programmer, not a web designer, I discovered it only about half a year ago, but now I am raving about it. Employing CSS is surely a better choice than reformatting HTML, BUT only for modern browsers. I guess, I will start with Track Changes mode, maybe you will like my updates ;)
  13. RE: Printer-Friendly Article[ Go to top ]

    Hi Michael,

    I'm still looking forward to your suggested changes. Are you still planning on visiting the patterns with your writer's cap on? :)

    I am getting close to releasing my next installment: the Search Engine EBP. I look forward to feedback from you and others!

    Kind regards,

    Vaughn
  14. RE: Printer-Friendly Article[ Go to top ]

    Vaughn, I started to put some suggestions in your files, but then left it aside, I am sorry. I want to finish my own small library and article first.
  15. Stylized Page[ Go to top ]

    From StylizedPage.doc: Stylized Page may use XML structured documents to serve content and XSL and XSLT to transform the XML into HTML pages.
    Agree with that. But look at the example:

      <xsl:template match="name">
        <h1><xsl:apply-templates/></h1>
      </xsl:template>

    How did "H1" get there? Don't let the word "Stylesheet" in the XSLT acronim fool you. It is much better to use XSLT to format the structure of the XML document and to build content of the resulting document, and to use CSS to stylize the result.
  16. RE: Stylized Page[ Go to top ]

    How did "H1" get there?

    Good man Michael. You decided to read more, even against your own will. Good.

    Repeat after me: Word, Track Changes Mode. . .

    Vaughn
  17. The eBusiness pattern from IBM is quite similar to this. What's more is IBM as come out with Pattern development kit.. which can identify your high level business solution you are looking for and drive down to the level design patterns.

    The content of the books doesn't give such nice way of putting the problem at context and coming out with design patterns.

    Part II looks like more of intro chapters on web applications.

    Really do we need this??

    I am yet to go through the chapters, which I will be doing later......
  18. RE: IBM Patterns[ Go to top ]

    The eBusiness pattern from IBM is quite similar to this.

    Well, not really. IBM's patterns aren't really patterns. Or at least, they don't really tell you much about the patterns. They just tell you to buy their products.

    My patterns are far different. I actually explain how you might go about implementing the patterns, or where outside of IBM you can find a commercial implementation.
    What's more is IBM as come out with Pattern development kit.. which can identify your high level business solution you are looking for and drive down to the level design patterns.

    Look again. They mostly tell you how to spend $50K/cpu for their solution. While that is not a problem in many cases, it is not the motivation behind my book.

    Do you really think that you will learn how to develop a business solution through drilling down to "design patterns"? Off the top of my head I can think of more than a dozen design patterns involved in, say, Identity and Access Management. If I listed the dozen or more design patterns for you, could you tell me how to implement Identity and Access Management?

    Look again. Both IBM and Microsoft have produced "patterns" that lead you down the garden path of purchasing one or 20 of their products.

    My book is about helping a number of different kinds of stakeholders understand the real patterns that may be assembled to produce a business solution.

    Vaughn