M Sheik's profileudooz!PhotosBlogLists Tools Help

Blog


    January 16

    The Layman's View of Software Factory - 2

    How can we define the term Industry?

    In general, other industries receive the resources from upstream suppliers. Using the product line tools or machines, they automate the production. Finally, they distribute products across supply chains of highly supplied and interdependent suppliers.

    As in the above paragraph, we (the software industry) are doing the same thing, then how do the other people differ from us?

    In the above paragraph, look at the following terms:

    · Resources from upstream suppliers.

    · Product line tools.

    · Automation of production.

    We slightly differ from other industries to do the above tasks. Let us understand the nuances of the above terms:

    Resources from upstream suppliers:

    All successful industries are working in modular and scale-up manner. For example, the automobile industries purchased their resources for their automobile from upstream suppliers. The resources are produced based on the industry standard and it is directly used into the production without performing any modification.

    Software industry also well matured in platform based approach. You can purchase any third party .NET WinForm controls and you can directly integrate into your application. It is very uncommon to meet compatibility issues. But we are more dependants on platform components. We do not have any universal standard in most parts unlike in services oriented middleware. Now only XML Web Services have matured to some extent and are interoperable with other platform components with the great advent of XML.

    Product line tools

    Every product (eg. Indica, Sumo) in a product family (eg. Tata Motors) share common features across the members in the product family (eg. transmission and drivetrain components). And every product differs from others by its unique features. Industries approach these features by using product line tools.

    The common features are implemented and kept as a core asset for product development. New product can be produced by assembling existing core assets and implement of unique features.

    Our industry does not use any standard mechanism of developing product line tools and their usage.

    Automation of production

    To be honest, how many of us used internally developed automated tools in our product development. Yep, some of us have automated tools for generating objects for a relation database. Some of us may have used them to generate standard UI. But how do we use the automated tools through SDLC is a matter of concern in the software factory arena.

    Okay, then what is Software Factory?

    Simply put, “Economies of reuse” is the basic slogan of software factory. In a given domain, reusing solutions to common sub problems is called economies of reuse. It reduces total cost of solving multiple problems in the given domain. Let’s take automobile industry, after the designing of a car model, a bulk of cars can be produced in the production phase. Unlike this, in our industry, after the design, a system has been developed. The number of cars produced in production phase will also affects the cost of production. But in our industry, the number of copy of the same application does not affect the cost of production (just a cost of CD/download time). This is where our industry differs from others. So, the production phase in other industry naively compared with the development process in our industry.

    I’ll explain this concept in detail in the next article.

    December 29

    Part I: The Layman’s View of Software Factory - 1

    Last week I’ve given a presentation about Software Factories to my team.  The presentation went well with lot of hot discussion.  I’ve started presentation with the following quote by Peter Wegner:

    “Software products are in some respects like tangible products of conventional engineering disciplines such as bridges, buildings, and computers.  But there are also certain important differences that give software development a unique flavor.”

    Apart from that I would like to contribute software factory movement.  In this blog I would like to explain all about software factory. Okay, before going to use or implement applications using software factories, in first series, I would like to explain some theoretical concepts behind Software Factory. 

    We all believe that software industry is well-matured and we have successful development lifecycle methodology in our hands to develop a successful projects or products.  But, how many of us know that only 16% of the projects are developed on schedule and within budget.  31% are cancelled and 53% exceed their budgets.  As of our experience, we all know that we are releasing a project with spending lot of day and nights in front of our machine and delivered the project with more pain. 

    Are we working in right way?  Is our industry always like this?  Are our processes or methodologies standard and matured enough?

    Simply we can say only “No” or “May be..”.  What is the problem with us?  If we are not mature, then at least we should learn from other successful industries.  But the big bottleneck is that we cannot follow the other industries, because ours is entirely different than the tangible production industries such as automobile or construction industry.

    Our industry gurus invented lot of methodologies and tools over last ten years such object orientation approach, design tools, etc.  But we are not smart like other industry.  They do not spend/waste their time to re-invent the same wheel.  Everything is standard, standard and well automated.  Then what actually we need to say loudly “Software Factory” or “Industrial Approach for Software Development”.  In this blog, I’m going to write series of articles about Software Factory.

    In the first part, I'm planned to provide basic details about software factory in a layman's view.

    So, please Hold On….!