Software Development


Good software engineering is good system engineering.  The same divide and conquer strategy used to design and develop complicated hardware systems applies to complicated software systems.  The modern software concepts of “information hiding” and “separation of interface and implementation” are exactly the same concepts long used in hardware development programs to deal with system complexity.  Use of modern object-oriented languages facilitates developing software in the same manner as one develops hardware.


Software development is not my primary interest, but to the extent it enables me to do something I want to do, I am very interested.  I find myself more and more engaged with software as time goes on.  The primary uses for deliverable software that I have developed or been involved with developing are analysis and modeling, data acquisition, and hardware control.  I have also worked on software as stand alone product where the product has high level of engineering content.


My first experience with software involved punched cards, FORTRAN, and card decks submitted to high priests running a mainframe computer.  Many things have changed in the meantime, including the attitude that one must take when developing software.  Today, the most important things about software are correctness, maintainability, ease of extension, and ease of testing.  Software must be written with change in mind.  Cleverness, code size, and operating speed are almost never even close to being as important as the issues just discussed.


Today, my preferred languages are MATLAB, for relatively simple code to be run by only a few people,  and C++, for larger systems and/or for code to be run by many people.  I also use C and BASIC when required.



HOME

SERVICES

EXPERTISE



Copyright © 2002, David F. Schaack.  All Rights Reserved.