Freitag, April 30, 2004

New version of JFreeProfilingCenter

I released a new version of JFreeProfilingCenter at Source-Forge: a tool for performance and load tests of Java programs . I corrected some minor bugs in the UI and did some refactorings to make the code more simple. A very short overview documentation is now available also.

Post bewerten

Eclipse Shortcuts and Key Bindings

To be really fast with an IDE developers need to be able to use the common IDE functions without the mouse. The functions used most often must be accessible with the keyboard only. Jesper Kamstrup Linnet has created a list of the Eclipse default key bindings. The default key bindings can be configured in Windows->Preferences->Workbench->Keys.

Post bewerten

Mittwoch, April 21, 2004

Large Refactorings at Java Forum Stuttgart

I will talk together with Martin Lippert about Large Refactorings at the Java Forum Stuttgart at 1st of july.


Post bewerten

JUnit speaks

Sebastian Sanitz developed an Eclipse plugin which gives JUnit a voice - e.g. the voice of Homer Simpson. The plugin can be downloaded here.
The plugin needs Eclipse 3.0M8 and JDK 1.4.2.

Post bewerten

Do You Speak Java?

Here is a code snippet I found somewhere. Can you figure out what it does? Try code reading first and if that doesn't work, write a unit test. Is there a way to refactor the code to be more readable without loosing performance?

public int doSomething ( final int v[] ) {
int i = 0, j = v.length - 1;
for ( ; !( v[i] >= v[j--] && i++ == ++j ); );
return v[j];
}

Post bewerten

Sonntag, April 18, 2004

Article Directory about Agile Methods

The Agile Alliance provides access to a lot of good articles about agile methods: http://www.agilealliance.org/articles/index

Post bewerten

Samstag, April 17, 2004

MockEJB

Projects using EJB have a common problem: EJBs are necessary for some reason (e.g. scalability) but using EJBs does harm the development process and the flexibility of the application:

  • The turn-around times (edit-compile-deploy-execute) are much longer with an application server than within a stand alone rich client application.
  • If unit tests fail, there are two possible reasons: The code is broken or the application server is not available. It can cost some efforts to figure out what the reason really was.
  • Some application servers consume a lot of memory and are therefore not usable on developer PCs. Then parallel tests of developers may influence each other in an unintended way.
  • Sometimes there is the requirement that the same application must be runnable with and without an application server. That's especially true for off-the-shelf products.

These problems are solvable through architecture. It is possible to introduce abstractions that allow to execute the application with and without an application server. On the downside these abstractions introduce a lot of complexity which often irritate developers.

With MockEJB there is the alternative to solve the mentioned problems with technology. MockEJB provides a local container for session beans (entity beans are not supported yet). That enables the application to simply use EJBs without further abstractions while being executable without an application server.



http://mockejb.sourceforge.net


Post bewerten

Freitag, April 09, 2004

General Level Exception Handling Considered Harmful

Exception handling is somewhat awesome for developers. Therefore some projects come to a point where they catch exceptions at a general level. A short article with some demo code illustrates the risks of catching exceptions at a general level (catching Exception in Java).
I recommend following the "Crash Early" tip described in The Pragmatic Programmer (p. 120).

Post bewerten

Names in source code are important

Nearly everybody would agree that giving communicating names to packages, classes, methods and fields is important. But when non-communicating names are in place developers often argue that naming is not that much important. The pragmatic programmers Andrew Hunt and David Thomas have a strong argument for the importance of naming on their web site (stroop effect).


Post bewerten

Mittwoch, April 07, 2004

Online Pattern Catalogs

Some useful online catalogs of patterns, refactorings etc.:

Post bewerten

Freitag, April 02, 2004

SWT vs. Swing: API

Today two major and incompatible UI libraries are available for Java developers: SUN's Swing and IBM's SWT (which is used for the Eclipse platform). Often it is claimed that SWT is the faster and more stable solution. Since in our projects Swing was fast and stable enough a point of major interest was the API: What is easier and more flexible to program. I did a little experiment based on the very good SWT tutorial "Using the Eclipse GUI outside the Eclipse Workbench, Part 1: Using JFace and SWT in stand-alone mode" from Adrian Van Emmenis. I took the SWT file explorer consisting mainly of a tree and a table from the tutorial and programmed an equivalent Swing file explorer. The code can be downloaded for the SWT-File-Explorer and the Swing-File-Explorer.
The main differences between the two explorers:
  • The Swing explorer needs with 249 LOC about 30% more lines of code than the SWT explorer with 192 LOC.
  • Setting the properties of SWT widgets is follows the C style with expressions like SWT.HORIZONTAL SWT.NULL. Since the properties are simply integers there is a (small) lack of type safety.
One (subjective) word about performance: When using the two explorers I can hardly notice any difference. Only when directories contain very many files the SWT explorer seems to be a bit faster.

Post bewerten

Donnerstag, April 01, 2004

JUnit vs. Fitnesse

JUnit is for unit testing, Fitnesse for acceptance and functional testing. But in projects we have detected that sometimes JUnit and Fitnesse tests overlap. Sometimes Fitnesse tests are smaller and easier to comprehend than JUnit tests - even for single classes.
I did some very simple experiments to get a better feeling when to use JUnit and when to use Fitnesse tests. The sample code can be downloaded and the results of the experiments are documented in a small article.

Post bewerten

Montag, März 29, 2004

Acceptance Testing with Fitnesse

Fitnesse is an open-source acceptance testing framework based on FIT and a Wiki web. It is one of the best tools I have seen in the last years. It works with Java, C# and some other programming languages. Tests are defined with HTML tables (creating HTML tables with the Fitnesse wiki is quite easy) and connected to the application under test with so called fixtures. The fixtures have to be programmed by the developers - the effort is small. After having the tables with the test data and the fixtures the tests can be run from Fitnesse directly. The fixtures are simply classes that call other classes of the application under test. If core functional classes or UI classes are called (perhaps with a library like Jemmy) is the decision of the developers. Similar to JUnit tests can be combined to suites.
Fitnesse is suitable to let customers or business experts/analysts define the tests - test first for acceptance tests is enabled.


http://www.fitnesse.org/

Post bewerten

Interesting Material about Agile Methods and OO

Some of the material is english, some is german:
http://wiki.ipponsoft.de/ewiki/AgileWiki.php?page=Termine

Post bewerten

Freitag, März 12, 2004

Eric Evans: "Domain Driven Design"

Really good books about how to design the core domain model of an application are very rare. Eric Evans has written one.
Domain modeling is handled from the very small (entities, value objects, associations) to the very large (components, layers). Evans argues that creating a ubiquitous language shared by domain experts and developers is essential for the success of domain modelling. While the book refers to agile methods it is applicable for agile and non-agile methods.

The book is written in a pattern style and can therefore be read from start to end or be used as a handbook to answer specific questions at hand.

I strongly recommend "Domain Driven Design" to every OO designer and programmer.

There is a website related to the book which provides additional information and discussions of the topic.

Post bewerten

Donnerstag, März 11, 2004

Test Java Unit Tests with Jester (Open-Source)

Some months ago I heard of Jester a tool for testing Java unit tests. How do you test a test? The Jester approach is very simple but powerful: Jester modifies the tested source code and runs the tests after the modification. If the test fails, the test is OK. If the test passes, the test is incomplete.
The modifications to the code are based on very simple algorithms like incrementing integer constants by one, reverse conditions in if statements etc.
If contributed some minor extensions to Jester myself.
And Jester shares one attractive property with many other simple, but powerful tools: it is Open Source software.

Jester at Source-Forge

Post bewerten

Dependencies of XP Practices

