Post bewerten
Dienstag, Dezember 28, 2004
Slides of Talk: Refactorings in Large Projects
Sonntag, Dezember 26, 2004
Managing Module Dependencies in Large Systems
My experience is that almost every projectwith more than 500 classes has unwanted dependencies between its modules (module = coherent set of packages). Often even cycles between modules occur.
There are some Open-Source solutions that help to avoid unwanted dependencies in Java projects or at least discover them early:
- Put every module in its own JAR file. An ANT build script can then discover unwanted depdencies during compilation and generation of the JAR files.
- If Eclipse is used: Define an Eclipse project for every module and let Eclipse manage the dependencies.
- The use of the Eclipse plugin model allows even finer control but brings some overhead with it.
- Define the allowed dependencies in a Fitnesse test. There is an easy to use solution named JDependFixture. Especially when you use Fitnesse already the your project JDependFixture may be a convenient solution.
- XRadar is also based on JDepend and checks dependencies between modules (in XRadar modules are called subsystems). XRadar uses a XML definition of modules and dependencies and creates a graphical representation of the existing dependencies. XRadar is especially convenient when a nightly build process is in place, for example based on Cruise-Control.
Post bewerten
Mittwoch, Dezember 08, 2004
Book: Refactorings in Large Projects
Post bewerten
Sonntag, November 21, 2004
Sonntag, November 14, 2004
Distributed Computation@home
There are additional public projects for distributed computation using BOINC available at the BOINC link given above.
Post bewerten
Freitag, November 05, 2004
Rich Client Patterns
Post bewerten
Samstag, Oktober 30, 2004
Multiple Customers in XP
In XP the king is not a developer since decisions about distributing resources is a bussiness decision not a technical desicion. Therefore king is a kind of super customer, head of marketing for a product company or something similar.
Post bewerten
Freitag, Oktober 22, 2004
Design in Agile Methods
Buzz words describing simple design are:
- You ain't gonna need it (the YAGNI principle).
- Keep it simple, stupid (the KISS principle).
- Design for Today.
- No Big Design Upfront (BDUF).
Two articles (available online) about the topic give further insights:
- Martin Fowler: Is Design Dead?
- Jim Shore: Continuous Design.
Post bewerten
Sonntag, September 19, 2004
Donnerstag, September 16, 2004
Managing ANT scripts
And he wrote a little tool that visualizes the dependencies of ANT targets: AntGraph.
Post bewerten
Dienstag, August 31, 2004
Visibility of Automatic Build
Post bewerten
Donnerstag, August 26, 2004
XRadar: Structural Analysis for Java projects
XRadar is open source and combines a lot of useful small tools like JDepend and PMD to form a complete analysis suite. We integrated XRadar into our Cruise-Control build process and got helpful results about the structure of our system.
Post bewerten
Dienstag, August 17, 2004
Time Travel Pattern Language
Example: One week ago I buyed a new car. Now I send a notice to my insurance company. While the contract is modified tomorrow when my notice reaches the insurance company, the modification has to take effect one week ago in the past.
Once I was in a project at an insurance company and we had exactly the same problems. At the end we came to very similar solutions. Had we known the Time Travel pattern language we could have saved a lot of time, not only to find the solutions but more important to communicate the problems and the solutions.
Post bewerten
Montag, August 16, 2004
Unit Test Smells
The term smell can be transferred to a lot of other “domains”, e.g. to the wide area of testing. This article is a first attempt to collect smells for the area of unit tests.
Post bewerten
Freitag, August 06, 2004
C-JDBC: open-source inexpensive DB clustering
Post bewerten
Donnerstag, August 05, 2004
Modular Software with PicoContainer
PicoContainer is an open-source project that provides a IoC-Container (IoC = Inversion of Control) that is very useful for defining and managing the dependencies between modules.
I collegue asked me once when I would PicoContainer into a project:
- Right from the beginning?
- Even for prototyping?
- When the system exceeds a certain size?
Adding PicoContainer later to a project results in refactoring and will therefore often not done.
Post bewerten
Sonntag, August 01, 2004
Do You like to Eat an Elephant?
I like the article very much since I know the suffer the author describes from my programming and consulting experience. It is the time for a change!
There is a very interesting book about the topic: Bruce Tate, Justin Gehtland: "Better, Faster, Lighter Java".
Post bewerten
Samstag, Juli 31, 2004
SCRUM Master
BTW: A collegue of mine said that "SCRUM Master" sounds like something evil. I try to be not too evil :-)
Post bewerten
Funny GridBagLayout
Post bewerten
Donnerstag, Juli 15, 2004
JMigrator 0.4.0 released
If anybody is interested in participating at the further development, please contact me.
Post bewerten
Montag, Juli 05, 2004
Trashcan Frameworks
Post bewerten
Sonntag, Juli 04, 2004
Large Refactorings and Fitnesse at Java Forum Stuttgart
Post bewerten
Freitag, Juni 25, 2004
Refactoring Example for Beginners
- What smells are in the code?
- What refactorings can be used to remove the smells?
- How small can the new solution be? (If you send me your refactored solution I may publish it here.)
P.S.: The code in C# but it should be easy to convert it to Java.
P.P.S.: If someone has the code in Java, please send me a link.
Post bewerten
Samstag, Juni 19, 2004
Customer related blog of Chris Matts
Post bewerten
Book: Agile Software Development in the Large
Jutta Ecksteins book "Agile Software Development in the Large: Diving into the Deep" (Dorset House Publishing) is published now. A german translation was published under the title "Agile Softwareentwicklung im Großen" (dpunkt Verlag).
Post bewerten
Donnerstag, Juni 17, 2004
Master Thesis with Empirical Data about Agile Methods
Post bewerten
Samstag, Juni 12, 2004
Refactorings in großen Softwareprojekten
Post bewerten
XP 2004: Agile Project Controlling
- slides
- Excel sheet for generating the Feature Burndown Charts
- the paper
- shorter online version of the paper
Post bewerten
Mittwoch, Mai 26, 2004
Some Research Questions
Research Questions
Post bewerten
Sonntag, Mai 16, 2004
Open Source Technology Stack for Java Projects
Development
- Eclipse - the Open-Source IDE
- CVS - the Open-Source revision control system
- Ant - the Java make
- JUnit - the unit test tool for Java
- Fitnesse - for acceptance tests
- Jemmy [desktop frontends]- testing Swing UIs
- HTTPUnit [web frontends] - testing Web UIs
- JMeter [server side code] - for load tests of server side code
- NoUnit - finding untested methods
- Integration-Guard - server side test execution before/after checkin in CVS
- DoxyGen - similar to JavaDoc but supports different output formats
- PMD - identifies problems and smells in Java code
- Eclipse Profiler Plugin - Profiler for Eclipse
- XDoclet - generates data from Java meta tags; used for Hibernate, JBoss and others
Libraries
- log4j - for logging (more powerful and widespread than the logging facilities of JDK 1.4
- Struts [web frontends] - framework for web applications
- Eclipse Plugin Model [client side code] - the Eclipse plugin model can be used without the Eclipse IDE to implement a client side component model for Java
- JFreeChart - generates business charts
- JFreeReport, JasperReports - printing from Java
Database
- mySQL, PostgreSQL, SapDB - Databases
- Hibernate - OR mapper with transparent persistence (requires XDoclet); if an existing database schema has to be used, Torque with its code generation approach may be more suitable
Application-Server
- Apache Web Server - if a lot of static web pages exist or non-Java application logic has to be executed at the server
- Jakarta Tomcat [web frontends] - if only a web interface is required
- JBoss [server side code and desktop frontends] - if a desktop interface is required and server side code is neccessary (I recommend to use XDoclet to generate most of the EJB stuff)
- MockEJB [server side code] - a local container for session beans; supports testing session beans and allows the execution of the system stand alone without an application server
Organization
- XPlanner - Managing and planning of stories
- JSPWiki - a simple Wiki web based on Java Server Pages
- Open-Office - for external documents and project tracking
Upcoming
There are promising tools which I haven't had the opportunity to use until now:- Eclipse Rich-Client-Platform [desktop frontends] - an application frame for desktop applications
- iReport - GUI tool for JasperReports
- Maven - a build management tool
- Bugzilla - a bug tracking system
Post bewerten
Freitag, April 30, 2004
New version of JFreeProfilingCenter
Post bewerten
Eclipse Shortcuts and Key Bindings
Post bewerten
Mittwoch, April 21, 2004
Large Refactorings at Java Forum Stuttgart
Post bewerten
JUnit speaks
The plugin needs Eclipse 3.0M8 and JDK 1.4.2.
Post bewerten
Do You Speak Java?
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
Post bewerten
Samstag, April 17, 2004
MockEJB
- 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
I recommend following the "Crash Early" tip described in The Pragmatic Programmer (p. 120).
Post bewerten
Names in source code are important
Post bewerten
Mittwoch, April 07, 2004
Online Pattern Catalogs
- Domain Driven Design
- Patterns of Enterprise Application Architecture
- Design Patterns
- Refactorings
- Refactoring to Patterns
Post bewerten
Freitag, April 02, 2004
SWT vs. Swing: API
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.
Post bewerten
Donnerstag, April 01, 2004
JUnit vs. Fitnesse
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 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
http://wiki.ipponsoft.de/ewiki/AgileWiki.php?page=Termine
Post bewerten
Freitag, März 12, 2004
Eric Evans: "Domain Driven Design"
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)
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
I have put together the essential dependencies here.
Post bewerten
Mittwoch, März 10, 2004
Agile Project Controlling
WebLog active
Thats me:
Post bewerten