Thursday, March 03, 2005

Software Code is Design

http://www.developerdotstar.com/mag/articles/reeves_design.html

Came accross this interesting article which says that "programming is not about building software, but about designing software". The author compares the software development process with a manufacturing process saying that the programmers are not the manufacture workers. That work is done by the compilers and linkers, and we rightly call it a "build" in a typical software development. The build in a software project, unlike a manufacturing process is pretty inexpensive. Most of the software project is "Design", and the ultimate design is the software code that we write. Testing as well as debugging is a part of design.

The idea is pretty controversial, but I tend to agree with him. What we typically call a "Design" in a software development process always seemed to me unsatisfying, incomplete, and the continuous pester of so called good software engineers to freeze it before coding, very unrealistic. The Software engineering Gurus seem to take pride in making the "Coding" the most unimportant and short part of the whole project.

I guess many have now realized that it is inconvenient and inefficient to make a design independent of a pogramming language. Languages like C++, Java etc support this trend. And, probably that is why we see the software development process moving from waterfall to spiral etc all evidences of slowaly making coding a part of design.

23 comments:

Anonymous said...

At the end of the article, he writes "C++ is a step in the right direction, but
still more advances are needed."

He is so right. Java, Python etc have gone ahead in somewhat right directions.

A bit unrelated but still:
I just started learning LISP a couple of weeks back and used it to solve a probl
em. Only later did I realize how naturally I had used functions like "mapcar".
"mapcar" takes a function as an argument and applies it to all the elements of a
list. There's something similar in C++ using STL containers; but the point is h
ow many C++ novices use it in their second program? (Things like "mapcar" appear
in the initial 1/6th of the LISP book which I am reading.)

Anonymous said...

we think and build in terms of levels of abstraction. we can then focus on the level of abstraction we are working with and disregard the rest for the time being. try writing or thinking an operating system all at once. try writing a program in assembly. we use the language syntax, compiler, linker, assembler. then again the linker/loader, the OS process loader and the hardware abstractions.

design is about dividing ur problem into the right levels of abstractions. ur method of choice of design process would depend on the level of success u can generate with it. I have seen both upfron design and iterative development at close quarters and neither guarantees success.

Though I have not attempted counting it but the number of ways a computer program can deviate is faily large. Design is also about managing this at the right level of granularity.

I guess the original author is trying to impress that all the trade-offs made in code can best be illustrated their. The analogy with assembly line manufacturing is flawed because of the aforementioned counting problem.

Software will probably be engineered when we can tackle the problem of the number of ways software can fail. or maybe something else for if i knew i would have solved it :)

the prisoner said...

I understand why some progammers resist the notion of "Software Design" and go right for the jugular by coding. But this does not often create feasible solutions that demonstrate all of the advantages of good object-orientated systems (maintainability, scalability,ease-of-use, etc.).

Design is not only important, but essential before the coding. That a design does not take in a specific programming language is immaterial. What if the language or specific technology becomes infeasible as the software project progresses? What recourse does a software engineer have, but to redesign, because their original design assumed a language that was not used.

Technically, there are three main project designs:

1) Conceptual
2) Logical
3) Physical

All but the last assume no target language, so that a project can continue even when technologies or languages change.

Unknown said...

I don't think the point here is "should you jump the design phase?". Ofcourse not! Rather the point is: "Is there a design in the code also?" What I understood from the article is - the author is trying to emphasise the importance of design in code. That the coding in software is not equivalent to the mnufacturing phase in say a mechanical industry. Coding also involves design. The code speaks the ultimate complete design.

Anonymous said...

Hi there Shweta Agrawal. I am looking for recent information on educational software and found your site. It makes an interesting read. I see that I found it when looking for educational software related information and I'm glad I stopped by and had a read - thanks for taking the time to put the info together - great post = have a nice day.

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...

Hello Shweta Agrawal. I was looking for some information on dvd software and came across your site. Not really what I was after but I found it very interesting. I was looking for dvd software related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hello Shweta Agrawal. I was looking for some information on software development tool and came across your site. Not really what I was after but I found it very interesting. I was looking for software development tool related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hi Shweta Agrawal. I've been looking for computer software information and came across your site. I was really after computer software related info but I came across your site and found it a good posting even though Software Code is Design was'nt exactly what I was after. Thanks for the read

Anonymous said...

Hello Shweta Agrawal. I was looking for some information on buy and download software and came across your site. Not really what I was after but I found it very interesting. I was looking for buy and download software related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hello Shweta Agrawal. I was looking for some information on ecommerce software and came across your site. Not really what I was after but I found it very interesting. I was looking for ecommerce software related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hi Shweta Agrawal. I've been looking for dvd software information and came across your site. I was really after dvd software related info but I came across your site and found it a good posting even though Software Code is Design was'nt exactly what I was after. Thanks for the read

Anonymous said...

Hi Shweta Agrawal. I was looking for some info on spy software and came across your site. Although Software Code is Design was not what I was after exactly, it certainly got my interest. I see now that I found your page when I was looking for spy software related information. Even though it was not a perfect match I'm glad I stopped by. Good post - have a good day.

Anonymous said...

Hi there Shweta Agrawal. I am looking for recent information on computer software and found your site. It makes an interesting read. I see that I found it when looking for computer software related information and I'm glad I stopped by and had a read - thanks for taking the time to put the info together - great post = have a nice day.

Anonymous said...

Hello Shweta Agrawal. I was looking for some information on software and came across your site. Not really what I was after but I found it very interesting. I was looking for software related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hi Shweta Agrawal. I was looking for some info on software development and came across your site. Although Software Code is Design was not what I was after exactly, it certainly got my interest. I see now that I found your page when I was looking for software development related information. Even though it was not a perfect match I'm glad I stopped by. Good post - have a good day.

Anonymous said...

Hi Shweta Agrawal. I've been looking for downloadable software information and came across your site. I was really after downloadable software related info but I came across your site and found it a good posting even though Software Code is Design was'nt exactly what I was after. Thanks for the read

Anonymous said...

Good Day Shweta Agrawal.I am searching for information on when I came across your site. Although Software Code is Design was'nt exactly what I was looking for it got my attention and made an interesting read. I was really after information relating to . However I'm glad I stopped by - thanks for the read.

Anonymous said...

Hello Shweta Agrawal. I was looking for some information on fax software and came across your site. Not really what I was after but I found it very interesting. I was looking for fax software related information. Glad I found your site even though it was not exactly what I was after. Keep up the good posting - thanks

Anonymous said...

Hi Shweta Agrawal. I've been looking for small business software information and came across your site. I was really after small business software related info but I came across your site and found it a good posting even though Software Code is Design was'nt exactly what I was after. Thanks for the read

Anonymous said...

Good Day Shweta Agrawal.I am searching for information on free software downloads when I came across your site. Although Software Code is Design was'nt exactly what I was looking for it got my attention and made an interesting read. I was really after information relating to free software downloads. However I'm glad I stopped by - thanks for the read.

Anonymous said...

Hi Shweta Agrawal. I was looking for some info on discount software and came across your site. Although Software Code is Design was not what I was after exactly, it certainly got my interest. I see now that I found your page when I was looking for discount software related information. Even though it was not a perfect match I'm glad I stopped by. Good post - have a good day.

Anonymous said...

Hi there Shweta Agrawal. I am looking for recent information on software and found your site. It makes an interesting read. I see that I found it when looking for software related information and I'm glad I stopped by and had a read - thanks for taking the time to put the info together - great post = have a nice day.