CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Raymond Lewallen

Framework Design, Agile Coach, President Oklahoma City Developers Group, Microsoft MVP C#, TDD, Continuous Integration, Patterns and Practices, Domain Driven Design, Speaker, VB.Net, C# and Sql Server

Software Factories

Awhile back Somasegar talked about VSTS and Software Factories. Ah, the industrialization of software development. Let's talk about software factories for a second.

A software factory is a software product that can be plugged into or configure an extensible development tool, like Visual Studio Team System, as Somasegar mentions. So what is the software factory product? It can be any of a number of combination of different things, such as patterns, frameworks and domain specific languages. And what does this provide? Think about customer relationship management for a second. If you were to examine the majority of CRM applications, you would probably find some underlying similaries in the framework components and in the design patterns used in the software. Herein lies the problem. Why should everybody who designs a CRM application have to go through the process of building, from scratch, those same framework components under the same usage and design patters and guidance? If an accepted approach to the development of CRM applications has been proven and used successfully, why not make that non-customized portion of the application development life-cycle available to others, in an effort to increase productivity? This is what software factories will attempt to solve. The factory for a CRM application would contain something along the lines of the .Net framework, C# or VB.Net, the Microsoft Business Framework and Microsoft SQL Server, with maybe one or two other components that don't strike me at the moment. When given that software factory, you now have all the framework components of developing and endless number of CRM applications, each with its own specific customizations that tailor to the customers needs.

The main supporting player in software factories is the knowledgable and experienced developer. This knowledge and experience must be captured, recorded and made available for reuse by others in the software development industry.

Lets see how well the idea takes off.


Comments

Pete Samwel said:

In some ways this is merely an extension of some of the things Microsoft is already doing with their continuous release of Application Blocks. Granted, AB's are focused more on generalized development spheres, however the idea of generating blocks of code through experience (whether gained firsthand or communally) is present.

I see this gaining in popularity amongst applications, like CRM tools, which are common across many disparate markets. However, the relative payoff for such efforts in less popularized areas and even more niche markets is probably too thin to be realized any time soon.

I've also found too that in many abstracted architectures I've worked with have still been forced to make assumptions that were either wrong or simply unforseeable for potential future users of the platform. This hurdle I think will be the biggest one facing these factories: garnering enough relevant experience to coordinate what is and is not to be included in such cores.

But still, a great idea that I as a programmer hope to be involved with and also benefit from.
# February 28, 2005 2:45 PM

TrackBack said:

# March 2, 2005 11:03 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Raymond Lewallen

Working primarily in the public sector during his career, Raymond has designed and built several high profile enterprise level applications for all levels of the government. Raymond now works as a solutions architect for EMC. Raymond is an agile coach, Microsoft MVP C# and also president of the Oklahoma City Developers Group and Oklahoma Agile Developers Group. Raymond spends a lot of his time learning and teaching such things as Test Driven Development, Domain Driven Design, Design Patterns and Extreme Programming practices and principles, to name a few. Raymond is also an advocate of Alt.Net. Raymond is primarily a framework guy, so don't ask him anything about UI :) Check out Devlicio.us!