I’ve been discussing with CodeFutures’ customers the concept of industrializing the software development process for the past 18 months. I had been using the term “software industrialization” to give the concept a name. Late last year, Wiley published an excellent book called “Assembling Applications with Patterns, Models, Frameworks, and Tools” by Jack Greenfield and Keith Short of Microsoft (with some help from Steve Cook and Stuart Kent).
Microsoft appears to making a strong marketing push for Software Factories. The book, Web site, section on MSDN, and of course the development tools all provide a very strong case for the industrialization of software development. It’s a Microsoft-centric vision of the future (a topic for later).
CodeFutures has a similar vision, but it’s Java centric, and of course include code generation. I am going to call it Java Software Factories.
Java Software Factories combine the Core J2EE Design Patterns, domain-specific design patterns, predifined application and enterprise architectures, preselected platforms and products, and flexible development productivity tools to produce predictable results.
The building blocks for most Java Sofware Factories already exist. There are many great specifications, standards, and products that have gained widespread acceptance already:
Security – Liberty Alliance, SAML
Diagnosticsa and logging – log4j, JMX, and SNMP
Property Management – JNDI
Persistence – DAOs, JDBC, JDO, EJB CMP
Presentation – JSPs, Struts (perhaps JSF later?)
Integration – MOM and SOAP
Application Servers – J2EE, Tomcat, etc
Build tool – Apache Ant
Code documentation – JavaDocs
XML parser – Xerces, JDOM
XSLT – Xalan
At a another level, there’s a wide range of technologies that can and must be leveraged for the Java Software Factories – operating systems, relational databases, and much more.