Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I got a bunch of questions to answer to prepare for an exam and this one I'm actually not sure what's the clear difference :

"Explain the difference between designing software and designing physical products"

I have an opinion on this, but the more I think about it the more it feels like there's no real difference except that the tools and formula's used when making physical items has been established hundreds of years ago and the heuristics/models have been in place since forever.

I also thought that, once you design a spoon and make it, it doesn't evolve with time, it fulfills it's requirements and that's that, while for software new requirements come in all the time so you have to consider certain quality attributes in that regard.

This is from my software architecture class if you guys need a context.

What are the differences between software design and physical design, and am I off the mark with my answer?

share|improve this question
    
Nontechnical people think designing software is easy. –  Dan Pichelman Jun 9 '13 at 21:34
    
After you build a program, its executable doesn't evolve too. If you want to compare evolution of a program with something, consider that next year manufacturer will produce cheaper spoons, or stronger, or nicer. –  maxim1000 Jun 10 '13 at 4:34
    
Here are 3 essays from J. Reeeves about your topic, I guess they will be helpful: developerdotstar.com/mag/articles/reeves_design_main.html –  Doc Brown Jun 10 '13 at 7:23
    
I feel the design process could, or at least should, be very similar so I could have a hard time explaining the differences. –  Rob Jun 10 '13 at 11:18
add comment

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

2 Answers

up vote 7 down vote accepted

No real difference? The differences are enormous.

The main aspect is that software has essentially no manufacturing costs to it. The marginal cost of software production is quite nearly nothing, with virtually all the cost going to by design work.

When designing physical process, a lot of your design constraints are dominated by difficulties in actually producing your design. The process of taking a design and planning out how to actually manufacture it is an engineering discipline all by itself, and the costs of manufacturing can often exceed design costs. And because physical devices have to exist in the real world, and be constructed out of real materials, differences in design can result in greatly increased manufactured costs. If you can design your part to be made from stamped sheet metal instead of requiring a machinist to mill it, you can slice the cost per part from several dollars to a few cents.

When you are making copies of software, it is trivial to make copies. You want to fill your hard drive with several billion copies of some software? No problem, and each one will be a perfect copy. But you want to make a billion copies of a physical good? That isn't so easy, even if you have the material laying around. Every single one of those produced parts is going to be slightly different.

In the realm of physical products, there are no exact dimensions, everything has tolerances, everything has elements of variability that must be accounted for. If you are making a software product, you can test your software, and then you can copy it as many times as you want. When we make physical products, we not only have to test some design-representative parts to verify our design, but we have to test each and every single device that rolls off the factory floor.

When you buy a car, something like 1/4 of the cost of the car is represented by the cost to actually produce the raw materials of the car, and the rest is the cost of producing the tooling. If an automobile maker could remove a single screw from an engine design, they would save enough in manufacturing costs that they could pay two engineers for an entire year just to do that.

A cheap injection mold for plastic parts can cost $50,000. Imagine how much different software development would be if it cost $50 grand every time you hit F5 in your IDE to try and run your software.

Read more in From Craft to Science

share|improve this answer
    
I'd agree - the differences are vast. You could probably fill an exam with the answer to this one. –  Robbie Dee Jun 10 '13 at 10:05
1  
You are comparing this to manufacturing while he is talking about the design process. I don't see how it answers anything. –  Rob Jun 10 '13 at 11:15
1  
@Rob: because when designing software, essentially no thought is required for manufacturing constraints. In physical goods, figuring out how to make the copies is as much work as it is to design the part in the first place. –  whatsisname Jun 10 '13 at 15:39
    
@whatsisname I'm not sure I can agree about how software doesn't require the need to care about distributing copies. I get your point, but with software we have to consider the platform/embedded possibilities and the technologies that will be used. This could impact in the near future a possible port if the design is done with poor layering and strong ties to the underlying filesystem etc. Thanks for the answer though, it has given me an insight on some things I should consider if I get this question during my examination. –  Pat Jun 10 '13 at 20:20
add comment

I often use that distinction between software and physical things when describing why building software is difficult.

Users just think it's this woolly thing inside the computer, you can't touch "it", they don't understand why it breaks etc.

Salesmen think they can just promise the world to a client and you the developer(s) will be be able to throw it together without too much thought (or too much change to the timescale!)

So I'd say a major difference is the people involved. In software it can be very difficult to tie people down to agreeing a specification, or simply not deviating from that specification over time.

Ideally, their would be not much difference between the two, but because your software just lives behind the monitor, they don't realise how big a change something is if you were having to, for example, saw the legs off a table to replace with new awesome legs 2.0

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.