carfield.com.hk agile_2010_Cindy_McCracken.pdf 2012-02-20T16:53:01Z 2012-02-20T16:53:01Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2012-02-20T16:53:01Z Vernon_2011_1.pdf 2011-12-29T15:35:41Z 2011-12-29T15:35:41Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2011-12-29T15:35:41Z StrangeLoop2011-DeanWampler-HeresiesandDogmasinSoftwareDevelopment.pdf 2011-11-29T18:32:37Z 2011-11-29T18:32:37Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2011-11-29T18:32:37Z Object-Oriented.png 2011-07-24T14:36:07Z 2011-07-24T14:36:07Z <br/><img src="/document/software+design/Object-Oriented.png" id="main_img" alt="Object-Oriented.png"/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2011-07-24T14:36:07Z testBus.pdf 2010-01-12T17:28:40Z 2010-01-12T17:28:40Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2010-01-12T17:28:40Z saga.pdf 2009-07-10T15:08:03Z 2009-07-10T15:08:03Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2009-07-10T15:08:03Z Evolving Frameworks: A Pattern Language.pdf 2009-04-18T19:10:25Z 2009-04-18T19:10:25Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2009-04-18T19:10:25Z spec.pdf 2008-09-18T16:54:55Z 2008-09-18T16:54:55Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2008-09-18T16:54:55Z Everything.You.Know.is.Wrong.pdf 2008-09-17T15:08:21Z 2008-09-17T15:08:21Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2008-09-17T15:08:21Z README.txt 2008-03-17T17:25:15Z 2008-03-17T17:25:15Z <br/>Implementations of GoF Design Patterns in Java and AspectJ<br/>Code base documentation<br/><br/><br/>Overview <br/>========<br/><br/>The goal was to provide parallel implementations in AspectJ and Java that <br/>allow for direct comparisons. It has to be noted that most patterns offer <br/>variability in the implementation approach. We choose the one that appeared <br/>to be the most general. Sometimes, the AspectJ version implements a slightly <br/>different (or additional) case(s). This is because AJ sometimes <br/>allows for additional functionality. Please refer to the web page for a <br/>detailed description of this work.<br/><br/>Example Setup <br/>=============<br/><br/>All pattern examples have a class called Main. This class is the test driver <br/>for the particular example. The Main classes are extensively documented using <br/>ajdoc, usually describing the experimental setup and the assignment of roles <br/>to participants. In most cases, the differences between Java and AspectJ <br/>implementations are also mentioned.<br/><br/>Documentation (ajdoc)<br/>=====================<br/><br/>It is possible to generate the ajdoc documentation for either all examples, <br/>for only the reusable library aspects, or for one particular example. Since <br/>ajdoc shows type names without their package (on the left hand side), multiple <br/>types with the same name (but residing in different packages) may be confused <br/>when the documentation for all examples is generated. <br/>==> Generate documentation for all examples: use the makeDocs batch file. <br/> (1) Change to the directory that you extracted the ZIP archive into. (2) <br/> Type "makeDocs" to generate the HTML documentation in the docs <br/> subdirectory.<br/>==> Generate Documentation for the reusable library aspects: use the provided <br/> makeLibraryDocs batch file. (1) Change to the directory that you extracted <br/> the downloaded ZIP file into. (2) Type "makeLibraryDocs" to generate the <br/> HTML documentation in the docs subdirectory.<br/>==> Generate docs for a single example: use the makeSingleExampleDocs batch <br/> file. (1) Change to the directory that you extracted the downloaded ZIP <br/> file into. (2) Call the batch file. It needs two arguments: the name of <br/> the pattern and the language used. For example, type: <br/> "makeSingleExampleDocs singleton aspectj" or type: <br/> "makeSingleExampleDocs templateMethod java".<br/>Within the ajdoc documentation, we tried to separate type names from our <br/>examples and role names (as presented in GoF). We show roles names in italics <br/>and actual type names in code font. This is reflected in the ajdoc <br/>documentation.<br/><br/>Questions, feedback, suggestions, etc.<br/>The AODP web page is <a href="http://www.cs.ubc.ca/labs/spl/aodp.html">http://www.cs.ubc.ca/labs/spl/aodp.html</a> <br/>Please send all questions, feedback, and suggestions to Jan Hannemann <br/>(jan@cs.ubc.ca). We are very much interested in improving our code. <br/>Please do not hesitate to drop us a line.<br/><br/><br/>Appendix<br/>========<br/><br/>This appendix outlines how to compile and run the examples provided, and how <br/>to generate ajdoc documentation. A number of DOS batch files exist that <br/>automate these tasks somewhat. Note that they only work in Windows <br/>environments. The following is a list of tasks and a description of what <br/>commands accomplish them. For compiling, running and generating documentation,<br/>two options are given. The first one is using a provided script; the second is <br/>the standard command-line option (longer, but will work on all operation <br/>systems).<br/><br/>Set up your system:<br/>1. Install Java and AspectJ<br/>2. Make sure your CLASSPATH contains the current directory (denoted by a <br/> period), e.g. CLASSPATH=.;C:\...<br/>3. Extract the ZIP file into a directory of your choice <br/>4. Change to that directory<br/><br/>Compile Java and AspectJ versions of a design pattern example (e.g. observer).<br/>Choose one:<br/>� makePattern observer <br/>� ajc @examples\observer\files.lst<br/><br/>Run a compiled example (e.g. observer). Choose one:<br/>� testPattern observer (this runs both Java and AspectJ versions)<br/>� java examples.observer.java.Main (for the Java version), <br/>java examples.observer.java.Main (for the AspectJ version)<br/><br/>Generate documentation for all examples. Choose one:<br/>� makeDocs<br/>� ajdoc -private -d docs @allPatterns.lst<br/><br/>Generate documentation for the library aspects. Choose one:<br/>� makeLibraryDocs<br/>� ajdoc -private -d docs ca.ubc.cs.spl.pattern.library<br/><br/>Generate documentation for a single example (e.g. the AspectJ version of the <br/>observer example). Choose one:<br/>� makeSingleExampleDocs observer aspectj<br/>� ajdoc -private -d docs examples.observer.aspectj<br/><br/>View the generated documentation:<br/>� Open the file index.html (located in the docs/ subdirectory) with your <br/> favorite browser.<br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2008-03-17T17:25:15Z ExampleOfGoodAPI.pdf 2007-02-26T07:12:12Z 2007-02-26T07:12:12Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2007-02-26T07:12:12Z HowToDesignGoodAPI.pdf 2007-02-26T07:10:51Z 2007-02-26T07:10:51Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2007-02-26T07:10:51Z dddquickly.pdf 2006-12-18T03:15:43Z 2006-12-18T03:15:43Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2006-12-18T03:15:43Z Event-driven Architectures.pdf 2006-06-13T15:09:58Z 2006-06-13T15:09:58Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2006-06-13T15:09:58Z AdvancedPrinciplesOfClassDesign.ppt 2006-03-21T10:27:31Z 2006-03-21T10:27:31Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2006-03-21T10:27:31Z short present of how to make good API design.pdf 2006-03-21T05:06:11Z 2006-03-21T05:06:11Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2006-03-21T05:06:11Z pattern examples.pdf 2004-07-07T16:00:00Z 2004-07-07T16:00:00Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-07-07T16:00:00Z architect comment pattern.txt 2004-06-08T16:00:00Z 2004-06-08T16:00:00Z <br/>---------- Forwarded message ----------<br/>Date: Thu, 29 Aug 2002 17:16:33 +0200<br/>From: John Favaro <jfavaro@tin.it><br/>Reply-To: extremeprogramming@yahoogroups.com<br/>To: Yahoo XP Group <extremeprogramming@yahoogroups.com><br/>Subject: [XP] An architect's comments on patterns<br/><br/>In a recent thread I passed on some comments from my brother, who is an<br/>architect, on the "design-build" paradigm. I had asked him what he knew<br/>about it, since there was interest in the software engineering community as<br/>an analogy to optional scope contracts; and I was interested in hearing at<br/>least one architect's point of view.<br/><br/>The resulting discussion was interesting enough that I decided What The Heck<br/>Let's Go All The Way and I asked my brother another question:<br/><br/>"What do you know about Christopher Alexander? His concept of patterns has<br/>generated a great deal of interest in the software engineering world."<br/><br/>Here is his response:<br/><br/>"He was a kind of guru in the 60's and 70's.<br/><br/>"the 'patterns' refers essentially to 'tradition' ; his basic point being<br/>that over 5,000 years immutable patterns of building and architecture emerge<br/>that we can rely on when taking on a building design; (for example, if you<br/>look at good rooms in domestic settings the best ones always seem to have<br/>windows on two sides, preferably opposite sides) He came up with 'patterns'<br/>instead of 'tradition' because it was Berkeley in the sixties when tradition<br/>was seen as oppressive, euro-centric and 'irrelevant'. He wanted to<br/>catalogue all the patterns of architecture in the history of the world (all<br/>over the world, not just Europe of course) in the belief that there would be<br/>a scientific way to get to good design--therefore avoiding the role of<br/>culture (because culture requires values and judgment and whose culture are<br/>we talking about anyway?) Of course it didn't work because architecture is<br/>an art not a science. And his concept of patterns is ten times more<br/>oppressive than the concept of the context of tradition as the fertile<br/>ground within which innovation thrives (innovation is all about finding the<br/>exception to the rule that changes the way we look at the rules, and<br/>sometimes even the rules themselves). The buildings he actually produced<br/>(not very many, small residences) ended up being ultra-conservative (very<br/>eurocentric, in fact, like little Austrian cottages) and not very<br/>remarkable.<br/><br/>"computer science is a science but I have a feeling that computer<br/>applications are as much an art as a science, since they're about tailoring<br/>to specific needs, making choices and judgments, relating choices to a set<br/>of values on behalf of the client, etc.<br/><br/>"that's why the design-build analogy is big trouble because the intent is to<br/>cut the 'artist' out of the equation--let the accountants drive the choices,<br/>after all it's all cut and dry right?, it's all just science; that's what<br/>the HMO's have done to doctors and medicine; our field went through it after<br/>WWII--you're next.<br/><br/>"run for your life..."<br/><br/>(Yes, he can be a bit provocative and dramatic)<br/><br/>In a second message he added this:<br/><br/>"well, the solution is to train the computer consultants to be responsible<br/>about budget and schedule--that time and money are as potent in creative<br/>possibility as anything else; the solution is not to cut them out of the<br/>picture altogether; that just leads to self-fulfilling ends--assume the<br/>consultant is only interested in design, let him focus on that in the vacuum<br/>of budget and schedule and 'we'll handle that part (even though we don't<br/>know what the hell he's talking about),' thus setting up a relationship of<br/>conflict and misunderstanding from the beginning and encouraging the<br/>designer to be irresponsible and narrowly focused;<br/><br/>"you treat people like children, they're going to act like children;"<br/><br/>Since I saw it first, I guess I get to make the first comments :-)<br/><br/>- after all the opinions expressed by us software guys about the<br/>architecture field, it's kind of funny to see an architect commenting on OUR<br/>field.<br/><br/>- regarding his opinion on Alexander's work ... well, it certainly made for<br/>interesting reading. Whether his opinion is universally shared in the world<br/>of architecture I don't know. One possibility that occurs to me is that my<br/>brother's goals for a successful building might be different from Alexander'<br/>s. What he did seem to be implying, however, is that Alexander ultimately<br/>did not have a lasting influence in the world of architecture. Again, I don'<br/>t know how true that is.<br/><br/>- I did find interesting his insistence on measuring Alexander's ideas by<br/>the buildings that were actually built with them. That meshes well with the<br/>centricity of code artifacts in XP, as the principal measure of results.<br/><br/>- regarding his characterization of the nature of computer applications, I<br/>thought he did pretty well, actually.<br/><br/>- when he starts talking about design-build again, I think this is once more<br/>where the difference between our contexts comes out. As Dan Palanza and<br/>others explained in the earlier thread, XP in particular is doing a lot to<br/>eliminate the antagonistic relationship between design and build in our<br/>context. Likewise the emphasis in agile development on accepted<br/>responsibility for time and budget considerations. The analogy to his<br/>warning about designers working in a vacuum of time and budget constraints<br/>in our situation might be that of *requirements analysts* working in vacuum<br/>of time and budget constraints, something Martin Fowler has also commented<br/>on.<br/><br/>Perhaps the overriding impression I get from all this is that, as others<br/>have written recently, maybe we shouldn't push quite as hard as we do to<br/>find perfect analogies between our world and the architectural world every<br/>single time. Patterns and design-build may not have been successful in the<br/>architectural world (if that's even true) -- but nobody doubts any more that<br/>patterns have been hugely successful in the software world; and it looks<br/>like the design-build paradigm as it is being tailored and applied in the<br/>software world (e.g. with optional scope contracts) will probably be<br/>successful, too. To each his own context.<br/><br/>John<br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-06-08T16:00:00Z replace Conditional With Visitor.pdf 2004-05-30T16:00:00Z 2004-05-30T16:00:00Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-05-30T16:00:00Z Button.java 2004-03-24T16:00:00Z 2004-03-24T16:00:00Z <br/><TEXTAREA name="code" class="java" rows="16" cols="100">package examples.mediator.java; /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * This file is part of the design patterns project at UBC * * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the &quot;License&quot;); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/. * * Software distributed under the License is distributed on an &quot;AS IS&quot; basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is ca.ubc.cs.spl.patterns. * * Contributor(s): */ import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /** * Basically a JButton with an ActionListener. The listener call * &lt;code&gt;clicked()&lt;/code&gt; when the button gets clicked. * * @author Jan Hannemann * @author Gregor Kiczales * @version 1.0, 05/13/02 */ class Button extends JButton implements Colleague { private Mediator mediator; /** * Creates a new &lt;code&gt;Button&lt;/code&gt; object with the provided label. * * @param name the label for the new &lt;code&gt;Button&lt;/code&gt; object */ public Button(String name) { super(name); this.setActionCommand(name); this.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { clicked(); } }); } public void clicked() { mediator.colleagueChanged(this); } /** * Implements the appropriate interface for colleage to set its * Mediator * * @param mediator the new mediator */ public void setMediator(Mediator mediator) { this.mediator = mediator; } }</TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-03-24T16:00:00Z files.lst 2004-03-24T16:00:00Z 2004-03-24T16:00:00Z <br/><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-03-24T16:00:00Z makeDocs.bat 2004-03-24T16:00:00Z 2004-03-24T16:00:00Z <br/><TEXTAREA name="code" class="bat" rows="16" cols="100">ajdoc -private -d docs @allPatterns.lst</TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-03-24T16:00:00Z makePattern.bat 2004-03-24T16:00:00Z 2004-03-24T16:00:00Z <br/><TEXTAREA name="code" class="bat" rows="16" cols="100">@echo Compiling the Java and AspectJ example for %1: ajc @examples\%1\files.lst </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-03-24T16:00:00Z makeSingleExampleDocs.bat 2004-03-24T16:00:00Z 2004-03-24T16:00:00Z <br/><TEXTAREA name="code" class="bat" rows="16" cols="100">ajdoc -private -d docs examples.%1.%2</TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2004-03-24T16:00:00Z