The basic principles of modern manufacturing have been around since the turn of the century. Assembly lines, mass production, and interchangeable parts made it possible to produce large numbers of products in a short time, and new manufacturing methodologies like quality engineering, six sigma manufacturing have made high levels of quality possible. This section will explore modern manufacturing methodologies, point out what an embedded systems engineer should know, and what parts of these methodologies can be applied to other areas of embedded systems engineering. An embedded needs to understand the basics of manufacturing because manufacturing is an important part of life cycle cost analysis. Also, its possible that some manufacturing techniques can be applied to other areas of embedded systems development. Quality techniques have become quite prominent in many ultradependable or safety critical systems. Software engineers are also exploring new software development methods that rely on some manufacturing principles. The Cleanroom techniques is one of these methods. It has proven quite effective in some cases, but it is still quite difficult to generalize to all types of software projects.
Henry Ford started a revolution by showing that complex machines like the automobile could be produced quickly and cheaply in a proper factory. He saw that an automobile made from standard, interchangeable parts could be replicated using a single construction method, and dividing this construction method into manageable sections allowed the creation of an assembly line to produce previously unheard of numbers of cars. This mass production of machines would allow Ford to out produce his competitors while keeping the machines cheap enough for his workers to buy. Thus began the era of the consumer machine; technology and complex devices became accessible to the masses through rapid advances in manufacturing techniques.
There are three main reasons for embedded systems engineers to study manufacturing. First, manufacturing's core principles are simple but powerful, and an embedded systems engineer should be aware of them. Those principles are the assembly line, mass production, and interchangeable parts; they are the foundation of modern manufacturing. Total Quality Management, automation, and design to manufacture have appeared during the latter half of the twentieth century. Second, understanding how manufacturing affects the cost of a product is a key element of total cost analysis and life cycle planning. Finally, the fundamental ideas behind modern manufacturing may be applicable in other areas of embedded systems design. Certainly the principles behind Total Quality Management have a place in organizations that produce high quality systems, and interchangeable parts and the assembly line may have some application to software development.
The traditional way to make a complex machine was to build each one from scratch. Each machine was a work of art created by a skilled artisan [maxton95]. During the Civil War, American engineers began to build complicated devices out of interchangeable parts. This took the artistic style out of construction, but it improved the manufacturability of the devices. Machines could be built the same way each time from a standard supply of parts. The standard construction method lead to the creation of mass production for complicated machines.
Mass Production had existed in the textile industry before Henry Ford began producing model T's in 1913. He combined interchangeable parts and a standard assembly procedure to make an assembly line. Since each car was assembled the same way, each worker only had to understand one very small part of the whole procedure This highly distributed labor was cheap and easily replaceable. Ford had other innovations. Before his factory, cars were built much like houses. The frame was set down and all of the parts were brought over to it for attachment. Ford decided to take the frame and move it to the parts. As it moved, the laborers would attach their part to the frame. In 1914 Ford built more cars then all of his competitors combined.
Mass production has proliferated in our society. From Toshibatm to Taco Belltm, everything we consume comes off an assembly line. Clearly the basic principles behind mass production and assembly lines are applicable to many areas of technology. Some attempts are even being made to apply these methods to software development. If software could be manufactured as easily as a walkman is manufactured, many bugs and headaches could be eliminated from software development.
Since its invention, the digital computer has had a growing role in the design and manufacturing of complex machines [dorf94]. Robots have found a steady home on assembly lines, CAD software is used for drafting and design, and now there is interest in complete integration. Traditionally, the design of a machine progressed from design, to drafting, to a prototype, and finally to the setup of an assembly line for product construction. If these three areas could be integrated, the development cycle would me made much more efficient.
Computer aided drafting has obvious advantages: designs can be can be accessed and modified quickly, information is easier to share, and the computer can perform some analysis on the draft. Rule based CAD tools can help designers by providing an environment that gives immediate feedback. The same type of tools have made it possible to deal with the complexity of million transistor designs on integrated circuits. Design to manufacture advocates want to combine the CAD and drafting tools with the automated assembly lines. This would allow the designer to turn their designs directly into real products, saving a great deal of time and money. Modifications also would be much easier to make, and the potential for human mistakes would be reduced.
Unfortunately, removing humans from the latter phases of the design cycle produces some problems. First, some design decisions are best left to humans. Second, while computers usually make fewer mistakes than humans, software bugs will still exists and finding them hidden in a massive design to manufacture system will be quite difficult.
Businesses know that giving customers what they want helps them sell more products. Customers want quality, quality without an exorbitant price tag. Quality can be a high level of reliability, a desired functionality, or a constraint like low gas mileage. Its now a major motivating factor for high priced consumer industries like microchip companies, consumer electronics and household appliances. Its the biggest driving force in the automotive industry. Companies that achieve a high level of quality in their products and adapt to the customers needs will carry a great deal of weight in their industries.
The Japanese pushed around the American car makers in the late 70's and 80's because they were able to give the customers what they wanted, cheap cars that used little gas. [maxton95_2] They have been able to keep up with changing consumer demands, and forced American and European car makers to adopt their strategies. Quality is an artifact of good management. The Japanese proved this by opening car manufacturing plants in the United States, using American workers, and maintaining the same level of quality the had in Japan. [maxton95_3]
Achieving high quality in a product line requires a great deal of management control and complete cooperation from everyone in the company. From janitors to system architects to managers, everyone must have a common goal. This is why its so difficult to implement. Everything people working on the product do must be monitored so their process can be checked and improved if needed. High quality requires listening to the voice of the customer and assuring that the products do what the customer wants. Statistical quality control is used to monitor the product for quality defects. An acceptable value range is set for a product characteristic. If that characteristic is out of the allowable value range, then the product is rejected. Once a product is rejected the defect is tracked down and the process that caused the defect is improved. Since its possible to miss or find false defects, statistical analysis is used to determine the chance of either error occurring. The sampling rate can be adjusted to improve the error rate.
Any embedded systems organization can use quality techniques. Since testing cannot add quality to a product and complex programs cannot be proven correct, sometimes the best way to insure safety and reliability is to use a quality engineering techniques. This requires using a high quality design process and updating it as errors appear. Tracking down the source of defects found with statistical quality control is also important. Quality engineering is an effective technique for building complex systems.
Computer chip makers earn their money by selling chips, so any cost effective method that increases the yield will be a win. Chips with defects from the manufacturing process cannot be sold but still cost money to make. So the defect rate directly affects profits. The six sigma quality standard was created to help chip makers lower chip defect rates. [Fieler91]
Complexity abounds in microchip manufacturing, giving many opportunities for variation. It has been estimated that the mean value of a product attribute-- an attribute being something like desired input voltage-- may vary by 1.5 sigma. A sigma is one standard deviation from the mean. Six sigma quality means that a product was designed to withstand variations of six sigma from the mean of a design characteristic. The six sigma accounts for the 1.5 sigma variation in means, and gives a defect rate of 3.4 parts per million versus 6210 parts per million using a traditional process.
Six sigma quality can only be achieved with the cooperation of the design and manufacturing team. The design team can increase the tolerance of the product to variations, and the manufacturing team will reduce the amount of variation. Six sigma quality is very similar to total quality management; every level of the organization must buy into it. The first step in a six sigma program is to look at the production process. Everyone in the process is both a producer and consumer. Each person should look at the consumers of their product and try and figure out exactly what they need and what must be done to give them a high quality product. The second step is to clearly define the process used by an employee to make their product. Once the process is defined it needs to be refined to make it efficient and mistake resistant. As product development continues a persons process should be refined as problems arise. Statistical quality control is used to monitor the product and check for defects. The defects are traced back to their point of origin, and the process that causes them is fixed.
The six sigma method has been very effective at improving the quality of IC chips. By quantifying the development process, and using statistical quality control to check for defects, a great improvement in quality can be achieved. These methods may also be applicable to software development processes.
Estimating the manufacturing cost of a product can be quite difficult, but it may be worth doing a manufacturability review to check a chip board design, or larger piece of equipment, for ease of manufacturing and cost. Doing a review can potentially save money and improve a board's reliability. [web_1]
A Manufacturability review examines several features of a board. First, a spacing check is done to to check feature separation. Pad less, plated through holes in the circuit board should be at least 10 mils away from outer layer circuits and 12 mils away from inner layer circuits. This will reduce the chance of a misdrilled hole affecting any of the board wiring or devices. Second, a z-axis check looks for clearance and hole diameter problems.
Since cost is such an important part of any embedded system design, it may be worth while to have someone do a Manufacturability review of the product, but it may all depend on how many of the units are going to be made. If only 10 units need to be manufactured, there may be no savings in improving the manufacturing process. If 100,000 units will be made, then manufacturing costs will be a large percentage of of the overall system cost. Balancing all of these factors can lead to substantial cost savings.
Reducing the number of operations in an assembly procedure will reduce the cost of manufacturing the product. Part count is important, but it can be a deceiving number. Each part needs at least three movements to install it in a product: grasp, move, and insert. Grasp is picking the part up from a bin of some kind. Move is the movement of the part over to the product, and insert is actually installing the part in the product. There may be more movements depending on how difficult a part is to manipulate, and possibly even more movements not associated with any particular part. [dorf94_2, redford94]
Reducing movement saves cost by reducing the time needed to assemble the product and the complexity of the machinery, and fewer failures will occur along the assembly line. The part count is an important factor, but if it is possible, the movements required to assemble a product should be the most important issue.
A software factory provides a unified environment for handling the software life cycle. Most of the large electronics firms in Japan use them. A strong emphasis is placed on doing things efficiently, and reusing components. Here are some of the main principles:
The results reported by the Japanese have been impressive.
The software factory produces good productivity numbers and a low error rate, however some of the methods used may not translate well into other problem domains. Each software factory is tied to one of the large Japanese electronic firms, so it is tailor made for that corporation. The unified environment is nice, but it probably relies on seeing the same types of problems over and over again. This problem also affects code re-use, a major factor in the productivity of software factories.
The software factory seems to be most productive when it is used on a specialized set of problems, however, some of its ideas can be applied to general software development. Quality assurance is an idea that has taken off for software and hardware. Cleanroom software development separates design from test in a manner similar to the software factory, so that idea seems to have a good deal of merit.
Cleanroom software engineering can be seen as an adaptation of Six sigma quality manufacturing. Quality cannot be tested into a system; cleanroom relies on a high quality design process to prevent mistakes from being entered into a system in the first place. It uses statistical quality control at the user level and incremental updates to assure that each new piece is valid and workable. There is also a separation between the design phase and the testing phase of all software projects. NASA, IBM, and Ellemtel have all used the cleanroom method to achieve high levels of product quality and developer productivity. [mills87, Deck97, Deck97_2, Cobb90, Hausler94]
Project Size in KLOC | Error Rate in Errors/KLOC | Productivity | |
NASA Satellite Control | 150 | 3.2 | 69% higher than normal |
Ericsson OS32 | 350 | 50% improvement | 70% for design productivty |
Flight Control | 33 | 2.5 | Finished ahead of schedule |
Cleanroom software has gotten good results in all of the projects I've found. Its been around since the early 1980's and has been refined as more and more people use it. I believe that it can be a very effective way to achieve quality in a complex software system. Cleanroom also doesn't appear to be strictly tied to formal methods, which will undoubtedly help it spread to more development teams. Its main draw back is that it works best when it has been customized for a group's needs; this usually requires a well trained consultant.
Cleanroom is an evolutionary step. A combination of the statistical quality control methods used in hardware (six sigma) backed by some of the formalisms of software design. It may end up being an important software development method, but it is not a panacea. It appears to be an effective tool for process improvement, and it has worked amazingly well when used correctly.
Manufacturing and quality affect any topic concerned with
system life cycle issues. Manufacturing is an important part of a systems
life cycle and the cost of a system. Quality also has links to many other
topics. Any time there is a need to make a good product, say in software
safety, ultra-dependability, or reliability, quality becomes an issue.
This happens a great deal with software systems, because software engineering
is so concerned with processes. Since there isn't any mathematical proof
that verifies a system's quality or reliability, the process used to create the
system is the only thing that can be checked.
The first thing to take away from this paper is that manufacturing costs should be considered during the design phase of the project. Although consideration must be given to the number of copies of the product that must be manufactured.
The more interesting issue is if some of the fundamental methods behind manufacturing can be applied to other areas of embedded systems. Certainly quality and total quality management have found a place in embedded system development. Without an empirical way to certify that a system will be reliable or safe, most validation techniques look at the process. The more difficult question pertains to using mass production or interchangeable parts to make software.
The software factory attempts to make creating software as simple as
manufacturing televisions.
It seems to work well for a very specific problem domain, but it may be
difficult to generalize the method. Essentially, each organization would
have to set up their own unified development environment. It may be a lot
of extra overhead without significant gain. Some of the aspects of the
method are nice, however, giving developers a unified environment is a good
idea. Also the separation of design and test has show to be effective in
the cleanroom method, and having quality teams check the state of the product
is an idea worth considering
Cleanroom may be the more promising development process. It is similar to the software factory but has proven to be more flexible. This is why I think it has a good chance of succeeding. Different development groups have been able to tailor cleanroom to give themselves very high production with a low error rate. Its main problem right now is the need for an experienced person to taylor cleanroom for each unique project that uses it. I do think that the amount of tailoring needed for cleanroom is less then would be needed for a software factory, and that when more groups begin to us it the tailoring will become easier.
Consider the partial separation of development and test, and the use of code
review, when doing a software project. It has worked well in the hardware
industry, and several development processes that use it have produced
remarkable results.
[maxton95] Maxton, Graeme P., Driving Over a Cliff? Business Lessons from the World's Car Industry, p.68 - 72, (c) 1995, Addison-Wesley Publishers Ltd.
[maxton95_2] Maxton, Graeme P., Driving Over a Cliff? Business Lessons from the World's Car Industry, p.83 - 88, (c) 1995, Addison-Wesley Publishers Ltd.
[maxton95_3] Maxton, Graeme P., Driving Over a Cliff? Business Lessons from the World's Car Industry, p.94 - 96, (c) 1995, Addison-Wesley Publishers Ltd.
A book on some of the business aspects of the automotive industry. I'm using it for its passage on the history of automobile manufacturing techniques.
[dorf94] Dorf, Richard C., Kusiak, Andrew, Handbook of Design Manufacturing and Automation, p. 123 - p. 137 (c) 1994 JOHN WILEY & SONS INC.
[dorf94_2] Dorf, Richard C., Kusiak, Andrew, Handbook of Design Manufacturing and Automation, p. 619 - p. 648 (c) 1994 JOHN WILEY & SONS INC.
This is a reference that covers how computers are affecting the manufacturing industry. It discusses CAD (computer aided design) and CAM (computer aided manufacturing) techniques.
[Fieler91] Fieler, Paul E.,, Loverro, Nick, Jr., "Defects Tail Off with Six-Sigma Manufacturing", IEEE Circuits & Devices Magazine, Vol. 7, no. 5, p. 18-20, 48
A brief overview of six sigma manufacturing. It give the mathematical definition of what it means and outlines some of the quality techniques used to achieve it. A more detailed reference should be sought if you want to begin a true six sigma manufacturing program.
[redford94] Redford, Alan, Chal, Jan, Design For Assembly, p. (c) 1994 McGraw-Hill International
A reference that covers a variety of design for assembly techniques. Mostly it is concerned with manufacturing and machining mechanical devices and building assembly lines, but it does have some applicability to embedded systems.
[matsumoto89] Matsumoto, Yoshihiro, Ohno, Yutaka, Japanese Perspectives in Software Engineering, p. 303 - p. 320 (c) 1989 Addison-Wesley Publishing Company
An overview of Japanese software engineering techniques. I have referenced the chapter that coves the software factory. It is a little lacking in hard details, but it gives a decent overview of the method.
[Cobb90] Cobb, R.H., and H.D. Mills, "Engineering software under Statistical Quality Control," IEEE Software, November, 1990, pp. 44-53
A detailed description of how to apply statistical quality control to software. This is one of the most important aspects of the Cleanroom method.
[Deck97] Deck, M.D., "Cleanroom Software Engineering Myths and Realities," Quality Week 1997, San Francisco, CA, May, 1997
A paper from a Cleanroom consultant that describes his experience with it over the last 15 years. It has some interesting points about what parts of the methodology are useful and what parts are ineffective.
[Deck97_2] Deck, M.D, and J. A. Whittaker, "Lessons Learned from Fifteen Years of Cleanroom Testing," Software Testing, Analysis, and Review (STAR) '97, San Jose, CA, May 5-9, 1997
A look at Cleanroom software engineering test strategies.
[Deck94] Deck, M.D., "Cleanroom Software Engineering: Quality
Improvement and Cost Reduction," Proc. Pacific Northwest Software Quality
Conference, October, 1994, pp. 243-258.
[mills87] H.D. Mills, M. Dyer, and R.C. Linger, "Cleanroom Software Engineering," IEEE Software, Sept. 1987, pp. 19-24.
The original reference for the clean room method by its creators. It is important to read, but remember that some parts of the method are more effective then others.
[Hausler94] Hausler, P.A., R.C. Linger, and C.J. Trammell, "Adopting a Cleanroom software engineering approach," IBM Systems Journal, VOL 33, No. 1, 1994, pp. 89-109
One of the IBM papers about how an organization can incorporate the cleanroom method. It discusses how much of the method to use depending on a design groups experience with it.
[web_1] http://www.automata.com/automata_new/services/expl2.htm
A web reference about designing for assembly with circuit boards.
http://www2.ford.com/display.asp?story=355 In 1914 Ford produced 308,162 cars, which was more than all 299 other auto manufacturers combined.
Here is a web page with some general references