Kent Beck shows the influences of the XP practices in his book and there are a lot of influences. The shown tangle isn't very useful when it comes to introducing the XP practices into a project. Then the essential depedencies are impotant: Which XP practice does require other XP practices to work.
I have put together the essential dependencies here.

Post bewerten

Mittwoch, März 10, 2004

Agile Project Controlling

Henning Wolf and I wrote an article about Agile Project Controlling which was accepted for the XP 2004 conference. See you there!

Post bewerten

WebLog active

Now even I try to use a WebLog (in fact Blogger). I integrated the parts of my old site via the link section on the left of the page. The old parts are still in the old layout. Therefore they don't look pretty, but at least they are there. I promise to work on the layout in the future.

Thats me:


Post bewerten

Montag, Januar 01, 1990

Veröffentlichungen

Siehe auch meine frühere Publikationsliste sowie meine Vorträge.

  • Stefan Roock: "eXtreme Programming", in dotnetpro 02/2008 , Seite 28-33, Februar 2008
  • Stefan Roock, Henning Wolf, "Feature Driven Development (FDD)", 4-teilige Artikelserie im Java-Magazin, 2007-2008
  • Stefan Roock, Henning Wolf: "Berufsethos, Qualität, Rollenverständnis", in Java-Magazin, Juli 2006
  • Johannes Link, Stefan Roock: "Je abstrakter, desto besser, oder?", in Java-Magazin, S. 65-69, Juni 2006
  • Eberhard Wolff, Henning Wolf, Stefan Roock: "Ist die Java-Plattform zu komplex geworden?", in Java-Magazin, Mai 2006
  • Achin Bangert, Dierk König, Eberhard Wolff, Henning Wolf, Johannes Link, Martin Lippert, Stefan Roock: "Technology First", in Java-Magazin, April 2006
  • Martin Lippert, Stefan Roock, Henning Wolf: "Ist die Technologie das geringere Problem?", in Java-Magazin, Oktober 2005
  • Martin Lippert, Stefan Roock: "Large Refactorings". Englische Übersetzung von "Refactorings in großen Softwareprojekten", Wiley, 2006
  • Robert Beeger, Arno Haase, Stefan Roock, Sebastian Sanitz: "Hibernate", dpunkt-Verlag, 2006.
  • Henning Wolf, Stefan Roock, Martin Lippert: „eXtreme Programming – Eine Einführung mit Empfehlungen und Erfahrungen aus der Praxis“, 2. überarbeitete und erweiterte Auflage, dpunkt-Verlag, 2005
  • Stefan Roock, Martin Lippert: "Refactorings in großen Softwareprojekten", dpunkt-Verlag, 2004
  • Roock, S., Wolf, H.:, Agile Project Controlling, XP 2004, Juni 2004, Garmisch-Patenkirchen, 2004
  • Becker-Pechau, P., Roock, S., Sauer, J.:, Open Source für die Softwareentwicklung, In: HMD Praxis der Wirtschaftsinformatik, 238, August 2004, dpunkt.verlag, Heidelberg, S. 19-25, 2004
  • Roock, S., Lippert, M.:, Refactorings in großen Softwareprojekten, (Hrsg.): dpunkt.verlag, Heidelberg, 2004
  • Lippert, M., Becker-Pechau, P., Breitling, H., Koch, J., Kornstädt, A., Roock, S., Schmolitzky, A., Wolf, H., Züllighoven, H.:, Developing Complex Projects Using XP with Extensions, In: IEEE Computer Magazine, June 2003, Vol. 36, No. 6, 2003
  • Roock, S.:, RE bei agilen Methoden, 2003
  • Martin Lippert, Stefan Roock, Henning Wolf, "eXtreme Programming in Action". Englische Übersetzung des XP-Buchs „eXtreme Programming in Action“, Wiley, 2003.
  • „Software entwickeln mit eXtreme Programming – Erfahrungen aus der Praxis“, Martin Lippert, Stefan Roock, Henning Wolf, 2002 erschienen im dpunkt-Verlag
  • Mitarbeit am Buch „Object-Oriented Software Construction“, Heinz Züllighoven
  • Mitarbeit am Buch „Das objektorientierte Konstruktionshandbuch“, Heinz Züllighoven
  • Lippert, M., Roock, S., Wolf, H., Züllighoven, H.:, XP in Complex Project Settings: Some Extensions, In: Extreme Programming Perspectives, Addison-Wesley XP Series, 2002
  • Lippert, M., Roock, S., Tunkel, R., Wolf, H.:, Stabilizing the XP Process Using Specialized Tools, In: Extreme Programming Perspectives, Addison-Wesley XP Series, 2002
  • Lippert, M., Roock, S., Wolf, H.:, Extreme Programming in Action - Practical Experiences from Real-World Projects, In: Wiley & Sons, UK, 2002
  • Roock, Stefan, Frameworks and Testing, In: Proceedings of Extreme Programming Conference 2002, Villasimius, Cagliari, Italy, 2002
  • Roock, Stefan; Havenstein, Andreas, Refactoring Tags for automatic refactoring of framework, In: Proceedings of Extreme Programming Conference 2002, Villasimius, Cagliari, Italy, 2002
  • Lippert, M., Roock, S., Wolf, H., Züllighoven, H.:, XP en proyectos complejos: algunas extensiones., In: Novatica, ATI, Spain, Nr. 156, March - April, 2002
  • Lippert, M., Roock, S., Wolf, H., Züllighoven, H.:, XP in Complex Project Settings: Some Extensions, In: Informatik/Informatique. Schweizerischer Verband der Informatikorganisationen. Nr. 2, April, 2002
  • Lippert, M., Roock, S., Wolf, H.:, Software entwickeln mit eXtreme programming: Erfahrungen aus der Praxis, In: dpunkt Verlag, Heidelberg, 2002
  • Lippert, Martin; Roock, Stefan; Tunkel, Robert; Wolf, Henning, Stabilizing the XP Process Using Specialized Tools, Proceedings of Extreme Programming Conference 2001, Villasimius, Cagliari, Italy, 2001
  • Lippert, Martin; Roock, Stefan; Wolf, Henning; Züllighoven, Heinz, XP in Complex Project Settings: Some Extensions, Proceedings of Extreme Programming Conference 2001, Villasimius, Cagliari, Italy, 2001
  • Gryczan, G.; Kornstädt, A.; Roock, S.; Wolf, H.; Züllighoven, H., Das JWAM-Framework und Komponenten. Eine konzeptionelle Bestandsaufnahme, in: Tagungsband des 3. Workshops zu komponentenorientierter betrieblicher Anwendungsentwicklung (Frankfurt: April 2001), S. 15-21, 2001
  • Lippert, Martin; Roock, Stefan; Züllighoven, Heinz, From Documents to Applications via Frameworks: The Tools and Materials Approach, in OOPSLA 2000 Companion, Minneapolis, ACM press, 2000
  • Roock, S., eXtreme Frameworking - How to aim applications at evolving frameworks, Proceedings of the XP2000 conference. Cagliari, Sardinia, Italy, 2000
  • Lippert, Martin; Roock, Stefan; Wolf, Henning; Züllighoven, Heinz, JWAM and XP - Using XP for framework development, Proceedings of the XP2000 conference. Cagliari, Sardinia, Italy, 2000
  • Gryczan, G., Roock, S., Wolf, H., Züllighoven, H., Frameworkbasierte Anwendungsentwicklung (6. und letzter Teil): Frameworkentwicklung und -einsatz organisieren, OBJEKTspektrum 2/2000, März/April 2000, S. 88-93, 2000
  • Gryczan, G., Havenstein, A., Roock, S., Wetzel, I., Züllighoven, H., Frameworkbasierte Anwendungsentwicklung (Teil 5): Unterstützung von Kooperation mit persistenten fachlichen Behältern, In: OBJEKTspektrum 1/ 2000, Januar/Februar , 2000
  • Gryczan, G.; Roock, S.; Wolf, H.; Züllighoven, H., Management kundenorientierter Softwareentwicklungsprojekte mit Objektorientierung, In: Informatik Software Project Management, Zeitschrift der schweizerischen Informatikorganisation, Nr. 5, Oktober 1999, S. 22-29, 1999
  • Gryczan, G., Roock, S., Wolf, H., Züllighoven, H., Frameworks von der Stange reichen nicht aus - Auswahl eines Rahmenwerks für die Software-Entwicklung, In: Computerwoche Nr. 5, 17.9.99, S. 6-8., 1999
  • Bleek, W.-G., Görtz, T., Lilienthal, C., Lippert, M., Roock, S., Strunk, W., Weiss, U., Wolf, H., Interaktionsformen zur flexiblen Anbindung von Fenstersystemen., Universität Hamburg. Fachbereich Informatik. Fachbereichsmitteilung FBI-HH-M-285/99. April., 1999
  • Bleek, W.-G., Lippert, M., Roock, S., Züllighoven, H., Strunk, W., Frameworkbasierte Anwendungsentwicklung (Teil 3): Die Anbindung von Benutzungsoberflächen und Entwick- lungsumgebungen an Frameworks, OBJEKTspektrum 3/99, Mai/Juni, S. 90-95, 1999
  • Bleek, W.-G., Lilienthal, C., Lippert, M., Roock, S., Strunk, W., Wolf, H., Züllighoven, H., Frameworkbasierte Anwendungsentwicklung (Teil 2): Die Konstruktion interaktiver Anwendungen, OBJEKTspektrum 2/99, März/April, S. 78-83, 1999
  • Bleek, W.-G., Gryczan, G., Lilienthal, C., Lippert, M., Roock, S., Wolf, H., Züllighoven, H., Von anwendungsorientierter Softwareentwicklung zu anwendungsorientierten Lehrveranstaltungen - der Werkzeug & Material-Ansatz in der Lehre, Software Engineering im Unterricht der Hochschulen (SEUH) 99, Berichte 52, B. Dreher/Ch. Schulz/D. Weber-Wulff (Hrsg.), Workshop des German Chapter of the ACM und der Gesellschaft für Information (GI) am 25. und 26. Februar 1999 in Wiesbaden, pp. 9-20, 1999
  • Gryczan, G., Lilienthal, C., Lippert, M., Roock, S., Wolf, H., Züllighoven, H., Framework-basierte Anwendungsentwicklung (Teil 1), OBJEKTspektrum Nr. 1, Jan./Feb., S. 90-98, 1999
  • Roock, S., Wolf, H., Züllighoven, H., Frameworking, In: Niels Jakob Buch, Jan Damsgaard, Lars Bo Eriksen, Jakob H. Iversen, Peter Axel Nielsen (Eds.): IRIS 21 "Information Systems Research in Collaboration with Industry“, Proceedings of the 21st Information Systems Research Seminar in Scandinavia, 8-11 August 1998 at Saeby Soebad, Denmark, pp. 743-758, 1998
  • Fricke, N., Lilienthal, C., Lippert, M., Roock, S., Wolf, H., Operating and Window Systems will never strike back or Independence day for Java developers, In: R. Nigel Horspool (Ed.): Systems Implementation 2000, Chapman & Hall, London, New York 1998, Proceedings of SI2000 (IFIP Working Group 2.4), Berlin 23-26 February 1998, pp. 86-99., 1998
  • Roock, S., Wetzel, I., Wolf, H., Züllighoven, H., Location as an Analysis and Design Metaphor in Work Settings with Complex Cooperations, In: Kristin Braa & Eric Monteiro (eds.): Proceedings of IRIS 20 "Social Informatics", Oslo, June 1997. S. 431-448, 1997

Post bewerten