Mulailah

Tanpa permulaan, anda tidak akan sampai ke mana-mana.

Semangat

Semangat yang kuat mampu mengatasi apapun cobaan yang datang.

Konsisten

Lumbung emas dalam diri kamu adalah pikiran kamu. Kamu dapat menggalinya sedalam-dalamnya dan sepuas-puas yang kamu inginkan.

Pantang Menyerah

Gagal selepas usaha adalah hikmah, anda akan mendapat sesuatu yang lebih besar daripada apa yang anda sangkakan.

Be The One

Be the one is better than be the best.

Saturday, March 10, 2012

Should Software Engineers Worry About Hardware?

Some students of computer and information sciences look at computer hardware the same way many drivers look at their cars: the use of a car doesn't require the knowledge of how to build one.

Knowing how to design and build a computer may not be vital to the computer professional, but it goes a long way toward improving their skills, i.e., making them better drivers. For anyone going into a career involving computer programming, computer system design, or the installation and maintenance of computer systems, the principles of computer organization provide tools to create better designs. These include:
System design tools – The same design theories used at the lowest level of system design are also applied at higher levels. For example, the same methods a circuit board designer uses to create the interface between a processor and its memory chips are used to design the addressing scheme of an IP network.
Software design tools – The same procedures used to optimize digital circuits can be used for the logic portions of software. Complex blocks of if-statements, for example, can be simplified or made to run faster using these tools.
Improved troubleshooting skills – A clear understanding of the inner workings of a computer gives the technician servicing it the tools to isolate a problem quicker and with greater accuracy.
Interconnectivity – Hardware is needed to connect the real world to a computer's inputs and outputs. Writing software to control a system such as an automotive air bag could produce catastrophic results without a clear understanding of the architecture and hardware of a microprocessor.
Marketability – Embedded system design puts microprocessors into task-specific applications such as manufacturing, communications, and automotive control. As processors become cheaper and more powerful, the same tools used for desktop software design are being applied to embedded system design.

This means that the softwareengineer with experience in hardware  design has a significant advantage over hardware engineers in this market.

If that doesn't convince you, take a look at what Shigeki Ishizuka, the head of Sony's digital camera division, says about understanding hardware. "When you control parts design, you can integrate the whole package much more elegantly." In other words, today's business environment of low cost and rapid market response, success may depend on how well you control the hardware of your system.

Think of the myriad of systems around you such as your car, cell phone, and PlayStation® that rely on a programmer's understanding of hardware. A computer mouse, for example, sends digital information into the computer's mouse port. In order for the software to respond properly to the movement or button presses of the mouse, the software designer must be able to interpret the digital signal.

On a much greater scale, consider a construction company with projects scattered across a large region that wants to monitor its equipment from a central location such as its corporate offices. A system such as this could be used for inventory control allowing a remote user to locate each piece of equipment from their Internet enabled desktop computer. E-mail alerts could be sent predicting possible failures when conditions such as overheating or excessive vibration are detected. The system could deliver e-mails or messages to pagers in cases of theft or notify maintenance that periodic service is needed. Here again, the link between software and hardware is critical.

An embedded processor inside the equipment communicates with sensors that monitor conditions such as temperature, vibration, or oil pressure. The processor is capable of transmitting this information to the remote user via a cellular link either when prompted or as an emergency notification. In addition, the processor may be capable of using GPS to determine its geographic location. If the equipment is moved outside of a specified range, a message can be sent indicating a possible theft.
The design of a system such as this raises many questions including:
• What physical values do the digital values that are read from the sensors represent in the real world?
• How can useful information be pulled from the data stream being received by the processors?
• How should the data be formatted for optimal storage, searching, and retrieval?
• Is it possible that using a slower data rate might actually mean shorter connect times over expensive cellular links?
Figure 1-1 Sample Digital System

Computer organization theories answer these and many other questions.

this article from Computer Organization and Design Fundamentals by David Tarnoff