Wednesday, February 29, 2012

How is software actually designed and built?

I am curious as to how software is actually designed and built in the real world, as in the domain of software engineering. I can understand the programming languages themselves, it just seems that I cannot understand how they can be made into a software system for use in an embedded device or on a PC. Is there any automation to the software design process? What tools are actually used to develop software?



I've also heard that code for a lot of different tasks is placed in libraries, and this code can be referenced when the code you are coding is being built and incorporated in the final product. How do you find which libraries and code that you need?



I also wanted to ask if the graphical user interface code is kept separate from the actual program code, and the GUI is an "interface" to the program. Can GUI libraries be used?How is software actually designed and built?
carefully



there are lots of programs that can be used see:

http://en.wikipedia.org/wiki/Programing

for a full list



http://en.wikipedia.org/wiki/Procedural_鈥?/a>

might be a good look at as well



oh and take a course in comupter programing to learn moreHow is software actually designed and built?
That's a lot of questions :-)



When a group of people develop software together, they use a Version Control system, like CVS, Subversion, etc. This allows people to make changes and have the version control software merge the changes together.



Then, they write a script to take the latest code out of the Version Control system and compile it all. This is called "the build". It builds a copy of the program that you can send to testers.



Testers usually use testing software that will run "test cases". A test case runs your program, send input and makes sure the output is what you expected. Testers also make new test cases: they enter the input to send and the results they expect from your program. There are also testing programs that can use a GUI : they tell the OS to act as if a button was clicked, or as if text were typed, etc.



When the program has been tested and you want to sell it to customers (because we all like making money), you can make an installer for it. Software from companies like InstallShield is popular for doing this. The installer contains a copy of your program, and knows how to copy all of the files onto the computer. You can burn the installer onto a CD and send it to people. Or put it in a ZIP file and put it on your web site for download.



Code in any language can be made into a library, where you provide documentation on the functions that can be called (or the objects that can be used) in the library. To learn about using libraries, just find some for the language you like best and try them out. If you like Python, try downloading some new module from someone and follow their documentation's steps for installing and using it.



Programmers usually have a long list of things to do. Items on the list come from 3 places:

1) Customers request a new feature.

2) Customers report a bug.

3) New stuff you think of that would be cool to add.

You normally go through a process of thinking about what changes you'd make (if you write it down, it is called a "design"). Then you make the changes in the code and try them out. If you've tested them, you might then ask other programmers to look at your changes ("code review"). Then you would put the changes into the Version Control system so that everyone (including testers) get those changes.



*whew*



If you want more info than that, feel free to email me...



For now, look into version control software (I recommend Subversion). You can use it by yourself. Because it allows you to go back to old versions of your own files, it sometimes saves me when I make a mistake.



Also, learn about how to get more libraries for your favorite programming language and use them. You could grab a library for graphics, or making music, or whatever. If you have some program you've written, think about how you might pull some of the files of source code out and make them into a library.



Look in the archives of "Joel on Software" too:

http://joelonsoftware.com/

No comments:

Post a Comment