Friday, April 23, 2010

The Holy Grail of rapid application development

Lately I've been toying with the concept of rapid application development with little to no code-writing.

  1. Gather your business requirements
  2. Model your business objects
  3. Diagram/design your use-case flow
  4. Press the big green "win" button
  5. Deploy and profit
I'm aware of IBM tools (and others) that have attempted this concept with very limited success, but if I can pull this off on a pilot project via my own tools, I'd like to bring this notion to fruition and train my developer unit to begin developing applications this way.

Okay, allow me to refine the list above. Here's how I've been making this happen:
  1. Gather your business requirements
  2. Define and model your business objects via UML Class Diagram
  3. Design the rest of your app via detailed and complete UML Class Diagram
  4. Use an IDE such as MyEclipse or Netbeans to generate Java code directly from your class diagram
  5. Use Hibernate's JPA implementation and annotations to allow Hibernate to generate your database schema entirely from the POJOs generated in step 4
  6. Use MyEclipse & Hibernate's Reverse Engineering to generate all of your Data Access Objects (DAO).
  7. Fill in the blanks, implement business algorithms where necessary
  8. Deploy, test, refine.
In combination with an MVC framework like JSF, it seems that the only blanks you'd need to fill in (step 7) are the backing-bean action methods. What happens when each button is clicked is up to you, but at that point in time, all you'll be doing is tying together business objects and passing them back and forth between DAO methods, which you didn't need to take the time to write either.

Strap some rich PrimeFaces components into the view and you've got yourself a rich business application with little to no Java code writing at all.

In my fantasy world, where I've yet brought this concept to life, I imagine 6 months development projects taking 3 to 4 months tops. You'll still have all the same testing and bug-fixing as ever, but an increased level of design will leverage exponential gains in development time. If you're a seasoned developer, you've seen design pay off during development over and over again.

If I can find the time to run a pilot project behind the scenes and pull this off, I'll check back in and write up a conclusion!

-Lance

No comments: