Engineering and fabrication

What are the components of complex computer system?

The vendor delivered product which has only executable code and very small user's manual. No source code, no programming documentation. He reciewed over 2 mln dollars for that. The contract did not list what components he should deliver. Can it be safly assumed that any complex system have to have all the components. Are there any industry standarts?

Public Comments

  1. Well. Your question is not really complete. Was it HARDWARE that was delivered such as a mainframe, or switch, or router? or was it SOFTWARE, code written to do something specific on a computer, something written to work on a PC, or a mainframe, or a Microsoft network server, or netware server, etc. etc.

    I am going to assume, it was only software, and was written to run in Windows on a network of some type, as this is the most common situation.

    I have over 30 years of experience as a Network engineer. I have been a programmer / developer, hardware engineer, service technician, network administrator, project manager, designer, etc. etc.

    The Short answer is hiring developers to come up with something is a ripoff, designed to make them money and you end up with a low quality product. They are not obligated to give you anything unless you specify it in the contract, including ownership of the code which means they are free to sell it to others. You are much better off hiring a single individual programmer to develop it and specify your ownership to all aspect of it including source code and documentation which is clear enough that any person could learn the full functionality of the final product.

    Here are the details.

    Twenty years ago, programming typically meant someone would sit down and write a program from start to end product. If they were good programmers they would write it in 'C', if they are expert programmers, they would write it in 'Assembly language'. Steve Gibson from grc.com writes all his own code and in assembly language, as a result it is very small code, very fast, and very reliable.

    Today, developers typically use a '4GL' which is a 4th Generation Language. It's all menu driven libraries of code. Something like, if you wanted to write a book, you simply cut pages of text from a bunch of other books and put them together, and called it your own. The only difference is that it's legal in this case because the developers have purchased the rights to these libraries of code. But it has problems. Some of those pages might have spelling errors, or ioncorrect information, and the code developers rely on, may have bugs in them.

    It is modularized so that over 100 people can work on the same project at the same time. Each person has a different task to perform. One will work on the security, one will work on the menus, one will work on the graphics, one will work on the help files, etc. etc. The problem with this type of coding is it's very large, very sloppy, not real functional and prone to have whatever bugs existed in the original library files.

    Now, with the technical details out of the way, lets talk about business practice. If the contract with them does not specify you will own all the code, and documentation, then the developer is free to sell the same thing to others as well, all at YOUR expense of paying for the time to develop it. That unfortunately is your responsibility to make sure the contract indicates that. If you try to negotiate AFTER the contract was accepted, that you want the source code and all rights, they are going to multiply their price some 4 to 5 times, as that is the normal difference because it means they cannot sell it to others and so they will want more money to compensate for that. However, if you specify that up front in the contract, you will end up paying the original lower price you paid, AND would retain all rights to it. It's kind of hard to understand why unless you have been in the business of programming for a long time, but it is true. Always Always specify in the contract that you retain ownership and get all the source code and sufficient documentation.

    What you end up with. I have not seen it, but I can guess it is some code that runs in a browser such as Internet Explorer, and you have to have a specific version of browser for it to work right. If you upgrade too far it stops working. Am I right?

    Most developer code is written this way. When you want to upgrade the browser, you have to pay them to update the code, unless you specified in the contract that it must be functional with normal browser updates for at least 5 years, then they will code it to work, instead of to break.

    You can buy lots of products off the shelf that will work with just about any web browser and almost any version of browser, so why do developers require specific versions? They design it to break so you have to hire them back to do updates.

    Odds are you could have hired me as an individual programmer, I would have charged you a flat fee of 2 Million dollars, I could have taken as long as I wanted to finish it with the stipulation that I don't get paid until it is complete, and you would have gotten much tighter code. It would have been a lot of money for me, and saved you a lot of money. Win / Win situation for both of us.

    NEVER hire a programmer to do work for you paind by the hour. They could drag their feet and you would never know it, or you might think they are, and be wrong. It makes a stressful business relationship. ALWAYS specify a amount for end product. Maybe pay the programmer some money up front for their own cost of living expenses, and pay the balance once they have completed the product and tell them they can take as long as they like but do not get paid until it is complete. This takes any stress out of it, and the programmer is highly motivated to complete it.

    I'm sure it's not the answer you wanted but I hope this answered your question.




Powered by Yahoo! Answers