I have 45 years experience in IT based projects from a Systems Engineer to a CIO and now a social entrepreneur. About 20 years back I also conceived, designed, built and implemented a Software Factory. Also refer to Prof Cusumo of MIT, 1980/90s books on SW factories.In these factories we had processes for developing sw, analysis, design , construction/coding, testing and implementation. These were staffed with freshers with 1-4 years IT education, built around experienced folks, with 4-10 years experience. I followed the SEI-CMM Software Engineering process model. We first designed the processes, then took on the core experienced team, helped them polish and internalize the processes, and taught them on how to modify/improve/change the std processes, for different situations and for continuous process improvement. Then we inducted, the freshers and formed teams around the core groups, with one senior person typically having 3-8 freshers. Each such team were specialized for various tasks/steps in the overall process. Besides an induction trg., covering the overall process, and the various process phases,steps, tasks etc., they were given detailed training in a few of the tasks, and NOT for the whole process. hence we could train them in 1-2 months, and in about 2 months more they were performing at expert levels, for their respective modules. In factory productivity was twice the global best, about 7 hour per function point vs 14 for the ERP type of sw that this factory was producing. We were at about SEI-CMM Level 3 organization. We developed large, complex, ERP grade, custom made enterprise wide applications, in this factory.
The above was done in Delhi, for clients in remote locations like
- 2 Fertilizer plants in rural UP
- A Carbon Black plant in Bihar
- A Software outsourcing facility in Silicon alley
Application Software development, especially for large and complex enterprises is a complex and risky venture. However despite the lack of good Internet connectivity, the above approach was remarkable.
Two decades later the environment is significantly revolutionized like:
- General computer awareness
- Many successful eGov projects rolled out across the country
- Hardware costs have tumbled down, and the bang for the buck is much many times more.
- PCs, have been supplemented by laptops, Net-books, and now Tablets
- Smartphones, like Googles Android phones and tablets have practically all the facility of a net-book or a PC, they have wireless -WiFi, connectivity and can hook upto the Internet or wireless LANs.
- Powerful Servers can economically be located in every Panchayat or school even
- Open Source Application software for practically every application id available as FOSS, Free Open Source Software
- All the above make IT availability inclusive for even the remotest villages and locations
- Distance or eLearning, MOOC, etc and Wikipedia make even the remotest hamlet at par with a a MIT or Stanford access to learning
- So what was a pioneering venture two decades back can now be replicated across the 600,000 villages of India.
Additionally beyond the development
of complex software IT can, and is already being used remotely for many white collar work, for global customers/outsourcing, and even for local business, industry, and government. So much of the white collar work can be done remotely, without dislocating the bright lads from their villages, families and friends, but right from their courtyards.
We have experience in conceiving, designing, setting up, developing and running such facilities, as Social Businesses, which can eventually be run by the community itself, for the common good.
The Software Factory Principle
Computer History Vignettes
By Bob Bemer
This piece documents the origins of the software factory concept, and in some ways laments that most of the world has never made good use of it.
The major historian of the software factory is Michael A. Cusumano of M.I.T. From 1, which is a must reading for the seriously interested, are extracted:
“Perhaps the earliest proponent, R. W. Bemer of General Electric, made many proposals that culminated in a 1968 paper 5 suggesting that General Electric develop a software factory to reduce variability in programmer productivity through standardized tools, a computer-based interface, and a historical database useful for financial and management controls. ... Bemer's paper gave the first working definition of what might constitute a software factory.”
“While Bemer focused on standardized tools and controls, M.D. McIlroy? of AT&T emphasized another factory-like concept: systematic reusability of code when constructing new programs.” 8
“Reaction to McIlroy's ideas was mixed ... Nonetheless, by the late 1960s, the term ‘factory’ had arrived in software engineering and was being associated with computer-aided tools, management-control systems, modularization, and reusability.”
“The first company in the world to adopt the term ‘factory’,actually, its Japanese equivalent ‘kojo’, which translates to either ‘factory’ or ‘work’,to label a software facility was Hitachi, which founded the Hitachi Software Works in 1969.”
My copy of this paper came from Don McNamara? of Corporate Information Technology at GE, with a cover note saying “Congratulations! Your vision has made a permanent impact on our profession.” I cherish it.
Software News of 1987 March, page 38, in an article entitled “‘Factories’ for Software?”, reported McNamara's talk in the distinguished lecturer series at the Wang Institute. “Design code for re-use, and register it. Re-use is a secret to productivity”, he said.
The following is verbatim from the Report of the NATO Software Engineering Conference on 1968 Oct 07-11, pp. 94-95 Reference 6:
“The most ambitious plans for a set of tools to aid in the production of large systems that were presented at the conference were those contained in a working paper by Bemer.
Bemer: from ‘Machine-controlled production environment’
Tools for Technical Control of Production
Maximizing programmer effectiveness and personnel resources.
Minimizing time and costs for original production, changes and checkout.
Maintaining the best-conditioned system from a quality viewpoint.
By utilizing the machine-controlled production environment, or software factory. Program construction, checkout and usage are done entirely within this environment using the tools it contains. Ideally it should be impossible to produce programs exterior to this environment. This environment should reside on the computing system intended for use, or in the case of manufacture of a new system, on the most powerful previous system available.
3. Functions Provided
Computing power and environment
A file system
Building test systems
Building final systems and distribution
Information during the process
Listings/automatically produced flowcharts/indexing
Index and bibliography of software units
Directed graph of system linkages
User documentation, text editing
Classification of mistake types
Production records to predict future production
Source language program convertors
Access by programmer
Documentation matching to program
Software and hardware configurations, and matching
Replication and distribution
Scheduling and costing
In comments following this text, Ascher Opler said “IBM is also developing such a system. The cost is enormous, and a vast amount of hardware is needed”. Note that, in the following NATO Conference of 1969, a paper was given on IBM's “CLEAR-CASTER” system.
Doug McIlroy?, the original exponent of software piece parts 8, said that “It would be immoral for programmers to automate everybody but themselves. The equivalent to what Bemer is discussing is done by all big manufacturers to assist the process of hardware design. However, in addition to the storage of information provided voluntarily by the programmers, one should take advantage in such a system of the chance to accumulate additional information without bothering the programmer”.
As I copy this last comment a third of a century later, it is painful to know that the software industry has still failed to achieve what McIlroy? foresaw so clearly. Nothing will illustrate this more than the last paragraph of his paper, properly inserted here because there is no component more important to the software factory than interchangeable and reusable piece parts.
“I would like to see components become a dignified branch of software engineering. I would like to see standard catalogues of routines, classified by precision, robustness, time-space performance, size limits, and binding times of parameters. I would like to apply routines in the catalogue to any one of a large class of often quite different machines, without too much pain. I do not insist that I be able to compile a particular routine directly, but I do insist that the transliteration be essentially direct. expressed in machine independent terms. I want to have confidence in the quality of the routines. I want the different types of routine in the catalog that are different in purpose to be engineered uniformly, so that two similar routines should be available with similar options, and two options of the same routine should be interchangeable in situations indifferent to that option.
What I have just asked for is simply industrialism, with programming terms substituted for some of the more mechanically oriented terms appropriate to mass production. I think there are considerable areas of software ready, if not overdue, for this approach.”
Also in the 1968 Report, but too long to copy here, is Reference 7, created in August of 1966. In pages, it provides 8% of the technical content. It is a very explicit elaboration of the nature of a software factory, following on the original concept I presented at IFIP 65 and 68. 2,5
Note: Numbers in square brackets are the serial numbers in the master list of my publications.
M.F.Cusumano, “The software factory: a historical interpretation”, IEEE Software Magazine, 1989 March, 23-30.
36 R.W.Bemer, “Software systems customized by computer”,
Proc. IFIP Congress 1965, Vol. II, 356, 1965 May 24-29
37 R.W.Bemer, “Economics of programming production”, in
Economics of Automatic Data Processing, A.B.Frielink, Ed.,
North Holland Publ. Co., Amsterdam, 1965, 155-166
39 R.W.Bemer, “Aspects Economiques de la Production de Software”, in
Mecanographie et Informatique, 1966 May
50 R.W.Bemer, “The economics of program production”,
Proc. IFIP Congress 68, Booklet I, 13-14
51 R.W.Bemer, “Machine-controlled production environment”,
Report NATO Conf, on Stwe. Engg., Garmisch, 94-95, 1968 Oct 7-11
52 R.W.Bemer, “Checklist for planning software system production”,
Report NATO Conf. on Stwe. Engg., Garmisch, 165-180, 1968 Oct 7-11
M.D. McIlroy?, “Mass produced software components”,
Report NATO Conf. on Stwe. Engg., Garmisch, 138-152, 1968 Oct 7-11
57 R.W.Bemer, “Manageable software engineering”, in
Software Engineering 1, Proc. COINS III, Academic Press,
New York, London, 1970, 121-138
63 R.W.Bemer, “Manageable software engineering”, in
State of the Art Report 1, The Fourth Generation,
InfoTech? Intl. Ltd., Maidenhead, Berks., England, 445-465, 1971 Jun
66R.W.Bemer, “A software engineer's workshop: tools and techniques", in
State of the Art Report 11, Software Engineering,
InfoTech? Intl. Ltd., Maidenhead, Berks., England, 273-286, 1972
83 R.W.Bemer, “Toward the complete software factory”,
Proc. Honeywell Software Productivity Symp., 651-658, 1977 Apr 26-28